diff --git a/battle/core.asm b/battle/core.asm index 98e703472..2477f3f9f 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -3579,7 +3579,7 @@ Function3d6ca: ; 3d6ca ld [CurPartySpecies], a call LoadEnemyMon ld a, [CurPartySpecies] - cp $c9 + cp UNOWN jr nz, .asm_3d708 ld a, [$def4] and a @@ -7168,17 +7168,17 @@ Function3eda6: ; 3eda6 Function3edad: ; 3edad - ld de, $4ac0 + ld de, GFX_f8ac0 ld hl, $96c0 - ld bc, $3e04 + lb bc, BANK(GFX_f8ac0), 4 call Get1bpp - ld de, $4ae0 + ld de, GFX_f8ae0 ld hl, $9730 - ld bc, $3e06 + lb bc, BANK(GFX_f8ae0), 6 call Get1bpp - ld de, $4b10 + ld de, GFX_f8b10 ld hl, $9550 - ld bc, $3e08 + lb bc, BANK(GFX_f8b10), 8 jp Get2bpp ; 3edd1 @@ -7827,7 +7827,7 @@ Function3f136: ; 3f136 .asm_3f1b7 ld a, e - cp $64 + cp MAX_LEVEL jr nc, .asm_3f1ff cp d jr z, .asm_3f1ff diff --git a/main.asm b/main.asm index b2cefe7c4..c9f6224ce 100644 --- a/main.asm +++ b/main.asm @@ -56049,7 +56049,7 @@ Function4dd72: ; 4dd72 (13:5d72) callba Function10402d call Function4ddf2 ld a, [CurPartySpecies] ; $d108 - cp $fd + cp EGG jr z, .asm_4dd9b call Function4deea ld hl, $cf64 @@ -56819,8 +56819,8 @@ Function4e307: ; 4e307 (13:6307) push af ld a, $1 ld [rVBK], a ; $ff00+$4f - ld de, $5204 - ld bc, $3e01 + ld de, GFX_f9204 + lb bc, BANK(GFX_f9204), 1 ld hl, $97f0 call Get2bpp pop af @@ -56832,7 +56832,10 @@ Function4e307: ; 4e307 (13:6307) ret ; 4e32a (13:632a) -INCBIN "baserom.gbc",$4e32a,$4e33a - $4e32a +Unknown_4e32a: ; 4e32a +; A blank tile? + ds 16 +; 4e33a EggStatsScreen: ; 4e33a xor a @@ -59866,38 +59869,44 @@ Function50e1b: ; 50e1b Function50e47: ; 50e47 + ld a, [BaseGrowthRate] add a add a ld c, a - ld b, $0 - ld hl, $4efa + ld b, 0 + ld hl, GrowthRates add hl, bc call Function50eed ld a, d ld [hMultiplier], a call Multiply + ld a, [hl] and $f0 swap a ld [hMultiplier], a call Multiply + ld a, [hli] and $f ld [hMultiplier], a ld b, $4 call Divide + ld a, [hMultiplicand] push af ld a, [$ffb5] push af ld a, [$ffb6] push af + call Function50eed ld a, [hl] and $7f ld [hMultiplier], a call Multiply + ld a, [hMultiplicand] push af ld a, [$ffb5] @@ -59906,6 +59915,7 @@ Function50e47: ; 50e47 push af ld a, [hli] push af + xor a ld [hMultiplicand], a ld [$ffb5], a @@ -59914,6 +59924,7 @@ Function50e47: ; 50e47 ld a, [hli] ld [hMultiplier], a call Multiply + ld b, [hl] ld a, [$ffb6] sub b @@ -59925,9 +59936,11 @@ Function50e47: ; 50e47 ld a, [hMultiplicand] sbc b ld [hMultiplicand], a + pop af and $80 jr nz, .asm_50ec8 + pop bc ld a, [$ffb6] add b @@ -59982,7 +59995,26 @@ Function50eed: ; 50eed jp Multiply ; 50efa -INCBIN "baserom.gbc",$50efa,$50f12 - $50efa +GrowthRates: ; 50efa + +growth_rate: MACRO +; [1]/[2]*n^3 + [3]*n^2 + [4]*n - [5] + dn \1, \2 + IF \3 & $80 ; signed + db ((\3 ^ $ff) + 1) | $80 + ELSE + db \3 + ENDC + db \4, \5 +ENDM + + growth_rate 1, 1, 0, 0, 0 ; Medium Fast + growth_rate 3, 4, 10, 0, 30 + growth_rate 3, 4, 20, 0, 70 + growth_rate 6, 5, -15, 100, 140 ; Medium Slow + growth_rate 4, 5, 0, 0, 0 ; Fast + growth_rate 5, 4, 0, 0, 0 ; Slow +; 50f12 Function50f12: ld a, [$d0e3] @@ -60022,7 +60054,7 @@ Function50f34: ; 50f34 (14:4f34) add hl, de dec c jr nz, .asm_50f55 - ld de, $20 + ld de, SFX_SWITCH_POKEMON call WaitPlaySFX ret @@ -74186,11 +74218,27 @@ Function9020d: ; 9020d (24:420d) ret ; 90233 (24:4233) -INCBIN "baserom.gbc",$90233,$9026f - $90233 +INCBIN "baserom.gbc",$90233,$90241 - $90233 + +UnknownScript_0x90241: ; 0x90241 + refreshscreen $0 + 3callasm Function9026f + 2ptcall $d048 + closetext + 3callasm Function902eb + loadmovesprites + 3callasm Function113e5 + end +; 0x90255 + +INCBIN "baserom.gbc",$90255,$9026f - $90255 + +Function9026f: ; 9026f call Function9027c call Function9027c callba Function1060d3 ret +; 9027c ; known jump sources: 9026f (24:426f), 90272 (24:4272) Function9027c: ; 9027c (24:427c) @@ -79130,9 +79178,9 @@ Functionb8098:: ; b8098 (2e:4098) Functionb80c6: ; b80c6 - ld de, $5344 + ld de, GFX_f9344 ld hl, $9600 - ld bc, $3e0e + lb bc, BANK(GFX_f9344), $e call Get2bpp ret ; b80d3 @@ -87820,18 +87868,60 @@ INCBIN "gfx/frames/9.1bpp" ; TODO: Various misc graphics here. +GFX_f89b0: ; f89b0 INCBIN "baserom.gbc", $f89b0, $f8a90 - $f89b0 +; f8a90 ShinyIcon: ; f8a90 INCBIN "gfx/stats/shiny.2bpp" -INCBIN "baserom.gbc", $f8aa0, $f8ba0 - $f8aa0 +GFX_f8aa0: ; f8aa0 +INCBIN "baserom.gbc", $f8aa0, $f8ac0 - $f8aa0 +; f8ac0 + +GFX_f8ac0: ; f8ac0 +INCBIN "baserom.gbc", $f8ac0, $f8ae0 - $f8ac0 +; f8ae0 + +GFX_f8ae0: ; f8ae0 +INCBIN "baserom.gbc", $f8ae0, $f8b10 - $f8ae0 +; f8b10 + +GFX_f8b10: ; f8b10 +INCBIN "baserom.gbc", $f8b10, $f8ba0 - $f8b10 +; f8ba0 TownMapGFX: ; f8ba0 INCBIN "gfx/misc/town_map.lz" ; f8ea4 -INCBIN "baserom.gbc", $f8ea4, $f9434 - $f8ea4 +GFX_f8ea4: ; f8ea4 +INCBIN "baserom.gbc", $f8ea4, $f8f24 - $f8ea4 +; f8f24 + +GFX_f8f24: ; f8f24 +INCBIN "baserom.gbc", $f8f24, $f8f34 - $f8f24 +; f8f34 + +GFX_f8f34: ; f8f34 +INCBIN "baserom.gbc", $f8f34, $f9204 - $f8f34 +; f9204 + +GFX_f9204: ; f9204 +INCBIN "baserom.gbc", $f9204, $f9214 - $f9204 +; f9214 + +GFX_f9214: ; f9214 +INCBIN "baserom.gbc", $f9214, $f9344 - $f9214 +; f9344 + +GFX_f9344: ; f9344 +INCBIN "baserom.gbc", $f9344, $f9424 - $f9344 +; f9424 + +GFX_f9424: ; f9424 +INCBIN "baserom.gbc", $f9424, $f9434 - $f9424 +; f9434 Footprints: ; f9434 INCBIN "gfx/misc/footprints.1bpp" @@ -87868,34 +87958,34 @@ Functionfb449:: ; fb449 Functionfb48a:: ; fb48a - ld de, $5214 + ld de, GFX_f9214 ld hl, $9600 - ld bc, $3e01 + lb bc, BANK(GFX_f9214), 1 call Functionddc - ld de, $4f24 + ld de, GFX_f8f24 ld hl, $9620 - ld bc, $3e01 + lb bc, BANK(GFX_f8f24), 1 call Functiondc9 - ld de, $4030 + ld de, FontExtra + $30 ld hl, $9630 - ld bc, $3e16 + lb bc, BANK(FontExtra), $16 call Functiondc9 jr Functionfb4cc ; fb4b0 Functionfb4b0:: ; fb4b0 - ld de, $5424 + ld de, GFX_f9424 ld hl, $9610 - ld b, $3e - ld c, $1 + ld b, BANK(GFX_f9424) + ld c, 1 call Functiondc9 ret ; fb4be Functionfb4be:: ; fb4be - ld de, $4600 + ld de, FontBattleExtra ld hl, $9600 - ld bc, $3e19 + lb bc, BANK(FontBattleExtra), $19 call Functiondc9 jr Functionfb4cc ; fb4cc @@ -87909,69 +87999,69 @@ Functionfb4cc: ; fb4cc ld d, h ld e, l ld hl, $9790 - ld bc, $3e06 + lb bc, BANK(Frames), 6 call Functionddc ld hl, $97f0 - ld de, $5204 - ld bc, $3e01 + ld de, GFX_f9204 + lb bc, BANK(GFX_f9204), 1 call Functionddc ret ; fb4f2 Functionfb4f2: ; fb4f2 - ld de, $4600 + ld de, FontBattleExtra ld hl, $9600 - ld bc, $3e0c + lb bc, BANK(FontBattleExtra), $c call Functiondc9 ld hl, $9700 - ld de, $4700 - ld bc, $3e03 + ld de, FontBattleExtra + $100 + lb bc, BANK(FontBattleExtra), 3 call Functiondc9 call Functionfb4cc Functionfb50d: ; fb50d - ld de, $4ac0 + ld de, GFX_f8ac0 ld hl, $96c0 - ld bc, $3e04 + lb bc, BANK(GFX_f8ac0), 4 call Functionddc - ld de, $4ae0 + ld de, GFX_f8ae0 ld hl, $9730 - ld bc, $3e06 + lb bc, BANK(GFX_f8ae0), 6 call Functionddc - ld de, $4b10 + ld de, GFX_f8b10 ld hl, $9550 - ld bc, $3e09 + lb bc, BANK(GFX_f8b10), 9 call Functiondc9 - ld de, $52a4 + ld de, GFX_f9214 + $90 ld hl, $95e0 - ld bc, $3e02 + lb bc, BANK(GFX_f9214), 2 call Functiondc9 ret ; fb53e Functionfb53e: ; fb53e call Functionfb4be - ld de, $4ac0 + ld de, GFX_f8ac0 ld hl, $96c0 - ld bc, $3e04 + lb bc, BANK(GFX_f8ac0), 4 call Functionddc - ld de, $4ae0 + ld de, GFX_f8ae0 ld hl, $9780 - ld bc, $3e01 + lb bc, BANK(GFX_f8ae0), 1 call Functionddc - ld de, $4af8 + ld de, GFX_f8ae0 + $18 ld hl, $9760 - ld bc, $3e02 + lb bc, BANK(GFX_f8ae0), 2 call Functionddc - ld de, $4b10 + ld de, GFX_f8b10 ld hl, $9550 - ld bc, $3e08 + lb bc, BANK(GFX_f8b10), 8 call Functiondc9 Functionfb571: ; fb571 - ld de, $49b0 + ld de, GFX_f89b0 ld hl, $9310 - ld bc, $3e11 + lb bc, BANK(GFX_f89b0), $11 call Functiondc9 ret ; fb57e @@ -87984,12 +88074,12 @@ Functionfb57e: ; fb57e ld a, [$d003] inc a ld c, a - ld b, $0 + ld b, 0 ld hl, OTPartyCount add hl, bc ld a, [hl] pop hl - cp $fd + cp EGG jr z, .asm_fb59c cp [hl] jr nz, .asm_fb5db @@ -87997,10 +88087,10 @@ Functionfb57e: ; fb57e .asm_fb59c ld b, h ld c, l - ld hl, $001f + ld hl, OTPartyMon1Level - OTPartyMon1 add hl, bc ld a, [hl] - cp $65 + cp 101 jr nc, .asm_fb5db ld a, [InLinkBattle] cp $1 @@ -88008,13 +88098,17 @@ Functionfb57e: ; fb57e ld hl, OTPartySpecies ld a, [$d003] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] - cp $51 + + ; Magnemite and Magneton's types changed + ; from Electric to Electric/Steel. + cp MAGNEMITE jr z, .asm_fb5d9 - cp $52 + cp MAGNETON jr z, .asm_fb5d9 + ld [CurSpecies], a call GetBaseData ld hl, $cbea @@ -88213,8 +88307,8 @@ Functionfb8f1: ; fb8f1 push hl ld a, [$d265] ld b, a - ld c, $0 - ld hl, $791c + ld c, 0 + ld hl, Unknown_fb91c .asm_fb8fc inc c ld a, [hli] @@ -88233,7 +88327,7 @@ Functionfb908: ; fb908 ld a, [$d265] dec a ld hl, Unknown_fb91c - ld b, $0 + ld b, 0 ld c, a add hl, bc ld a, [hl] @@ -88737,19 +88831,19 @@ Functionfbd54: ; fbd54 call Functionfbd9d .asm_fbd64 call ClearBox - jr asm_fbd91 + jr Functionfbd91 ; no known jump sources Functionfbd69: ; fbd69 (3e:7d69) callba BattleCommanda6 - jr asm_fbd77 + jr Functionfbd77 ; no known jump sources Functionfbd71: ; fbd71 (3e:7d71) callba BattleCommanda7 ; known jump sources: fbd6f (3e:7d6f) -asm_fbd77: ; fbd77 (3e:7d77) +Functionfbd77: ; fbd77 (3e:7d77) xor a ld [hBGMapMode], a ; $ff00+$d4 ld a, [hBattleTurn] ; $ff00+$e4 @@ -88765,7 +88859,7 @@ asm_fbd77: ; fbd77 (3e:7d77) ld [$FF00+$ad], a ld a, $13 call Predef -asm_fbd91: ; fbd91 (3e:7d91) +Functionfbd91: ; fbd91 (3e:7d91) ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 ret @@ -89630,14 +89724,19 @@ Functionfcfec:: ; fcfec ret nc call Functionfd0c3 ret nc - ld b, $3f - ld de, $500f + ld b, BANK(UnknownScript_0xfd00f) + ld de, UnknownScript_0xfd00f callba Function97c4f scf ret ; fd00f -INCBIN "baserom.gbc",$fd00f,$fd017 - $fd00f +UnknownScript_0xfd00f: ; 0xfd00f + 3callasm Functionfd017 + 3jump UnknownScript_0x90241 +; 0xfd017 + +Functionfd017: ; fd017 call Functionfd0a6 call Functionfd0eb ld a, [$dc18] @@ -89648,7 +89747,7 @@ INCBIN "baserom.gbc",$fd00f,$fd017 - $fd00f .asm_fd027 ld a, $1 ld [$dbf9], a - ld bc, CurFruit ; $d03f + ld bc, $d03f ld hl, $0 add hl, bc ld [hl], $0 @@ -89663,7 +89762,7 @@ INCBIN "baserom.gbc",$fd00f,$fd017 - $fd00f ld a, d ld [hl], a ret - +; fd044 Functionfd044: ; fd044 ld a, [$dc17] @@ -89774,14 +89873,28 @@ Functionfd0eb: ; fd0eb (3f:50eb) ld de, $6 add hl, de ld a, [hli] - ld de, $50fd + ld de, UnknownScript_0xfd0fd cp $1 ret z - ld de, $510a + ld de, UnknownScript_0xfd10a ret ; fd0fd (3f:50fd) -INCBIN "baserom.gbc",$fd0fd,$fd117 - $fd0fd +UnknownScript_0xfd0fd: ; 0xfd0fd + 2writetext UnknownText_0xfd1b1 + 2writetext UnknownText_0xfd1b6 + 2writetext UnknownText_0xfd1bb + 2writetext UnknownText_0xfd1c0 + end +; 0xfd10a + +UnknownScript_0xfd10a: ; 0xfd10a + 2writetext UnknownText_0xfd1b1 + 2writetext UnknownText_0xfd1c5 + 2writetext UnknownText_0xfd1bb + 2writetext UnknownText_0xfd1ca + end +; 0xfd117 Functionfd117: ; fd117 @@ -89789,7 +89902,7 @@ Functionfd117: ; fd117 and a jr z, .asm_fd123 dec a - ld de, $5136 + ld de, Unknown_fd136 jr .asm_fd12e .asm_fd123 @@ -89799,11 +89912,11 @@ Functionfd117: ; fd117 xor a .asm_fd12b - ld de, $515e + ld de, Unknown_fd15e .asm_fd12e ld l, a - ld h, $0 + ld h, 0 add hl, hl add hl, hl add hl, hl @@ -89811,13 +89924,72 @@ Functionfd117: ; fd117 ret ; fd136 -INCBIN "baserom.gbc",$fd136,$fd1d0 - $fd136 +Unknown_fd136: ; fd136 + db $00, $00, $00, $00, $02, $58, $01, SUPER_POTION + db $00, $00, $00, $00, $00, $5a, $01, ANTIDOTE + db $00, $00, $00, $00, $00, $b4, $01, POKE_BALL + db $00, $00, $00, $00, $01, $c2, $01, ESCAPE_ROPE + db $00, $00, $00, $00, $01, $f4, $01, GREAT_BALL +; fd15e + +Unknown_fd15e: ; fd15e + db $00, $03, $84, $00, $02, $58, $01, SUPER_POTION + db $00, $0f, $a0, $00, $01, $0e, $01, REPEL + db $00, $1b, $58, $00, $02, $58, $01, SUPER_POTION + db $00, $27, $10, $00, $07, $08, $02, $23 ; CHARMANDER_DOLL + db $00, $3a, $98, $00, $0b, $b8, $01, MOON_STONE + db $00, $4a, $38, $00, $02, $58, $01, SUPER_POTION + db $00, $75, $30, $00, $12, $c0, $02, $20 ; CLEFAIRY_DOLL + db $00, $9c, $40, $00, $03, $84, $01, HYPER_POTION + db $00, $c3, $50, $00, $1f, $40, $02, $1e ; PIKACHU_DOLL + db $01, $86, $a0, $00, $59, $10, $02, $1a ; SNORLAX_DOLL +; fd1ae + +INCBIN "baserom.gbc", $fd1ae, $fd1b1 - $fd1ae + +UnknownText_0xfd1b1: ; 0xfd1b1 + ; Hi, ! How are you? + text_jump UnknownText_0x1bc615 + db "@" +; 0xfd1b6 + +UnknownText_0xfd1b6: ; 0xfd1b6 + ; I found a useful item shopping, so + text_jump UnknownText_0x1bc62a + db "@" +; 0xfd1bb + +UnknownText_0xfd1bb: ; 0xfd1bb + ; I bought it with your money. Sorry! + text_jump UnknownText_0x1bc64e + db "@" +; 0xfd1c0 + +UnknownText_0xfd1c0: ; 0xfd1c0 + ; It's in your PC. You'll like it! + text_jump UnknownText_0x1bc673 + db "@" +; 0xfd1c5 + +UnknownText_0xfd1c5: ; 0xfd1c5 + ; While shopping today, I saw this adorable doll, so + text_jump UnknownText_0x1bc693 + db "@" +; 0xfd1ca + +UnknownText_0xfd1ca: ; 0xfd1ca + ; It's in your room. You'll love it! + text_jump UnknownText_0x1bc6c7 + db "@" +; 0xfd1cf + +INCBIN "baserom.gbc", $fd1cf, $fd1d0 - $fd1cf Functionfd1d0: ; fd1d0 ret ; fd1d1 -INCBIN "baserom.gbc",$fd1d1,$fd1d2 - $fd1d1 +INCBIN "baserom.gbc", $fd1d1, $fd1d2 - $fd1d1 SECTION "bank40", ROMX, BANK[$40] diff --git a/wram.asm b/wram.asm index 11de66b9b..6cea69f6d 100644 --- a/wram.asm +++ b/wram.asm @@ -57,6 +57,168 @@ party_struct: MACRO ENDM +channel_struct: MACRO +; Addresses are Channel1 ($c101). + +\1MusicID:: ; c101 + ds 2 +\1MusicBank:: ; c103 + ds 1 +\1Flags:: ; c104 +; 0: on/off +; 1: subroutine +; 2: +; 3: +; 4: noise sampling on/off +; 5: +; 6: +; 7: + ds 1 +\1Flags2:: ; c105 +; 0: vibrato on/off +; 1: +; 2: duty cycle on/off +; 3: +; 4: +; 5: +; 6: +; 7: + ds 1 +\1Flags3:: ; c106 +; 0: vibrato up/down +; 1: +; 2: +; 3: +; 4: +; 5: +; 6: +; 7: + ds 1 +\1MusicAddress:: ; c107 + ds 2 +\1LastMusicAddress:: ; c109 + ds 2 +; could have been meant as a third-level address + ds 2 +\1NoteFlags:: ; c10d +; 0: +; 1: +; 2: +; 3: +; 4: +; 5: rest +; 6: +; 7: + ds 1 +\1Condition:: ; c10e +; used for conditional jumps + ds 1 +\1DutyCycle:: ; c10f +; uses top 2 bits only +; 0: 12.5% +; 1: 25% +; 2: 50% +; 3: 75% + ds 1 +\1Intensity:: ; c110 +; hi: pressure +; lo: velocity + ds 1 +\1Frequency:: +; 11 bits +\1FrequencyLo:: ; c111 + ds 1 +\1FrequencyHi:: ; c112 + ds 1 +\1Pitch:: ; c113 +; 0: rest +; 1: C +; 2: C# +; 3: D +; 4: D# +; 5: E +; 6: F +; 7: F# +; 8: G +; 9: G# +; a: A +; b: A# +; c: B + ds 1 +\1Octave:: ; c114 +; 0: highest +; 7: lowest + ds 1 +\1StartingOctave:: ; c115 +; raises existing octaves by this value +; used for repeating phrases in a higher octave to save space + ds 1 +\1NoteDuration:: ; c116 +; number of frames remaining in the current note + ds 1 +; c117 + ds 1 +; c118 + ds 1 +\1LoopCount:: ; c119 + ds 1 +\1Tempo:: ; c11a + ds 2 +\1Tracks:: ; c11c +; hi: l +; lo: r + ds 1 +; c11d + ds 1 + +\1VibratoDelayCount:: ; c11e +; initialized at the value in VibratoDelay +; decrements each frame +; at 0, vibrato starts + ds 1 +\1VibratoDelay:: ; c11f +; number of frames a note plays until vibrato starts + ds 1 +\1VibratoExtent:: ; c120 +; difference in + ds 1 +\1VibratoRate:: ; c121 +; counts down from a max of 15 frames +; over which the pitch is alternated +; hi: init frames +; lo: frame count + ds 1 + +; c122 + ds 1 +; c123 + ds 1 +; c124 + ds 1 +; c125 + ds 1 +; c126 + ds 1 +; c127 + ds 1 +\1CryPitch:: ; c128 + ds 1 +\1CryEcho:: ; c129 + ds 1 + ds 4 +\1NoteLength:: ; c12e +; # frames per 16th note + ds 1 +; c12f + ds 1 +; c130 + ds 1 +; c131 + ds 1 +; c132 + ds 1 +ENDM + SECTION "tiles0",VRAM[$8000],BANK[0] VTiles0:: SECTION "tiles1",VRAM[$8800],BANK[0] @@ -83,182 +245,24 @@ MusicPlaying:: ; c100 ds 1 Channels:: -Channel1:: -Channel1MusicID:: ; c101 - ds 2 -Channel1MusicBank:: ; c103 - ds 1 -Channel1Flags:: ; c104 -; 0: on/off -; 1: subroutine -; 2: -; 3: -; 4: noise sampling on/off -; 5: -; 6: -; 7: - ds 1 -Channel1Flags2:: ; c105 -; 0: vibrato on/off -; 1: -; 2: duty cycle on/off -; 3: -; 4: -; 5: -; 6: -; 7: - ds 1 -Channel1Flags3:: ; c106 -; 0: vibrato up/down -; 1: -; 2: -; 3: -; 4: -; 5: -; 6: -; 7: - ds 1 -Channel1MusicAddress:: ; c107 - ds 2 -Channel1LastMusicAddress:: ; c109 - ds 2 -; could have been meant as a third-level address - ds 2 -Channel1NoteFlags:: ; c10d -; 0: -; 1: -; 2: -; 3: -; 4: -; 5: rest -; 6: -; 7: - ds 1 -Channel1Condition:: ; c10e -; used for conditional jumps - ds 1 -Channel1DutyCycle:: ; c10f -; uses top 2 bits only -; 0: 12.5% -; 1: 25% -; 2: 50% -; 3: 75% - ds 1 -Channel1Intensity:: ; c110 -; hi: pressure -; lo: velocity - ds 1 -Channel1Frequency:: -; 11 bits -Channel1FrequencyLo:: ; c111 - ds 1 -Channel1FrequencyHi:: ; c112 - ds 1 -Channel1Pitch:: ; c113 -; 0: rest -; 1: C -; 2: C# -; 3: D -; 4: D# -; 5: E -; 6: F -; 7: F# -; 8: G -; 9: G# -; a: A -; b: A# -; c: B - ds 1 -Channel1Octave:: ; c114 -; 0: highest -; 7: lowest - ds 1 -Channel1StartingOctave:: ; c115 -; raises existing octaves by this value -; used for repeating phrases in a higher octave to save space - ds 1 -Channel1NoteDuration:: ; c116 -; number of frames remaining in the current note - ds 1 -; c117 - ds 1 -; c118 - ds 1 -Channel1LoopCount:: ; c119 - ds 1 -Channel1Tempo:: ; c11a - ds 2 -Channel1Tracks:: ; c11c -; hi: l -; lo: r - ds 1 -; c11d - ds 1 - -Channel1VibratoDelayCount:: ; c11e -; initialized at the value in VibratoDelay -; decrements each frame -; at 0, vibrato starts - ds 1 -Channel1VibratoDelay:: ; c11f -; number of frames a note plays until vibrato starts - ds 1 -Channel1VibratoExtent:: ; c120 -; difference in - ds 1 -Channel1VibratoRate:: ; c121 -; counts down from a max of 15 frames -; over which the pitch is alternated -; hi: init frames -; lo: frame count - ds 1 - -; c122 - ds 1 -; c123 - ds 1 -; c124 - ds 1 -; c125 - ds 1 -; c126 - ds 1 -; c127 - ds 1 -Channel1CryPitch:: ; c128 - ds 1 -Channel1CryEcho:: ; c129 - ds 1 - ds 4 -Channel1NoteLength:: ; c12e -; # frames per 16th note - ds 1 -; c12f - ds 1 -; c130 - ds 1 -; c131 - ds 1 -; c132 - ds 1 -; end - +Channel1:: ; c101 + channel_struct Channel1 Channel2:: ; c133 - ds 50 + channel_struct Channel2 Channel3:: ; c165 - ds 50 + channel_struct Channel3 Channel4:: ; c197 - ds 50 + channel_struct Channel4 SFXChannels:: Channel5:: ; c1c9 - ds 50 + channel_struct Channel5 Channel6:: ; c1fb - ds 50 + channel_struct Channel6 Channel7:: ; c22d - ds 50 + channel_struct Channel7 Channel8:: ; c25f - ds 50 + channel_struct Channel8 ; c291 ds 1