summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rwxr-xr-xmain.asm2578
1 files changed, 2494 insertions, 84 deletions
diff --git a/main.asm b/main.asm
index 87de1c9..0aff488 100755
--- a/main.asm
+++ b/main.asm
@@ -129,7 +129,7 @@ Start: ; 0x150
ld a, $0
ld [$d849], a
ld [$d84a], a
- ld a, $f
+ ld a, Bank(PlaySong_BankF)
call SetSongBank
call Func_23b
ld a, [hGameBoyColorFlag]
@@ -435,7 +435,7 @@ Func_486: ; 0x486
ld l, a
ret
-Func_490: ; 0x490
+PlaySong: ; 0x490
ld a, [hLoadedROMBank]
push af
ld a, [wCurrentSongBank]
@@ -445,7 +445,7 @@ Func_490: ; 0x490
ld [$d7bf], a
ld a, [wCurrentSongBank]
ld [$d7c0], a
- call $4090 ; todo
+ call PlaySong_BankF ; this function is replicated in multiple banks.
pop af
ld [hLoadedROMBank], a
ld [$2000], a
@@ -471,7 +471,7 @@ PlaySoundEffect: ; 0x4af
ld a, [wCurrentSongBank]
ld [hLoadedROMBank], a
ld [$2000], a
- call $40c0 ; todo
+ call PlaySoundEffect_BankF ; this function is replicated in multiple banks
pop af
ld [hLoadedROMBank], a
ld [$2000], a
@@ -493,13 +493,15 @@ Func_4d8: ; 0x4d8
pop bc
ret
-Func_4ef: ; 0x4ef
+PlayCry: ; 0x4ef
+; Plays a Pokemon cry.
+; Input: e = mon id
ld a, [hLoadedROMBank]
push af
ld a, [wCurrentSongBank]
ld [hLoadedROMBank], a
ld [$2000], a
- call $40f0 ; todo
+ call PlayCry_BankF ; this function is replicated in multiple banks
pop af
ld [hLoadedROMBank], a
ld [$2000], a
@@ -4286,8 +4288,8 @@ Func_1ffc: ; 0x1ffc
ld a, $4
ld [$d807], a
ld [$ff8a], a
- ld a, $f ; todo
- ld hl, $4000
+ ld a, Bank(Func_3c000)
+ ld hl, Func_3c000
call BankSwitch
ld a, $1
ld [$d85d], a
@@ -10766,7 +10768,7 @@ Func_8461: ; 0x8461
ld a, [$d7bf]
ld e, a
ld d, $0
- call Func_490
+ call PlaySong
ret
Func_8471: ; 0x8471
@@ -12549,7 +12551,7 @@ FadeInTitlescreen: ; 0xc00e
ld a, $11
call SetSongBank
ld de, $0004
- call Func_490
+ call PlaySong
call Func_588
call Func_bbe ; this does the fading
ld hl, wScreenState
@@ -12598,7 +12600,7 @@ TitlescreenLoop: ; 0xc089
ret
.noPreviouslySavedGame
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld de, $0027
call PlaySoundEffect
@@ -12651,7 +12653,7 @@ Func_c10e: ; 0xc10e
bit 0, a
jr z, .asm_c17c
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld de, $0027
call PlaySoundEffect
@@ -13011,7 +13013,7 @@ Func_c35a: ; 0xc35a
ld a, $12
call SetSongBank
ld de, $0002
- call Func_490
+ call PlaySong
call Func_588
ld a, [wSoundTestCurrentBackgroundMusic]
ld hl, $9967
@@ -13134,7 +13136,7 @@ Func_c447: ; 0xc447
ret
.asm_c477
ld de, $0000
- call Func_490
+ call PlaySong
ld a, $5
ld [wScreenState], a
ret
@@ -13447,14 +13449,14 @@ Func_c691: ; 0xc91
bit BIT_B_BUTTON, a
ret z
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
rst $10
rst $10
ld a, $12
call SetSongBank
ld de, $0002
- call Func_490
+ call PlaySong
ld de, $0001
call PlaySoundEffect
ld a, $1
@@ -13497,7 +13499,7 @@ Func_c6e8: ; 0xc6e8
bit BIT_A_BUTTON, a
jr z, UpdateSoundTestBackgroundMusicSelection
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
rst $10
rst $10
@@ -13512,7 +13514,7 @@ Func_c6e8: ; 0xc6e8
ld d, $0
ld a, [hl]
call SetSongBank
- call Func_490
+ call PlaySong
ret
UpdateSoundTestBackgroundMusicSelection: ; 0xc715
@@ -14210,13 +14212,13 @@ Func_cb14: ; 0xcb14
ld a, $13
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
jr .asm_cba6
.asm_cb9b
ld a, $13
call SetSongBank
ld de, $0002
- call Func_490
+ call PlaySong
.asm_cba6
call Func_588
ld bc, $0009
@@ -14231,7 +14233,7 @@ Func_cb14: ; 0xcb14
ld a, $10
call SetSongBank
ld de, $0004
- call Func_490
+ call PlaySong
call Func_588
ld bc, $0009
call Func_d68a
@@ -14510,12 +14512,12 @@ Func_cd6c: ; 0xcd6c
and a
jr z, .asm_cdbb
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
call Func_cdce
push af
ld de, $0004
- call Func_490
+ call PlaySong
pop af
jr nc, .asm_cdc6
.asm_cdbb
@@ -15915,7 +15917,7 @@ LoadFieldSelectScreen: ; 0xd6dd
ld a, $12
call SetSongBank
ld de, $0003
- call Func_490
+ call PlaySong
call Func_588
call Func_bbe
ld hl, wScreenState
@@ -16295,7 +16297,7 @@ Func_d909: ; 0xd909
SaveGame: ; 0xda05
ld de, $0000
- call Func_490
+ call PlaySong
ld bc, $0004
call Func_93f
call Func_cb5
@@ -16397,7 +16399,7 @@ Func_dab2: ; 0xdab2
ret
.asm_dae6
ld de, $0000
- call Func_490
+ call PlaySong
ld bc, $0004
call Func_93f
call Func_cb5
@@ -16423,7 +16425,7 @@ Func_dab2: ; 0xdab2
ret
.asm_db28
ld de, $0000
- call Func_490
+ call PlaySong
ld bc, $0004
call Func_93f
call Func_cb5
@@ -16447,7 +16449,7 @@ TransitionToHighScoresScreen: ; 0xdb5d
xor a
ld [$d616], a
ld de, $0000
- call Func_490
+ call PlaySong
ld bc, $0004
call Func_93f
call Func_cb5
@@ -16786,7 +16788,7 @@ Func_dd76: ; 0xdd76
ret
.asm_dda3
ld de, $0000
- call Func_490
+ call PlaySong
ld bc, $001e
call Func_93f
ld de, $2524
@@ -16894,7 +16896,7 @@ Func_de4f: ; 0xde4f
ret
.asm_de7c
ld de, $0000
- call Func_490
+ call PlaySong
ld bc, $001e
call Func_93f
ld de, $2524
@@ -19852,7 +19854,7 @@ Func_f5a0: ; 0xf5a0
ld a, $10
call SetSongBank
ld de, $0005
- call Func_490
+ call PlaySong
ld hl, wcBottomMessageText
ld bc, $0040
call Func_f81b
@@ -21367,7 +21369,7 @@ Func_1052d: ; 0x1052d
ret nz
call Func_3475
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld de, $2329
call PlaySoundEffect
@@ -21395,7 +21397,7 @@ Func_1052d: ; 0x1052d
call BankSwitch
call Func_10157
ld de, $0001
- call Func_490
+ call PlaySong
ld hl, $d628
call Func_e4a
jr nc, .asm_105d1
@@ -21573,7 +21575,7 @@ Func_10732: ; 0x10732
inc a
ld e, a
ld d, $0
- call Func_4ef
+ call PlayCry
ret
AddCaughtPokemonToParty: ; 0x1073d
@@ -21784,7 +21786,7 @@ Func_10871: ; 0x10871
ld a, $4
ld [$d7ad], a
ld de, $0002
- call Func_490
+ call PlaySong
ld a, [wCurrentStage]
bit 0, a
jr nz, .asm_108d3
@@ -21905,7 +21907,7 @@ Func_1098c: ; 0x1098c
ld hl, Func_1f2ed
call BankSwitch
ld de, $0002
- call Func_490
+ call PlaySong
ld a, [wCurrentStage]
bit 0, a
ret z
@@ -22638,7 +22640,7 @@ Func_10ebb: ; 0x10ebb
ld a, $2
ld [$d7ad], a
ld de, $0002
- call Func_490
+ call PlaySong
call SetPokemonSeenFlag
ld a, [wCurrentStage]
bit 0, a
@@ -22797,7 +22799,7 @@ Func_11061: ; 0x11061
ld a, $2
ld [$d7ad], a
ld de, $0002
- call Func_490
+ call PlaySong
call SetPokemonSeenFlag
ld a, [wCurrentStage]
bit 0, a
@@ -28012,7 +28014,7 @@ Func_163f2: ; 0x163f2
.asm_1640f
call Func_32aa
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld de, $3c23
call PlaySoundEffect
@@ -29663,7 +29665,7 @@ InitGengarBonusStage: ; 0x18099
ld a, $f
call SetSongBank
ld de, $0005
- call Func_490
+ call PlaySong
ret
Func_18112: ; 0x18112
@@ -30208,7 +30210,7 @@ Func_18562: ; 0x18562
ld [$d662], a
ld [$d66b], a
ld de, $0006
- call Func_490
+ call PlaySong
ret
.asm_185b1
ld c, a
@@ -30410,7 +30412,7 @@ Func_186f7: ; 0x186f7
call Func_18d72
call Func_18d91
ld de, $0000
- call Func_490
+ call PlaySong
ret
.asm_18740
ld c, a
@@ -30448,8 +30450,8 @@ Func_186f7: ; 0x186f7
xor a
ld [$d67e], a
ld [$d687], a
- ld de, $005e
- call Func_4ef
+ ld de, GENGAR
+ call PlayCry
ret
INCBIN "baserom.gbc",$1877d,$187b1 - $1877d
@@ -30513,7 +30515,7 @@ Func_187b1: ; 0x187b1
ld hl, Func_86d2
call BankSwitch
ld de, $0000
- call Func_490
+ call PlaySong
.asm_18826
ld bc, $34ee
ld [$ff8a], a
@@ -30812,7 +30814,7 @@ Func_189af: ; 0x189af
xor a
ld [de], a
ld de, $0007
- call Func_490
+ call PlaySong
ret
INCBIN "baserom.gbc",$18a57,$18d34 - $18a57
@@ -31259,7 +31261,7 @@ InitMewtwoBonusStage: ; 0x1924f
ld a, $12
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
INCBIN "baserom.gbc",$192ab,$192e3 - $192ab
@@ -31604,7 +31606,7 @@ Func_19531: ; 0x19531
ld hl, Func_86d2
call BankSwitch
ld de, $0000
- call Func_490
+ call PlaySong
.asm_195a2
call Func_195ac
ld de, $d6af
@@ -32106,7 +32108,7 @@ InitDiglettBonusStage: ; 0x199f2
ld a, $11
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
StartBallDiglettBonusStage: ; 0x19a38
@@ -32382,7 +32384,7 @@ Func_19c52: ; 0x19c52
ld [wDugrioState], a
call Func_1ac2c
ld de, $0002
- call Func_490
+ call PlaySong
.asm_19cc8
call Func_19cdd
ld a, [$d765]
@@ -32754,7 +32756,7 @@ Func_1ab30: ; 0x1ab30
cp $1
jr nz, .asm_1abf2
ld de, $0000
- call Func_490
+ call PlaySong
ret
.asm_1abf2
cp $2
@@ -32904,7 +32906,7 @@ InitBlueField: ; 0x1c000
ld a, $10
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
StartBallBlueField: ; 0x1c08d
@@ -32970,7 +32972,7 @@ StartBallBlueField: ; 0x1c08d
ld a, $10
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
StartBallAfterBonusStageBlueField: ; 0x1c129
@@ -32995,7 +32997,7 @@ StartBallAfterBonusStageBlueField: ; 0x1c129
ld a, $10
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
Func_1c165: ; 0x1c165
@@ -36354,7 +36356,7 @@ Func_1e8c3: ; 0x1e8c3
.asm_1e8e0
call Func_32aa
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld de, $3c23
call PlaySoundEffect
@@ -37825,7 +37827,7 @@ Func_201ce: ; 0x201ce
ld hl, Func_10157
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -38198,7 +38200,7 @@ Func_2048f: ; 0x2048f
ld hl, Func_10157
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -38512,7 +38514,7 @@ Func_2070b: ; 0x2070b
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
ld hl, $d629
call Func_e4a
ld [$ff8a], a
@@ -38547,7 +38549,7 @@ Func_20757: ; 0x20757
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -39082,7 +39084,7 @@ Func_20b02: ; 0x20b02
call BankSwitch
call Func_3475
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld de, $2d26
call PlaySoundEffect
@@ -39296,7 +39298,7 @@ Func_20d30: ; 0x20d30
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
ld hl, $d629
call Func_e4a
ld [$ff8a], a
@@ -39331,7 +39333,7 @@ Func_20d7c: ; 0x20d7c
ld hl, Func_10ac8
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -39866,7 +39868,7 @@ Func_2112a: ; 0x2112a
call BankSwitch
call Func_3475
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld de, $2d26
call PlaySoundEffect
@@ -39920,7 +39922,7 @@ InitMeowthBonusStage: ; 0x24000
ld a, $12
call SetSongBank
ld de, $0004
- call Func_490
+ call PlaySong
ret
StartBallMeowthBonusStage: ; 0x24059
@@ -40487,7 +40489,7 @@ Func_2442a: ; 0x2442a
ld a, $96
ld [$d739], a
ld de, $0000
- call Func_490
+ call PlaySong
ld a, $1
ld [$d49a], a
call Func_30e8
@@ -40505,7 +40507,7 @@ Func_2442a: ; 0x2442a
and a
jr nz, .asm_244b0
ld de, $0004
- call Func_490
+ call PlaySong
ld a, $5
ld [$d712], a
.asm_244b0
@@ -42207,7 +42209,7 @@ InitSeelBonusStage: ; 0x25a7c
ld a, $11
call SetSongBank
ld de, $0003
- call Func_490
+ call PlaySong
ret
Func_25ad8: ; 0x25ad8
@@ -42412,7 +42414,7 @@ Func_25c5a: ; 0x25c5a
ld a, $1
ld [$d498], a
ld de, $0000
- call Func_490
+ call PlaySong
ld a, $1
ld [$d49a], a
call Func_30e8
@@ -42432,7 +42434,7 @@ Func_25c5a: ; 0x25c5a
and a
jr nz, .asm_25cb0
ld de, $0003
- call Func_490
+ call PlaySong
ld a, $5
ld [$d794], a
.asm_25cb0
@@ -43426,7 +43428,7 @@ LoadPokedexScreen: ; 0x2800e
ld a, $f
call SetSongBank
ld de, $0004
- call Func_490
+ call PlaySong
call Func_588
call Func_bbe
ld hl, wScreenState
@@ -43524,7 +43526,7 @@ MainPokedexScreen: ; 0x280fe
inc a
ld e, a
ld d, $0
- call Func_4ef
+ call PlayCry
pop hl
bit 1, [hl]
jp z, .asm_28174
@@ -47419,7 +47421,7 @@ InitRedField: ; 0x30000
ld a, $f
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
StartBallRedField: ; 0x3007d
@@ -47493,7 +47495,7 @@ StartBallRedField: ; 0x3007d
ld a, $f
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
StartBallAfterBonusStageRedField: ; 0x30128
@@ -47518,7 +47520,7 @@ StartBallAfterBonusStageRedField: ; 0x30128
ld a, $f
call SetSongBank
ld de, $0001
- call Func_490
+ call PlaySong
ret
Func_30164: ; 0x30164
@@ -47938,7 +47940,7 @@ Func_311b4: ; 0x311b4
ld a, $4
ld [$d7ad], a
ld de, $0003
- call Func_490
+ call PlaySong
ld a, [wCurrentStage]
bit 0, a
ret z
@@ -48138,7 +48140,7 @@ Func_31326: ; 0x31326
ld hl, Func_1f2ed
call BankSwitch
ld de, $0003
- call Func_490
+ call PlaySong
ld a, [wCurrentStage]
bit 0, a
ret z
@@ -48319,7 +48321,7 @@ Func_314f3: ; 0x314f3
ld hl, Func_3022b
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -48333,7 +48335,7 @@ Func_31505: ; 0x31505
ld hl, Func_3022b
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -48426,7 +48428,7 @@ Func_315b3: ; 0x315b3
Func_315d5: ; 0x315d5
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld [$ff8a], a
ld a, Bank(Func_31281)
@@ -48508,7 +48510,7 @@ Func_31660: ; 0x31660
ld hl, Func_3022b
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -48522,7 +48524,7 @@ Func_31672: ; 0x31672
ld hl, Func_3022b
call BankSwitch
ld de, $0001
- call Func_490
+ call PlaySong
scf
ret
@@ -48619,7 +48621,7 @@ Func_3172a: ; 0x3172a
Func_3174c: ; 0x3174c
ld de, $0000
- call Func_490
+ call PlaySong
rst $10
ld [$ff8a], a
ld a, Bank(Func_3140b)
@@ -48673,7 +48675,1834 @@ INCBIN "baserom.gbc",$38000,$3c000 - $38000 ; 0x38000
SECTION "bankf", ROMX, BANK[$f]
-INCBIN "baserom.gbc",$3c000,$3cca2 - $3c000
+Func_3c000: ; 0x3c000
+ push hl
+ push de
+ push bc
+ push af
+ call Func_3cb1b
+ ld hl, $dd01
+ ld de, $01af
+.clearLoop
+ xor a
+ ld [hli], a
+ dec de
+ ld a, e
+ or d
+ jr nz, .clearLoop
+ ld hl, $ff24
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld a, $80
+ ld [hli], a
+ ld hl, $ff10
+ ld e, $4
+.asm_3c022
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld a, $8
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld a, $80
+ ld [hli], a
+ dec e
+ jr nz, .asm_3c022
+ ld a, $8
+ ld [$de9a], a
+ ld a, $77
+ ld [$de98], a
+ call Func_3cb15
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+
+Func_3c042: ; 0x3c042
+ ld a, [de]
+ inc de
+ and $7
+ ld [$deae], a
+ ld c, a
+ ld b, $0
+ ld hl, WRAMPointerTable_3cc92
+ add hl, bc
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld hl, $0002
+ add hl, bc
+ res 0, [hl]
+ push de
+ xor a
+ ld hl, $0000
+ add hl, bc
+ ld e, $32
+.loop
+ ld [hli], a
+ dec e
+ jr nz, .loop
+ ld hl, $0017
+ add hl, bc
+ xor a
+ ld [hli], a
+ inc a
+ ld [hl], a
+ ld hl, $0028
+ add hl, bc
+ ld [hl], a
+ pop de
+ ld hl, $0005
+ add hl, bc
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hl], a
+ inc de
+ ld hl, $0000
+ add hl, bc
+ ld a, [$de9b]
+ ld [hli], a
+ ld a, [$de9c]
+ ld [hl], a
+ ret
+
+INCBIN "baserom.gbc",$3c08b,$3c090 - $3c08b
+
+PlaySong_BankF: ; 0x3c090
+ push de
+ call Func_3c000
+ pop de
+ call Func_3cb1b
+ ld hl, $de9b
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, SongHeaderPointers0F
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ rlca
+ rlca
+ and $3
+ inc a
+.asm_3c0ac
+ push af
+ call Func_3c042
+ call Func_3cadf
+ pop af
+ dec a
+ jr nz, .asm_3c0ac
+ call Func_3cb15
+ ret
+
+INCBIN "baserom.gbc",$3c0bb,$3c0c0 - $3c0bb
+
+PlaySoundEffect_BankF: ; 0x3c0c0
+ call Func_3cb1b
+ ld hl, $de9b
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, PointerTable_3e3ce
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ rlca
+ rlca
+ and $3
+ inc a
+.asm_3c0d7
+ push af
+ call Func_3c042
+ ld hl, $0002
+ add hl, bc
+ set 3, [hl]
+ call Func_3cadf
+ pop af
+ dec a
+ jr nz, .asm_3c0d7
+ call Func_3cb15
+ ret
+
+INCBIN "baserom.gbc",$3c0ec,$3c0f0 - $3c0ec
+
+PlayCry_BankF: ; 0x3c0f0
+; Plays a Pokemon cry.
+; Input: e = mon id
+ call Func_3cb1b
+ ld a, e
+ and a
+ ret z
+ dec e
+ ld d, $0
+ ld hl, CryData
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl] ; de = base cry id
+ inc hl
+ ld a, [hli]
+ ld [$dea8], a
+ ld a, [hli]
+ ld [$dea9], a ; dea8 = cry pitch
+ ld a, [hli]
+ ld [$deaa], a
+ ld a, [hl]
+ ld [$deab], a ; deaa = cry length
+ ld hl, $de9b
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, CryBasePointers
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ rlca
+ rlca
+ and $3
+ inc a
+.asm_3c12a
+ push af
+ call Func_3c042
+ ld hl, $0002
+ add hl, bc
+ set 5, [hl]
+ ld hl, $0003
+ add hl, bc
+ set 4, [hl]
+ ld hl, $0026
+ add hl, bc
+ ld a, [$dea8]
+ ld [hli], a
+ ld a, [$dea9]
+ ld [hl], a
+ ld a, [$de97]
+ and $3
+ cp $3
+ jr nc, .asm_3c15b
+ ld hl, $0017
+ add hl, bc
+ ld a, [$deaa]
+ ld [hli], a
+ ld a, [$deab]
+ ld [hl], a
+.asm_3c15b
+ call Func_3cadf
+ pop af
+ dec a
+ jr nz, .asm_3c12a
+ ld a, [$deac]
+ and a
+ jr nz, .asm_3c173
+ ld a, [$de98]
+ ld [$deac], a
+ ld a, $77
+ ld [$de98], a
+.asm_3c173
+ ld a, $1
+ ld [$dead], a
+ call Func_3cb15
+ ret
+
+INCBIN "baserom.gbc",$3c17c,$3c180 - $3c17c
+
+Func_3c180: ; 0x3c180
+ ld a, [$dd00]
+ and a
+ ret z
+ xor a
+ ld [$de97], a
+ ld [$de99], a
+ ld bc, $dd01
+ ld hl, $0002
+ add hl, bc
+ bit 0, [hl]
+ jp z, .asm_3c22d
+ ld hl, $0014
+ add hl, bc
+ ld a, [hl]
+ cp $2
+ jr c, .asm_3c1a4
+ dec [hl]
+ jr .asm_3c1c1
+.asm_3c1a4
+ ld hl, $001c
+ add hl, bc
+ ld a, [hl]
+ ld hl, $001b
+ add hl, bc
+ ld [hl], a
+ ld hl, $0025
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0024
+ add hl, bc
+ ld [hl], a
+ ld hl, $0003
+ add hl, bc
+ res 1, [hl]
+ call Func_3c670
+.asm_3c1c1
+ ld hl, $000d
+ add hl, bc
+ ld a, [hli]
+ ld [$de91], a
+ ld a, [hli]
+ ld [$de92], a
+ ld a, [hli]
+ ld [$de93], a
+ ld a, [hl]
+ ld [$de94], a
+ call Func_3c4f0
+ call Func_3c632
+ ld a, [$dead]
+ and a
+ jr z, .asm_3c20a
+ ld a, [$de97]
+ cp $4
+ jr nc, .asm_3c219
+ ld hl, $ddcb
+ bit 0, [hl]
+ jr nz, .asm_3c204
+ ld hl, $ddfd
+ bit 0, [hl]
+ jr nz, .asm_3c204
+ ld hl, $de2f
+ bit 0, [hl]
+ jr nz, .asm_3c204
+ ld hl, $de61
+ bit 0, [hl]
+ jr z, .asm_3c20a
+.asm_3c204
+ ld hl, $000b
+ add hl, bc
+ set 5, [hl]
+.asm_3c20a
+ ld a, [$de97]
+ cp $4
+ jr nc, .asm_3c219
+ ld hl, $00ca
+ add hl, bc
+ bit 0, [hl]
+ jr nz, .asm_3c227
+.asm_3c219
+ call Func_3c24d
+ ld hl, $0019
+ add hl, bc
+ ld a, [$de99]
+ or [hl]
+ ld [$de99], a
+.asm_3c227
+ ld hl, $000b
+ add hl, bc
+ xor a
+ ld [hl], a
+.asm_3c22d
+ ld hl, $0032
+ add hl, bc
+ ld c, l
+ ld b, h
+ ld a, [$de97]
+ inc a
+ ld [$de97], a
+ cp $8
+ jp nz, $418f
+ call Func_3c40d
+ ld a, [$de98]
+ ld [$ff24], a
+ ld a, [$de99]
+ ld [$ff25], a
+ ret
+
+Func_3c24d: ; 0x3c24d
+ ld hl, PointerTable_3c25e
+ ld a, [$de97]
+ and $7
+ add a
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+PointerTable_3c25e: ; 0x3c25e
+ dw Func_3c26e
+ dw Func_3c2e0
+ dw Func_3c349
+ dw Func_3c3cf
+ dw Func_3c26e
+ dw Func_3c2e0
+ dw Func_3c349
+ dw Func_3c3cf
+
+Func_3c26e: ; 0x3c26e
+ ld hl, $000b
+ add hl, bc
+ bit 3, [hl]
+ jr z, .asm_3c27b
+ ld a, [$de9a]
+ ld [$ff10], a
+.asm_3c27b
+ bit 5, [hl]
+ jr nz, .asm_3c2ba
+ bit 4, [hl]
+ jr nz, .asm_3c2c6
+ bit 6, [hl]
+ jr nz, .asm_3c2b4
+ bit 1, [hl]
+ jr z, .asm_3c295
+ ld a, [$de93]
+ ld [$ff13], a
+ ld a, [$de94]
+ ld [$ff14], a
+.asm_3c295
+ bit 2, [hl]
+ jr z, .asm_3c2a5
+ ld a, [$de92]
+ ld [$ff12], a
+ ld a, [$de94]
+ or $80
+ ld [$ff14], a
+.asm_3c2a5
+ bit 0, [hl]
+ ret z
+ ld a, [$de91]
+ ld d, a
+ ld a, [$ff11]
+ and $3f
+ or d
+ ld [$ff11], a
+ ret
+.asm_3c2b4
+ ld a, [$de93]
+ ld [$ff13], a
+ ret
+.asm_3c2ba
+ ld a, $8
+ ld [$ff12], a
+ ld a, [$de94]
+ or $80
+ ld [$ff14], a
+ ret
+.asm_3c2c6
+ ld hl, $de91
+ ld a, $3f
+ or [hl]
+ ld [$ff11], a
+ ld a, [$de92]
+ ld [$ff12], a
+ ld a, [$de93]
+ ld [$ff13], a
+ ld a, [$de94]
+ or $80
+ ld [$ff14], a
+ ret
+
+Func_3c2e0: ; 0x3c2e0
+ ld hl, $000b
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_3c323
+ bit 4, [hl]
+ jr nz, .asm_3c32f
+ bit 6, [hl]
+ jr nz, .asm_3c31d
+ bit 1, [hl]
+ jr z, .asm_3c2fe
+ ld a, [$de93]
+ ld [$ff18], a
+ ld a, [$de94]
+ ld [$ff19], a
+.asm_3c2fe
+ bit 2, [hl]
+ jr z, .asm_3c30e
+ ld a, [$de92]
+ ld [$ff17], a
+ ld a, [$de94]
+ or $80
+ ld [$ff19], a
+.asm_3c30e
+ bit 0, [hl]
+ ret z
+ ld a, [$de91]
+ ld d, a
+ ld a, [$ff16]
+ and $3f
+ or d
+ ld [$ff16], a
+ ret
+.asm_3c31d
+ ld a, [$de93]
+ ld [$ff18], a
+ ret
+.asm_3c323
+ ld a, $8
+ ld [$ff17], a
+ ld a, [$de94]
+ or $80
+ ld [$ff19], a
+ ret
+.asm_3c32f
+ ld hl, $de91
+ ld a, $3f
+ or [hl]
+ ld [$ff16], a
+ ld a, [$de92]
+ ld [$ff17], a
+ ld a, [$de93]
+ ld [$ff18], a
+ ld a, [$de94]
+ or $80
+ ld [$ff19], a
+ ret
+
+Func_3c349: ; 0x3c349
+ ld hl, $000b
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_3c387
+ bit 4, [hl]
+ jr nz, .asm_3c38b
+ bit 6, [hl]
+ jr nz, .asm_3c381
+ bit 1, [hl]
+ jr z, .asm_3c367
+ ld a, [$de93]
+ ld [$ff1d], a
+ ld a, [$de94]
+ ld [$ff1e], a
+.asm_3c367
+ bit 2, [hl]
+ ret z
+ xor a
+ ld [$ff1a], a
+ call LoadWavePattern
+ ld a, $80
+ ld [$ff1a], a
+ ld a, [$de93]
+ ld [$ff1d], a
+ ld a, [$de94]
+ or $80
+ ld [$ff1e], a
+ ret
+.asm_3c381
+ ld a, [$de93]
+ ld [$ff1d], a
+ ret
+.asm_3c387
+ xor a
+ ld [$ff1a], a
+ ret
+.asm_3c38b
+ ld a, $3f
+ ld [$ff1b], a
+ xor a
+ ld [$ff1a], a
+ call LoadWavePattern
+ ld a, $80
+ ld [$ff1a], a
+ ld a, [$de93]
+ ld [$ff1d], a
+ ld a, [$de94]
+ or $80
+ ld [$ff1e], a
+ ret
+
+LoadWavePattern: ; 0x3c3a6
+ push hl
+ ld a, [$de92]
+ and $f
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld de, WavePatterns_BankF
+ add hl, de
+ ld de, $ff30
+ push bc
+ ld b, $10
+.loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .loop
+ pop bc
+ pop hl
+ ld a, [$de92]
+ and $f0
+ sla a
+ ld [$ff1c], a ; set volume of wave channel
+ ret
+
+Func_3c3cf: ; 0x3c3cf
+ ld hl, $000b
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_3c3f1
+ bit 4, [hl]
+ jr nz, .asm_3c3fa
+ bit 1, [hl]
+ jr z, .asm_3c3e4
+ ld a, [$de93]
+ ld [$ff22], a
+.asm_3c3e4
+ bit 2, [hl]
+ ret z
+ ld a, [$de92]
+ ld [$ff21], a
+ ld a, $80
+ ld [$ff23], a
+ ret
+.asm_3c3f1
+ ld a, $8
+ ld [$ff21], a
+ ld a, $80
+ ld [$ff23], a
+ ret
+.asm_3c3fa
+ ld a, $3f
+ ld [$ff20], a
+ ld a, [$de92]
+ ld [$ff21], a
+ ld a, [$de93]
+ ld [$ff22], a
+ ld a, $80
+ ld [$ff23], a
+ ret
+
+Func_3c40d: ; 0x3c40d
+ ld a, [$dea2]
+ and a
+ ret z
+ ld a, [$dea3]
+ and a
+ jr z, .asm_3c41d
+ dec a
+ ld [$dea3], a
+ ret
+.asm_3c41d
+ ld a, [$dea2]
+ ld d, a
+ and $7f
+ ld [$dea3], a
+ ld a, [$de98]
+ and $7
+ bit 7, d
+ jr nz, .asm_3c448
+ and a
+ jr z, .asm_3c435
+ dec a
+ jr .asm_3c454
+.asm_3c435
+ ld a, [$dea4]
+ ld e, a
+ ld a, [$dea5]
+ ld d, a
+ push bc
+ call PlaySong_BankF
+ pop bc
+ ld hl, $dea2
+ set 7, [hl]
+ ret
+.asm_3c448
+ cp $7
+ jr nc, .asm_3c44f
+ inc a
+ jr .asm_3c454
+.asm_3c44f
+ xor a
+ ld [$dea2], a
+ ret
+.asm_3c454
+ ld d, a
+ swap a
+ or d
+ ld [$de98], a
+ ret
+
+Func_3c45c: ; 0x3c45c
+ ld hl, $0003
+ add hl, bc
+ bit 1, [hl]
+ ret z
+ ld hl, $0014
+ add hl, bc
+ ld a, [hl]
+ ld hl, $de95
+ sub [hl]
+ jr nc, .asm_3c470
+ ld a, $1
+.asm_3c470
+ ld [hl], a
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $001f
+ add hl, bc
+ ld a, e
+ sub [hl]
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ sub [hl]
+ jr nc, .asm_3c4ab
+ ld hl, $0004
+ add hl, bc
+ set 1, [hl]
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $001f
+ add hl, bc
+ ld a, [hl]
+ sub e
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ sub d
+ ld d, a
+ jr .asm_3c4c9
+.asm_3c4ab
+ ld hl, $0004
+ add hl, bc
+ res 1, [hl]
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $001f
+ add hl, bc
+ ld a, e
+ sub [hl]
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ sub [hl]
+ ld d, a
+.asm_3c4c9
+ push bc
+ ld hl, $de95
+ ld b, $0
+.asm_3c4cf
+ inc b
+ ld a, e
+ sub [hl]
+ ld e, a
+ jr nc, .asm_3c4cf
+ ld a, d
+ and a
+ jr z, .asm_3c4dc
+ dec d
+ jr .asm_3c4cf
+.asm_3c4dc
+ ld a, e
+ add [hl]
+ ld d, b
+ pop bc
+ ld hl, $0021
+ add hl, bc
+ ld [hl], d
+ ld hl, $0022
+ add hl, bc
+ ld [hl], a
+ ld hl, $0023
+ add hl, bc
+ xor a
+ ld [hl], a
+
+ ; fall through
+
+Func_3c4f0: ; 0x3c4f0
+ ld hl, $0003
+ add hl, bc
+ bit 2, [hl]
+ jr z, .asm_3c50b
+ ld hl, $001a
+ add hl, bc
+ ld a, [hl]
+ rlca
+ rlca
+ ld [hl], a
+ and $c0
+ ld [$de91], a
+ ld hl, $000b
+ add hl, bc
+ set 0, [hl]
+.asm_3c50b
+ ld hl, $0003
+ add hl, bc
+ bit 4, [hl]
+ jr z, .asm_3c529
+ ld hl, $0026
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $de93
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld e, l
+ ld d, h
+ ld hl, $de93
+ ld [hl], e
+ inc hl
+ ld [hl], d
+.asm_3c529
+ ld hl, $0003
+ add hl, bc
+ bit 1, [hl]
+ jp z, .asm_3c5c1
+ ld hl, $000f
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0004
+ add hl, bc
+ bit 1, [hl]
+ jr z, .asm_3c574
+ ld hl, $0021
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, $0022
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0023
+ add hl, bc
+ add [hl]
+ ld [hl], a
+ ld a, $0
+ adc e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jp c, $45a1
+ jr nz, .asm_3c5b4
+ ld hl, $001f
+ add hl, bc
+ ld a, [hl]
+ cp e
+ jp c, .asm_3c5a1
+ jr .asm_3c5b4
+.asm_3c574
+ ld a, e
+ ld hl, $0021
+ add hl, bc
+ ld e, [hl]
+ sub e
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0022
+ add hl, bc
+ ld a, [hl]
+ add a
+ ld [hl], a
+ ld a, e
+ sbc $0
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ ld hl, $0020
+ add hl, bc
+ ld a, d
+ cp [hl]
+ jr c, .asm_3c5a1
+ jr nz, .asm_3c5b4
+ ld hl, $001f
+ add hl, bc
+ ld a, e
+ cp [hl]
+ jr nc, .asm_3c5b4
+.asm_3c5a1
+ ld hl, $0003
+ add hl, bc
+ res 1, [hl]
+ ld hl, $0004
+ add hl, bc
+ res 1, [hl]
+ ld hl, $0020
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+.asm_3c5b4
+ ld hl, $000f
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $000b
+ add hl, bc
+ set 1, [hl]
+.asm_3c5c1
+ ld hl, $0003
+ add hl, bc
+ bit 0, [hl]
+ jr z, .asm_3c61a
+ ld hl, $001b
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_3c5e3
+ ld hl, $001d
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_3c61a
+ ld d, a
+ ld hl, $001e
+ add hl, bc
+ ld a, [hl]
+ and $f
+ jr z, .asm_3c5e6
+.asm_3c5e3
+ dec [hl]
+ jr .asm_3c61a
+.asm_3c5e6
+ ld a, [hl]
+ swap [hl]
+ or [hl]
+ ld [hl], a
+ ld a, [$de93]
+ ld e, a
+ ld hl, $0004
+ add hl, bc
+ bit 0, [hl]
+ jr z, .asm_3c605
+ res 0, [hl]
+ ld a, d
+ and $f
+ ld d, a
+ ld a, e
+ sub d
+ jr nc, .asm_3c611
+ ld a, $0
+ jr .asm_3c611
+.asm_3c605
+ set 0, [hl]
+ ld a, d
+ and $f0
+ swap a
+ add e
+ jr nc, .asm_3c611
+ ld a, $ff
+.asm_3c611
+ ld [$de93], a
+ ld hl, $000b
+ add hl, bc
+ set 6, [hl]
+.asm_3c61a
+ ld hl, $0003
+ add hl, bc
+ bit 3, [hl]
+ ret z
+ ld hl, $0024
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_3c62b
+ dec [hl]
+ ret
+.asm_3c62b
+ ld hl, $000b
+ add hl, bc
+ set 5, [hl]
+ ret
+
+Func_3c632: ; 0x3c632
+ ld hl, $0002
+ add hl, bc
+ bit 4, [hl]
+ ret z
+ ld a, [$de9f]
+ and a
+ jr z, .asm_3c644
+ dec a
+ ld [$de9f], a
+ ret
+.asm_3c644
+ ld hl, $de9d
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ inc de
+ cp $ff
+ ret z
+ and $f
+ inc a
+ ld [$de9f], a
+ ld a, [de]
+ inc de
+ ld [$de92], a
+ ld a, [de]
+ inc de
+ ld [$de93], a
+ xor a
+ ld [$de94], a
+ ld hl, $de9d
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $000b
+ add hl, bc
+ set 4, [hl]
+ ret
+
+Func_3c670: ; 0x3c670
+ call Func_3ca10
+ cp $ff
+ jr z, .asm_3c6c9
+ cp $d0
+ jr c, .asm_3c680
+.asm_3c67b
+ call Func_3c786
+ jr Func_3c670
+.asm_3c680
+ ld hl, $0002
+ add hl, bc
+ bit 3, [hl]
+ jp nz, Func_3c723
+ bit 5, [hl]
+ jp nz, Func_3c723
+ bit 4, [hl]
+ jp nz, Func_3c750
+ ld a, [$de96]
+ and $f
+ call Func_3ca5b
+ ld a, [$de96]
+ swap a
+ and $f
+ jr z, .asm_3c6c2
+ ld hl, $0011
+ add hl, bc
+ ld [hl], a
+ ld e, a
+ ld hl, $0012
+ add hl, bc
+ ld d, [hl]
+ call Func_3ca2b
+ ld hl, $000f
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $000b
+ add hl, bc
+ set 4, [hl]
+ jp Func_3c45c
+.asm_3c6c2
+ ld hl, $000b
+ add hl, bc
+ set 5, [hl]
+ ret
+.asm_3c6c9
+ ld hl, $0002
+ add hl, bc
+ bit 1, [hl]
+ jr nz, .asm_3c67b
+ ld a, [$de97]
+ cp $4
+ jr nc, .asm_3c6e0
+ ld hl, $00ca
+ add hl, bc
+ bit 0, [hl]
+ jr nz, .asm_3c6f6
+.asm_3c6e0
+ ld hl, $0002
+ add hl, bc
+ bit 5, [hl]
+ call nz, Func_3c704
+ ld a, [$de97]
+ cp $4
+ jr nz, .asm_3c6f6
+ xor a
+ ld [$ff10], a
+ ld [$de9a], a
+.asm_3c6f6
+ ld hl, $0002
+ add hl, bc
+ res 0, [hl]
+ ld hl, $0000
+ add hl, bc
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ret
+
+Func_3c704: ; 0x3c704
+ ld a, [$de97]
+ cp $4
+ ret nz
+ xor a
+ ld hl, $de21
+ ld [hli], a
+ ld [hl], a
+ ld hl, $de85
+ ld [hli], a
+ ld [hl], a
+ ld a, [$deac]
+ ld [$de98], a
+ xor a
+ ld [$deac], a
+ ld [$dead], a
+ ret
+
+Func_3c723: ; 0x3c723
+ ld hl, $000b
+ add hl, bc
+ set 4, [hl]
+ ld a, [$de96]
+ call Func_3ca5b
+ call Func_3ca10
+ ld hl, $000e
+ add hl, bc
+ ld [hl], a
+ call Func_3ca10
+ ld hl, $000f
+ add hl, bc
+ ld [hl], a
+ ld a, [$de97]
+ and $3
+ cp $3
+ ret z
+ call Func_3ca10
+ ld hl, $0010
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c750: ; 0x3c750
+ ld a, [$de97]
+ cp $3
+ ret nz
+ ld a, [$de96]
+ and $f
+ call Func_3ca5b
+ ld a, [$dea1]
+ ld e, a
+ ld d, $0
+ ld hl, $4ba2
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$de96]
+ swap a
+ and $f
+ ret z
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld [$de9d], a
+ ld a, [hl]
+ ld [$de9e], a
+ xor a
+ ld [$de9f], a
+ ret
+
+Func_3c786: ; 0x3c786
+ ld a, [$de96]
+ sub $d0
+ ld e, a
+ ld d, $0
+ ld hl, PointerTable_3c797
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+PointerTable_3c797: ; 0x3c797
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c9b6
+ dw Func_3c973
+ dw Func_3c9c1
+ dw Func_3c9aa
+ dw Func_3c994
+ dw Func_3c9a1
+ dw Func_3c987
+ dw Func_3c939
+ dw Func_3c951
+ dw Func_3c8ff
+ dw Func_3c8c4
+ dw Func_3c8b5
+ dw Func_3c95f
+ dw Func_3c9ca
+ dw Func_3c9da
+ dw Func_3c926
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c9e9
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3ca05
+ dw Func_3ca0b
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c7f7
+ dw Func_3c885
+ dw Func_3c88e
+ dw Func_3c833
+ dw Func_3c843
+ dw Func_3c80d
+ dw Func_3c7f8
+
+Func_3c7f7: ; 0x3c7f7
+ ret
+
+Func_3c7f8: ; 0x3c7f8
+ ld hl, $0002
+ add hl, bc
+ res 1, [hl]
+ ld hl, $0007
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Func_3c80d: ; 0x3c80d
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ push de
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0007
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop de
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $0002
+ add hl, bc
+ set 1, [hl]
+ ret
+
+Func_3c833: ; 0x3c833
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Func_3c843: ; 0x3c843
+ call Func_3ca10
+ ld hl, $0002
+ add hl, bc
+ bit 2, [hl]
+ jr nz, .asm_3c859
+ and a
+ jr z, .asm_3c862
+ dec a
+ set 2, [hl]
+ ld hl, $0016
+ add hl, bc
+ ld [hl], a
+.asm_3c859
+ ld hl, $0016
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_3c872
+ dec [hl]
+.asm_3c862
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+.asm_3c872
+ ld hl, $0002
+ add hl, bc
+ res 2, [hl]
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ret
+
+Func_3c885: ; 0x3c885
+ call Func_3ca10
+ ld hl, $000c
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c88e: ; 0x3c88e
+ call Func_3ca10
+ ld hl, $000c
+ add hl, bc
+ cp [hl]
+ jr z, .asm_3c8a5
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ret
+.asm_3c8a5
+ call Func_3ca10
+ ld e, a
+ call Func_3ca10
+ ld d, a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+Func_3c8b5: ; 0x3c8b5
+ call Func_3ca10
+ ld hl, $0025
+ add hl, bc
+ ld [hl], a
+ ld hl, $0003
+ add hl, bc
+ set 3, [hl]
+ ret
+
+Func_3c8c4: ; 0x3c8c4
+ ld hl, $0003
+ add hl, bc
+ set 0, [hl]
+ ld hl, $0004
+ add hl, bc
+ res 0, [hl]
+ call Func_3ca10
+ ld hl, $001c
+ add hl, bc
+ ld [hl], a
+ ld hl, $001b
+ add hl, bc
+ ld [hl], a
+ call Func_3ca10
+ ld hl, $001d
+ add hl, bc
+ ld d, a
+ and $f0
+ swap a
+ srl a
+ ld e, a
+ adc $0
+ swap a
+ or e
+ ld [hl], a
+ ld hl, $001e
+ add hl, bc
+ ld a, d
+ and $f
+ ld d, a
+ swap a
+ or d
+ ld [hl], a
+ ret
+
+Func_3c8ff: ; 0x3c8ff
+ call Func_3ca10
+ ld [$de95], a
+ call Func_3ca10
+ ld d, a
+ and $f
+ ld e, a
+ ld a, d
+ swap a
+ and $f
+ ld d, a
+ call Func_3ca2b
+ ld hl, $001f
+ add hl, bc
+ ld [hl], e
+ ld hl, $0020
+ add hl, bc
+ ld [hl], d
+ ld hl, $0003
+ add hl, bc
+ set 1, [hl]
+ ret
+
+Func_3c926: ; 0x3c926
+ ld hl, $0003
+ add hl, bc
+ set 4, [hl]
+ ld hl, $0027
+ add hl, bc
+ call Func_3ca10
+ ld [hld], a
+ call Func_3ca10
+ ld [hl], a
+ ret
+
+Func_3c939: ; 0x3c939
+ ld hl, $0003
+ add hl, bc
+ set 2, [hl]
+ call Func_3ca10
+ rrca
+ rrca
+ ld hl, $001a
+ add hl, bc
+ ld [hl], a
+ and $c0
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c951: ; 0x3c951
+ ld hl, $0002
+ add hl, bc
+ bit 3, [hl]
+ jr z, .asm_3c95c
+ res 3, [hl]
+ ret
+.asm_3c95c
+ set 3, [hl]
+ ret
+
+Func_3c95f: ; 0x3c95f
+ ld hl, $0002
+ add hl, bc
+ bit 4, [hl]
+ jr z, .asm_3c96a
+ res 4, [hl]
+ ret
+.asm_3c96a
+ set 4, [hl]
+ call Func_3ca10
+ ld [$dea1], a
+ ret
+
+Func_3c973: ; 0x3c973
+ call Func_3ca10
+ ld hl, $0028
+ add hl, bc
+ ld [hl], a
+ ld a, [$de97]
+ and $3
+ cp $3
+ ret z
+ call Func_3c9a1
+ ret
+
+Func_3c987: ; 0x3c987
+ call Func_3ca10
+ ld [$de9a], a
+ ld hl, $000b
+ add hl, bc
+ set 3, [hl]
+ ret
+
+Func_3c994: ; 0x3c994
+ call Func_3ca10
+ rrca
+ rrca
+ and $c0
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c9a1: ; 0x3c9a1
+ call Func_3ca10
+ ld hl, $000e
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c9aa: ; 0x3c9aa
+ call Func_3ca10
+ ld d, a
+ call Func_3ca10
+ ld e, a
+ call Func_3ca95
+ ret
+
+Func_3c9b6: ; 0x3c9b6
+ ld hl, $0012
+ add hl, bc
+ ld a, [$de96]
+ and $7
+ ld [hl], a
+ ret
+
+Func_3c9c1: ; 0x3c9c1
+ call Func_3ca10
+ ld hl, $0013
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3c9ca: ; 0x3c9ca
+ ld a, [$de97]
+ call Func_3caf4
+ call Func_3ca10
+ ld hl, $0019
+ add hl, bc
+ and [hl]
+ ld [hl], a
+ ret
+
+Func_3c9da: ; 0x3c9da
+ call Func_3ca10
+ ld a, [$dea2]
+ and a
+ ret nz
+ ld a, [$de96]
+ ld [$de98], a
+ ret
+
+Func_3c9e9: ; 0x3c9e9
+ call Func_3ca10
+ ld e, a
+ cp $80
+ jr nc, .asm_3c9f5
+ ld d, $0
+ jr .asm_3c9f7
+.asm_3c9f5
+ ld d, $ff
+.asm_3c9f7
+ ld hl, $0017
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld e, l
+ ld d, h
+ call Func_3ca95
+ ret
+
+Func_3ca05: ; 0x3ca05
+ ld a, $1
+ ld [$dead], a
+ ret
+
+Func_3ca0b: ; 0x3ca0b
+ xor a
+ ld [$dead], a
+ ret
+
+Func_3ca10: ; 0x3ca10
+ push hl
+ push de
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ ld [$de96], a
+ inc de
+ ld hl, $0005
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop de
+ pop hl
+ ld a, [$de96]
+ ret
+
+Func_3ca2b: ; 0x3ca2b
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ swap a
+ and $f
+ add d
+ push af
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ and $f
+ ld l, a
+ ld d, $0
+ ld h, d
+ add hl, de
+ add hl, hl
+ ld de, $4b20 ; todo
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ pop af
+.asm_3ca4b
+ cp $7
+ jr nc, .asm_3ca56
+ sra d
+ rr e
+ inc a
+ jr .asm_3ca4b
+.asm_3ca56
+ ld a, d
+ and $7
+ ld d, a
+ ret
+
+Func_3ca5b: ; 0x3ca5b
+ inc a
+ ld e, a
+ ld d, $0
+ ld hl, $0028
+ add hl, bc
+ ld a, [hl]
+ ld l, $0
+ call Func_3ca86
+ ld a, l
+ ld hl, $0017
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0015
+ add hl, bc
+ ld l, [hl]
+ call Func_3ca86
+ ld e, l
+ ld d, h
+ ld hl, $0015
+ add hl, bc
+ ld [hl], e
+ ld hl, $0014
+ add hl, bc
+ ld [hl], d
+ ret
+
+Func_3ca86: ; 0x3ca86
+ ld h, $0
+.asm_3ca88
+ srl a
+ jr nc, .asm_3ca8d
+ add hl, de
+.asm_3ca8d
+ sla e
+ rl d
+ and a
+ jr nz, .asm_3ca88
+ ret
+
+Func_3ca95: ; 0x3ca95
+ push bc
+ ld a, [$de97]
+ cp $4
+ jr nc, .asm_3cab7
+ ld bc, $dd01
+ call Func_3cad1
+ ld bc, $dd33
+ call Func_3cad1
+ ld bc, $dd65
+ call Func_3cad1
+ ld bc, $dd97
+ call Func_3cad1
+ jr .asm_3cacf
+.asm_3cab7
+ ld bc, $ddc9
+ call Func_3cad1
+ ld bc, $ddfb
+ call Func_3cad1
+ ld bc, $de2d
+ call Func_3cad1
+ ld bc, $de5f
+ call Func_3cad1
+.asm_3cacf
+ pop bc
+ ret
+
+Func_3cad1: ; 0x3cad1
+ ld hl, $0017
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ xor a
+ ld hl, $0015
+ add hl, bc
+ ld [hl], a
+ ret
+
+Func_3cadf: ; 0x3cadf
+ call Func_3cb06
+ ld a, [$deae]
+ jr .asm_3caea
+ ld a, [$de97]
+.asm_3caea
+ call Func_3caf4
+ ld hl, $0002
+ add hl, bc
+ set 0, [hl]
+ ret
+
+Func_3caf4: ; 0x3caf4
+ push de
+ and $3
+ ld e, a
+ ld d, $0
+ ld hl, Data_3cc8e
+ add hl, de
+ ld a, [hl]
+ ld hl, $0019
+ add hl, bc
+ ld [hl], a
+ pop de
+ ret
+
+Func_3cb06: ; 0x3cb06
+ ld a, [$deae]
+ and $3
+ cp $0
+ ret nz
+ xor a
+ ld [$ff10], a
+ ld [$de9a], a
+ ret
+
+Func_3cb15: ; 0x3cb15
+ ld a, $1
+ ld [$dd00], a
+ ret
+
+Func_3cb1b: ; 0x3cb1b
+ xor a
+ ld [$dd00], a
+ ret
+
+INCBIN "baserom.gbc",$3cb20,$3cb52 - $3cb20
+
+WavePatterns_BankF:
+WavePattern0_BankF: ; 0x3cb52
+ db $02, $46, $8A, $CE, $FF, $FE, $ED, $DC, $CB, $A9, $87, $65, $44, $33, $22, $11
+WavePattern1_BankF: ; 0x3cb62
+ db $02, $46, $8A, $CE, $EF, $FF, $FE, $EE, $DD, $CB, $A9, $87, $65, $43, $22, $11
+WavePattern2_BankF: ; 0x3cb72
+ db $01, $23, $43, $21, $FE, $CA, $8A, $CE, $01, $23, $43, $21, $FE, $CA, $8A, $CE
+WavePattern3_BankF: ; 0x3cb82
+ db $00, $11, $22, $33, $44, $33, $22, $11, $FF, $EE, $CC, $AA, $88, $AA, $CC, $EE
+WavePattern4_BankF: ; 0x3cb92
+ db $00, $11, $22, $33, $44, $33, $22, $11, $FF, $EE, $CC, $AA, $88, $AA, $CC, $EE
+
+INCBIN "baserom.gbc",$3cba2,$3cc8e - $3cba2
+
+Data_3cc8e: ; 0x3cc8e
+ db $11, $22, $44, $88
+
+WRAMPointerTable_3cc92: ; 0x3cc92
+ dw $DD01
+ dw $DD33
+ dw $DD65
+ dw $DD97
+
+INCBIN "baserom.gbc",$3cc9a,$3cca2 - $3cc9a
SongHeaderPointers0F: ; 0x3cca2
dw Music_Nothing0F
@@ -48695,7 +50524,588 @@ INCLUDE "audio/music/gastlyinthegraveyard.asm"
INCLUDE "audio/music/haunterinthegraveyard.asm"
INCLUDE "audio/music/gengarinthegraveyard.asm"
-INCBIN "baserom.gbc",$3e3ce,$40000 - $3e3ce
+PointerTable_3e3ce: ; 0x3e3ce
+ dw $646A
+ dw $6480
+ dw $649A
+ dw $64BA
+ dw $64D0
+ dw $64E0
+ dw $64F0
+ dw $6500
+ dw $651A
+ dw $652E
+ dw $6544
+ dw $6554
+ dw $657C
+ dw $6589
+ dw $659F
+ dw $65B5
+ dw $65C5
+ dw $65E2
+ dw $65F4
+ dw $6606
+ dw $6618
+ dw $662A
+ dw $663C
+ dw $664E
+ dw $6660
+ dw $6672
+ dw $6684
+ dw $6696
+ dw $66A8
+ dw $66BA
+ dw $66CC
+ dw $66DE
+ dw $66F0
+ dw $6702
+ dw $671A
+ dw $675D
+ dw $6810
+ dw $68AE
+ dw $696D
+ dw $6A25
+ dw $6A68
+ dw $6A82
+ dw $6B17
+ dw $6BF9
+ dw $6C17
+ dw $6C31
+ dw $6C4B
+ dw $6C7D
+ dw $6C8F
+ dw $6CA7
+ dw $6CB7
+ dw $6CD1
+ dw $6CE9
+ dw $6CFF
+ dw $6D15
+ dw $6D31
+ dw $6D4D
+ dw $6D65
+ dw $6D78
+ dw $6D98
+ dw $6DB0
+ dw $6DC0
+ dw $6DD0
+ dw $6DE3
+ dw $6DF3
+ dw $6E1C
+ dw $6E32
+ dw $6E48
+ dw $6E5E
+ dw $6E78
+ dw $6E92
+ dw $6EAA
+ dw $6EC4
+ dw $6ED4
+ dw $6EEA
+ dw $6F00
+ dw $6F16
+ dw $6F27
+
+INCBIN "baserom.gbc",$3e46a,$3ef63 - $3e46a
+
+CryBasePointers: ; 0x3ef63
+ dw Cry_00_Header_BankF
+ dw Cry_01_Header_BankF
+ dw Cry_02_Header_BankF
+ dw Cry_03_Header_BankF
+ dw Cry_04_Header_BankF
+ dw Cry_05_Header_BankF
+ dw Cry_06_Header_BankF
+ dw Cry_07_Header_BankF
+ dw Cry_08_Header_BankF
+ dw Cry_09_Header_BankF
+ dw Cry_0A_Header_BankF
+ dw Cry_0B_Header_BankF
+ dw Cry_0C_Header_BankF
+ dw Cry_0D_Header_BankF
+ dw Cry_0E_Header_BankF
+ dw Cry_0F_Header_BankF
+ dw Cry_10_Header_BankF
+ dw Cry_11_Header_BankF
+ dw Cry_12_Header_BankF
+ dw Cry_13_Header_BankF
+ dw Cry_14_Header_BankF
+ dw Cry_15_Header_BankF
+ dw Cry_16_Header_BankF
+ dw Cry_17_Header_BankF
+ dw Cry_18_Header_BankF
+ dw Cry_19_Header_BankF
+ dw Cry_1A_Header_BankF
+ dw Cry_1B_Header_BankF
+ dw Cry_1C_Header_BankF
+ dw Cry_1D_Header_BankF
+ dw Cry_1E_Header_BankF
+ dw Cry_1F_Header_BankF
+ dw Cry_20_Header_BankF
+ dw Cry_21_Header_BankF
+ dw Cry_22_Header_BankF
+ dw Cry_23_Header_BankF
+ dw Cry_24_Header_BankF
+ dw Cry_25_Header_BankF
+
+CryData: ; 0x3efaf
+; Each entry is in the following format:
+; [base cry id], [pitch], [length
+ dw $000F, $0080, $0081 ; BULBASAUR
+ dw $000F, $0020, $0100 ; IVYSAUR
+ dw $000F, $0000, $0140 ; VENUSAUR
+ dw $0004, $0060, $00C0 ; CHARMANDER
+ dw $0004, $0020, $00C0 ; CHARMELEON
+ dw $0004, $0000, $0100 ; CHARIZARD
+ dw $001D, $0060, $00C0 ; SQUIRTLE
+ dw $001D, $0020, $00C0 ; WARTORTLE
+ dw $0013, $0000, $0100 ; BLASTOISE
+ dw $0016, $0080, $00A0 ; CATERPIE
+ dw $001C, $00CC, $0081 ; METAPOD
+ dw $0016, $0077, $00C0 ; BUTTERFREE
+ dw $0015, $00EE, $0081 ; WEEDLE
+ dw $0013, $00FF, $0081 ; KAKUNA
+ dw $0013, $0060, $0100 ; BEEDRILL
+ dw $000E, $00DF, $0084 ; PIDGEY
+ dw $0014, $0028, $0140 ; PIDGEOTTO
+ dw $0014, $0011, $017F ; PIDGEOT
+ dw $0022, $0000, $0100 ; RATTATA
+ dw $0022, $0020, $017F ; RATICATE
+ dw $0010, $0000, $0100 ; SPEAROW
+ dw $0018, $0040, $0120 ; FEAROW
+ dw $0017, $0012, $00C0 ; EKANS
+ dw $0017, $00E0, $0090 ; ARBOK
+ dw $000F, $00EE, $0081 ; PIKACHU
+ dw $0009, $00EE, $0088 ; RAICHU
+ dw $0000, $0020, $00C0 ; SANDSHREW
+ dw $0000, $00FF, $017F ; SANDSLASH
+ dw $0001, $0000, $0100 ; NIDORAN_F
+ dw $0001, $002C, $0160 ; NIDORINA
+ dw $000A, $0000, $0100 ; NIDOQUEEN
+ dw $0000, $0000, $0100 ; NIDORAN_M
+ dw $0000, $002C, $0140 ; NIDORINO
+ dw $0009, $0000, $0100 ; NIDOKING
+ dw $0019, $00CC, $0081 ; CLEFAIRY
+ dw $0019, $00AA, $00A0 ; CLEFABLE
+ dw $0024, $004F, $0090 ; VULPIX
+ dw $0024, $0088, $00E0 ; NINETALES
+ dw $000E, $00FF, $00B5 ; JIGGLYPUFF
+ dw $000E, $0068, $00E0 ; WIGGLYTUFF
+ dw $001D, $00E0, $0100 ; ZUBAT
+ dw $001D, $00FA, $0100 ; GOLBAT
+ dw $0008, $00DD, $0081 ; ODDISH
+ dw $0008, $00AA, $00C0 ; GLOOM
+ dw $0023, $0022, $017F ; VILEPLUME
+ dw $001E, $0020, $0160 ; PARAS
+ dw $001E, $0042, $017F ; PARASECT
+ dw $001A, $0044, $00C0 ; VENONAT
+ dw $001A, $0029, $0100 ; VENOMOTH
+ dw $000B, $00AA, $0081 ; DIGLETT
+ dw $000B, $002A, $0090 ; DUGTRIO
+ dw $0019, $0077, $0090 ; MEOWTH
+ dw $0019, $0099, $017F ; PERSIAN
+ dw $0021, $0020, $00E0 ; PSYDUCK
+ dw $0021, $00FF, $00C0 ; GOLDUCK
+ dw $000A, $00DD, $00E0 ; MANKEY
+ dw $000A, $00AF, $00C0 ; PRIMEAPE
+ dw $001F, $0020, $00C0 ; GROWLITHE
+ dw $0015, $0000, $0100 ; ARCANINE
+ dw $000E, $00FF, $017F ; POLIWAG
+ dw $000E, $0077, $00E0 ; POLIWHIRL
+ dw $000E, $0000, $017F ; POLIWRATH
+ dw $001C, $00C0, $0081 ; ABRA
+ dw $001C, $00A8, $0140 ; KADABRA
+ dw $001C, $0098, $017F ; ALAKAZAM
+ dw $001F, $00EE, $0081 ; MACHOP
+ dw $001F, $0048, $00E0 ; MACHOKE
+ dw $001F, $0008, $0140 ; MACHAMP
+ dw $0021, $0055, $0081 ; BELLSPROUT
+ dw $0025, $0044, $00A0 ; WEEPINBELL
+ dw $0025, $0066, $014C ; VICTREEBEL
+ dw $001A, $0000, $0100 ; TENTACOOL
+ dw $001A, $00EE, $017F ; TENTACRUEL
+ dw $0024, $00F0, $0090 ; GEODUDE
+ dw $0024, $0000, $0100 ; GRAVELER
+ dw $0012, $00E0, $00C0 ; GOLEM
+ dw $0025, $0000, $0100 ; PONYTA
+ dw $0025, $0020, $0140 ; RAPIDASH
+ dw $0002, $0000, $0100 ; SLOWPOKE
+ dw $001F, $0000, $0100 ; SLOWBRO
+ dw $001C, $0080, $00E0 ; MAGNEMITE
+ dw $001C, $0020, $0140 ; MAGNETON
+ dw $0010, $00DD, $0081 ; FARFETCH_D
+ dw $000B, $00BB, $0081 ; DODUO
+ dw $000B, $0099, $00A0 ; DODRIO
+ dw $000C, $0088, $0140 ; SEEL
+ dw $000C, $0023, $017F ; DEWGONG
+ dw $0005, $0000, $0100 ; GRIMER
+ dw $0007, $00EF, $017F ; MUK
+ dw $0018, $0000, $0100 ; SHELLDER
+ dw $0018, $006F, $0160 ; CLOYSTER
+ dw $001C, $0000, $0100 ; GASTLY
+ dw $001C, $0030, $00C0 ; HAUNTER
+ dw $0007, $0000, $017F ; GENGAR
+ dw $0017, $00FF, $0140 ; ONIX
+ dw $000D, $0088, $00A0 ; DROWZEE
+ dw $000D, $00EE, $00C0 ; HYPNO
+ dw $0020, $0020, $0160 ; KRABBY
+ dw $0020, $00EE, $0160 ; KINGLER
+ dw $0006, $00ED, $0100 ; VOLTORB
+ dw $0006, $00A8, $0110 ; ELECTRODE
+ dw $000B, $0000, $0100 ; EXEGGCUTE
+ dw $000D, $0000, $0100 ; EXEGGUTOR
+ dw $0019, $0000, $0100 ; CUBONE
+ dw $0008, $004F, $00E0 ; MAROWAK
+ dw $0012, $0080, $0140 ; HITMONLEE
+ dw $000C, $00EE, $0140 ; HITMONCHAN
+ dw $000C, $0000, $0100 ; LICKITUNG
+ dw $0012, $00E6, $015D ; KOFFING
+ dw $0012, $00FF, $017F ; WEEZING
+ dw $0004, $0000, $0100 ; RHYHORN
+ dw $0011, $0000, $0100 ; RHYDON
+ dw $0014, $000A, $0140 ; CHANSEY
+ dw $0012, $0000, $0100 ; TANGELA
+ dw $0003, $0000, $0100 ; KANGASKHAN
+ dw $0019, $0099, $0090 ; HORSEA
+ dw $0019, $003C, $0081 ; SEADRA
+ dw $0016, $0080, $00C0 ; GOLDEEN
+ dw $0016, $0010, $017F ; SEAKING
+ dw $001E, $0002, $00A0 ; STARYU
+ dw $001E, $0000, $0100 ; STARMIE
+ dw $0020, $0008, $00C0 ; MR_MIME
+ dw $0016, $0000, $0100 ; SCYTHER
+ dw $000D, $00FF, $017F ; JYNX
+ dw $0006, $008F, $017F ; ELECTABUZZ
+ dw $0004, $00FF, $00B0 ; MAGMAR
+ dw $0014, $0000, $0100 ; PINSIR
+ dw $001D, $0011, $00C0 ; TAUROS
+ dw $0017, $0080, $0080 ; MAGIKARP
+ dw $0017, $0000, $0100 ; GYARADOS
+ dw $001B, $0000, $0100 ; LAPRAS
+ dw $000E, $00FF, $017F ; DITTO
+ dw $001A, $0088, $00E0 ; EEVEE
+ dw $001A, $00AA, $017F ; VAPOREON
+ dw $001A, $003D, $0100 ; JOLTEON
+ dw $001A, $0010, $00A0 ; FLAREON
+ dw $0025, $00AA, $017F ; PORYGON
+ dw $001F, $00F0, $0081 ; OMANYTE
+ dw $001F, $00FF, $00C0 ; OMASTAR
+ dw $0016, $00BB, $00C0 ; KABUTO
+ dw $0018, $00EE, $0081 ; KABUTOPS
+ dw $0023, $0020, $0170 ; AERODACTYL
+ dw $0005, $0055, $0081 ; SNORLAX
+ dw $0009, $0080, $00C0 ; ARTICUNO
+ dw $0018, $00FF, $0100 ; ZAPDOS
+ dw $0009, $00F8, $00C0 ; MOLTRES
+ dw $000F, $0060, $00C0 ; DRATINI
+ dw $000F, $0040, $0100 ; DRAGONAIR
+ dw $000F, $003C, $0140 ; DRAGONITE
+ dw $001E, $0099, $017F ; MEWTWO
+ dw $001E, $00EE, $017F ; MEW
+
+Cry_00_Header_BankF: ; 0x3f339
+ db $84
+ dw $7733
+ db $05
+ dw $7742
+ db $07
+ dw $7751
+
+Cry_01_Header_BankF: ; 0x3f342
+ db $84
+ dw $7943
+ db $05
+ dw $7956
+ db $07
+ dw $7969
+
+Cry_02_Header_BankF: ; 0x3f34b
+ db $84
+ dw $78B8
+ db $05
+ dw $78C7
+ db $07
+ dw $78D5
+
+Cry_03_Header_BankF: ; 0x3f354
+ db $84
+ dw $7652
+ db $05
+ dw $7671
+ db $07
+ dw $7690
+
+Cry_04_Header_BankF: ; 0x3f35d
+ db $84
+ dw $7A01
+ db $05
+ dw $7A20
+ db $07
+ dw $7A3F
+
+Cry_05_Header_BankF: ; 0x3f366
+ db $84
+ dw $77E1
+ db $05
+ dw $77F4
+ db $07
+ dw $7806
+
+Cry_06_Header_BankF: ; 0x3f36f
+ db $84
+ dw $778B
+ db $05
+ dw $77A5
+ db $07
+ dw $77A6
+
+Cry_07_Header_BankF: ; 0x3f378
+ db $84
+ dw $77B9
+ db $05
+ dw $77C8
+ db $07
+ dw $77D7
+
+Cry_08_Header_BankF: ; 0x3f381
+ db $84
+ dw $79D1
+ db $05
+ dw $79E4
+ db $07
+ dw $79F7
+
+Cry_09_Header_BankF: ; 0x3f38a
+ db $84
+ dw $74DB
+ db $05
+ dw $74F8
+ db $07
+ dw $7519
+
+Cry_0A_Header_BankF: ; 0x3f393
+ db $84
+ dw $7976
+ db $05
+ dw $7995
+ db $07
+ dw $79B8
+
+Cry_0B_Header_BankF: ; 0x3f39c
+ db $84
+ dw $7807
+ db $05
+ dw $7832
+ db $07
+ dw $7851
+
+Cry_0C_Header_BankF: ; 0x3f3a5
+ db $84
+ dw $786A
+ db $05
+ dw $7891
+ db $07
+ dw $78B7
+
+Cry_0D_Header_BankF: ; 0x3f3ae
+ db $84
+ dw $78D6
+ db $05
+ dw $78F5
+ db $07
+ dw $7924
+
+Cry_0E_Header_BankF: ; 0x3f
+ db $84
+ dw $775B
+ db $05
+ dw $776E
+ db $07
+ dw $7781
+
+Cry_0F_Header_BankF: ; 0x3f
+ db $84
+ dw $769D
+ db $05
+ dw $76B8
+ db $07
+ dw $76D3
+
+Cry_10_Header_BankF: ; 0x3f3b7
+ db $84
+ dw $76E3
+ db $05
+ dw $7706
+ db $07
+ dw $7729
+
+Cry_11_Header_BankF: ; 0x3f3c0
+ db $84
+ dw $75BF
+ db $05
+ dw $75DE
+ db $07
+ dw $7601
+
+Cry_12_Header_BankF: ; 0x3f3c9
+ db $84
+ dw $7AD7
+ db $05
+ dw $7AEA
+ db $07
+ dw $7AFD
+
+Cry_13_Header_BankF: ; 0x3f3d2
+ db $84
+ dw $7B0A
+ db $05
+ dw $7B25
+ db $07
+ dw $7B40
+
+Cry_14_Header_BankF: ; 0x3f3db
+ db $84
+ dw $7B53
+ db $05
+ dw $7B62
+ db $07
+ dw $7B71
+
+Cry_15_Header_BankF: ; 0x3f3e4
+ db $84
+ dw $7BE1
+ db $05
+ dw $7BFC
+ db $07
+ dw $7C17
+
+Cry_16_Header_BankF: ; 0x3f3ed
+ db $84
+ dw $7A74
+ db $05
+ dw $7A83
+ db $07
+ dw $7A92
+
+Cry_17_Header_BankF: ; 0x3f3f6
+ db $84
+ dw $7C2A
+ db $05
+ dw $7C3D
+ db $07
+ dw $7C50
+
+Cry_18_Header_BankF: ; 0x3f3ff
+ db $84
+ dw $7D3A
+ db $05
+ dw $7D5D
+ db $07
+ dw $7D80
+
+Cry_19_Header_BankF: ; 0x3f408
+ db $84
+ dw $7A52
+ db $05
+ dw $7A61
+ db $07
+ dw $7A73
+
+Cry_1A_Header_BankF: ; 0x3f411
+ db $84
+ dw $7CAB
+ db $05
+ dw $7CC6
+ db $07
+ dw $7CE1
+
+Cry_1B_Header_BankF: ; 0x3f41a
+ db $84
+ dw $7A9C
+ db $05
+ dw $7AB3
+ db $07
+ dw $7ACA
+
+Cry_1C_Header_BankF: ; 0x3f423
+ db $84
+ dw $7C5D
+ db $05
+ dw $7C80
+ db $07
+ dw $7C9B
+
+Cry_1D_Header_BankF: ; 0x3f42c
+ db $84
+ dw $7CF4
+ db $05
+ dw $7D0F
+ db $07
+ dw $7D2A
+
+Cry_1E_Header_BankF: ; 0x3f435
+ db $84
+ dw $7B7B
+ db $05
+ dw $7B9E
+ db $07
+ dw $7BC5
+
+Cry_1F_Header_BankF: ; 0x3f43e
+ db $84
+ dw $7D93
+ db $05
+ dw $7DA6
+ db $07
+ dw $7DB9
+
+Cry_20_Header_BankF: ; 0x3f447
+ db $84
+ dw $7DC6
+ db $05
+ dw $7DD9
+ db $07
+ dw $7DEC
+
+Cry_21_Header_BankF: ; 0x3f450
+ db $84
+ dw $7DF9
+ db $05
+ dw $7E1C
+ db $07
+ dw $7E3E
+
+Cry_22_Header_BankF: ; 0x3f459
+ db $84
+ dw $7E3F
+ db $05
+ dw $7E52
+ db $07
+ dw $7E65
+
+Cry_23_Header_BankF: ; 0x3f462
+ db $84
+ dw $7532
+ db $05
+ dw $7549
+ db $07
+ dw $755C
+
+Cry_24_Header_BankF: ; 0x3f46b
+ db $84
+ dw $7569
+ db $05
+ dw $758C
+ db $07
+ dw $75AF
+
+Cry_25_Header_BankF: ; 0x3f474
+ db $84
+ dw $7617
+ db $05
+ dw $762E
+ db $07
+ dw $7645
+
+INCBIN "baserom.gbc",$3f48f,$40000 - $3f48f
SECTION "bank10", ROMX, BANK[$10]