summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-06-30 13:18:41 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-06-30 13:18:41 -0700
commit354dd03c4927bfe3f6c1bd75bc245063da68cc93 (patch)
tree01e47645d4fba5b4461fa629e9d9742b0c25e7b0
parent193da33375ecc37d2fd326deef4bc3b5720c49dd (diff)
Move stage data loading routines to engine/main/load_stage_data/
-rwxr-xr-xengine/main/load_stage_data/load_blue_field.asm474
-rwxr-xr-xengine/main/load_stage_data/load_diglett_bonus.asm34
-rwxr-xr-xengine/main/load_stage_data/load_gengar_bonus.asm11
-rwxr-xr-xengine/main/load_stage_data/load_meowth_bonus.asm7
-rwxr-xr-xengine/main/load_stage_data/load_mewtwo_bonus.asm9
-rwxr-xr-xengine/main/load_stage_data/load_red_field.asm480
-rwxr-xr-xengine/main/load_stage_data/load_seel_bonus.asm7
-rwxr-xr-xengine/main/load_stage_data/load_stage_data.asm35
-rwxr-xr-xengine/main/load_stage_data/load_unused_stage.asm6
-rwxr-xr-xmain.asm1089
10 files changed, 1077 insertions, 1075 deletions
diff --git a/engine/main/load_stage_data/load_blue_field.asm b/engine/main/load_stage_data/load_blue_field.asm
new file mode 100755
index 0000000..f6e2f2f
--- /dev/null
+++ b/engine/main/load_stage_data/load_blue_field.asm
@@ -0,0 +1,474 @@
+_LoadStageDataBlueFieldTop: ; 0x1c165
+ call asm_1e475
+ call Func_1cb43
+ call Func_1c3ee
+ call Func_1e8f6
+ callba Func_142fc
+ ld a, $1
+ ld [wd640], a
+ call Func_1f18a
+ callba Func_1404a
+ call Func_1c203
+ ret
+
+_LoadStageDataBlueFieldBottom: ; 0x1c191
+ call Func_1c1db
+ call Func_1c4b6
+ call Func_1c2cb
+ call Func_1e627
+ call Func_1c43c
+ call Func_1c305
+ call Func_1c3ee
+ callba Func_14746
+ callba Func_14707
+ call Func_1c235
+ call Func_1c21e
+ call Func_1e8f6
+ callba Func_142fc
+ callba Func_1404a
+ call Func_1c203
+ ret
+
+Func_1c1db: ; 0x1c1db
+ ld a, [wd641]
+ cp $0
+ ret z
+ ld a, $1
+ ld [wd640], a
+ ld a, $0
+ ld [wd641], a
+ ld a, [wBlueStageForceFieldDirection]
+ cp $2 ; down direction
+ ret nz
+ ld a, $0
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1 ; right direction
+ ld [wd64a], a
+ xor a
+ ld [wd649], a
+ ld [wd648], a
+ ret
+
+Func_1c203: ; 0x1c203
+ ld a, $ff
+ ld [wd4d7], a
+ ld [wd4db], a
+ ld a, [wd4b4]
+ ld [wd4c5], a
+ ld a, [wd4b6]
+ ld [wd4c6], a
+ ld a, [wBallRotation]
+ ld [wd4c7], a
+ ret
+
+Func_1c21e: ; 0x1c21e
+ ld a, $ff
+ ld [wd60e], a
+ ld [wd60f], a
+ ld a, [wd60c]
+ call Func_1d5f2
+ ld a, [wd60d]
+ add $14
+ call Func_1d5f2
+ ret
+
+Func_1c235: ; 0x1c235
+ ld a, [wLeftMapMoveDiglettAnimationCounter]
+ and a
+ jr z, .asm_1c249
+ ld a, $54
+ ld [wc7e3], a
+ ld a, $55
+ ld [wc803], a
+ ld a, $1
+ jr .asm_1c24a
+
+.asm_1c249
+ xor a
+.asm_1c24a
+ call Func_1de4b
+ ld a, [wLeftMapMoveCounter]
+ call Func_1de6f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1c267
+ ld a, [wLeftMapMoveCounter]
+ cp $0
+ jr z, .asm_1c264
+ ld b, $7
+ add b
+ jr .asm_1c269
+
+.asm_1c264
+ xor a
+ jr .asm_1c269
+
+.asm_1c267
+ ld a, $8
+.asm_1c269
+ call Func_1de6f
+ ld a, [wRightMapMoveDiglettFrame]
+ and a
+ jr z, .asm_1c295
+ ld a, $52
+ ld [wc7f0], a
+ ld a, $53
+ ld [wc810], a
+ ld a, [wd644]
+ and a
+ jr z, .asm_1c28a
+ ld a, [wd55a]
+ and a
+ jr nz, .asm_1c2bd
+ jr .asm_1c291
+
+.asm_1c28a
+ ld a, [wRightMapMoveCounter]
+ add $3
+ jr .asm_1c297
+
+.asm_1c291
+ ld a, $3
+ jr .asm_1c297
+
+.asm_1c295
+ ld a, $2
+.asm_1c297
+ call Func_1de4b
+ ld a, [wRightMapMoveCounter]
+ add $4
+ call Func_1de6f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1c2b7
+ ld a, [wRightMapMoveCounter]
+ cp $0
+ jr z, .asm_1c2b3
+ ld b, $a
+ add b
+ jr .asm_1c2b9
+
+.asm_1c2b3
+ ld a, $4
+ jr .asm_1c2b9
+
+.asm_1c2b7
+ ld a, $9
+.asm_1c2b9
+ call Func_1de6f
+ ret
+
+.asm_1c2bd
+ ld a, $6
+ call Func_1de4b
+ ld a, [wRightMapMoveCounter]
+ add $4
+ call Func_1de6f
+ ret
+
+Func_1c2cb: ; 0x1c2cb
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld bc, $0000
+.asm_1c2d4
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ ld a, [hl]
+ res 7, a
+ call Func_1eb41
+ pop bc
+ inc c
+ ld a, c
+ cp $2
+ jr nz, .asm_1c2d4
+ ld bc, $0002
+.asm_1c2e9
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld hl, wd648
+ add hl, bc
+ dec hl
+ dec hl
+ ld a, [hl]
+ ld d, a
+ pop af
+ add d
+ call Func_1eb41
+ pop bc
+ inc c
+ ld a, c
+ cp $5
+ jr nz, .asm_1c2e9
+ ret
+
+Func_1c305: ; 0x1c305
+ ld a, [wInSpecialMode]
+ and a
+ ret z
+ ld a, [wSpecialMode]
+ cp $2
+ ret z
+ ld a, [wd5c6]
+ and a
+ jr nz, .asm_1c31f
+ ld a, [wCapturingMon]
+ and a
+ jr nz, .asm_1c31f
+ jp Func_1c3ca
+
+.asm_1c31f
+ callba Func_1c3ac
+ callba Func_10362
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, Func_10301
+ ld a, [wCapturingMon]
+ and a
+ ret z
+ ld a, BANK(PikachuSaverGfx)
+ ld hl, PikachuSaverGfx + $c0
+ ld de, vTilesOB tile $7e
+ ld bc, $0020
+ call FarCopyData
+ ld a, BANK(StageSharedPikaBoltGfx)
+ ld hl, BallCaptureSmokeGfx
+ ld de, vTilesSH tile $10
+ ld bc, $0180
+ call FarCopyData
+ ld a, [wBallType]
+ cp GREAT_BALL
+ jr nc, .notPokeball
+ ld a, Bank(PinballPokeballShakeGfx)
+ ld hl, PinballPokeballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+.notPokeball
+ cp ULTRA_BALL
+ jr nc, .notGreatball
+ ld a, Bank(PinballGreatballShakeGfx)
+ ld hl, PinballGreatballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+.notGreatball
+ cp MASTER_BALL
+ jr nc, .notUltraBall
+ ld a, Bank(PinballUltraballShakeGfx)
+ ld hl, PinballUltraballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+.notUltraBall
+ ld a, Bank(PinballMasterballShakeGfx)
+ ld hl, PinballMasterballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+Func_1c3ac: ; 0x1c3ac
+ ld a, $80
+ hlCoord 7, 4, vBGMap
+ call Func_1c3c3
+ hlCoord 7, 5, vBGMap
+ call Func_1c3c3
+ hlCoord 7, 6, vBGMap
+ call Func_1c3c3
+ hlCoord 7, 7, vBGMap
+ ; fall through
+
+Func_1c3c3: ; 0x1c3c3
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ret
+
+Func_1c3ca: ; 0x1c3ca
+ ld hl, wd586
+ ld b, $18
+.asm_1c3cf
+ ld a, [hli]
+ xor $1
+ ld [hli], a
+ dec b
+ jr nz, .asm_1c3cf
+ callba Func_10184
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, Func_102bc
+ ret
+
+Func_1c3ee: ; 0x1c3ee
+ ld a, [wInSpecialMode]
+ and a
+ ret z
+ ld a, [wSpecialMode]
+ cp $1
+ ret nz
+ ld a, [wd554]
+ cp $3
+ ret z
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr nz, .asm_1c416
+ ld a, BANK(EvolutionTrinketsGfx)
+ ld hl, EvolutionTrinketsGfx
+ ld de, vTilesOB tile $60
+ ld bc, $00e0
+ call FarCopyData
+ jr .asm_1c424
+
+.asm_1c416
+ ld a, BANK(EvolutionTrinketsGfx)
+ ld hl, EvolutionTrinketsGfx
+ ld de, vTilesOB tile $20
+ ld bc, $00e0
+ call FarCopyData
+.asm_1c424
+ ld a, [wd551]
+ and a
+ ret z
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ld a, BANK(PaletteData_dd188)
+ ld hl, PaletteData_dd188
+ ld de, $0070
+ ld bc, $0010
+ call Func_6fd
+ ret
+
+Func_1c43c: ; 0x1c43c
+ ld a, [wInSpecialMode]
+ and a
+ jr z, .asm_1c458
+ ld a, [wSpecialMode]
+ and a
+ jr nz, .asm_1c450
+ ld a, [wNumMonHits]
+ and a
+ call nz, Func_1c46d
+ ret
+
+.asm_1c450
+ cp $1
+ jr nz, .asm_1c458
+ call Func_1c47d
+ ret
+
+.asm_1c458
+ ld a, [wd624]
+ call Func_1f265
+ ld a, BANK(CaughtPokeballGfx)
+ ld hl, CaughtPokeballGfx
+ ld de, vTilesSH tile $2e
+ ld bc, $0020
+ call FarCopyData
+ ret
+
+Func_1c46d: ; 0x1c46d
+ push af
+ callba Func_10611
+ pop af
+ dec a
+ jr nz, Func_1c46d
+ ret
+
+Func_1c47d: ; 0x1c47d
+ ld de, $0000
+ ld a, [wd554]
+ and a
+ ret z
+ ld b, a
+.asm_1c486
+ ld a, [wCurrentEvolutionType]
+ call Func_1c491
+ inc de
+ dec b
+ jr nz, .asm_1c486
+ ret
+
+Func_1c491: ; 0x1c491
+ push bc
+ push de
+ dec a
+ ld c, a
+ ld b, $0
+ swap c
+ sla c
+ ld hl, EvolutionProgressIconsGfx
+ add hl, bc
+ swap e
+ sla e
+ push hl
+ ld hl, vTilesSH tile $2e
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ ld bc, $0020
+ ld a, BANK(EvolutionProgressIconsGfx)
+ call FarCopyData
+ pop de
+ pop bc
+ ret
+
+Func_1c4b6: ; 0x1c4b6
+ ld a, [wInSpecialMode]
+ and a
+ jr nz, .asm_1c4f0
+ ld a, [wd609]
+ and a
+ jr z, .asm_1c4d2
+ ld a, [wd498]
+ add $15
+ callba Func_30256
+ ret
+
+.asm_1c4d2
+ ld a, [wd608]
+ and a
+ jr z, .asm_1c4e5
+ ld a, $1a
+ callba Func_30256
+ ret
+
+.asm_1c4e5
+ callba Func_30253
+ ret
+
+.asm_1c4f0
+ ld a, [wSpecialMode]
+ cp $2
+ ret nz
+ ld a, [wd54d]
+ cp $3
+ jr nz, .asm_1c508
+ callba Func_30253
+ ret
+
+.asm_1c508
+ ld a, [wd604]
+ and a
+ ld a, $14
+ jr nz, .asm_1c515
+ ld a, [wd55a]
+ add $12
+.asm_1c515
+ callba Func_30256
+ ret
diff --git a/engine/main/load_stage_data/load_diglett_bonus.asm b/engine/main/load_stage_data/load_diglett_bonus.asm
new file mode 100755
index 0000000..6be87a9
--- /dev/null
+++ b/engine/main/load_stage_data/load_diglett_bonus.asm
@@ -0,0 +1,34 @@
+_LoadStageDataDiglettBonus: ; 0x19a76
+ callba Func_142fc
+ call Func_2862
+ ld a, [wd7c1]
+ and a
+ ret z
+ call Func_19bbd
+ call Func_19a96
+ ld a, [wDugrioState]
+ and a
+ call nz, Func_1ac2c
+ ret
+
+Func_19a96: ; 0x19a96
+ ld hl, wDiglettStates
+ ld bc, NUM_DIGLETTS << 8
+.asm_19a9c
+ ld a, [hli]
+ and a
+ jr z, .asm_19aae
+ push bc
+ push hl
+ push af
+ call Func_19da8
+ pop af
+ cp $6
+ call c, Func_19dcd
+ pop hl
+ pop bc
+.asm_19aae
+ inc c
+ dec b
+ jr nz, .asm_19a9c
+ ret
diff --git a/engine/main/load_stage_data/load_gengar_bonus.asm b/engine/main/load_stage_data/load_gengar_bonus.asm
new file mode 100755
index 0000000..767d37d
--- /dev/null
+++ b/engine/main/load_stage_data/load_gengar_bonus.asm
@@ -0,0 +1,11 @@
+_LoadStageDataGengarBonus: ; 0x1818b
+ callba Func_142fc
+ call Func_2862
+ call Func_18d72
+ ld a, [wd7c1]
+ callba Func_1404a
+ and a
+ ret z
+ call Func_183db
+ call Func_18d91
+ ret
diff --git a/engine/main/load_stage_data/load_meowth_bonus.asm b/engine/main/load_stage_data/load_meowth_bonus.asm
new file mode 100755
index 0000000..01a49ba
--- /dev/null
+++ b/engine/main/load_stage_data/load_meowth_bonus.asm
@@ -0,0 +1,7 @@
+_LoadStageDataMeowthBonus: ; 0x24128
+ callba Func_142fc
+ call Func_2862
+ callba Func_24fa3
+ call Func_24516
+ callba Func_1404a
+ ret
diff --git a/engine/main/load_stage_data/load_mewtwo_bonus.asm b/engine/main/load_stage_data/load_mewtwo_bonus.asm
new file mode 100755
index 0000000..47bbfc4
--- /dev/null
+++ b/engine/main/load_stage_data/load_mewtwo_bonus.asm
@@ -0,0 +1,9 @@
+_LoadStageDataMewtwoBonus: ; 0x19310
+ callba Func_142fc
+ call Func_2862
+ callba Func_1404a
+ ld a, [wd7c1]
+ and a
+ ret z
+ call Func_194ac
+ ret
diff --git a/engine/main/load_stage_data/load_red_field.asm b/engine/main/load_stage_data/load_red_field.asm
new file mode 100755
index 0000000..5a58a75
--- /dev/null
+++ b/engine/main/load_stage_data/load_red_field.asm
@@ -0,0 +1,480 @@
+_LoadStageDataRedFieldTop: ; 0x14000
+ call Func_14091
+ call Func_159f4
+ call Func_15450
+ call Func_16859
+ call Func_14ece
+ call Func_14234
+ call Func_16425
+ call Func_142fc
+ call Func_1404a
+ ret
+
+_LoadStageDataRedFieldBottom: ; 0x1401c
+ call Func_14091
+ call Func_14377
+ call Func_14135
+ call Func_asm_1522d
+ call Func_14282
+ call Func_1414b
+ call Func_14234
+ call Func_14746
+ call Func_14707
+ call Func_140f9
+ call Func_16878
+ call Func_140e2
+ call Func_16425
+ call Func_142fc
+ call Func_1404a
+ ret
+
+Func_1404a: ; 0x1404a
+ ld a, [wd57d]
+ and a
+ ret z
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret nz
+ ld a, [wd580]
+ and a
+ ret z
+ ld a, $f
+ ld [wd581], a
+ call Func_1762f
+ ld hl, wTimerDigits
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld hl, wTimerDigits
+ ld a, [wTimerMinutes]
+ and $f
+ call LoadTimerDigitTiles
+ ld a, [wTimerSeconds]
+ swap a
+ and $f
+ call LoadTimerDigitTiles
+ ld a, [wTimerSeconds]
+ and $f
+ call LoadTimerDigitTiles
+ ld a, e
+ srl a
+ srl a
+ ld d, $90 ; colon
+ call LoadTimerDigitTiles
+ ret
+
+Func_14091: ; 0x14091
+ ld a, $ff
+ ld [wd4d7], a
+ ld [wd4db], a
+ ld a, [wd4b4]
+ ld [wd4c5], a
+ ld a, [wd4b6]
+ ld [wd4c6], a
+ ld a, [wBallRotation]
+ ld [wd4c7], a
+ ld a, [wd503]
+ and a
+ ret z
+ xor a
+ ld [wd503], a
+ ld a, [wd502]
+ res 1, a
+ ld [wd502], a
+ and $1
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $fe
+ or c
+ ld [wStageCollisionState], a
+ lb de, $00, $07
+ call PlaySoundEffect
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret nz
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ ret
+
+Func_140e2: ; 0x140e2
+ ld a, $ff
+ ld [wd60e], a
+ ld [wd60f], a
+ ld a, [wd60c]
+ call Func_16f28
+ ld a, [wd60d]
+ add $14
+ call Func_16f28
+ ret
+
+Func_140f9: ; 0x140f9
+ ld a, [wd4ef]
+ and a
+ jr z, .asm_1410c
+ xor a
+ ld a, $66
+ ld [wc7e3], a
+ ld a, $67
+ ld [wc803], a
+ ld a, $2
+.asm_1410c
+ call Func_149d9
+ ld a, [wLeftMapMoveCounter]
+ call Func_149f5
+ ld a, [wd4f1]
+ and a
+ jr z, .asm_14127
+ ld a, $6a
+ ld [wc7f0], a
+ ld a, $6b
+ ld [wc810], a
+ ld a, $2
+.asm_14127
+ add $3
+ call Func_149d9
+ ld a, [wRightMapMoveCounter]
+ add $4
+ call Func_149f5
+ ret
+
+Func_14135: ; 0x14135
+ ld bc, $0000
+.asm_14138
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ ld a, [hl]
+ res 7, a
+ call Func_169cd
+ pop bc
+ inc c
+ ld a, c
+ cp $5
+ jr nz, .asm_14138
+ ret
+
+Func_1414b: ; 0x1414b
+ ld a, [wInSpecialMode]
+ and a
+ ret z
+ ld a, [wSpecialMode]
+ cp $2
+ ret z
+ ld a, [wd5c6]
+ and a
+ jr nz, .asm_14165
+ ld a, [wCapturingMon]
+ and a
+ jr nz, .asm_14165
+ jp Func_14210
+
+.asm_14165
+ callba Func_141f2
+ callba Func_10362
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, Func_10301
+ ld a, [wCapturingMon]
+ and a
+ ret z
+ ld a, BANK(PikachuSaverGfx)
+ ld hl, PikachuSaverGfx + $c0
+ ld de, vTilesOB tile $7e
+ ld bc, $0020
+ call FarCopyData
+ ld a, BANK(BallCaptureSmokeGfx)
+ ld hl, BallCaptureSmokeGfx
+ ld de, vTilesSH tile $10
+ ld bc, $0180
+ call FarCopyData
+ ld a, [wBallType]
+ cp GREAT_BALL
+ jr nc, .notPokeball
+ ld a, Bank(PinballPokeballShakeGfx)
+ ld hl, PinballPokeballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+.notPokeball
+ cp ULTRA_BALL
+ jr nc, .notGreatball
+ ld a, Bank(PinballGreatballShakeGfx)
+ ld hl, PinballGreatballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+.notGreatball
+ cp MASTER_BALL
+ jr nc, .notUltraball
+ ld a, Bank(PinballUltraballShakeGfx)
+ ld hl, PinballUltraballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+.notUltraball
+ ld a, Bank(PinballMasterballShakeGfx)
+ ld hl, PinballMasterballShakeGfx
+ ld de, vTilesOB tile $38
+ ld bc, $0040
+ call FarCopyData
+ ret
+
+Func_141f2: ; 0x141f2
+ ld a, $80
+ hlCoord 7, 4, vBGMap
+ call Func_14209
+ hlCoord 7, 5, vBGMap
+ call Func_14209
+ hlCoord 7, 6, vBGMap
+ call Func_14209
+ hlCoord 7, 7, vBGMap
+ ; fall through
+
+Func_14209: ; 0x14209
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ret
+
+Func_14210: ; 0x14210
+ ld hl, wd586
+ ld b, $18
+.asm_14215
+ ld a, [hli]
+ xor $1
+ ld [hli], a
+ dec b
+ jr nz, .asm_14215
+ callba Func_10184
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, Func_102bc
+ ret
+
+Func_14234: ; 0x14234
+ ld a, [wInSpecialMode]
+ and a
+ ret z
+ ld a, [wSpecialMode]
+ cp $1
+ ret nz
+ ld a, [wd554]
+ cp $3
+ ret z
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr nz, .asm_1425c
+ ld a, BANK(EvolutionTrinketsGfx)
+ ld hl, EvolutionTrinketsGfx
+ ld de, vTilesSH tile $10
+ ld bc, $00e0
+ call FarCopyData
+ jr .asm_1426a
+
+.asm_1425c
+ ld a, BANK(EvolutionTrinketsGfx)
+ ld hl, EvolutionTrinketsGfx
+ ld de, vTilesOB tile $20
+ ld bc, $00e0
+ call FarCopyData
+.asm_1426a
+ ld a, [wd551]
+ and a
+ ret z
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ld a, BANK(PaletteData_dd188)
+ ld hl, PaletteData_dd188
+ ld de, $0070
+ ld bc, $0010
+ call Func_6fd
+ ret
+
+Func_14282: ; 0x14282
+ ld a, [wInSpecialMode]
+ and a
+ jr z, .asm_1429e
+ ld a, [wSpecialMode]
+ and a
+ jr nz, .asm_14296
+ ld a, [wNumMonHits]
+ and a
+ call nz, Func_142b3
+ ret
+
+.asm_14296
+ cp $1
+ jr nz, .asm_1429e
+ call Func_142c3
+ ret
+
+.asm_1429e
+ ld a, [wd624]
+ call Func_174d4
+ ld a, BANK(CaughtPokeballGfx)
+ ld hl, CaughtPokeballGfx
+ ld de, vTilesSH tile $2e
+ ld bc, $0020
+ call FarCopyData
+ ret
+
+Func_142b3: ; 0x142b3
+ push af
+ callba Func_10611
+ pop af
+ dec a
+ jr nz, Func_142b3
+ ret
+
+Func_142c3: ; 0x142c3
+ ld de, $0000
+ ld a, [wd554]
+ and a
+ ret z
+ ld b, a
+.asm_142cc
+ ld a, [wCurrentEvolutionType]
+ call Func_142d7
+ inc de
+ dec b
+ jr nz, .asm_142cc
+ ret
+
+Func_142d7: ; 0x142d7
+ push bc
+ push de
+ dec a
+ ld c, a
+ ld b, $0
+ swap c
+ sla c
+ ld hl, EvolutionProgressIconsGfx
+ add hl, bc
+ swap e
+ sla e
+ push hl
+ ld hl, vTilesSH tile $2e
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ ld bc, $0020
+ ld a, BANK(EvolutionProgressIconsGfx)
+ call FarCopyData
+ pop de
+ pop bc
+ ret
+
+Func_142fc: ; 0x142fc
+ ld a, [wd4c8]
+ and a
+ jr nz, .asm_1430e
+ callba LoadBallGfx
+ jr .asm_14328
+
+.asm_1430e
+ cp $1
+ jr nz, .asm_1431e
+ callba LoadMiniBallGfx
+ jr .asm_14328
+
+.asm_1431e
+ callba Func_dd62
+.asm_14328
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ld a, [wBallType]
+ cp GREAT_BALL
+ jr nc, .notPokeball
+ ld a, BANK(PokeBallObjPalette)
+ ld hl, PokeBallObjPalette
+ ld de, $0040
+ ld bc, $0008
+ call Func_6fd
+ ret
+
+.notPokeball
+ cp ULTRA_BALL
+ jr nc, .notGreatball
+ ld a, BANK(GreatBallObjPalette)
+ ld hl, GreatBallObjPalette
+ ld de, $0040
+ ld bc, $0008
+ call Func_6fd
+ ret
+
+.notGreatball
+ cp MASTER_BALL
+ jr nc, .notUltraball
+ ld a, BANK(UltraBallObjPalette)
+ ld hl, UltraBallObjPalette
+ ld de, $0040
+ ld bc, $0008
+ call Func_6fd
+ ret
+
+.notUltraball
+ ld a, BANK(MasterBallObjPalette)
+ ld hl, MasterBallObjPalette
+ ld de, $0040
+ ld bc, $0008
+ call Func_6fd
+ ret
+
+Func_14377: ; 0x14377
+ ld a, [wInSpecialMode]
+ and a
+ jr nz, .asm_143b1
+ ld a, [wd609]
+ and a
+ jr z, .asm_14393
+ ld a, [wd498]
+ add $15
+ callba Func_30256
+ ret
+
+.asm_14393
+ ld a, [wd608]
+ and a
+ jr z, .asm_143a6
+ ld a, $1a
+ callba Func_30256
+ ret
+
+.asm_143a6
+ callba Func_30253
+ ret
+
+.asm_143b1
+ ld a, [wSpecialMode]
+ cp $2
+ ret nz
+ ld a, [wd54d]
+ cp $3
+ jr nz, .asm_143c9
+ callba Func_30253
+ ret
+
+.asm_143c9
+ ld a, [wd604]
+ and a
+ ld a, $14
+ jr nz, .asm_143d6
+ ld a, [wd55a]
+ add $12
+.asm_143d6
+ callba Func_30256
+ ret
diff --git a/engine/main/load_stage_data/load_seel_bonus.asm b/engine/main/load_stage_data/load_seel_bonus.asm
new file mode 100755
index 0000000..e72b9a7
--- /dev/null
+++ b/engine/main/load_stage_data/load_seel_bonus.asm
@@ -0,0 +1,7 @@
+_LoadStageDataSeelBonus: ; 0x25b97
+ callba Func_142fc
+ call Func_2862
+ callba Func_262f4
+ call Func_25d0e
+ callba Func_1404a
+ ret
diff --git a/engine/main/load_stage_data/load_stage_data.asm b/engine/main/load_stage_data/load_stage_data.asm
new file mode 100755
index 0000000..4922289
--- /dev/null
+++ b/engine/main/load_stage_data/load_stage_data.asm
@@ -0,0 +1,35 @@
+_LoadStageData: ; 0x8471
+; Loads stage data such as additional graphics, collision attributes, etc.
+ ld a, [wCurrentStage]
+ call CallInFollowingTable
+CallTable_8477: ; 0x8477
+ ; STAGE_RED_FIELD_TOP
+ padded_dab _LoadStageDataRedFieldTop
+ ; STAGE_RED_FIELD_BOTTOM
+ padded_dab _LoadStageDataRedFieldBottom
+ padded_dab DoNothing_1805f
+ padded_dab DoNothing_18060
+ ; STAGE_BLUE_FIELD_TOP
+ padded_dab _LoadStageDataBlueFieldTop
+ ; STAGE_BLUE_FIELD_BOTTOM
+ padded_dab _LoadStageDataBlueFieldBottom
+ ; STAGE_GENGAR_BONUS
+ padded_dab _LoadStageDataGengarBonus
+ ; STAGE_GENGAR_BONUS
+ padded_dab _LoadStageDataGengarBonus
+ ; STAGE_MEWTWO_BONUS
+ padded_dab _LoadStageDataMewtwoBonus
+ ; STAGE_MEWTWO_BONUS
+ padded_dab _LoadStageDataMewtwoBonus
+ ; STAGE_MEOWTH_BONUS
+ padded_dab _LoadStageDataMeowthBonus
+ ; STAGE_MEOWTH_BONUS
+ padded_dab _LoadStageDataMeowthBonus
+ ; STAGE_DIGLETT_BONUS
+ padded_dab _LoadStageDataDiglettBonus
+ ; STAGE_DIGLETT_BONUS
+ padded_dab _LoadStageDataDiglettBonus
+ ; STAGE_SEEL_BONUS
+ padded_dab _LoadStageDataSeelBonus
+ ; STAGE_SEEL_BONUS
+ padded_dab _LoadStageDataSeelBonus
diff --git a/engine/main/load_stage_data/load_unused_stage.asm b/engine/main/load_stage_data/load_unused_stage.asm
new file mode 100755
index 0000000..8f4dadf
--- /dev/null
+++ b/engine/main/load_stage_data/load_unused_stage.asm
@@ -0,0 +1,6 @@
+; Unused -- load stage data for unused stage.
+DoNothing_1805f: ; 0x1805f
+ ret
+
+DoNothing_18060: ; 0x18060
+ ret
diff --git a/main.asm b/main.asm
index 5d3a57f..5479b4e 100755
--- a/main.asm
+++ b/main.asm
@@ -14,41 +14,7 @@ INCLUDE "engine/erase_all_data_menu.asm"
INCLUDE "engine/copyright_screen.asm"
INCLUDE "engine/main/stage_init/init_stages.asm"
INCLUDE "engine/main/ball_init/ball_init.asm"
-
-Func_8471: ; 0x8471
- ld a, [wCurrentStage]
- call CallInFollowingTable
-CallTable_8477: ; 0x8477
- ; STAGE_RED_FIELD_TOP
- padded_dab Func_14000
- ; STAGE_RED_FIELD_BOTTOM
- padded_dab Func_1401c
- padded_dab DoNothing_1805f
- padded_dab DoNothing_18060
- ; STAGE_BLUE_FIELD_TOP
- padded_dab Func_1c165
- ; STAGE_BLUE_FIELD_BOTTOM
- padded_dab Func_1c191
- ; STAGE_GENGAR_BONUS
- padded_dab Func_1818b
- ; STAGE_GENGAR_BONUS
- padded_dab Func_1818b
- ; STAGE_MEWTWO_BONUS
- padded_dab Func_19310
- ; STAGE_MEWTWO_BONUS
- padded_dab Func_19310
- ; STAGE_MEOWTH_BONUS
- padded_dab Func_24128
- ; STAGE_MEOWTH_BONUS
- padded_dab Func_24128
- ; STAGE_DIGLETT_BONUS
- padded_dab Func_19a76
- ; STAGE_DIGLETT_BONUS
- padded_dab Func_19a76
- ; STAGE_SEEL_BONUS
- padded_dab Func_25b97
- ; STAGE_SEEL_BONUS
- padded_dab Func_25b97
+INCLUDE "engine/main/load_stage_data/load_stage_data.asm"
Func_84b7: ; 0x84b7
ld a, [wCurrentStage]
@@ -1791,7 +1757,7 @@ GameScreenFunction_StartBall: ; 0xd87f
ld [hHBlankRoutine], a
callba InitBallForStage
callba LoadStageCollisionAttributes
- callba Func_e6c2
+ callba LoadStageData
callba Func_ed5e
call ClearOAMBuffer
callba Func_84b7
@@ -3746,7 +3712,7 @@ FieldVerticalTransition: ; 0xe674
call ClearOAMBuffer
call Func_1129
call LoadStageCollisionAttributes
- call Func_e6c2
+ call LoadStageData
call Func_e5d
call Func_588
ld a, $e4
@@ -3757,7 +3723,8 @@ FieldVerticalTransition: ; 0xe674
ld [hOBP1], a
ret
-Func_e6c2: ; 0xe6c2
+LoadStageData: ; 0xe6c2
+; Loads all stage data, such as graphics, collision attributes, etc.
ld a, [wCurrentStage]
bit 0, a
ld a, $86
@@ -3779,7 +3746,7 @@ Func_e6c2: ; 0xe6c2
call LoadVideoData
xor a
ld [wd7f2], a
- callba Func_8471
+ callba _LoadStageData
ret
StageGfxPointers_GameBoy: ; 0xe6f7
@@ -8345,487 +8312,7 @@ Data_13685: ; 0x13685
SECTION "bank5", ROMX, BANK[$5]
-Func_14000: ; 0x14000
- call Func_14091
- call Func_159f4
- call Func_15450
- call Func_16859
- call Func_14ece
- call Func_14234
- call Func_16425
- call Func_142fc
- call Func_1404a
- ret
-
-Func_1401c: ; 0x1401c
- call Func_14091
- call Func_14377
- call Func_14135
- call Func_asm_1522d
- call Func_14282
- call Func_1414b
- call Func_14234
- call Func_14746
- call Func_14707
- call Func_140f9
- call Func_16878
- call Func_140e2
- call Func_16425
- call Func_142fc
- call Func_1404a
- ret
-
-Func_1404a: ; 0x1404a
- ld a, [wd57d]
- and a
- ret z
- ld a, [hGameBoyColorFlag]
- and a
- ret nz
- ld a, [wd580]
- and a
- ret z
- ld a, $f
- ld [wd581], a
- call Func_1762f
- ld hl, wTimerDigits
- ld a, $ff
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld hl, wTimerDigits
- ld a, [wTimerMinutes]
- and $f
- call LoadTimerDigitTiles
- ld a, [wTimerSeconds]
- swap a
- and $f
- call LoadTimerDigitTiles
- ld a, [wTimerSeconds]
- and $f
- call LoadTimerDigitTiles
- ld a, e
- srl a
- srl a
- ld d, $90 ; colon
- call LoadTimerDigitTiles
- ret
-
-Func_14091: ; 0x14091
- ld a, $ff
- ld [wd4d7], a
- ld [wd4db], a
- ld a, [wd4b4]
- ld [wd4c5], a
- ld a, [wd4b6]
- ld [wd4c6], a
- ld a, [wBallRotation]
- ld [wd4c7], a
- ld a, [wd503]
- and a
- ret z
- xor a
- ld [wd503], a
- ld a, [wd502]
- res 1, a
- ld [wd502], a
- and $1
- ld c, a
- ld a, [wStageCollisionState]
- and $fe
- or c
- ld [wStageCollisionState], a
- lb de, $00, $07
- call PlaySoundEffect
- ld a, [wCurrentStage]
- bit 0, a
- ret nz
- callba LoadStageCollisionAttributes
- call Func_159f4
- ret
-
-Func_140e2: ; 0x140e2
- ld a, $ff
- ld [wd60e], a
- ld [wd60f], a
- ld a, [wd60c]
- call Func_16f28
- ld a, [wd60d]
- add $14
- call Func_16f28
- ret
-
-Func_140f9: ; 0x140f9
- ld a, [wd4ef]
- and a
- jr z, .asm_1410c
- xor a
- ld a, $66
- ld [wc7e3], a
- ld a, $67
- ld [wc803], a
- ld a, $2
-.asm_1410c
- call Func_149d9
- ld a, [wLeftMapMoveCounter]
- call Func_149f5
- ld a, [wd4f1]
- and a
- jr z, .asm_14127
- ld a, $6a
- ld [wc7f0], a
- ld a, $6b
- ld [wc810], a
- ld a, $2
-.asm_14127
- add $3
- call Func_149d9
- ld a, [wRightMapMoveCounter]
- add $4
- call Func_149f5
- ret
-
-Func_14135: ; 0x14135
- ld bc, $0000
-.asm_14138
- push bc
- ld hl, wIndicatorStates
- add hl, bc
- ld a, [hl]
- res 7, a
- call Func_169cd
- pop bc
- inc c
- ld a, c
- cp $5
- jr nz, .asm_14138
- ret
-
-Func_1414b: ; 0x1414b
- ld a, [wInSpecialMode]
- and a
- ret z
- ld a, [wSpecialMode]
- cp $2
- ret z
- ld a, [wd5c6]
- and a
- jr nz, .asm_14165
- ld a, [wCapturingMon]
- and a
- jr nz, .asm_14165
- jp Func_14210
-
-.asm_14165
- callba Func_141f2
- callba Func_10362
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, Func_10301
- ld a, [wCapturingMon]
- and a
- ret z
- ld a, BANK(PikachuSaverGfx)
- ld hl, PikachuSaverGfx + $c0
- ld de, vTilesOB tile $7e
- ld bc, $0020
- call FarCopyData
- ld a, BANK(BallCaptureSmokeGfx)
- ld hl, BallCaptureSmokeGfx
- ld de, vTilesSH tile $10
- ld bc, $0180
- call FarCopyData
- ld a, [wBallType]
- cp GREAT_BALL
- jr nc, .notPokeball
- ld a, Bank(PinballPokeballShakeGfx)
- ld hl, PinballPokeballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-.notPokeball
- cp ULTRA_BALL
- jr nc, .notGreatball
- ld a, Bank(PinballGreatballShakeGfx)
- ld hl, PinballGreatballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-.notGreatball
- cp MASTER_BALL
- jr nc, .notUltraball
- ld a, Bank(PinballUltraballShakeGfx)
- ld hl, PinballUltraballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-.notUltraball
- ld a, Bank(PinballMasterballShakeGfx)
- ld hl, PinballMasterballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-Func_141f2: ; 0x141f2
- ld a, $80
- hlCoord 7, 4, vBGMap
- call Func_14209
- hlCoord 7, 5, vBGMap
- call Func_14209
- hlCoord 7, 6, vBGMap
- call Func_14209
- hlCoord 7, 7, vBGMap
- ; fall through
-
-Func_14209: ; 0x14209
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ret
-
-Func_14210: ; 0x14210
- ld hl, wd586
- ld b, $18
-.asm_14215
- ld a, [hli]
- xor $1
- ld [hli], a
- dec b
- jr nz, .asm_14215
- callba Func_10184
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, Func_102bc
- ret
-
-Func_14234: ; 0x14234
- ld a, [wInSpecialMode]
- and a
- ret z
- ld a, [wSpecialMode]
- cp $1
- ret nz
- ld a, [wd554]
- cp $3
- ret z
- ld a, [wCurrentStage]
- bit 0, a
- jr nz, .asm_1425c
- ld a, BANK(EvolutionTrinketsGfx)
- ld hl, EvolutionTrinketsGfx
- ld de, vTilesSH tile $10
- ld bc, $00e0
- call FarCopyData
- jr .asm_1426a
-
-.asm_1425c
- ld a, BANK(EvolutionTrinketsGfx)
- ld hl, EvolutionTrinketsGfx
- ld de, vTilesOB tile $20
- ld bc, $00e0
- call FarCopyData
-.asm_1426a
- ld a, [wd551]
- and a
- ret z
- ld a, [hGameBoyColorFlag]
- and a
- ret z
- ld a, BANK(PaletteData_dd188)
- ld hl, PaletteData_dd188
- ld de, $0070
- ld bc, $0010
- call Func_6fd
- ret
-
-Func_14282: ; 0x14282
- ld a, [wInSpecialMode]
- and a
- jr z, .asm_1429e
- ld a, [wSpecialMode]
- and a
- jr nz, .asm_14296
- ld a, [wNumMonHits]
- and a
- call nz, Func_142b3
- ret
-
-.asm_14296
- cp $1
- jr nz, .asm_1429e
- call Func_142c3
- ret
-
-.asm_1429e
- ld a, [wd624]
- call Func_174d4
- ld a, BANK(CaughtPokeballGfx)
- ld hl, CaughtPokeballGfx
- ld de, vTilesSH tile $2e
- ld bc, $0020
- call FarCopyData
- ret
-
-Func_142b3: ; 0x142b3
- push af
- callba Func_10611
- pop af
- dec a
- jr nz, Func_142b3
- ret
-
-Func_142c3: ; 0x142c3
- ld de, $0000
- ld a, [wd554]
- and a
- ret z
- ld b, a
-.asm_142cc
- ld a, [wCurrentEvolutionType]
- call Func_142d7
- inc de
- dec b
- jr nz, .asm_142cc
- ret
-
-Func_142d7: ; 0x142d7
- push bc
- push de
- dec a
- ld c, a
- ld b, $0
- swap c
- sla c
- ld hl, EvolutionProgressIconsGfx
- add hl, bc
- swap e
- sla e
- push hl
- ld hl, vTilesSH tile $2e
- add hl, de
- ld d, h
- ld e, l
- pop hl
- ld bc, $0020
- ld a, BANK(EvolutionProgressIconsGfx)
- call FarCopyData
- pop de
- pop bc
- ret
-
-Func_142fc: ; 0x142fc
- ld a, [wd4c8]
- and a
- jr nz, .asm_1430e
- callba LoadBallGfx
- jr .asm_14328
-
-.asm_1430e
- cp $1
- jr nz, .asm_1431e
- callba LoadMiniBallGfx
- jr .asm_14328
-
-.asm_1431e
- callba Func_dd62
-.asm_14328
- ld a, [hGameBoyColorFlag]
- and a
- ret z
- ld a, [wBallType]
- cp GREAT_BALL
- jr nc, .notPokeball
- ld a, BANK(PokeBallObjPalette)
- ld hl, PokeBallObjPalette
- ld de, $0040
- ld bc, $0008
- call Func_6fd
- ret
-
-.notPokeball
- cp ULTRA_BALL
- jr nc, .notGreatball
- ld a, BANK(GreatBallObjPalette)
- ld hl, GreatBallObjPalette
- ld de, $0040
- ld bc, $0008
- call Func_6fd
- ret
-
-.notGreatball
- cp MASTER_BALL
- jr nc, .notUltraball
- ld a, BANK(UltraBallObjPalette)
- ld hl, UltraBallObjPalette
- ld de, $0040
- ld bc, $0008
- call Func_6fd
- ret
-
-.notUltraball
- ld a, BANK(MasterBallObjPalette)
- ld hl, MasterBallObjPalette
- ld de, $0040
- ld bc, $0008
- call Func_6fd
- ret
-
-Func_14377: ; 0x14377
- ld a, [wInSpecialMode]
- and a
- jr nz, .asm_143b1
- ld a, [wd609]
- and a
- jr z, .asm_14393
- ld a, [wd498]
- add $15
- callba Func_30256
- ret
-
-.asm_14393
- ld a, [wd608]
- and a
- jr z, .asm_143a6
- ld a, $1a
- callba Func_30256
- ret
-
-.asm_143a6
- callba Func_30253
- ret
-
-.asm_143b1
- ld a, [wSpecialMode]
- cp $2
- ret nz
- ld a, [wd54d]
- cp $3
- jr nz, .asm_143c9
- callba Func_30253
- ret
-
-.asm_143c9
- ld a, [wd604]
- and a
- ld a, $14
- jr nz, .asm_143d6
- ld a, [wd55a]
- add $12
-.asm_143d6
- callba Func_30256
- ret
-
+INCLUDE "engine/main/load_stage_data/load_red_field.asm"
INCLUDE "engine/collision/red_stage_game_object_collision.asm"
Func_1460e: ; 0x1460e
@@ -18321,12 +17808,7 @@ SECTION "bank6", ROMX, BANK[$6]
INCLUDE "engine/main/stage_init/init_unused_stage.asm"
INCLUDE "engine/main/ball_init/ball_init_unused_stage.asm"
-
-DoNothing_1805f: ; 0x1805f
- ret
-
-DoNothing_18060: ; 0x18060
- ret
+INCLUDE "engine/main/load_stage_data/load_unused_stage.asm"
DoNothing_18061: ; 0x18061
ret
@@ -18353,18 +17835,7 @@ Func_18084: ; 0x18084
INCLUDE "engine/main/stage_init/init_gengar_bonus.asm"
INCLUDE "engine/main/ball_init/ball_init_gengar_bonus.asm"
-
-Func_1818b: ; 0x1818b
- callba Func_142fc
- call Func_2862
- call Func_18d72
- ld a, [wd7c1]
- callba Func_1404a
- and a
- ret z
- call Func_183db
- call Func_18d91
- ret
+INCLUDE "engine/main/load_stage_data/load_gengar_bonus.asm"
CheckGengarBonusStageGameObjectCollisions: ; 0x181b1
call CheckGengarBonusStageGastlyCollision
@@ -20866,16 +20337,7 @@ GengarBonusStageGengarGfxTable:
INCLUDE "engine/main/stage_init/init_mewtwo_bonus.asm"
INCLUDE "engine/main/ball_init/ball_init_mewtwo_bonus.asm"
-
-Func_19310: ; 0x19310
- callba Func_142fc
- call Func_2862
- callba Func_1404a
- ld a, [wd7c1]
- and a
- ret z
- call Func_194ac
- ret
+INCLUDE "engine/main/load_stage_data/load_mewtwo_bonus.asm"
CheckMewtwoBonusStageGameObjectCollisions: ; 0x19330
call Func_19414
@@ -21902,41 +21364,7 @@ OAMIds_199e6:
INCLUDE "engine/main/stage_init/init_diglett_bonus.asm"
INCLUDE "engine/main/ball_init/ball_init_diglett_bonus.asm"
-
-Func_19a76: ; 0x19a76
- callba Func_142fc
- call Func_2862
- ld a, [wd7c1]
- and a
- ret z
- call Func_19bbd
- call Func_19a96
- ld a, [wDugrioState]
- and a
- call nz, Func_1ac2c
- ret
-
-Func_19a96: ; 0x19a96
- ld hl, wDiglettStates
- ld bc, NUM_DIGLETTS << 8
-.asm_19a9c
- ld a, [hli]
- and a
- jr z, .asm_19aae
- push bc
- push hl
- push af
- call Func_19da8
- pop af
- cp $6
- call c, Func_19dcd
- pop hl
- pop bc
-.asm_19aae
- inc c
- dec b
- jr nz, .asm_19a9c
- ret
+INCLUDE "engine/main/load_stage_data/load_diglett_bonus.asm"
CheckDiglettBonusStageGameObjectCollisions: ; 0x19ab3
call CheckDiglettBonusStageDiglettHeadsCollision
@@ -22872,482 +22300,7 @@ SECTION "bank7", ROMX, BANK[$7]
INCLUDE "engine/main/stage_init/init_blue_field.asm"
INCLUDE "engine/main/ball_init/ball_init_blue_field.asm"
-
-Func_1c165: ; 0x1c165
- call asm_1e475
- call Func_1cb43
- call Func_1c3ee
- call Func_1e8f6
- callba Func_142fc
- ld a, $1
- ld [wd640], a
- call Func_1f18a
- callba Func_1404a
- call Func_1c203
- ret
-
-Func_1c191: ; 0x1c191
- call Func_1c1db
- call Func_1c4b6
- call Func_1c2cb
- call Func_1e627
- call Func_1c43c
- call Func_1c305
- call Func_1c3ee
- callba Func_14746
- callba Func_14707
- call Func_1c235
- call Func_1c21e
- call Func_1e8f6
- callba Func_142fc
- callba Func_1404a
- call Func_1c203
- ret
-
-Func_1c1db: ; 0x1c1db
- ld a, [wd641]
- cp $0
- ret z
- ld a, $1
- ld [wd640], a
- ld a, $0
- ld [wd641], a
- ld a, [wBlueStageForceFieldDirection]
- cp $2 ; down direction
- ret nz
- ld a, $0
- ld [wBlueStageForceFieldDirection], a
- ld a, $1 ; right direction
- ld [wd64a], a
- xor a
- ld [wd649], a
- ld [wd648], a
- ret
-
-Func_1c203: ; 0x1c203
- ld a, $ff
- ld [wd4d7], a
- ld [wd4db], a
- ld a, [wd4b4]
- ld [wd4c5], a
- ld a, [wd4b6]
- ld [wd4c6], a
- ld a, [wBallRotation]
- ld [wd4c7], a
- ret
-
-Func_1c21e: ; 0x1c21e
- ld a, $ff
- ld [wd60e], a
- ld [wd60f], a
- ld a, [wd60c]
- call Func_1d5f2
- ld a, [wd60d]
- add $14
- call Func_1d5f2
- ret
-
-Func_1c235: ; 0x1c235
- ld a, [wLeftMapMoveDiglettAnimationCounter]
- and a
- jr z, .asm_1c249
- ld a, $54
- ld [wc7e3], a
- ld a, $55
- ld [wc803], a
- ld a, $1
- jr .asm_1c24a
-
-.asm_1c249
- xor a
-.asm_1c24a
- call Func_1de4b
- ld a, [wLeftMapMoveCounter]
- call Func_1de6f
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1c267
- ld a, [wLeftMapMoveCounter]
- cp $0
- jr z, .asm_1c264
- ld b, $7
- add b
- jr .asm_1c269
-
-.asm_1c264
- xor a
- jr .asm_1c269
-
-.asm_1c267
- ld a, $8
-.asm_1c269
- call Func_1de6f
- ld a, [wRightMapMoveDiglettFrame]
- and a
- jr z, .asm_1c295
- ld a, $52
- ld [wc7f0], a
- ld a, $53
- ld [wc810], a
- ld a, [wd644]
- and a
- jr z, .asm_1c28a
- ld a, [wd55a]
- and a
- jr nz, .asm_1c2bd
- jr .asm_1c291
-
-.asm_1c28a
- ld a, [wRightMapMoveCounter]
- add $3
- jr .asm_1c297
-
-.asm_1c291
- ld a, $3
- jr .asm_1c297
-
-.asm_1c295
- ld a, $2
-.asm_1c297
- call Func_1de4b
- ld a, [wRightMapMoveCounter]
- add $4
- call Func_1de6f
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1c2b7
- ld a, [wRightMapMoveCounter]
- cp $0
- jr z, .asm_1c2b3
- ld b, $a
- add b
- jr .asm_1c2b9
-
-.asm_1c2b3
- ld a, $4
- jr .asm_1c2b9
-
-.asm_1c2b7
- ld a, $9
-.asm_1c2b9
- call Func_1de6f
- ret
-
-.asm_1c2bd
- ld a, $6
- call Func_1de4b
- ld a, [wRightMapMoveCounter]
- add $4
- call Func_1de6f
- ret
-
-Func_1c2cb: ; 0x1c2cb
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- ld bc, $0000
-.asm_1c2d4
- push bc
- ld hl, wIndicatorStates
- add hl, bc
- ld a, [hl]
- res 7, a
- call Func_1eb41
- pop bc
- inc c
- ld a, c
- cp $2
- jr nz, .asm_1c2d4
- ld bc, $0002
-.asm_1c2e9
- push bc
- ld hl, wIndicatorStates
- add hl, bc
- ld a, [hl]
- push af
- ld hl, wd648
- add hl, bc
- dec hl
- dec hl
- ld a, [hl]
- ld d, a
- pop af
- add d
- call Func_1eb41
- pop bc
- inc c
- ld a, c
- cp $5
- jr nz, .asm_1c2e9
- ret
-
-Func_1c305: ; 0x1c305
- ld a, [wInSpecialMode]
- and a
- ret z
- ld a, [wSpecialMode]
- cp $2
- ret z
- ld a, [wd5c6]
- and a
- jr nz, .asm_1c31f
- ld a, [wCapturingMon]
- and a
- jr nz, .asm_1c31f
- jp Func_1c3ca
-
-.asm_1c31f
- callba Func_1c3ac
- callba Func_10362
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, Func_10301
- ld a, [wCapturingMon]
- and a
- ret z
- ld a, BANK(PikachuSaverGfx)
- ld hl, PikachuSaverGfx + $c0
- ld de, vTilesOB tile $7e
- ld bc, $0020
- call FarCopyData
- ld a, BANK(StageSharedPikaBoltGfx)
- ld hl, BallCaptureSmokeGfx
- ld de, vTilesSH tile $10
- ld bc, $0180
- call FarCopyData
- ld a, [wBallType]
- cp GREAT_BALL
- jr nc, .notPokeball
- ld a, Bank(PinballPokeballShakeGfx)
- ld hl, PinballPokeballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-.notPokeball
- cp ULTRA_BALL
- jr nc, .notGreatball
- ld a, Bank(PinballGreatballShakeGfx)
- ld hl, PinballGreatballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-.notGreatball
- cp MASTER_BALL
- jr nc, .notUltraBall
- ld a, Bank(PinballUltraballShakeGfx)
- ld hl, PinballUltraballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-.notUltraBall
- ld a, Bank(PinballMasterballShakeGfx)
- ld hl, PinballMasterballShakeGfx
- ld de, vTilesOB tile $38
- ld bc, $0040
- call FarCopyData
- ret
-
-Func_1c3ac: ; 0x1c3ac
- ld a, $80
- hlCoord 7, 4, vBGMap
- call Func_1c3c3
- hlCoord 7, 5, vBGMap
- call Func_1c3c3
- hlCoord 7, 6, vBGMap
- call Func_1c3c3
- hlCoord 7, 7, vBGMap
- ; fall through
-
-Func_1c3c3: ; 0x1c3c3
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ret
-
-Func_1c3ca: ; 0x1c3ca
- ld hl, wd586
- ld b, $18
-.asm_1c3cf
- ld a, [hli]
- xor $1
- ld [hli], a
- dec b
- jr nz, .asm_1c3cf
- callba Func_10184
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, Func_102bc
- ret
-
-Func_1c3ee: ; 0x1c3ee
- ld a, [wInSpecialMode]
- and a
- ret z
- ld a, [wSpecialMode]
- cp $1
- ret nz
- ld a, [wd554]
- cp $3
- ret z
- ld a, [wCurrentStage]
- bit 0, a
- jr nz, .asm_1c416
- ld a, BANK(EvolutionTrinketsGfx)
- ld hl, EvolutionTrinketsGfx
- ld de, vTilesOB tile $60
- ld bc, $00e0
- call FarCopyData
- jr .asm_1c424
-
-.asm_1c416
- ld a, BANK(EvolutionTrinketsGfx)
- ld hl, EvolutionTrinketsGfx
- ld de, vTilesOB tile $20
- ld bc, $00e0
- call FarCopyData
-.asm_1c424
- ld a, [wd551]
- and a
- ret z
- ld a, [hGameBoyColorFlag]
- and a
- ret z
- ld a, BANK(PaletteData_dd188)
- ld hl, PaletteData_dd188
- ld de, $0070
- ld bc, $0010
- call Func_6fd
- ret
-
-Func_1c43c: ; 0x1c43c
- ld a, [wInSpecialMode]
- and a
- jr z, .asm_1c458
- ld a, [wSpecialMode]
- and a
- jr nz, .asm_1c450
- ld a, [wNumMonHits]
- and a
- call nz, Func_1c46d
- ret
-
-.asm_1c450
- cp $1
- jr nz, .asm_1c458
- call Func_1c47d
- ret
-
-.asm_1c458
- ld a, [wd624]
- call Func_1f265
- ld a, BANK(CaughtPokeballGfx)
- ld hl, CaughtPokeballGfx
- ld de, vTilesSH tile $2e
- ld bc, $0020
- call FarCopyData
- ret
-
-Func_1c46d: ; 0x1c46d
- push af
- callba Func_10611
- pop af
- dec a
- jr nz, Func_1c46d
- ret
-
-Func_1c47d: ; 0x1c47d
- ld de, $0000
- ld a, [wd554]
- and a
- ret z
- ld b, a
-.asm_1c486
- ld a, [wCurrentEvolutionType]
- call Func_1c491
- inc de
- dec b
- jr nz, .asm_1c486
- ret
-
-Func_1c491: ; 0x1c491
- push bc
- push de
- dec a
- ld c, a
- ld b, $0
- swap c
- sla c
- ld hl, EvolutionProgressIconsGfx
- add hl, bc
- swap e
- sla e
- push hl
- ld hl, vTilesSH tile $2e
- add hl, de
- ld d, h
- ld e, l
- pop hl
- ld bc, $0020
- ld a, BANK(EvolutionProgressIconsGfx)
- call FarCopyData
- pop de
- pop bc
- ret
-
-Func_1c4b6: ; 0x1c4b6
- ld a, [wInSpecialMode]
- and a
- jr nz, .asm_1c4f0
- ld a, [wd609]
- and a
- jr z, .asm_1c4d2
- ld a, [wd498]
- add $15
- callba Func_30256
- ret
-
-.asm_1c4d2
- ld a, [wd608]
- and a
- jr z, .asm_1c4e5
- ld a, $1a
- callba Func_30256
- ret
-
-.asm_1c4e5
- callba Func_30253
- ret
-
-.asm_1c4f0
- ld a, [wSpecialMode]
- cp $2
- ret nz
- ld a, [wd54d]
- cp $3
- jr nz, .asm_1c508
- callba Func_30253
- ret
-
-.asm_1c508
- ld a, [wd604]
- and a
- ld a, $14
- jr nz, .asm_1c515
- ld a, [wd55a]
- add $12
-.asm_1c515
- callba Func_30256
- ret
-
+INCLUDE "engine/main/load_stage_data/load_blue_field.asm"
INCLUDE "engine/collision/blue_stage_game_object_collision.asm"
Func_1c715: ; 0x1c715
@@ -33928,14 +32881,7 @@ SECTION "bank9", ROMX, BANK[$9]
INCLUDE "engine/main/stage_init/init_meowth_bonus.asm"
INCLUDE "engine/main/ball_init/ball_init_meowth_bonus.asm"
-
-Func_24128: ; 0x24128
- callba Func_142fc
- call Func_2862
- callba Func_24fa3
- call Func_24516
- callba Func_1404a
- ret
+INCLUDE "engine/main/load_stage_data/load_meowth_bonus.asm"
CheckMeowthBonusStageGameObjectCollisions: ; 0x2414d
call CheckMeowthBonusStageMeowthCollision
@@ -38055,14 +37001,7 @@ OAMIds_25a7a: ; 0x25a7a
INCLUDE "engine/main/stage_init/init_seel_bonus.asm"
INCLUDE "engine/main/ball_init/ball_init_seel_bonus.asm"
-
-Func_25b97: ; 0x25b97
- callba Func_142fc
- call Func_2862
- callba Func_262f4
- call Func_25d0e
- callba Func_1404a
- ret
+INCLUDE "engine/main/load_stage_data/load_seel_bonus.asm"
CheckSeelBonusStageGameObjectCollisions: ; 0x25bbc
call CheckSeelBonusStageSeelHeadCollisions