summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-07-02 17:29:36 -0500
committerMarcus Huderle <huderlem@gmail.com>2017-07-02 17:29:36 -0500
commit76dbb41a2f9616e06ac475425832481fa9fd48f9 (patch)
treee153b3f5f78c2a3765c4dbcd8cdb9d1aaf38b11f
parentd73a1f172e520865f8d34a1f2c2ba068e934eb11 (diff)
Move game object collision logic into separate files for each stage
-rwxr-xr-xengine/pinball_game.asm2
-rwxr-xr-xengine/pinball_game/object_collision/blue_stage_resolve_collision.asm8068
-rwxr-xr-xengine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm783
-rwxr-xr-xengine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm1445
-rwxr-xr-xengine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm3380
-rwxr-xr-xengine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm750
-rwxr-xr-xengine/pinball_game/object_collision/object_collision.asm51
-rwxr-xr-xengine/pinball_game/object_collision/red_stage_resolve_collision.asm8730
-rwxr-xr-xengine/pinball_game/object_collision/seel_bonus_resolve_collision.asm2807
-rwxr-xr-xhome.asm51
-rwxr-xr-xmain.asm25979
11 files changed, 26022 insertions, 26024 deletions
diff --git a/engine/pinball_game.asm b/engine/pinball_game.asm
index 08e821c..23c6490 100755
--- a/engine/pinball_game.asm
+++ b/engine/pinball_game.asm
@@ -89,7 +89,7 @@ GameScreenFunction_HandleBallPhysics: ; 0xd909
ld [wCollisionForceAngle], a
.noFlipperCollision
call CheckGameObjectCollisions
- call Func_281c ; not collision-related
+ call ResolveGameObjectCollisions
ld hl, wKeyConfigMenu
call IsKeyPressed
jr z, .didntPressMenuKey
diff --git a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm
new file mode 100755
index 0000000..056f0fe
--- /dev/null
+++ b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm
@@ -0,0 +1,8068 @@
+ResolveBlueFieldTopGameObjectCollisions: ; 0x1c715
+ call ResolveShellderCollision
+ call ResolveBlueStageSpinnerCollision
+ call ResolveBlueStagePinballUpgradeTriggersCollision
+ call HandleBlueStageBallTypeUpgradeCounter
+ call Func_1e66a
+ call ResolveBlueStageBoardTriggerCollision
+ call ResolveBlueStagePikachuCollision
+ call ResolveSlowpokeCollision
+ call ResolveCloysterCollision
+ call Func_1ea3b
+ call ResolvePsyduckPoliwagCollision
+ call ResolveBlueStageForceFieldCollision
+ call Func_1e9c0
+ call Func_1c8b6
+ call Func_1f18a
+ callba Func_146a9
+ call Func_1f27b
+ call Func_1df15
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+ResolveBlueFieldBottomGameObjectCollisions: ; 0x1c769
+ call Func_1ca4a
+ call Func_1ce40
+ call ResolvePsyduckPoliwagCollision
+ call Func_1ca85
+ call Func_1e4b8
+ call HandleBlueStageBallTypeUpgradeCounter
+ call Func_1e5c5
+ call Func_1c7d7
+ call ResolveBlueStagePikachuCollision
+ call Func_1ead4
+ call ResolveBlueStageBonusMultiplierCollision
+ call Func_1e757
+ call Func_1e9c0
+ call Func_1ea0a
+ call Func_1c8b6
+ callba Func_14733
+ callba Func_146a2
+ call Func_1f261
+ call Func_1de93
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+Func_1c7c7: ; 0x1c7c7
+ ld a, $0
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ ret
+
+Func_1c7d7: ; 0x1c7d7
+ ld a, [wPinballLaunchAlley]
+ and a
+ ret z
+ xor a
+ ld [wPinballLaunchAlley], a
+ ld a, [wd4de]
+ and a
+ jr z, .asm_1c810
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hl], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld a, $71
+ ld [wBallYVelocity], a
+ ld a, $fa
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ lb de, $00, $0a
+ call PlaySoundEffect
+.asm_1c810
+ ld a, $ff
+ ld [wPreviousTriggeredGameObject], a
+ ld a, [wd4de]
+ and a
+ ret nz
+ ld a, [wd4e0]
+ and a
+ jr nz, .asm_1c82c
+ call Func_1c839
+ ld a, $1
+ ld [wd4e0], a
+ ld [wd4de], a
+ ret
+
+.asm_1c82c
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ ret z
+ ld a, $1
+ ld [wd4de], a
+ ret
+
+Func_1c839: ; 0x1c839
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, LoadGreyBillboardPaletteData
+.showNextMap
+ ld a, [wInitialMapSelectionIndex]
+ inc a
+ cp $7 ; number of maps to choose from at the start of play
+ jr c, .gotMapId
+ xor a ; wrap around to 0
+.gotMapId
+ ld [wInitialMapSelectionIndex], a
+ ld c, a
+ ld b, $0
+ ld hl, BlueStageInitialMaps
+ add hl, bc
+ ld a, [hl]
+ ld [wCurrentMap], a
+ push af
+ lb de, $00, $48
+ call PlaySoundEffect
+ pop af
+ add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
+ callba LoadBillboardPicture
+ ld b, $20 ; number of frames to delay before the next map is shown
+.waitOnCurrentMap
+ push bc
+ callba Func_eeee
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ jr nz, .ballStartKeyPressed
+ pop bc
+ dec b
+ jr nz, .waitOnCurrentMap
+ jr .showNextMap
+
+.ballStartKeyPressed
+ pop bc
+ callba Func_30253
+ ld bc, StartFromMapText
+ callba Func_3118f
+ ld a, [wCurrentMap]
+ ld [wd4e3], a
+ xor a
+ ld [wd4e2], a
+ ret
+
+BlueStageInitialMaps: ; 0x1c8af
+ db VIRIDIAN_CITY
+ db VIRIDIAN_FOREST
+ db MT_MOON
+ db CERULEAN_CITY
+ db VERMILION_STREETS
+ db ROCK_MOUNTAIN
+ db CELADON_CITY
+
+Func_1c8b6: ; 0x1c8b6
+ ld a, [wd64c]
+ inc a
+ cp $3c
+ jr z, .asm_1c8c2
+ ld [wd64c], a
+ ret
+
+.asm_1c8c2
+ xor a
+ ld [wd64c], a
+ ld hl, wd64d
+ inc [hl]
+ ld a, [hl]
+ cp $5
+ ret nz
+ ld a, [wd644]
+ and a
+ jr nz, .asm_1c8e1
+ ld a, [wd643]
+ and a
+ jr nz, .asm_1c8e5
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr nc, .asm_1c8e5
+.asm_1c8e1
+ xor a
+ ld [wd64b], a
+.asm_1c8e5
+ ld a, [wd644]
+ and a
+ jr nz, .asm_1c8f8
+ ld a, [wd643]
+ and a
+ jr nz, .asm_1c8fc
+ ld a, [wLeftAlleyCount]
+ cp $3
+ jr z, .asm_1c8fc
+.asm_1c8f8
+ xor a
+ ld [wd64b], a
+.asm_1c8fc
+ xor a
+ ld [wd64d], a
+ xor a
+ ld [wd64a], a
+ ld [wd649], a
+ ld [wd648], a
+ ld a, [wBlueStageForceFieldDirection]
+ cp $1 ; right direction
+ jr z, .asm_1c97f
+ cp $3 ; left direction
+ jr z, .asm_1c97f
+.asm_1c915
+ ld a, [wd644]
+ cp $0
+ jr z, .asm_1c925
+ ld a, [wd55a]
+ cp $0
+ jr nz, .asm_1c933
+ jr .asm_1c947
+
+.asm_1c925
+ ld a, [wd643]
+ cp $0
+ jr nz, .asm_1c933
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr c, .asm_1c947
+.asm_1c933
+ ld a, [wd64b]
+ cp $1
+ jr z, .asm_1c947
+ ld a, $1 ; right direction
+ ld [wBlueStageForceFieldDirection], a
+ ld [wd64b], a
+ ld [wd640], a
+ jr .asm_1c99e
+
+.asm_1c947
+ ld a, [wd644]
+ cp $0
+ jr z, .asm_1c955
+ ld a, [wd55a]
+ cp $0
+ jr z, .asm_1c969
+.asm_1c955
+ ld a, [wd643]
+ cp $0
+ jr nz, .asm_1c969
+ ld a, [wLeftAlleyCount]
+ cp $3
+ jr nz, .asm_1c97f
+ ld a, [wInSpecialMode]
+ and a
+ jr nz, .asm_1c97f
+.asm_1c969
+ ld a, [wd64b]
+ cp $3
+ jr z, .asm_1c915
+ ld a, $3 ; left direction
+ ld [wBlueStageForceFieldDirection], a
+ ld [wd64b], a
+ ld a, $1
+ ld [wd640], a
+ jr .asm_1c99e
+
+.asm_1c97f
+ ld a, [wd641]
+ and a
+ jr nz, .asm_1c993
+ xor a
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ld [wd64a], a
+ jr .asm_1c99e
+
+.asm_1c993
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ret
+
+.asm_1c99e
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jr nz, .asm_1c9ac
+ ld a, $1
+ ld [wd64a], a
+ jr .asm_1c9c0
+
+.asm_1c9ac
+ cp $1
+ jr nz, .asm_1c9b7
+ ld a, $1
+ ld [wd649], a
+ jr .asm_1c9c0
+
+.asm_1c9b7
+ cp $3
+ jr nz, .asm_1c9c0
+ ld a, $1
+ ld [wd648], a
+.asm_1c9c0
+ ret
+
+ResolveShellderCollision: ; 0x1c9c1
+ ld a, [wWhichShellder]
+ and a
+ jr z, .noCollision
+ xor a
+ ld [wWhichShellder], a
+ call Func_1ca29
+ ld a, [wd641]
+ and a
+ jr nz, .asm_1c9f2
+ ld a, $1
+ ld [wd641], a
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jr nz, .asm_1c9f2
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ld a, $3
+ ld [wd64c], a
+ ld [wd64d], a
+.asm_1c9f2
+ ld a, $10
+ ld [wd4d6], a
+ ld a, [wWhichShellderId]
+ sub $3
+ ld [wd4d7], a
+ ld a, $4
+ callba Func_10000
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ret
+
+.noCollision
+ ld a, [wd4d6]
+ and a
+ ret z
+ dec a
+ ld [wd4d6], a
+ ret nz
+ ld a, $ff
+ ld [wd4d7], a
+ ret
+
+Func_1ca29: ; 0x1ca29
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $0e
+ call PlaySoundEffect
+ ret
+
+Func_1ca4a: ; 1ca4a
+ ld a, [wWildMonCollision]
+ and a
+ ret z
+ xor a
+ ld [wWildMonCollision], a
+ ld a, $1
+ ld [wBallHitWildMon], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ret
+
+ResolveBlueStageSpinnerCollision: ; 0x1ca5f
+ ld a, [wSpinnerCollision]
+ and a
+ jr z, Func_1ca85
+ xor a
+ ld [wSpinnerCollision], a
+ ld a, [wBallYVelocity]
+ ld c, a
+ ld a, [wBallYVelocity + 1]
+ ld b, a
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld a, $c
+ callba Func_10000
+ ; fall through
+
+Func_1ca85: ; 0x1ca85
+ ld hl, wd50b
+ ld a, [hli]
+ or [hl]
+ ret z
+ ld a, [wd50b]
+ ld c, a
+ ld a, [wd50c]
+ ld b, a
+ bit 7, b
+ jr nz, .asm_1caa3
+ ld a, c
+ sub $7
+ ld c, a
+ ld a, b
+ sbc $0
+ ld b, a
+ jr nc, .asm_1cab0
+ jr .asm_1caad
+
+.asm_1caa3
+ ld a, c
+ add $7
+ ld c, a
+ ld a, b
+ adc $0
+ ld b, a
+ jr nc, .asm_1cab0
+.asm_1caad
+ ld bc, $0000
+.asm_1cab0
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld hl, wd50b
+ ld a, [wd509]
+ add [hl]
+ ld [wd509], a
+ inc hl
+ ld a, [wd50a]
+ adc [hl]
+ bit 7, a
+ ld c, $0
+ jr z, .asm_1cad3
+ add $18
+ ld c, $1
+ jr .asm_1cadb
+
+.asm_1cad3
+ cp $18
+ jr c, .asm_1cadb
+ sub $18
+ ld c, $1
+.asm_1cadb
+ ld [wd50a], a
+ ld a, c
+ and a
+ ret z
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd62d
+ call Func_e4a
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_1caff
+ call Func_1cb1c
+ ret
+
+.asm_1caff
+ inc a
+ ld [wPikachuSaverCharge], a
+ call Func_1cb1c
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_1cb12
+ ld a, $64
+ ld [wd51e], a
+.asm_1cb12
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret nz
+ call Func_1cb43
+ ret
+
+Func_1cb1c: ; 0x1cb1c
+ ld a, [wd51e]
+ and a
+ ret nz
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ ld b, $0
+ ld hl, SoundEffectIds_1cb33
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ call PlaySoundEffect
+ ret
+
+SoundEffectIds_1cb33:
+ db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
+
+Func_1cb43: ; 0x1cb43
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ sla c
+ ld b, $0
+ ld hl, TileDataPointers_1cb60
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1cb56
+ ld hl, TileDataPointers_1cd10
+.asm_1cb56
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1cb60)
+ call Func_10aa
+ ret
+
+TileDataPointers_1cb60:
+ dw TileData_1cb80
+ dw TileData_1cb85
+ dw TileData_1cb8a
+ dw TileData_1cb8f
+ dw TileData_1cb94
+ dw TileData_1cb99
+ dw TileData_1cb9e
+ dw TileData_1cba3
+ dw TileData_1cba8
+ dw TileData_1cbad
+ dw TileData_1cbb2
+ dw TileData_1cbb7
+ dw TileData_1cbbc
+ dw TileData_1cbc1
+ dw TileData_1cbc6
+ dw TileData_1cbcb
+
+TileData_1cb80: ; 0x1cb80
+ db $02
+ dw TileData_1cbd0
+ dw TileData_1cbda
+
+TileData_1cb85: ; 0x1cb85
+ db $02
+ dw TileData_1cbe4
+ dw TileData_1cbee
+
+TileData_1cb8a: ; 0x1cb8a
+ db $02
+ dw TileData_1cbf8
+ dw TileData_1cc02
+
+TileData_1cb8f: ; 0x1cb8f
+ db $02
+ dw TileData_1cc0c
+ dw TileData_1cc16
+
+TileData_1cb94: ; 0x1cb94
+ db $02
+ dw TileData_1cc20
+ dw TileData_1cc2a
+
+TileData_1cb99: ; 0x1cb99
+ db $02
+ dw TileData_1cc34
+ dw TileData_1cc3e
+
+TileData_1cb9e: ; 0x1cb9e
+ db $02
+ dw TileData_1cc48
+ dw TileData_1cc52
+
+TileData_1cba3: ; 0x1cba3
+ db $02
+ dw TileData_1cc5c
+ dw TileData_1cc66
+
+TileData_1cba8: ; 0x1cba8
+ db $02
+ dw TileData_1cc70
+ dw TileData_1cc7a
+
+TileData_1cbad: ; 0x1cbad
+ db $02
+ dw TileData_1cc84
+ dw TileData_1cc8e
+
+TileData_1cbb2: ; 0x1cbb2
+ db $02
+ dw TileData_1cc98
+ dw TileData_1cca2
+
+TileData_1cbb7: ; 0x1cbb7
+ db $02
+ dw TileData_1ccac
+ dw TileData_1ccb6
+
+TileData_1cbbc: ; 0x1cbbc
+ db $02
+ dw TileData_1ccc0
+ dw TileData_1ccca
+
+TileData_1cbc1: ; 0x1cbc1
+ db $02
+ dw TileData_1ccd4
+ dw TileData_1ccde
+
+TileData_1cbc6: ; 0x1cbc6
+ db $02
+ dw TileData_1cce8
+ dw TileData_1ccf2
+
+TileData_1cbcb: ; 0x1cbcb
+ db $02
+ dw TileData_1ccfc
+ dw TileData_1cd06
+
+TileData_1cbd0: ; 0xcbd0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageBlueFieldTopBaseGameBoyGfx + $c20
+ db Bank(StageBlueFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_1cbda: ; 0xcbda
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageBlueFieldTopBaseGameBoyGfx + $c40
+ db Bank(StageBlueFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_1cbe4: ; 0xcbe4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1800
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cbee: ; 0xcbee
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1820
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cbf8: ; 0xcbf8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1840
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc02: ; 0xcc02
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1860
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc0c: ; 0xcc0c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1880
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc16: ; 0xcc16
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc20: ; 0xcc20
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc2a: ; 0xcc2a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc34: ; 0xcc34
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1900
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc3e: ; 0xcc3e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1920
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc48: ; 0xcc48
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1940
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc52: ; 0xcc52
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1960
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc5c: ; 0xcc5c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1980
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc66: ; 0xcc66
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc70: ; 0xcc70
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc7a: ; 0xcc7a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc84: ; 0xcc84
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc8e: ; 0xcc8e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc98: ; 0xcc98
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cca2: ; 0xcca2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccac: ; 0xccac
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccb6: ; 0xccb6
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccc0: ; 0xccc0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccca: ; 0xccca
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccd4: ; 0xccd4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccde: ; 0xccde
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cce8: ; 0xcce8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccf2: ; 0xccf2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccfc: ; 0xccfc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cd06: ; 0xcd06
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileDataPointers_1cd10:
+ dw TileData_1cd30
+ dw TileData_1cd33
+ dw TileData_1cd36
+ dw TileData_1cd39
+ dw TileData_1cd3c
+ dw TileData_1cd3f
+ dw TileData_1cd42
+ dw TileData_1cd45
+ dw TileData_1cd48
+ dw TileData_1cd4b
+ dw TileData_1cd4e
+ dw TileData_1cd51
+ dw TileData_1cd54
+ dw TileData_1cd57
+ dw TileData_1cd5a
+ dw TileData_1cd5d
+
+TileData_1cd30: ; 0x1cd30
+ db $01
+ dw TileData_1cd60
+
+TileData_1cd33: ; 0x1cd33
+ db $01
+ dw TileData_1cd6e
+
+TileData_1cd36: ; 0x1cd36
+ db $01
+ dw TileData_1cd7c
+
+TileData_1cd39: ; 0x1cd39
+ db $01
+ dw TileData_1cd8a
+
+TileData_1cd3c: ; 0x1cd3c
+ db $01
+ dw TileData_1cd98
+
+TileData_1cd3f: ; 0x1cd3f
+ db $01
+ dw TileData_1cda6
+
+TileData_1cd42: ; 0x1cd42
+ db $01
+ dw TileData_1cdb4
+
+TileData_1cd45: ; 0x1cd45
+ db $01
+ dw TileData_1cdc2
+
+TileData_1cd48: ; 0x1cd48
+ db $01
+ dw TileData_1cdd0
+
+TileData_1cd4b: ; 0x1cd4b
+ db $01
+ dw TileData_1cdde
+
+TileData_1cd4e: ; 0x1cd4e
+ db $01
+ dw TileData_1cdec
+
+TileData_1cd51: ; 0x1cd51
+ db $01
+ dw TileData_1cdfa
+
+TileData_1cd54: ; 0x1cd54
+ db $01
+ dw TileData_1ce08
+
+TileData_1cd57: ; 0x1cd57
+ db $01
+ dw TileData_1ce16
+
+TileData_1cd5a: ; 0x1cd5a
+ db $01
+ dw TileData_1ce24
+
+TileData_1cd5d: ; 0x1cd5d
+ db $01
+ dw TileData_1ce32
+
+TileData_1cd60: ; 0x1cd60
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $4A, $4B
+
+ db $00 ; terminator
+
+TileData_1cd6e: ; 0x1cd6e
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $4C, $4D
+
+ db $00 ; terminator
+
+TileData_1cd7c: ; 0x1cd7c
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $4E, $4F
+
+ db $00 ; terminator
+
+TileData_1cd8a: ; 0x1cd8a
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $50, $51
+
+ db $00 ; terminator
+
+TileData_1cd98: ; 0x1cd98
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $52, $53
+
+ db $00 ; terminator
+
+TileData_1cda6: ; 0x1cda6
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $54, $55
+
+ db $00 ; terminator
+
+TileData_1cdb4: ; 0x1cdb4
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $56, $57
+
+ db $00 ; terminator
+
+TileData_1cdc2: ; 0x1cdc2
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdd0: ; 0x1cdd0
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdde: ; 0x1cdde
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdec: ; 0x1cdec
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $5E, $5F
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdfa: ; 0x1cdfa
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $60, $61
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce08: ; 0x1ce08
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $62, $63
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce16: ; 0x1ce16
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $64, $65
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce24: ; 0x1ce24
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $66, $67
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce32: ; 0x1ce32
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $68, $69
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $6A, $6B
+
+ db $00 ; terminator
+
+Func_1ce40: ; 1ce40
+ ld a, [wWhichBumper]
+ and a
+ jr z, .asm_1ce53
+ call Func_1ce72
+ call Func_1ce60
+ xor a
+ ld [wWhichBumper], a
+ call Func_1ce94
+.asm_1ce53
+ ld a, [wd4da]
+ and a
+ ret z
+ dec a
+ ld [wd4da], a
+ call z, Func_1ce72
+ ret
+
+Func_1ce60: ; 0x1ce60
+ ld a, $10
+ ld [wd4da], a
+ ld a, [wWhichBumperId]
+ sub $1
+ ld [wd4db], a
+ sla a
+ inc a
+ jr asm_1ce7a
+
+Func_1ce72: ; 1ce72
+ ld a, [wd4db]
+ cp $ff
+ ret z
+ sla a
+asm_1ce7a: ; 0x1ce7a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1ceca
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1ce8a
+ ld hl, TileDataPointers_1cf3a
+.asm_1ce8a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1ceca)
+ call Func_10aa
+ ret
+
+Func_1ce94: ; 0x1ce94
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wWhichBumperId]
+ sub $1
+ ld c, a
+ ld b, $0
+ ld hl, Data_1cec8
+ add hl, bc
+ ld a, [wCollisionForceAngle]
+ add [hl]
+ ld [wCollisionForceAngle], a
+ lb de, $00, $0b
+ call PlaySoundEffect
+ ret
+
+Data_1cec8:
+ db -8, 8
+
+TileDataPointers_1ceca:
+ dw TileData_1ced2
+ dw TileData_1ced5
+ dw TileData_1ced8
+ dw TileData_1cedb
+
+TileData_1ced2: ; 0x1ced2
+ db $01
+ dw TileData_1cede
+
+TileData_1ced5: ; 0x1ced5
+ db $01
+ dw TileData_1cef5
+
+TileData_1ced8: ; 0x1ced8
+ db $01
+ dw TileData_1cf0c
+
+TileData_1cedb: ; 0x1cedb
+ db $01
+ dw TileData_1cf23
+
+TileData_1cede: ; 0x1cede
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $61
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $62, $63
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $64, $65
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $66, $67
+
+ db $00 ; number of tiles
+
+TileData_1cef5: ; 0x1cef5
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $68
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $69, $6A
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $6B, $6C
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $6D, $6E
+
+ db $00 ; number of tiles
+
+TileData_1cf0c: ; 0x1cf0c
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $6F
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $70, $71
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $72, $73
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $74, $75
+
+ db $00 ; number of tiles
+
+TileData_1cf23: ; 0x1cf23
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $76
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $77, $78
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $79, $7A
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $7B, $7C
+
+ db $00 ; number of tiles
+
+TileDataPointers_1cf3a:
+ dw TileData_1cf42
+ dw TileData_1cf45
+ dw TileData_1cf48
+ dw TileData_1cf4b
+
+TileData_1cf42: ; 0x1cf42
+ db $01
+ dw TileData_1cf4e
+
+TileData_1cf45: ; 0x1cf45
+ db $01
+ dw TileData_1cf65
+
+TileData_1cf48: ; 0x1cf48
+ db $01
+ dw TileData_1cf7c
+
+TileData_1cf4b: ; 0x1cf4b
+ db $01
+ dw TileData_1cf93
+
+TileData_1cf4e: ; 0x1cf4e
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $39
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $3A, $3B
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $3C, $3D
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $3E, $3F
+
+ db $00 ; terminator
+
+TileData_1cf65: ; 0x1cf65
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $40
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $41, $42
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $43, $44
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $45, $46
+
+ db $00 ; terminator
+
+TileData_1cf7c: ; 0x1cf7c
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $39
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $3B, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $3D, $3C
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $3F, $3E
+
+ db $00 ; terminator
+
+TileData_1cf93: ; 0x1cf93
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $40
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $42, $41
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $44, $43
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $46, $45
+
+ db $00 ; terminator
+
+ResolveBlueStageBoardTriggerCollision: ; 0x1cfaa
+ ld a, [wWhichBoardTrigger]
+ and a
+ ret z
+ xor a
+ ld [wWhichBoardTrigger], a
+ ld bc, FivePoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wStageCollisionState]
+ cp $0
+ jr nz, .asm_1cfe5
+ ld a, $1
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ ld a, $1
+ ld [wd580], a
+ callba Func_1404a
+.asm_1cfe5
+ ld a, [wWhichBoardTriggerId]
+ sub $7
+ ld c, a
+ ld b, $0
+ ld hl, wd521
+ add hl, bc
+ ld [hl], $1
+ ld a, [wd521]
+ and a
+ call nz, Func_1d010
+ ld a, [wd522]
+ and a
+ call nz, Func_1d047
+ ld a, [wd523]
+ and a
+ call nz, HandleLeftAlleyTriggerBlueField
+ ld a, [wd524]
+ and a
+ call nz, HandleRightAlleyTriggerBlueField
+ ret
+
+Func_1d010: ; 0x1d010
+ xor a
+ ld [wd521], a
+ ld a, [wLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ callba Func_10000
+ ret c
+ ld a, [wLeftAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wLeftAlleyCount], a
+ cp $3
+ jr z, .asm_1d03e
+ set 7, a
+ ld [wIndicatorStates], a
+ ret
+
+.asm_1d03e
+ ld [wIndicatorStates], a
+ ld a, $80
+ ld [wIndicatorStates + 2], a
+ ret
+
+Func_1d047: ; 0x1d047
+ xor a
+ ld [wd522], a
+ ld a, [wRightAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld a, $2
+ callba Func_10000
+ ret c
+ ld a, [wRightAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wRightAlleyCount], a
+ cp $3
+ jr z, .asm_1d071
+ set 7, a
+.asm_1d071
+ ld [wIndicatorStates + 1], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ ret c
+ ld a, $80
+ ld [wIndicatorStates + 3], a
+ ret
+
+HandleLeftAlleyTriggerBlueField: ; 0x1d080
+; Ball passed over the left alley trigger point in the Blue Field.
+ xor a
+ ld [wd523], a
+ ld [wRightAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wLeftAlleyTrigger], a
+ ret c
+ ret
+
+HandleRightAlleyTriggerBlueField: ; 0x1d091
+; Ball passed over the right alley trigger point in the Blue Field.
+ xor a
+ ld [wd524], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wRightAlleyTrigger], a
+ ret
+
+ResolveBlueStagePikachuCollision: ; 0x1d0a1
+ ld a, [wWhichPikachu]
+ and a
+ jr z, .asm_1d110
+ xor a
+ ld [wWhichPikachu], a
+ ld a, [wd51c]
+ and a
+ jr nz, .asm_1d110
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_1d0c9
+ ld a, [wWhichPikachuId]
+ sub $d
+ ld hl, wd518
+ cp [hl]
+ jr nz, .asm_1d110
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_1d0fc
+.asm_1d0c9
+ ld hl, PikachuSaverAnimationDataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_1d0dc
+ xor a
+ ld [wPikachuSaverCharge], a
+.asm_1d0dc
+ ld a, $1
+ ld [wd51c], a
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld [wd549], a
+ call FillBottomMessageBufferWithBlackTile
+ jr .asm_1d110
+
+.asm_1d0fc
+ ld hl, PikachuSaverAnimation2DataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $2
+ ld [wd51c], a
+ lb de, $00, $3b
+ call PlaySoundEffect
+.asm_1d110
+ ld a, [wd51c]
+ and a
+ call z, Func_1d1fb
+ call Func_1d133
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ ret nz
+ ld a, [wd51e]
+ and a
+ ret z
+ dec a
+ ld [wd51e], a
+ cp $5a
+ ret nz
+ lb de, $0f, $22
+ call PlaySoundEffect
+ ret
+
+Func_1d133: ; 0x1d133
+ ld a, [wd51c]
+ cp $1
+ jr nz, .asm_1d1ae
+ ld hl, PikachuSaverAnimationDataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_1d18c
+ xor a
+ ld [wd85d], a
+ call Func_310a
+ rst AdvanceFrame
+ ld a, $1
+ callba PlayPikachuSoundClip
+ ld a, $1
+ ld [wd85d], a
+ ld a, $ff
+ ld [wd803], a
+ ld a, $60
+ ld [wd804], a
+ ld hl, wd62e
+ call Func_e4a
+ jr nc, .asm_1d185
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1d185
+ lb de, $16, $10
+ call PlaySoundEffect
+ ret
+
+.asm_1d18c
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $11
+ ret nz
+ ld a, $fc
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_1d1ae
+ cp $2
+ jr nz, .asm_1d1c7
+ ld hl, PikachuSaverAnimation2DataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ ret nz
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_1d1c7
+ ld a, [hNumFramesDropped]
+ swap a
+ and $1
+ ld [wPikachuSaverAnimationFrame], a
+ ret
+
+PikachuSaverAnimationDataRedStage: ; 0x1d1d1
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $05, $03
+ db $05, $02
+ db $05, $04
+ db $05, $05
+ db $05, $02
+ db $06, $06
+ db $06, $07
+ db $06, $08
+ db $06, $02
+ db $06, $05
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $01, $00
+ db $00
+
+PikachuSaverAnimation2DataRedStage: ; 0x1d1f6
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $01, $00
+ db $00
+
+Func_1d1fb: ; 0x1d1fb
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed2
+ jr z, .asm_1d209
+ ld hl, wd518
+ ld [hl], $0
+ ret
+
+.asm_1d209
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed2
+ ret z
+ ld hl, wd518
+ ld [hl], $1
+ ret
+
+ResolveSlowpokeCollision: ; 0x1d216
+ ld a, [wSlowpokeCollision]
+ and a
+ jr z, .asm_1d253
+ xor a
+ ld [wSlowpokeCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $05
+ call PlaySoundEffect
+ ld hl, SlowpokeCollisionAnimationData ; 0x1d312
+ ld de, wd632
+ call CopyHLToDE
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ xor a
+ ld [wd549], a
+.asm_1d253
+ ld hl, SlowpokeCollisionAnimationData ; 0x1d312
+ ld de, wd632
+ call UpdateAnimation
+ push af
+ ld a, [wd632]
+ and a
+ jr nz, .asm_1d271
+ ld a, $19
+ ld [wd632], a
+ xor a
+ ld [wd633], a
+ ld a, $6
+ ld [wd634], a
+.asm_1d271
+ pop af
+ ret nc
+ ld a, [wd634]
+ cp $1
+ jr nz, .asm_1d2b6
+ xor a
+ ld [wd548], a
+ ld a, [wLeftAlleyCount]
+ cp $3
+ jr nz, .asm_1d299
+ callba Func_10ab3
+ ld a, [wd643]
+ and a
+ ret z
+ ld a, $1
+ ld [wd642], a
+.asm_1d299
+ ld hl, wd63a
+ call Func_e4a
+ ld hl, wd62a
+ call Func_e4a
+ ret nc
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+ ret
+
+.asm_1d2b6
+ ld a, [wd634]
+ cp $4
+ jr nz, .asm_1d2c3
+ ld a, $1
+ ld [wd548], a
+ ret
+
+.asm_1d2c3
+ ld a, [wd634]
+ cp $5
+ ret nz
+ ld a, $1
+ ld [wd549], a
+ ld a, $b0
+ ld [wBallXVelocity], a
+ ld a, $0
+ ld [wBallXVelocity + 1], a
+ xor a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ld a, [wd642]
+ cp $0
+ jr nz, .asm_1d2f8
+ ld a, $f
+ callba Func_10000
+.asm_1d2f8
+ xor a
+ ld [wd642], a
+ ld [wd64c], a
+ ld [wd64d], a
+ ld a, $1
+ ld [wd641], a
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ret
+
+SlowpokeCollisionAnimationData: ; 0x1d312
+; Each entry is [OAM id][duration]
+ db $08, $01
+ db $06, $02
+ db $06, $02
+ db $08, $01
+ db $01, $00
+ db $29, $00
+ db $28, $01
+ db $2A, $00
+ db $27, $01
+ db $29, $00
+ db $28, $01
+ db $2B, $00
+ db $28, $01
+ db $00
+
+ResolveCloysterCollision: ; 0x1d32d
+ ld a, [wCloysterCollision]
+ and a
+ jr z, .asm_1d36a
+ xor a
+ ld [wCloysterCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $05
+ call PlaySoundEffect
+ ld hl, CloysterCollisionAnimationData
+ ld de, wd637
+ call CopyHLToDE
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ xor a
+ ld [wd549], a
+.asm_1d36a
+ ld hl, CloysterCollisionAnimationData
+ ld de, wd637
+ call UpdateAnimation
+ push af
+ ld a, [wd637]
+ and a
+ jr nz, .asm_1d388
+ ld a, $19
+ ld [wd637], a
+ xor a
+ ld [wd638], a
+ ld a, $6
+ ld [wd639], a
+.asm_1d388
+ pop af
+ ret nc
+ ld a, [wd639]
+ cp $1
+ jr nz, .asm_1d3cb
+ xor a
+ ld [wd548], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr c, .noCatchEmMode
+ ld a, $8
+ jr nz, .asm_1d3a1
+ xor a
+.asm_1d3a1
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+.noCatchEmMode
+ ld hl, wd63b
+ call Func_e4a
+ ld hl, wd62a
+ call Func_e4a
+ ret nc
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+ ret
+
+.asm_1d3cb
+ ld a, [wd639]
+ cp $4
+ jr nz, .asm_1d3d8
+ ld a, $1
+ ld [wd548], a
+ ret
+
+.asm_1d3d8
+ ld a, [wd639]
+ cp $5
+ ret nz
+ ld a, $1
+ ld [wd549], a
+ ld a, $4f
+ ld [wBallXVelocity], a
+ ld a, $ff
+ ld [wBallXVelocity + 1], a
+ xor a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ld a, $e
+ callba Func_10000
+ xor a
+ ld [wd64c], a
+ ld [wd64d], a
+ ld a, $1
+ ld [wd641], a
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ret
+
+CloysterCollisionAnimationData: ; 0x1d41d
+; Each entry is [OAM id][duration]
+ db $08, $01
+ db $06, $02
+ db $06, $02
+ db $08, $01
+ db $01, $00
+ db $29, $00
+ db $28, $01
+ db $2A, $00
+ db $27, $01
+ db $29, $00
+ db $28, $01
+ db $2B, $00
+ db $28, $01
+ db 00 ; terminator
+
+ResolveBlueStageBonusMultiplierCollision: ; 0x1d438
+ call Func_1d692
+ ld a, [wWhichBonusMultiplierRailing]
+ and a
+ jp z, Func_1d51b
+ xor a
+ ld [wWhichBonusMultiplierRailing], a
+ lb de, $00, $0d
+ call PlaySoundEffect
+ ld a, [wWhichBonusMultiplierRailingId]
+ sub $f
+ jr nz, .asm_1d48e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d45c
+ ld a, $1f
+ jr .asm_1d45e
+
+.asm_1d45c
+ ld a, $29
+.asm_1d45e
+ call Func_1d5f2
+ ld a, $3c
+ ld [wd647], a
+ ld a, $9
+ callba Func_10000
+ ld a, [wd610]
+ cp $3
+ jp nz, asm_1d4fa
+ ld a, $1
+ ld [wd610], a
+ ld a, $3
+ ld [wd611], a
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ jr asm_1d4fa
+
+.asm_1d48e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d497
+ ld a, $21
+ jr .asm_1d499
+
+.asm_1d497
+ ld a, $2b
+.asm_1d499
+ call Func_1d5f2
+ ld a, $1e
+ ld [wd647], a
+ ld a, $a
+ callba Func_10000
+ ld a, [wd611]
+ cp $3
+ jr nz, asm_1d4fa
+ ld a, $1
+ ld [wd610], a
+ ld a, $1
+ ld [wd611], a
+ ld a, $80
+ ld [wd612], a
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ ld a, [wd482]
+ inc a
+ cp 100
+ jr c, .asm_1d4d5
+ ld a, 99
+.asm_1d4d5
+ ld [wd482], a
+ jr nc, .asm_1d4e9
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+.asm_1d4e9
+ ld a, [wd60c]
+ ld [wd614], a
+ ld a, [wd60d]
+ ld [wd615], a
+ ld a, $1
+ ld [wd613], a
+asm_1d4fa: ; 0x1d4fa
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd60c]
+ call Func_1d5f2
+ ld a, [wd60d]
+ add $14
+ call Func_1d5f2
+ ld a, $3c
+ ld [wd647], a
+ ret
+
+Func_1d51b: ; 0x1d51b
+ call Func_1d5bf
+ ld a, [wd612]
+ and a
+ jr z, .asm_1d559
+ dec a
+ ld [wd612], a
+ cp $70
+ jr nz, .asm_1d538
+ ld a, $2
+ ld [wd610], a
+ ld a, $2
+ ld [wd611], a
+ jr .asm_1d559
+
+.asm_1d538
+ and a
+ jr nz, .asm_1d559
+ ld a, $3
+ ld [wd610], a
+ xor a
+ ld [wd611], a
+ ld a, [wd482]
+ call Func_1d65f
+ ld a, [wd60c]
+ call Func_1d5f2
+ ld a, [wd60d]
+ add $14
+ call Func_1d5f2
+ ret
+
+.asm_1d559
+ ld a, [wd610]
+ cp $2
+ jr c, .asm_1d58b
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_1d56a
+ srl a
+ srl a
+.asm_1d56a
+ ld b, a
+ and $3
+ jr nz, .asm_1d58b
+ bit 3, b
+ jr nz, .asm_1d580
+ ld a, [wd60c]
+ res 7, a
+ ld [wd60c], a
+ call Func_1d5f2
+ jr .asm_1d58b
+
+.asm_1d580
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ call Func_1d5f2
+.asm_1d58b
+ ld a, [wd611]
+ cp $2
+ ret c
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_1d59b
+ srl a
+ srl a
+.asm_1d59b
+ ld b, a
+ and $3
+ ret nz
+ bit 3, b
+ jr nz, .asm_1d5b1
+ ld a, [wd60d]
+ res 7, a
+ ld [wd60d], a
+ add $14
+ call Func_1d5f2
+ ret
+
+.asm_1d5b1
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ add $14
+ call Func_1d5f2
+ ret
+
+Func_1d5bf: ; 0x1d5bf
+ ld a, [wd5ca]
+ and a
+ ret nz
+ ld a, [wd613]
+ and a
+ ret z
+ xor a
+ ld [wd613], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5cc
+ ld de, BonusMultiplierText
+ call LoadTextHeader
+ ld hl, wBottomMessageText + $12
+ ld a, [wd614]
+ and $7f
+ jr z, .asm_1d5e9
+ add $30
+ ld [hli], a
+.asm_1d5e9
+ ld a, [wd615]
+ res 7, a
+ add $30
+ ld [hl], a
+ ret
+
+Func_1d5f2: ; 0x1d5f2
+ push af
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d5fd
+ pop af
+ call Func_1d602
+ ret
+
+.asm_1d5fd
+ pop af
+ call Func_1d645
+ ret
+
+Func_1d602: ; 0x1d602
+ push af
+ res 7, a
+ ld hl, wd60e
+ cp $14
+ jr c, .asm_1d611
+ ld hl, wd60f
+ sub $a
+.asm_1d611
+ cp [hl]
+ jr z, .asm_1d626
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_1d6be
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1d6be)
+ call Func_10aa
+.asm_1d626
+ pop af
+ ld bc, $0000
+ bit 7, a
+ jr z, .asm_1d632
+ res 7, a
+ set 1, c
+.asm_1d632
+ cp $14
+ jr c, .asm_1d638
+ set 2, c
+.asm_1d638
+ ld hl, TileDataPointers_1d946
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1d946)
+ call Func_10aa
+ ret
+
+Func_1d645: ; 0x1d645
+ bit 7, a
+ jr z, .asm_1d64d
+ res 7, a
+ add $a
+.asm_1d64d
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_1d97a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1d97a)
+ call Func_10aa
+ ret
+
+Func_1d65f: ; 0x1d65f
+ ld a, [wd482]
+ inc a
+ cp $64
+ jr c, .asm_1d669
+ ld a, $63
+.asm_1d669
+ ld b, a
+ xor a
+ ld hl, Data_1d68b
+ ld c, $7
+.asm_1d670
+ bit 0, b
+ jr z, .asm_1d676
+ add [hl]
+ daa
+.asm_1d676
+ srl b
+ inc hl
+ dec c
+ jr nz, .asm_1d670
+ push af
+ swap a
+ and $f
+ ld [wd60c], a
+ pop af
+ and $f
+ ld [wd60d], a
+ ret
+
+Data_1d68b:
+; BCD powers of 2
+ db $01, $02, $04, $08, $16, $32, $64
+
+Func_1d692: ; 0x1d692
+ ld a, [wd647]
+ cp $1
+ jr z, .asm_1d69e
+ dec a
+ ld [wd647], a
+ ret
+
+.asm_1d69e
+ ld a, $0
+ ld [wd647], a
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d6b3
+ ld a, $1e
+ call Func_1d5f2
+ ld a, $20
+ call Func_1d5f2
+ ret
+
+.asm_1d6b3
+ ld a, $2a
+ call Func_1d5f2
+ ld a, $28
+ call Func_1d5f2
+ ret
+
+TileDataPointers_1d6be:
+ dw TileData_1d6ee
+ dw TileData_1d6f3
+ dw TileData_1d6f8
+ dw TileData_1d6fd
+ dw TileData_1d702
+ dw TileData_1d707
+ dw TileData_1d70c
+ dw TileData_1d711
+ dw TileData_1d716
+ dw TileData_1d71b
+ dw TileData_1d720
+ dw TileData_1d725
+ dw TileData_1d72a
+ dw TileData_1d72f
+ dw TileData_1d734
+ dw TileData_1d739
+ dw TileData_1d73e
+ dw TileData_1d743
+ dw TileData_1d748
+ dw TileData_1d74d
+ dw TileData_1d752
+ dw TileData_1d757
+ dw TileData_1d75c
+ dw TileData_1d761
+
+TileData_1d6ee: ; 0x1d6ee
+ db $02
+ dw TileData_1d766
+ dw TileData_1d770
+
+TileData_1d6f3: ; 0x1d6f3
+ db $02
+ dw TileData_1d77a
+ dw TileData_1d784
+
+TileData_1d6f8: ; 0x1d6f8
+ db $02
+ dw TileData_1d78e
+ dw TileData_1d798
+
+TileData_1d6fd: ; 0x1d6fd
+ db $02
+ dw TileData_1d7a2
+ dw TileData_1d7AC
+
+TileData_1d702: ; 0x1d702
+ db $02
+ dw TileData_1d7b6
+ dw TileData_1d7C0
+
+TileData_1d707: ; 0x1d707
+ db $02
+ dw TileData_1d7ca
+ dw TileData_1d7D4
+
+TileData_1d70c: ; 0x1d70c
+ db $02
+ dw TileData_1d7de
+ dw TileData_1d7E8
+
+TileData_1d711: ; 0x1d711
+ db $02
+ dw TileData_1d7f2
+ dw TileData_1d7FC
+
+TileData_1d716: ; 0x1d716
+ db $02
+ dw TileData_1d806
+ dw TileData_1d810
+
+TileData_1d71b: ; 0x1d71b
+ db $02
+ dw TileData_1d81a
+ dw TileData_1d824
+
+TileData_1d720: ; 0x1d720
+ db $02
+ dw TileData_1d82e
+ dw TileData_1d838
+
+TileData_1d725: ; 0x1d725
+ db $02
+ dw TileData_1d842
+ dw TileData_1d84C
+
+TileData_1d72a: ; 0x1d72a
+ db $02
+ dw TileData_1d856
+ dw TileData_1d860
+
+TileData_1d72f: ; 0x1d72f
+ db $02
+ dw TileData_1d86a
+ dw TileData_1d874
+
+TileData_1d734: ; 0x1d734
+ db $02
+ dw TileData_1d87e
+ dw TileData_1d888
+
+TileData_1d739: ; 0x1d739
+ db $02
+ dw TileData_1d892
+ dw TileData_1d89C
+
+TileData_1d73e: ; 0x1d73e
+ db $02
+ dw TileData_1d8a6
+ dw TileData_1d8B0
+
+TileData_1d743: ; 0x1d743
+ db $02
+ dw TileData_1d8ba
+ dw TileData_1d8C4
+
+TileData_1d748: ; 0x1d748
+ db $02
+ dw TileData_1d8ce
+ dw TileData_1d8D8
+
+TileData_1d74d: ; 0x1d74d
+ db $02
+ dw TileData_1d8e2
+ dw TileData_1d8EC
+
+TileData_1d752: ; 0x1d752
+ db $02
+ dw TileData_1d8f6
+ dw TileData_1d900
+
+TileData_1d757: ; 0x1d757
+ db $02
+ dw TileData_1d90a
+ dw TileData_1d914
+
+TileData_1d75c: ; 0x1d75c
+ db $02
+ dw TileData_1d91e
+ dw TileData_1d928
+
+TileData_1d761: ; 0x1d761
+ db $02
+ dw TileData_1d932
+ dw TileData_1d93C
+
+TileData_1d766: ; 0x1d766
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d770: ; 0x1d770
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cc0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d77a: ; 0x1d77a
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d70
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d784: ; 0x1d784
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cd0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d78e: ; 0x1d78e
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d798: ; 0x1d798
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ce0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7a2: ; 0x1d7a2
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7AC: ; 0x1d7AC
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cf0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7b6: ; 0x1d7b6
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1da0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7C0: ; 0x1d7C0
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7ca: ; 0x1d7ca
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1db0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7D4: ; 0x1d7D4
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d10
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7de: ; 0x1d7de
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dc0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7E8: ; 0x1d7E8
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7f2: ; 0x1d7f2
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dd0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7FC: ; 0x1d7FC
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d806: ; 0x1d806
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1de0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d810: ; 0x1d810
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d81a: ; 0x1d81a
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1df0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d824: ; 0x1d824
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d50
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d82e: ; 0x1d82e
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ea0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d838: ; 0x1d838
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d842: ; 0x1d842
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1eb0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d84C: ; 0x1d84C
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e10
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d856: ; 0x1d856
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ec0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d860: ; 0x1d860
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d86a: ; 0x1d86a
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ed0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d874: ; 0x1d874
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d87e: ; 0x1d87e
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ee0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d888: ; 0x1d888
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d892: ; 0x1d892
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ef0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d89C: ; 0x1d89C
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e50
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8a6: ; 0x1d8a6
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8B0: ; 0x1d8B0
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8ba: ; 0x1d8ba
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f10
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8C4: ; 0x1d8C4
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e70
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8ce: ; 0x1d8ce
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8D8: ; 0x1d8D8
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8e2: ; 0x1d8e2
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8EC: ; 0x1d8EC
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8f6: ; 0x1d8f6
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A90
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d900: ; 0x1d900
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $2C
+ dw StageBlueFieldBottomBaseGameBoyGfx + $AC0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d90a: ; 0x1d90a
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageBlueFieldBottomBaseGameBoyGfx + $AE0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d914: ; 0x1d914
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $2C
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d91e: ; 0x1d91e
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B30
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d928: ; 0x1d928
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $36
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B60
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d932: ; 0x1d932
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B80
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d93C: ; 0x1d93C
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $36
+ dw StageBlueFieldBottomBaseGameBoyGfx + $BB0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileDataPointers_1d946:
+ dw TileData_1d94e
+ dw TileData_1d951
+ dw TileData_1d954
+ dw TileData_1d957
+
+TileData_1d94e: ; 0x1d94e
+ db $01
+ dw TileData_1d95a
+
+TileData_1d951: ; 0x1d951
+ db $01
+ dw TileData_1d962
+
+TileData_1d954: ; 0x1d954
+ db $01
+ dw TileData_1d96a
+
+TileData_1d957: ; 0x1d957
+ db $01
+ dw TileData_1d972
+
+TileData_1d95a: ; 0x1d95a
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $27
+
+ db $00 ; terminator
+
+TileData_1d962: ; 0x1d962
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $7D
+
+ db $00 ; terminator
+
+TileData_1d96a: ; 0x1d96a
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $28
+
+ db $00 ; terminator
+
+TileData_1d972: ; 0x1d972
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7E
+
+ db $00 ; terminator
+
+TileDataPointers_1d97a:
+ dw TileData_1d9d2
+ dw TileData_1d9d5
+ dw TileData_1d9d8
+ dw TileData_1d9db
+ dw TileData_1d9de
+ dw TileData_1d9e1
+ dw TileData_1d9e4
+ dw TileData_1d9e7
+ dw TileData_1d9ea
+ dw TileData_1d9ed
+ dw TileData_1d9f0
+ dw TileData_1d9f3
+ dw TileData_1d9f6
+ dw TileData_1d9f9
+ dw TileData_1d9fc
+ dw TileData_1d9ff
+ dw TileData_1da02
+ dw TileData_1da05
+ dw TileData_1da08
+ dw TileData_1da0b
+ dw TileData_1da0e
+ dw TileData_1da11
+ dw TileData_1da14
+ dw TileData_1da17
+ dw TileData_1da1a
+ dw TileData_1da1d
+ dw TileData_1da20
+ dw TileData_1da23
+ dw TileData_1da26
+ dw TileData_1da29
+ dw TileData_1da2c
+ dw TileData_1da2f
+ dw TileData_1da32
+ dw TileData_1da35
+ dw TileData_1da38
+ dw TileData_1da3b
+ dw TileData_1da3e
+ dw TileData_1da41
+ dw TileData_1da44
+ dw TileData_1da47
+ dw TileData_1da4a
+ dw TileData_1da4d
+ dw TileData_1da50
+ dw TileData_1da53
+
+TileData_1d9d2: ; 0x1d9d2
+ db $01
+ dw TileData_1da56
+
+TileData_1d9d5: ; 0x1d9d5
+ db $01
+ dw TileData_1da5e
+
+TileData_1d9d8: ; 0x1d9d8
+ db $01
+ dw TileData_1da66
+
+TileData_1d9db: ; 0x1d9db
+ db $01
+ dw TileData_1da6e
+
+TileData_1d9de: ; 0x1d9de
+ db $01
+ dw TileData_1da76
+
+TileData_1d9e1: ; 0x1d9e1
+ db $01
+ dw TileData_1da7e
+
+TileData_1d9e4: ; 0x1d9e4
+ db $01
+ dw TileData_1da86
+
+TileData_1d9e7: ; 0x1d9e7
+ db $01
+ dw TileData_1da8e
+
+TileData_1d9ea: ; 0x1d9ea
+ db $01
+ dw TileData_1da96
+
+TileData_1d9ed: ; 0x1d9ed
+ db $01
+ dw TileData_1da9e
+
+TileData_1d9f0: ; 0x1d9f0
+ db $01
+ dw TileData_1daa6
+
+TileData_1d9f3: ; 0x1d9f3
+ db $01
+ dw TileData_1daae
+
+TileData_1d9f6: ; 0x1d9f6
+ db $01
+ dw TileData_1dab6
+
+TileData_1d9f9: ; 0x1d9f9
+ db $01
+ dw TileData_1dabe
+
+TileData_1d9fc: ; 0x1d9fc
+ db $01
+ dw TileData_1dac6
+
+TileData_1d9ff: ; 0x1d9ff
+ db $01
+ dw TileData_1dace
+
+TileData_1da02: ; 0x1da02
+ db $01
+ dw TileData_1dad6
+
+TileData_1da05: ; 0x1da05
+ db $01
+ dw TileData_1dade
+
+TileData_1da08: ; 0x1da08
+ db $01
+ dw TileData_1dae6
+
+TileData_1da0b: ; 0x1da0b
+ db $01
+ dw TileData_1daee
+
+TileData_1da0e: ; 0x1da0e
+ db $01
+ dw TileData_1daf6
+
+TileData_1da11: ; 0x1da11
+ db $01
+ dw TileData_1dafe
+
+TileData_1da14: ; 0x1da14
+ db $01
+ dw TileData_1db06
+
+TileData_1da17: ; 0x1da17
+ db $01
+ dw TileData_1db0e
+
+TileData_1da1a: ; 0x1da1a
+ db $01
+ dw TileData_1db16
+
+TileData_1da1d: ; 0x1da1d
+ db $01
+ dw TileData_1db1e
+
+TileData_1da20: ; 0x1da20
+ db $01
+ dw TileData_1db26
+
+TileData_1da23: ; 0x1da23
+ db $01
+ dw TileData_1db2e
+
+TileData_1da26: ; 0x1da26
+ db $01
+ dw TileData_1db36
+
+TileData_1da29: ; 0x1da29
+ db $01
+ dw TileData_1db3e
+
+TileData_1da2c: ; 0x1da2c
+ db $01
+ dw TileData_1db46
+
+TileData_1da2f: ; 0x1da2f
+ db $01
+ dw TileData_1db4e
+
+TileData_1da32: ; 0x1da32
+ db $01
+ dw TileData_1db56
+
+TileData_1da35: ; 0x1da35
+ db $01
+ dw TileData_1db5e
+
+TileData_1da38: ; 0x1da38
+ db $01
+ dw TileData_1db66
+
+TileData_1da3b: ; 0x1da3b
+ db $01
+ dw TileData_1db6e
+
+TileData_1da3e: ; 0x1da3e
+ db $01
+ dw TileData_1db76
+
+TileData_1da41: ; 0x1da41
+ db $01
+ dw TileData_1db7e
+
+TileData_1da44: ; 0x1da44
+ db $01
+ dw TileData_1db86
+
+TileData_1da47: ; 0x1da47
+ db $01
+ dw TileData_1db8e
+
+TileData_1da4a: ; 0x1da4a
+ db $01
+ dw TileData_1db96
+
+TileData_1da4d: ; 0x1da4d
+ db $01
+ dw TileData_1dba5
+
+TileData_1da50: ; 0x1da50
+ db $01
+ dw TileData_1dbb4
+
+TileData_1da53: ; 0x1da53
+ db $01
+ dw TileData_1dbc3
+
+TileData_1da56: ; 0x1da56
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $62
+
+ db $00 ; terminator
+
+TileData_1da5e: ; 0x1da5e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $63
+
+ db $00 ; terminator
+
+TileData_1da66: ; 0x1da66
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $64
+
+ db $00 ; terminator
+
+TileData_1da6e: ; 0x1da6e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $65
+
+ db $00 ; terminator
+
+TileData_1da76: ; 0x1da76
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $66
+
+ db $00 ; terminator
+
+TileData_1da7e: ; 0x1da7e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $67
+
+ db $00 ; terminator
+
+TileData_1da86: ; 0x1da86
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $68
+
+ db $00 ; terminator
+
+TileData_1da8e: ; 0x1da8e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $69
+
+ db $00 ; terminator
+
+TileData_1da96: ; 0x1da96
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $6A
+
+ db $00 ; terminator
+
+TileData_1da9e: ; 0x1da9e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $6B
+
+ db $00 ; terminator
+
+TileData_1daa6: ; 0x1daa6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $58
+
+ db $00 ; terminator
+
+TileData_1daae: ; 0x1daae
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $59
+
+ db $00 ; terminator
+
+TileData_1dab6: ; 0x1dab6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5A
+
+ db $00 ; terminator
+
+TileData_1dabe: ; 0x1dabe
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5B
+
+ db $00 ; terminator
+
+TileData_1dac6: ; 0x1dac6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5C
+
+ db $00 ; terminator
+
+TileData_1dace: ; 0x1dace
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5D
+
+ db $00 ; terminator
+
+TileData_1dad6: ; 0x1dad6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5E
+
+ db $00 ; terminator
+
+TileData_1dade: ; 0x1dade
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5F
+
+ db $00 ; terminator
+
+TileData_1dae6: ; 0x1dae6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $60
+
+ db $00 ; terminator
+
+TileData_1daee: ; 0x1daee
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $61
+
+ db $00 ; terminator
+
+TileData_1daf6: ; 0x1daf6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $76
+
+ db $00 ; terminator
+
+TileData_1dafe: ; 0x1dafe
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $77
+
+ db $00 ; terminator
+
+TileData_1db06: ; 0x1db06
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $78
+
+ db $00 ; terminator
+
+TileData_1db0e: ; 0x1db0e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $79
+
+ db $00 ; terminator
+
+TileData_1db16: ; 0x1db16
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7A
+
+ db $00 ; terminator
+
+TileData_1db1e: ; 0x1db1e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7B
+
+ db $00 ; terminator
+
+TileData_1db26: ; 0x1db26
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1db2e: ; 0x1db2e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7D
+
+ db $00 ; terminator
+
+TileData_1db36: ; 0x1db36
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1db3e: ; 0x1db3e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7F
+
+ db $00 ; terminator
+
+TileData_1db46: ; 0x1db46
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6C
+
+ db $00 ; terminator
+
+TileData_1db4e: ; 0x1db4e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6D
+
+ db $00 ; terminator
+
+TileData_1db56: ; 0x1db56
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6E
+
+ db $00 ; terminator
+
+TileData_1db5e: ; 0x1db5e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6F
+
+ db $00 ; terminator
+
+TileData_1db66: ; 0x1db66
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $70
+
+ db $00 ; terminator
+
+TileData_1db6e: ; 0x1db6e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $71
+
+ db $00 ; terminator
+
+TileData_1db76: ; 0x1db76
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $72
+
+ db $00 ; terminator
+
+TileData_1db7e: ; 0x1db7e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $73
+
+ db $00 ; terminator
+
+TileData_1db86: ; 0x1db86
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $74
+
+ db $00 ; terminator
+
+TileData_1db8e: ; 0x1db8e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $75
+
+ db $00 ; terminator
+
+TileData_1db96: ; 0x1db96
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $24
+ db $25, $26, $27
+
+ db $02 ; number of tiles
+ dw vBGMap + $44
+ db $28, $29
+
+ db $00 ; terminator
+
+TileData_1dba5: ; 0x1dba5
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $24
+ db $2A, $2B, $2C
+
+ db $02 ; number of tiles
+ dw vBGMap + $44
+ db $2D, $2E
+
+ db $00 ; terminator
+
+TileData_1dbb4: ; 0x1dbb4
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $2D
+ db $27, $26, $2F
+
+ db $02 ; number of tiles
+ dw vBGMap + $4E
+ db $29, $28
+
+ db $00 ; terminator
+
+TileData_1dbc3: ; 0x1dbc3
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $2D
+ db $2C, $2B, $30
+
+ db $02 ; number of tiles
+ dw vBGMap + $4E
+ db $2E, $2D
+
+ db $00 ; terminator
+
+ResolvePsyduckPoliwagCollision: ; 0x1dbd2
+ ld a, [wWhichPsyduckPoliwag]
+ and a
+ jp z, Func_1dc8e
+ cp $2
+ jr z, .asm_1dc33
+ xor a
+ ld [wWhichPsyduckPoliwag], a
+ ld hl, wLeftMapMoveCounter
+ ld a, [hl]
+ cp $3
+ jp z, Func_1dc8e
+ inc a
+ ld [hl], a
+ ld hl, wd4f7
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dc06
+ ld a, $54
+ ld [wc7e3], a
+ ld a, $55
+ ld [wc803], a
+.asm_1dc06
+ ld a, $1
+ call Func_1de4b
+ ld a, [wLeftMapMoveCounter]
+ call Func_1de6f
+ ld a, [wLeftMapMoveCounter]
+ cp $3
+ ld a, $7
+ callba Func_10000
+ ld a, $2
+ ld [wd646], a
+ ld a, $78
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ ld a, $14
+ ld [wLeftMapMoveDiglettFrame], a
+ jr .asm_1dc8a
+
+.asm_1dc33
+ xor a
+ ld [wWhichPsyduckPoliwag], a
+ ld hl, wRightMapMoveCounter
+ ld a, [hl]
+ cp $3
+ jp z, Func_1dc8e
+ inc a
+ ld [hl], a
+ ld hl, wd4f9
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dc5c
+ ld a, $52
+ ld [wc7f0], a
+ ld a, $53
+ ld [wc810], a
+.asm_1dc5c
+ ld a, $3
+ call Func_1de4b
+ ld a, [wRightMapMoveCounter]
+ cp $3
+ ld a, $8
+ callba Func_10000
+ ld a, [wRightMapMoveCounter]
+ cp $3
+ ccf
+ call z, Func_1ddf4
+ ld a, $2
+ ld [wd645], a
+ ld a, $28
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ld a, $78
+ ld [wRightMapMoveDiglettFrame], a
+.asm_1dc8a
+ call Func_1de22
+ ret
+
+Func_1dc8e: ; 0x1dc8e
+ call Func_1dc95
+ call Func_1dd2e
+ ret
+
+Func_1dc95: ; 0x1dc95
+ ld a, [wd646]
+ cp $0
+ ret z
+ ld a, [wLeftMapMoveDiglettAnimationCounter]
+ and a
+ jr z, .asm_1dceb
+ dec a
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ ld a, [wd644]
+ and a
+ ret nz
+ ld a, [wLeftMapMoveDiglettFrame]
+ cp $1
+ jr z, .asm_1dcb9
+ cp $0
+ ret z
+ dec a
+ ld [wLeftMapMoveDiglettFrame], a
+ ret
+
+.asm_1dcb9
+ ld a, [wd646]
+ cp $2
+ ret nz
+ call Func_1130
+ ret nz
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1dcd7
+ ld a, [wLeftMapMoveCounter]
+ cp $0
+ jr z, .asm_1dcd4
+ ld b, $7
+ add b
+ jr .asm_1dcd9
+
+.asm_1dcd4
+ xor a
+ jr .asm_1dcd9
+
+.asm_1dcd7
+ ld a, $8
+.asm_1dcd9
+ call Func_1de6f
+ ld a, [wLeftMapMoveCounter]
+ cp $3
+ ccf
+ call z, Func_1ddc7
+ ld a, $1
+ ld [wd646], a
+ ret
+
+.asm_1dceb
+ ld a, [wd646]
+ cp $1
+ ret nz
+ ld a, [wLeftMapMoveDiglettAnimationCounter]
+ and a
+ ret nz
+ ld a, $0
+ call Func_1de4b
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dd0c
+ ld a, $5e
+ ld [wc7e3], a
+ ld a, $5f
+ ld [wc803], a
+.asm_1dd0c
+ ld a, $0
+ ld [wd646], a
+ ld a, [wLeftMapMoveCounter]
+ sub $3
+ ret nz
+ ld a, [wLeftMapMoveCounter]
+ sub $3
+ ld [wLeftMapMoveCounter], a
+ call Func_1de6f
+ ld a, $0
+ call Func_1de4b
+ ld a, $0
+ ld [wd646], a
+ ret
+
+; XXX
+ ret
+
+Func_1dd2e: ; 0x1dd2e
+ ld a, [wd645]
+ cp $0
+ ret z
+ cp $1
+ jr z, .asm_1dd53
+ cp $3
+ jr z, .asm_1dd69
+ ld a, [wRightMapMoveDiglettAnimationCounter]
+ cp $0
+ jr z, .asm_1dd48
+ dec a
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ret
+
+.asm_1dd48
+ ld a, $2
+ call Func_1de4b
+ ld a, $1
+ ld [wd645], a
+ ret
+
+.asm_1dd53
+ ld a, [wRightMapMoveCounter]
+ add $4
+ call Func_1de6f
+ ld a, [wRightMapMoveCounter]
+ add $3
+ call Func_1de4b
+ ld a, $3
+ ld [wd645], a
+ ret
+
+.asm_1dd69
+ ld a, [wRightMapMoveDiglettFrame]
+ and a
+ jr z, .asm_1dd74
+ dec a
+ ld [wRightMapMoveDiglettFrame], a
+ ret
+
+.asm_1dd74
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1dd89
+ ld a, [wRightMapMoveCounter]
+ cp $0
+ jr z, .asm_1dd85
+ ld b, $a
+ add b
+ jr .asm_1dd8b
+
+.asm_1dd85
+ ld a, $4
+ jr .asm_1dd8b
+
+.asm_1dd89
+ ld a, $9
+.asm_1dd8b
+ call Func_1de6f
+ ld a, $2
+ call Func_1de4b
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dda9
+ ld a, $24
+ ld [wc7f0], a
+ ld a, $25
+ ld [wc810], a
+ ld a, $0
+ ld [wd645], a
+.asm_1dda9
+ ld a, [wRightMapMoveCounter]
+ sub $3
+ ret nz
+ ld a, [wRightMapMoveCounter]
+ sub $3
+ ld [wRightMapMoveCounter], a
+ ld a, $4
+ call Func_1de6f
+ ld a, $2
+ call Func_1de4b
+ ld a, $0
+ ld [wd645], a
+ ret
+
+Func_1ddc7: ; 0x1ddc7
+ ld hl, wd63d
+ call Func_e4a
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_1dde4
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1dde4
+ xor a
+ ld [wd55a], a
+ callba StartMapMoveMode
+ scf
+ ret
+
+Func_1ddf4: ; 0x1ddf4
+ ld hl, wd63c
+ call Func_e4a
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_1de11
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1de11
+ ld a, $1
+ ld [wd55a], a
+ callba StartMapMoveMode
+ scf
+ ret
+
+Func_1de22: ; 0x1de22
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld a, $55
+ ld [wd803], a
+ ld a, $4
+ ld [wd804], a
+ ld a, $2
+ ld [wd7eb], a
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $0f
+ call PlaySoundEffect
+ ret
+
+Func_1de4b: ; 0x1de4b
+ ld b, a
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld a, b
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1df66
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1de63
+ ld hl, TileDataPointers_1e00f
+.asm_1de63
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1df66)
+ call Func_10aa
+ ret
+
+Func_1de6f: ; 0x1de6f
+ ld b, a
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld a, b
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1e0a4
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1de87
+ ld hl, TileDataPointers_1e1d6
+.asm_1de87
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1e0a4)
+ call Func_10aa
+ ret
+
+Func_1de93: ; 0x1de93
+ ld hl, wd4f7
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1ded2
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1ded2
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_1ded2
+ cp $3
+ jr z, .asm_1ded2
+ dec a
+ ld [wLeftMapMoveCounter], a
+ call Func_1de6f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1decd
+ ld a, [wLeftMapMoveCounter]
+ cp $0
+ jr z, .asm_1deca
+ ld b, $7
+ add b
+ jr .asm_1decf
+
+.asm_1deca
+ xor a
+ jr .asm_1decf
+
+.asm_1decd
+ ld a, $8
+.asm_1decf
+ call Func_1de6f
+.asm_1ded2
+ ld hl, wd4f9
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1df14
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1df14
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_1df14
+ cp $3
+ jr z, .asm_1df14
+ dec a
+ ld [wRightMapMoveCounter], a
+ add $4
+ call Func_1de6f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1df0f
+ ld a, [wRightMapMoveCounter]
+ cp $0
+ jr z, .asm_1df0b
+ ld b, $a
+ add b
+ jr .asm_1df11
+
+.asm_1df0b
+ ld a, $4
+ jr .asm_1df11
+
+.asm_1df0f
+ ld a, $9
+.asm_1df11
+ call Func_1de6f
+.asm_1df14
+ ret
+
+Func_1df15: ; 0x1df15
+ ld b, $0
+ ld hl, wd4f8
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_1df3e
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1df3e
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1df3e
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_1df3e
+ cp $3
+ jr z, .asm_1df3e
+ dec a
+ ld [wLeftMapMoveCounter], a
+.asm_1df3e
+ ld hl, wd4fa
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_1df65
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1df65
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1df65
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_1df65
+ cp $3
+ jr z, .asm_1df65
+ dec a
+ ld [wRightMapMoveCounter], a
+.asm_1df65
+ ret
+
+TileDataPointers_1df66:
+ dw TileData_1df74
+ dw TileData_1df77
+ dw TileData_1df7a
+ dw TileData_1df7f
+ dw TileData_1df84
+ dw TileData_1df89
+ dw TileData_1df8e
+
+TileData_1df74: ; 0x1df74
+ db $01
+ dw TileData_1df93
+
+TileData_1df77: ; 0x1df77
+ db $01
+ dw TileData_1df9f
+
+TileData_1df7a: ; 0x1df7a
+ db $02
+ dw TileData_1dfab
+ dw TileData_1dfb5
+
+TileData_1df7f: ; 0x1df7f
+ db $02
+ dw TileData_1dfbf
+ dw TileData_1dfc9
+
+TileData_1df84: ; 0x1df84
+ db $02
+ dw TileData_1dfd3
+ dw TileData_1dfdd
+
+TileData_1df89: ; 0x1df89
+ db $02
+ dw TileData_1dfe7
+ dw TileData_1dff1
+
+TileData_1df8e: ; 0x1df8e
+ db $02
+ dw TileData_1dffb
+ dw TileData_1e005
+
+TileData_1df93: ; 0x1df93
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $4A
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $4B
+
+ db $00 ; terminator
+
+TileData_1df9f: ; 0x1df9f
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $4C
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $4D
+
+ db $00 ; terminator
+
+TileData_1dfab: ; 0x1dfab
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageBlueFieldBottomBaseGameBoyGfx + $CE0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfb5: ; 0x1dfb5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfbf: ; 0x1dfbf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D30
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfc9: ; 0x1dfc9
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D60
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfd3: ; 0x1dfd3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dfdd: ; 0x1dfdd
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dfe7: ; 0x1dfe7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2100
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dff1: ; 0x1dff1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2130
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dffb: ; 0x1dffb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2150
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e005: ; 0x1e005
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2180
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_1e00f:
+ dw TileData_1e01d
+ dw TileData_1e020
+ dw TileData_1e023
+ dw TileData_1e026
+ dw TileData_1e029
+ dw TileData_1e02c
+ dw TileData_1e02f
+
+TileData_1e01d: ; 0x1e01d
+ db $01
+ dw TileData_1e032
+
+TileData_1e020: ; 0x1e020
+ db $01
+ dw TileData_1e03e
+
+TileData_1e023: ; 0x1e023
+ db $01
+ dw TileData_1e04a
+
+TileData_1e026: ; 0x1e026
+ db $01
+ dw TileData_1e05c
+
+TileData_1e029: ; 0x1e029
+ db $01
+ dw TileData_1e06e
+
+TileData_1e02c: ; 0x1e02c
+ db $01
+ dw TileData_1e080
+
+TileData_1e02f: ; 0x1e02f
+ db $01
+ dw TileData_1e092
+
+TileData_1e032: ; 0x1e032
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $35
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $36
+
+ db $00 ; terminator
+
+TileData_1e03e: ; 0x1e03e
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $37
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $38
+
+ db $00 ; terminator
+
+TileData_1e04a: ; 0x1e04a
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $4F
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $50, $51
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $52, $53
+
+ db $00 ; terminator
+
+TileData_1e05c: ; 0x1e05c
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $54
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $55, $56
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $57, $58
+
+ db $00 ; terminator
+
+TileData_1e06e: ; 0x1e06e
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $59
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $5A, $5B
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $5C, $5D
+
+ db $00 ; terminator
+
+TileData_1e080: ; 0x1e080
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $59
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $5A, $5E
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $5C, $5F
+
+ db $00 ; terminator
+
+TileData_1e092: ; 0x1e092
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $60
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $61, $62
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $63, $64
+
+ db $00 ; terminator
+
+TileDataPointers_1e0a4:
+ dw TileData_1e0b8
+ dw TileData_1e0bf
+ dw TileData_1e0c6
+ dw TileData_1e0cd
+ dw TileData_1e0d4
+ dw TileData_1e0d9
+ dw TileData_1e0de
+ dw TileData_1e0e3
+ dw TileData_1e0e8
+ dw TileData_1e0ed
+
+TileData_1e0b8: ; 0x1e0b8
+ db $03
+ dw TileData_1e0f0
+ dw TileData_1e0fa
+ dw TileData_1e104
+
+TileData_1e0bf: ; 0x1e0bf
+ db $03
+ dw TileData_1e10e
+ dw TileData_1e118
+ dw TileData_1e122
+
+TileData_1e0c6: ; 0x1e0c6
+ db $03
+ dw TileData_1e12c
+ dw TileData_1e136
+ dw TileData_1e140
+
+TileData_1e0cd: ; 0x1e0cd
+ db $03
+ dw TileData_1e14a
+ dw TileData_1e154
+ dw TileData_1e15e
+
+TileData_1e0d4: ; 0x1e0d4
+ db $02
+ dw TileData_1e168
+ dw TileData_1e172
+
+TileData_1e0d9: ; 0x1e0d9
+ db $02
+ dw TileData_1e17c
+ dw TileData_1e186
+
+TileData_1e0de: ; 0x1e0de
+ db $02
+ dw TileData_1e190
+ dw TileData_1e19a
+
+TileData_1e0e3: ; 0x1e0e3
+ db $02
+ dw TileData_1e1a4
+ dw TileData_1e1ae
+
+TileData_1e0e8: ; 0x1e0e8
+ db $02
+ dw TileData_1e1b8
+ dw TileData_1e1c2
+
+TileData_1e0ed: ; 0x1e0ed
+ db $01
+ dw TileData_1e1cc
+
+TileData_1e0f0: ; 0x1e0f0
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e0fa: ; 0x1e0fa
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C40
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e104: ; 0x1e104
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C70
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e10e: ; 0x1e10e
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e118: ; 0x1e118
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e122: ; 0x1e122
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e12c: ; 0x1e12c
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FF0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e136: ; 0x1e136
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e140: ; 0x1e140
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e14a: ; 0x1e14a
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2020
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e154: ; 0x1e154
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e15e: ; 0x1e15e
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e168: ; 0x1e168
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D80
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e172: ; 0x1e172
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageBlueFieldBottomBaseGameBoyGfx + $DA0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e17c: ; 0x1e17c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e186: ; 0x1e186
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e190: ; 0x1e190
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e19a: ; 0x1e19a
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2210
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e1a4: ; 0x1e1a4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e1ae: ; 0x1e1ae
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2240
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e1b8: ; 0x1e1b8
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C40
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e1c2: ; 0x1e1c2
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C70
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e1cc: ; 0x1e1cc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D80
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileDataPointers_1e1d6:
+ dw TileData_1e1f2
+ dw TileData_1e1f5
+ dw TileData_1e1f8
+ dw TileData_1e1fb
+ dw TileData_1e1fe
+ dw TileData_1e201
+ dw TileData_1e204
+ dw TileData_1e207
+ dw TileData_1e20a
+ dw TileData_1e20d
+ dw TileData_1e210
+ dw TileData_1e213
+ dw TileData_1e216
+ dw TileData_1e219
+
+TileData_1e1f2: ; 0x1e1f2
+ db $01
+ dw TileData_1e21c
+
+TileData_1e1f5: ; 0x1e1f5
+ db $01
+ dw TileData_1e238
+
+TileData_1e1f8: ; 0x1e1f8
+ db $01
+ dw TileData_1e254
+
+TileData_1e1fb: ; 0x1e1fb
+ db $01
+ dw TileData_1e270
+
+TileData_1e1fe: ; 0x1e1fe
+ db $01
+ dw TileData_1e28c
+
+TileData_1e201: ; 0x1e201
+ db $01
+ dw TileData_1e2a2
+
+TileData_1e204: ; 0x1e204
+ db $01
+ dw TileData_1e2b8
+
+TileData_1e207: ; 0x1e207
+ db $01
+ dw TileData_1e2ce
+
+TileData_1e20a: ; 0x1e20a
+ db $01
+ dw TileData_1e2e4
+
+TileData_1e20d: ; 0x1e20d
+ db $01
+ dw TileData_1e2fa
+
+TileData_1e210: ; 0x1e210
+ db $01
+ dw TileData_1e310
+
+TileData_1e213: ; 0x1e213
+ db $01
+ dw TileData_1e326
+
+TileData_1e216: ; 0x1e216
+ db $01
+ dw TileData_1e336
+
+TileData_1e219: ; 0x1e219
+ db $01
+ dw TileData_1e346
+
+TileData_1e21c: ; 0x1e21c
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $36, $37, $38
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $39, $3A, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e238: ; 0x1e238
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $3C, $37, $38
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $3D, $3E, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $52, $53, $54
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $55, $56, $57
+
+ db $00 ; terminator
+
+TileData_1e254: ; 0x1e254
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $40, $41, $38
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $42, $43, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $52, $53, $54
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $55, $56, $57
+
+ db $00 ; terminator
+
+TileData_1e270: ; 0x1e270
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $36, $46, $47
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $48, $49, $4A
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $52, $53, $54
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $55, $56, $57
+
+ db $00 ; terminator
+
+TileData_1e28c: ; 0x1e28c
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $67, $68
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $69, $6A, $6B
+
+ db $00 ; terminator
+
+TileData_1e2a2: ; 0x1e2a2
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $6C, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $6D, $6E, $68
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $6F, $70, $6B
+
+ db $00 ; terminator
+
+TileData_1e2b8: ; 0x1e2b8
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $6C, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $72, $68
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $69, $73, $6B
+
+ db $00 ; terminator
+
+TileData_1e2ce: ; 0x1e2ce
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $75, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $76, $77
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $69, $78, $79
+
+ db $00 ; terminator
+
+TileData_1e2e4: ; 0x1e2e4
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $3F, $3A, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e2fa: ; 0x1e2fa
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $44, $45, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e310: ; 0x1e310
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $39, $4B, $4A
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e326: ; 0x1e326
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $6D, $71, $68
+
+ db $00 ; terminator
+
+TileData_1e336: ; 0x1e336
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $74, $68
+
+ db $00 ; terminator
+
+TileData_1e346: ; 0x1e346
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $67, $77
+
+ db $00 ; terminator
+
+ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356
+ ld a, [wWhichPinballUpgradeTrigger]
+ and a
+ jp z, Func_1e471
+ xor a
+ ld [wWhichPinballUpgradeTrigger], a
+ ld a, [wStageCollisionState]
+ cp $0
+ jr nz, .asm_1e386
+ ld a, $1
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ ld a, $1
+ ld [wd580], a
+ callba Func_1404a
+.asm_1e386
+ ld a, [wStageCollisionState]
+ bit 0, a
+ jp z, Func_1e471
+ ld a, [wd5fc]
+ and a
+ jp nz, Func_1e471
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $b
+ callba Func_10000
+ ld a, [wWhichPinballUpgradeTriggerId]
+ sub $13
+ ld c, a
+ ld b, $0
+ ld hl, wd5f9
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ jr z, .asm_1e3bf
+ ld [hl], $0
+.asm_1e3bf
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd5f9
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ jr nz, .asm_1e3de
+ lb de, $00, $09
+ call PlaySoundEffect
+ jp asm_1e475
+
+.asm_1e3de
+ ld a, $1
+ ld [wd5fc], a
+ ld a, $80
+ ld [wd5fd], a
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wBallType]
+ cp MASTER_BALL
+ jr z, .masterBall
+ lb de, $06, $3a
+ call PlaySoundEffect
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5cc
+ ld de, FieldMultiplierText
+ call LoadTextHeader
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeProgression2BlueField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ add $30
+ ld [wBottomMessageText + $12], a
+ jr .asm_1e465
+
+.masterBall
+ lb de, $0f, $4d
+ call PlaySoundEffect
+ ld bc, OneMillionPoints
+ callba AddBigBCD6FromQueue
+ ld bc, $0100
+ ld de, $0000
+ push bc
+ push de
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5d4
+ ld de, DigitsText1to8
+ call Func_32cc
+ pop de
+ pop bc
+ ld hl, wd5cc
+ ld de, FieldMultiplierSpecialBonusText
+ call LoadTextHeader
+.asm_1e465
+ callba TransitionPinballUpgrade
+ jr asm_1e475
+
+Func_1e471: ; 0x1e471
+ call Func_1e4b8
+ ret z
+asm_1e475: ; 0x1e475
+ ld hl, wd5fb
+ ld b, $3
+.asm_1e47a
+ ld a, [hld]
+ push hl
+ call Func_1e484
+ pop hl
+ dec b
+ jr nz, .asm_1e47a
+ ret
+
+Func_1e484: ; 0x1e484
+ and a
+ jr z, .asm_1e496
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e491
+ ld hl, TileDataPointers_1e520
+ jr .asm_1e4a3
+
+.asm_1e491
+ ld hl, TileDataPointers_1e556
+ jr .asm_1e4a3
+
+.asm_1e496
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e4a0
+ ld hl, TileDataPointers_1e526
+ jr .asm_1e4a3
+
+.asm_1e4a0
+ ld hl, TileDataPointers_1e55c
+.asm_1e4a3
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $7
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_1e4b8: ; 0x1e4b8
+ ld a, [wd5fc]
+ and a
+ jr z, .asm_1e4e5
+ ld a, [wd5fd]
+ dec a
+ ld [wd5fd], a
+ jr nz, .asm_1e4ca
+ ld [wd5fc], a
+.asm_1e4ca
+ and $7
+ jr nz, .asm_1e4e3
+ ld a, [wd5fd]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd5f9
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_1e4e3
+ xor a
+ ret
+
+.asm_1e4e5
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .leftFlipperKeyIsPressed
+ ; left flipper key is pressed
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.leftFlipperKeyIsPressed
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ; right flipper key is pressed
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hl], a
+ ret
+
+BallTypeProgression2BlueField: ; 0x1e514
+; Determines the next upgrade for the Ball.
+ db GREAT_BALL ; POKE_BALL -> GREAT_BALL
+ db GREAT_BALL ; unused
+ db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
+ db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
+ db MASTER_BALL ; unused
+ db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
+
+BallTypeDegradation2BlueField: ; 0x1e51a
+; Determines the previous upgrade for the Ball.
+ db POKE_BALL ; POKE_BALL -> POKE_BALL
+ db POKE_BALL ; unused
+ db POKE_BALL ; GREAT_BALL -> POKE_BALL
+ db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
+ db ULTRA_BALL ; unused
+ db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
+
+TileDataPointers_1e520:
+ dw TileData_1e52c
+ dw TileData_1e533
+ dw TileData_1e53a
+
+TileDataPointers_1e526:
+ dw TileData_1e541
+ dw TileData_1e548
+ dw TileData_1e54f
+
+TileData_1e52c: ; 0x1e52c
+ db $02, $02
+ dw vBGMap + $86
+ db $66, $67
+ db $00
+
+TileData_1e533: ; 0x1e533
+ db $02, $02
+ dw vBGMap + $69
+ db $66, $67
+ db $00
+
+TileData_1e53a: ; 0x1e53a
+ db $02, $02
+ dw vBGMap + $8C
+ db $66, $67
+ db $00
+
+TileData_1e541: ; 0x1e541
+ db $02, $02
+ dw vBGMap + $86
+ db $64, $65
+ db $00
+
+TileData_1e548: ; 0x1e548
+ db $02, $02
+ dw vBGMap + $69
+ db $64, $65
+ db $00
+
+TileData_1e54f: ; 0x1e54f
+ db $02, $02
+ dw vBGMap + $8C
+ db $64, $65
+ db $00
+
+TileDataPointers_1e556:
+ dw TileData_1e562
+ dw TileData_1e569
+ dw TileData_1e570
+
+TileDataPointers_1e55c:
+ dw TileData_1e577
+ dw TileData_1e57e
+ dw TileData_1e585
+
+TileData_1e562: ; 0x1e562
+ db $02, $02
+ dw vBGMap + $86
+ db $43, $43
+ db $00
+
+TileData_1e569: ; 0x1e569
+ db $02, $02
+ dw vBGMap + $69
+ db $43, $43
+ db $00
+
+TileData_1e570: ; 0x1e570
+ db $02, $02
+ dw vBGMap + $8C
+ db $43, $43
+ db $00
+
+TileData_1e577: ; 0x1e577
+ db $02, $02
+ dw vBGMap + $86
+ db $42, $42
+ db $00
+
+TileData_1e57e: ; 0x1e57e
+ db $02, $02
+ dw vBGMap + $69
+ db $42, $42
+ db $00
+
+TileData_1e585: ; 0x1e585
+ db $02, $02
+ dw vBGMap + $8C
+ db $42, $42
+ db $00
+
+HandleBlueStageBallTypeUpgradeCounter: ; 0x1e58c
+ ld a, [wCapturingMon]
+ and a
+ ret nz
+ ; check if counter is at 0
+ ld hl, wBallTypeCounter
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ or b
+ ret z
+ dec bc
+ ld a, b
+ ld [hld], a
+ ld [hl], c
+ or c
+ ret nz
+ ; counter is now 0! Degrade the ball upgrade.
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeDegradation2BlueField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ and a
+ jr z, .pokeball
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+.pokeball
+ callba TransitionPinballUpgrade
+ ret
+
+Func_1e5c5: ; 0x1e5c5
+ ld a, [wWhichCAVELight]
+ and a
+ jr z, .asm_1e623
+ xor a
+ ld [wWhichCAVELight], a
+ ld a, [wd513]
+ and a
+ jr nz, .asm_1e623
+ ld a, [wWhichCAVELightId]
+ sub $16
+ ld c, a
+ ld b, $0
+ ld hl, wd50f
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ ret nz
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd50f
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ inc hl
+ and [hl]
+ jr z, Func_1e627
+ ld a, $1
+ ld [wd513], a
+ ld a, $80
+ ld [wd514], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $09
+ call PlaySoundEffect
+ ld hl, wd62c
+ call Func_e4a
+ jr Func_1e627
+
+.asm_1e623
+ call Func_1e66a
+ ret z
+ ; fall through
+
+Func_1e627: ; 0x1e627
+ ld hl, wd512
+ ld b, $4
+.asm_1e62c
+ ld a, [hld]
+ push hl
+ call Func_1e636
+ pop hl
+ dec b
+ jr nz, .asm_1e62c
+ ret
+
+Func_1e636: ; 0x1e636
+ and a
+ jr z, .asm_1e648
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e643
+ ld hl, TileDataPointers_1e6d7
+ jr .asm_1e655
+
+.asm_1e643
+ ld hl, TileDataPointers_1e717
+ jr .asm_1e655
+
+.asm_1e648
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e652
+ ld hl, TileDataPointers_1e6df
+ jr .asm_1e655
+
+.asm_1e652
+ ld hl, TileDataPointers_1e71f
+.asm_1e655
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $7
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_1e66a: ; 0x1e66a
+ ld a, [wd513]
+ and a
+ jr z, .asm_1e6a0
+ ld a, [wd514]
+ dec a
+ ld [wd514], a
+ jr nz, .asm_1e687
+ ld [wd513], a
+ ld a, $1
+ ld [wd608], a
+ ld a, $3
+ ld [wd607], a
+ xor a
+.asm_1e687
+ and $7
+ ret nz
+ ld a, [wd514]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd50f
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_1e6a0
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .asm_1e6bc
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.asm_1e6bc
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hl], a
+ ret
+
+TileDataPointers_1e6d7:
+ dw TileData_1e6e7
+ dw TileData_1e6ed
+ dw TileData_1e6f3
+ dw TileData_1e6f9
+
+TileDataPointers_1e6df:
+ dw TileData_1e6ff
+ dw TileData_1e705
+ dw TileData_1e70b
+ dw TileData_1e711
+
+TileData_1e6e7: ; 0x1e6e7
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $5E
+
+ db $00 ; terminator
+
+TileData_1e6ed: ; 0x1e6ed
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $5E
+
+ db $00 ; terminator
+
+TileData_1e6f3: ; 0x1e6f3
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $60
+
+ db $00 ; terminator
+
+TileData_1e6f9: ; 0x1e6f9
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $60
+
+ db $00 ; terminator
+
+TileData_1e6ff: ; 0x1e6ff
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $5D
+
+ db $00 ; terminator
+
+TileData_1e705: ; 0x1e705
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $5D
+
+ db $00 ; terminator
+
+TileData_1e70b: ; 0x1e70b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $5F
+
+ db $00 ; terminator
+
+TileData_1e711: ; 0x1e711
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $5F
+
+ db $00 ; terminator
+
+TileDataPointers_1e717:
+ dw TileData_1e727
+ dw TileData_1e72d
+ dw TileData_1e733
+ dw TileData_1e739
+
+TileDataPointers_1e71f:
+ dw TileData_1e73f
+ dw TileData_1e745
+ dw TileData_1e74b
+ dw TileData_1e751
+
+TileData_1e727: ; 0x1e727
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $49
+
+ db $00 ; terminator
+
+TileData_1e72d: ; 0x1e72d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $4A
+
+ db $00 ; terminator
+
+TileData_1e733: ; 0x1e733
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $4B
+
+ db $00 ; terminator
+
+TileData_1e739: ; 0x1e739
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $4C
+
+ db $00 ; terminator
+
+TileData_1e73f: ; 0x1e73f
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $47
+
+ db $00 ; terminator
+
+TileData_1e745: ; 0x1e745
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $48
+
+ db $00 ; terminator
+
+TileData_1e74b: ; 0x1e74b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7A
+
+ db $00 ; terminator
+
+TileData_1e751: ; 0x1e751
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7B
+
+ db $00 ; terminator
+
+Func_1e757: ; 0x1e757
+ ld a, [wSlotCollision]
+ and a
+ jr z, .asm_1e78c
+ xor a
+ ld [wSlotCollision], a
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wd603]
+ and a
+ jr nz, .asm_1e78c
+ xor a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wd549], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $50
+ ld [wBallXPos + 1], a
+ ld a, $16
+ ld [wBallYPos + 1], a
+ ld a, $13
+ ld [wd603], a
+.asm_1e78c
+ ld a, [wd603]
+ and a
+ ret z
+ dec a
+ ld [wd603], a
+ ld a, $18
+ ld [wd606], a
+ ld a, [wd603]
+ cp $12
+ jr nz, .asm_1e7b2
+ lb de, $00, $21
+ call PlaySoundEffect
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1e7b2
+ cp $f
+ jr nz, .asm_1e7c1
+ callba Func_dd62
+ ret
+
+.asm_1e7c1
+ cp $c
+ jr nz, .asm_1e7d0
+ xor a
+ ld [wd548], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ret
+
+.asm_1e7d0
+ cp $9
+ jr nz, .asm_1e7d8
+ call Func_1e830
+ ret
+
+.asm_1e7d8
+ cp $6
+ jr nz, .asm_1e7f5
+ xor a
+ ld [wd604], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1e7f5
+ cp $3
+ jr nz, .asm_1e80e
+ callba LoadBallGfx
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ ld a, $80
+ ld [wBallXVelocity], a
+ ret
+
+.asm_1e80e
+ and a
+ ret nz
+ call Func_1e8f6
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp CATCHEM_MODE_SLOT_REWARD
+ ret nz
+ call GenRandom
+ and $8
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_1e830: ; 0x1e830
+ xor a
+ ld [wIndicatorStates + 4], a
+ ld a, $d
+ callba Func_10000
+ jr nc, .asm_1e84b
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ret
+
+.asm_1e84b
+ ld a, [wd624]
+ cp $3
+ jr nz, .asm_1e891
+ ld a, [wd607]
+ and a
+ jr nz, .asm_1e891
+.asm_1e858
+ ld a, [wBonusStageSlotRewardActive]
+ and a
+ jr nz, .asm_1e867
+ xor a
+ ld [wd625], a
+ ld a, $40
+ ld [wd626], a
+.asm_1e867
+ xor a
+ ld [wBonusStageSlotRewardActive], a
+ ld a, $1
+ ld [wd495], a
+ ld [wd4ae], a
+ ld a, [wd498]
+ ld c, a
+ ld b, $0
+ ld hl, GoToBonusStageTextIds_BlueField
+ add hl, bc
+ ld a, [hl]
+ ld [wd497], a
+ call Func_1e8c3
+ xor a
+ ld [wd609], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ld a, $1e
+ ld [wd607], a
+ ret
+
+.asm_1e891
+ callba Func_ed8e
+ xor a
+ ld [wd608], a
+ ld a, [wd61d]
+ cp $d
+ jr nc, .asm_1e858
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp EVOLUTION_MODE_SLOT_REWARD
+ ret nz
+ callba Func_10ab3
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_1e8c3: ; 0x1e8c3
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld a, [wd497]
+ ld de, GoToMeowthStageText
+ cp STAGE_MEOWTH_BONUS
+ jr z, .loadText
+ ld de, GoToSeelStageText
+ cp STAGE_SEEL_BONUS
+ jr z, .loadText
+ ld de, GoToMewtwoStageText
+.loadText
+ call LoadTextHeader
+ ld de, $0000
+ call PlaySong
+ rst AdvanceFrame
+ lb de, $3c, $23
+ call PlaySoundEffect
+ ret
+
+GoToBonusStageTextIds_BlueField:
+ db STAGE_GENGAR_BONUS
+ db STAGE_MEWTWO_BONUS
+ db STAGE_MEOWTH_BONUS
+ db STAGE_DIGLETT_BONUS
+ db STAGE_SEEL_BONUS
+
+Func_1e8f6: ; 0x1e8f6
+ ld a, [wCurrentStage]
+ and $1
+ sla a
+ ld c, a
+ ld a, [wd604]
+ add c
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1e91e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1e912
+ ld hl, TileDataPointers_1e970
+.asm_1e912
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1e91e)
+ call Func_10aa
+ ret
+
+TileDataPointers_1e91e:
+ dw TileData_1e926
+ dw TileData_1e929
+ dw TileData_1e92c
+ dw TileData_1e931
+
+TileData_1e926: ; 0x1e926
+ db $01
+ dw TileData_1e936
+
+TileData_1e929: ; 0x1e929
+ db $01
+ dw TileData_1e93f
+
+TileData_1e92c: ; 0x1e92c
+ db $02
+ dw TileData_1e948
+ dw TileData_1e952
+
+TileData_1e931: ; 0x1e931
+ db $02
+ dw TileData_1e95c
+ dw TileData_1e966
+
+TileData_1e936: ; 0x1e936
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $EE, $EF
+
+ db $00 ; terminator
+
+TileData_1e93f: ; 0x1e93f
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $F0, $F1
+
+ db $00 ; terminator
+
+TileData_1e948: ; 0x1e948
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1F
+ dw StageBlueFieldBottomBaseGameBoyGfx + $9F0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e952: ; 0x1e952
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $21
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e95c: ; 0x1e95c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e966: ; 0x1e966
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $21
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_1e970:
+ dw TileData_1e978
+ dw TileData_1e97d
+ dw TileData_1e980
+ dw TileData_1e983
+
+TileData_1e978: ; 0x1e978
+ db $02
+ dw TileData_1e986
+ dw TileData_1e98F
+
+TileData_1e97d: ; 0x1e97d
+ db $01
+ dw TileData_1e99b
+
+TileData_1e980: ; 0x1e980
+ db $01
+ dw TileData_1e9a4
+
+TileData_1e983: ; 0x1e983
+ db $01
+ dw TileData_1e9b2
+
+TileData_1e986: ; 0x1e986
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $F0, $F1
+
+ db $00 ; terminator
+
+TileData_1e98F: ; 0x1e98F
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $224
+ db $D8
+
+ db $01 ; number of tiles
+ dw vBGMap + $22f
+ db $EC
+
+ db $00 ; terminator
+
+TileData_1e99b: ; 0x1e99b
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $F2, $F3
+
+ db $00 ; terminator
+
+TileData_1e9a4: ; 0x1e9a4
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $9809
+ db $15, $16
+
+ db $02 ; terminator
+ dw vBGMap + $29
+ db $17, $18
+
+ db $00 ; terminator
+
+TileData_1e9b2: ; 0x1e9b2
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $9
+ db $19, $1A
+
+ db $02 ; terminator
+ dw vBGMap + $29
+ db $1B, $1C
+
+ db $00 ; terminator
+
+Func_1e9c0: ; 0x1e9c0
+ ld a, [wd607]
+ and a
+ ret z
+ dec a
+ ld [wd607], a
+ ret nz
+ ld a, [wInSpecialMode]
+ and a
+ ret nz
+ ld a, [wd609]
+ and a
+ jr z, .asm_1e9dc
+ ld a, [wd498]
+ add $15
+ jr .asm_1e9e3
+
+.asm_1e9dc
+ ld a, [wd608]
+ and a
+ ret z
+ ld a, $1a
+.asm_1e9e3
+ ld hl, wCurrentStage
+ bit 0, [hl]
+ callba nz, Func_30256
+ ld a, [wd604]
+ and a
+ ret nz
+ ld a, $1
+ ld [wd604], a
+ ld a, $80
+ ld [wIndicatorStates + 4], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ call nz, Func_1e8f6
+ ret
+
+Func_1ea0a: ; 0x1ea0a
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $fe
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jr asm_1ea6a
+
+Func_1ea3b: ; 0x1ea3b
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $86
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ ; fall through
+
+asm_1ea6a: ; 0x1ea6a
+ ld bc, BallPhysicsData_f0000
+ add hl, bc
+ ld de, wBallXVelocity
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1eaa9
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1eaa9
+ pop hl
+ bit 7, h
+ jr z, .asm_1eab5
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1eab5
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ lb de, $00, $04
+ call PlaySoundEffect
+ ret
+
+Func_1ead4: ; 0x1ead4
+ ld a, [hNumFramesDropped]
+ and $f
+ ret nz
+ ld bc, $0000
+.asm_1eadc
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ ld a, [hl]
+ cp $1
+ jr z, .asm_1eaf8
+ bit 7, [hl]
+ jr z, .asm_1eaf8
+ ld a, [hl]
+ res 7, a
+ ld hl, hNumFramesDropped
+ bit 4, [hl]
+ jr z, .asm_1eaf5
+ inc a
+.asm_1eaf5
+ call Func_1eb41
+.asm_1eaf8
+ pop bc
+ inc c
+ ld a, c
+ cp $2
+ jr nz, .asm_1eadc
+ ld a, [hNumFramesDropped]
+ and $f
+ ret nz
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld bc, $0002
+.asm_1eb0d
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ ld a, [hl]
+ cp $1
+ jr z, .asm_1eb29
+ bit 7, [hl]
+ jr z, .asm_1eb29
+ ld a, [hl]
+ res 7, a
+ ld hl, hNumFramesDropped
+ bit 4, [hl]
+ jr z, .asm_1eb2b
+ inc a
+ inc a
+ jr .asm_1eb2b
+
+.asm_1eb29
+ ld a, $0
+.asm_1eb2b
+ 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_1eb0d
+ ret
+
+Func_1eb41: ; 0x1eb41
+ push af
+ sla c
+ ld hl, TileDataPointers_1eb61
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1eb4f
+ ld hl, TileDataPointers_1ed51
+.asm_1eb4f
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ sla a
+ ld c, a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1eb61)
+ call Func_10aa
+ ret
+
+TileDataPointers_1eb61:
+ dw TileDataPointers_1eb6b
+ dw TileDataPointers_1eb75
+ dw TileDataPointers_1eb7f
+ dw TileDataPointers_1eb87
+ dw TileDataPointers_1eb8f
+
+TileDataPointers_1eb6b: ; 0x1eb6b
+ dw TileData_1eb97
+ dw TileData_1eb9a
+ dw TileData_1eb9d
+ dw TileData_1eba0
+ dw TileData_1eba3
+
+TileDataPointers_1eb75: ; 0x1eb75
+ dw TileData_1eba6
+ dw TileData_1eba9
+ dw TileData_1ebac
+ dw TileData_1ebaf
+ dw TileData_1ebb2
+
+TileDataPointers_1eb7f: ; 0x1eb7f
+ dw TileData_1ebb5
+ dw TileData_1ebb8
+ dw TileData_1ebbb
+ dw TileData_1ebbe
+
+TileDataPointers_1eb87: ; 0x1eb87
+ dw TileData_1ebc1
+ dw TileData_1ebc6
+ dw TileData_1ebcb
+ dw TileData_1ebd0
+
+TileDataPointers_1eb8f: ; 0x1eb8f
+ dw TileData_1ebd5
+ dw TileData_1ebda
+ dw TileData_1ebdf
+ dw TileData_1ebe4
+
+TileData_1eb97: ; 0x1eb97
+ db $01
+ dw TileData_1ebe9
+
+TileData_1eb9a: ; 0x1eb9a
+ db $01
+ dw TileData_1ebf9
+
+TileData_1eb9d: ; 0x1eb9d
+ db $01
+ dw TileData_1ec09
+
+TileData_1eba0: ; 0x1eba0
+ db $01
+ dw TileData_1ec19
+
+TileData_1eba3: ; 0x1eba3
+ db $01
+ dw TileData_1ec29
+
+TileData_1eba6: ; 0x1eba6
+ db $01
+ dw TileData_1ec39
+
+TileData_1eba9: ; 0x1eba9
+ db $01
+ dw TileData_1ec49
+
+TileData_1ebac: ; 0x1ebac
+ db $01
+ dw TileData_1ec59
+
+TileData_1ebaf: ; 0x1ebaf
+ db $01
+ dw TileData_1ec69
+
+TileData_1ebb2: ; 0x1ebb2
+ db $01
+ dw TileData_1ec79
+
+TileData_1ebb5: ; 0x1ebb5
+ db $01
+ dw TileData_1ec89
+
+TileData_1ebb8: ; 0x1ebb8
+ db $01
+ dw TileData_1ec93
+
+TileData_1ebbb: ; 0x1ebbb
+ db $01
+ dw TileData_1ec9d
+
+TileData_1ebbe: ; 0x1ebbe
+ db $01
+ dw TileData_1eca7
+
+TileData_1ebc1: ; 0x1ebc1
+ db $02
+ dw TileData_1ecb1
+ dw TileData_1ecbb
+
+TileData_1ebc6: ; 0x1ebc6
+ db $02
+ dw TileData_1ecc5
+ dw TileData_1eccf
+
+TileData_1ebcb: ; 0x1ebcb
+ db $02
+ dw TileData_1ecd9
+ dw TileData_1ece3
+
+TileData_1ebd0: ; 0x1ebd0
+ db $02
+ dw TileData_1eced
+ dw TileData_1ecf7
+
+TileData_1ebd5: ; 0x1ebd5
+ db $02
+ dw TileData_1ed01
+ dw TileData_1ed0b
+
+TileData_1ebda: ; 0x1ebda
+ db $02
+ dw TileData_1ed15
+ dw TileData_1ed1f
+
+TileData_1ebdf: ; 0x1ebdf
+ db $02
+ dw TileData_1ed01
+ dw TileData_1ed0b
+
+TileData_1ebe4: ; 0x1ebe4
+ db $02
+ dw TileData_1ed15
+ dw TileData_1ed1f
+
+TileData_1ebe9: ; 0x1ebe9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3D
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $17
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ebf9: ; 0x1ebf9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3E
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $17
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ec09: ; 0x1ec09
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3E
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $18
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ec19: ; 0x1ec19
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3E
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $18
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3E
+
+ db $00 ; terminator
+
+TileData_1ec29: ; 0x1ec29
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3D
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $18
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ec39: ; 0x1ec39
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $3F
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1D
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $3F
+
+ db $00 ; terminator
+
+TileData_1ec49: ; 0x1ec49
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1D
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $3F
+
+ db $00 ; terminator
+
+TileData_1ec59: ; 0x1ec59
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1E
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $3F
+
+ db $00 ; terminator
+
+TileData_1ec69: ; 0x1ec69
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1E
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $40
+
+ db $00 ; terminator
+
+TileData_1ec79: ; 0x1ec79
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1D
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $40
+
+ db $00 ; terminator
+
+TileData_1ec89: ; 0x1ec89
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageBlueFieldBottomBaseGameBoyGfx + $950
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ec93: ; 0x1ec93
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ec9d: ; 0x1ec9d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1eca7: ; 0x1eca7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ecb1: ; 0x1ecb1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageBlueFieldBottomBaseGameBoyGfx + $990
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ecbb: ; 0x1ecbb
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageBlueFieldBottomBaseGameBoyGfx + $9B0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ecc5: ; 0x1ecc5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2270
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1eccf: ; 0x1eccf
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2290
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ecd9: ; 0x1ecd9
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ece3: ; 0x1ece3
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22D0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1eced: ; 0x1eced
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ecf7: ; 0x1ecf7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2310
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed01: ; 0x1ed01
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A30
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ed0b: ; 0x1ed0b
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A50
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ed15: ; 0x1ed15
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed1f: ; 0x1ed1f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed29: ; 0x1ed29
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed33: ; 0x1ed33
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e3d: ; 0x1e3d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed47: ; 0x1ed47
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1CA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_1ed51: ; 0x1ed51
+ dw TileDataPointers_1ed5b
+ dw TileDataPointers_1ed65
+ dw TileDataPointers_1ed6f
+ dw TileDataPointers_1ed77
+ dw TileDataPointers_1ed7f
+
+TileDataPointers_1ed5b: ; 0x1ed5b
+ dw TileData_1ed87
+ dw TileData_1ed8a
+ dw TileData_1ed8d
+ dw TileData_1ed90
+ dw TileData_1ed93
+
+TileDataPointers_1ed65: ; 0x1ed65
+ dw TileData_1ed96
+ dw TileData_1ed99
+ dw TileData_1ed9c
+ dw TileData_1ed9f
+ dw TileData_1eda2
+
+TileDataPointers_1ed6f: ; 0x1ed6f
+ dw TileData_1eda5
+ dw TileData_1eda8
+ dw TileData_1edab
+ dw TileData_1edae
+
+TileDataPointers_1ed77: ; 0x1ed77
+ dw TileData_1edb1
+ dw TileData_1edb4
+ dw TileData_1edb7
+ dw TileData_1edba
+
+TileDataPointers_1ed7f: ; 0x1ed7f
+ dw TileData_1edbd
+ dw TileData_1edc0
+ dw TileData_1edc3
+ dw TileData_1edc6
+
+TileData_1ed87: ; 0x1ed87
+ db $01
+ dw TileData_1edc9
+
+TileData_1ed8a: ; 0x1ed8a
+ db $01
+ dw TileData_1edd9
+
+TileData_1ed8d: ; 0x1ed8d
+ db $01
+ dw TileData_1ede9
+
+TileData_1ed90: ; 0x1ed90
+ db $01
+ dw TileData_1edf9
+
+TileData_1ed93: ; 0x1ed93
+ db $01
+ dw TileData_1ee09
+
+TileData_1ed96: ; 0x1ed96
+ db $01
+ dw TileData_1ee19
+
+TileData_1ed99: ; 0x1ed99
+ db $01
+ dw TileData_1ee29
+
+TileData_1ed9c: ; 0x1ed9c
+ db $01
+ dw TileData_1ee39
+
+TileData_1ed9f: ; 0x1ed9f
+ db $01
+ dw TileData_1ee49
+
+TileData_1eda2: ; 0x1eda2
+ db $01
+ dw TileData_1ee59
+
+TileData_1eda5: ; 0x1eda5
+ db $01
+ dw TileData_1ee69
+
+TileData_1eda8: ; 0x1eda8
+ db $01
+ dw TileData_1ee75
+
+TileData_1edab: ; 0x1edab
+ db $01
+ dw TileData_1ee81
+
+TileData_1edae: ; 0x1edae
+ db $01
+ dw TileData_1ee8d
+
+TileData_1edb1: ; 0x1edb1
+ db $01
+ dw TileData_1ee99
+
+TileData_1edb4: ; 0x1edb4
+ db $01
+ dw TileData_1eea7
+
+TileData_1edb7: ; 0x1edb7
+ db $01
+ dw TileData_1eeb5
+
+TileData_1edba: ; 0x1edba
+ db $01
+ dw TileData_1eec3
+
+TileData_1edbd: ; 0x1edbd
+ db $01
+ dw TileData_1eed1
+
+TileData_1edc0: ; 0x1edc0
+ db $01
+ dw TileData_1eedf
+
+TileData_1edc3: ; 0x1edc3
+ db $01
+ dw TileData_1eeed
+
+TileData_1edc6: ; 0x1edc6
+ db $01
+ dw TileData_1eefb
+
+TileData_1edc9: ; 0x1edc9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $31
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0D
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1edd9: ; 0x1edd9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $32
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0D
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1ede9: ; 0x1ede9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $32
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0E
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1edf9: ; 0x1edf9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $32
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0E
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7D
+
+ db $00 ; terminator
+
+TileData_1ee09: ; 0x1ee09
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $31
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0E
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1ee19: ; 0x1ee19
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $33
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $0F
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee29: ; 0x1ee29
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $34
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $0F
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee39: ; 0x1ee39
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $34
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $10
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee49: ; 0x1ee49
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $34
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $10
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7F
+
+ db $00 ; terminator
+
+TileData_1ee59: ; 0x1ee59
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $33
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $10
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee69: ; 0x1ee69
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $05
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $06
+
+ db $00 ; terminator
+
+TileData_1ee75: ; 0x1ee75
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $07
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $08
+
+ db $00 ; terminator
+
+TileData_1ee81: ; 0x1ee81
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $09
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $0A
+
+ db $00 ; terminator
+
+TileData_1ee8d: ; 0x1ee8d
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $0B
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $0C
+
+ db $00 ; terminator
+
+TileData_1ee99: ; 0x1ee99
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $26, $27
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $28, $29
+
+ db $00 ; terminator
+
+TileData_1eea7: ; 0x1eea7
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $2A, $2B
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $2C, $2D
+
+ db $00 ; terminator
+
+TileData_1eeb5: ; 0x1eeb5
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $2E, $2F
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $30, $31
+
+ db $00 ; terminator
+
+TileData_1eec3: ; 0x1eec3
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $34, $35
+
+ db $00 ; terminator
+
+TileData_1eed1: ; 0x1eed1
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $16, $17
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $18, $19
+
+ db $00 ; terminator
+
+TileData_1eedf: ; 0x1eedf
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $1A, $1B
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $1C, $1D
+
+ db $00 ; terminator
+
+TileData_1eeed: ; 0x1eeed
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $1E, $1F
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $20, $21
+
+ db $00 ; terminator
+
+TileData_1eefb: ; 0x1eefb
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $22, $23
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $24, $25
+
+ db $00 ; terminator
+
+ResolveBlueStageForceFieldCollision: ; 0x1ef09
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jp z, Func_1ef20
+ cp $1 ; right direction
+ jp z, Func_1ef4d
+ cp $2 ; down direction
+ jp z, Func_1ef7e
+ cp $3 ; left direction
+ jp z, Func_1efae
+ ; fall through
+ ; default to upward forcefield
+
+Func_1ef20: ; 0x1ef20
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jp Func_1efdc
+
+Func_1ef4d: ; 0x1ef4d
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld a, $30
+ sub c
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jp Func_1efdc
+
+Func_1ef7e: ; 0x1ef7e
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, a
+ ld a, $30
+ sub c
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jr Func_1efdc
+
+Func_1efae: ; 0x1efae
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, a
+ ld a, $30
+ sub c
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ ; fall through
+Func_1efdc: ; 0x1efdc
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jp z, Func_1eff3
+ cp $1 ; right direction
+ jp z, Func_1f0be
+ cp $2 ; down direction
+ jp z, Func_1f057
+ cp $3 ; left direction
+ jp z, Func_1f124
+ ; fall through
+ ; default to upward forcefield
+
+Func_1eff3: ; 0x1eff3
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallXVelocity
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f032
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f032
+ pop hl
+ bit 7, h
+ jr z, .asm_1f03e
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f03e
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f057: ; 0x1f057
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallXVelocity
+ bit 2, l
+ ret nz
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ sub c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ sbc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f099
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f099
+ pop hl
+ bit 7, h
+ jr z, .asm_1f0a5
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f0a5
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f0be: ; 0x1f0be
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallYVelocity
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc hl
+ push bc
+ dec de
+ dec de
+ dec de
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ sub c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ sbc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f0ff
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f0ff
+ pop hl
+ bit 7, h
+ jr z, .asm_1f10b
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f10b
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f124: ; 0x1f124
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallYVelocity
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ sub c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ sbc b
+ ld [de], a
+ inc hl
+ push bc
+ dec de
+ dec de
+ dec de
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f165
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f165
+ pop hl
+ bit 7, h
+ jr z, .asm_1f171
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f171
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f18a: ; 0x1f18a
+ ld a, [wd640]
+ cp $0
+ jr z, .asm_1f1b4
+ ld a, [wBlueStageForceFieldDirection]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1f1b5
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1f1a4
+ ld hl, TileDataPointers_1f201
+.asm_1f1a4
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1f1b5)
+ call Func_10aa
+ ld a, $0
+ ld [wd640], a
+.asm_1f1b4
+ ret
+
+TileDataPointers_1f1b5:
+ dw TileData_1f1bd
+ dw TileData_1f1c0
+ dw TileData_1f1c3
+ dw TileData_1f1c6
+
+TileData_1f1bd: ; 0x1f1bd
+ db $01
+ dw TileData_1f1c9
+
+TileData_1f1c0: ; 0x1f1c0
+ db $01
+ dw TileData_1f1d7
+
+TileData_1f1c3: ; 0x1f1c3
+ db $01
+ dw TileData_1f1e5
+
+TileData_1f1c6: ; 0x1f1c6
+ db $01
+ dw TileData_1f1f3
+
+TileData_1f1c9: ; 0x1f1c9
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $70, $71
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $72, $73
+
+ db $00 ; terminator
+
+TileData_1f1d7: ; 0x1f1d7
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $74, $75
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $76, $77
+
+ db $00 ; terminator
+
+TileData_1f1e5: ; 0x1f1e5
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $78, $79
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $7A, $7B
+
+ db $00 ; terminator
+
+TileData_1f1f3: ; 0x1f1f3
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $7C, $7D
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $7E, $7F
+
+ db $00 ; terminator
+
+TileDataPointers_1f201:
+ dw TileData_1f209
+ dw TileData_1f20c
+ dw TileData_1f20f
+ dw TileData_1f212
+
+TileData_1f209: ; 0x1f209
+ db $01
+ dw TileData_1f215
+
+TileData_1f20c: ; 0x1f20c
+ db $01
+ dw TileData_1f228
+
+TileData_1f20f: ; 0x1f20f
+ db $01
+ dw TileData_1f23b
+
+TileData_1f212: ; 0x1f212
+ db $01
+ dw TileData_1f24e
+
+TileData_1f215: ; 0x1f215
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $6C, $6D
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $6E, $6F
+
+ db $02
+ dw vBGMap + $1c9
+ db $70, $71
+
+ db $00 ; terminator
+
+TileData_1f228: ; 0x1f228
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $72, $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $73, $74
+
+ db $02
+ dw vBGMap + $1c9
+ db $75, $80
+
+ db $00 ; terminator
+
+TileData_1f23b: ; 0x1f23b
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $76, $77
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $78, $79
+
+ db $02
+ dw vBGMap + $1c9
+ db $7A, $7B
+
+ db $00 ; terminator
+
+TileData_1f24e: ; 0x1f24e
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $80, $7C
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $7D, $7E
+
+ db $02
+ dw vBGMap + $1c9
+ db $80, $7F
+
+ db $00 ; terminator
+
+Func_1f261: ; 0x1f261
+ call Func_1f27b
+ ret nc
+ ; fall through
+
+Func_1f265: ; 0x1f265
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1f2b9
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, $7
+ ld de, LoadTileLists
+ call Func_10c5
+ ret
+
+Func_1f27b: ; 0x1f27b
+ ld a, [wd624]
+ ld hl, wd625
+ cp [hl]
+ ret z
+ ld a, [wd626]
+ dec a
+ ld [wd626], a
+ jr nz, .asm_1f2a5
+ ld a, [wd625]
+ ld [wd624], a
+ cp $3
+ jr c, .asm_1f2a0
+ ld a, $1
+ ld [wd609], a
+ ld a, $3
+ ld [wd607], a
+.asm_1f2a0
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_1f2a5
+ and $7
+ ret nz
+ ld a, [wd626]
+ bit 3, a
+ jr nz, .asm_1f2b4
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_1f2b4
+ ld a, [wd625]
+ scf
+ ret
+
+TileDataPointers_1f2b9:
+ dw TileData_1f2c1
+ dw TileData_1f2cc
+ dw TileData_1f2d7
+ dw TileData_1f2e2
+
+TileData_1f2c1: ; 0x1f2c1
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $B0, $B1, $B0, $B1, $B0, $B1
+
+ db $00 ; terminator
+
+TileData_1f2cc: ; 0x1f2cc
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $AE, $AF, $B0, $B1, $B0, $B1
+
+ db $00 ; terminator
+
+TileData_1f2d7: ; 0x1f2d7
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $AE, $AF, $AE, $AF, $B0, $B1
+
+ db $00 ; terminator
+
+TileData_1f2e2: ; 0x1f2e2
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $AE, $AF, $AE, $AF, $AE, $AF
+
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm
new file mode 100755
index 0000000..7abab10
--- /dev/null
+++ b/engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm
@@ -0,0 +1,783 @@
+ResolveDiglettBonusGameObjectCollisions: ; 0x19b88
+ call Func_19c52
+ call Func_1aad4
+ call Func_19b92
+ ret
+
+Func_19b92: ; 0x19b92
+ ld a, [wd73a]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd73a], a
+ xor a
+ ld [wc853], a
+ ld [wc873], a
+ ld [wc893], a
+ ld a, $5
+ ld [wc872], a
+ ld a, $7
+ ld [wc892], a
+ call Func_19bbd
+ ret
+
+Func_19bbd: ; 0x19bbd
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_19bda
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_19bd0
+ ld hl, Data_19c16
+.asm_19bd0
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(Data_19bda)
+ call Func_10aa
+ ret
+
+Data_19bda:
+ dw Data_19bde
+ dw Data_19be1
+
+Data_19bde: ; 0x19bde
+ dbw $1, TileListData_19be4
+
+Data_19be1: ; 0x19be1
+ dbw $1, TileListData_19bfd
+
+TileListData_19be4: ; 0x19be4
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $4E, $4F
+ db $02
+ dw vBGMap + $133
+ db $80, $4D
+ db $03
+ dw vBGMap + $152
+ db $80, $4B, $4C
+ db $02
+ dw vBGMap + $172
+ db $49, $4A
+ db $00 ; terminator
+
+TileListData_19bfd: ; 0x19bfd
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $1D, $FB
+ db $02
+ dw vBGMap + $133
+ db $1B, $FA
+ db $03
+ dw vBGMap + $152
+ db $18, $19, $FB
+ db $02
+ dw vBGMap + $172
+ db $14, $15
+ db $00 ; terminator
+
+Data_19c16:
+ dw Data_19c1a
+ dw Data_19c1d
+
+Data_19c1a: ; 0x19c1a
+ dbw $1, Data_19c20
+
+Data_19c1d: ; 0x19c1d
+ dbw $1, Data_19c39
+
+Data_19c20: ; 0x19c20
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $4E, $4F
+ db $02
+ dw vBGMap + $133
+ db $80, $4D
+ db $03
+ dw vBGMap + $152
+ db $80, $4B, $4C
+ db $02
+ dw vBGMap + $172
+ db $49, $4A
+ db $00 ; terminator
+
+Data_19c39: ; 0x19c39
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $1D, $FB
+ db $02
+ dw vBGMap + $133
+ db $1B, $FA
+ db $03
+ dw vBGMap + $152
+ db $18, $19, $FB
+ db $02
+ dw vBGMap + $172
+ db $14, $15
+ db $00 ; terminator
+
+Func_19c52: ; 0x19c52
+ ld a, [wd73b]
+ and a
+ jr z, .asm_19cc8
+ xor a
+ ld [wd73b], a
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ lb de, $00, $35
+ call PlaySoundEffect
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wd73c]
+ sub $1
+ ld c, a
+ ld b, $0
+ ld hl, wDiglettStates
+ add hl, bc
+ ld a, [hl]
+ cp $6
+ jr nc, .asm_19cc8
+ ld a, $8
+ ld [hl], a
+ call Func_19da8
+ call Func_19df0
+ ld hl, wDiglettStates
+ ld bc, NUM_DIGLETTS << 8
+ xor a
+.asm_19ca0
+ ld a, [hli]
+ and a
+ jr z, .asm_19ca8
+ cp $6
+ jr c, .asm_19ca9
+.asm_19ca8
+ inc c
+.asm_19ca9
+ dec b
+ jr nz, .asm_19ca0
+ ld a, c
+ cp NUM_DIGLETTS
+ jr nz, .asm_19cc8
+ ld hl, AnimationData_1ac75
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wDugrioState], a
+ call Func_1ac2c
+ ld de, $0002
+ call PlaySong
+.asm_19cc8
+ call Func_19cdd
+ ld a, [wd765]
+ and a
+ ret nz
+ ld a, $1
+ ld [wd765], a
+ ld a, [wDugrioState]
+ and a
+ call nz, Func_1ac2c
+ ret
+
+Func_19cdd: ; 0x19cdd
+ ld a, [wDiglettsInitializedFlag]
+ and a
+ jr nz, .alreadyInitializedDigletts
+ ld a, [wDiglettInitDelayCounter]
+ add DIGLETT_INITIALIZE_DELAY
+ ld [wDiglettInitDelayCounter], a
+ ret nc
+ ld hl, DiglettInitializeOrder
+ ld a, [wCurrentDiglett]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld b, $1
+.asm_19cf8
+ push bc
+ ld a, [hli]
+ bit 7, a
+ jr z, .asm_19d02
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+.asm_19d02
+ push hl
+ ld c, a
+ ld b, $0
+ ld hl, wDiglettStates
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_19d29
+ dec a
+ jr nz, .asm_19d21
+ ; pick a random starting state for the diglett that isn't the "hiding" state
+ call GenRandom
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+ call Func_19dcd
+ jr .asm_19d29
+
+.asm_19d21
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+.asm_19d29
+ pop hl
+ pop bc
+ dec b
+ jr nz, .asm_19cf8
+ ld hl, wDiglettsInitializedFlag
+ ld a, [wCurrentDiglett]
+ add $1
+ cp NUM_DIGLETTS
+ jr c, .notDoneInitializingDigletts
+ set 0, [hl]
+ sub NUM_DIGLETTS
+.notDoneInitializingDigletts
+ ld [wCurrentDiglett], a
+ ret
+
+.alreadyInitializedDigletts
+ ld hl, DiglettUpdateOrder
+ ld a, [wCurrentDiglett]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld b, $4 ; update 4 digletts
+.updateDiglettLoop
+ push bc
+ ld a, [hli]
+ bit 7, a
+ jr z, .asm_19d58
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+.asm_19d58
+ push hl
+ ld c, a
+ ld b, $0
+ ld hl, wDiglettStates
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_19d8f
+ dec a
+ jr nz, .asm_19d77
+ call GenRandom
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+ call Func_19dcd
+ jr .asm_19d8f
+
+.asm_19d77
+ cp $5
+ jr c, .incrementDiglettState
+ ld [hl], a
+ jr nz, .asm_19d8f
+ xor a
+ ld [hl], a
+ ld a, $1
+ call Func_19da8
+ jr .asm_19d8f
+
+.incrementDiglettState
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+.asm_19d8f
+ pop hl
+ pop bc
+ dec b
+ jr nz, .updateDiglettLoop
+ ld hl, wDiglettsInitializedFlag
+ ld a, [wCurrentDiglett]
+ add $4
+ cp NUM_DIGLETTS
+ jr c, .asm_19da4
+ set 0, [hl]
+ sub NUM_DIGLETTS
+.asm_19da4
+ ld [wCurrentDiglett], a
+ ret
+
+Func_19da8: ; 0x19da8
+; input: a = diglett state
+; c = diglett index
+ cp $6
+ jr c, .asm_19dae
+ ld a, $6 ; "getting hit" state
+.asm_19dae
+ push bc
+ ld b, a
+ sla c
+ ld a, c
+ sla c
+ add c
+ add b ; a = (index * 6) + state
+ dec a
+ ld c, a
+ ld b, $0 ; bc = (index * 6) + state - 1
+ sla c
+ rl b ; bc = 2 * ((index * 6) + state - 1)
+ ld hl, DiglettTileDataPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(DiglettTileDataPointers)
+ call Func_10aa
+ pop bc
+ ret
+
+Func_19dcd: ; 0x19dcd
+ sla c
+ ld a, c
+ sla c
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, Data_19e13
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld a, e
+ add $1f
+ ld e, a
+ jr nc, .asm_19dea
+ inc d
+.asm_19dea
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ret
+
+Func_19df0: ; 0x19df0
+ sla c
+ ld a, c
+ sla c
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, Data_19e13
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, $2
+ ld [de], a
+ inc de
+ ld [de], a
+ ld a, e
+ add $1f
+ ld e, a
+ jr nc, .asm_19e0d
+ inc d
+.asm_19e0d
+ ld a, $2
+ ld [de], a
+ inc de
+ ld [de], a
+ ret
+
+Data_19e13:
+ dw wc7a1
+ db $19, $19, $1A, $1B
+
+ dw wc7e1
+ db $1C, $1C, $1D, $1E
+
+ dw wc821
+ db $1F, $1F, $20, $21
+
+ dw wc7c3
+ db $22, $22, $23, $24
+
+ dw wc803
+ db $25, $25, $26, $27
+
+ dw wc843
+ db $28, $28, $29, $2A
+
+ dw wc7a5
+ db $2B, $2B, $2C, $2D
+
+ dw wc7e5
+ db $2E, $2E, $2F, $30
+
+ dw wc825
+ db $31, $31, $32, $33
+
+ dw wc865
+ db $34, $34, $35, $36
+
+ dw wc7c7
+ db $37, $37, $38, $39
+
+ dw wc807
+ db $3A, $3A, $3B, $3C
+
+ dw wc847
+ db $3D, $3D, $3E, $3F
+
+ dw wc887
+ db $40, $40, $41, $42
+
+ dw wc7e9
+ db $43, $43, $44, $45
+
+ dw wc829
+ db $46, $46, $47, $48
+
+ dw wc869
+ db $49, $49, $4A, $4B
+
+ dw wc7cb
+ db $19, $19, $1A, $1B
+
+ dw wc80b
+ db $1C, $1C, $1D, $1E
+
+ dw wc84b
+ db $1F, $1F, $20, $21
+
+ dw wc88b
+ db $22, $22, $23, $24
+
+ dw wc7ad
+ db $25, $25, $26, $27
+
+ dw wc7ed
+ db $28, $28, $29, $2A
+
+ dw wc82d
+ db $2B, $2B, $2C, $2D
+
+ dw wc86d
+ db $2E, $2E, $2F, $30
+
+ dw wc7cf
+ db $31, $31, $32, $33
+
+ dw wc80f
+ db $34, $34, $35, $36
+
+ dw wc84f
+ db $37, $37, $38, $39
+
+ dw wc7b1
+ db $3A, $3A, $3B, $3C
+
+ dw wc7f1
+ db $3D, $3D, $3E, $3F
+
+ dw wc831
+ db $40, $40, $41, $42
+
+ ; unused pointers?
+ dw DiglettInitializeOrder
+ dw DiglettUpdateOrder
+
+INCLUDE "data/diglett_stage/diglett_stage_animation_data.asm"
+
+Func_1aad4: ; 0x1aad4
+ ld a, [wd75f]
+ and a
+ jr z, .asm_1ab2c
+ xor a
+ ld [wd75f], a
+ ld a, [wDugrioState]
+ bit 0, a
+ jr z, .asm_1ab2c
+ cp $7
+ jr z, .asm_1ab2c
+ inc a
+ ld [wDugrioState], a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_1ac62
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueue
+ lb de, $00, $36
+ call PlaySoundEffect
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+.asm_1ab2c
+ call Func_1ab30
+ ret
+
+Func_1ab30: ; 0x1ab30
+ ld a, [wDugrioState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_1ac62
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wDugtrioAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wDugrioState]
+ and a
+ ret z
+ cp $1
+ jr nz, .asm_1ab64
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $3
+ ret nz
+ ld hl, AnimationData_1ac75
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wDugrioState], a
+ ret
+
+.asm_1ab64
+ cp $2
+ jr nz, .asm_1ab7d
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, AnimationData_1ac7f
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $3
+ ld [wDugrioState], a
+ ret
+
+.asm_1ab7d
+ cp $3
+ jr nz, .asm_1ab96
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $3
+ ret nz
+ ld hl, AnimationData_1ac7f
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $3
+ ld [wDugrioState], a
+ ret
+
+.asm_1ab96
+ cp $4
+ jr nz, .asm_1abaf
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, AnimationData_1ac89
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $5
+ ld [wDugrioState], a
+ ret
+
+.asm_1abaf
+ cp $5
+ jr nz, .asm_1abc8
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $3
+ ret nz
+ ld hl, AnimationData_1ac89
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $5
+ ld [wDugrioState], a
+ ret
+
+.asm_1abc8
+ cp $6
+ jr nz, .asm_1abe1
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, AnimationData_1ac93
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $7
+ ld [wDugrioState], a
+ ret
+
+.asm_1abe1
+ cp $7
+ ret nz
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_1abf2
+ ld de, $0000
+ call PlaySong
+ ret
+
+.asm_1abf2
+ cp $2
+ ret nz
+ ld hl, AnimationData_1ac72
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ xor a
+ ld [wDugrioState], a
+ ld [wd498], a
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, DiglettStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ ld hl, Data_1ac56
+ jr asm_1ac2f
+
+Func_1ac2c: ; 0x1ac2c
+ ld hl, Data_1ac4a
+asm_1ac2f:
+ ld de, wc768
+ ld b, $3
+.asm_1ac34
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld a, e
+ add $1d
+ ld e, a
+ jr nc, .asm_1ac46
+ inc d
+.asm_1ac46
+ dec b
+ jr nz, .asm_1ac34
+ ret
+
+Data_1ac4a:
+ db $00, $00, $00, $00
+ db $14, $14, $14, $14
+ db $15, $16, $17, $18
+
+Data_1ac56:
+ db $50, $02, $02, $51
+ db $02, $02, $02, $02
+ db $02, $02, $02, $02
+
+AnimationDataPointers_1ac62: ; 0x1ac62
+ dw AnimationData_1ac72
+ dw AnimationData_1ac75
+ dw AnimationData_1ac7c
+ dw AnimationData_1ac7f
+ dw AnimationData_1ac86
+ dw AnimationData_1ac89
+ dw AnimationData_1ac90
+ dw AnimationData_1ac93
+
+AnimationData_1ac72: ; 0x1ac72
+; Each entry is [duration][OAM id]
+ db $01, $0C
+ db $00 ; terminator
+
+AnimationData_1ac75: ; 0x1ac75
+; Each entry is [duration][OAM id]
+ db $0E, $00
+ db $0E, $01
+ db $0E, $02
+ db $00 ; terminator
+
+AnimationData_1ac7c: ; 0x1ac7c
+; Each entry is [duration][OAM id]
+ db $0D, $03
+ db $00 ; terminator
+
+AnimationData_1ac7f: ; 0x1ac7f
+; Each entry is [duration][OAM id]
+ db $0E, $04
+ db $0E, $05
+ db $0E, $06
+ db $00
+
+AnimationData_1ac86: ; 0x1ac86
+; Each entry is [duration][OAM id]
+ db $0D, $07
+ db $00 ; terminator
+
+AnimationData_1ac89: ; 0x1ac89
+; Each entry is [duration][OAM id]
+ db $0E, $08
+ db $0E, $09
+ db $0E, $0A
+ db $00
+
+AnimationData_1ac90: ; 0x1ac90
+; Each entry is [duration][OAM id]
+ db $0D, $0B
+ db $00 ; terminator
+
+AnimationData_1ac93: ; 0x1ac93
+; Each entry is [duration][OAM id]
+ db $01, $0D
+ db $40, $0D
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm
new file mode 100755
index 0000000..5d37c22
--- /dev/null
+++ b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm
@@ -0,0 +1,1445 @@
+ResolveGengarBonusGameObjectCollisions: ; 0x18377
+ call Func_18464
+ call Func_1860b
+ call Func_187b1
+ call Func_18d34
+ call Func_183b7
+ callba Func_107f8
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, [wd6a2]
+ cp $5
+ ret nc
+ ld a, $1
+ ld [wd6a8], a
+ ret
+
+Func_183b7: ; 0x183b7
+ ld a, [wd653]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd653], a
+ callba LoadStageCollisionAttributes
+ call Func_183db
+ call Func_18d91
+ ret
+
+Func_183db: ; 0x183db
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_183f8
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_183ee
+ ld hl, TileDataPointers_1842e
+.asm_183ee
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, BANK(TileDataPointers_183f8)
+ call Func_10aa
+ ret
+
+TileDataPointers_183f8:
+ dw TileData_183fc
+ dw TileData_183ff
+
+TileData_183fc: ; 0x183fc
+ db $01
+ dw TileData_18402
+
+TileData_183ff: ; 0x183ff
+ db $01
+ dw TileData_18418
+
+TileData_18402: ; 0x18402
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $D4
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $D5, $D6
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $D9, $D7
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $D8
+
+ db $00 ; terminator
+
+TileData_18418: ; 0x18418
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $12
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $0C, $0D
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $07, $08
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $03
+
+ db $00 ; terminator
+
+TileDataPointers_1842e:
+ dw TileData_18432
+ dw TileData_18435
+
+TileData_18432: ; 0x18432
+ db $01
+ dw TileData_18438
+
+TileData_18435: ; 0x18435
+ db $01
+ dw TileData_1844e
+
+TileData_18438: ; 0x18438
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $D4
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $D5, $D6
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $D9, $D7
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $D8
+
+ db $00 ; terminator
+
+TileData_1844e: ; 0x1844e
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $21
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $15, $16
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $0A, $0B
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $03
+
+ db $00 ; terminator
+
+Func_18464: ; 0x18464
+ ld a, [wd659]
+ and a
+ ret z
+ ld a, [wd657]
+ and a
+ jr z, .asm_184d5
+ xor a
+ ld [wd657], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_184d5
+ ld a, [wd658]
+ sub $5
+ ld c, a
+ sla a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd65d
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jr nz, .asm_184d5
+ push de
+ dec de
+ dec de
+ dec de
+ ld hl, AnimationData_185e6
+ call CopyHLToDE
+ pop de
+ ld a, $1
+ ld [de], a
+ ld a, [wd67b]
+ inc a
+ ld [wd67b], a
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $2c
+ call PlaySoundEffect
+.asm_184d5
+ ld bc, $0830
+ ld de, wd65d
+ ld hl, wd675
+ call Func_1850c
+ ld bc, $5078
+ ld de, wd666
+ ld hl, wd677
+ call Func_1850c
+ ld bc, $3050
+ ld de, wd66f
+ ld hl, wd679
+ call Func_1850c
+ ld de, wd65d
+ call Func_18562
+ ld de, wd666
+ call Func_18562
+ ld de, wd66f
+ call Func_18562
+ ret
+
+Func_1850c: ; 0x1850c
+ ld a, [de]
+ and a
+ ret nz
+ inc de
+ push hl
+ ld a, [hli]
+ push af
+ push bc
+ ld a, [hl]
+ inc a
+ and $1f
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ ld hl, GastlyData_18542
+ add hl, bc
+ pop bc
+ pop af
+ and a
+ jr nz, .asm_18534
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ adc $0
+ ld [de], a
+ pop hl
+ cp c
+ ret c
+ ld a, $1
+ ld [hl], a
+ ret
+
+.asm_18534
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ sbc $0
+ ld [de], a
+ pop hl
+ cp b
+ ret nc
+ xor a
+ ld [hl], a
+ ret
+
+GastlyData_18542: ; 0x18542
+; Might be floating y offsets, not sure at the moment.
+ db $31, $32, $33, $34, $35, $36, $37, $36
+ db $35, $34, $33, $32, $33, $34, $35, $36
+ db $37, $38, $39, $3A, $3B, $3A, $39, $38
+ db $37, $36, $35, $34, $33, $32, $31, $30
+
+Func_18562: ; 0x18562
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_185d9
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ dec de
+ and a
+ jr nz, .asm_1858a
+ ld a, [de]
+ cp $4
+ ret nz
+ ld hl, AnimationData_185dd
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+.asm_1858a
+ cp $1
+ ret nz
+ ld a, [de]
+ cp $12
+ ret nz
+ ld a, [wd67b]
+ cp $a
+ jr nz, .asm_185b1
+ ld a, $1
+ ld [wd67e], a
+ ld [wd687], a
+ xor a
+ ld [wd659], a
+ ld [wd662], a
+ ld [wd66b], a
+ ld de, $0006
+ call PlaySong
+ ret
+
+.asm_185b1
+ ld c, a
+ ld a, [wd65d]
+ and a
+ jr nz, .asm_185b9
+ inc c
+.asm_185b9
+ ld a, [wd666]
+ and a
+ jr nz, .asm_185c0
+ inc c
+.asm_185c0
+ ld a, [wd66f]
+ and a
+ jr nz, .asm_185c7
+ inc c
+.asm_185c7
+ ld a, c
+ cp $a
+ ret nc
+ ld hl, AnimationData_185dd
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ret
+
+AnimationDataPointers_185d9:
+ dw AnimationData_185dd
+ dw AnimationData_185e6
+
+AnimationData_185dd: ; 0x185dd
+; Each entry is [duration][OAM id]
+ db $0D, $01
+ db $0D, $00
+ db $0D, $02
+ db $0D, $00
+ db $00 ; terminator
+
+AnimationData_185e6: ; 0x185e6
+; Each entry is [duration][OAM id]
+ db $05, $03
+ db $04, $03
+ db $04, $04
+ db $04, $03
+ db $04, $04
+ db $03, $03
+ db $03, $04
+ db $03, $03
+ db $03, $04
+ db $02, $03
+ db $02, $04
+ db $02, $03
+ db $02, $04
+ db $01, $03
+ db $01, $04
+ db $01, $03
+ db $01, $04
+ db $80, $04
+ db $00 ; terminator
+
+Func_1860b: ; 0x1860b
+ ld a, [wd67e]
+ and a
+ ret z
+ ld a, [wd67c]
+ and a
+ jr z, .asm_1867c
+ xor a
+ ld [wd67c], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_1867c
+ ld a, [wd67d]
+ sub $8
+ ld c, a
+ sla a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd682
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jr nz, .asm_1867c
+ push de
+ dec de
+ dec de
+ dec de
+ ld hl, AnimationData_1878a
+ call CopyHLToDE
+ pop de
+ ld a, $1
+ ld [de], a
+ ld a, [wd695]
+ inc a
+ ld [wd695], a
+ ld bc, FiveHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $2d
+ call PlaySoundEffect
+.asm_1867c
+ ld bc, $5078
+ ld de, wd682
+ ld hl, wd691
+ call Func_186a1
+ ld bc, $1038
+ ld de, wd68b
+ ld hl, wd693
+ call Func_186a1
+ ld de, wd682
+ call Func_186f7
+ ld de, wd68b
+ call Func_186f7
+ ret
+
+Func_186a1: ; 0x186a1
+ ld a, [de]
+ and a
+ ret nz
+ inc de
+ push hl
+ ld a, [hli]
+ push af
+ push bc
+ ld a, [hl]
+ inc a
+ and $1f
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ ld hl, HaunterData_186d7
+ add hl, bc
+ pop bc
+ pop af
+ and a
+ jr nz, .asm_186c9
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ adc $0
+ ld [de], a
+ pop hl
+ cp c
+ ret c
+ ld a, $1
+ ld [hl], a
+ ret
+
+.asm_186c9
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ sbc $0
+ ld [de], a
+ pop hl
+ cp b
+ ret nc
+ xor a
+ ld [hl], a
+ ret
+
+HaunterData_186d7:
+; Might be floating y offsets, not sure at the moment.
+ db $31, $32, $33, $34, $35, $36, $37, $36
+ db $35, $34, $33, $32, $33, $34, $35, $36
+ db $37, $38, $39, $3A, $3B, $3A, $39, $38
+ db $37, $36, $35, $34, $33, $32, $31, $30
+
+Func_186f7: ; 0x186f7
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_1877d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ dec de
+ and a
+ jr nz, .asm_1871f
+ ld a, [de]
+ cp $4
+ ret nz
+ ld hl, AnimationData_18781
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+.asm_1871f
+ cp $1
+ ret nz
+ ld a, [de]
+ cp $12
+ jr nz, .asm_18761
+ ld a, [wd695]
+ cp $a
+ jr nz, .asm_18740
+ ld a, $1
+ ld [wd656], a
+ call Func_18d72
+ call Func_18d91
+ ld de, $0000
+ call PlaySong
+ ret
+
+.asm_18740
+ ld c, a
+ ld a, [wd682]
+ and a
+ jr nz, .asm_18748
+ inc c
+.asm_18748
+ ld a, [wd68b]
+ and a
+ jr nz, .asm_1874f
+ inc c
+.asm_1874f
+ ld a, c
+ cp $a
+ ret nc
+ ld hl, AnimationData_18781
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ret
+
+.asm_18761
+ cp $13
+ ret nz
+ ld a, [wd695]
+ cp $a
+ ret nz
+ ld a, $1
+ ld [wd698], a
+ xor a
+ ld [wd67e], a
+ ld [wd687], a
+ ld de, GENGAR
+ call PlayCry
+ ret
+
+AnimationDataPointers_1877d:
+ dw AnimationData_18781
+ dw AnimationData_1878a
+
+AnimationData_18781:
+; Each entry is [duration][OAM id]
+ db $0D, $00
+ db $0D, $01
+ db $0D, $02
+ db $0D, $03
+ db $00 ; terminator
+
+AnimationData_1878a:
+; Each entry is [duration][OAM id]
+ db $05, $04
+ db $04, $04
+ db $04, $05
+ db $04, $04
+ db $04, $05
+ db $03, $04
+ db $03, $05
+ db $03, $04
+ db $03, $05
+ db $02, $04
+ db $02, $05
+ db $02, $04
+ db $02, $05
+ db $01, $04
+ db $01, $05
+ db $01, $04
+ db $01, $05
+ db $80, $05
+ db $10, $05
+ db $00 ; terminator
+
+Func_187b1: ; 0x187b1
+ ld a, [wd698]
+ and a
+ ret z
+ ld a, [wd696]
+ and a
+ jp z, .asm_1885d
+ xor a
+ ld [wd696], a
+ ld a, [wd7be]
+ and a
+ jp nz, .asm_1885d
+ ld a, [wd697]
+ sub $a
+ ld c, a
+ sla a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd69c
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jp nz, .asm_1885d
+ push de
+ dec de
+ dec de
+ dec de
+ ld a, [wd6a2]
+ inc a
+ ld [wd6a2], a
+ cp $5
+ jr nc, .asm_18804
+ ld hl, AnimationData_18b2b
+ call CopyHLToDE
+ pop de
+ ld a, $2
+ ld [de], a
+ lb de, $00, $37
+ call PlaySoundEffect
+ jr .asm_18826
+
+.asm_18804
+ ld hl, AnimationData_18b32
+ call CopyHLToDE
+ pop de
+ ld a, $3
+ ld [de], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld de, $0000
+ call PlaySong
+.asm_18826
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueue
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $ff
+ ld [wGengarYPos + 1], a
+.asm_1885d
+ ld a, [wd69c]
+ cp $2
+ jr nc, .asm_18869
+ call Func_18876
+ jr .asm_1886c
+
+.asm_18869
+ call Func_188e1
+.asm_1886c
+ ld de, wd69c
+ call Func_189af
+ call Func_1894c
+ ret
+
+Func_18876: ; 0x18876
+ ld a, [wd6a3]
+ cp $1
+ jr z, .asm_1889b
+ cp $2
+ jr z, .asm_1889b
+ ld a, [wGengarAnimationState]
+ cp $1
+ jr z, .asm_1888c
+ cp $2
+ jr nz, .asm_1889b
+.asm_1888c
+ ld a, $1
+ ld [wd6a4], a
+ ld a, $11
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+.asm_1889b
+ ld a, [wGengarAnimationState]
+ ld hl, wd6a3
+ cp [hl]
+ ret z
+ ld a, [wd69c]
+ and a
+ jr nz, .asm_188da
+ ld a, [wGengarYPos + 1]
+ add $80
+ cp $a0
+ jr nc, .asm_188da
+ ld a, [wGengarAnimationState]
+ and a
+ jr z, .asm_188ca
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $3
+ ld [wGengarYPos + 1], a
+ jr .asm_188da
+
+.asm_188ca
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $1
+ ld [wGengarYPos + 1], a
+.asm_188da
+ ld a, [wGengarAnimationState]
+ ld [wd6a3], a
+ ret
+
+Func_188e1: ; 0x188e1
+ ld a, [wd6a3]
+ cp $1
+ jr z, .asm_18901
+ cp $2
+ jr z, .asm_18901
+ ld a, [wGengarAnimationState]
+ cp $1
+ jr z, .asm_188f7
+ cp $2
+ jr nz, .asm_18901
+.asm_188f7
+ ld a, $1
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+.asm_18901
+ ld a, [wGengarAnimationState]
+ cp $6
+ ret z
+ ld a, [wGengarAnimationState]
+ ld hl, wd6a3
+ cp [hl]
+ ret z
+ ld a, [wd69c]
+ cp $3
+ jr nz, .asm_1891d
+ ld a, [wd69b]
+ cp $9
+ jr c, .asm_18945
+.asm_1891d
+ ld a, [wGengarAnimationState]
+ and a
+ jr z, .asm_18935
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $fd
+ ld [wGengarYPos + 1], a
+ jr .asm_18945
+
+.asm_18935
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $ff
+ ld [wGengarYPos + 1], a
+.asm_18945
+ ld a, [wGengarAnimationState]
+ ld [wd6a3], a
+ ret
+
+Func_1894c: ; 0x1894c
+ ld a, [wd6a6]
+ and a
+ jr nz, .asm_1898f
+ ld a, [wd6a4]
+ and a
+ jr z, .asm_1898f
+ ld a, [wd6a5]
+ cp $3
+ jr z, .asm_18980
+ inc a
+ ld [wd6a5], a
+ ld a, [wd548]
+ ld hl, wd549
+ and [hl]
+ jr z, .asm_18973
+ ld a, [wd4b6]
+ inc a
+ ld [wd4b6], a
+.asm_18973
+ ld a, [wd7a0]
+ dec a
+ ld [wd7a0], a
+ ld a, $1
+ ld [wUpperTiltPushing], a
+ ret
+
+.asm_18980
+ lb de, $00, $2b
+ call PlaySoundEffect
+ ld a, $1
+ ld [wd6a6], a
+ xor a
+ ld [wd6a4], a
+.asm_1898f
+ xor a
+ ld [wUpperTiltPushing], a
+ ld a, [wd6a5]
+ and a
+ jr z, .asm_189a5
+ dec a
+ ld [wd6a5], a
+ ld a, [wd7a0]
+ inc a
+ ld [wd7a0], a
+ ret
+
+.asm_189a5
+ ld a, [wd6a4]
+ and a
+ ret nz
+ xor a
+ ld [wd6a6], a
+ ret
+
+Func_189af: ; 0x189af
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_18a57
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ dec de
+ and a
+ jr nz, .asm_189d7
+ ld a, [de]
+ cp $4
+ ret nz
+ ld hl, AnimationData_18a61
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+.asm_189d7
+ cp $1
+ jr nz, .asm_189ed
+ ld a, [de]
+ cp $60
+ ret nz
+ ld hl, AnimationData_18a61
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ret
+
+.asm_189ed
+ cp $2
+ jr nz, .asm_18a04
+ ld a, [de]
+ cp $3
+ ret nz
+ ld hl, AnimationData_18a6a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ ld a, $1
+ ld [de], a
+ ret
+
+.asm_18a04
+ cp $3
+ jr nz, .asm_18a3c
+ ld a, [de]
+ cp $1
+ jr nz, .asm_18a14
+ lb de, $00, $2e
+ call PlaySoundEffect
+ ret
+
+.asm_18a14
+ cp $fe
+ ret nz
+ ld a, $1
+ ld [wd6a8], a
+ ld a, $1
+ ld [wd498], a
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, GengarStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+ ret
+
+.asm_18a3c
+ cp $4
+ ret nz
+ ld a, [de]
+ cp $2
+ ret nz
+ ld hl, AnimationData_18a61
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ld de, $0007
+ call PlaySong
+ ret
+
+AnimationDataPointers_18a57:
+ dw AnimationData_18a61
+ dw AnimationData_18a6a
+ dw AnimationData_18b2b
+ dw AnimationData_18b32
+ dw AnimationData_18d2f
+
+AnimationData_18a61:
+; Each entry is [duration][OAM id]
+ db $40, $01
+ db $10, $00
+ db $40, $02
+ db $10, $00
+ db $00 ; terminator
+
+AnimationData_18a6a:
+; Each entry is [duration][OAM id]
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $01, $00
+ db $01, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $01, $03
+ db $01, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $01, $03
+ db $01, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $01, $04
+ db $01, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $00 ; terminator
+
+AnimationData_18b2b:
+; Each entry is [duration][OAM id]
+ db $10, $05
+ db $20, $01
+ db $08, $00
+ db $00 ; terminator
+
+AnimationData_18b32:
+; Each entry is [duration][OAM id]
+ db $10, $05
+ db $10, $00
+ db $08, $03
+ db $0C, $04
+ db $0A, $03
+ db $10, $00
+ db $08, $03
+ db $0C, $04
+ db $0A, $03
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $02, $01
+ db $01, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $00
+ db $01, $06
+ db $01, $00
+ db $01, $06
+ db $00 ; terminator
+
+AnimationData_18d2f:
+; Each entry is [duration][OAM id]
+ db $40, $00
+ db $40, $00
+ db $00 ; terminator
+
+Func_18d34: ; 0x18d34
+ ld a, [wWhichGravestone]
+ and a
+ jr z, .asm_18d71
+ xor a
+ ld [wWhichGravestone], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_18d71
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueue
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld de, $002f
+ call Func_4d8
+.asm_18d71
+ ret
diff --git a/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm
new file mode 100755
index 0000000..3d911eb
--- /dev/null
+++ b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm
@@ -0,0 +1,3380 @@
+ResolveMeowthBonusGameObjectCollisions: ; 0x2442a
+ ld a, [wd710]
+ jr nz, .asm_2443f
+ ld a, [wMeowthStageBonusCounter]
+ dec a
+ dec a
+ cp $fe
+ jr z, .asm_24447
+ cp $ff
+ jr z, .asm_24447
+ ld [wd79a], a
+.asm_2443f
+ ld de, wd79a
+ call Func_24f00
+ jr .asm_2444b
+
+.asm_24447
+ xor a
+ ld [wd79a], a
+.asm_2444b
+ call Func_244f5
+ call Func_245ab
+ call Func_248ac
+ call Func_24d07
+ ld a, [wMeowthStageScore]
+ cp $14
+ jr c, .asm_24498
+ ld a, [wd712]
+ cp $2
+ jr nc, .asm_24498
+ ld a, [wd498]
+ cp $4
+ ret z
+ ld a, $4
+ ld [wd712], a
+ ld [wd498], a
+ ld a, $96
+ ld [wd739], a
+ ld de, $0000
+ call PlaySong
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, MeowthStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+.asm_24498
+ ld a, [wd712]
+ cp $4
+ jr nz, .asm_244b0
+ ld a, [wSFXTimer]
+ and a
+ jr nz, .asm_244b0
+ ld de, $0004
+ call PlaySong
+ ld a, $5
+ ld [wd712], a
+.asm_244b0
+ ld a, [wd712]
+ cp $4
+ jr z, .asm_244c1
+ callba Func_107f8
+.asm_244c1
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, $1
+ ld [wd713], a
+ ld a, $1
+ ld [wd712], a
+ ld hl, MeowthAnimationData5
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $4
+ ld [wd6ec], a
+ ret
+
+Func_244f5: ; 0x244f5
+ ld a, [wd6e6]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd6e6], a
+ callba LoadStageCollisionAttributes
+ call Func_24516
+ ret
+
+Func_24516: ; 0x24516
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_24533
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_24529
+ ld hl, TileDataPointers_2456f
+.asm_24529
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_24533)
+ call Func_10aa
+ ret
+
+TileDataPointers_24533: ; 0x24533
+ dw TileData_24537
+ dw TileData_2453a
+
+TileData_24537: ; 0x24537
+ db $01
+ dw TileData_2453D
+
+TileData_2453a: ; 0x2453a
+ db $01
+ dw TileData_24556
+
+TileData_2453D: ; 0x2453D
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $01, $02
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $FF, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $FD, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $F6, $FA
+
+ db $00 ; terminator
+
+TileData_24556: ; 0x24556
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $E9, $E5
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $E7, $E3
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $12, $13, $E4
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $10, $11
+
+ db $00 ; terminator
+
+TileDataPointers_2456f: ; 0x2456f
+ dw TileData_24573
+ dw TileData_24576
+
+TileData_24573: ; 0x
+ db $01
+ dw TileData_24579
+
+TileData_24576: ; 0x
+ db $01
+ dw TileData_24592
+
+TileData_24579: ; 0x24579
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $F6, $F5
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $F4, $F3
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $F1, $F2
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $EA, $EE
+
+ db $00 ; terminator
+
+TileData_24592: ; 0x24592
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $E5, $E3
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $E4, $E2
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $F0, $EF, $E3
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $ED, $EC
+
+ db $00 ; terminator
+
+Func_245ab: ; 0x245ab
+ ld a, [wd6e7]
+ and a
+ jr z, .asm_24621
+ cp $2
+ jr z, .asm_24621
+ ld a, $1
+ ld [wd6f3], a
+ ld a, [wMeowthYPosition]
+ cp $20
+ jr z, .asm_245c7
+ cp $10
+ jr z, .asm_245cc
+ jr .asm_245cf
+
+.asm_245c7
+ call Func_247d9
+ jr .asm_245cf
+
+.asm_245cc
+ call Func_24c28
+.asm_245cf
+ xor a
+ ld [wd6e7], a
+ ld [wd6f3], a
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ lb de, $00, $33
+ call PlaySoundEffect
+ ld bc, OneThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ xor a
+ ld [wMeowthStageBonusCounter], a
+ ld a, [wd6ec]
+ cp $2
+ jr nc, .asm_24621
+ and a
+ jr nz, .asm_24611
+ ld hl, MeowthAnimationData3
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $2
+ ld [wd6ec], a
+ jr .asm_24651
+
+.asm_24611
+ ld hl, MeowthAnimationData4
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $3
+ ld [wd6ec], a
+ jr .asm_24651
+
+.asm_24621
+ ld a, [wd713]
+ and a
+ jr z, .asm_2462e
+ ld a, $4
+ ld [wd6ec], a
+ jr .asm_24651
+
+.asm_2462e
+ ld a, [wd6ec]
+ cp $2
+ jr nc, .asm_24651
+ ld a, [wd70b]
+ cp $3
+ jr nz, .asm_24651
+ ld a, [wd70c]
+ cp $3
+ jr nz, .asm_24651
+ ld hl, MeowthAnimationData5
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $4
+ ld [wd6ec], a
+.asm_24651
+ ld a, [wd6ec]
+ cp $2
+ call c, Func_24709
+ call Func_2465d
+ ret
+
+Func_2465d: ; 0x2465d
+ ld a, [wd6ec]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, MewothAnimationDataTable ; 0x246e2
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wMeowthAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wd6ec]
+ and a
+ jr nz, .asm_24689
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $4
+ ret nz
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ret
+
+.asm_24689
+ cp $1
+ jr nz, .asm_2469d
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $4
+ ret nz
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ret
+
+.asm_2469d
+ cp $2
+ jr nz, .asm_246b5
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ xor a
+ ld [wd6ec], a
+ ret
+
+.asm_246b5
+ cp $3
+ jr nz, .asm_246ce
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wd6ec], a
+ ret
+
+.asm_246ce
+ cp $4
+ jr nz, .asm_24689
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $2
+ ret nz
+ ld hl, MeowthAnimationData5
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ret
+
+MewothAnimationDataTable: ; 0x246e2
+ dw MeowthAnimationData1
+ dw MeowthAnimationData2
+ dw MeowthAnimationData3
+ dw MeowthAnimationData4
+ dw MeowthAnimationData5
+
+MeowthAnimationData1: ; 0x246ec
+; Each entry is [OAM id][duration]
+ db $10, $00
+ db $0B, $01
+ db $10, $02
+ db $0C, $01
+ db $00 ; terminator
+
+MeowthAnimationData2: ; 0x246f5
+; Each entry is [OAM id][duration]
+ db $10, $04
+ db $0B, $05
+ db $10, $06
+ db $0C, $05
+ db $00 ; terminator
+
+MeowthAnimationData3: ; 0x246fe
+; Each entry is [OAM id][duration]
+ db $16, $03
+ db $00 ; terminator
+
+MeowthAnimationData4: ; 0x24701
+; Each entry is [OAM id][duration]
+ db $16, $07
+ db $00 ; terminator
+
+MeowthAnimationData5: ; 0x24704
+ db $17, $08
+ db $17, $09
+ db $00 ; terminator
+
+Func_24709: ; 0x24709
+ ld a, [wMeowthXPosition]
+ ld hl, wMeowthXMovement
+ add [hl]
+ ld [wMeowthXPosition], a
+ ld hl, wMeowthYMovement
+ ld a, [hl]
+ and a
+ jr z, .asm_24730
+ bit 7, [hl]
+ ld a, [wMeowthYPosition]
+ jr nz, .asm_24724
+ inc a
+ jr .asm_24725
+
+.asm_24724
+ dec a
+.asm_24725
+ cp $21
+ jr z, .asm_24730
+ cp $f
+ jr z, .asm_24730
+ ld [wMeowthYPosition], a
+.asm_24730
+ call Func_24737
+ call Func_2476d
+ ret
+
+Func_24737: ; 0x24737
+ ld a, [wMeowthXPosition]
+ cp $8
+ jr nc, .asm_24742
+ ld a, $1
+ jr .asm_2475a
+
+.asm_24742
+ cp $78
+ jr c, .asm_2474a
+ ld a, $ff
+ jr .asm_2475a
+
+.asm_2474a
+ ld a, [hNumFramesDropped]
+ and $3f
+ ret nz
+ call GenRandom
+ bit 7, a
+ ld a, $1
+ jr z, .asm_2475a
+ ld a, $ff
+.asm_2475a
+ ld [wMeowthXMovement], a
+ bit 7, a
+ ld a, $1
+ jr z, .asm_24764
+ xor a
+.asm_24764
+ ld [wd6ec], a
+ ld a, $2
+ ld [wMeowthAnimationFrameCounter], a
+ ret
+
+Func_2476d: ; 0x2476d
+ ld a, [wMeowthYMovement]
+ and a
+ jr z, .asm_247ab
+ cp $1
+ jr z, .asm_24791
+ ld a, [wMeowthYPosition]
+ cp $10
+ jr nz, .asm_2478d
+ ld a, [wd6e7]
+ cp $2
+ jr nz, .asm_2478a
+ ld a, $1
+ ld [wd6e7], a
+.asm_2478a
+ xor a
+ jr .asm_247c9
+
+.asm_2478d
+ ld a, $ff
+ jr .asm_247c9
+
+.asm_24791
+ ld a, [wMeowthYPosition]
+ cp $20
+ jr nz, .asm_247a7
+ ld a, [wd6e7]
+ cp $2
+ jr nz, .asm_247a4
+ ld a, $1
+ ld [wd6e7], a
+.asm_247a4
+ xor a
+ jr .asm_247c9
+
+.asm_247a7
+ ld a, $1
+ jr .asm_247c9
+
+.asm_247ab
+ ld a, [wd70b]
+ cp $3
+ jr z, .asm_247cd
+ ld a, [wd70c]
+ cp $3
+ jr z, .asm_247d3
+ ld a, [hNumFramesDropped]
+ and $3f
+ ret nz
+ call GenRandom
+ bit 0, a
+ ld a, $1
+ jr z, .asm_247c9
+ ld a, $ff
+.asm_247c9
+ ld [wMeowthYMovement], a
+ ret
+
+.asm_247cd
+ ld a, $ff
+ ld [wMeowthYMovement], a
+ ret
+
+.asm_247d3
+ ld a, $1
+ ld [wMeowthYMovement], a
+ ret
+
+Func_247d9: ; 0x247d9
+ ld a, [wd6f3]
+ and a
+ ret z
+ ld a, [wd71a]
+ cp $c8
+ jr nz, .asm_24823
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd71a], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd727], a
+ ld a, $1
+ ld [wd717], a
+ xor a
+ ld [wd6f3], a
+ ld [wd714], a
+ ld [wd6f5], a
+ ld [wd6f8], a
+ ld [wd6fb], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_2481d
+ ld a, $0
+ ld [wd72a], a
+ jr .asm_24822
+
+.asm_2481d
+ ld a, $1
+ ld [wd72a], a
+.asm_24822
+ ret
+
+.asm_24823
+ ld a, [wd71b]
+ cp $c8
+ jr nz, .asm_24868
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd71b], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd728], a
+ ld a, $1
+ ld [wd718], a
+ xor a
+ ld [wd6f3], a
+ ld [wd715], a
+ ld [wd6f6], a
+ ld [wd6f9], a
+ ld [wd6fc], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24862
+ ld a, $0
+ ld [wd72b], a
+ jr .asm_24867
+
+.asm_24862
+ ld a, $1
+ ld [wd72b], a
+.asm_24867
+ ret
+
+.asm_24868
+ ld a, [wd71c]
+ cp $c8
+ ret nz
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd71c], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd729], a
+ ld a, $1
+ ld [wd719], a
+ xor a
+ ld [wd6f3], a
+ ld [wd716], a
+ ld [wd6f7], a
+ ld [wd6fa], a
+ ld [wd6fd], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_248a6
+ ld a, $0
+ ld [wd72c], a
+ jr .asm_248ab
+
+.asm_248a6
+ ld a, $1
+ ld [wd72c], a
+.asm_248ab
+ ret
+
+Func_248ac: ; 0x248ac
+ ld a, [wd717]
+ cp $1
+ jr nz, .asm_248d3
+ ld a, [wd714]
+ cp $a
+ jr z, .asm_248c4
+ ld a, $0
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_248d3
+
+.asm_248c4
+ ld hl, wd70b
+ inc [hl]
+ ld a, $2
+ ld [wd717], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_248d3
+ ld a, [wd718]
+ cp $1
+ jr nz, .asm_248fa
+ ld a, [wd715]
+ cp $a
+ jr z, .asm_248eb
+ ld a, $1
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_248fa
+
+.asm_248eb
+ ld hl, wd70b
+ inc [hl]
+ ld a, $2
+ ld [wd718], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_248fa
+ ld a, [wd719]
+ cp $1
+ jr nz, .asm_24921
+ ld a, [wd716]
+ cp $a
+ jr z, .asm_24912
+ ld a, $2
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24921
+
+.asm_24912
+ ld hl, wd70b
+ inc [hl]
+ ld a, $2
+ ld [wd719], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24921
+ ld a, [wd717]
+ cp $2
+ jr nz, .asm_2492c
+ ld hl, wd714
+ inc [hl]
+.asm_2492c
+ ld a, [wd718]
+ cp $2
+ jr nz, .asm_24937
+ ld hl, wd715
+ inc [hl]
+.asm_24937
+ ld a, [wd719]
+ cp $2
+ jr nz, .asm_24942
+ ld hl, wd716
+ inc [hl]
+.asm_24942
+ ld a, [wd717]
+ cp $3
+ jr nz, .asm_24968
+ ld a, [wd71a]
+ ld b, a
+ ld a, [wd727]
+ ld c, a
+ ld hl, wd714
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_2495f
+ call Func_24e7f
+ jr .asm_24968
+
+.asm_2495f
+ cp $a
+ jr nz, .asm_24968
+ ld a, $4
+ ld [wd717], a
+.asm_24968
+ ld a, [wd718]
+ cp $3
+ jr nz, .asm_2498e
+ ld a, [wd71b]
+ ld b, a
+ ld a, [wd728]
+ ld c, a
+ ld hl, wd715
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24985
+ call Func_24e7f
+ jr .asm_2498e
+
+.asm_24985
+ cp $a
+ jr nz, .asm_2498e
+ ld a, $4
+ ld [wd718], a
+.asm_2498e
+ ld a, [wd719]
+ cp $3
+ jr nz, .asm_249b4
+ ld a, [wd71c]
+ ld b, a
+ ld a, [wd729]
+ ld c, a
+ ld hl, wd716
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_249ab
+ call Func_24e7f
+ jr .asm_249b4
+
+.asm_249ab
+ cp $a
+ jr nz, .asm_249b4
+ ld a, $4
+ ld [wd719], a
+.asm_249b4
+ ld a, [wd717]
+ cp $4
+ jr nz, .asm_249d0
+ ld a, $c8
+ ld [wd71a], a
+ ld [wd727], a
+ xor a
+ ld [wd717], a
+ ld hl, wd70b
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24a06
+.asm_249d0
+ ld a, [wd718]
+ cp $4
+ jr nz, .asm_249ec
+ ld a, $c8
+ ld [wd71b], a
+ ld [wd728], a
+ xor a
+ ld [wd718], a
+ ld hl, wd70b
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24a06
+.asm_249ec
+ ld a, [wd719]
+ cp $4
+ ret nz
+ ld a, $c8
+ ld [wd71c], a
+ ld [wd729], a
+ xor a
+ ld [wd719], a
+ ld hl, wd70b
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ ret nz
+.asm_24a06
+ ld a, [wd713]
+ and a
+ ret nz
+ ld a, [wMeowthXMovement]
+ cp $ff
+ jr z, .asm_24a21
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wd6ec], a
+ ret
+
+.asm_24a21
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $0
+ ld [wd6ec], a
+ ret
+
+Func_24a30: ; 0x24a30
+ ld a, [wd6f4]
+ ld c, a
+ ld b, $0
+ ld hl, wd6f8
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_24a42
+ call Func_24b41
+ ret
+
+.asm_24a42
+ ld a, [wd6f4]
+ ld c, a
+ ld b, $0
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ bit 2, a
+ jr z, .asm_24a5e
+ bit 1, a
+ jr nz, .asm_24a5e
+ bit 0, a
+ jr nz, .asm_24a5e
+ ld hl, wd714
+ add hl, bc
+ inc [hl]
+.asm_24a5e
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld hl, Data_24af1
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld hl, wd72a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_24a97
+.asm_24a72
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $0
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24af1
+ add hl, de
+ pop af
+ add [hl]
+ cp $8e
+ jr nc, .asm_24a97
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+ jr .asm_24abf
+
+.asm_24a97
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $1
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24af1
+ add hl, de
+ ld a, [hl]
+ ld d, a
+ ld a, $ff
+ sub d
+ inc a
+ ld d, a
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ add d
+ cp $5
+ jr c, .asm_24a72
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+.asm_24abf
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24af1
+ add hl, de
+ inc hl
+ ld a, [hl]
+ ld d, a
+ ld hl, wd727
+ add hl, bc
+ ld a, [hl]
+ add d
+ ld hl, wd727
+ add hl, bc
+ ld [hl], a
+ ld hl, wd6f5
+ add hl, bc
+ inc [hl]
+ inc [hl]
+ ld a, [hl]
+ cp $46
+ jr nz, .asm_24af0
+ ld a, c
+ cp $9
+ jr c, .asm_24aed
+ call Func_2438f
+ ret
+
+.asm_24aed
+ call Func_24319
+.asm_24af0
+ ret
+
+Data_24af1:
+; These are offsets for something in the Meowth stage
+ db 2, -4
+ db 2, -4
+ db 2, -4
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, 0
+ db 2, 0
+ db 2, 0
+ db 2, 2
+ db 2, 2
+ db 2, 2
+ db 2, 2
+ db 2, 2
+ db 2, 3
+ db 2, 4
+ db 2, 4
+ db 2, 4
+ db 2, 4
+ db 2, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 0, 0
+ db 0, 0
+ db 0, 0
+ db 0, 0
+
+Func_24b41: ; 0x24b41
+ ld a, [wd6f4]
+ ld b, $0
+ ld c, a
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ cp $14
+ jp nc, Func_24bf6
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld hl, Data_24c0a
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld hl, wd72a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_24b8a
+.asm_24b65
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $0
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24c0a
+ add hl, de
+ pop af
+ add [hl]
+ cp $90
+ jr nc, .asm_24b8a
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+ jr .asm_24bb2
+
+.asm_24b8a
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $1
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24c0a
+ add hl, de
+ ld a, [hl]
+ ld d, a
+ ld a, $ff
+ sub d
+ inc a
+ ld d, a
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ add d
+ cp $6
+ jr c, .asm_24b65
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+.asm_24bb2
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24c0a
+ add hl, de
+ inc hl
+ ld a, [hl]
+ ld d, a
+ ld hl, wd727
+ add hl, bc
+ ld a, [hl]
+ add d
+ ld hl, wd727
+ add hl, bc
+ ld [hl], a
+ ld hl, wd6f5
+ add hl, bc
+ inc [hl]
+ inc [hl]
+ ld a, [hl]
+ cp $12
+ jr nz, .asm_24bf4
+ ld a, c
+ cp $9
+ jr c, .asm_24be1
+ call Func_2438f
+ jr .asm_24be4
+
+.asm_24be1
+ call Func_24319
+.asm_24be4
+ ld a, [wd6f4]
+ ld b, $0
+ ld c, a
+ ld hl, wd6f8
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_24bf4
+ ld [hl], $1
+.asm_24bf4
+ scf
+ ret
+
+Func_24bf6: ; 0x24bf6
+ ld a, [wd6f4]
+ ld b, $0
+ ld c, a
+ ld hl, wd6f8
+ add hl, bc
+ ld [hl], $0
+ ld hl, wd714
+ add hl, bc
+ ld [hl], $a
+ ccf
+ ret
+
+Data_24c0a:
+; These are offsets for something in the Meowth stage
+ db 2, -2
+ db 2, -1
+ db 2, -1
+ db 2, 0
+ db 2, 0
+ db 2, 0
+ db 2, 1
+ db 2, 1
+ db 2, 2
+ db 2, 4
+ db 1, 4
+ db 0, 0
+ db 0, 0
+ db 0, 0
+ db 0, 0
+
+Func_24c28: ; 0x24c28
+ ld a, [wd6f3]
+ and a
+ ret z
+ ld a, [wd724]
+ cp $c8
+ jr nz, .asm_24c76
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd724], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd731], a
+ ld a, $1
+ ld [wd721], a
+ ld hl, wd70c
+ inc [hl]
+ xor a
+ ld [wd6f3], a
+ ld [wd71e], a
+ ld [wd6ff], a
+ ld [wd702], a
+ ld [wd705], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24c70
+ ld a, $0
+ ld [wd734], a
+ jr .asm_24c75
+
+.asm_24c70
+ ld a, $1
+ ld [wd734], a
+.asm_24c75
+ ret
+
+.asm_24c76
+ ld a, [wd725]
+ cp $c8
+ jr nz, .asm_24cbf
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd725], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd732], a
+ ld a, $1
+ ld [wd722], a
+ ld hl, wd70c
+ inc [hl]
+ xor a
+ ld [wd6f3], a
+ ld [wd71f], a
+ ld [wd700], a
+ ld [wd703], a
+ ld [wd706], a
+ ld a, [wd6f7]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24cb9
+ ld a, $0
+ ld [wd735], a
+ jr .asm_24cbe
+
+.asm_24cb9
+ ld a, $1
+ ld [wd735], a
+.asm_24cbe
+ ret
+
+.asm_24cbf
+ ld a, [wd726]
+ cp $c8
+ ret nz
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd726], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd733], a
+ ld a, $1
+ ld [wd723], a
+ ld hl, wd70c
+ inc [hl]
+ xor a
+ ld [wd6f3], a
+ ld [wd720], a
+ ld [wd701], a
+ ld [wd704], a
+ ld [wd707], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24d01
+ ld a, $0
+ ld [wd736], a
+ jr .asm_24d06
+
+.asm_24d01
+ ld a, $1
+ ld [wd736], a
+.asm_24d06
+ ret
+
+Func_24d07: ; 0x24d07
+ ld a, [wd721]
+ cp $1
+ jr nz, .asm_24d2a
+ ld a, [wd71e]
+ cp $a
+ jr z, .asm_24d1f
+ ld a, $a
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24d2a
+
+.asm_24d1f
+ ld a, $2
+ ld [wd721], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24d2a
+ ld a, [wd722]
+ cp $1
+ jr nz, .asm_24d4d
+ ld a, [wd71f]
+ cp $a
+ jr z, .asm_24d42
+ ld a, $b
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24d4d
+
+.asm_24d42
+ ld a, $2
+ ld [wd722], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24d4d
+ ld a, [wd723]
+ cp $1
+ jr nz, .asm_24d70
+ ld a, [wd720]
+ cp $a
+ jr z, .asm_24d65
+ ld a, $c
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24d70
+
+.asm_24d65
+ ld a, $2
+ ld [wd723], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24d70
+ ld a, [wd721]
+ cp $2
+ jr nz, .asm_24d7b
+ ld hl, wd71e
+ inc [hl]
+.asm_24d7b
+ ld a, [wd722]
+ cp $2
+ jr nz, .asm_24d86
+ ld hl, wd71f
+ inc [hl]
+.asm_24d86
+ ld a, [wd723]
+ cp $2
+ jr nz, .asm_24d91
+ ld hl, wd720
+ inc [hl]
+.asm_24d91
+ ld a, [wd721]
+ cp $3
+ jr nz, .asm_24db7
+ ld a, [wd724]
+ ld b, a
+ ld a, [wd731]
+ ld c, a
+ ld hl, wd71e
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24dae
+ call Func_24e7f
+ jr .asm_24db7
+
+.asm_24dae
+ cp $a
+ jr nz, .asm_24db7
+ ld a, $4
+ ld [wd721], a
+.asm_24db7
+ ld a, [wd722]
+ cp $3
+ jr nz, .asm_24ddd
+ ld a, [wd725]
+ ld b, a
+ ld a, [wd732]
+ ld c, a
+ ld hl, wd71f
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24dd4
+ call Func_24e7f
+ jr .asm_24ddd
+
+.asm_24dd4
+ cp $a
+ jr nz, .asm_24ddd
+ ld a, $4
+ ld [wd722], a
+.asm_24ddd
+ ld a, [wd723]
+ cp $3
+ jr nz, .asm_24e03
+ ld a, [wd726]
+ ld b, a
+ ld a, [wd733]
+ ld c, a
+ ld hl, wd720
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24dfa
+ call Func_24e7f
+ jr .asm_24e03
+
+.asm_24dfa
+ cp $a
+ jr nz, .asm_24e03
+ ld a, $4
+ ld [wd723], a
+.asm_24e03
+ ld a, [wd721]
+ cp $4
+ jr nz, .asm_24e1f
+ ld a, $c8
+ ld [wd724], a
+ ld [wd731], a
+ xor a
+ ld [wd721], a
+ ld hl, wd70c
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24e55
+.asm_24e1f
+ ld a, [wd722]
+ cp $4
+ jr nz, .asm_24e3b
+ ld a, $c8
+ ld [wd725], a
+ ld [wd732], a
+ xor a
+ ld [wd722], a
+ ld hl, wd70c
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24e55
+.asm_24e3b
+ ld a, [wd723]
+ cp $4
+ ret nz
+ ld a, $c8
+ ld [wd726], a
+ ld [wd733], a
+ xor a
+ ld [wd723], a
+ ld hl, wd70c
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ ret nz
+.asm_24e55
+ ld a, [wd713]
+ and a
+ ret nz
+ ld a, [wMeowthXMovement]
+ cp $ff
+ jr z, .asm_24e70
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wd6ec], a
+ ret
+
+.asm_24e70
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $0
+ ld [wd6ec], a
+ ret
+
+Func_24e7f: ; 0x24e7f
+ ld a, b
+ ld [wd79c], a
+ ld a, c
+ ld [wd79e], a
+ ld hl, wMeowthStageBonusCounter
+ inc [hl]
+ ld a, [hl]
+ cp $7 ; maximum bonus
+ jr nz, .asm_24e92
+ xor a
+ ld [hl], a
+.asm_24e92
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ lb de, $00, $32
+ call PlaySoundEffect
+ ld a, [wMeowthStageBonusCounter]
+ dec a
+.asm_24ea6
+ push af
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wMeowthStageScore
+ inc [hl]
+ pop af
+ and a
+ jr z, .asm_24ebf
+ dec a
+ jr .asm_24ea6
+
+.asm_24ebf
+ ld a, [wMeowthStageBonusCounter]
+ dec a
+ dec a
+ cp $fe
+ jr z, .asm_24ed7
+ cp $ff
+ jr z, .asm_24ed7
+ ld [wd79a], a
+ ld de, wd79a
+ call Func_24ee7
+ jr .asm_24ede
+
+.asm_24ed7
+ xor a
+ ld [wd79a], a
+ ld [wd795], a
+.asm_24ede
+ ld a, $1
+ ld [wd64e], a
+ call Func_24fa3
+ ret
+
+Func_24ee7: ; 0x24ee7
+ ld a, $ff
+ ld [wd795], a
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, MeowthStageAnimationDataTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ dec de
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+Func_24f00: ; 0x24f00
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, MeowthStageAnimationDataTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ld a, $1
+ ld [wd710], a
+ ret nc
+ dec de
+ ld a, [de]
+ cp $a
+ ret nz
+ xor a
+ ld [de], a
+ ld [wd79c], a
+ ld [wd79e], a
+ ld [wd795], a
+ xor a
+ ld [wd710], a
+ ret
+
+MeowthStageAnimationDataTable: ; 0x24f30
+ dw MeowthStageAnimationData1
+ dw MeowthStageAnimationData2
+ dw MeowthStageAnimationData3
+ dw MeowthStageAnimationData4
+ dw MeowthStageAnimationData5
+
+MeowthStageAnimationData1: ; 0x24f3a
+; Each entry is [OAM id][duration]
+ db $02, $00
+ db $02, $01
+ db $02, $02
+ db $10, $00
+ db $04, $0F
+ db $04, $00
+ db $04, $0F
+ db $04, $00
+ db $04, $0F
+ db $04, $00
+ db $00 ; terminator
+
+MeowthStageAnimationData2: ; 0x24f4f
+; Each entry is [OAM id][duration]
+ db $02, $03
+ db $02, $04
+ db $02, $05
+ db $10, $03
+ db $04, $0F
+ db $04, $03
+ db $04, $0F
+ db $04, $03
+ db $04, $0F
+ db $04, $03
+ db $00 ; terminator
+
+MeowthStageAnimationData3: ; 0x24f64
+; Each entry is [OAM id][duration]
+ db $02, $06
+ db $02, $07
+ db $02, $08
+ db $10, $06
+ db $04, $0F
+ db $04, $06
+ db $04, $0F
+ db $04, $06
+ db $04, $0F
+ db $04, $06
+ db $00 ; terminator
+
+MeowthStageAnimationData4: ; 0x24f79
+; Each entry is [OAM id][duration]
+ db $02, $09
+ db $02, $0A
+ db $02, $0B
+ db $10, $09
+ db $04, $0F
+ db $04, $09
+ db $04, $0F
+ db $04, $09
+ db $04, $0F
+ db $04, $09
+ db $00 ; terminator
+
+MeowthStageAnimationData5: ; 0x24f8e
+; Each entry is [OAM id][duration]
+ db $02, $0C
+ db $02, $0D
+ db $02, $0E
+ db $10, $0C
+ db $04, $0F
+ db $04, $0C
+ db $04, $0F
+ db $04, $0C
+ db $04, $0F
+ db $04, $0C
+ db $00 ; terminator
+
+Func_24fa3: ; 0x24fa3
+ ld a, [wMeowthStageScore]
+ ld c, a
+ ld b, $0
+.asm_24fa9
+ ld a, c
+ and a
+ jr z, .asm_24fb5
+ ld a, b
+ add $8
+ ld b, a
+ dec c
+ ld a, c
+ jr .asm_24fa9
+
+.asm_24fb5
+ ld a, b
+ and a
+ jr z, .asm_24fbb
+ sub $8
+.asm_24fbb
+ ld [wd652], a
+ ld a, [wMeowthStageBonusCounter]
+ and a
+ jr z, .asm_24fca
+ ld b, a
+ ld a, [wMeowthStageScore]
+ inc a
+ sub b
+.asm_24fca
+ ld [wd651], a
+ ld a, $0
+ ld [wd64e], a
+ ld a, [wMeowthStageScore]
+ and a
+ ret z
+ cp $15
+ jr c, .asm_24fe2
+ ld a, $14
+ ld [wMeowthStageScore], a
+ jr .asm_24fed
+
+.asm_24fe2
+ push af
+ xor a
+ ld [wd650], a
+ ld a, $1
+ ld [wd64e], a
+ pop af
+.asm_24fed
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_25007
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_24ffd
+ ld hl, TileDataPointers_25421
+.asm_24ffd
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_25007)
+ call Func_10aa
+ ret
+
+TileDataPointers_25007:
+ dw TileData_25031
+ dw TileData_25034
+ dw TileData_25037
+ dw TileData_2503a
+ dw TileData_2503d
+ dw TileData_25040
+ dw TileData_25043
+ dw TileData_25046
+ dw TileData_25049
+ dw TileData_2504c
+ dw TileData_2504f
+ dw TileData_25052
+ dw TileData_25055
+ dw TileData_25058
+ dw TileData_2505b
+ dw TileData_2505e
+ dw TileData_25061
+ dw TileData_25064
+ dw TileData_25067
+ dw TileData_2506a
+ dw TileData_2506d
+
+TileData_25031: ; 0x25031
+ db $01
+ dw TileData_25070
+
+TileData_25034: ; 0x25034
+ db $01
+ dw TileData_2509d
+
+TileData_25037: ; 0x25037
+ db $01
+ dw TileData_250ca
+
+TileData_2503a: ; 0x2503a
+ db $01
+ dw TileData_250f7
+
+TileData_2503d: ; 0x2503d
+ db $01
+ dw TileData_25124
+
+TileData_25040: ; 0x25040
+ db $01
+ dw TileData_25151
+
+TileData_25043: ; 0x25043
+ db $01
+ dw TileData_2517e
+
+TileData_25046: ; 0x25046
+ db $01
+ dw TileData_251ab
+
+TileData_25049: ; 0x25049
+ db $01
+ dw TileData_251d8
+
+TileData_2504c: ; 0x2504c
+ db $01
+ dw TileData_25205
+
+TileData_2504f: ; 0x2504f
+ db $01
+ dw TileData_25232
+
+TileData_25052: ; 0x25052
+ db $01
+ dw TileData_2525f
+
+TileData_25055: ; 0x25055
+ db $01
+ dw TileData_2528c
+
+TileData_25058: ; 0x25058
+ db $01
+ dw TileData_252b9
+
+TileData_2505b: ; 0x2505b
+ db $01
+ dw TileData_252e6
+
+TileData_2505e: ; 0x2505e
+ db $01
+ dw TileData_25313
+
+TileData_25061: ; 0x25061
+ db $01
+ dw TileData_25340
+
+TileData_25064: ; 0x25064
+ db $01
+ dw TileData_2536d
+
+TileData_25067: ; 0x25067
+ db $01
+ dw TileData_2539a
+
+TileData_2506a: ; 0x2506a
+ db $01
+ dw TileData_253c7
+
+TileData_2506d: ; 0x2506d
+ db $01
+ dw TileData_253f4
+
+TileData_25070: ; 0x25070
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $E4, $0C, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2509d: ; 0x2509d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $0C, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_250ca: ; 0x250ca
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_250f7: ; 0x250f7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25124: ; 0x25124
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25151: ; 0x25151
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2517e: ; 0x2517e
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_251ab: ; 0x251ab
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_251d8: ; 0x251d8
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25205: ; 0x25205
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25232: ; 0x25232
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2525f: ; 0x2525f
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2528c: ; 0x2528c
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_252b9: ; 0x252b9
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_252e6: ; 0x252e6
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25313: ; 0x25313
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25340: ; 0x25340
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2536d: ; 0x2536d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2539a: ; 0x2539a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $16
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_253c7: ; 0x253c7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $16
+
+ db $02
+ dw vBGMap + $12
+ db $17, $E4
+
+ db $00 ; terminator
+
+TileData_253f4: ; 0x253f4
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $16
+
+ db $02
+ dw vBGMap + $12
+ db $17, $18
+
+ db $00 ; terminator
+
+TileDataPointers_25421: ; 0x25421
+ dw TileData_2544b
+ dw TileData_2544e
+ dw TileData_25451
+ dw TileData_25454
+ dw TileData_25457
+ dw TileData_2545a
+ dw TileData_2545d
+ dw TileData_25460
+ dw TileData_25463
+ dw TileData_25466
+ dw TileData_25469
+ dw TileData_2546c
+ dw TileData_2546f
+ dw TileData_25472
+ dw TileData_25475
+ dw TileData_25478
+ dw TileData_2547b
+ dw TileData_2547e
+ dw TileData_25481
+ dw TileData_25484
+ dw TileData_25487
+
+TileData_2544b: ; 0x2544b
+ db $01
+ dw TileData_2548a
+
+TileData_2544e: ; 0x2544e
+ db $01
+ dw TileData_254b7
+
+TileData_25451: ; 0x25451
+ db $01
+ dw TileData_254e4
+
+TileData_25454: ; 0x25454
+ db $01
+ dw TileData_25511
+
+TileData_25457: ; 0x25457
+ db $01
+ dw TileData_2553e
+
+TileData_2545a: ; 0x2545a
+ db $01
+ dw TileData_2556b
+
+TileData_2545d: ; 0x2545d
+ db $01
+ dw TileData_25598
+
+TileData_25460: ; 0x25460
+ db $01
+ dw TileData_255c5
+
+TileData_25463: ; 0x25463
+ db $01
+ dw TileData_255f2
+
+TileData_25466: ; 0x25466
+ db $01
+ dw TileData_2561f
+
+TileData_25469: ; 0x25469
+ db $01
+ dw TileData_2564c
+
+TileData_2546c: ; 0x2546c
+ db $01
+ dw TileData_25679
+
+TileData_2546f: ; 0x2546f
+ db $01
+ dw TileData_256a6
+
+TileData_25472: ; 0x25472
+ db $01
+ dw TileData_256d3
+
+TileData_25475: ; 0x25475
+ db $01
+ dw TileData_25700
+
+TileData_25478: ; 0x25478
+ db $01
+ dw TileData_2572d
+
+TileData_2547b: ; 0x2547b
+ db $01
+ dw TileData_2575a
+
+TileData_2547e: ; 0x2547e
+ db $01
+ dw TileData_25787
+
+TileData_25481: ; 0x25481
+ db $01
+ dw TileData_257b4
+
+TileData_25484: ; 0x25484
+ db $01
+ dw TileData_257e1
+
+TileData_25487: ; 0x25487
+ db $01
+ dw TileData_2580e
+
+TileData_2548a: ; 0x2548a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $E3, $FD, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_254b7: ; 0x254b7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $FD, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_254e4: ; 0x254e4
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25511: ; 0x25511
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2553e: ; 0x2553e
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2556b: ; 0x2556b
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25598: ; 0x25598
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_255c5: ; 0x255c5
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_255f2: ; 0x255f2
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2561f: ; 0x2561f
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2564c: ; 0x2564c
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25679: ; 0x25679
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_256a6: ; 0x256a6
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_256d3: ; 0x256d3
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25700: ; 0x25700
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2572d: ; 0x2572d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2575a: ; 0x2575a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25787: ; 0x25787
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_257b4: ; 0x257b4
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $00
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_257e1: ; 0x257e1
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $00
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $02, $E3
+
+ db $00 ; terminator
+
+TileData_2580e: ; 0x2580e
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $00
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $02, $03
+
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm
new file mode 100755
index 0000000..86df2f3
--- /dev/null
+++ b/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm
@@ -0,0 +1,750 @@
+ResolveMewtwoBonusGameObjectCollisions: ; 0x19451
+ call Func_19531
+ call Func_19701
+ call Func_1948b
+ callba Func_107f8
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, [wd6b1]
+ cp $8
+ ret nc
+ ld a, $1
+ ld [wd6b3], a
+ ret
+
+Func_1948b: ; 0x1948b
+ ld a, [wd6a9]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd6a9], a
+ callba LoadStageCollisionAttributes
+ call Func_194ac
+ ret
+
+Func_194ac: ; 0x194ac
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_194c9
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_194bf
+ ld hl, Data_194fd
+.asm_194bf
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(Data_194c9)
+ call Func_10aa
+ ret
+
+Data_194c9:
+ dw Data_194cd
+ dw Data_194d0
+
+Data_194cd: ; 0x194cd
+ db 1
+ dw Data_194d3
+
+Data_194d0: ; 0x194d0
+ db 1
+ dw Data_194e8
+
+Data_194d3: ; 0x194d3
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $45
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $80, $09
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $12
+
+ db $00 ; terminator
+
+Data_194e8: ; 0x194e8
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $46
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $47
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $48, $49
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $4A
+
+ db $00 ; terminator
+
+Data_194fd:
+ dw Data_19501
+ dw Data_19504
+
+Data_19501: ; 0x19501
+ db 1
+ dw Data_19507
+
+Data_19504: ; 0x19504
+ db 1
+ dw Data_1951c
+
+Data_19507: ; 0x19507
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $45
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $80, $09
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $12
+
+ db $00 ; terminator
+
+Data_1951c: ; 0x1951c
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $46
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $47
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $48, $49
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $4A
+
+ db $00 ; terminator
+
+Func_19531: ; 0x19531
+ ld a, [wd6aa]
+ and a
+ jr z, .asm_195a2
+ xor a
+ ld [wd6aa], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_195a2
+ ld a, [wd6af]
+ cp $2
+ jr nc, .asm_195a2
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueue
+ ld a, [wd6b0]
+ inc a
+ cp $3
+ jr nz, .asm_19565
+ ld a, [wd6b1]
+ inc a
+ ld [wd6b1], a
+ xor a
+.asm_19565
+ ld [wd6b0], a
+ call ResetOrbitingBalls
+ ld a, [wd6b1]
+ cp $8
+ jr z, .asm_19582
+ ld a, $2
+ ld de, wd6ae
+ call Func_19679
+ lb de, $00, $39
+ call PlaySoundEffect
+ jr .asm_195a2
+
+.asm_19582
+ ld a, $3
+ ld de, wd6ae
+ call Func_19679
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld de, $0000
+ call PlaySong
+.asm_195a2
+ call Func_195ac
+ ld de, wd6af
+ call Func_195f5
+ ret
+
+Func_195ac: ; 0x195ac
+ ld a, [wd6af]
+ and a
+ ret nz
+ ld hl, wd6bd
+ ld de, $0008
+ ld b, $6
+.asm_195b9
+ ld a, [hl]
+ cp $2b
+ jr nz, .asm_195ce
+ dec hl
+ dec hl
+ dec hl
+ ld a, [hl]
+ cp $2
+ ret nz
+ ld a, $1
+ ld de, wd6ae
+ call Func_19679
+ ret
+
+.asm_195ce
+ add hl, de
+ dec b
+ jr nz, .asm_195b9
+ ret
+
+Func_195d3: ; 0x195d3
+ ld hl, wd6bd
+ ld de, $0008
+ ld b, $6
+.asm_195db
+ ld a, [hl]
+ cp $18
+ jr nz, .asm_195f0
+ dec hl
+ dec hl
+ dec hl
+ ld a, [hl]
+ cp $2
+ ret nz
+ ld d, h
+ ld e, l
+ dec de
+ ld a, $1
+ call Func_19876
+ ret
+
+.asm_195f0
+ add hl, de
+ dec b
+ jr nz, .asm_195db
+ ret
+
+Func_195f5: ; 0x195f5
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_19691
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ rst JumpTable ; calls JumpToFuncInTable
+CallTable_1960d: ; 0x1960d
+ dw Func_19615
+ dw Func_1961e
+ dw Func_1962f
+ dw Func_19638
+
+Func_19615: ; 0x19615
+ dec de
+ ld a, [de]
+ cp $4
+ ret nz
+ xor a
+ jp Func_19679
+
+Func_1961e: ; 0x1961e
+ dec de
+ ld a, [de]
+ cp $c
+ jr nz, .asm_19628
+ call Func_195d3
+ ret
+
+.asm_19628
+ cp $d
+ ret nz
+ xor a
+ jp Func_19679
+
+Func_1962f: ; 0x1962f
+ dec de
+ ld a, [de]
+ cp $1
+ ret nz
+ xor a
+ jp Func_19679
+
+Func_19638: ; 0x19638
+ dec de
+ ld a, [de]
+ cp $1
+ jr nz, .asm_19645
+ lb de, $00, $40
+ call PlaySoundEffect
+ ret
+
+.asm_19645
+ cp $20
+ ret nz
+ ld a, $1
+ ld [wd6b3], a
+ ld a, [wd499]
+ ld [wd498], a
+ ld a, [wNumMewtwoBonusCompletions]
+ cp $2 ; only counts up to 2. Gets reset to 0 when Mew is encountered in Catch 'Em Mode.
+ jr z, .asm_1965e
+ inc a
+ ld [wNumMewtwoBonusCompletions], a
+.asm_1965e
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+.asm_1966b
+ ld de, MewtwoStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+ ret
+
+Func_19679: ; 0x19679
+ push af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_19691
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ pop af
+ ld [de], a
+ ret
+
+Data_19691:
+ dw Data_19699
+ dw Data_196a2
+ dw Data_196bd
+ dw Data_196c0
+
+Data_19699: ; 0x19699
+ db $30, $00, $04, $05, $34, $04, $03, $05
+ db $00 ; terminator
+
+Data_196a2: ; 0x196a2
+ db $0A, $00, $06, $01, $05, $02, $05, $01, $04, $02, $04, $01, $04, $02, $03, $01
+ db $03, $02, $03, $01, $03, $02, $04, $00, $40, $03
+ db $00 ; terminator
+
+Data_196bd: ; 0x196bd
+ db $10, $06
+ db $00 ; terminator
+
+Data_196c0: ; 0x196c0
+ db $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07
+ db $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07
+ db $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07
+ db $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07
+ db $00 ; terminator
+
+Func_19701: ; 0x19701
+ ld a, [wd6b4]
+ and a
+ jr z, .asm_19742
+ xor a
+ ld [wd6b4], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_19742
+ ld a, [wd6b5]
+ sub $1
+ sla a
+ sla a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, wd6ba
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jr nz, .asm_19742
+ dec de
+ ld a, $2
+ call Func_19876
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ lb de, $00, $38
+ call PlaySoundEffect
+.asm_19742
+ ld de, wd6bd
+ call SetOrbitingBallCoordinates
+ ld de, wd6c5
+ call SetOrbitingBallCoordinates
+ ld de, wd6cd
+ call SetOrbitingBallCoordinates
+ ld de, wd6d5
+ call SetOrbitingBallCoordinates
+ ld de, wd6dd
+ call SetOrbitingBallCoordinates
+ ld de, wd6e5
+ call SetOrbitingBallCoordinates
+ ld de, wd6b6
+ call UpdateOrbitingBallAnimation
+ ld de, wd6be
+ call UpdateOrbitingBallAnimation
+ ld de, wd6c6
+ call UpdateOrbitingBallAnimation
+ ld de, wd6ce
+ call UpdateOrbitingBallAnimation
+ ld de, wd6d6
+ call UpdateOrbitingBallAnimation
+ ld de, wd6de
+ call UpdateOrbitingBallAnimation
+ ret
+
+SetOrbitingBallCoordinates: ; 0x1978b
+; Sets the x, y coordinates for one of the balls orbiting around Mewtwo
+ ld a, [de]
+ ld c, a
+ ld b, $0
+ sla c
+ inc a
+ cp $48 ; num entries in MewtwoOrbitingBallsCoords
+ jr c, .looadCoords
+ xor a
+.looadCoords
+ ld [de], a
+ ld hl, MewtwoOrbitingBallsCoords + 1
+ add hl, bc
+ dec de
+ ld a, [hld]
+ ld [de], a
+ dec de
+ ld a, [hl]
+ ld [de], a
+ ret
+
+MewtwoOrbitingBallsCoords:
+; x, y coordinates for balls that orbit around Mewtwo.
+ db $62, $08
+ db $62, $0A
+ db $62, $0D
+ db $61, $0F
+ db $60, $11
+ db $60, $13
+ db $5F, $15
+ db $5D, $17
+ db $5C, $19
+ db $5A, $1A
+ db $59, $1C
+ db $57, $1D
+ db $55, $1F
+ db $53, $20
+ db $51, $20
+ db $4F, $21
+ db $4D, $22
+ db $4A, $22
+ db $48, $22
+ db $46, $22
+ db $43, $22
+ db $41, $21
+ db $3F, $20
+ db $3D, $20
+ db $3B, $1F
+ db $39, $1D
+ db $37, $1C
+ db $36, $1A
+ db $34, $19
+ db $33, $17
+ db $31, $15
+ db $30, $13
+ db $30, $11
+ db $2F, $0F
+ db $2E, $0D
+ db $2E, $0A
+ db $2E, $08
+ db $2E, $06
+ db $2E, $03
+ db $2F, $01
+ db $30, $FF
+ db $30, $FD
+ db $31, $FB
+ db $33, $F9
+ db $34, $F7
+ db $36, $F6
+ db $37, $F4
+ db $39, $F3
+ db $3B, $F1
+ db $3D, $F0
+ db $3F, $F0
+ db $41, $EF
+ db $43, $EE
+ db $46, $EE
+ db $48, $EE
+ db $4A, $EE
+ db $4D, $EE
+ db $4F, $EF
+ db $51, $F0
+ db $53, $F0
+ db $55, $F1
+ db $57, $F3
+ db $59, $F4
+ db $5A, $F6
+ db $5C, $F7
+ db $5D, $F9
+ db $5F, $FB
+ db $60, $FD
+ db $60, $FF
+ db $61, $01
+ db $62, $03
+ db $62, $06
+
+UpdateOrbitingBallAnimation: ; 0x19833
+; Updates the animation for one of the balls orbiting around Mewtwo.
+ ld a, [de]
+ and a
+ ret z
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, OrbitingBallAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ rst JumpTable ; calls JumpToFuncInTable
+CallTable_19852: ; 0x19852
+ dw Func_1985a
+ dw Func_19863
+ dw Func_1986c
+ dw Func_1986d
+
+Func_1985a: ; 0x1985a
+ dec de
+ ld a, [de]
+ cp $6
+ ret nz
+ xor a
+ jp Func_19876
+
+Func_19863: ; 0x19863
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ xor a
+ jp Func_19876
+
+Func_1986c: ; 0x1986c
+ ret
+
+Func_1986d: ; 0x1986d
+ dec de
+ ld a, [de]
+ cp $1
+ ret nz
+ xor a
+ jp Func_19876
+
+Func_19876: ; 0x19876
+ push af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, OrbitingBallAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ pop af
+ ld [de], a
+ ret
+
+ResetOrbitingBalls: ; 0x1988e
+ ld a, [wd6b1]
+ sla a
+ sla a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, OrbitingBallsStartCoordsIndices
+ add hl, bc
+ ld de, wd6bd
+ ld b, $6
+.asm_198a3
+ ld a, [hli]
+ push bc
+ push de
+ push hl
+ bit 7, a
+ jr nz, .asm_198b7
+ ld [de], a
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, $3
+ call Func_19876
+ jr .asm_198c0
+
+.asm_198b7
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ xor a
+ ld [de], a
+.asm_198c0
+ pop hl
+ pop de
+ pop bc
+ ld a, e
+ add $8
+ ld e, a
+ jr nc, .asm_198ca
+ inc d
+.asm_198ca
+ dec b
+ jr nz, .asm_198a3
+ ret
+
+OrbitingBallsStartCoordsIndices:
+; When Mewtwo is hit, the orbs briefly disappear. When they reappear,
+; this table determines which entry in the MewtwoOrbitingBallsCoords table
+; each orb will start at.
+; Last two bytes in each row are unused
+ db $00, $0C, $18, $24, $30, $3C, $FF, $FF ; All 6 orbs are up
+ db $00, $0E, $1D, $2B, $3A, $FF, $FF, $FF ; 5 orbs are up
+ db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 4 orbs
+ db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 3 orbs
+ db $00, $18, $30, $FF, $FF, $FF, $FF, $FF ; 2 orbs
+ db $00, $24, $FF, $FF, $FF, $FF, $FF, $FF ; 1 orb
+ db $00, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; 0 orbs
+ db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
+ db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
+
+OrbitingBallAnimations:
+ dw OrbitingBallAnimation1
+ dw OrbitingBallAnimation2
+ dw OrbitingBallAnimation3
+ dw OrbitingBallAnimation4
+
+OrbitingBallAnimation1: ; 0x1991e
+; Each entry is [duration][OAM id]
+ db $0A, $00
+ db $08, $01
+ db $08, $02
+ db $0A, $03
+ db $08, $02
+ db $08, $01
+ db $00 ; terminator
+
+OrbitingBallAnimation2: ; 0x1992b
+; Each entry is [duration][OAM id]
+ db $05, $04
+ db $06, $05
+ db $06, $06
+ db $07, $07
+ db $07, $08
+ db $08, $09
+ db $08, $0A
+ db $00 ; terminator
+
+OrbitingBallAnimation3: ; 0x1993a
+; Each entry is [duration][OAM id]
+ db $05, $0A
+ db $05, $09
+ db $04, $08
+ db $04, $07
+ db $03, $06
+ db $03, $05
+ db $02, $04
+ db $80, $0B
+ db $00 ; terminator
+
+OrbitingBallAnimation4: ; 0x1994b
+; Each entry is [duration][OAM id]
+ db $0C, $0B
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/object_collision.asm b/engine/pinball_game/object_collision/object_collision.asm
index 51e34ce..b4ca37b 100755
--- a/engine/pinball_game/object_collision/object_collision.asm
+++ b/engine/pinball_game/object_collision/object_collision.asm
@@ -196,3 +196,54 @@ PinballCollidesWithPoints: ; 0x27fd
ld a, d
ld [wd578], a
ret
+
+ResolveGameObjectCollisions: ; 0x281c
+ ld a, [wCurrentStage]
+ call CallInFollowingTable
+CallTable_2822: ; 0x2822
+; not collisions
+ ; STAGE_RED_FIELD_TOP
+ padded_dab ResolveRedFieldTopGameObjectCollisions
+
+ ; STAGE_RED_FIELD_BOTTOM
+ padded_dab ResolveRedFieldBottomGameObjectCollisions
+
+ padded_dab DoNothing_1806d
+
+ padded_dab Func_1806e
+
+ ; STAGE_BLUE_FIELD_TOP
+ padded_dab ResolveBlueFieldTopGameObjectCollisions
+
+ ; STAGE_BLUE_FIELD_BOTTOM
+ padded_dab ResolveBlueFieldBottomGameObjectCollisions
+
+ ; STAGE_GENGAR_BONUS
+ padded_dab ResolveGengarBonusGameObjectCollisions
+
+ ; STAGE_GENGAR_BONUS
+ padded_dab ResolveGengarBonusGameObjectCollisions
+
+ ; STAGE_MEWTWO_BONUS
+ padded_dab ResolveMewtwoBonusGameObjectCollisions
+
+ ; STAGE_MEWTWO_BONUS
+ padded_dab ResolveMewtwoBonusGameObjectCollisions
+
+ ; STAGE_MEOWTH_BONUS
+ padded_dab ResolveMeowthBonusGameObjectCollisions
+
+ ; STAGE_MEOWTH_BONUS
+ padded_dab ResolveMeowthBonusGameObjectCollisions
+
+ ; STAGE_DIGLETT_BONUS
+ padded_dab ResolveDiglettBonusGameObjectCollisions
+
+ ; STAGE_DIGLETT_BONUS
+ padded_dab ResolveDiglettBonusGameObjectCollisions
+
+ ; STAGE_SEEL_BONUS
+ padded_dab ResolveSeelBonusGameObjectCollisions
+
+ ; STAGE_SEEL_BONUS
+ padded_dab ResolveSeelBonusGameObjectCollisions
diff --git a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm
new file mode 100755
index 0000000..94d195d
--- /dev/null
+++ b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm
@@ -0,0 +1,8730 @@
+; TODO: this file has a bunch of stuff that doesn't belong here.
+
+ResolveRedFieldTopGameObjectCollisions: ; 0x1460e
+ call ResolveVoltorbCollision
+ call ResolveRedStageSpinnerCollision
+ call ResolveRedStagePinballUpgradeTriggersCollision
+ call HandleRedStageBallTypeUpgradeCounter
+ call Func_15270
+ call ResolveRedStageBoardTriggerCollision
+ call ResolveRedStagePikachuCollision
+ call ResolveStaryuCollision
+ call ResolveBellsproutCollision
+ call ResolveDittoSlotCollision
+ call Func_161e0
+ call Func_164e3
+ call Func_146a9
+ call Func_174ea
+ call Func_148cf
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+ResolveRedFieldBottomGameObjectCollisions: ; 0x14652
+ call Func_14795
+ call Func_15f86
+ call ResolveDiglettCollision
+ call Func_14880
+ call Func_14e10
+ call Func_154a9
+ call HandleRedStageBallTypeUpgradeCounter
+ call Func_151cb
+ call Func_1652d
+ call ResolveRedStagePikachuCollision
+ call Func_167ff
+ call Func_169a6
+ call ResolveRedStageBonusMultiplierCollision
+ call Func_16279
+ call Func_161af
+ call Func_164e3
+ call Func_14733
+ call Func_146a2
+ call Func_174d0
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+Func_146a2: ; 0x146a2
+ call Func_146a9
+ call nz, Func_14707
+ ret
+
+Func_146a9: ; 0x146a9
+ ld a, [wBallSaverTimerFrames]
+ ld hl, wBallSaverTimerSeconds
+ or [hl]
+ ret z
+ ld a, [wBallXPos + 1]
+ cp $9a
+ jr nc, .asm_146e8
+ ld a, [wBallSaverTimerFrames]
+ dec a
+ ld [wBallSaverTimerFrames], a
+ bit 7, a
+ jr z, .asm_146e8
+ ld a, 59
+ ld [wBallSaverTimerFrames], a
+ ld a, [hl]
+ dec a
+ bit 7, a
+ jr nz, .asm_146cf
+ ld [hl], a
+.asm_146cf
+ inc a
+ ld c, $0
+ cp $2
+ jr c, .asm_146e4
+ ld c, $4
+ cp $6
+ jr c, .asm_146e4
+ ld c, $10
+ cp $b
+ jr c, .asm_146e4
+ ld c, $ff
+.asm_146e4
+ ld a, c
+ ld [wd4a2], a
+.asm_146e8
+ ld a, [wd4a2]
+ ld c, $0
+ and a
+ jr z, .asm_146fe
+ ld c, $1
+ cp $ff
+ jr z, .asm_146fe
+ ld hl, hNumFramesDropped
+ and [hl]
+ jr z, .asm_146fe
+ ld c, $0
+.asm_146fe
+ ld a, [wBallSaverIconOn]
+ cp c
+ ld a, c
+ ld [wBallSaverIconOn], a
+ ret
+
+Func_14707: ; 0x14707
+ ld a, [wBallSaverIconOn]
+ and a
+ jr nz, .asm_1471c
+ ld a, BANK(BgTileData_1172b)
+ ld hl, BgTileData_1172b
+ deCoord 8, 13, vBGMap
+ ld bc, $0004
+ call LoadOrCopyVRAMData
+ ret
+
+.asm_1471c
+ ld a, BANK(BgTileData_1472f)
+ ld hl, BgTileData_1472f
+ deCoord 8, 13, vBGMap
+ ld bc, $0004
+ call LoadOrCopyVRAMData
+ ret
+
+BgTileData_1172b:
+ db $AA, $AB, $AC, $AD
+
+BgTileData_1472f:
+ db $B4, $B5, $B6, $B7
+
+Func_14733: ; 0x14733
+ ld c, $0
+ ld a, [wd49b]
+ and a
+ jr z, .asm_1473d
+ ld c, $1
+.asm_1473d
+ ld a, [wd4a9]
+ cp c
+ ld a, c
+ ld [wd4a9], a
+ ret z
+ ; fall through
+
+Func_14746: ; 0x14746
+ ld c, $0
+ ld a, [wd49b]
+ and a
+ jr z, .asm_14750
+ ld c, $2
+.asm_14750
+ ld b, $0
+ ld hl, AgainTextTileDataRedField
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, BANK(AgainTextTileDataRedField)
+ call Func_10aa
+ ret
+
+AgainTextTileDataRedField:
+ dw AgainTextOffTileDataRedField
+ dw AgainTextOnTileDataRedField
+
+AgainTextOffTileDataRedField:
+ db 2
+ dw AgainTextOffTileDataRedField1
+ dw AgainTextOffTileDataRedField2
+
+AgainTextOnTileDataRedField:
+ db 2
+ dw AgainTextOnTileDataRedField1
+ dw AgainTextOnTileDataRedField2
+
+AgainTextOffTileDataRedField1:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $38
+ dw AgainTextOffGfx
+ db Bank(AgainTextOffGfx)
+ db $00
+
+AgainTextOffTileDataRedField2:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $3a
+ dw AgainTextOffGfx + $20
+ db Bank(AgainTextOffGfx)
+ db $00
+
+AgainTextOnTileDataRedField1:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $38
+ dw StageRedFieldBottomBaseGameBoyGfx + $380
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+AgainTextOnTileDataRedField2:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $3a
+ dw StageRedFieldBottomBaseGameBoyGfx + $3a0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+Func_14795: ; 0x14795
+ ld a, [wWildMonCollision]
+ and a
+ ret z
+ xor a
+ ld [wWildMonCollision], a
+ ld a, $1
+ ld [wBallHitWildMon], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ret
+
+ResolveDiglettCollision: ; 0x147aa
+ ld a, [wWhichDiglett]
+ and a
+ jp z, .asm_14834
+ xor a
+ ld [wWhichDiglett], a
+ ld a, [wWhichDiglettId]
+ sub $1
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, wLeftMapMoveCounter
+ add hl, bc
+ ld a, [hl]
+ cp $3
+ jr z, .asm_14834
+ inc a
+ ld [hld], a
+ ld [hl], $50
+ ld hl, wd4f7
+ add hl, bc
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, c
+ and a
+ jr z, .asm_14807
+ ld a, $6a
+ ld [wc7f0], a
+ ld a, $6b
+ ld [wc810], a
+ ld a, $5
+ call Func_149d9
+ ld a, [wRightMapMoveCounter]
+ add $4
+ call Func_149f5
+ ld a, $8
+ callba Func_10000
+ ld a, [wRightMapMoveCounter]
+ cp $3
+ call z, Func_14920
+ jr .asm_14830
+
+.asm_14807
+ ld a, $66
+ ld [wc7e3], a
+ ld a, $67
+ ld [wc803], a
+ ld a, $2
+ call Func_149d9
+ ld a, [wLeftMapMoveCounter]
+ call Func_149f5
+ ld a, $7
+ callba Func_10000
+ ld a, [wLeftMapMoveCounter]
+ cp $3
+ call z, Func_14947
+.asm_14830
+ call Func_1496d
+ ret
+
+.asm_14834
+ ld a, [wd4ef]
+ and a
+ jr z, .asm_14857
+ dec a
+ ld [wd4ef], a
+ jr nz, .asm_14857
+ ld a, [wLeftMapMoveCounter]
+ sub $3
+ jr nz, .asm_1484d
+ ld [wLeftMapMoveCounter], a
+ call Func_149f5
+.asm_1484d
+ ld a, $64
+ ld [wc7e3], a
+ ld a, $65
+ ld [wc803], a
+.asm_14857
+ ld a, [wd4f1]
+ and a
+ jr z, .asm_1487c
+ dec a
+ ld [wd4f1], a
+ jr nz, .asm_1487c
+ ld a, [wRightMapMoveCounter]
+ sub $3
+ jr nz, .asm_14872
+ ld [wRightMapMoveCounter], a
+ add $4
+ call Func_149f5
+.asm_14872
+ ld a, $68
+ ld [wc7f0], a
+ ld a, $69
+ ld [wc810], a
+.asm_1487c
+ call Func_14990
+ ret
+
+Func_14880: ; 0x14880
+ ld hl, wd4f7
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_148a6
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_148a6
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_148a6
+ cp $3
+ jr z, .asm_148a6
+ dec a
+ ld [wLeftMapMoveCounter], a
+ call Func_149f5
+.asm_148a6
+ ld hl, wd4f9
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_148ce
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_148ce
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_148ce
+ cp $3
+ jr z, .asm_148ce
+ dec a
+ ld [wRightMapMoveCounter], a
+ add $4
+ call Func_149f5
+.asm_148ce
+ ret
+
+Func_148cf: ; 0x148cf
+ ld b, $0
+ ld hl, wd4f8
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_148f8
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_148f8
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_148f8
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_148f8
+ cp $3
+ jr z, .asm_148f8
+ dec a
+ ld [wLeftMapMoveCounter], a
+.asm_148f8
+ ld hl, wd4fa
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_1491f
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1491f
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1491f
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_1491f
+ cp $3
+ jr z, .asm_1491f
+ dec a
+ ld [wRightMapMoveCounter], a
+.asm_1491f
+ ret
+
+Func_14920: ; 0x14920
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_14937
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_14937
+ ld a, $1
+ ld [wd55a], a
+ callba StartMapMoveMode
+ ret
+
+Func_14947: ; 0x14947
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_1495e
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1495e
+ xor a
+ ld [wd55a], a
+ callba StartMapMoveMode
+ ret
+
+Func_1496d: ; 0x1496d
+ ld a, $55
+ ld [wd803], a
+ ld a, $4
+ ld [wd804], a
+ ld a, $2
+ ld [wd7eb], a
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $0f
+ call PlaySoundEffect
+ ret
+
+Func_14990: ; 0x14990
+ ld a, [wd4ef]
+ and a
+ jr nz, .asm_149b6
+ ld a, [wLeftMapMoveDiglettAnimationCounter]
+ and a
+ jr z, .asm_149a2
+ dec a
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ jr .asm_149b6
+
+.asm_149a2
+ call Func_1130
+ ret nz
+ ld a, $14
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ ld a, [wLeftMapMoveDiglettFrame]
+ xor $1
+ ld [wLeftMapMoveDiglettFrame], a
+ call Func_149d9
+.asm_149b6
+ ld a, [wd4f1]
+ and a
+ ret nz
+ ld a, [wRightMapMoveDiglettAnimationCounter]
+ and a
+ jr z, .asm_149c6
+ dec a
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ret
+
+.asm_149c6
+ call Func_1130
+ ret nz
+ ld a, $14
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ld a, [wRightMapMoveDiglettFrame]
+ xor $1
+ ld [wRightMapMoveDiglettFrame], a
+ add $3
+ ; fall through
+Func_149d9: ; 0x149d9
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileListDataPointers_14a11
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_149e9
+ ld hl, TileListDataPointers_14a83
+.asm_149e9
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, BANK(TileListDataPointers_14a11)
+ call Func_10aa
+ ret
+
+Func_149f5: ; 0x149f5
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_14af5
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_14a05
+ ld hl, TileListDataPointers_14c8d
+.asm_14a05
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, BANK(Data_14af5)
+ call Func_10aa
+ ret
+
+TileListDataPointers_14a11: ; 0x14a11
+ dw TileListData_14a1d
+ dw TileListData_14a20
+ dw TileListData_14a23
+ dw TileListData_14a26
+ dw TileListData_14a29
+ dw TileListData_14a2c
+
+TileListData_14a1d: ; 0x14a1d
+ db $01
+ dw TileListData_14a2f
+
+TileListData_14a20: ; 0x14a20
+ db $01
+ dw TileListData_14a3d
+
+TileListData_14a23: ; 0x14a23
+ db $01
+ dw TileListData_14a4b
+
+TileListData_14a26: ; 0x14a26
+ db $01
+ dw TileListData_14a59
+
+TileListData_14a29: ; 0x14a29
+ db $01
+ dw TileListData_14a67
+
+TileListData_14a2c: ; 0x14a2c
+ db $01
+ dw TileListData_14a75
+
+TileListData_14a2f: ; 0x14a2f
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $4C, $4D
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $4E, $4F
+
+ db $00 ; terminator
+
+TileListData_14a3d: ; 0x14a3d
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $50, $51
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $52, $53
+
+ db $00 ; terminator
+
+TileListData_14a4b: ; 0x14a4b
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $54, $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $55, $80
+
+ db $00 ; terminator
+
+TileListData_14a59: ; 0x14a59
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $56, $57
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $58, $59
+
+ db $00 ; terminator
+
+TileListData_14a67: ; 0x14a67
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $5a, $5b
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $5c, $5d
+
+ db $00 ; terminator
+
+TileListData_14a75: ; 0x14a75
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $80, $5e
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $80, $5f
+
+ db $00 ; terminator
+
+TileListDataPointers_14a83:
+ dw TileListData_14a8f
+ dw TileListData_14a92
+ dw TileListData_14a95
+ dw TileListData_14a98
+ dw TileListData_14a9b
+ dw TileListData_14a9e
+
+TileListData_14a8f: ; 0x14a8f
+ db $01
+ dw TileListData_14aa1
+
+TileListData_14a92: ; 0x14a92
+ db $01
+ dw TileListData_14aaf
+
+TileListData_14a95: ; 0x14a95
+ db $01
+ dw TileListData_14abd
+
+TileListData_14a98: ; 0x14a98
+ db $01
+ dw TileListData_14acb
+
+TileListData_14a9b: ; 0x14a9b
+ db $01
+ dw TileListData_14ad9
+
+TileListData_14a9e: ; 0x14a9e
+ db $01
+ dw TileListData_14ae7
+
+TileListData_14aa1: ; 0x14aa1
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $54, $55
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $56, $57
+
+ db $00
+
+TileListData_14aaf: ; 0x14aaf
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $58, $59
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $5A, $5B
+
+ db $00 ; terminator
+
+TileListData_14abd: ; 0x14abd
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $5C, $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $5D, $80
+
+ db $00 ; terminator
+
+TileListData_14acb: ; 0x14acb
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $55, $54
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $57, $56
+
+ db $00 ; terminator
+
+TileListData_14ad9: ; 0x14ad9
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $59, $58
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $5B, $5A
+
+ db $00 ; terminator
+
+TileListData_14ae7: ; 0x14ae7
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $80, $5C
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $80, $5D
+
+ db $00 ; terminator
+
+Data_14af5: ; 0x14af5
+ dw Data_14b05
+ dw Data_14b0e
+ dw Data_14b17
+ dw Data_14b20
+ dw Data_14b29
+ dw Data_14b32
+ dw Data_14b3b
+ dw Data_14b44
+
+Data_14b05: ; 0x14b05
+ db $04
+ dw Data_14b4d
+ dw Data_14b57
+ dw Data_14b61
+ dw Data_14b6b
+
+Data_14b0e: ; 0x14b0e
+ db $04
+ dw Data_14b75
+ dw Data_14b7f
+ dw Data_14b89
+ dw Data_14b93
+
+Data_14b17: ; 0x14b17
+ db $04
+ dw Data_14b9d
+ dw Data_14ba7
+ dw Data_14bb1
+ dw Data_14bbb
+
+Data_14b20: ; 0x14b20
+ db $04
+ dw Data_14bc5
+ dw Data_14bcf
+ dw Data_14bd9
+ dw Data_14be3
+
+Data_14b29: ; 0x14b29
+ db $04
+ dw Data_14bed
+ dw Data_14bf7
+ dw Data_14c01
+ dw Data_14c0b
+
+Data_14b32: ; 0x14b32
+ db $04
+ dw Data_14c15
+ dw Data_14c1f
+ dw Data_14c29
+ dw Data_14c33
+
+Data_14b3b: ; 0x14b3b
+ db $04
+ dw Data_14c3d
+ dw Data_14c47
+ dw Data_14c51
+ dw Data_14c5b
+
+Data_14b44: ; 0x14b44
+ db $04
+ dw Data_14c65
+ dw Data_14c6f
+ dw Data_14c79
+ dw Data_14c83
+
+Data_14b4d: ; 0x14b4d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomBaseGameBoyGfx + $a60
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b57: ; 0x14b57
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomBaseGameBoyGfx + $a90
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b61: ; 0x14b61
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomBaseGameBoyGfx + $ac0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b6b: ; 0x14b6b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomBaseGameBoyGfx + $af0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b75: ; 0x14b75
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $720
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b7f: ; 0x14b7f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $750
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b89: ; 0x14b89
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $780
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b93: ; 0x14b93
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b9d: ; 0x14b9d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14ba7: ; 0x14ba7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bb1: ; 0x14bb1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $820
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bbb: ; 0x14bbb
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $850
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bc5: ; 0x14bc5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $860
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bcf: ; 0x14bcf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $890
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bd9: ; 0x14bd9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14be3: ; 0x14be3
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bed: ; 0x14bed
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomBaseGameBoyGfx + $B00
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14bf7: ; 0x14bf7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomBaseGameBoyGfx + $B30
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14c01: ; 0x14c01
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomBaseGameBoyGfx + $B60
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14c0b: ; 0x14c0b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomBaseGameBoyGfx + $B90
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14c15: ; 0x14c15
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $900
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c1f: ; 0x14c1f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $930
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c29: ; 0x14c29
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $960
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c33: ; 0x14c33
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $990
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c3d: ; 0x14c3d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c47: ; 0x14c47
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9D0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c51: ; 0x14c51
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c5b: ; 0x14c5b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c65: ; 0x14c65
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c6f: ; 0x14c6f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A70
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c79: ; 0x14c79
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c83: ; 0x14c83
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AD0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileListDataPointers_14c8d:
+ dw Data_14c9d
+ dw Data_14ca0
+ dw Data_14ca3
+ dw Data_14ca6
+ dw Data_14ca9
+ dw Data_14cac
+ dw Data_14caf
+ dw Data_14cb2
+
+Data_14c9d: ; 0x14c9d
+ db $01
+ dw TileListData_14cb5
+
+Data_14ca0: ; 0x14ca0
+ db $01
+ dw TileListData_14ccf
+
+Data_14ca3: ; 0x14ca3
+ db $01
+ dw TileListData_14ce9
+
+Data_14ca6: ; 0x14ca6
+ db $01
+ dw TileListData_14d03
+
+Data_14ca9: ; 0x14ca9
+ db $01
+ dw TileListData_14d1d
+
+Data_14cac: ; 0x14cac
+ db $01
+ dw TileListData_14d37
+
+Data_14caf: ; 0x14caf
+ db $01
+ dw TileListData_14d51
+
+Data_14cb2: ; 0x14cb2
+ db $01
+ dw TileListData_14d6b
+
+TileListData_14cb5: ; 0x14cb5
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $06, $07
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $08, $09, $0A
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $0B, $0C, $0D
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $0E, $0F
+
+ db $00 ; terminator
+
+TileListData_14ccf: ; 0x14ccf
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $06, $07
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $10, $11, $0A
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $12, $13, $0D
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $14, $15
+
+ db $00 ; terminator
+
+TileListData_14ce9: ; 0x14ce9
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $06, $07
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $10, $16, $17
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $12, $18, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $14, $15
+
+ db $00 ; terminator
+
+TileListData_14d03: ; 0x14d03
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $1A, $1B
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $1C, $1D, $17
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $12, $18, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $14, $15
+
+ db $00 ; terminator
+
+TileListData_14d1d: ; 014d1d
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $07, $06
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $0A, $1E, $08
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $22, $0C, $24
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $0F, $0E
+
+ db $00 ; terminator
+
+TileListData_14d37: ; 0x14d37
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $07, $06
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $0A, $1F, $10
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $22, $13, $25
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $15, $14
+
+ db $00 ; terminator
+
+TileListData_14d51: ; 0x14d51
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $07, $06
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $17, $20, $10
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $23, $18, $25
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $15, $14
+
+ db $00 ; terminator
+
+TileListData_14d6b: ; 0x14d6b
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $1B, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $17, $21, $1C
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $23, $18, $25
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $15, $14
+
+ db $00 ; terminator
+
+ResolveVoltorbCollision: ; 0x14d85
+ ld a, [wWhichVoltorb]
+ and a
+ jr z, .noVoltorbCollision
+ xor a
+ ld [wWhichVoltorb], a
+ call Func_14dc9
+ ld a, $10
+ ld [wd4d6], a
+ ld a, [wWhichVoltorbId]
+ sub $3
+ ld [wd4d7], a
+ ld a, $4
+ callba Func_10000
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ret
+
+.noVoltorbCollision
+ ld a, [wd4d6]
+ and a
+ ret z
+ dec a
+ ld [wd4d6], a
+ ret nz
+ ld a, $ff
+ ld [wd4d7], a
+ ret
+
+Func_14dc9: ; 0x14dc9
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $0e
+ call PlaySoundEffect
+ ret
+
+ResolveRedStageSpinnerCollision: ; 0x14dea
+ ld a, [wSpinnerCollision]
+ and a
+ jr z, Func_14e10
+ xor a
+ ld [wSpinnerCollision], a
+ ld a, [wBallYVelocity]
+ ld c, a
+ ld a, [wBallYVelocity + 1]
+ ld b, a
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld a, $c
+ callba Func_10000
+ ; fall through
+Func_14e10: ; 0x14e10
+ ld hl, wd50b
+ ld a, [hli]
+ or [hl]
+ ret z
+ ld a, [wd50b]
+ ld c, a
+ ld a, [wd50c]
+ ld b, a
+ bit 7, b
+ jr nz, .asm_14e2e
+ ld a, c
+ sub $7
+ ld c, a
+ ld a, b
+ sbc $0
+ ld b, a
+ jr nc, .asm_14e3b
+ jr .asm_14e38
+
+.asm_14e2e
+ ld a, c
+ add $7
+ ld c, a
+ ld a, b
+ adc $0
+ ld b, a
+ jr nc, .asm_14e3b
+.asm_14e38
+ ld bc, $0000
+.asm_14e3b
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld hl, wd50b
+ ld a, [wd509]
+ add [hl]
+ ld [wd509], a
+ inc hl
+ ld a, [wd50a]
+ adc [hl]
+ bit 7, a
+ ld c, $0
+ jr z, .asm_14e5e
+ add $18
+ ld c, $1
+ jr .asm_14e66
+
+.asm_14e5e
+ cp $18
+ jr c, .asm_14e66
+ sub $18
+ ld c, $1
+.asm_14e66
+ ld [wd50a], a
+ ld a, c
+ and a
+ ret z
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd62d
+ call Func_e4a
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_14e8a
+ call Func_14ea7
+ ret
+
+.asm_14e8a
+ inc a
+ ld [wPikachuSaverCharge], a
+ call Func_14ea7
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_14e9d
+ ld a, $64
+ ld [wd51e], a
+.asm_14e9d
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret nz
+ call Func_14ece
+ ret
+
+Func_14ea7: ; 0x14ea7
+ ld a, [wd51e]
+ and a
+ ret nz
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ ld b, $0
+ ld hl, SoundEffects_14ebe
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ call PlaySoundEffect
+ ret
+
+SoundEffects_14ebe:
+ db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
+
+Func_14ece: ; 0x14ece
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ sla c
+ ld b, $0
+ ld hl, TileDataPointers_14eeb
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_14ee1
+ ld hl, TileDataPointers_1509b
+.asm_14ee1
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, BANK(TileDataPointers_14eeb)
+ call Func_10aa
+ ret
+
+TileDataPointers_14eeb:
+ dw TileData_14f0b
+ dw TileData_14f10
+ dw TileData_14f15
+ dw TileData_14f1a
+ dw TileData_14f1f
+ dw TileData_14f24
+ dw TileData_14f29
+ dw TileData_14f2e
+ dw TileData_14f33
+ dw TileData_14f38
+ dw TileData_14f3d
+ dw TileData_14f42
+ dw TileData_14f47
+ dw TileData_14f4c
+ dw TileData_14f51
+ dw TileData_14f56
+
+TileData_14f0b: ; 0x14f0b
+ db $02
+ dw TileData_14f5b
+ dw TileData_14f65
+
+TileData_14f10: ; 0x14f10
+ db $02
+ dw TileData_14f6f
+ dw TileData_14f79
+
+TileData_14f15: ; 0x14f15
+ db $02
+ dw TileData_14f83
+ dw TileData_14f8d
+
+TileData_14f1a: ; 0x14f1a
+ db $02
+ dw TileData_14f97
+ dw TileData_14fa1
+
+TileData_14f1f: ; 0x14f1f
+ db $02
+ dw TileData_14fab
+ dw TileData_14fb5
+
+TileData_14f24: ; 0x14f24
+ db $02
+ dw TileData_14fbf
+ dw TileData_14fc9
+
+TileData_14f29: ; 0x14f29
+ db $02
+ dw TileData_14fd3
+ dw TileData_14fdd
+
+TileData_14f2e: ; 0x14f2e
+ db $02
+ dw TileData_14fe7
+ dw TileData_14ff1
+
+TileData_14f33: ; 0x14f33
+ db $02
+ dw TileData_14ffb
+ dw TileData_15005
+
+TileData_14f38: ; 0x14f38
+ db $02
+ dw TileData_1500f
+ dw TileData_15019
+
+TileData_14f3d: ; 0x14f3d
+ db $02
+ dw TileData_15023
+ dw TileData_1502d
+
+TileData_14f42: ; 0x14f42
+ db $02
+ dw TileData_15037
+ dw TileData_15041
+
+TileData_14f47: ; 0x14f47
+ db $02
+ dw TileData_1504b
+ dw TileData_15055
+
+TileData_14f4c: ; 0x14f4c
+ db $02
+ dw TileData_1505f
+ dw TileData_15069
+
+TileData_14f51: ; 0x14f51
+ db $02
+ dw TileData_15073
+ dw TileData_1507d
+
+TileData_14f56: ; 0x14f56
+ db $02
+ dw TileData_15087
+ dw TileData_15091
+
+TileData_14f5b: ; 0x14f5b
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldTopBaseGameBoyGfx + $cb0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_14f65: ; 0x14f65
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldTopBaseGameBoyGfx + $cd0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_14f6f: ; 0x14f6f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f79: ; 0x14f79
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f83: ; 0x14f83
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f8d: ; 0x14f8d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f97: ; 0x14f97
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fa1: ; 0x14fa1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fab: ; 0x14fab
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fb5: ; 0x14fb5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fbf: ; 0x14fbf
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fc9: ; 0x14fc9
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fd3: ; 0x14fd3
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fdd: ; 0x14fdd
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fe7: ; 0x14fe7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14ff1: ; 0x14ff1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14ffb: ; 0x14ffb
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15005: ; 0x15005
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1500f: ; 0x1500f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15019: ; 0x15019
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15023: ; 0x15023
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1502d: ; 0x1502d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15037: ; 0x15037
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15041: ; 0x15041
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1504b: ; 0x1504b
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15055: ; 0x15055
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1505f: ; 0x1505f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15069: ; 0x15069
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15073: ; 0x15073
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1507d: ; 0x1507d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15087: ; 0x15087
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15091: ; 0x15091
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileDataPointers_1509b:
+ dw TileData_150bb
+ dw TileData_150be
+ dw TileData_150c1
+ dw TileData_150c4
+ dw TileData_150c7
+ dw TileData_150ca
+ dw TileData_150cd
+ dw TileData_150d0
+ dw TileData_150d3
+ dw TileData_150d6
+ dw TileData_150d9
+ dw TileData_150dc
+ dw TileData_150df
+ dw TileData_150e2
+ dw TileData_150e5
+ dw TileData_150e8
+
+TileData_150bb: ; 0x150bb
+ db $01
+ dw TileData_150eb
+
+TileData_150be: ; 0x150be
+ db $01
+ dw TileData_150f9
+
+TileData_150c1: ; 0x150c1
+ db $01
+ dw TileData_15107
+
+TileData_150c4: ; 0x150c4
+ db $01
+ dw TileData_15115
+
+TileData_150c7: ; 0x150c7
+ db $01
+ dw TileData_15123
+
+TileData_150ca: ; 0x150ca
+ db $01
+ dw TileData_15131
+
+TileData_150cd: ; 0x150cd
+ db $01
+ dw TileData_1513f
+
+TileData_150d0: ; 0x150d0
+ db $01
+ dw TileData_1514d
+
+TileData_150d3: ; 0x150d3
+ db $01
+ dw TileData_1515b
+
+TileData_150d6: ; 0x150d6
+ db $01
+ dw TileData_15169
+
+TileData_150d9: ; 0x150d9
+ db $01
+ dw TileData_15177
+
+TileData_150dc: ; 0x150dc
+ db $01
+ dw TileData_15185
+
+TileData_150df: ; 0x150df
+ db $01
+ dw TileData_15193
+
+TileData_150e2: ; 0x150e2
+ db $01
+ dw TileData_151a1
+
+TileData_150e5: ; 0x150e5
+ db $01
+ dw TileData_151af
+
+TileData_150e8: ; 0x150e8
+ db $01
+ dw TileData_151bd
+
+TileData_150eb: ; 0x150eb
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $5E, $5F
+
+ db $00 ; terminator
+
+TileData_150f9: ; 0x150f9
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $60, $61
+
+ db $00 ; terminator
+
+TileData_15107: ; 0x15107
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $62, $63
+
+ db $00 ; terminator
+
+TileData_15115: ; 0x15115
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $64, $65
+
+ db $00 ; terminator
+
+TileData_15123: ; 0x15123
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $66, $67
+
+ db $00 ; terminator
+
+TileData_15131: ; 0x15131
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $68, $69
+
+ db $00 ; terminator
+
+TileData_1513f: ; 0x1513f
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6A, $6B
+
+ db $00 ; terminator
+
+TileData_1514d: ; 0x1514d
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6C, $6D
+
+ db $00 ; terminator
+
+TileData_1515b: ; 0x1515b
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15169: ; 0x15169
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $70, $71
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15177: ; 0x15177
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $72, $73
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15185: ; 0x15185
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $74, $75
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15193: ; 0x15193
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $76, $77
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_151a1: ; 0x151a1
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $78, $79
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_151af: ; 0x151af
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $7A, $7B
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_151bd: ; 0x151bd
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $7C, $7D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $7E, $7F
+
+ db $00 ; terminator
+
+Func_151cb: ; 0x151cb
+ ld a, [wWhichCAVELight]
+ and a
+ jr z, .asm_15229
+ xor a
+ ld [wWhichCAVELight], a
+ ld a, [wd513]
+ and a
+ jr nz, .asm_15229
+ ld a, [wWhichCAVELightId]
+ sub $a
+ ld c, a
+ ld b, $0
+ ld hl, wd50f
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ ret nz
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd50f
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ inc hl
+ and [hl]
+ jr z, Func_asm_1522d
+ ld a, $1
+ ld [wd513], a
+ ld a, $80
+ ld [wd514], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $09
+ call PlaySoundEffect
+ ld hl, wd62c
+ call Func_e4a
+ jr Func_asm_1522d
+
+.asm_15229
+ call Func_15270
+ ret z
+ ; fall through
+
+Func_asm_1522d: ; 0x1522d
+ ld hl, wd512
+ ld b, $4
+.asm_15232
+ ld a, [hld]
+ push hl
+ call Func_1523c
+ pop hl
+ dec b
+ jr nz, .asm_15232
+ ret
+
+Func_1523c: ; 0x1523c
+ and a
+ jr z, .asm_1524e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15249
+ ld hl, TileDataPointers_152dd
+ jr .asm_1525b
+
+.asm_15249
+ ld hl, TileDataPointers_1531d
+ jr .asm_1525b
+
+.asm_1524e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15258
+ ld hl, TileDataPointers_152e5
+ jr .asm_1525b
+
+.asm_15258
+ ld hl, TileDataPointers_15325
+.asm_1525b
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $5
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_15270: ; 0x15270
+ ld a, [wd513]
+ and a
+ jr z, .asm_152a6
+ ld a, [wd514]
+ dec a
+ ld [wd514], a
+ jr nz, .asm_1528d
+ ld [wd513], a
+ ld a, $1
+ ld [wd608], a
+ ld a, $3
+ ld [wd607], a
+ xor a
+.asm_1528d
+ and $7
+ ret nz
+ ld a, [wd514]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd50f
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_152a6
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .asm_152c2
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.asm_152c2
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hl], a
+ ret
+
+TileDataPointers_152dd:
+ dw TileData_152ed
+ dw TileData_152f3
+ dw TileData_152f9
+ dw TileData_152ff
+
+TileDataPointers_152e5:
+ dw TileData_15305
+ dw TileData_1530b
+ dw TileData_15311
+ dw TileData_15317
+
+TileData_152ed: ; 0x152ed
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $7d
+
+ db $00 ; terminator
+
+TileData_152f3: ; 0x152f3
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $7d
+
+ db $00 ; terminator
+
+TileData_152f9: ; 0x152f9
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7f
+
+ db $00 ; terminator
+
+TileData_152ff: ; 0x152ff
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7f
+
+ db $00 ; terminator
+
+TileData_15305: ; 0x15305
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $7c
+
+ db $00 ; terminator
+
+TileData_1530b: ; 0x1530b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $7c
+
+ db $00 ; terminator
+
+TileData_15311: ; 0x15311
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7e
+
+ db $00 ; terminator
+
+TileData_15317: ; 0x15317
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7e
+
+ db $00 ; terminator
+
+TileDataPointers_1531d:
+ dw TileData_1532d
+ dw TileData_15333
+ dw TileData_15339
+ dw TileData_1533f
+
+TileDataPointers_15325:
+ dw TileData_15345
+ dw TileData_1534b
+ dw TileData_15351
+ dw TileData_15357
+
+TileData_1532d: ; 0x1532d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $27
+
+ db $00 ; terminator
+
+TileData_15333: ; 0x15333
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $29
+
+ db $00 ; terminator
+
+TileData_15339: ; 0x15339
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1533f: ; 0x1533f
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7F
+
+ db $00 ; terminator
+
+TileData_15345: ; 0x15345
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $26
+
+ db $00 ; terminator
+
+TileData_1534b: ; 0x1534b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $28
+
+ db $00 ; terminator
+
+TileData_15351: ; 0x15351
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7C
+
+ db $00 ; terminator
+
+TileData_15357: ; 0x15357
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7D
+
+ db $00 ; terminator
+
+ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d
+ ld a, [wWhichPinballUpgradeTrigger]
+ and a
+ jp z, .asm_1544c
+ xor a
+ ld [wWhichPinballUpgradeTrigger], a
+ ld a, [wStageCollisionState]
+ bit 0, a
+ jp z, .asm_1544c
+ ld a, [wd5fc]
+ and a
+ jp nz, .asm_1544c
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ call Func_159c9
+ ld a, $b
+ callba Func_10000
+ ld a, [wWhichPinballUpgradeTriggerId]
+ sub $e
+ ld c, a
+ ld b, $0
+ ld hl, wd5f9
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ ret nz
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd5f9
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ jr nz, .asm_153c0
+ lb de, $00, $09
+ call PlaySoundEffect
+ jp Func_15450
+
+.asm_153c0
+ ld a, $1
+ ld [wd5fc], a
+ ld a, $80
+ ld [wd5fd], a
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wBallType]
+ cp MASTER_BALL
+ jr z, .masterBall
+ lb de, $06, $3a
+ call PlaySoundEffect
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld de, FieldMultiplierText
+ ld hl, wd5cc
+ call LoadTextHeader
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeProgressionRedField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ add $30
+ ld [wBottomMessageText + $12], a
+ jr .asm_15447
+
+.masterBall
+ lb de, $0f, $4d
+ call PlaySoundEffect
+ ld bc, OneMillionPoints
+ callba AddBigBCD6FromQueue
+ ld bc, $0100
+ ld de, $0000
+ push bc
+ push de
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5d4
+ ld de, DigitsText1to8
+ call Func_32cc
+ pop de
+ pop bc
+ ld hl, wd5cc
+ ld de, FieldMultiplierSpecialBonusText
+ call LoadTextHeader
+.asm_15447
+ call TransitionPinballUpgrade
+ jr Func_15450
+
+.asm_1544c
+ call Func_154a9
+ ret z
+
+Func_15450
+ ld a, [wStageCollisionState]
+ bit 0, a
+ ret z
+ ld hl, wd5fb
+ ld b, $3
+.asm_1545b
+ ld a, [hld]
+ push hl
+ call Func_15465
+ pop hl
+ dec b
+ jr nz, .asm_1545b
+ ret
+
+Func_15465: ; 0x15465
+ and a
+ jr z, .asm_15477
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15472
+ ld hl, TileDataPointers_15511
+ jr .asm_15484
+
+.asm_15472
+ ld hl, TileDataPointers_15543
+ jr .asm_15484
+
+.asm_15477
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15481
+ ld hl, TileDataPointers_15517
+ jr .asm_15484
+
+.asm_15481
+ ld hl, TileDataPointers_15549
+.asm_15484
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $5
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_15499: ; 0x15499
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret nz
+ ld b, $3
+.asm_1549f
+ push hl
+ xor a
+ call Func_15465
+ pop hl
+ dec b
+ jr nz, .asm_1549f
+ ret
+
+Func_154a9: ; 0x154a9
+ ld a, [wd5fc]
+ and a
+ jr z, .asm_154d6
+ ld a, [wd5fd]
+ dec a
+ ld [wd5fd], a
+ jr nz, .asm_154bb
+ ld [wd5fc], a
+.asm_154bb
+ and $7
+ jr nz, .asm_154d4
+ ld a, [wd5fd]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd5f9
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_154d4
+ xor a
+ ret
+
+.asm_154d6
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .asm_154ee
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.asm_154ee
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hl], a
+ ret
+
+BallTypeProgressionRedField: ; 0x15505
+; Determines the next upgrade for the Ball.
+ db GREAT_BALL ; POKE_BALL -> GREAT_BALL
+ db GREAT_BALL ; unused
+ db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
+ db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
+ db MASTER_BALL ; unused
+ db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
+
+BallTypeDegradationRedField: ; 0x1550b
+; Determines the previous upgrade for the Ball.
+ db POKE_BALL ; POKE_BALL -> POKE_BALL
+ db POKE_BALL ; unused
+ db POKE_BALL ; GREAT_BALL -> POKE_BALL
+ db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
+ db ULTRA_BALL ; unused
+ db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
+
+TileDataPointers_15511:
+ dw TileData_1551d
+ dw TileData_15523
+ dw TileData_1552a
+
+TileDataPointers_15517:
+ dw TileData_15530
+ dw TileData_15536
+ dw TileData_1553d
+
+TileData_1551d: ; 0x1551d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $E7
+ db $ac
+
+ db $00 ; terminator
+
+TileData_15523: ; 0x15523
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $C9
+ db $ad, $ae
+
+ db $00 ; terminator
+
+TileData_1552a: ; 0x1552a
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $CC
+ db $af
+
+ db $00 ; terminator
+
+TileData_15530: ; 0x15530
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $E7
+ db $66
+
+ db $00 ; terminator
+
+TileData_15536: ; 0x15536
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $C9
+ db $68, $69
+
+ db $00 ; terminator
+
+TileData_1553d: ; 0x1553d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $CC
+ db $6a
+
+ db $00 ; terminator
+
+TileDataPointers_15543:
+ dw TileData_1554f
+ dw TileData_15555
+ dw TileData_1555c
+
+TileDataPointers_15549:
+ dw TileData_15562
+ dw TileData_15568
+ dw TileData_1556F
+
+TileData_1554f: ; 0x1554f
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $e7
+ db $3D
+
+ db $00 ; terminator
+
+TileData_15555: ; 0x15555
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $c9
+ db $3F, $40
+
+ db $00 ; terminator
+
+TileData_1555c: ; 0x1555c
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $cc
+ db $41
+
+ db $00 ; terminator
+
+TileData_15562: ; 0x15562
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $e7
+ db $37
+
+ db $00 ; terminator
+
+TileData_15568: ; 0x15568
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $c9
+ db $39, $3a
+
+ db $00 ; terminator
+
+TileData_1556F: ; 0x1556F
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $cc
+ db $3B
+
+ db $00 ; terminator
+
+HandleRedStageBallTypeUpgradeCounter: ; 0x15575
+ ld a, [wCapturingMon]
+ and a
+ ret nz
+ ld hl, wBallTypeCounter
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ or b
+ ret z
+ dec bc
+ ld a, b
+ ld [hld], a
+ ld [hl], c
+ or c
+ ret nz
+ ; counter is now 0! Degrade the ball upgrade.
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeDegradationRedField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ and a
+ jr z, .pokeball
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+.pokeball
+ call TransitionPinballUpgrade
+ ret
+
+TransitionPinballUpgrade: ; 0x155a7
+ ld a, [wBallType]
+ ld c, a
+ sla c
+ ld b, $0
+ ld hl, PinballUpgradeTransitionPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(PinballUpgradeTransitionPointers)
+ call Func_10aa
+ ; fall through
+
+Func_155bb: ; 0x155bb
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ; gameboy color
+ ld a, [wBallType]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_157f7
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, BANK(Data_157f7)
+ ld de, LoadPalettes
+ call Func_10c5
+ ret
+
+PinballUpgradeTransitionPointers:
+ dw TransitionToPokeBallPointers ; POKE_BALL
+ dw TransitionToPokeBallPointers ; POKE_BALL
+ dw TransitionToGreatBallPointers ; GREAT_BALL
+ dw TransitionToUltraBallPointers ; ULTRA_BALL
+ dw TransitionToUltraBallPointers ; ULTRA_BALL
+ dw TransitionToMasterBallPointers ; MASTER_BALL
+
+TransitionToPokeBallPointers:
+ db 11
+ dw TransitionToPokeBall_TileData_1
+ dw TransitionToPokeBall_TileData_2
+ dw TransitionToPokeBall_TileData_3
+ dw TransitionToPokeBall_TileData_4
+ dw TransitionToPokeBall_TileData_5
+ dw TransitionToPokeBall_TileData_6
+ dw TransitionToPokeBall_TileData_7
+ dw TransitionToPokeBall_TileData_8
+ dw TransitionToPokeBall_TileData_9
+ dw TransitionToPokeBall_TileData_10
+ dw TransitionToPokeBall_TileData_11
+
+TransitionToGreatBallPointers:
+ db 11
+ dw TransitionToGreatBall_TileData_1
+ dw TransitionToGreatBall_TileData_2
+ dw TransitionToGreatBall_TileData_3
+ dw TransitionToGreatBall_TileData_4
+ dw TransitionToGreatBall_TileData_5
+ dw TransitionToGreatBall_TileData_6
+ dw TransitionToGreatBall_TileData_7
+ dw TransitionToGreatBall_TileData_8
+ dw TransitionToGreatBall_TileData_9
+ dw TransitionToGreatBall_TileData_10
+ dw TransitionToGreatBall_TileData_11
+
+TransitionToUltraBallPointers:
+ db 11
+ dw TransitionToUltraBall_TileData_1
+ dw TransitionToUltraBall_TileData_2
+ dw TransitionToUltraBall_TileData_3
+ dw TransitionToUltraBall_TileData_4
+ dw TransitionToUltraBall_TileData_5
+ dw TransitionToUltraBall_TileData_6
+ dw TransitionToUltraBall_TileData_7
+ dw TransitionToUltraBall_TileData_8
+ dw TransitionToUltraBall_TileData_9
+ dw TransitionToUltraBall_TileData_10
+ dw TransitionToUltraBall_TileData_11
+
+TransitionToMasterBallPointers:
+ db 11
+ dw TransitionToMasterBall_TileData_1
+ dw TransitionToMasterBall_TileData_2
+ dw TransitionToMasterBall_TileData_3
+ dw TransitionToMasterBall_TileData_4
+ dw TransitionToMasterBall_TileData_5
+ dw TransitionToMasterBall_TileData_6
+ dw TransitionToMasterBall_TileData_7
+ dw TransitionToMasterBall_TileData_8
+ dw TransitionToMasterBall_TileData_9
+ dw TransitionToMasterBall_TileData_10
+ dw TransitionToMasterBall_TileData_11
+
+TransitionToPokeBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballPokeballGfx + $0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballPokeballGfx + $30
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballPokeballGfx + $60
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballPokeballGfx + $90
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballPokeballGfx + $c0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballPokeballGfx + $f0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballPokeballGfx + $120
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballPokeballGfx + $150
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballPokeballGfx + $180
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballPokeballGfx + $1b0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballPokeballGfx + $1e0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballGreatballGfx + $0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballGreatballGfx + $30
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballGreatballGfx + $60
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballGreatballGfx + $90
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballGreatballGfx + $c0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballGreatballGfx + $f0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballGreatballGfx + $120
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballGreatballGfx + $150
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballGreatballGfx + $180
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballGreatballGfx + $1b0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballGreatballGfx + $1e0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballUltraballGfx + $0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballUltraballGfx + $30
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballUltraballGfx + $60
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballUltraballGfx + $90
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballUltraballGfx + $c0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballUltraballGfx + $f0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballUltraballGfx + $120
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballUltraballGfx + $150
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballUltraballGfx + $180
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballUltraballGfx + $1b0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballUltraballGfx + $1e0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballMasterballGfx + $0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballMasterballGfx + $30
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballMasterballGfx + $60
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballMasterballGfx + $90
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballMasterballGfx + $c0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballMasterballGfx + $f0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballMasterballGfx + $120
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballMasterballGfx + $150
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballMasterballGfx + $180
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballMasterballGfx + $1b0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballMasterballGfx + $1e0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+Data_157f7:
+ dw Data_15803
+ dw Data_15803
+ dw Data_1580a
+ dw Data_15811
+ dw Data_15811
+ dw Data_15818
+
+Data_15803:
+ db $08, $04, $40, $68, $51, $37, $00
+Data_1580a:
+ db $08, $04, $40, $70, $51, $37, $00
+Data_15811:
+ db $08, $04, $40, $78, $51, $37, $00
+Data_15818:
+ db $08, $04, $40, $80, $51, $37, $00
+
+ResolveRedStageBoardTriggerCollision: ; 0x1581f
+ ld a, [wWhichBoardTrigger]
+ and a
+ ret z
+ xor a
+ ld [wWhichBoardTrigger], a
+ ld bc, FivePoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wWhichBoardTriggerId]
+ sub $11
+ ld c, a
+ ld b, $0
+ ld hl, wd521
+ add hl, bc
+ ld [hl], $1
+ ld a, [wd521]
+ and a
+ call nz, Func_1587c
+ ld a, [wd522]
+ and a
+ call nz, Func_158c0
+ ld a, [wd523]
+ and a
+ call nz, Func_15904
+ ld a, [wd524]
+ and a
+ call nz, HandleLeftAlleyTriggerRedField
+ ld a, [wd525]
+ and a
+ call nz, Func_15931
+ ld a, [wd526]
+ and a
+ call nz, Func_15944
+ ld a, [wd527]
+ and a
+ call nz, HandleRightAlleyTriggerRedField
+ ld a, [wd528]
+ and a
+ call nz, Func_15990
+ ret
+
+Func_1587c: ; 0x1587c
+ xor a
+ ld [wd521], a
+ ld a, [wLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ callba Func_10000
+ ret c
+ ld a, [wLeftAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wLeftAlleyCount], a
+ set 7, a
+ ld [wIndicatorStates], a
+ cp $83
+ ret nz
+ ld a, [wStageCollisionState]
+ and $1
+ or $6
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ ret
+
+Func_158c0: ; 0x158c0
+ xor a
+ ld [wd522], a
+ ld a, [wLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ callba Func_10000
+ ret c
+ ld a, [wLeftAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wLeftAlleyCount], a
+ set 7, a
+ ld [wIndicatorStates], a
+ cp $83
+ ret nz
+ ld a, [wStageCollisionState]
+ and $1
+ or $6
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ ret
+
+Func_15904: ; 0x15904
+ xor a
+ ld [wd523], a
+ ld a, [wSecondaryLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $3
+ callba Func_10000
+ ret
+
+HandleLeftAlleyTriggerRedField: ; 0x1591e
+; Ball passed over the left alley trigger point in the Red Field.
+ xor a
+ ld [wd524], a
+ ld [wRightAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wLeftAlleyTrigger], a
+ call Func_159c9
+ ret
+
+Func_15931: ; 0x15931
+ xor a
+ ld [wd525], a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ ld [wSecondaryLeftAlleyTrigger], a
+ call Func_159c9
+ ret
+
+Func_15944: ; 0x15944
+ xor a
+ ld [wd526], a
+ ld a, [wRightAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld a, $2
+ callba Func_10000
+ ret c
+ ld a, [wRightAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wRightAlleyCount], a
+ cp $3
+ jr z, .asm_1596e
+ set 7, a
+.asm_1596e
+ ld [wIndicatorStates + 1], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ ret c
+ ld a, $80
+ ld [wIndicatorStates + 3], a
+ ret
+
+HandleRightAlleyTriggerRedField: ; 0x1597d
+; Ball passed over the right alley trigger point in the Red Field.
+ xor a
+ ld [wd527], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wRightAlleyTrigger], a
+ call Func_159c9
+ ret
+
+Func_15990: ; 0x15990
+ xor a
+ ld [wd528], a
+ ld a, [wRightAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld a, $2
+ callba Func_10000
+ ret c
+ ld a, [wRightAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wRightAlleyCount], a
+ cp $3
+ jr z, .asm_159ba
+ set 7, a
+.asm_159ba
+ ld [wIndicatorStates + 1], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ ret c
+ ld a, $80
+ ld [wIndicatorStates + 3], a
+ ret
+
+Func_159c9: ; 0x159c9
+ ld a, [wd7ad]
+ bit 7, a
+ ret nz
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $1
+ or c
+ ld [wStageCollisionState], a
+ ld a, $ff
+ ld [wd7ad], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ ld a, $1
+ ld [wd580], a
+ call Func_1404a
+ ret
+
+Func_159f4: ; 0x159f4
+ ld a, [hLCDC]
+ bit 7, a
+ jr z, .asm_15a13
+ ld a, [wd7f2]
+ and $fe
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $fe
+ cp c
+ jr z, .asm_15a13
+ add c
+ cp $2
+ jr z, .asm_15a13
+ lb de, $00, $00
+ call PlaySoundEffect
+.asm_15a13
+ ld a, [wd7f2]
+ swap a
+ ld c, a
+ ld a, [wStageCollisionState]
+ sla a
+ or c
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_15a3f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_15a2d
+ ld hl, TileDataPointers_15d05
+.asm_15a2d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_15a3f)
+ call Func_10aa
+ ld a, [wStageCollisionState]
+ ld [wd7f2], a
+ ret
+
+TileDataPointers_15a3f:
+ dw $0000
+ dw TileData_15b71
+ dw TileData_15b16
+ dw TileData_15abf
+ dw TileData_15b23
+ dw TileData_15adc
+ dw TileData_15b2a
+ dw TileData_15af3
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b16
+ dw $0000
+ dw TileData_15b23
+ dw $0000
+ dw TileData_15b2a
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b71
+ dw TileData_15b3d
+ dw $0000
+ dw TileData_15b50
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b82
+ dw $0000
+ dw $0000
+ dw TileData_15b3d
+ dw $0000
+ dw TileData_15b50
+ dw $0000
+ dw $0000
+ dw TileData_15b57
+ dw $0000
+ dw $0000
+ dw TileData_15b71
+ dw TileData_15b2a
+ dw $0000
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b57
+ dw TileData_15b82
+ dw $0000
+ dw $0000
+ dw TileData_15b2a
+ dw $0000
+ dw $0000
+ dw TileData_15b6a
+ dw $0000
+ dw TileData_15b3d
+ dw $0000
+ dw $0000
+ dw TileData_15b71
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b6a
+ dw $0000
+ dw TileData_15b3d
+ dw TileData_15b82
+ dw $0000
+
+TileData_15abf: ; 0x15abf
+ db $e
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+
+TileData_15adc: ; 0x15adc
+ db $0b
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+ dw TileData_15ce7
+ dw TileData_15cf1
+ dw TileData_15cfb
+
+TileData_15af3: ; 0x15af3
+ db $11
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+ dw TileData_15cab
+ dw TileData_15cb5
+ dw TileData_15cbf
+
+TileData_15b16: ; 0x15b16
+ db $06
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+
+TileData_15b23: ; 0x15b23
+ db $03
+ dw TileData_15ce7
+ dw TileData_15cf1
+ dw TileData_15cfb
+
+TileData_15b2a: ; 0x15b2a
+ db $09
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15cab
+ dw TileData_15cb5
+ dw TileData_15cbf
+
+TileData_15b3d: ; 0x15b3d
+ db $09
+ dw TileData_15bcf
+ dw TileData_15bd9
+ dw TileData_15be3
+ dw TileData_15bed
+ dw TileData_15bf7
+ dw TileData_15c01
+ dw TileData_15ce7
+ dw TileData_15cf1
+ dw TileData_15cfb
+
+TileData_15b50: ; 0x15b50
+ db $03
+ dw TileData_15cab
+ dw TileData_15cb5
+ dw TileData_15cbf
+
+TileData_15b57: ; 0x15b57
+ db $09
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15cc9
+ dw TileData_15cd3
+ dw TileData_15cdd
+
+TileData_15b6a: ; 0x15b6a
+ db $03
+ dw TileData_15cc9
+ dw TileData_15cd3
+ dw TileData_15cdd
+
+TileData_15b71: ; 0x15b71
+ db $08
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+
+TileData_15b82: ; 0x15b82
+ db $08
+ dw TileData_15c5b
+ dw TileData_15c65
+ dw TileData_15c6f
+ dw TileData_15c79
+ dw TileData_15c83
+ dw TileData_15c8d
+ dw TileData_15c97
+ dw TileData_15ca1
+
+TileData_15b93: ; 0x15b93
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15b9d: ; 0x15b9d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15ba7: ; 0x15ba7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bb1: ; 0x15bb1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bbb: ; 0x15bbb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $50
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bc5: ; 0x15bc5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $53
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bcf: ; 0x15bcf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldTopBaseGameBoyGfx + $9a0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15bd9: ; 0x15bd9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldTopBaseGameBoyGfx + $9d0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15be3: ; 0x15be3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4A
+ dw StageRedFieldTopBaseGameBoyGfx + $a00
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15bed: ; 0x15bed
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4D
+ dw StageRedFieldTopBaseGameBoyGfx + $a30
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15bf7: ; 0x15bf7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $50
+ dw StageRedFieldTopBaseGameBoyGfx + $a60
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c01: ; 0x15c01
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $53
+ dw StageRedFieldTopBaseGameBoyGfx + $a90
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c0b: ; 0x15c0b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $56
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $120
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c15: ; 0x15c15
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $59
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $150
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c1f: ; 0x15c1f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $180
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c29: ; 0x15c29
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c33: ; 0x15c33
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $62
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c3d: ; 0x15c3d
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $65
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $210
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c47: ; 0x15c47
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $66
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $620
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c51: ; 0x15c51
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $69
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $650
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c5b: ; 0x15c5b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $56
+ dw StageRedFieldTopBaseGameBoyGfx + $ac0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c65: ; 0x15c65
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $59
+ dw StageRedFieldTopBaseGameBoyGfx + $af0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c6f: ; 0x15c6f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5C
+ dw StageRedFieldTopBaseGameBoyGfx + $b20
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c79: ; 0x15c79
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5F
+ dw StageRedFieldTopBaseGameBoyGfx + $b50
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c83: ; 0x15c83
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $62
+ dw StageRedFieldTopBaseGameBoyGfx + $b80
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c8d: ; 0x15c8d
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $65
+ dw StageRedFieldTopBaseGameBoyGfx + $bb0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c97: ; 0x15c97
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $66
+ dw StageRedFieldTopBaseGameBoyGfx + $bc0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15ca1: ; 0x15ca1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $69
+ dw StageRedFieldTopBaseGameBoyGfx + $bf0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15cab: ; 0x15cab
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cb5: ; 0x15cb5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cbf: ; 0x15cbf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $72
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $310
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cc9: ; 0x15cc9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6C
+ dw StageRedFieldTopBaseGameBoyGfx + $c20
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15cd3: ; 0x15cd3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6F
+ dw StageRedFieldTopBaseGameBoyGfx + $c50
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15cdd: ; 0x15cdd
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $72
+ dw StageRedFieldTopBaseGameBoyGfx + $c80
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15ce7: ; 0x15ce7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $220
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cf1: ; 0x15cf1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $250
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cfb: ; 0x15cfb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $72
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $280
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_15d05:
+ dw $0000
+ dw TileData_15db1
+ dw TileData_15d96
+ dw TileData_15d85
+ dw TileData_15d99
+ dw TileData_15d8a
+ dw TileData_15d9c
+ dw TileData_15d8f
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15d96
+ dw $0000
+ dw TileData_15d99
+ dw $0000
+ dw TileData_15d9c
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15db1
+ dw TileData_15da1
+ dw $0000
+ dw TileData_15da6
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15db4
+ dw $0000
+ dw $0000
+ dw TileData_15da1
+ dw $0000
+ dw TileData_15da6
+ dw $0000
+ dw $0000
+ dw TileData_15da9
+ dw $0000
+ dw $0000
+ dw TileData_15db1
+ dw TileData_15d9c
+ dw $0000
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15da9
+ dw TileData_15db4
+ dw $0000
+ dw $0000
+ dw TileData_15d9c
+ dw $0000
+ dw $0000
+ dw TileData_15dae
+ dw $0000
+ dw TileData_15da1
+ dw $0000
+ dw $0000
+ dw TileData_15db1
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15dae
+ dw $0000
+ dw TileData_15da1
+ dw TileData_15db4
+ dw $0000
+
+TileData_15d85: ; 0x15d85
+ db $02
+ dw TileData_15db7
+ dw TileData_15df2
+
+TileData_15d8a: ; 0x15d8a
+ db $02
+ dw TileData_15df2
+ dw TileData_15e82
+
+TileData_15d8f: ; 0x15d8f
+ db $03
+ dw TileData_15db7
+ dw TileData_15df2
+ dw TileData_15e50
+
+TileData_15d96: ; 0x15d96
+ db $01
+ dw TileData_15db7
+
+TileData_15d99: ; 0x15d99
+ db $01
+ dw TileData_15e82
+
+TileData_15d9c: ; 0x15d9c
+ db $02
+ dw TileData_15db7
+ dw TileData_15e50
+
+TileData_15da1: ; 0x15da1
+ db $02
+ dw TileData_15dd5
+ dw TileData_15e82
+
+TileData_15da6: ; 0x15da6
+ db $01
+ dw TileData_15e50
+
+TileData_15da9: ; 0x15da9
+ db $02
+ dw TileData_15db7
+ dw TileData_15e69
+
+TileData_15dae: ; 0x15dae
+ db $01
+ dw TileData_15e69
+
+TileData_15db1: ; 0x15dab1
+ db $01
+ dw TileData_15df2
+
+TileData_15db4: ; 0x15db4
+ db $01
+ dw TileData_15e21
+
+TileData_15db7: ; 0x15db7
+ dw Func_1198
+
+ db ($a << 1)
+ db $03
+ dw vBGMap + $4c
+
+ db ($40 << 1)
+ db $09
+ dw vBGMap + $6c
+
+ db (($32 << 1) | 1)
+ db $08
+ dw vBGMap + $8d
+
+ db (4 << 1)
+ dw vBGMap + $ae
+
+ db (2 << 1)
+ dw vBGMap + $d0
+
+ db (2 << 1)
+ dw vBGMap + $f1
+
+ db (2 << 1)
+ dw vBGMap + $111
+
+ db (1 << 1)
+ dw vBGMap + $132
+
+ db $00 ; terminator
+
+TileData_15dd5: ; 0x15dd5
+ dw Func_1198
+
+ db ($a << 1)
+ db $03
+ dw vBGMap + $4c
+
+ db (($28 << 1) | 1)
+ db $08
+ dw vBGMap + $6c
+
+ db ($4 << 1)
+ dw vBGMap + $8d
+
+ db ($04 << 1)
+ dw vBGMap + $ae
+
+ db ($02 << 1)
+ dw vBGMap + $d0
+
+ db ($02 << 1)
+ dw vBGMap + $f1
+
+ db ($02 << 1)
+ dw vBGMap + $111
+
+ db (1 << 1)
+ dw vBGMap + $132
+
+ db $00 ; terminator
+
+TileData_15df2: ; 0x15df2
+ dw LoadTileLists
+ db $19 ; total number of tiles
+
+ db $05 ; number of tiles
+ dw vBGMap + $a9
+ db $1e, $1f, $20, $21, $22
+
+ db $07
+ dw vBGMap + $c7
+ db $23, $24, $39, $3a, $25, $3b, $26
+
+ db $08 ; number of tiles
+ dw vBGMap + $e6
+ db $27, $37, $28, $29, $2a, $2b, $3c, $2c
+
+ db $03 ; number of tiles
+ dw vBGMap + $106
+ db $2d, $38, $2e
+
+ db $01 ; number of tiles
+ dw vBGMap + $10d
+ db $2f
+
+ db $01 ; number of tiles
+ dw vBGMap + $126
+ db $30
+
+ db 00 ; terminator
+
+TileData_15e21: ; 0x15e21
+ dw LoadTileLists
+ db $19 ; total number of tiles
+
+ db $05 ; number of tiles
+ dw vBGMap + $a9
+ db $0b, $0c, $0d, $0e, $0f
+
+ db $07
+ dw vBGMap + $c7
+ db $10, $11, $33, $34, $12, $35, $13
+
+ db $08 ; number of tiles
+ dw vBGMap + $e6
+ db $14, $31, $15, $16, $17, $18, $36, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $106
+ db $1a, $32, $1b
+
+ db $01 ; number of tiles
+ dw vBGMap + $10d
+ db $1c
+
+ db $01 ; number of tiles
+ dw vBGMap + $126
+ db $1d
+
+ db 00 ; terminator
+
+TileData_15e50: ; 0x15e50
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $100
+ db $45, $46, $22
+
+ db $02 ; number of tiles
+ dw vBGMap + $120
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $140
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $160
+ db $45, $46
+
+ db $00 ; terminator
+
+TileData_15e69: ; 0x15e69
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $100
+ db $43, $44, $22
+
+ db $02 ; number of tiles
+ dw vBGMap + $120
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $140
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $160
+ db $45, $46
+
+ db $00 ; terminator
+
+TileData_15e82: ; 0x15e82
+ dw Func_1198
+
+ db ((4 << 1) | 1)
+ db $07
+ dw vBGMap + $100
+
+ db (($23 << 1) | 1)
+ db $04
+ dw vBGMap + $120
+
+ db (2 << 1)
+ dw vBGMap + $140
+
+ db (2 << 1)
+ dw vBGMap + $160
+
+ db $00 ; terminator
+
+ResolveBellsproutCollision: ; 0x15e93
+ ld a, [wBellsproutCollision]
+ and a
+ jr z, .asm_15eda
+ xor a
+ ld [wBellsproutCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $05
+ call PlaySoundEffect
+ ld hl, BellsproutAnimationData
+ ld de, wBellsproutAnimationFrameCounter
+ call CopyHLToDE
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $7c
+ ld [wBallXPos + 1], a
+ ld a, $78
+ ld [wBallYPos + 1], a
+ xor a
+ ld [wd549], a
+.asm_15eda
+ ld hl, BellsproutAnimationData
+ ld de, wBellsproutAnimationFrameCounter
+ call UpdateAnimation
+ push af
+ ld a, [wBellsproutAnimationFrameCounter]
+ and a
+ jr nz, .asm_15ef8
+ ld a, $19
+ ld [wBellsproutAnimationFrameCounter], a
+ xor a
+ ld [wBellsproutAnimationFrame], a
+ ld a, $6
+ ld [wBellsproutAnimationFrameIndex], a
+.asm_15ef8
+ pop af
+ ret nc
+ ld a, [wBellsproutAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_15f35
+ xor a
+ ld [wd548], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr c, .noCatchEmMode
+ ld a, $8
+ jr nz, .startCatchEmMode
+ xor a
+.startCatchEmMode
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+.noCatchEmMode
+ ld hl, wd62a
+ call Func_e4a
+ ret nc
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+ ret
+
+.asm_15f35
+ ld a, [wBellsproutAnimationFrameIndex]
+ cp $4
+ jr nz, .asm_15f42
+ ld a, $1
+ ld [wd548], a
+ ret
+
+.asm_15f42
+ ld a, [wBellsproutAnimationFrameIndex]
+ cp $5
+ ret nz
+ ld a, $1
+ ld [wd549], a
+ xor a
+ ld [wBallXVelocity + 1], a
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ld a, $5
+ callba Func_10000
+ ret
+
+BellsproutAnimationData: ; 0x15f69
+; Each entry is [duration][OAM id]
+ db $08, $01
+ db $06, $02
+ db $20, $03
+ db $06, $02
+ db $08, $01
+ db $01, $00
+ db $29, $00
+ db $28, $01
+ db $2A, $00
+ db $27, $01
+ db $29, $00
+ db $28, $01
+ db $2B, $00
+ db $28, $01
+ db $00 ; terminator
+
+Func_15f86: ; 0x15f86
+ ld a, [wWhichBumper]
+ and a
+ jr z, .asm_15f99
+ call Func_5fb8
+ call Func_15fa6
+ xor a
+ ld [wWhichBumper], a
+ call Func_15fda
+.asm_15f99
+ ld a, [wd4da]
+ and a
+ ret z
+ dec a
+ ld [wd4da], a
+ call z, Func_5fb8
+ ret
+
+Func_15fa6: ; 0x15fa6
+ ld a, $10
+ ld [wd4da], a
+ ld a, [wWhichBumperId]
+ sub $6
+ ld [wd4db], a
+ sla a
+ inc a
+ jr asm_15fc0
+
+Func_5fb8: ; 0x5fb8
+ ld a, [wd4db]
+ cp $ff
+ ret z
+ sla a
+asm_15fc0
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_16010
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_15fd0
+ ld hl, Data_16080
+.asm_15fd0
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_16010)
+ call Func_10aa
+ ret
+
+Func_15fda: ; 0x15fda
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wWhichBumperId]
+ sub $6
+ ld c, a
+ ld b, $0
+ ld hl, CollisionAngleDeltas_1600e
+ add hl, bc
+ ld a, [wCollisionForceAngle]
+ add [hl]
+ ld [wCollisionForceAngle], a
+ lb de, $00, $0b
+ call PlaySoundEffect
+ ret
+
+CollisionAngleDeltas_1600e:
+ db -8, 8
+
+TileDataPointers_16010:
+ dw TileData_16018
+ dw TileData_1601b
+ dw TileData_1601e
+ dw TileData_16021
+
+TileData_16018: ; 0x16018
+ db $01
+ dw TileData_16024
+
+TileData_1601b: ; 0x1601b
+ db $01
+ dw TileData_1603B
+
+TileData_1601e: ; 0x1601e
+ db $01
+ dw TileData_16052
+
+TileData_16021: ; 0x16021
+ db $01
+ dw TileData_16069
+
+TileData_16024: ; 0x16024
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $60
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $61, $62
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $63, $64
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $65, $66
+
+ db $00 ; terminator
+
+TileData_1603B: ; 0x1603B
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $67
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $68, $69
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $6A, $6B
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $6C, $6D
+
+ db $00 ; terminator
+
+TileData_16052: ; 0x16052
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $6E
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $6F, $70
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $71, $72
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $73, $74
+
+ db $00 ; terminator
+
+TileData_16069: ; 0x16069
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $75
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $76, $77
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $78, $79
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $7A, $7B
+
+ db $00 ; terminator
+
+Data_16080:
+ dw Data_16088
+ dw Data_1608b
+ dw Data_1608e
+ dw Data_16091
+
+Data_16088: ; 0x16088
+ db $01
+ dw Data_16094
+
+Data_1608b: ; 0x1608b
+ db $01
+ dw Data_160ab
+
+Data_1608e: ; 0x1608e
+ db $01
+ dw Data_160c2
+
+Data_16091: ; 0x16091
+ db $01
+ dw Data_160d9
+
+Data_16094: ; 0x16094
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $2A
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $2B, $2C
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $2D, $2E
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $2F, $30
+
+ db $00 ; terminator
+
+Data_160ab: ; 0x160ab
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $31
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $34, $35
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $36, $37
+
+ db $00 ; terminator
+
+Data_160c2: ; 0x160c2
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $2A
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $2C, $2B
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $2E, $2D
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $30, $2F
+
+ db $00 ; terminator
+
+Data_160d9: ; 0x160d9
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $31
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $33, $32
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $35, $34
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $37, $36
+
+ db $00 ; terminator
+
+ResolveDittoSlotCollision: ; 0x160f0
+ ld a, [wDittoSlotCollision]
+ and a
+ jr z, .asm_16137
+ xor a
+ ld [wDittoSlotCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $21
+ call PlaySoundEffect
+ xor a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wd549], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $11
+ ld [wBallXPos + 1], a
+ ld a, $23
+ ld [wBallYPos + 1], a
+ ld a, $10
+ ld [wd600], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+.asm_16137
+ ld a, [wd600]
+ and a
+ ret z
+ dec a
+ ld [wd600], a
+ cp $f
+ jr nz, .asm_1614f
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1614f
+ cp $c
+ jr nz, .asm_1615e
+ callba Func_dd62
+ ret
+
+.asm_1615e
+ cp $9
+ jr nz, .asm_1616d
+ xor a
+ ld [wd548], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ret
+
+.asm_1616d
+ cp $6
+ jr nz, .asm_1618e
+ callba Func_10ab3
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+.asm_1618e
+ cp $3
+ jr nz, .asm_1619d
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1619d
+ and a
+ ret nz
+ callba LoadBallGfx
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ ret
+
+Func_161af: ; 0x161af
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $fe
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jr asm_1620f
+
+Func_161e0: ; 0x161e0
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $86
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+asm_1620f: ; 0x1620f
+ ld bc, BallPhysicsData_f0000
+ add hl, bc
+ ld de, wBallXVelocity
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1624e
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1624e
+ pop hl
+ bit 7, h
+ jr z, .asm_1625a
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1625a
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ lb de, $00, $04
+ call PlaySoundEffect
+ ret
+
+Func_16279: ; 0x16279
+ ld a, [wSlotCollision]
+ and a
+ jr z, .asm_162ae
+ xor a
+ ld [wSlotCollision], a
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wd603]
+ and a
+ jr nz, .asm_162ae
+ xor a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wd549], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $50
+ ld [wBallXPos + 1], a
+ ld a, $16
+ ld [wBallYPos + 1], a
+ ld a, $13
+ ld [wd603], a
+.asm_162ae
+ ld a, [wd603]
+ and a
+ ret z
+ dec a
+ ld [wd603], a
+ ld a, $18
+ ld [wd606], a
+ ld a, [wd603]
+ cp $12
+ jr nz, .asm_162d4
+ lb de, $00, $21
+ call PlaySoundEffect
+ callba LoadMiniBallGfx
+ ret
+
+.asm_162d4
+ cp $f
+ jr nz, .asm_162e3
+ callba Func_dd62
+ ret
+
+.asm_162e3
+ cp $c
+ jr nz, .asm_162f2
+ xor a
+ ld [wd548], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ret
+
+.asm_162f2
+ cp $9
+ jr nz, .asm_162fa
+ call Func_16352
+ ret
+
+.asm_162fa
+ cp $6
+ jr nz, .asm_16317
+ xor a
+ ld [wd604], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ callba LoadMiniBallGfx
+ ret
+
+.asm_16317
+ cp $3
+ jr nz, .asm_16330
+ callba LoadBallGfx
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ ld a, $80
+ ld [wBallXVelocity], a
+ ret
+
+.asm_16330
+ and a
+ ret nz
+ call Func_16425
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp CATCHEM_MODE_SLOT_REWARD
+ ret nz
+ call GenRandom
+ and $8
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_16352: ; 0x16352
+ xor a
+ ld [wIndicatorStates + 4], a
+ ld a, $d
+ callba Func_10000
+ jr nc, .asm_1636d
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ret
+
+.asm_1636d
+ ld a, [wd624]
+ cp $3
+ jr nz, .asm_163b3
+ ld a, [wd607]
+ and a
+ jr nz, .asm_163b3
+.asm_1637a
+ ld a, [wBonusStageSlotRewardActive]
+ and a
+ jr nz, .asm_16389
+ xor a
+ ld [wd625], a
+ ld a, $40
+ ld [wd626], a
+.asm_16389
+ xor a
+ ld [wBonusStageSlotRewardActive], a
+ ld a, $1
+ ld [wd495], a
+ ld [wd4ae], a
+ ld a, [wd498]
+ ld c, a
+ ld b, $0
+ ld hl, GoToBonusStageTextIds_RedField
+ add hl, bc
+ ld a, [hl]
+ ld [wd497], a
+ call Func_163f2
+ xor a
+ ld [wd609], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ld a, $1e
+ ld [wd607], a
+ ret
+
+.asm_163b3
+ callba Func_ed8e
+ xor a
+ ld [wd608], a
+ ld a, [wd61d]
+ cp $d
+ jr nc, .asm_1637a
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp EVOLUTION_MODE_SLOT_REWARD
+ ret nz
+ callba Func_10ab3
+ ld a, [wd7ad]
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $1
+ or c
+ ld [wStageCollisionState], a
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_163f2: ; 0x163f2
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld a, [wd497]
+ ld de, GoToDiglettStageText
+ cp STAGE_DIGLETT_BONUS
+ jr z, .asm_1640f
+ ld de, GoToGengarStageText
+ cp STAGE_GENGAR_BONUS
+ jr z, .asm_1640f
+ ld de, GoToMewtwoStageText
+.asm_1640f
+ call LoadTextHeader
+ ld de, $0000
+ call PlaySong
+ rst AdvanceFrame
+ lb de, $3c, $23
+ call PlaySoundEffect
+ ret
+
+GoToBonusStageTextIds_RedField:
+ db STAGE_GENGAR_BONUS
+ db STAGE_MEWTWO_BONUS
+ db STAGE_MEOWTH_BONUS
+ db STAGE_DIGLETT_BONUS
+ db STAGE_SEEL_BONUS
+
+Func_16425: ; 0x16425
+ ld a, [wCurrentStage]
+ and $1
+ sla a
+ ld c, a
+ ld a, [wd604]
+ add c
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1644d
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_16441
+ ld hl, TileDataPointers_164a1
+.asm_16441
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1644d)
+ call Func_10aa
+ ret
+
+TileDataPointers_1644d:
+ dw TileData_16455
+ dw TileData_16458
+ dw TileData_1645b
+ dw TileData_16460
+
+TileData_16455: ; 0x16455
+ db $01
+ dw TileData_16465
+
+TileData_16458: ; 0x16458
+ db $01
+ dw TileData_1646f
+
+TileData_1645b: ; 0x1645b
+ db $02
+ dw TileData_16479
+ dw TileData_16483
+
+TileData_16460: ; 0x16460
+ db $02
+ dw TileData_1648D
+ dw TileData_16497
+
+TileData_16465: ; 0x16465
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldTopBaseGameBoyGfx + $1c0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_1646f: ; 0x1646f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16479: ; 0x16479
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $48
+ dw StageRedFieldBottomBaseGameBoyGfx + $c80
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16483: ; 0x16483
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $4A
+ dw StageRedFieldBottomBaseGameBoyGfx + $CA0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1648D: ; 0x1648D
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16497: ; 0x16497
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $4A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $360
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_164a1:
+ dw TileData_164a9
+ dw TileData_164ac
+ dw TileData_164af
+ dw TileData_164b2
+
+TileData_164a9: ; 0x164a9
+ db $01
+ dw TileData_164b5
+
+TileData_164ac: ; 0x164ac
+ db $01
+ dw TileData_164be
+
+TileData_164af: ; 0x164af
+ db $01
+ dw TileData_164c7
+
+TileData_164b2: ; 0x164b2
+ db $01
+ dw TileData_164d5
+
+TileData_164b5: ; 0x164b5
+ dw LoadTileLists
+ db $02
+
+ db $02
+ dw vBGMap + $229
+ db $d4, $d5
+
+ db $00
+
+TileData_164be: ; 0x164be
+ dw LoadTileLists
+ db $02
+
+ db $02
+
+ dw vBGMap + $229
+ db $d6, $d7
+
+ db $00
+
+TileData_164c7: ; 0x164c7
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $9
+ db $38, $39
+
+ db $02
+ dw vBGMap + $29
+ db $3a, $3b
+
+ db $00
+
+TileData_164d5: ; 0x164d5
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $9
+ db $3c, $3d
+
+ db $02
+ dw vBGMap + $29
+ db $3e, $3f
+
+ db $00
+
+Func_164e3: ; 0x164e3
+ ld a, [wd607]
+ and a
+ ret z
+ dec a
+ ld [wd607], a
+ ret nz
+ ld a, [wInSpecialMode]
+ and a
+ ret nz
+ ld a, [wd609]
+ and a
+ jr z, .asm_164ff
+ ld a, [wd498]
+ add $15
+ jr .asm_16506
+
+.asm_164ff
+ ld a, [wd608]
+ and a
+ ret z
+ ld a, $1a
+.asm_16506
+ ld hl, wCurrentStage
+ bit 0, [hl]
+ callba nz, Func_30256
+ ld a, [wd604]
+ and a
+ ret nz
+ ld a, $1
+ ld [wd604], a
+ ld a, $80
+ ld [wIndicatorStates + 4], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ call nz, Func_16425
+ ret
+
+Func_1652d: ; 0x1652d
+ ld a, [wPinballLaunchAlley]
+ and a
+ ret z
+ xor a
+ ld [wPinballLaunchAlley], a
+ ld a, [wd4de]
+ and a
+ jr z, .asm_16566
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hl], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld a, $80
+ ld [wBallYVelocity], a
+ ld a, $fa
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ lb de, $00, $0a
+ call PlaySoundEffect
+.asm_16566
+ ld a, $ff
+ ld [wPreviousTriggeredGameObject], a
+ ld a, [wd4de]
+ and a
+ ret nz
+ ld a, [wd4e0]
+ and a
+ jr nz, .asm_16582
+ call Func_1658f
+ ld a, $1
+ ld [wd4e0], a
+ ld [wd4de], a
+ ret
+
+.asm_16582
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ ret z
+ ld a, $1
+ ld [wd4de], a
+ ret
+
+Func_1658f: ; 0x1658f
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, LoadGreyBillboardPaletteData
+.showNextMap
+ ld a, [wInitialMapSelectionIndex]
+ inc a
+ cp $7 ; number of maps to choose from at the start of play
+ jr c, .gotMapId
+ xor a ; wrap around to 0
+.gotMapId
+ ld [wInitialMapSelectionIndex], a
+ ld c, a
+ ld b, $0
+ ld hl, RedStageInitialMaps
+ add hl, bc
+ ld a, [hl]
+ ld [wCurrentMap], a
+ push af
+ lb de, $00, $48
+ call PlaySoundEffect
+ pop af
+ add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
+ callba LoadBillboardPicture
+ ld b, $20 ; number of frames to delay before the next map is shown
+.waitOnCurrentMap
+ push bc
+ callba Func_eeee
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ jr nz, .ballStartKeyPressed
+ pop bc
+ dec b
+ jr nz, .waitOnCurrentMap
+ jr .showNextMap
+
+.ballStartKeyPressed
+ pop bc
+ callba Func_30253
+ ld bc, StartFromMapText
+ callba Func_3118f
+ ld a, [wCurrentMap]
+ ld [wd4e3], a
+ xor a
+ ld [wd4e2], a
+ ret
+
+RedStageInitialMaps: ; 0x16605
+ db PALLET_TOWN
+ db VIRIDIAN_FOREST
+ db PEWTER_CITY
+ db CERULEAN_CITY
+ db VERMILION_SEASIDE
+ db ROCK_MOUNTAIN
+ db LAVENDER_TOWN
+
+ResolveRedStagePikachuCollision: ; 0x1660c
+ ld a, [wWhichPikachu]
+ and a
+ jr z, .asm_1667b
+ xor a
+ ld [wWhichPikachu], a
+ ld a, [wd51c]
+ and a
+ jr nz, .asm_1667b
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_16634
+ ld a, [wWhichPikachuId]
+ sub $1c
+ ld hl, wd518
+ cp [hl]
+ jr nz, .asm_1667b
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_16667
+.asm_16634
+ ld hl, PikachuSaverAnimationDataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_16647
+ xor a
+ ld [wPikachuSaverCharge], a
+.asm_16647
+ ld a, $1
+ ld [wd51c], a
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld [wd549], a
+ call FillBottomMessageBufferWithBlackTile
+ jr .asm_1667b
+
+.asm_16667
+ ld hl, PikachuSaverAnimation2DataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $2
+ ld [wd51c], a
+ lb de, $00, $3b
+ call PlaySoundEffect
+.asm_1667b
+ ld a, [wd51c]
+ and a
+ call z, Func_16766
+ call Func_1669e
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ ret nz
+ ld a, [wd51e]
+ and a
+ ret z
+ dec a
+ ld [wd51e], a
+ cp $5a
+ ret nz
+ lb de, $0f, $22
+ call PlaySoundEffect
+ ret
+
+Func_1669e: ; 0x1669e
+ ld a, [wd51c]
+ cp $1
+ jr nz, .asm_16719
+ ld hl, PikachuSaverAnimationDataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_166f7
+ xor a
+ ld [wd85d], a
+ call Func_310a
+ rst AdvanceFrame
+ ld a, $1
+ callba PlayPikachuSoundClip
+ ld a, $1
+ ld [wd85d], a
+ ld a, $ff
+ ld [wd803], a
+ ld a, $60
+ ld [wd804], a
+ ld hl, wd62e
+ call Func_e4a
+ jr nc, .asm_166f0
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_166f0
+ lb de, $16, $10
+ call PlaySoundEffect
+ ret
+
+.asm_166f7
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $11
+ ret nz
+ ld a, $fc
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_16719
+ cp $2
+ jr nz, .asm_16732
+ ld hl, PikachuSaverAnimation2DataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ ret nz
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_16732
+ ld a, [hNumFramesDropped]
+ swap a
+ and $1
+ ld [wPikachuSaverAnimationFrame], a
+ ret
+
+PikachuSaverAnimationDataBlueStage: ; 0x1673c
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $05, $03
+ db $05, $02
+ db $05, $04
+ db $05, $05
+ db $05, $02
+ db $06, $06
+ db $06, $07
+ db $06, $08
+ db $06, $02
+ db $06, $05
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $01, $00
+ db $00
+
+PikachuSaverAnimation2DataBlueStage: ; 0x16761
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $01, $00
+ db $00
+
+Func_16766: ; 0x16766
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed2
+ jr z, .asm_16774
+ ld hl, wd518
+ ld [hl], $0
+ ret
+
+.asm_16774
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed2
+ ret z
+ ld hl, wd518
+ ld [hl], $1
+ ret
+
+ResolveStaryuCollision: ; 0x16781
+ ld a, [wStaryuCollision]
+ and a
+ jr z, .asm_167bd
+ xor a
+ ld [wStaryuCollision], a
+ ld a, [wd503]
+ and a
+ jr nz, .asm_167c2
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd502]
+ xor $1
+ set 1, a
+ ld [wd502], a
+ ld a, $14
+ ld [wd503], a
+ call Func_16859
+ ld a, $6
+ callba Func_10000
+ ret
+
+.asm_167bd
+ ld a, [wd503]
+ and a
+ ret z
+.asm_167c2
+ dec a
+ ld [wd503], a
+ ret nz
+ ld a, [wd502]
+ res 1, a
+ ld [wd502], a
+ call Func_16859
+ ld a, [wd502]
+ and $1
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $fe
+ or c
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ lb de, $00, $07
+ call PlaySoundEffect
+ ld a, [wStageCollisionState]
+ bit 0, a
+ jp nz, Func_15450
+ jp Func_15499
+
+Func_167ff: ; 0x167ff
+ ld a, [wStaryuCollision]
+ and a
+ jr z, .asm_16839
+ xor a
+ ld [wStaryuCollision], a
+ ld a, [wd503]
+ and a
+ jr nz, .asm_1683e
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd502]
+ xor $1
+ ld [wd502], a
+ ld a, $14
+ ld [wd503], a
+ call Func_16878
+ ld a, $6
+ callba Func_10000
+ ret
+
+.asm_16839
+ ld a, [wd503]
+ and a
+ ret z
+.asm_1683e
+ dec a
+ ld [wd503], a
+ ret nz
+ ld a, [wd502]
+ and $1
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $fe
+ or c
+ ld [wStageCollisionState], a
+ lb de, $00, $07
+ call PlaySoundEffect
+ ret
+
+Func_16859: ; 0x16859
+ ld a, [wd502]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_16899
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1686c
+ ld hl, TileDataPointers_16910
+.asm_1686c
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_16899)
+ call Func_10aa
+ ret
+
+Func_16878: ; 0x16878
+ ld a, [wd502]
+ and $1
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1695a
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1688d
+ ld hl, TileDataPointers_16980
+.asm_1688d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1695a)
+ call Func_10aa
+ ret
+
+TileDataPointers_16899:
+ dw TileData_168a1
+ dw TileData_168a8
+ dw TileData_168af
+ dw TileData_168af
+
+TileData_168a1: ; 0x168a1
+ db $03
+ dw TileData_168b6
+ dw TileData_168c0
+ dw TileData_168ca
+
+TileData_168a8: ; 0x168a8
+ db $03
+ dw TileData_168d4
+ dw TileData_168de
+ dw TileData_168e8
+
+TileData_168af: ; 0x168af
+ db $03
+ dw TileData_168f2
+ dw TileData_168fc
+ dw TileData_16906
+
+TileData_168b6: ; 0x168b6
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $50
+ dw StageRedFieldTopBaseGameBoyGfx + $260
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168c0: ; 0x168c0
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $53
+ dw StageRedFieldTopBaseGameBoyGfx + $290
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168ca: ; 0x168ca
+ dw Func_11d2
+ db $10, $01
+ dw vTilesSH tile $56
+ dw StageRedFieldTopBaseGameBoyGfx + $2c0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168d4: ; 0x168d4
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $52
+ dw StageRedFieldTopBaseGameBoyGfx + $280
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168de: ; 0x168de
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $55
+ dw StageRedFieldTopBaseGameBoyGfx + $2b0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168e8: ; 0x168e8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $50
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $EA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_168f2: ; 0x168f2
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_168fc: ; 0x168fc
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $54
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1110
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16906: ; 0x16906
+ dw Func_11d2
+ db $10, $01
+ dw vTilesSH tile $50
+ dw StageRedFieldTopBaseGameBoyGfx + $260
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileDataPointers_16910:
+ dw TileData_16918
+ dw TileData_1691b
+ dw TileData_1691e
+ dw TileData_1691e
+
+TileData_16918: ;0x16918
+ db $01
+ dw TileData_16921
+
+TileData_1691b: ;0x1691b
+ db $01
+ dw TileData_16934
+
+TileData_1691e: ;0x1691e
+ db $01
+ dw TileData_16947
+
+TileData_16921: ; 0x16921
+ dw LoadTileLists
+ db $06
+
+ db $03
+ dw vBGMap + $1C6
+ db $C3, $C4, $C5
+
+ db $02
+ dw vBGMap + $1E7
+ db $C6, $C7
+
+ db $01
+ dw vBGMap + $207
+ db $C8
+
+ db $00
+
+TileData_16934: ; 0x16934
+ dw LoadTileLists
+ db $06
+
+ db $03
+ dw vBGMap + $1C6
+ db $CD, $CE, $C5
+
+ db $02
+ dw vBGMap + $1E7
+ db $C6, $C7
+
+ db $01
+ dw vBGMap + $207
+ db $C8
+
+ db $00
+
+TileData_16947: ; 0x16947
+ dw LoadTileLists
+ db $06
+
+ db $03
+ dw vBGMap + $1C6
+ db $C3, $C4, $C9
+
+ db $02
+ dw vBGMap + $1E7
+ db $CA, $CB
+
+ db $01
+ dw vBGMap + $207
+ db $CC
+
+ db $00
+
+TileDataPointers_1695a:
+ dw TileData_1695e
+ dw TileData_16961
+
+TileData_1695e: ; 0x1695e
+ db $01
+ dw TileData_16964
+
+TileData_16961: ; 0x16961
+ db $01
+ dw TileData_16972
+
+TileData_16964: ; 0x16964
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $BE, $BF
+
+ db $02
+ dw vBGMap + $60
+ db $C0, $C1
+
+ db $00
+
+TileData_16972: ; 0x16972
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $C2, $C3
+
+ db $02
+ dw vBGMap + $60
+ db $C4, $C5
+
+ db $00
+
+TileDataPointers_16980:
+ dw TileData_16984
+ dw TileData_16987
+
+TileData_16984: ; 0x16984
+ db $01
+ dw TileData_1698a
+
+TileData_16987: ; 0x16987
+ db $01
+ dw TileData_16998
+
+TileData_1698a: ; 0x1698a
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $BC, $BD
+
+ db $02
+ dw vBGMap + $60
+ db $BE, $BF
+
+ db $00
+
+TileData_16998: ; 0x16998
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $C0, $C1
+
+ db $02
+ dw vBGMap + $60
+ db $C2, $C3
+
+ db $00
+
+Func_169a6: ; 0x169a6
+ ld a, [hNumFramesDropped]
+ and $1f
+ ret nz
+ ld bc, $0000
+.asm_169ae
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ bit 7, [hl]
+ jr z, .asm_169c5
+ ld a, [hl]
+ res 7, a
+ ld hl, hNumFramesDropped
+ bit 5, [hl]
+ jr z, .asm_169c2
+ inc a
+.asm_169c2
+ call Func_169cd
+.asm_169c5
+ pop bc
+ inc c
+ ld a, c
+ cp $5
+ jr nz, .asm_169ae
+ ret
+
+Func_169cd: ; 0x169cd
+ push af
+ sla c
+ ld hl, TileDataPointers_169ed
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_169db
+ ld hl, TileDataPointers_16bef
+.asm_169db
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ sla a
+ ld c, a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_169ed)
+ call Func_10aa
+ ret
+
+TileDataPointers_169ed:
+ dw TileDataPointers_169f7
+ dw TileDataPointers_16a01
+ dw TileDataPointers_16a0b
+ dw TileDataPointers_16a0f
+ dw TileDataPointers_16a13
+
+TileDataPointers_169f7: ; 0x169f7
+ dw TileData_16a17
+ dw TileData_16a1e
+ dw TileData_16a25
+ dw TileData_16a2c
+ dw TileData_16a33
+
+TileDataPointers_16a01: ; 0x16a01
+ dw TileData_16a3a
+ dw TileData_16a41
+ dw TileData_16a48
+ dw TileData_16a4f
+ dw TileData_16a56
+
+TileDataPointers_16a0b: ; 0x16a0b
+ dw TileData_16a5d
+ dw TileData_16a60
+
+TileDataPointers_16a0f: ; 0x16a0f
+ dw TileData_16a63
+ dw TileData_16a66
+
+TileDataPointers_16a13: ; 0x16a13
+ dw TileData_16a69
+ dw TileData_16a6e
+
+TileData_16a17: ; 0x16a17
+ db $03
+ dw TileData_16a73
+ dw TileData_16a7d
+ dw TileData_16a87
+
+TileData_16a1e: ; 0x16a1e
+ db $03
+ dw TileData_16a91
+ dw TileData_16a9b
+ dw TileData_16aa5
+
+TileData_16a25: ; 0x16a25
+ db $03
+ dw TileData_16aaf
+ dw TileData_16ab9
+ dw TileData_16ac3
+
+TileData_16a2c: ; 0x16a2c
+ db $03
+ dw TileData_16acd
+ dw TileData_16ad7
+ dw TileData_16ae1
+
+TileData_16a33: ; 0x16a33
+ db $03
+ dw TileData_16aeb
+ dw TileData_16af5
+ dw TileData_16aff
+
+TileData_16a3a: ; 0x16a3a
+ db $03
+ dw TileData_16b09
+ dw TileData_16b13
+ dw TileData_16b1d
+
+TileData_16a41: ; 0x16a41
+ db $03
+ dw TileData_16b27
+ dw TileData_16b31
+ dw TileData_16b3b
+
+TileData_16a48: ; 0x16a48
+ db $03
+ dw TileData_16b45
+ dw TileData_16b4f
+ dw TileData_16b59
+
+TileData_16a4f: ; 0x16a4f
+ db $03
+ dw TileData_16b63
+ dw TileData_16b6d
+ dw TileData_16b77
+
+TileData_16a56: ; 0x16a56
+ db $03
+ dw TileData_16b81
+ dw TileData_16b8b
+ dw TileData_16b95
+
+TileData_16a5d: ; 0x16a5d
+ db $01
+ dw TileData_16b9f
+
+TileData_16a60: ; 0x16a60
+ db $01
+ dw TileData_16ba9
+
+TileData_16a63: ; 0x16a63
+ db $01
+ dw TileData_16bb3
+
+TileData_16a66: ; 0x16a66
+ db $01
+ dw TileData_16bbd
+
+TileData_16a69: ; 0x16a69
+ db $02
+ dw TileData_16bc7
+ dw TileData_16bd1
+
+TileData_16a6e: ; 0x16a6e
+ db $02
+ dw TileData_16bdb
+ dw TileData_16be5
+
+TileData_16a73: ; 0x16a73
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomBaseGameBoyGfx + $ba0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16a7d: ; 0x16a7d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomBaseGameBoyGfx + $bd0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16a87: ; 0x16a87
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomBaseGameBoyGfx + $c00
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16a91: ; 0x16a91
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $380
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16a9b: ; 0x16a9b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aa5: ; 0x16aa5
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aaf: ; 0x16aaf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ab9: ; 0x16ab9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $420
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ac3: ; 0x16ac3
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $450
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16acd: ; 0x16acd
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $460
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ad7: ; 0x16ad7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $490
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ae1: ; 0x16ae1
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aeb: ; 0x16aeb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16af5: ; 0x16af5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aff: ; 0x16aff
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b09: ; 0x16b09
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomBaseGameBoyGfx + $c10
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16b13: ; 0x16b13
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomBaseGameBoyGfx + $c40
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16b1d: ; 0x16b1d
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomBaseGameBoyGfx + $c70
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16b27: ; 0x16b27
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4D0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b31: ; 0x16b31
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $500
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b3b: ; 0x16b3b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $530
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b45: ; 0x16b45
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $540
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b4f: ; 0x16b4f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $570
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b59: ; 0x16b59
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b63: ; 0x16b63
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b6d: ; 0x16b6d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b77: ; 0x16b77
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $610
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b81: ; 0x16b81
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1010
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b8b: ; 0x16b8b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1040
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b95: ; 0x16b95
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1070
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b9f: ; 0x16b9f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $20
+ dw StageRedFieldBottomBaseGameBoyGfx + $a00
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16ba9: ; 0x16ba9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $20
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16bb3: ; 0x16bb3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomBaseGameBoyGfx + $a30
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16bbd: ; 0x16bbd
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16bc7: ; 0x16bc7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1C
+ dw StageRedFieldBottomBaseGameBoyGfx + $9c0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16bd1: ; 0x16bd1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1E
+ dw StageRedFieldBottomBaseGameBoyGfx + $9e0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16bdb: ; 0x16bdb
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $6E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16be5: ; 0x16be5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $700
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_16bef:
+ dw TileDataPointers_16bf9
+ dw TileDataPointers_16c03
+ dw TileDataPointers_16c0d
+ dw TileDataPointers_16c11
+ dw TileDataPointers_16c15
+
+TileDataPointers_16bf9: ; 0x16bf9
+ dw TileData_16c19
+ dw TileData_16c1c
+ dw TileData_16c1f
+ dw TileData_16c22
+ dw TileData_16c25
+
+TileDataPointers_16c03: ; 0x16c03
+ dw TileData_16c28
+ dw TileData_16c2b
+ dw TileData_16c2e
+ dw TileData_16c31
+ dw TileData_16c34
+
+TileDataPointers_16c0d: ; 0x16c0d
+ dw TileData_16c37
+ dw TileData_16c3a
+
+TileDataPointers_16c11: ; 0x16c11
+ dw TileData_16c3d
+ dw TileData_16c40
+
+TileDataPointers_16c15: ; 0x16c15
+ dw TileData_16c43
+ dw TileData_16c46
+
+TileData_16c19: ; 0x16c19
+ db $01
+ dw TileData_16c49
+
+TileData_16c1c: ; 0x16c1c
+ db $01
+ dw TileData_16c63
+
+TileData_16c1f: ; 0x16c1f
+ db $01
+ dw TileData_16c7d
+
+TileData_16c22: ; 0x16c22
+ db $01
+ dw TileData_16c97
+
+TileData_16c25: ; 0x16c25
+ db $01
+ dw TileData_16cb1
+
+TileData_16c28: ; 0x16c28
+ db $01
+ dw TileData_16ccb
+
+TileData_16c2b: ; 0x16c2b
+ db $01
+ dw TileData_16ce5
+
+TileData_16c2e: ; 0x16c2e
+ db $01
+ dw TileData_16cff
+
+TileData_16c31: ; 0x16c31
+ db $01
+ dw TileData_16d19
+
+TileData_16c34: ; 0x16c34
+ db $01
+ dw TileData_16d33
+
+TileData_16c37: ; 0x16c37
+ db $01
+ dw TileData_16d4d
+
+TileData_16c3a: ; 0x16c3a
+ db $01
+ dw TileData_16d5a
+
+TileData_16c3d: ; 0x16c3d
+ db $01
+ dw TileData_16d67
+
+TileData_16c40: ; 0x16c40
+ db $01
+ dw TileData_16d74
+
+TileData_16c43: ; 0x16c43
+ db $01
+ dw TileData_16d81
+
+TileData_16c46: ; 0x16c46
+ db $01
+ dw TileData_16d8f
+
+TileData_16c49: ; 0x16c49
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $5E
+
+ db $02
+ dw vBGMap + $43
+ db $5F, $60
+
+ db $02
+ dw vBGMap + $64
+ db $61, $62
+
+ db $01
+ dw vBGMap + $85
+ db $63
+
+ db $01
+ dw vBGMap + $A5
+ db $64
+
+ db $00
+
+TileData_16c63: ; 0x16c63
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $65
+
+ db $02
+ dw vBGMap + $43
+ db $66, $67
+
+ db $02
+ dw vBGMap + $64
+ db $61, $62
+
+ db $01
+ dw vBGMap + $85
+ db $63
+
+ db $01
+ dw vBGMap + $A5
+ db $64
+
+ db $00
+
+TileData_16c7d: ; 0x16c7d
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $65
+
+ db $02
+ dw vBGMap + $43
+ db $66, $67
+
+ db $02
+ dw vBGMap + $64
+ db $68, $69
+
+ db $01
+ dw vBGMap + $85
+ db $63
+
+ db $01
+ dw vBGMap + $A5
+ db $64
+
+ db $00
+
+TileData_16c97: ; 0x16c97
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $65
+
+ db $02
+ dw vBGMap + $43
+ db $66, $67
+
+ db $02
+ dw vBGMap + $64
+ db $68, $69
+
+ db $01
+ dw vBGMap + $85
+ db $6A
+
+ db $01
+ dw vBGMap + $A5
+ db $6B
+
+ db $00
+
+TileData_16cb1: ; 0x16cb1
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $5E
+
+ db $02
+ dw vBGMap + $43
+ db $5F, $60
+
+ db $02
+ dw vBGMap + $64
+ db $68, $69
+
+ db $01
+ dw vBGMap + $85
+ db $6A
+
+ db $01
+ dw vBGMap + $A5
+ db $6B
+
+ db $00
+
+TileData_16ccb: ; 0x16ccb
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $6C
+
+ db $02
+ dw vBGMap + $4F
+ db $6D, $6E
+
+ db $02
+ dw vBGMap + $6E
+ db $6F, $70
+
+ db $01
+ dw vBGMap + $8E
+ db $71
+
+ db $01
+ dw vBGMap + $AE
+ db $72
+
+ db $00
+
+TileData_16ce5: ; 0x16ce5
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $73
+
+ db $02
+ dw vBGMap + $4F
+ db $74, $75
+
+ db $02
+ dw vBGMap + $6E
+ db $6F, $70
+
+ db $01
+ dw vBGMap + $8E
+ db $71
+
+ db $01
+ dw vBGMap + $AE
+ db $72
+
+ db $00
+
+TileData_16cff: ; 0x16cff
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $73
+
+ db $02
+ dw vBGMap + $4F
+ db $74, $75
+
+ db $02
+ dw vBGMap + $6E
+ db $76, $77
+
+ db $01
+ dw vBGMap + $8E
+ db $71
+
+ db $01
+ dw vBGMap + $AE
+ db $72
+
+ db $00
+
+TileData_16d19: ; 0x16d19
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $73
+
+ db $02
+ dw vBGMap + $4F
+ db $74, $75
+
+ db $02
+ dw vBGMap + $6E
+ db $76, $77
+
+ db $01
+ dw vBGMap + $8E
+ db $78
+
+ db $01
+ dw vBGMap + $AE
+ db $79
+
+ db $00
+
+TileData_16d33: ; 0x16d33
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $6C
+
+ db $02
+ dw vBGMap + $4F
+ db $6D, $6E
+
+ db $02
+ dw vBGMap + $6E
+ db $76, $77
+
+ db $01
+ dw vBGMap + $8E
+ db $78
+
+ db $01
+ dw vBGMap + $AE
+ db $79
+
+ db $00
+
+TileData_16d4d: ; 0x16d4d
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $6
+ db $48
+
+ db $02
+ dw vBGMap + $26
+ db $49, $4A
+
+ db $00
+
+TileData_16d5a: ; 0x16d5a
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $6
+ db $4B
+
+ db $02
+ dw vBGMap + $26
+ db $4C, $4D
+
+ db $00
+
+TileData_16d67: ; 0x16d67
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $D
+ db $4E
+
+ db $02
+ dw vBGMap + $2C
+ db $4F, $50
+
+ db $00
+
+TileData_16d74: ; 0x16d74
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $D
+ db $51
+
+ db $02
+ dw vBGMap + $2C
+ db $52, $53
+
+ db $00
+
+TileData_16d81: ; 0x16d81
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $49
+ db $40, $41
+
+ db $02
+ dw vBGMap + $69
+ db $42, $43
+
+ db $00
+
+TileData_16d8f: ; 0x16d8f
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $49
+ db $44, $45
+
+ db $02
+ dw vBGMap + $69
+ db $46, $47
+
+ db $00
+
+ResolveRedStageBonusMultiplierCollision: ; 016d9d
+ ld a, [wWhichBonusMultiplierRailing]
+ and a
+ jp z, Func_16e51
+ xor a
+ ld [wWhichBonusMultiplierRailing], a
+ lb de, $00, $0d
+ call PlaySoundEffect
+ ld a, [wWhichBonusMultiplierRailingId]
+ sub $21
+ jr nz, .asm_16ddc
+ ld a, $9
+ callba Func_10000
+ ld a, [wd610]
+ cp $3
+ jr nz, .asm_16e35
+ ld a, $1
+ ld [wd610], a
+ ld a, $3
+ ld [wd611], a
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ jr .asm_16e35
+
+.asm_16ddc
+ ld a, $a
+ callba Func_10000
+ ld a, [wd611]
+ cp $3
+ jr nz, .asm_16e35
+ ld a, $1
+ ld [wd610], a
+ ld a, $1
+ ld [wd611], a
+ ld a, $80
+ ld [wd612], a
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ ld a, [wd482]
+ inc a
+ cp 100
+ jr c, .asm_16e10
+ ld a, 99
+.asm_16e10
+ ld [wd482], a
+ jr nc, .asm_16e24
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+.asm_16e24
+ ld a, [wd60c]
+ ld [wd614], a
+ ld a, [wd60d]
+ ld [wd615], a
+ ld a, $1
+ ld [wd613], a
+.asm_16e35
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd60c]
+ call Func_16f28
+ ld a, [wd60d]
+ add $14
+ call Func_16f28
+ ret
+
+Func_16e51: ; 0x16e51
+ call Func_16ef5
+ ld a, [wd612]
+ and a
+ jr z, .asm_16e8f
+ dec a
+ ld [wd612], a
+ cp $70
+ jr nz, .asm_16e6e
+ ld a, $2
+ ld [wd610], a
+ ld a, $2
+ ld [wd611], a
+ jr .asm_16e8f
+
+.asm_16e6e
+ and a
+ jr nz, .asm_16e8f
+ ld a, $3
+ ld [wd610], a
+ xor a
+ ld [wd611], a
+ ld a, [wd482]
+ call Func_16f95
+ ld a, [wd60c]
+ call Func_16f28
+ ld a, [wd60d]
+ add $14
+ call Func_16f28
+ ret
+
+.asm_16e8f
+ ld a, [wd610]
+ cp $2
+ jr c, .asm_16ec1
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_16ea0
+ srl a
+ srl a
+.asm_16ea0
+ ld b, a
+ and $3
+ jr nz, .asm_16ec1
+ bit 3, b
+ jr nz, .asm_16eb6
+ ld a, [wd60c]
+ res 7, a
+ ld [wd60c], a
+ call Func_16f28
+ jr .asm_16ec1
+
+.asm_16eb6
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ call Func_16f28
+.asm_16ec1
+ ld a, [wd611]
+ cp $2
+ ret c
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_16ed1
+ srl a
+ srl a
+.asm_16ed1
+ ld b, a
+ and $3
+ ret nz
+ bit 3, b
+ jr nz, .asm_16ee7
+ ld a, [wd60d]
+ res 7, a
+ ld [wd60d], a
+ add $14
+ call Func_16f28
+ ret
+
+.asm_16ee7
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ add $14
+ call Func_16f28
+ ret
+
+Func_16ef5: ; 0x16ef5
+ ld a, [wd5ca]
+ and a
+ ret nz
+ ld a, [wd613]
+ and a
+ ret z
+ xor a
+ ld [wd613], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5cc
+ ld de, BonusMultiplierText
+ call LoadTextHeader
+ ld hl, wBottomMessageText + $12
+ ld a, [wd614]
+ and $7f
+ jr z, .asm_16f1f
+ add $30
+ ld [hli], a
+.asm_16f1f
+ ld a, [wd615]
+ res 7, a
+ add $30
+ ld [hl], a
+ ret
+
+Func_16f28: ; 0x16f28
+ push af
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_16f33
+ pop af
+ call Func_16f38
+ ret
+
+.asm_16f33
+ pop af
+ call Func_16f7b
+ ret
+
+Func_16f38: ; 0x16f38
+ push af
+ res 7, a
+ ld hl, wd60e
+ cp $14
+ jr c, .asm_16f47
+ ld hl, wd60f
+ sub $a
+.asm_16f47
+ cp [hl]
+ jr z, .asm_16f5c
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_16fc8
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_16fc8)
+ call Func_10aa
+.asm_16f5c
+ pop af
+ ld bc, $0000
+ bit 7, a
+ jr z, .asm_16f68
+ res 7, a
+ set 1, c
+.asm_16f68
+ cp $14
+ jr c, .asm_16f6e
+ set 2, c
+.asm_16f6e
+ ld hl, Data_171e4
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(Data_171e4)
+ call Func_10aa
+ ret
+
+Func_16f7b: ; 0x16f7b
+ bit 7, a
+ jr z, .asm_16f83
+ res 7, a
+ add $a
+.asm_16f83
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_17228
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_17228)
+ call Func_10aa
+ ret
+
+Func_16f95: ; 0x16f95
+ ld a, [wd482]
+ inc a
+ cp 100
+ jr c, .asm_16f9f
+ ld a, 99
+.asm_16f9f
+ ld b, a
+ xor a
+ ld hl, Data_16fc1
+ ld c, $7
+.asm_16fa6
+ bit 0, b
+ jr z, .asm_16fac
+ add [hl]
+ daa
+.asm_16fac
+ srl b
+ inc hl
+ dec c
+ jr nz, .asm_16fa6
+ push af
+ swap a
+ and $f
+ ld [wd60c], a
+ pop af
+ and $f
+ ld [wd60d], a
+ ret
+
+Data_16fc1:
+; BCD powers of 2
+ db $01
+ db $02
+ db $04
+ db $08
+ db $16
+ db $32
+ db $64
+
+TileDataPointers_16fc8:
+ dw TileData_16ff0
+ dw TileData_16ff5
+ dw TileData_16ffa
+ dw TileData_16fff
+ dw TileData_17004
+ dw TileData_17009
+ dw TileData_1700e
+ dw TileData_17013
+ dw TileData_17018
+ dw TileData_1701d
+ dw TileData_17022
+ dw TileData_17027
+ dw TileData_1702c
+ dw TileData_17031
+ dw TileData_17036
+ dw TileData_1703b
+ dw TileData_17040
+ dw TileData_17045
+ dw TileData_1704a
+ dw TileData_1704f
+
+TileData_16ff0: ; 0x16ff0
+ db $02
+ dw TileData_17054
+ dw TileData_1705e
+
+TileData_16ff5: ; 0x16ff5
+ db $02
+ dw TileData_17068
+ dw TileData_17072
+
+TileData_16ffa: ; 0x16ffa
+ db $02
+ dw TileData_1707c
+ dw TileData_17086
+
+TileData_16fff: ; 0x16fff
+ db $02
+ dw TileData_17090
+ dw TileData_1709a
+
+TileData_17004: ; 0x17004
+ db $02
+ dw TileData_170a4
+ dw TileData_170ae
+
+TileData_17009: ; 0x17009
+ db $02
+ dw TileData_170b8
+ dw TileData_170c2
+
+TileData_1700e: ; 0x1700e
+ db $02
+ dw TileData_170cc
+ dw TileData_170d6
+
+TileData_17013: ; 0x17013
+ db $02
+ dw TileData_170e0
+ dw TileData_170ea
+
+TileData_17018: ; 0x17018
+ db $02
+ dw TileData_170f4
+ dw TileData_170fe
+
+TileData_1701d: ; 0x1701d
+ db $02
+ dw TileData_17108
+ dw TileData_17112
+
+TileData_17022: ; 0x17022
+ db $02
+ dw TileData_1711c
+ dw TileData_17126
+
+TileData_17027: ; 0x17027
+ db $02
+ dw TileData_17130
+ dw TileData_1713a
+
+TileData_1702c: ; 0x1702c
+ db $02
+ dw TileData_17144
+ dw TileData_1714e
+
+TileData_17031: ; 0x17031
+ db $02
+ dw TileData_17158
+ dw TileData_17162
+
+TileData_17036: ; 0x17036
+ db $02
+ dw TileData_1716c
+ dw TileData_17176
+
+TileData_1703b: ; 0x1703b
+ db $02
+ dw TileData_17180
+ dw TileData_1718a
+
+TileData_17040: ; 0x17040
+ db $02
+ dw TileData_17194
+ dw TileData_1719e
+
+TileData_17045: ; 0x17045
+ db $02
+ dw TileData_171a8
+ dw TileData_171b2
+
+TileData_1704a: ; 0x1704a
+ db $02
+ dw TileData_171bc
+ dw TileData_171c6
+
+TileData_1704f: ; 0x1704f
+ db $02
+ dw TileData_171d0
+ dw TileData_171da
+
+TileData_17054: ; 0x17054
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1280
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1705e: ; 0x1705e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1140
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17068: ; 0x17068
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17072: ; 0x17072
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1160
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1707c: ; 0x1707c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17086: ; 0x17086
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1180
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17090: ; 0x17090
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1709a: ; 0x1709a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170a4: ; 0x170a4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1300
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170ae: ; 0x170ae
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170b8: ; 0x170b8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1320
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170c2: ; 0x170c2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170cc: ; 0x170cc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1340
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170d6: ; 0x170d6
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1200
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170e0: ; 0x170e0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1360
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170ea: ; 0x170ea
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1220
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170f4: ; 0x170f4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1380
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170fe: ; 0x170fe
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1240
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17108: ; 0x17108
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17112: ; 0x17112
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1260
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1711c: ; 0x1711c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1500
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17126: ; 0x17126
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17130: ; 0x17130
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1520
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1713a: ; 0x1713a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17144: ; 0x17144
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1540
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1714e: ; 0x1714e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1400
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17158: ; 0x17158
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1560
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17162: ; 0x17162
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1420
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1716c: ; 0x1716c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1580
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17176: ; 0x17176
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1440
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17180: ; 0x17180
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1718a: ; 0x1718a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1460
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17194: ; 0x17194
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1719e: ; 0x1719e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1480
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171a8: ; 0x171a8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171b2: ; 0x171b2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171bc: ; 0x171bc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1600
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171c6: ; 0x171c6
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171d0: ; 0x171d0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1620
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171da: ; 0x171da
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+Data_171e4:
+ dw Data_171ec
+ dw Data_171ef
+ dw Data_171f2
+ dw Data_171f5
+
+Data_171ec: ; 0x171ec
+ db $01
+ dw Data_171f8
+
+Data_171ef: ; 0x171ef
+ db $01
+ dw Data_17204
+
+Data_171f2: ; 0x171f2
+ db $01
+ dw Data_17210
+
+Data_171f5: ; 0x171f5
+ db $01
+ dw Data_1721c
+
+Data_171f8: ; 0x171f8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $C6
+
+ db $01
+ dw vBGMap + $24
+ db $C7
+
+ db $00
+
+Data_17204: ; 0x17204
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $C8
+
+ db $01
+ dw vBGMap + $24
+ db $C9
+
+ db $00
+
+Data_17210: ; 0x17210
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $CA
+
+ db $01
+ dw vBGMap + $2F
+ db $CB
+
+ db $00
+
+Data_1721c: ; 0x1721c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $CC
+
+ db $01
+ dw vBGMap + $2F
+ db $CD
+
+ db $00
+
+TileDataPointers_17228:
+ dw TileData_17278
+ dw TileData_1727b
+ dw TileData_1727e
+ dw TileData_17281
+ dw TileData_17284
+ dw TileData_17287
+ dw TileData_1728a
+ dw TileData_1728d
+ dw TileData_17290
+ dw TileData_17293
+ dw TileData_17296
+ dw TileData_17299
+ dw TileData_1729c
+ dw TileData_1729f
+ dw TileData_172a2
+ dw TileData_172a5
+ dw TileData_172a8
+ dw TileData_172ab
+ dw TileData_172ae
+ dw TileData_172b1
+ dw TileData_172b4
+ dw TileData_172b7
+ dw TileData_172ba
+ dw TileData_172bd
+ dw TileData_172c0
+ dw TileData_172c3
+ dw TileData_172c6
+ dw TileData_172c9
+ dw TileData_172cc
+ dw TileData_172cf
+ dw TileData_172d2
+ dw TileData_172d5
+ dw TileData_172d8
+ dw TileData_172db
+ dw TileData_172de
+ dw TileData_172e1
+ dw TileData_172e4
+ dw TileData_172e7
+ dw TileData_172ea
+ dw TileData_172ed
+
+TileData_17278: ; 0x17278
+ db $01
+ dw TileData_172f0
+
+TileData_1727b: ; 0x1727b
+ db $01
+ dw TileData_172fc
+
+TileData_1727e: ; 0x1727e
+ db $01
+ dw TileData_17308
+
+TileData_17281: ; 0x17281
+ db $01
+ dw TileData_17314
+
+TileData_17284: ; 0x17284
+ db $01
+ dw TileData_17320
+
+TileData_17287: ; 0x17287
+ db $01
+ dw TileData_1732c
+
+TileData_1728a: ; 0x1728a
+ db $01
+ dw TileData_17338
+
+TileData_1728d: ; 0x1728d
+ db $01
+ dw TileData_17344
+
+TileData_17290: ; 0x17290
+ db $01
+ dw TileData_17350
+
+TileData_17293: ; 0x17293
+ db $01
+ dw TileData_1735c
+
+TileData_17296: ; 0x17296
+ db $01
+ dw TileData_17368
+
+TileData_17299: ; 0x17299
+ db $01
+ dw TileData_17374
+
+TileData_1729c: ; 0x1729c
+ db $01
+ dw TileData_17380
+
+TileData_1729f: ; 0x1729f
+ db $01
+ dw TileData_1738c
+
+TileData_172a2: ; 0x172a2
+ db $01
+ dw TileData_17398
+
+TileData_172a5: ; 0x172a5
+ db $01
+ dw TileData_173a4
+
+TileData_172a8: ; 0x172a8
+ db $01
+ dw TileData_173b0
+
+TileData_172ab: ; 0x172ab
+ db $01
+ dw TileData_173bc
+
+TileData_172ae: ; 0x172ae
+ db $01
+ dw TileData_173c8
+
+TileData_172b1: ; 0x172b1
+ db $01
+ dw TileData_173d4
+
+TileData_172b4: ; 0x172b4
+ db $01
+ dw TileData_173e0
+
+TileData_172b7: ; 0x172b7
+ db $01
+ dw TileData_173ec
+
+TileData_172ba: ; 0x172ba
+ db $01
+ dw TileData_173f8
+
+TileData_172bd: ; 0x172bd
+ db $01
+ dw TileData_17404
+
+TileData_172c0: ; 0x172c0
+ db $01
+ dw TileData_17410
+
+TileData_172c3: ; 0x172c3
+ db $01
+ dw TileData_1741c
+
+TileData_172c6: ; 0x172c6
+ db $01
+ dw TileData_17428
+
+TileData_172c9: ; 0x172c9
+ db $01
+ dw TileData_17434
+
+TileData_172cc: ; 0x172cc
+ db $01
+ dw TileData_17440
+
+TileData_172cf: ; 0x172cf
+ db $01
+ dw TileData_1744c
+
+TileData_172d2: ; 0x172d2
+ db $01
+ dw TileData_17458
+
+TileData_172d5: ; 0x172d5
+ db $01
+ dw TileData_17464
+
+TileData_172d8: ; 0x172d8
+ db $01
+ dw TileData_17470
+
+TileData_172db: ; 0x172db
+ db $01
+ dw TileData_1747c
+
+TileData_172de: ; 0x172de
+ db $01
+ dw TileData_17488
+
+TileData_172e1: ; 0x172e1
+ db $01
+ dw TileData_17494
+
+TileData_172e4: ; 0x172e4
+ db $01
+ dw TileData_174a0
+
+TileData_172e7: ; 0x172e7
+ db $01
+ dw TileData_174ac
+
+TileData_172ea: ; 0x172ea
+ db $01
+ dw TileData_174b8
+
+TileData_172ed: ; 0x172ed
+ db $01
+ dw TileData_174c4
+
+TileData_172f0: ; 0x172f0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $40
+
+ db $01
+ dw vBGMap + $24
+ db $41
+
+ db $00
+
+TileData_172fc: ; 0x172fc
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $42
+
+ db $01
+ dw vBGMap + $24
+ db $43
+
+ db $00
+
+TileData_17308: ; 0x17308
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $44
+
+ db $01
+ dw vBGMap + $24
+ db $45
+
+ db $00
+
+TileData_17314: ; 0x17314
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $46
+
+ db $01
+ dw vBGMap + $24
+ db $47
+
+ db $00
+
+TileData_17320: ; 0x17320
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $48
+
+ db $01
+ dw vBGMap + $24
+ db $49
+
+ db $00
+
+TileData_1732c: ; 0x1732c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $4A
+
+ db $01
+ dw vBGMap + $24
+ db $4B
+
+ db $00
+
+TileData_17338: ; 0x17338
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $4C
+
+ db $01
+ dw vBGMap + $24
+ db $4D
+
+ db $00
+
+TileData_17344: ; 0x17344
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $4E
+
+ db $01
+ dw vBGMap + $24
+ db $4F
+
+ db $00
+
+TileData_17350: ; 0x17350
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $50
+
+ db $01
+ dw vBGMap + $24
+ db $51
+
+ db $00
+
+TileData_1735c: ; 0x1735c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $52
+
+ db $01
+ dw vBGMap + $24
+ db $53
+
+ db $00
+
+TileData_17368: ; 0x17368
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $2C
+
+ db $01
+ dw vBGMap + $24
+ db $2D
+
+ db $00
+
+TileData_17374: ; 0x17374
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $2E
+
+ db $01
+ dw vBGMap + $24
+ db $2F
+
+ db $00
+
+TileData_17380: ; 0x17380
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $30
+
+ db $01
+ dw vBGMap + $24
+ db $31
+
+ db $00
+
+TileData_1738c: ; 0x1738c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $32
+
+ db $01
+ dw vBGMap + $24
+ db $33
+
+ db $00
+
+TileData_17398: ; 0x17398
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $34
+
+ db $01
+ dw vBGMap + $24
+ db $35
+
+ db $00
+
+TileData_173a4: ; 0x173a4
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $36
+
+ db $01
+ dw vBGMap + $24
+ db $37
+
+ db $00
+
+TileData_173b0: ; 0x173b0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $38
+
+ db $01
+ dw vBGMap + $24
+ db $39
+
+ db $00
+
+TileData_173bc: ; 0x173bc
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $3A
+
+ db $01
+ dw vBGMap + $24
+ db $3B
+
+ db $00
+
+TileData_173c8: ; 0x173c8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $3C
+
+ db $01
+ dw vBGMap + $24
+ db $3D
+
+ db $00
+
+TileData_173d4: ; 0x173d4
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $3E
+
+ db $01
+ dw vBGMap + $24
+ db $3F
+
+ db $00
+
+TileData_173e0: ; 0x173e0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $68
+
+ db $01
+ dw vBGMap + $2F
+ db $69
+
+ db $00
+
+TileData_173ec: ; 0x173ec
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $6A
+
+ db $01
+ dw vBGMap + $2F
+ db $6B
+
+ db $00
+
+TileData_173f8: ; 0x173f8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $6C
+
+ db $01
+ dw vBGMap + $2F
+ db $6D
+
+ db $00
+
+TileData_17404: ; 0x17404
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $6E
+
+ db $01
+ dw vBGMap + $2F
+ db $6F
+
+ db $00
+
+TileData_17410: ; 0x17410
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $70
+
+ db $01
+ dw vBGMap + $2F
+ db $71
+
+ db $00
+
+TileData_1741c: ; 0x1741c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $72
+
+ db $01
+ dw vBGMap + $2F
+ db $73
+
+ db $00
+
+TileData_17428: ; 0x17428
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $74
+
+ db $01
+ dw vBGMap + $2F
+ db $75
+
+ db $00
+
+TileData_17434: ; 0x17434
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $76
+
+ db $01
+ dw vBGMap + $2F
+ db $77
+
+ db $00
+
+TileData_17440: ; 0x17440
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $78
+
+ db $01
+ dw vBGMap + $2F
+ db $79
+
+ db $00
+
+TileData_1744c: ; 0x1744c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $7A
+
+ db $01
+ dw vBGMap + $2F
+ db $7B
+
+ db $00
+
+TileData_17458: ; 0x17458
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $54
+
+ db $01
+ dw vBGMap + $2F
+ db $55
+
+ db $00
+
+TileData_17464: ; 0x17464
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $56
+
+ db $01
+ dw vBGMap + $2F
+ db $57
+
+ db $00
+
+TileData_17470: ; 0x17470
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $58
+
+ db $01
+ dw vBGMap + $2F
+ db $59
+
+ db $00
+
+TileData_1747c: ; 0x1747c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $5A
+
+ db $01
+ dw vBGMap + $2F
+ db $5B
+
+ db $00
+
+TileData_17488: ; 0x17488
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $5C
+
+ db $01
+ dw vBGMap + $2F
+ db $5D
+
+ db $00
+
+TileData_17494: ; 0x17494
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $5E
+
+ db $01
+ dw vBGMap + $2F
+ db $5F
+
+ db $00
+
+TileData_174a0: ; 0x174a0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $60
+
+ db $01
+ dw vBGMap + $2F
+ db $61
+
+ db $00
+
+TileData_174ac: ; 0x174ac
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $62
+
+ db $01
+ dw vBGMap + $2F
+ db $63
+
+ db $00
+
+TileData_174b8: ; 0x174b8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $64
+
+ db $01
+ dw vBGMap + $2F
+ db $65
+
+ db $00
+
+TileData_174c4: ; 0x174c4
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $66
+
+ db $01
+ dw vBGMap + $2F
+ db $67
+
+ db $00
+
+Func_174d0: ; 0x174d0
+ call Func_174ea
+ ret nc
+ ; fall through
+
+Func_174d4: ; 0x174d4
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_17528
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, $5
+ ld de, LoadTileLists
+ call Func_10c5
+ ret
+
+Func_174ea: ; 0x174ea
+ ld a, [wd624]
+ ld hl, wd625
+ cp [hl]
+ ret z
+ ld a, [wd626]
+ dec a
+ ld [wd626], a
+ jr nz, .asm_17514
+ ld a, [wd625]
+ ld [wd624], a
+ cp $3
+ jr c, .asm_1750f
+ ld a, $1
+ ld [wd609], a
+ ld a, $3
+ ld [wd607], a
+.asm_1750f
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_17514
+ and $7
+ ret nz
+ ld a, [wd626]
+ bit 3, a
+ jr nz, .asm_17523
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_17523
+ ld a, [wd625]
+ scf
+ ret
+
+TileDataPointers_17528:
+ dw TileData_17530
+ dw TileData_1753B
+ dw TileData_17546
+ dw TileData_17551
+
+TileData_17530: ; 0x17530
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $B0, $B1, $B0, $B1, $B0, $B1
+ db $00
+
+TileData_1753B: ; 0x1753B
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $AE, $AF, $B0, $B1, $B0, $B1
+ db $00
+
+TileData_17546: ; 0x17546
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $AE, $AF, $AE, $AF, $B0, $B1
+ db $00
+
+TileData_17551: ; 0x17551
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $AE, $AF, $AE, $AF, $AE, $AF
+ db $00
diff --git a/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm
new file mode 100755
index 0000000..19f87cc
--- /dev/null
+++ b/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm
@@ -0,0 +1,2807 @@
+ResolveSeelBonusGameObjectCollisions: ; 0x25c5a
+ call Func_25da3
+ call Func_25ced
+ ld a, [wd793]
+ cp $14
+ jr c, .asm_25c98
+ ld a, [wd794]
+ cp $2
+ jr nc, .asm_25c98
+ ld a, $1
+ ld [wd498], a
+ ld de, $0000
+ call PlaySong
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, SeelStageClearedText
+ call LoadTextHeader
+ ld a, $2
+ ld [wd794], a
+ lb de, $4b, $2a
+ call PlaySoundEffect
+.asm_25c98
+ ld a, [wd794]
+ cp $2
+ jr nz, .asm_25cb0
+ ld a, [wSFXTimer]
+ and a
+ jr nz, .asm_25cb0
+ ld de, $0003
+ call PlaySong
+ ld a, $5
+ ld [wd794], a
+.asm_25cb0
+ ld a, [wd794]
+ cp $2
+ jr z, .asm_25cc1
+ callba Func_107f8
+.asm_25cc1
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, $3
+ ld [wd791], a
+ ld a, [wd794]
+ cp $5
+ ret z
+ ld a, $1
+ ld [wd794], a
+ ret
+
+Func_25ced: ; 0x25ced
+ ld a, [wd766]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd766], a
+ callba LoadStageCollisionAttributes
+ call Func_25d0e
+ ret
+
+Func_25d0e: ; 0x25d0e
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_25d2b
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_25d21
+ ld hl, TileDataPointers_25d67
+.asm_25d21
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_25d2b)
+ call Func_10aa
+ ret
+
+TileDataPointers_25d2b:
+ dw TileData_25d2f
+ dw TileData_25d32
+
+TileData_25d2f: ; 0x25d2f
+ db $01
+ dw TileData_25d35
+
+TileData_25d32: ; 0x25d32
+ db $01
+ dw TileData_25d4e
+
+TileData_25d35: ; 0x25d35
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $1F, $20
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $1D, $1E
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $1B, $1C
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $17, $18
+
+ db $00 ; terminator
+
+TileData_25d4e: ; 0x25d4e
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $24, $F9
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $22, $04
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $36, $37, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $35, $F9
+
+ db $00 ; terminator
+
+TileDataPointers_25d67:
+ dw TileData_25d6b
+ dw TileData_25d6e
+
+TileData_25d6b: ; 0x25d6b
+ db $01
+ dw TileData_25d71
+
+TileData_25d6e: ; 0x25d6e
+ db $01
+ dw TileData_25d8a
+
+TileData_25d71: ; 0x25d71
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $11, $10
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $0B, $0A
+
+ db $02
+ dw vBGMap + $172
+ db $07, $06
+
+ db $00 ; terminator
+
+TileData_25d8a: ; 0x25d8a
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $0F, $F4
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $0C, $FB
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $09, $08, $F8
+
+ db $02
+ dw vBGMap + $172
+ db $04, $F4
+
+ db $00 ; terminator
+
+Func_25da3: ; 0x25da3
+ ld a, [wd767]
+ and a
+ jp z, .asm_25e38
+ xor a
+ ld [wd767], a
+ ld a, [wd768]
+ sla a
+ ld c, a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd76c
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, $9
+ ld [de], a
+ dec de
+ dec de
+ dec de
+ push bc
+ ld hl, SeelAnimationData10
+ call CopyHLToDE
+ pop bc
+ ld hl, wd76e
+ add hl, bc
+ ld a, [hl]
+ ld [wd79c], a
+ ld hl, wd770
+ add hl, bc
+ ld a, [hl]
+ add $8
+ ld [wd79e], a
+ ld a, [wd792]
+ cp $9
+ jr nz, .asm_25df1
+ ld a, $0
+ ld [wd792], a
+ ld [wd79a], a
+.asm_25df1
+ ld a, [wd792]
+ dec a
+ cp $ff
+ jr z, .asm_25e04
+ ld [wd79a], a
+ ld de, wd79a
+ call Func_261f9
+ jr .asm_25e07
+
+.asm_25e04
+ ld [wd79a], a
+.asm_25e07
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ lb de, $00, $30
+ call PlaySoundEffect
+ call Func_25e85
+ ld hl, wd792
+ inc [hl]
+ ld a, [wd793]
+ cp $14
+ ret nc
+ ld hl, wd793
+ inc [hl]
+ ld a, [wd792]
+ dec a
+ ld b, a
+ ld a, [hl]
+ add b
+ ld [hl], a
+ ld a, $1
+ ld [wd64e], a
+ call Func_262f4
+.asm_25e38
+ ld de, wd76c ; I think these three calls are one for each Seel swimming around
+ call Func_25f47
+ ld de, wd776
+ call Func_25f47
+ ld de, wd780
+ call Func_25f47
+ ld a, [wd792]
+ dec a
+ cp $ff
+ jr z, .asm_25e5d
+ ld [wd79a], a
+ ld de, wd79a
+ call Func_26212
+ jr .asm_25e60
+
+.asm_25e5d
+ ld [wd79a], a
+.asm_25e60
+ ld bc, $087a ; again, probably one call for each Seel swimming around
+ ld de, wd76d
+ ld hl, wd772
+ call Func_25ec5
+ ld bc, $087a
+ ld de, wd777
+ ld hl, wd77c
+ call Func_25ec5
+ ld bc, $087a
+ ld de, wd781
+ ld hl, wd786
+ call Func_25ec5
+ ret
+
+Func_25e85: ; 0x25e85
+ ld a, [wd792]
+ inc a
+ ld d, $1
+ ld e, a
+ ld a, $1
+.asm_25e8e
+ cp e
+ jr z, .asm_25e96
+ sla d
+ inc a
+ jr .asm_25e8e
+
+.asm_25e96
+ push de
+ ld a, d
+ cp $32
+ jr nc, .asm_25ead
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ pop de
+ dec d
+ jr .asm_25ebf
+
+.asm_25ead
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ pop de
+ ld a, d
+ sub $32
+ ld d, a
+.asm_25ebf
+ ld a, d
+ cp $0
+ jr nz, .asm_25e96
+ ret
+
+Func_25ec5: ; 0x25ec5
+ dec de
+ ld a, [de]
+ cp $1
+ jr z, .asm_25ece
+ cp $4
+ ret nz
+.asm_25ece
+ inc de
+ push hl
+ ld a, [hld]
+ push af
+ push bc
+ ld a, [hl]
+ and $f
+ ld c, a
+ ld b, $0
+ ld hl, SeelSwimmingYOffsets
+ add hl, bc
+ pop bc
+ pop af
+ and a
+ jr nz, .asm_25f05
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ adc $0
+ ld [de], a
+ pop hl
+ cp c
+ ret c
+ ld a, $1
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ ld a, $7
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ ld d, h
+ ld e, l
+ ld hl, SeelAnimationData8
+ call CopyHLToDE
+ ret
+
+.asm_25f05
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ sbc $0
+ ld [de], a
+ pop hl
+ cp b
+ ret nc
+ xor a
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ ld a, $8
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ ld d, h
+ ld e, l
+ ld hl, SeelAnimationData9
+ call CopyHLToDE
+ ret
+
+SeelSwimmingYOffsets:
+ db $31, $32, $33, $34, $35, $36, $37, $36, $35, $34, $33, $32, $33, $34, $35, $36
+ db $37, $38, $39, $3A, $3B, $3A, $39, $38, $37, $36, $35, $34, $33, $32, $31, $30
+
+Func_25f47: ; 0x25f47
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelAnimationsTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ rst JumpTable ; calls JumpToFuncInTable
+CallTable_25f5f: ; 0x25f5f
+ dw Func_25f77
+ dw Func_25fbe
+ dw Func_25ff3
+ dw Func_2602a
+ dw Func_2604c
+ dw Func_2607f
+ dw Func_260b6
+ dw Func_260d8
+ dw Func_260e2
+ dw Func_260ec
+ dw Func_26109
+ dw Func_26120
+
+Func_25f77: ; 0x25f77
+ dec de
+ ld a, [de]
+ cp $2
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ dec a
+ ld [de], a
+ ld a, $3
+ jr z, .asm_25f8f
+ pop de
+ xor a
+ jp Func_26137
+
+.asm_25f8f
+ ld hl, wd792
+ ld [hl], $0
+ call GenRandom
+ bit 7, a
+ jr z, .asm_25fa2
+ inc de
+ ld a, $1
+ ld [de], a
+ dec de
+ jr .asm_25fa7
+
+.asm_25fa2
+ inc de
+ ld a, $0
+ ld [de], a
+ dec de
+.asm_25fa7
+ inc de
+ ld a, [de]
+ and a
+ jr z, .asm_25fb0
+ ld a, $6
+ jr .asm_25fb2
+
+.asm_25fb0
+ ld a, $3
+.asm_25fb2
+ push af
+ lb de, $00, $31
+ call PlaySoundEffect
+ pop af
+ pop de
+ jp Func_26137
+
+Func_25fbe: ; 0x25fbe
+ dec de
+ ld a, [de]
+ cp $4
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ dec a
+ ld [de], a
+ jr z, .asm_25fd5
+ pop de
+ ld a, $1
+ jp Func_26137
+
+.asm_25fd5
+ ld a, [wd791]
+ cp $0
+ jr z, .asm_25fe9
+ ld a, $2
+ ld [de], a
+ pop de
+ ld a, $4
+ ld [de], a
+ ld a, $1
+ jp Func_26137
+ ret ; unused instruction
+
+.asm_25fe9
+ ld hl, wd791
+ inc [hl]
+ pop de
+ ld a, $2
+ jp Func_26137
+
+Func_25ff3: ; 0x25ff3
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ xor a
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [wd792]
+ cp $6
+ jr nc, .asm_26020
+ cp $2
+ jr nc, .asm_26016
+ ld a, $3
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_26016
+ ld a, $2
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_26020
+ ld a, $1
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+Func_2602a: ; 0x2602a
+ dec de
+ ld a, [de]
+ cp $9
+ ret nz
+ ld a, $1
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ call GenRandom
+ bit 7, a
+ jr z, .asm_26044
+ ld a, $3
+ jr .asm_26046
+
+.asm_26044
+ ld a, $5
+.asm_26046
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_2604c: ; 0x2604c
+ dec de
+ ld a, [de]
+ cp $4
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ dec a
+ ld [de], a
+ jr z, .asm_26063
+ pop de
+ ld a, $4
+ jp Func_26137
+
+.asm_26063
+ ld a, [wd791]
+ cp $0
+ jr z, .asm_26075
+ ld a, $2
+ ld [de], a
+ pop de
+ ld a, $4
+ ld [de], a
+ jp Func_26137
+ ret ; unused instruction
+
+.asm_26075
+ ld hl, wd791
+ inc [hl]
+ pop de
+ ld a, $5
+ jp Func_26137
+
+Func_2607f: ; 0x2607f
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ xor a
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [wd792]
+ cp $6
+ jr nc, .asm_260ac
+ cp $2
+ jr nc, .asm_260a2
+ ld a, $3
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_260a2
+ ld a, $2
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_260ac
+ ld a, $1
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+Func_260b6: ; 0x260b6
+ dec de
+ ld a, [de]
+ cp $9
+ ret nz
+ ld a, $4
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ call GenRandom
+ bit 7, a
+ jr z, .asm_260d0
+ ld a, $3
+ jr .asm_260d2
+
+.asm_260d0
+ ld a, $5
+.asm_260d2
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_260d8: ; 0x260d8
+ dec de
+ ld a, [de]
+ cp $5
+ ret nz
+ ld a, $4
+ jp Func_26137
+
+Func_260e2: ; 0x260e2
+ dec de
+ ld a, [de]
+ cp $5
+ ret nz
+ ld a, $1
+ jp Func_26137
+
+Func_260ec: ; 0x260ec
+ dec de
+ ld a, [de]
+ cp $1
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ and a
+ jr z, .asm_26103
+ pop de
+ ld a, $b
+ jp Func_26137
+
+.asm_26103
+ pop de
+ ld a, $a
+ jp Func_26137
+
+Func_26109: ; 0x26109
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ ld a, $1
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, $5
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_26120: ; 0x26120
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ ld a, $4
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, $5
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_26137: ; 0x26137
+ push af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelAnimationsTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ pop af
+ ld [de], a
+ ret
+
+SeelAnimationsTable: ; 0x2614f
+ dw SeelAnimationData1
+ dw SeelAnimationData2
+ dw SeelAnimationData3
+ dw SeelAnimationData4
+ dw SeelAnimationData5
+ dw SeelAnimationData6
+ dw SeelAnimationData7
+ dw SeelAnimationData8
+ dw SeelAnimationData9
+ dw SeelAnimationData10
+ dw SeelAnimationData11
+ dw SeelAnimationData12
+
+SeelAnimationData1:
+ db $1C, $00
+ db $1C, $01
+ db $00 ; terminator
+
+SeelAnimationData2:
+ db $0C, $03
+ db $08, $04
+ db $0C, $05
+ db $08, $04
+ db $00 ; terminator
+
+SeelAnimationData3:
+ db $04, $06
+ db $04, $07
+ db $05, $08
+ db $05, $09
+ db $06, $0A
+ db $04, $0B
+ db $08, $0C
+ db $00 ; terminator
+
+SeelAnimationData4:
+ db $08, $0C
+ db $04, $0B
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $0E
+ db $04, $0F
+ db $00 ; terminator
+
+SeelAnimationData5:
+ db $0C, $10
+ db $08, $11
+ db $0C, $12
+ db $08, $11
+ db $00 ; terminator
+
+SeelAnimationData6:
+ db $04, $13
+ db $04, $14
+ db $05, $08
+ db $05, $09
+ db $06, $0A
+ db $04, $0B
+ db $08, $0C
+ db $00 ; terminator
+
+SeelAnimationData7:
+ db $08, $0C
+ db $04, $0B
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $15
+ db $04, $16
+ db $00 ; terminator
+
+SeelAnimationData8:
+ db $04, $06
+ db $04, $07
+ db $06, $0A
+ db $04, $15
+ db $04, $16
+ db $00 ; terminator
+
+SeelAnimationData9:
+ db $04, $13
+ db $04, $14
+ db $06, $0A
+ db $04, $0E
+ db $04, $0F
+ db $00 ; terminator
+
+SeelAnimationData10:
+ db $10, $02
+ db $00 ; terminator
+
+SeelAnimationData11:
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $0E
+ db $04, $0F
+ db $00 ; terminator
+
+SeelAnimationData12:
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $15
+ db $04, $16
+ db $00 ; terminator
+
+Func_261f9: ; 0x261f9
+ ld a, $ff
+ ld [wd795], a
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelStageAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ dec de
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+Func_26212: ; 0x26212
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelStageAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ dec de
+ ld a, [de]
+ cp $a
+ ret nz
+ xor a
+ ld [de], a
+ ld [wd79c], a
+ ld [wd79e], a
+ ld a, a
+ ld [wd795], a
+ ret
+
+SeelStageAnimations:
+ dw SeelStageAnimationData1
+ dw SeelStageAnimationData1
+ dw SeelStageAnimationData2
+ dw SeelStageAnimationData3
+ dw SeelStageAnimationData4
+ dw SeelStageAnimationData5
+ dw SeelStageAnimationData6
+ dw SeelStageAnimationData7
+ dw SeelStageAnimationData8
+
+SeelStageAnimationData1:
+ db $02, $00
+ db $02, $01
+ db $02, $02
+ db $10, $00
+ db $04, $18
+ db $04, $00
+ db $04, $18
+ db $04, $00
+ db $04, $18
+ db $04, $00
+ db $00 ; terminator
+
+SeelStageAnimationData2:
+ db $02, $03
+ db $02, $04
+ db $02, $05
+ db $10, $03
+ db $04, $18
+ db $04, $03
+ db $04, $18
+ db $04, $03
+ db $04, $18
+ db $04, $03
+ db $00 ; terminator
+
+SeelStageAnimationData3:
+ db $02, $06
+ db $02, $07
+ db $02, $08
+ db $10, $06
+ db $04, $18
+ db $04, $06
+ db $04, $18
+ db $04, $06
+ db $04, $18
+ db $04, $06
+ db $00 ; terminator
+
+SeelStageAnimationData4:
+ db $02, $09
+ db $02, $0A
+ db $02, $0B
+ db $10, $09
+ db $04, $18
+ db $04, $09
+ db $04, $18
+ db $04, $09
+ db $04, $18
+ db $04, $09
+ db $00 ; terminator
+
+SeelStageAnimationData5:
+ db $02, $0C
+ db $02, $0D
+ db $02, $0E
+ db $10, $0C
+ db $04, $18
+ db $04, $0C
+ db $04, $18
+ db $04, $0C
+ db $04, $18
+ db $04, $0C
+ db $00 ; terminator
+
+SeelStageAnimationData6:
+ db $02, $0F
+ db $02, $10
+ db $02, $11
+ db $10, $0F
+ db $04, $18
+ db $04, $0F
+ db $04, $18
+ db $04, $0F
+ db $04, $18
+ db $04, $0F
+ db $00 ; terminator
+
+SeelStageAnimationData7:
+ db $02, $12
+ db $02, $13
+ db $02, $14
+ db $10, $12
+ db $04, $18
+ db $04, $12
+ db $04, $18
+ db $04, $12
+ db $04, $18
+ db $04, $12
+ db $00 ; terminator
+
+SeelStageAnimationData8:
+ db $02, $15
+ db $02, $16
+ db $02, $17
+ db $10, $15
+ db $04, $18
+ db $04, $15
+ db $04, $18
+ db $04, $15
+ db $04, $18
+ db $04, $15
+ db $00 ; terminator
+
+Func_262f4: ; 0x262f4
+ ld a, [wd793]
+ ld c, a
+ ld b, $0
+.asm_262fa
+ ld a, c
+ and a
+ jr z, .asm_26306
+ ld a, b
+ add $8
+ ld b, a
+ dec c
+ ld a, c
+ jr .asm_262fa
+
+.asm_26306
+ ld a, b
+ and a
+ jr z, .asm_2630c
+ sub $8
+.asm_2630c
+ ld [wd652], a
+ ld a, [wd792]
+ and a
+ jr z, .asm_2631b
+ ld b, a
+ ld a, [wd793]
+ inc a
+ sub b
+.asm_2631b
+ ld [wd651], a
+ ld a, [wd793]
+ cp $15
+ jr c, .asm_2632a
+ ld a, $14
+ ld [wd793], a
+.asm_2632a
+ push af
+ xor a
+ ld [wd650], a
+ pop af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_2634a
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_26340
+ ld hl, TileDataPointers_26764
+.asm_26340
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_2634a)
+ call Func_10aa
+ ret
+
+TileDataPointers_2634a:
+ dw TileData_26374
+ dw TileData_26377
+ dw TileData_2637a
+ dw TileData_2637d
+ dw TileData_26380
+ dw TileData_26383
+ dw TileData_26386
+ dw TileData_26389
+ dw TileData_2638c
+ dw TileData_2638f
+ dw TileData_26392
+ dw TileData_26395
+ dw TileData_26398
+ dw TileData_2639b
+ dw TileData_2639e
+ dw TileData_263a1
+ dw TileData_263a4
+ dw TileData_263a7
+ dw TileData_263aa
+ dw TileData_263ad
+ dw TileData_263b0
+
+TileData_26374: ; 0x26374
+ db $01
+ dw TileData_263b3
+
+TileData_26377: ; 0x26377
+ db $01
+ dw TileData_263e0
+
+TileData_2637a: ; 0x2637a
+ db $01
+ dw TileData_2640d
+
+TileData_2637d: ; 0x2637d
+ db $01
+ dw TileData_2643a
+
+TileData_26380: ; 0x26380
+ db $01
+ dw TileData_26467
+
+TileData_26383: ; 0x26383
+ db $01
+ dw TileData_26494
+
+TileData_26386: ; 0x26386
+ db $01
+ dw TileData_264c1
+
+TileData_26389: ; 0x26389
+ db $01
+ dw TileData_264ee
+
+TileData_2638c: ; 0x2638c
+ db $01
+ dw TileData_2651b
+
+TileData_2638f: ; 0x2638f
+ db $01
+ dw TileData_26548
+
+TileData_26392: ; 0x26392
+ db $01
+ dw TileData_26575
+
+TileData_26395: ; 0x26395
+ db $01
+ dw TileData_265a2
+
+TileData_26398: ; 0x26398
+ db $01
+ dw TileData_265cf
+
+TileData_2639b: ; 0x2639b
+ db $01
+ dw TileData_265fc
+
+TileData_2639e: ; 0x2639e
+ db $01
+ dw TileData_26629
+
+TileData_263a1: ; 0x263a1
+ db $01
+ dw TileData_26656
+
+TileData_263a4: ; 0x263a4
+ db $01
+ dw TileData_26683
+
+TileData_263a7: ; 0x263a7
+ db $01
+ dw TileData_266b0
+
+TileData_263aa: ; 0x263aa
+ db $01
+ dw TileData_266dd
+
+TileData_263ad: ; 0x263ad
+ db $01
+ dw TileData_2670a
+
+TileData_263b0: ; 0x263b0
+ db $01
+ dw TileData_26737
+
+TileData_263b3: ; 0x263b3
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $01, $30, $31
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_263e0: ; 0x263e0
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $30, $31
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2640d: ; 0x2640d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $31
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2643a: ; 0x2643a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26467: ; 0x26467
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26494: ; 0x26494
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_264c1: ; 0x264c1
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_264ee: ; 0x264ee
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2651b: ; 0x2651b
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26548: ; 0x26548
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26575: ; 0x26575
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_265a2: ; 0x265a2
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_265cf: ; 0x265cf
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_265fc: ; 0x265fc
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26629: ; 0x26629
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26656: ; 0x26656
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26683: ; 0x26683
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_266b0: ; 0x266b0
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_266dd: ; 0x266dd
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2670a: ; 0x2670a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $3B, $04
+
+ db $00 ; terminator
+
+TileData_26737: ; 0x26737
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $3B, $38
+
+ db $00 ; terminator
+
+TileDataPointers_26764:
+ dw TileData_2678e
+ dw TileData_26791
+ dw TileData_26794
+ dw TileData_26797
+ dw TileData_2679a
+ dw TileData_2679d
+ dw TileData_267a0
+ dw TileData_267a3
+ dw TileData_267a6
+ dw TileData_267a9
+ dw TileData_267ac
+ dw TileData_267af
+ dw TileData_267b2
+ dw TileData_267b5
+ dw TileData_267b8
+ dw TileData_267bb
+ dw TileData_267be
+ dw TileData_267c1
+ dw TileData_267c4
+ dw TileData_267c7
+ dw TileData_267ca
+
+TileData_2678e: ; 0x2678e
+ db $01
+ dw TileData_267cd
+
+TileData_26791: ; 0x26791
+ db $01
+ dw TileData_267fa
+
+TileData_26794: ; 0x26794
+ db $01
+ dw TileData_26827
+
+TileData_26797: ; 0x26797
+ db $01
+ dw TileData_26854
+
+TileData_2679a: ; 0x2679a
+ db $01
+ dw TileData_26881
+
+TileData_2679d: ; 0x2679d
+ db $01
+ dw TileData_268ae
+
+TileData_267a0: ; 0x267a0
+ db $01
+ dw TileData_268db
+
+TileData_267a3: ; 0x267a3
+ db $01
+ dw TileData_26908
+
+TileData_267a6: ; 0x267a6
+ db $01
+ dw TileData_26935
+
+TileData_267a9: ; 0x267a9
+ db $01
+ dw TileData_26962
+
+TileData_267ac: ; 0x267ac
+ db $01
+ dw TileData_2698f
+
+TileData_267af: ; 0x267af
+ db $01
+ dw TileData_269bc
+
+TileData_267b2: ; 0x267b2
+ db $01
+ dw TileData_269e9
+
+TileData_267b5: ; 0x267b5
+ db $01
+ dw TileData_26a16
+
+TileData_267b8: ; 0x267b8
+ db $01
+ dw TileData_26a43
+
+TileData_267bb: ; 0x267bb
+ db $01
+ dw TileData_26a70
+
+TileData_267be: ; 0x267be
+ db $01
+ dw TileData_26a9d
+
+TileData_267c1: ; 0x267c1
+ db $01
+ dw TileData_26aca
+
+TileData_267c4: ; 0x267c4
+ db $01
+ dw TileData_26af7
+
+TileData_267c7: ; 0x267c7
+ db $01
+ dw TileData_26b24
+
+TileData_267ca: ; 0x267ca
+ db $01
+ dw TileData_26b51
+
+TileData_267cd: ; 0x267cd
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FB, $18, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_267fa: ; 0x267fa
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $18, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26827: ; 0x26827
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26854: ; 0x26854
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26881: ; 0x26881
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_268ae: ; 0x268ae
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_268db: ; 0x268db
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26908: ; 0x26908
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26935: ; 0x26935
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26962: ; 0x26962
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_2698f: ; 0x2698f
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_269bc: ; 0x269bc
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_269e9: ; 0x269e9
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a16: ; 0x26a16
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a43: ; 0x26a43
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a70: ; 0x26a70
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a9d: ; 0x26a9d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26aca: ; 0x26aca
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26af7: ; 0x26af7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $1D
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26b24: ; 0x26b24
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $1D
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $1E, $FB
+
+ db $00 ; terminator
+
+TileData_26b51: ; 0x26b51
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $1D
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $1E, $1B
+
+ db $00 ; terminator
diff --git a/home.asm b/home.asm
index b7776b5..76d489a 100755
--- a/home.asm
+++ b/home.asm
@@ -4994,57 +4994,6 @@ SubTileXPos_CollisionData7: ; 0x268e
INCLUDE "data/sine_table.asm"
INCLUDE "engine/pinball_game/object_collision/object_collision.asm"
-Func_281c: ; 0x281c
- ld a, [wCurrentStage]
- call CallInFollowingTable
-CallTable_2822: ; 0x2822
-; not collisions
- ; STAGE_RED_FIELD_TOP
- padded_dab Func_1460e
-
- ; STAGE_RED_FIELD_BOTTOM
- padded_dab Func_14652
-
- padded_dab DoNothing_1806d
-
- padded_dab Func_1806e
-
- ; STAGE_BLUE_FIELD_TOP
- padded_dab Func_1c715
-
- ; STAGE_BLUE_FIELD_BOTTOM
- padded_dab Func_1c769
-
- ; STAGE_GENGAR_BONUS
- padded_dab Func_18377
-
- ; STAGE_GENGAR_BONUS
- padded_dab Func_18377
-
- ; STAGE_MEWTWO_BONUS
- padded_dab Func_19451
-
- ; STAGE_MEWTWO_BONUS
- padded_dab Func_19451
-
- ; STAGE_MEOWTH_BONUS
- padded_dab Func_2442a
-
- ; STAGE_MEOWTH_BONUS
- padded_dab Func_2442a
-
- ; STAGE_DIGLETT_BONUS
- padded_dab Func_19b88
-
- ; STAGE_DIGLETT_BONUS
- padded_dab Func_19b88
-
- ; STAGE_SEEL_BONUS
- padded_dab Func_25c5a
-
- ; STAGE_SEEL_BONUS
- padded_dab Func_25c5a
-
Func_2862: ; 0x2862
ld a, [wd7be]
and a
diff --git a/main.asm b/main.asm
index f69a8ef..a3f0fd5 100755
--- a/main.asm
+++ b/main.asm
@@ -1386,8736 +1386,7 @@ SECTION "bank5", ROMX, BANK[$5]
INCLUDE "engine/pinball_game/load_stage_data/load_red_field.asm"
INCLUDE "engine/pinball_game/object_collision/red_stage_object_collision.asm"
-
-Func_1460e: ; 0x1460e
- call ResolveVoltorbCollision
- call ResolveRedStageSpinnerCollision
- call ResolveRedStagePinballUpgradeTriggersCollision
- call HandleRedStageBallTypeUpgradeCounter
- call Func_15270
- call ResolveRedStageBoardTriggerCollision
- call ResolveRedStagePikachuCollision
- call ResolveStaryuCollision
- call ResolveBellsproutCollision
- call ResolveDittoSlotCollision
- call Func_161e0
- call Func_164e3
- call Func_146a9
- call Func_174ea
- call Func_148cf
- callba Func_30188
- ld a, $0
- callba Func_10000
- ret
-
-Func_14652: ; 0x14652
- call Func_14795
- call Func_15f86
- call ResolveDiglettCollision
- call Func_14880
- call Func_14e10
- call Func_154a9
- call HandleRedStageBallTypeUpgradeCounter
- call Func_151cb
- call Func_1652d
- call ResolveRedStagePikachuCollision
- call Func_167ff
- call Func_169a6
- call ResolveRedStageBonusMultiplierCollision
- call Func_16279
- call Func_161af
- call Func_164e3
- call Func_14733
- call Func_146a2
- call Func_174d0
- callba Func_30188
- ld a, $0
- callba Func_10000
- ret
-
-Func_146a2: ; 0x146a2
- call Func_146a9
- call nz, Func_14707
- ret
-
-Func_146a9: ; 0x146a9
- ld a, [wBallSaverTimerFrames]
- ld hl, wBallSaverTimerSeconds
- or [hl]
- ret z
- ld a, [wBallXPos + 1]
- cp $9a
- jr nc, .asm_146e8
- ld a, [wBallSaverTimerFrames]
- dec a
- ld [wBallSaverTimerFrames], a
- bit 7, a
- jr z, .asm_146e8
- ld a, 59
- ld [wBallSaverTimerFrames], a
- ld a, [hl]
- dec a
- bit 7, a
- jr nz, .asm_146cf
- ld [hl], a
-.asm_146cf
- inc a
- ld c, $0
- cp $2
- jr c, .asm_146e4
- ld c, $4
- cp $6
- jr c, .asm_146e4
- ld c, $10
- cp $b
- jr c, .asm_146e4
- ld c, $ff
-.asm_146e4
- ld a, c
- ld [wd4a2], a
-.asm_146e8
- ld a, [wd4a2]
- ld c, $0
- and a
- jr z, .asm_146fe
- ld c, $1
- cp $ff
- jr z, .asm_146fe
- ld hl, hNumFramesDropped
- and [hl]
- jr z, .asm_146fe
- ld c, $0
-.asm_146fe
- ld a, [wBallSaverIconOn]
- cp c
- ld a, c
- ld [wBallSaverIconOn], a
- ret
-
-Func_14707: ; 0x14707
- ld a, [wBallSaverIconOn]
- and a
- jr nz, .asm_1471c
- ld a, BANK(BgTileData_1172b)
- ld hl, BgTileData_1172b
- deCoord 8, 13, vBGMap
- ld bc, $0004
- call LoadOrCopyVRAMData
- ret
-
-.asm_1471c
- ld a, BANK(BgTileData_1472f)
- ld hl, BgTileData_1472f
- deCoord 8, 13, vBGMap
- ld bc, $0004
- call LoadOrCopyVRAMData
- ret
-
-BgTileData_1172b:
- db $AA, $AB, $AC, $AD
-
-BgTileData_1472f:
- db $B4, $B5, $B6, $B7
-
-Func_14733: ; 0x14733
- ld c, $0
- ld a, [wd49b]
- and a
- jr z, .asm_1473d
- ld c, $1
-.asm_1473d
- ld a, [wd4a9]
- cp c
- ld a, c
- ld [wd4a9], a
- ret z
- ; fall through
-
-Func_14746: ; 0x14746
- ld c, $0
- ld a, [wd49b]
- and a
- jr z, .asm_14750
- ld c, $2
-.asm_14750
- ld b, $0
- ld hl, AgainTextTileDataRedField
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, BANK(AgainTextTileDataRedField)
- call Func_10aa
- ret
-
-AgainTextTileDataRedField:
- dw AgainTextOffTileDataRedField
- dw AgainTextOnTileDataRedField
-
-AgainTextOffTileDataRedField:
- db 2
- dw AgainTextOffTileDataRedField1
- dw AgainTextOffTileDataRedField2
-
-AgainTextOnTileDataRedField:
- db 2
- dw AgainTextOnTileDataRedField1
- dw AgainTextOnTileDataRedField2
-
-AgainTextOffTileDataRedField1:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $38
- dw AgainTextOffGfx
- db Bank(AgainTextOffGfx)
- db $00
-
-AgainTextOffTileDataRedField2:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $3a
- dw AgainTextOffGfx + $20
- db Bank(AgainTextOffGfx)
- db $00
-
-AgainTextOnTileDataRedField1:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $38
- dw StageRedFieldBottomBaseGameBoyGfx + $380
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-AgainTextOnTileDataRedField2:
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $3a
- dw StageRedFieldBottomBaseGameBoyGfx + $3a0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-Func_14795: ; 0x14795
- ld a, [wWildMonCollision]
- and a
- ret z
- xor a
- ld [wWildMonCollision], a
- ld a, $1
- ld [wBallHitWildMon], a
- lb de, $00, $06
- call PlaySoundEffect
- ret
-
-ResolveDiglettCollision: ; 0x147aa
- ld a, [wWhichDiglett]
- and a
- jp z, .asm_14834
- xor a
- ld [wWhichDiglett], a
- ld a, [wWhichDiglettId]
- sub $1
- sla a
- ld c, a
- ld b, $0
- ld hl, wLeftMapMoveCounter
- add hl, bc
- ld a, [hl]
- cp $3
- jr z, .asm_14834
- inc a
- ld [hld], a
- ld [hl], $50
- ld hl, wd4f7
- add hl, bc
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, c
- and a
- jr z, .asm_14807
- ld a, $6a
- ld [wc7f0], a
- ld a, $6b
- ld [wc810], a
- ld a, $5
- call Func_149d9
- ld a, [wRightMapMoveCounter]
- add $4
- call Func_149f5
- ld a, $8
- callba Func_10000
- ld a, [wRightMapMoveCounter]
- cp $3
- call z, Func_14920
- jr .asm_14830
-
-.asm_14807
- ld a, $66
- ld [wc7e3], a
- ld a, $67
- ld [wc803], a
- ld a, $2
- call Func_149d9
- ld a, [wLeftMapMoveCounter]
- call Func_149f5
- ld a, $7
- callba Func_10000
- ld a, [wLeftMapMoveCounter]
- cp $3
- call z, Func_14947
-.asm_14830
- call Func_1496d
- ret
-
-.asm_14834
- ld a, [wd4ef]
- and a
- jr z, .asm_14857
- dec a
- ld [wd4ef], a
- jr nz, .asm_14857
- ld a, [wLeftMapMoveCounter]
- sub $3
- jr nz, .asm_1484d
- ld [wLeftMapMoveCounter], a
- call Func_149f5
-.asm_1484d
- ld a, $64
- ld [wc7e3], a
- ld a, $65
- ld [wc803], a
-.asm_14857
- ld a, [wd4f1]
- and a
- jr z, .asm_1487c
- dec a
- ld [wd4f1], a
- jr nz, .asm_1487c
- ld a, [wRightMapMoveCounter]
- sub $3
- jr nz, .asm_14872
- ld [wRightMapMoveCounter], a
- add $4
- call Func_149f5
-.asm_14872
- ld a, $68
- ld [wc7f0], a
- ld a, $69
- ld [wc810], a
-.asm_1487c
- call Func_14990
- ret
-
-Func_14880: ; 0x14880
- ld hl, wd4f7
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_148a6
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_148a6
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wLeftMapMoveCounter]
- and a
- jr z, .asm_148a6
- cp $3
- jr z, .asm_148a6
- dec a
- ld [wLeftMapMoveCounter], a
- call Func_149f5
-.asm_148a6
- ld hl, wd4f9
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_148ce
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_148ce
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wRightMapMoveCounter]
- and a
- jr z, .asm_148ce
- cp $3
- jr z, .asm_148ce
- dec a
- ld [wRightMapMoveCounter], a
- add $4
- call Func_149f5
-.asm_148ce
- ret
-
-Func_148cf: ; 0x148cf
- ld b, $0
- ld hl, wd4f8
- ld a, [hld]
- or [hl]
- jr z, .asm_148f8
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_148f8
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_148f8
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wLeftMapMoveCounter]
- and a
- jr z, .asm_148f8
- cp $3
- jr z, .asm_148f8
- dec a
- ld [wLeftMapMoveCounter], a
-.asm_148f8
- ld hl, wd4fa
- ld a, [hld]
- or [hl]
- jr z, .asm_1491f
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_1491f
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_1491f
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wRightMapMoveCounter]
- and a
- jr z, .asm_1491f
- cp $3
- jr z, .asm_1491f
- dec a
- ld [wRightMapMoveCounter], a
-.asm_1491f
- ret
-
-Func_14920: ; 0x14920
- ld hl, wd62b
- call Func_e4a
- jr nc, .asm_14937
- ld c, $a
- call Func_e55
- callba z, Func_30164
-.asm_14937
- ld a, $1
- ld [wd55a], a
- callba StartMapMoveMode
- ret
-
-Func_14947: ; 0x14947
- ld hl, wd62b
- call Func_e4a
- jr nc, .asm_1495e
- ld c, $a
- call Func_e55
- callba z, Func_30164
-.asm_1495e
- xor a
- ld [wd55a], a
- callba StartMapMoveMode
- ret
-
-Func_1496d: ; 0x1496d
- ld a, $55
- ld [wd803], a
- ld a, $4
- ld [wd804], a
- ld a, $2
- ld [wd7eb], a
- ld bc, FiveHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $0f
- call PlaySoundEffect
- ret
-
-Func_14990: ; 0x14990
- ld a, [wd4ef]
- and a
- jr nz, .asm_149b6
- ld a, [wLeftMapMoveDiglettAnimationCounter]
- and a
- jr z, .asm_149a2
- dec a
- ld [wLeftMapMoveDiglettAnimationCounter], a
- jr .asm_149b6
-
-.asm_149a2
- call Func_1130
- ret nz
- ld a, $14
- ld [wLeftMapMoveDiglettAnimationCounter], a
- ld a, [wLeftMapMoveDiglettFrame]
- xor $1
- ld [wLeftMapMoveDiglettFrame], a
- call Func_149d9
-.asm_149b6
- ld a, [wd4f1]
- and a
- ret nz
- ld a, [wRightMapMoveDiglettAnimationCounter]
- and a
- jr z, .asm_149c6
- dec a
- ld [wRightMapMoveDiglettAnimationCounter], a
- ret
-
-.asm_149c6
- call Func_1130
- ret nz
- ld a, $14
- ld [wRightMapMoveDiglettAnimationCounter], a
- ld a, [wRightMapMoveDiglettFrame]
- xor $1
- ld [wRightMapMoveDiglettFrame], a
- add $3
- ; fall through
-Func_149d9: ; 0x149d9
- sla a
- ld c, a
- ld b, $0
- ld hl, TileListDataPointers_14a11
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_149e9
- ld hl, TileListDataPointers_14a83
-.asm_149e9
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, BANK(TileListDataPointers_14a11)
- call Func_10aa
- ret
-
-Func_149f5: ; 0x149f5
- sla a
- ld c, a
- ld b, $0
- ld hl, Data_14af5
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_14a05
- ld hl, TileListDataPointers_14c8d
-.asm_14a05
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, BANK(Data_14af5)
- call Func_10aa
- ret
-
-TileListDataPointers_14a11: ; 0x14a11
- dw TileListData_14a1d
- dw TileListData_14a20
- dw TileListData_14a23
- dw TileListData_14a26
- dw TileListData_14a29
- dw TileListData_14a2c
-
-TileListData_14a1d: ; 0x14a1d
- db $01
- dw TileListData_14a2f
-
-TileListData_14a20: ; 0x14a20
- db $01
- dw TileListData_14a3d
-
-TileListData_14a23: ; 0x14a23
- db $01
- dw TileListData_14a4b
-
-TileListData_14a26: ; 0x14a26
- db $01
- dw TileListData_14a59
-
-TileListData_14a29: ; 0x14a29
- db $01
- dw TileListData_14a67
-
-TileListData_14a2c: ; 0x14a2c
- db $01
- dw TileListData_14a75
-
-TileListData_14a2f: ; 0x14a2f
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $a3
- db $4C, $4D
-
- db $02 ; number of tiles
- dw vBGMap + $c3
- db $4E, $4F
-
- db $00 ; terminator
-
-TileListData_14a3d: ; 0x14a3d
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $a3
- db $50, $51
-
- db $02 ; number of tiles
- dw vBGMap + $c3
- db $52, $53
-
- db $00 ; terminator
-
-TileListData_14a4b: ; 0x14a4b
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $a3
- db $54, $80
-
- db $02 ; number of tiles
- dw vBGMap + $c3
- db $55, $80
-
- db $00 ; terminator
-
-TileListData_14a59: ; 0x14a59
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $af
- db $56, $57
-
- db $02 ; number of tiles
- dw vBGMap + $cf
- db $58, $59
-
- db $00 ; terminator
-
-TileListData_14a67: ; 0x14a67
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $af
- db $5a, $5b
-
- db $02 ; number of tiles
- dw vBGMap + $cf
- db $5c, $5d
-
- db $00 ; terminator
-
-TileListData_14a75: ; 0x14a75
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $af
- db $80, $5e
-
- db $02 ; number of tiles
- dw vBGMap + $cf
- db $80, $5f
-
- db $00 ; terminator
-
-TileListDataPointers_14a83:
- dw TileListData_14a8f
- dw TileListData_14a92
- dw TileListData_14a95
- dw TileListData_14a98
- dw TileListData_14a9b
- dw TileListData_14a9e
-
-TileListData_14a8f: ; 0x14a8f
- db $01
- dw TileListData_14aa1
-
-TileListData_14a92: ; 0x14a92
- db $01
- dw TileListData_14aaf
-
-TileListData_14a95: ; 0x14a95
- db $01
- dw TileListData_14abd
-
-TileListData_14a98: ; 0x14a98
- db $01
- dw TileListData_14acb
-
-TileListData_14a9b: ; 0x14a9b
- db $01
- dw TileListData_14ad9
-
-TileListData_14a9e: ; 0x14a9e
- db $01
- dw TileListData_14ae7
-
-TileListData_14aa1: ; 0x14aa1
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $a3
- db $54, $55
-
- db $02 ; number of tiles
- dw vBGMap + $c3
- db $56, $57
-
- db $00
-
-TileListData_14aaf: ; 0x14aaf
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $a3
- db $58, $59
-
- db $02 ; number of tiles
- dw vBGMap + $c3
- db $5A, $5B
-
- db $00 ; terminator
-
-TileListData_14abd: ; 0x14abd
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $a3
- db $5C, $80
-
- db $02 ; number of tiles
- dw vBGMap + $c3
- db $5D, $80
-
- db $00 ; terminator
-
-TileListData_14acb: ; 0x14acb
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $af
- db $55, $54
-
- db $02 ; number of tiles
- dw vBGMap + $cf
- db $57, $56
-
- db $00 ; terminator
-
-TileListData_14ad9: ; 0x14ad9
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $af
- db $59, $58
-
- db $02 ; number of tiles
- dw vBGMap + $cf
- db $5B, $5A
-
- db $00 ; terminator
-
-TileListData_14ae7: ; 0x14ae7
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $af
- db $80, $5C
-
- db $02 ; number of tiles
- dw vBGMap + $cf
- db $80, $5D
-
- db $00 ; terminator
-
-Data_14af5: ; 0x14af5
- dw Data_14b05
- dw Data_14b0e
- dw Data_14b17
- dw Data_14b20
- dw Data_14b29
- dw Data_14b32
- dw Data_14b3b
- dw Data_14b44
-
-Data_14b05: ; 0x14b05
- db $04
- dw Data_14b4d
- dw Data_14b57
- dw Data_14b61
- dw Data_14b6b
-
-Data_14b0e: ; 0x14b0e
- db $04
- dw Data_14b75
- dw Data_14b7f
- dw Data_14b89
- dw Data_14b93
-
-Data_14b17: ; 0x14b17
- db $04
- dw Data_14b9d
- dw Data_14ba7
- dw Data_14bb1
- dw Data_14bbb
-
-Data_14b20: ; 0x14b20
- db $04
- dw Data_14bc5
- dw Data_14bcf
- dw Data_14bd9
- dw Data_14be3
-
-Data_14b29: ; 0x14b29
- db $04
- dw Data_14bed
- dw Data_14bf7
- dw Data_14c01
- dw Data_14c0b
-
-Data_14b32: ; 0x14b32
- db $04
- dw Data_14c15
- dw Data_14c1f
- dw Data_14c29
- dw Data_14c33
-
-Data_14b3b: ; 0x14b3b
- db $04
- dw Data_14c3d
- dw Data_14c47
- dw Data_14c51
- dw Data_14c5b
-
-Data_14b44: ; 0x14b44
- db $04
- dw Data_14c65
- dw Data_14c6f
- dw Data_14c79
- dw Data_14c83
-
-Data_14b4d: ; 0x14b4d
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $26
- dw StageRedFieldBottomBaseGameBoyGfx + $a60
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14b57: ; 0x14b57
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $29
- dw StageRedFieldBottomBaseGameBoyGfx + $a90
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14b61: ; 0x14b61
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $2C
- dw StageRedFieldBottomBaseGameBoyGfx + $ac0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14b6b: ; 0x14b6b
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $2F
- dw StageRedFieldBottomBaseGameBoyGfx + $af0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14b75: ; 0x14b75
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $26
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $720
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14b7f: ; 0x14b7f
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $29
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $750
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14b89: ; 0x14b89
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $2C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $780
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14b93: ; 0x14b93
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $2F
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14b9d: ; 0x14b9d
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $26
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14ba7: ; 0x14ba7
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $29
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7F0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14bb1: ; 0x14bb1
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $2C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $820
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14bbb: ; 0x14bbb
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $2F
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $850
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14bc5: ; 0x14bc5
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $26
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $860
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14bcf: ; 0x14bcf
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $29
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $890
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14bd9: ; 0x14bd9
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $2C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14be3: ; 0x14be3
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $2F
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8F0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14bed: ; 0x14bed
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $30
- dw StageRedFieldBottomBaseGameBoyGfx + $B00
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14bf7: ; 0x14bf7
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $33
- dw StageRedFieldBottomBaseGameBoyGfx + $B30
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14c01: ; 0x14c01
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $36
- dw StageRedFieldBottomBaseGameBoyGfx + $B60
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14c0b: ; 0x14c0b
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $39
- dw StageRedFieldBottomBaseGameBoyGfx + $B90
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00 ; terminator
-
-Data_14c15: ; 0x14c15
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $30
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $900
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c1f: ; 0x14c1f
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $33
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $930
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c29: ; 0x14c29
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $36
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $960
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c33: ; 0x14c33
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $39
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $990
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c3d: ; 0x14c3d
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $30
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c47: ; 0x14c47
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $33
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9D0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c51: ; 0x14c51
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $36
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c5b: ; 0x14c5b
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $39
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A30
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c65: ; 0x14c65
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $30
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c6f: ; 0x14c6f
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $33
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A70
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c79: ; 0x14c79
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $36
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-Data_14c83: ; 0x14c83
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $39
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AD0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileListDataPointers_14c8d:
- dw Data_14c9d
- dw Data_14ca0
- dw Data_14ca3
- dw Data_14ca6
- dw Data_14ca9
- dw Data_14cac
- dw Data_14caf
- dw Data_14cb2
-
-Data_14c9d: ; 0x14c9d
- db $01
- dw TileListData_14cb5
-
-Data_14ca0: ; 0x14ca0
- db $01
- dw TileListData_14ccf
-
-Data_14ca3: ; 0x14ca3
- db $01
- dw TileListData_14ce9
-
-Data_14ca6: ; 0x14ca6
- db $01
- dw TileListData_14d03
-
-Data_14ca9: ; 0x14ca9
- db $01
- dw TileListData_14d1d
-
-Data_14cac: ; 0x14cac
- db $01
- dw TileListData_14d37
-
-Data_14caf: ; 0x14caf
- db $01
- dw TileListData_14d51
-
-Data_14cb2: ; 0x14cb2
- db $01
- dw TileListData_14d6b
-
-TileListData_14cb5: ; 0x14cb5
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $80
- db $06, $07
-
- db $03 ; number of tiles
- dw vBGMap + $a0
- db $08, $09, $0A
-
- db $03 ; number of tiles
- dw vBGMap + $c0
- db $0B, $0C, $0D
-
- db $02 ; number of tiles
- dw vBGMap + $e0
- db $0E, $0F
-
- db $00 ; terminator
-
-TileListData_14ccf: ; 0x14ccf
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $80
- db $06, $07
-
- db $03 ; number of tiles
- dw vBGMap + $a0
- db $10, $11, $0A
-
- db $03 ; number of tiles
- dw vBGMap + $c0
- db $12, $13, $0D
-
- db $02 ; number of tiles
- dw vBGMap + $e0
- db $14, $15
-
- db $00 ; terminator
-
-TileListData_14ce9: ; 0x14ce9
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $80
- db $06, $07
-
- db $03 ; number of tiles
- dw vBGMap + $a0
- db $10, $16, $17
-
- db $03 ; number of tiles
- dw vBGMap + $c0
- db $12, $18, $19
-
- db $02 ; number of tiles
- dw vBGMap + $e0
- db $14, $15
-
- db $00 ; terminator
-
-TileListData_14d03: ; 0x14d03
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $80
- db $1A, $1B
-
- db $03 ; number of tiles
- dw vBGMap + $a0
- db $1C, $1D, $17
-
- db $03 ; number of tiles
- dw vBGMap + $c0
- db $12, $18, $19
-
- db $02 ; number of tiles
- dw vBGMap + $e0
- db $14, $15
-
- db $00 ; terminator
-
-TileListData_14d1d: ; 014d1d
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $92
- db $07, $06
-
- db $03 ; number of tiles
- dw vBGMap + $b1
- db $0A, $1E, $08
-
- db $03 ; number of tiles
- dw vBGMap + $d1
- db $22, $0C, $24
-
- db $02 ; number of tiles
- dw vBGMap + $f2
- db $0F, $0E
-
- db $00 ; terminator
-
-TileListData_14d37: ; 0x14d37
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $92
- db $07, $06
-
- db $03 ; number of tiles
- dw vBGMap + $b1
- db $0A, $1F, $10
-
- db $03 ; number of tiles
- dw vBGMap + $d1
- db $22, $13, $25
-
- db $02 ; number of tiles
- dw vBGMap + $f2
- db $15, $14
-
- db $00 ; terminator
-
-TileListData_14d51: ; 0x14d51
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $92
- db $07, $06
-
- db $03 ; number of tiles
- dw vBGMap + $b1
- db $17, $20, $10
-
- db $03 ; number of tiles
- dw vBGMap + $d1
- db $23, $18, $25
-
- db $02 ; number of tiles
- dw vBGMap + $f2
- db $15, $14
-
- db $00 ; terminator
-
-TileListData_14d6b: ; 0x14d6b
- dw LoadTileLists
- db $0A ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $92
- db $1B, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $b1
- db $17, $21, $1C
-
- db $03 ; number of tiles
- dw vBGMap + $d1
- db $23, $18, $25
-
- db $02 ; number of tiles
- dw vBGMap + $f2
- db $15, $14
-
- db $00 ; terminator
-
-ResolveVoltorbCollision: ; 0x14d85
- ld a, [wWhichVoltorb]
- and a
- jr z, .noVoltorbCollision
- xor a
- ld [wWhichVoltorb], a
- call Func_14dc9
- ld a, $10
- ld [wd4d6], a
- ld a, [wWhichVoltorbId]
- sub $3
- ld [wd4d7], a
- ld a, $4
- callba Func_10000
- ld bc, FiveHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ret
-
-.noVoltorbCollision
- ld a, [wd4d6]
- and a
- ret z
- dec a
- ld [wd4d6], a
- ret nz
- ld a, $ff
- ld [wd4d7], a
- ret
-
-Func_14dc9: ; 0x14dc9
- ld a, $ff
- ld [wd803], a
- ld a, $3
- ld [wd804], a
- ld hl, $0200
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- lb de, $00, $0e
- call PlaySoundEffect
- ret
-
-ResolveRedStageSpinnerCollision: ; 0x14dea
- ld a, [wSpinnerCollision]
- and a
- jr z, Func_14e10
- xor a
- ld [wSpinnerCollision], a
- ld a, [wBallYVelocity]
- ld c, a
- ld a, [wBallYVelocity + 1]
- ld b, a
- ld a, c
- ld [wd50b], a
- ld a, b
- ld [wd50c], a
- ld a, $c
- callba Func_10000
- ; fall through
-Func_14e10: ; 0x14e10
- ld hl, wd50b
- ld a, [hli]
- or [hl]
- ret z
- ld a, [wd50b]
- ld c, a
- ld a, [wd50c]
- ld b, a
- bit 7, b
- jr nz, .asm_14e2e
- ld a, c
- sub $7
- ld c, a
- ld a, b
- sbc $0
- ld b, a
- jr nc, .asm_14e3b
- jr .asm_14e38
-
-.asm_14e2e
- ld a, c
- add $7
- ld c, a
- ld a, b
- adc $0
- ld b, a
- jr nc, .asm_14e3b
-.asm_14e38
- ld bc, $0000
-.asm_14e3b
- ld a, c
- ld [wd50b], a
- ld a, b
- ld [wd50c], a
- ld hl, wd50b
- ld a, [wd509]
- add [hl]
- ld [wd509], a
- inc hl
- ld a, [wd50a]
- adc [hl]
- bit 7, a
- ld c, $0
- jr z, .asm_14e5e
- add $18
- ld c, $1
- jr .asm_14e66
-
-.asm_14e5e
- cp $18
- jr c, .asm_14e66
- sub $18
- ld c, $1
-.asm_14e66
- ld [wd50a], a
- ld a, c
- and a
- ret z
- ld bc, TenPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd62d
- call Func_e4a
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- jr nz, .asm_14e8a
- call Func_14ea7
- ret
-
-.asm_14e8a
- inc a
- ld [wPikachuSaverCharge], a
- call Func_14ea7
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- jr nz, .asm_14e9d
- ld a, $64
- ld [wd51e], a
-.asm_14e9d
- ld a, [wCurrentStage]
- bit 0, a
- ret nz
- call Func_14ece
- ret
-
-Func_14ea7: ; 0x14ea7
- ld a, [wd51e]
- and a
- ret nz
- ld a, [wPikachuSaverCharge]
- ld c, a
- ld b, $0
- ld hl, SoundEffects_14ebe
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- call PlaySoundEffect
- ret
-
-SoundEffects_14ebe:
- db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
-
-Func_14ece: ; 0x14ece
- ld a, [wPikachuSaverCharge]
- ld c, a
- sla c
- ld b, $0
- ld hl, TileDataPointers_14eeb
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_14ee1
- ld hl, TileDataPointers_1509b
-.asm_14ee1
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, BANK(TileDataPointers_14eeb)
- call Func_10aa
- ret
-
-TileDataPointers_14eeb:
- dw TileData_14f0b
- dw TileData_14f10
- dw TileData_14f15
- dw TileData_14f1a
- dw TileData_14f1f
- dw TileData_14f24
- dw TileData_14f29
- dw TileData_14f2e
- dw TileData_14f33
- dw TileData_14f38
- dw TileData_14f3d
- dw TileData_14f42
- dw TileData_14f47
- dw TileData_14f4c
- dw TileData_14f51
- dw TileData_14f56
-
-TileData_14f0b: ; 0x14f0b
- db $02
- dw TileData_14f5b
- dw TileData_14f65
-
-TileData_14f10: ; 0x14f10
- db $02
- dw TileData_14f6f
- dw TileData_14f79
-
-TileData_14f15: ; 0x14f15
- db $02
- dw TileData_14f83
- dw TileData_14f8d
-
-TileData_14f1a: ; 0x14f1a
- db $02
- dw TileData_14f97
- dw TileData_14fa1
-
-TileData_14f1f: ; 0x14f1f
- db $02
- dw TileData_14fab
- dw TileData_14fb5
-
-TileData_14f24: ; 0x14f24
- db $02
- dw TileData_14fbf
- dw TileData_14fc9
-
-TileData_14f29: ; 0x14f29
- db $02
- dw TileData_14fd3
- dw TileData_14fdd
-
-TileData_14f2e: ; 0x14f2e
- db $02
- dw TileData_14fe7
- dw TileData_14ff1
-
-TileData_14f33: ; 0x14f33
- db $02
- dw TileData_14ffb
- dw TileData_15005
-
-TileData_14f38: ; 0x14f38
- db $02
- dw TileData_1500f
- dw TileData_15019
-
-TileData_14f3d: ; 0x14f3d
- db $02
- dw TileData_15023
- dw TileData_1502d
-
-TileData_14f42: ; 0x14f42
- db $02
- dw TileData_15037
- dw TileData_15041
-
-TileData_14f47: ; 0x14f47
- db $02
- dw TileData_1504b
- dw TileData_15055
-
-TileData_14f4c: ; 0x14f4c
- db $02
- dw TileData_1505f
- dw TileData_15069
-
-TileData_14f51: ; 0x14f51
- db $02
- dw TileData_15073
- dw TileData_1507d
-
-TileData_14f56: ; 0x14f56
- db $02
- dw TileData_15087
- dw TileData_15091
-
-TileData_14f5b: ; 0x14f5b
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldTopBaseGameBoyGfx + $cb0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00 ; terminator
-
-TileData_14f65: ; 0x14f65
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldTopBaseGameBoyGfx + $cd0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00 ; terminator
-
-TileData_14f6f: ; 0x14f6f
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AE0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14f79: ; 0x14f79
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14f83: ; 0x14f83
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14f8d: ; 0x14f8d
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14f97: ; 0x14f97
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fa1: ; 0x14fa1
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fab: ; 0x14fab
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fb5: ; 0x14fb5
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BC0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fbf: ; 0x14fbf
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BE0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fc9: ; 0x14fc9
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fd3: ; 0x14fd3
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fdd: ; 0x14fdd
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14fe7: ; 0x14fe7
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14ff1: ; 0x14ff1
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_14ffb: ; 0x14ffb
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15005: ; 0x15005
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CC0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1500f: ; 0x1500f
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CE0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15019: ; 0x15019
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15023: ; 0x15023
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1502d: ; 0x1502d
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15037: ; 0x15037
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15041: ; 0x15041
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1504b: ; 0x1504b
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15055: ; 0x15055
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DC0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1505f: ; 0x1505f
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DE0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15069: ; 0x15069
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15073: ; 0x15073
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1507d: ; 0x1507d
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15087: ; 0x15087
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $75
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_15091: ; 0x15091
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $77
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileDataPointers_1509b:
- dw TileData_150bb
- dw TileData_150be
- dw TileData_150c1
- dw TileData_150c4
- dw TileData_150c7
- dw TileData_150ca
- dw TileData_150cd
- dw TileData_150d0
- dw TileData_150d3
- dw TileData_150d6
- dw TileData_150d9
- dw TileData_150dc
- dw TileData_150df
- dw TileData_150e2
- dw TileData_150e5
- dw TileData_150e8
-
-TileData_150bb: ; 0x150bb
- db $01
- dw TileData_150eb
-
-TileData_150be: ; 0x150be
- db $01
- dw TileData_150f9
-
-TileData_150c1: ; 0x150c1
- db $01
- dw TileData_15107
-
-TileData_150c4: ; 0x150c4
- db $01
- dw TileData_15115
-
-TileData_150c7: ; 0x150c7
- db $01
- dw TileData_15123
-
-TileData_150ca: ; 0x150ca
- db $01
- dw TileData_15131
-
-TileData_150cd: ; 0x150cd
- db $01
- dw TileData_1513f
-
-TileData_150d0: ; 0x150d0
- db $01
- dw TileData_1514d
-
-TileData_150d3: ; 0x150d3
- db $01
- dw TileData_1515b
-
-TileData_150d6: ; 0x150d6
- db $01
- dw TileData_15169
-
-TileData_150d9: ; 0x150d9
- db $01
- dw TileData_15177
-
-TileData_150dc: ; 0x150dc
- db $01
- dw TileData_15185
-
-TileData_150df: ; 0x150df
- db $01
- dw TileData_15193
-
-TileData_150e2: ; 0x150e2
- db $01
- dw TileData_151a1
-
-TileData_150e5: ; 0x150e5
- db $01
- dw TileData_151af
-
-TileData_150e8: ; 0x150e8
- db $01
- dw TileData_151bd
-
-TileData_150eb: ; 0x150eb
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $5E, $5F
-
- db $00 ; terminator
-
-TileData_150f9: ; 0x150f9
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $60, $61
-
- db $00 ; terminator
-
-TileData_15107: ; 0x15107
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $62, $63
-
- db $00 ; terminator
-
-TileData_15115: ; 0x15115
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $64, $65
-
- db $00 ; terminator
-
-TileData_15123: ; 0x15123
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $66, $67
-
- db $00 ; terminator
-
-TileData_15131: ; 0x15131
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $68, $69
-
- db $00 ; terminator
-
-TileData_1513f: ; 0x1513f
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $6A, $6B
-
- db $00 ; terminator
-
-TileData_1514d: ; 0x1514d
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $6C, $6D
-
- db $00 ; terminator
-
-TileData_1515b: ; 0x1515b
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $5C, $5D
-
- db $02 ; number of tiles
- dw $992E
- db $6E, $6F
-
- db $00 ; terminator
-
-TileData_15169: ; 0x15169
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $70, $71
-
- db $02 ; number of tiles
- dw $992E
- db $6E, $6F
-
- db $00 ; terminator
-
-TileData_15177: ; 0x15177
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $72, $73
-
- db $02 ; number of tiles
- dw $992E
- db $6E, $6F
-
- db $00 ; terminator
-
-TileData_15185: ; 0x15185
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $74, $75
-
- db $02 ; number of tiles
- dw $992E
- db $6E, $6F
-
- db $00 ; terminator
-
-TileData_15193: ; 0x15193
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $76, $77
-
- db $02 ; number of tiles
- dw $992E
- db $6E, $6F
-
- db $00 ; terminator
-
-TileData_151a1: ; 0x151a1
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $78, $79
-
- db $02 ; number of tiles
- dw $992E
- db $6E, $6F
-
- db $00 ; terminator
-
-TileData_151af: ; 0x151af
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $7A, $7B
-
- db $02 ; number of tiles
- dw $992E
- db $6E, $6F
-
- db $00 ; terminator
-
-TileData_151bd: ; 0x151bd
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $990E
- db $7C, $7D
-
- db $02 ; number of tiles
- dw $992E
- db $7E, $7F
-
- db $00 ; terminator
-
-Func_151cb: ; 0x151cb
- ld a, [wWhichCAVELight]
- and a
- jr z, .asm_15229
- xor a
- ld [wWhichCAVELight], a
- ld a, [wd513]
- and a
- jr nz, .asm_15229
- ld a, [wWhichCAVELightId]
- sub $a
- ld c, a
- ld b, $0
- ld hl, wd50f
- add hl, bc
- ld a, [hl]
- ld [hl], $1
- and a
- ret nz
- ld bc, OneHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd50f
- ld a, [hli]
- and [hl]
- inc hl
- and [hl]
- inc hl
- and [hl]
- jr z, Func_asm_1522d
- ld a, $1
- ld [wd513], a
- ld a, $80
- ld [wd514], a
- ld bc, FourHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $09
- call PlaySoundEffect
- ld hl, wd62c
- call Func_e4a
- jr Func_asm_1522d
-
-.asm_15229
- call Func_15270
- ret z
- ; fall through
-
-Func_asm_1522d: ; 0x1522d
- ld hl, wd512
- ld b, $4
-.asm_15232
- ld a, [hld]
- push hl
- call Func_1523c
- pop hl
- dec b
- jr nz, .asm_15232
- ret
-
-Func_1523c: ; 0x1523c
- and a
- jr z, .asm_1524e
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_15249
- ld hl, TileDataPointers_152dd
- jr .asm_1525b
-
-.asm_15249
- ld hl, TileDataPointers_1531d
- jr .asm_1525b
-
-.asm_1524e
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_15258
- ld hl, TileDataPointers_152e5
- jr .asm_1525b
-
-.asm_15258
- ld hl, TileDataPointers_15325
-.asm_1525b
- push bc
- dec b
- sla b
- ld e, b
- ld d, $0
- add hl, de
- ld c, [hl]
- inc hl
- ld b, [hl]
- ld a, $5
- ld de, LoadTileLists
- call Func_10c5
- pop bc
- ret
-
-Func_15270: ; 0x15270
- ld a, [wd513]
- and a
- jr z, .asm_152a6
- ld a, [wd514]
- dec a
- ld [wd514], a
- jr nz, .asm_1528d
- ld [wd513], a
- ld a, $1
- ld [wd608], a
- ld a, $3
- ld [wd607], a
- xor a
-.asm_1528d
- and $7
- ret nz
- ld a, [wd514]
- srl a
- srl a
- srl a
- and $1
- ld hl, wd50f
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld a, $1
- and a
- ret
-
-.asm_152a6
- ld hl, wKeyConfigLeftFlipper
- call IsKeyPressed
- jr z, .asm_152c2
- ld hl, wd50f
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hli]
- ld e, a
- ld a, [hl]
- ld d, a
- ld a, c
- ld [hld], a
- ld a, d
- ld [hld], a
- ld a, e
- ld [hld], a
- ld a, b
- ld [hl], a
- ret
-
-.asm_152c2
- ld hl, wKeyConfigRightFlipper
- call IsKeyPressed
- ret z
- ld hl, wd50f
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hli]
- ld e, a
- ld a, [hl]
- ld d, a
- ld a, e
- ld [hld], a
- ld a, b
- ld [hld], a
- ld a, c
- ld [hld], a
- ld a, d
- ld [hl], a
- ret
-
-TileDataPointers_152dd:
- dw TileData_152ed
- dw TileData_152f3
- dw TileData_152f9
- dw TileData_152ff
-
-TileDataPointers_152e5:
- dw TileData_15305
- dw TileData_1530b
- dw TileData_15311
- dw TileData_15317
-
-TileData_152ed: ; 0x152ed
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $7d
-
- db $00 ; terminator
-
-TileData_152f3: ; 0x152f3
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $7d
-
- db $00 ; terminator
-
-TileData_152f9: ; 0x152f9
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $7f
-
- db $00 ; terminator
-
-TileData_152ff: ; 0x152ff
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $7f
-
- db $00 ; terminator
-
-TileData_15305: ; 0x15305
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $7c
-
- db $00 ; terminator
-
-TileData_1530b: ; 0x1530b
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $7c
-
- db $00 ; terminator
-
-TileData_15311: ; 0x15311
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $7e
-
- db $00 ; terminator
-
-TileData_15317: ; 0x15317
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $7e
-
- db $00 ; terminator
-
-TileDataPointers_1531d:
- dw TileData_1532d
- dw TileData_15333
- dw TileData_15339
- dw TileData_1533f
-
-TileDataPointers_15325:
- dw TileData_15345
- dw TileData_1534b
- dw TileData_15351
- dw TileData_15357
-
-TileData_1532d: ; 0x1532d
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $27
-
- db $00 ; terminator
-
-TileData_15333: ; 0x15333
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $29
-
- db $00 ; terminator
-
-TileData_15339: ; 0x15339
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $7E
-
- db $00 ; terminator
-
-TileData_1533f: ; 0x1533f
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $7F
-
- db $00 ; terminator
-
-TileData_15345: ; 0x15345
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $26
-
- db $00 ; terminator
-
-TileData_1534b: ; 0x1534b
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $28
-
- db $00 ; terminator
-
-TileData_15351: ; 0x15351
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $7C
-
- db $00 ; terminator
-
-TileData_15357: ; 0x15357
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $7D
-
- db $00 ; terminator
-
-ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d
- ld a, [wWhichPinballUpgradeTrigger]
- and a
- jp z, .asm_1544c
- xor a
- ld [wWhichPinballUpgradeTrigger], a
- ld a, [wStageCollisionState]
- bit 0, a
- jp z, .asm_1544c
- ld a, [wd5fc]
- and a
- jp nz, .asm_1544c
- xor a
- ld [wRightAlleyTrigger], a
- ld [wLeftAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- call Func_159c9
- ld a, $b
- callba Func_10000
- ld a, [wWhichPinballUpgradeTriggerId]
- sub $e
- ld c, a
- ld b, $0
- ld hl, wd5f9
- add hl, bc
- ld a, [hl]
- ld [hl], $1
- and a
- ret nz
- ld bc, OneHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd5f9
- ld a, [hli]
- and [hl]
- inc hl
- and [hl]
- jr nz, .asm_153c0
- lb de, $00, $09
- call PlaySoundEffect
- jp Func_15450
-
-.asm_153c0
- ld a, $1
- ld [wd5fc], a
- ld a, $80
- ld [wd5fd], a
- ; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
- ld [wBallTypeCounter], a
- ld a, $e
- ld [wBallTypeCounter + 1], a
- ld bc, FourHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wBallType]
- cp MASTER_BALL
- jr z, .masterBall
- lb de, $06, $3a
- call PlaySoundEffect
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld de, FieldMultiplierText
- ld hl, wd5cc
- call LoadTextHeader
- ld a, [wBallType]
- ld c, a
- ld b, $0
- ld hl, BallTypeProgressionRedField
- add hl, bc
- ld a, [hl]
- ld [wBallType], a
- add $30
- ld [wBottomMessageText + $12], a
- jr .asm_15447
-
-.masterBall
- lb de, $0f, $4d
- call PlaySoundEffect
- ld bc, OneMillionPoints
- callba AddBigBCD6FromQueue
- ld bc, $0100
- ld de, $0000
- push bc
- push de
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5d4
- ld de, DigitsText1to8
- call Func_32cc
- pop de
- pop bc
- ld hl, wd5cc
- ld de, FieldMultiplierSpecialBonusText
- call LoadTextHeader
-.asm_15447
- call TransitionPinballUpgrade
- jr Func_15450
-
-.asm_1544c
- call Func_154a9
- ret z
-
-Func_15450
- ld a, [wStageCollisionState]
- bit 0, a
- ret z
- ld hl, wd5fb
- ld b, $3
-.asm_1545b
- ld a, [hld]
- push hl
- call Func_15465
- pop hl
- dec b
- jr nz, .asm_1545b
- ret
-
-Func_15465: ; 0x15465
- and a
- jr z, .asm_15477
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_15472
- ld hl, TileDataPointers_15511
- jr .asm_15484
-
-.asm_15472
- ld hl, TileDataPointers_15543
- jr .asm_15484
-
-.asm_15477
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_15481
- ld hl, TileDataPointers_15517
- jr .asm_15484
-
-.asm_15481
- ld hl, TileDataPointers_15549
-.asm_15484
- push bc
- dec b
- sla b
- ld e, b
- ld d, $0
- add hl, de
- ld c, [hl]
- inc hl
- ld b, [hl]
- ld a, $5
- ld de, LoadTileLists
- call Func_10c5
- pop bc
- ret
-
-Func_15499: ; 0x15499
- ld a, [hGameBoyColorFlag]
- and a
- ret nz
- ld b, $3
-.asm_1549f
- push hl
- xor a
- call Func_15465
- pop hl
- dec b
- jr nz, .asm_1549f
- ret
-
-Func_154a9: ; 0x154a9
- ld a, [wd5fc]
- and a
- jr z, .asm_154d6
- ld a, [wd5fd]
- dec a
- ld [wd5fd], a
- jr nz, .asm_154bb
- ld [wd5fc], a
-.asm_154bb
- and $7
- jr nz, .asm_154d4
- ld a, [wd5fd]
- srl a
- srl a
- srl a
- and $1
- ld hl, wd5f9
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld a, $1
- and a
- ret
-
-.asm_154d4
- xor a
- ret
-
-.asm_154d6
- ld hl, wKeyConfigLeftFlipper
- call IsKeyPressed
- jr z, .asm_154ee
- ld hl, wd5f9
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld e, a
- ld a, c
- ld [hld], a
- ld a, e
- ld [hld], a
- ld a, b
- ld [hl], a
- ret
-
-.asm_154ee
- ld hl, wKeyConfigRightFlipper
- call IsKeyPressed
- ret z
- ld hl, wd5f9
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld e, a
- ld a, b
- ld [hld], a
- ld a, c
- ld [hld], a
- ld a, e
- ld [hl], a
- ret
-
-BallTypeProgressionRedField: ; 0x15505
-; Determines the next upgrade for the Ball.
- db GREAT_BALL ; POKE_BALL -> GREAT_BALL
- db GREAT_BALL ; unused
- db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
- db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
- db MASTER_BALL ; unused
- db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
-
-BallTypeDegradationRedField: ; 0x1550b
-; Determines the previous upgrade for the Ball.
- db POKE_BALL ; POKE_BALL -> POKE_BALL
- db POKE_BALL ; unused
- db POKE_BALL ; GREAT_BALL -> POKE_BALL
- db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
- db ULTRA_BALL ; unused
- db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
-
-TileDataPointers_15511:
- dw TileData_1551d
- dw TileData_15523
- dw TileData_1552a
-
-TileDataPointers_15517:
- dw TileData_15530
- dw TileData_15536
- dw TileData_1553d
-
-TileData_1551d: ; 0x1551d
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $E7
- db $ac
-
- db $00 ; terminator
-
-TileData_15523: ; 0x15523
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $C9
- db $ad, $ae
-
- db $00 ; terminator
-
-TileData_1552a: ; 0x1552a
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $CC
- db $af
-
- db $00 ; terminator
-
-TileData_15530: ; 0x15530
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $E7
- db $66
-
- db $00 ; terminator
-
-TileData_15536: ; 0x15536
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $C9
- db $68, $69
-
- db $00 ; terminator
-
-TileData_1553d: ; 0x1553d
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $CC
- db $6a
-
- db $00 ; terminator
-
-TileDataPointers_15543:
- dw TileData_1554f
- dw TileData_15555
- dw TileData_1555c
-
-TileDataPointers_15549:
- dw TileData_15562
- dw TileData_15568
- dw TileData_1556F
-
-TileData_1554f: ; 0x1554f
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $e7
- db $3D
-
- db $00 ; terminator
-
-TileData_15555: ; 0x15555
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $c9
- db $3F, $40
-
- db $00 ; terminator
-
-TileData_1555c: ; 0x1555c
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $cc
- db $41
-
- db $00 ; terminator
-
-TileData_15562: ; 0x15562
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $e7
- db $37
-
- db $00 ; terminator
-
-TileData_15568: ; 0x15568
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $c9
- db $39, $3a
-
- db $00 ; terminator
-
-TileData_1556F: ; 0x1556F
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $cc
- db $3B
-
- db $00 ; terminator
-
-HandleRedStageBallTypeUpgradeCounter: ; 0x15575
- ld a, [wCapturingMon]
- and a
- ret nz
- ld hl, wBallTypeCounter
- ld a, [hli]
- ld c, a
- ld b, [hl]
- or b
- ret z
- dec bc
- ld a, b
- ld [hld], a
- ld [hl], c
- or c
- ret nz
- ; counter is now 0! Degrade the ball upgrade.
- ld a, [wBallType]
- ld c, a
- ld b, $0
- ld hl, BallTypeDegradationRedField
- add hl, bc
- ld a, [hl]
- ld [wBallType], a
- and a
- jr z, .pokeball
- ; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
- ld [wBallTypeCounter], a
- ld a, $e
- ld [wBallTypeCounter + 1], a
-.pokeball
- call TransitionPinballUpgrade
- ret
-
-TransitionPinballUpgrade: ; 0x155a7
- ld a, [wBallType]
- ld c, a
- sla c
- ld b, $0
- ld hl, PinballUpgradeTransitionPointers
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(PinballUpgradeTransitionPointers)
- call Func_10aa
- ; fall through
-
-Func_155bb: ; 0x155bb
- ld a, [hGameBoyColorFlag]
- and a
- ret z
- ; gameboy color
- ld a, [wBallType]
- sla a
- ld c, a
- ld b, $0
- ld hl, Data_157f7
- add hl, bc
- ld c, [hl]
- inc hl
- ld b, [hl]
- ld a, BANK(Data_157f7)
- ld de, LoadPalettes
- call Func_10c5
- ret
-
-PinballUpgradeTransitionPointers:
- dw TransitionToPokeBallPointers ; POKE_BALL
- dw TransitionToPokeBallPointers ; POKE_BALL
- dw TransitionToGreatBallPointers ; GREAT_BALL
- dw TransitionToUltraBallPointers ; ULTRA_BALL
- dw TransitionToUltraBallPointers ; ULTRA_BALL
- dw TransitionToMasterBallPointers ; MASTER_BALL
-
-TransitionToPokeBallPointers:
- db 11
- dw TransitionToPokeBall_TileData_1
- dw TransitionToPokeBall_TileData_2
- dw TransitionToPokeBall_TileData_3
- dw TransitionToPokeBall_TileData_4
- dw TransitionToPokeBall_TileData_5
- dw TransitionToPokeBall_TileData_6
- dw TransitionToPokeBall_TileData_7
- dw TransitionToPokeBall_TileData_8
- dw TransitionToPokeBall_TileData_9
- dw TransitionToPokeBall_TileData_10
- dw TransitionToPokeBall_TileData_11
-
-TransitionToGreatBallPointers:
- db 11
- dw TransitionToGreatBall_TileData_1
- dw TransitionToGreatBall_TileData_2
- dw TransitionToGreatBall_TileData_3
- dw TransitionToGreatBall_TileData_4
- dw TransitionToGreatBall_TileData_5
- dw TransitionToGreatBall_TileData_6
- dw TransitionToGreatBall_TileData_7
- dw TransitionToGreatBall_TileData_8
- dw TransitionToGreatBall_TileData_9
- dw TransitionToGreatBall_TileData_10
- dw TransitionToGreatBall_TileData_11
-
-TransitionToUltraBallPointers:
- db 11
- dw TransitionToUltraBall_TileData_1
- dw TransitionToUltraBall_TileData_2
- dw TransitionToUltraBall_TileData_3
- dw TransitionToUltraBall_TileData_4
- dw TransitionToUltraBall_TileData_5
- dw TransitionToUltraBall_TileData_6
- dw TransitionToUltraBall_TileData_7
- dw TransitionToUltraBall_TileData_8
- dw TransitionToUltraBall_TileData_9
- dw TransitionToUltraBall_TileData_10
- dw TransitionToUltraBall_TileData_11
-
-TransitionToMasterBallPointers:
- db 11
- dw TransitionToMasterBall_TileData_1
- dw TransitionToMasterBall_TileData_2
- dw TransitionToMasterBall_TileData_3
- dw TransitionToMasterBall_TileData_4
- dw TransitionToMasterBall_TileData_5
- dw TransitionToMasterBall_TileData_6
- dw TransitionToMasterBall_TileData_7
- dw TransitionToMasterBall_TileData_8
- dw TransitionToMasterBall_TileData_9
- dw TransitionToMasterBall_TileData_10
- dw TransitionToMasterBall_TileData_11
-
-TransitionToPokeBall_TileData_1:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $40)
- dw PinballPokeballGfx + $0
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_2:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $43)
- dw PinballPokeballGfx + $30
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_3:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $46)
- dw PinballPokeballGfx + $60
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_4:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $49)
- dw PinballPokeballGfx + $90
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_5:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4c)
- dw PinballPokeballGfx + $c0
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_6:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4f)
- dw PinballPokeballGfx + $f0
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_7:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $52)
- dw PinballPokeballGfx + $120
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_8:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $55)
- dw PinballPokeballGfx + $150
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_9:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $58)
- dw PinballPokeballGfx + $180
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_10:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $5b)
- dw PinballPokeballGfx + $1b0
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToPokeBall_TileData_11:
- dw Func_11d2
- db $20, $02
- dw (vTilesOB tile $5e)
- dw PinballPokeballGfx + $1e0
- db Bank(PinballPokeballGfx)
- db $00
-
-TransitionToGreatBall_TileData_1:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $40)
- dw PinballGreatballGfx + $0
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_2:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $43)
- dw PinballGreatballGfx + $30
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_3:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $46)
- dw PinballGreatballGfx + $60
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_4:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $49)
- dw PinballGreatballGfx + $90
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_5:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4c)
- dw PinballGreatballGfx + $c0
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_6:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4f)
- dw PinballGreatballGfx + $f0
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_7:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $52)
- dw PinballGreatballGfx + $120
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_8:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $55)
- dw PinballGreatballGfx + $150
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_9:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $58)
- dw PinballGreatballGfx + $180
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_10:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $5b)
- dw PinballGreatballGfx + $1b0
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToGreatBall_TileData_11:
- dw Func_11d2
- db $20, $02
- dw (vTilesOB tile $5e)
- dw PinballGreatballGfx + $1e0
- db Bank(PinballGreatballGfx)
- db $00
-
-TransitionToUltraBall_TileData_1:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $40)
- dw PinballUltraballGfx + $0
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_2:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $43)
- dw PinballUltraballGfx + $30
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_3:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $46)
- dw PinballUltraballGfx + $60
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_4:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $49)
- dw PinballUltraballGfx + $90
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_5:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4c)
- dw PinballUltraballGfx + $c0
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_6:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4f)
- dw PinballUltraballGfx + $f0
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_7:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $52)
- dw PinballUltraballGfx + $120
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_8:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $55)
- dw PinballUltraballGfx + $150
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_9:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $58)
- dw PinballUltraballGfx + $180
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_10:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $5b)
- dw PinballUltraballGfx + $1b0
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToUltraBall_TileData_11:
- dw Func_11d2
- db $20, $02
- dw (vTilesOB tile $5e)
- dw PinballUltraballGfx + $1e0
- db Bank(PinballUltraballGfx)
- db $00
-
-TransitionToMasterBall_TileData_1:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $40)
- dw PinballMasterballGfx + $0
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_2:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $43)
- dw PinballMasterballGfx + $30
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_3:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $46)
- dw PinballMasterballGfx + $60
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_4:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $49)
- dw PinballMasterballGfx + $90
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_5:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4c)
- dw PinballMasterballGfx + $c0
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_6:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $4f)
- dw PinballMasterballGfx + $f0
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_7:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $52)
- dw PinballMasterballGfx + $120
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_8:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $55)
- dw PinballMasterballGfx + $150
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_9:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $58)
- dw PinballMasterballGfx + $180
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_10:
- dw Func_11d2
- db $30, $03
- dw (vTilesOB tile $5b)
- dw PinballMasterballGfx + $1b0
- db Bank(PinballMasterballGfx)
- db $00
-
-TransitionToMasterBall_TileData_11:
- dw Func_11d2
- db $20, $02
- dw (vTilesOB tile $5e)
- dw PinballMasterballGfx + $1e0
- db Bank(PinballMasterballGfx)
- db $00
-
-Data_157f7:
- dw Data_15803
- dw Data_15803
- dw Data_1580a
- dw Data_15811
- dw Data_15811
- dw Data_15818
-
-Data_15803:
- db $08, $04, $40, $68, $51, $37, $00
-Data_1580a:
- db $08, $04, $40, $70, $51, $37, $00
-Data_15811:
- db $08, $04, $40, $78, $51, $37, $00
-Data_15818:
- db $08, $04, $40, $80, $51, $37, $00
-
-ResolveRedStageBoardTriggerCollision: ; 0x1581f
- ld a, [wWhichBoardTrigger]
- and a
- ret z
- xor a
- ld [wWhichBoardTrigger], a
- ld bc, FivePoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wWhichBoardTriggerId]
- sub $11
- ld c, a
- ld b, $0
- ld hl, wd521
- add hl, bc
- ld [hl], $1
- ld a, [wd521]
- and a
- call nz, Func_1587c
- ld a, [wd522]
- and a
- call nz, Func_158c0
- ld a, [wd523]
- and a
- call nz, Func_15904
- ld a, [wd524]
- and a
- call nz, HandleLeftAlleyTriggerRedField
- ld a, [wd525]
- and a
- call nz, Func_15931
- ld a, [wd526]
- and a
- call nz, Func_15944
- ld a, [wd527]
- and a
- call nz, HandleRightAlleyTriggerRedField
- ld a, [wd528]
- and a
- call nz, Func_15990
- ret
-
-Func_1587c: ; 0x1587c
- xor a
- ld [wd521], a
- ld a, [wLeftAlleyTrigger]
- and a
- ret z
- xor a
- ld [wLeftAlleyTrigger], a
- ld a, $1
- callba Func_10000
- ret c
- ld a, [wLeftAlleyCount]
- cp $3
- ret z
- inc a
- ld [wLeftAlleyCount], a
- set 7, a
- ld [wIndicatorStates], a
- cp $83
- ret nz
- ld a, [wStageCollisionState]
- and $1
- or $6
- ld [wStageCollisionState], a
- callba LoadStageCollisionAttributes
- call Func_159f4
- ret
-
-Func_158c0: ; 0x158c0
- xor a
- ld [wd522], a
- ld a, [wLeftAlleyTrigger]
- and a
- ret z
- xor a
- ld [wLeftAlleyTrigger], a
- ld a, $1
- callba Func_10000
- ret c
- ld a, [wLeftAlleyCount]
- cp $3
- ret z
- inc a
- ld [wLeftAlleyCount], a
- set 7, a
- ld [wIndicatorStates], a
- cp $83
- ret nz
- ld a, [wStageCollisionState]
- and $1
- or $6
- ld [wStageCollisionState], a
- callba LoadStageCollisionAttributes
- call Func_159f4
- ret
-
-Func_15904: ; 0x15904
- xor a
- ld [wd523], a
- ld a, [wSecondaryLeftAlleyTrigger]
- and a
- ret z
- xor a
- ld [wSecondaryLeftAlleyTrigger], a
- ld a, $3
- callba Func_10000
- ret
-
-HandleLeftAlleyTriggerRedField: ; 0x1591e
-; Ball passed over the left alley trigger point in the Red Field.
- xor a
- ld [wd524], a
- ld [wRightAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- ld a, $1
- ld [wLeftAlleyTrigger], a
- call Func_159c9
- ret
-
-Func_15931: ; 0x15931
- xor a
- ld [wd525], a
- ld [wRightAlleyTrigger], a
- ld [wLeftAlleyTrigger], a
- ld a, $1
- ld [wSecondaryLeftAlleyTrigger], a
- call Func_159c9
- ret
-
-Func_15944: ; 0x15944
- xor a
- ld [wd526], a
- ld a, [wRightAlleyTrigger]
- and a
- ret z
- xor a
- ld [wRightAlleyTrigger], a
- ld a, $2
- callba Func_10000
- ret c
- ld a, [wRightAlleyCount]
- cp $3
- ret z
- inc a
- ld [wRightAlleyCount], a
- cp $3
- jr z, .asm_1596e
- set 7, a
-.asm_1596e
- ld [wIndicatorStates + 1], a
- ld a, [wRightAlleyCount]
- cp $2
- ret c
- ld a, $80
- ld [wIndicatorStates + 3], a
- ret
-
-HandleRightAlleyTriggerRedField: ; 0x1597d
-; Ball passed over the right alley trigger point in the Red Field.
- xor a
- ld [wd527], a
- ld [wLeftAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- ld a, $1
- ld [wRightAlleyTrigger], a
- call Func_159c9
- ret
-
-Func_15990: ; 0x15990
- xor a
- ld [wd528], a
- ld a, [wRightAlleyTrigger]
- and a
- ret z
- xor a
- ld [wRightAlleyTrigger], a
- ld a, $2
- callba Func_10000
- ret c
- ld a, [wRightAlleyCount]
- cp $3
- ret z
- inc a
- ld [wRightAlleyCount], a
- cp $3
- jr z, .asm_159ba
- set 7, a
-.asm_159ba
- ld [wIndicatorStates + 1], a
- ld a, [wRightAlleyCount]
- cp $2
- ret c
- ld a, $80
- ld [wIndicatorStates + 3], a
- ret
-
-Func_159c9: ; 0x159c9
- ld a, [wd7ad]
- bit 7, a
- ret nz
- ld c, a
- ld a, [wStageCollisionState]
- and $1
- or c
- ld [wStageCollisionState], a
- ld a, $ff
- ld [wd7ad], a
- callba LoadStageCollisionAttributes
- call Func_159f4
- ld a, $1
- ld [wd580], a
- call Func_1404a
- ret
-
-Func_159f4: ; 0x159f4
- ld a, [hLCDC]
- bit 7, a
- jr z, .asm_15a13
- ld a, [wd7f2]
- and $fe
- ld c, a
- ld a, [wStageCollisionState]
- and $fe
- cp c
- jr z, .asm_15a13
- add c
- cp $2
- jr z, .asm_15a13
- lb de, $00, $00
- call PlaySoundEffect
-.asm_15a13
- ld a, [wd7f2]
- swap a
- ld c, a
- ld a, [wStageCollisionState]
- sla a
- or c
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_15a3f
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_15a2d
- ld hl, TileDataPointers_15d05
-.asm_15a2d
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_15a3f)
- call Func_10aa
- ld a, [wStageCollisionState]
- ld [wd7f2], a
- ret
-
-TileDataPointers_15a3f:
- dw $0000
- dw TileData_15b71
- dw TileData_15b16
- dw TileData_15abf
- dw TileData_15b23
- dw TileData_15adc
- dw TileData_15b2a
- dw TileData_15af3
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15b16
- dw $0000
- dw TileData_15b23
- dw $0000
- dw TileData_15b2a
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15b71
- dw TileData_15b3d
- dw $0000
- dw TileData_15b50
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15b82
- dw $0000
- dw $0000
- dw TileData_15b3d
- dw $0000
- dw TileData_15b50
- dw $0000
- dw $0000
- dw TileData_15b57
- dw $0000
- dw $0000
- dw TileData_15b71
- dw TileData_15b2a
- dw $0000
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15b57
- dw TileData_15b82
- dw $0000
- dw $0000
- dw TileData_15b2a
- dw $0000
- dw $0000
- dw TileData_15b6a
- dw $0000
- dw TileData_15b3d
- dw $0000
- dw $0000
- dw TileData_15b71
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15b6a
- dw $0000
- dw TileData_15b3d
- dw TileData_15b82
- dw $0000
-
-TileData_15abf: ; 0x15abf
- db $e
- dw TileData_15b93
- dw TileData_15b9d
- dw TileData_15ba7
- dw TileData_15bb1
- dw TileData_15bbb
- dw TileData_15bc5
- dw TileData_15c0b
- dw TileData_15c15
- dw TileData_15c1f
- dw TileData_15c29
- dw TileData_15c33
- dw TileData_15c3d
- dw TileData_15c47
- dw TileData_15c51
-
-TileData_15adc: ; 0x15adc
- db $0b
- dw TileData_15c0b
- dw TileData_15c15
- dw TileData_15c1f
- dw TileData_15c29
- dw TileData_15c33
- dw TileData_15c3d
- dw TileData_15c47
- dw TileData_15c51
- dw TileData_15ce7
- dw TileData_15cf1
- dw TileData_15cfb
-
-TileData_15af3: ; 0x15af3
- db $11
- dw TileData_15b93
- dw TileData_15b9d
- dw TileData_15ba7
- dw TileData_15bb1
- dw TileData_15bbb
- dw TileData_15bc5
- dw TileData_15c0b
- dw TileData_15c15
- dw TileData_15c1f
- dw TileData_15c29
- dw TileData_15c33
- dw TileData_15c3d
- dw TileData_15c47
- dw TileData_15c51
- dw TileData_15cab
- dw TileData_15cb5
- dw TileData_15cbf
-
-TileData_15b16: ; 0x15b16
- db $06
- dw TileData_15b93
- dw TileData_15b9d
- dw TileData_15ba7
- dw TileData_15bb1
- dw TileData_15bbb
- dw TileData_15bc5
-
-TileData_15b23: ; 0x15b23
- db $03
- dw TileData_15ce7
- dw TileData_15cf1
- dw TileData_15cfb
-
-TileData_15b2a: ; 0x15b2a
- db $09
- dw TileData_15b93
- dw TileData_15b9d
- dw TileData_15ba7
- dw TileData_15bb1
- dw TileData_15bbb
- dw TileData_15bc5
- dw TileData_15cab
- dw TileData_15cb5
- dw TileData_15cbf
-
-TileData_15b3d: ; 0x15b3d
- db $09
- dw TileData_15bcf
- dw TileData_15bd9
- dw TileData_15be3
- dw TileData_15bed
- dw TileData_15bf7
- dw TileData_15c01
- dw TileData_15ce7
- dw TileData_15cf1
- dw TileData_15cfb
-
-TileData_15b50: ; 0x15b50
- db $03
- dw TileData_15cab
- dw TileData_15cb5
- dw TileData_15cbf
-
-TileData_15b57: ; 0x15b57
- db $09
- dw TileData_15b93
- dw TileData_15b9d
- dw TileData_15ba7
- dw TileData_15bb1
- dw TileData_15bbb
- dw TileData_15bc5
- dw TileData_15cc9
- dw TileData_15cd3
- dw TileData_15cdd
-
-TileData_15b6a: ; 0x15b6a
- db $03
- dw TileData_15cc9
- dw TileData_15cd3
- dw TileData_15cdd
-
-TileData_15b71: ; 0x15b71
- db $08
- dw TileData_15c0b
- dw TileData_15c15
- dw TileData_15c1f
- dw TileData_15c29
- dw TileData_15c33
- dw TileData_15c3d
- dw TileData_15c47
- dw TileData_15c51
-
-TileData_15b82: ; 0x15b82
- db $08
- dw TileData_15c5b
- dw TileData_15c65
- dw TileData_15c6f
- dw TileData_15c79
- dw TileData_15c83
- dw TileData_15c8d
- dw TileData_15c97
- dw TileData_15ca1
-
-TileData_15b93: ; 0x15b93
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15b9d: ; 0x15b9d
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $30
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15ba7: ; 0x15ba7
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15bb1: ; 0x15bb1
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $90
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15bbb: ; 0x15bbb
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $50
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15bc5: ; 0x15bc5
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $53
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15bcf: ; 0x15bcf
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldTopBaseGameBoyGfx + $9a0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15bd9: ; 0x15bd9
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $47
- dw StageRedFieldTopBaseGameBoyGfx + $9d0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15be3: ; 0x15be3
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4A
- dw StageRedFieldTopBaseGameBoyGfx + $a00
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15bed: ; 0x15bed
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4D
- dw StageRedFieldTopBaseGameBoyGfx + $a30
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15bf7: ; 0x15bf7
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $50
- dw StageRedFieldTopBaseGameBoyGfx + $a60
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c01: ; 0x15c01
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $53
- dw StageRedFieldTopBaseGameBoyGfx + $a90
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c0b: ; 0x15c0b
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $56
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $120
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c15: ; 0x15c15
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $59
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $150
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c1f: ; 0x15c1f
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $180
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c29: ; 0x15c29
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5F
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c33: ; 0x15c33
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $62
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c3d: ; 0x15c3d
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $65
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $210
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c47: ; 0x15c47
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $66
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $620
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c51: ; 0x15c51
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $69
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $650
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15c5b: ; 0x15c5b
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $56
- dw StageRedFieldTopBaseGameBoyGfx + $ac0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c65: ; 0x15c65
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $59
- dw StageRedFieldTopBaseGameBoyGfx + $af0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c6f: ; 0x15c6f
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5C
- dw StageRedFieldTopBaseGameBoyGfx + $b20
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c79: ; 0x15c79
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5F
- dw StageRedFieldTopBaseGameBoyGfx + $b50
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c83: ; 0x15c83
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $62
- dw StageRedFieldTopBaseGameBoyGfx + $b80
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c8d: ; 0x15c8d
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $65
- dw StageRedFieldTopBaseGameBoyGfx + $bb0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15c97: ; 0x15c97
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $66
- dw StageRedFieldTopBaseGameBoyGfx + $bc0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15ca1: ; 0x15ca1
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $69
- dw StageRedFieldTopBaseGameBoyGfx + $bf0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15cab: ; 0x15cab
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15cb5: ; 0x15cb5
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $6F
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15cbf: ; 0x15cbf
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $72
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $310
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15cc9: ; 0x15cc9
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $6C
- dw StageRedFieldTopBaseGameBoyGfx + $c20
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15cd3: ; 0x15cd3
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $6F
- dw StageRedFieldTopBaseGameBoyGfx + $c50
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15cdd: ; 0x15cdd
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $72
- dw StageRedFieldTopBaseGameBoyGfx + $c80
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_15ce7: ; 0x15ce7
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $220
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15cf1: ; 0x15cf1
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $6F
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $250
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_15cfb: ; 0x15cfb
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $72
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $280
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileDataPointers_15d05:
- dw $0000
- dw TileData_15db1
- dw TileData_15d96
- dw TileData_15d85
- dw TileData_15d99
- dw TileData_15d8a
- dw TileData_15d9c
- dw TileData_15d8f
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15d96
- dw $0000
- dw TileData_15d99
- dw $0000
- dw TileData_15d9c
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15db1
- dw TileData_15da1
- dw $0000
- dw TileData_15da6
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15db4
- dw $0000
- dw $0000
- dw TileData_15da1
- dw $0000
- dw TileData_15da6
- dw $0000
- dw $0000
- dw TileData_15da9
- dw $0000
- dw $0000
- dw TileData_15db1
- dw TileData_15d9c
- dw $0000
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15da9
- dw TileData_15db4
- dw $0000
- dw $0000
- dw TileData_15d9c
- dw $0000
- dw $0000
- dw TileData_15dae
- dw $0000
- dw TileData_15da1
- dw $0000
- dw $0000
- dw TileData_15db1
- dw $0000
- dw $0000
- dw $0000
- dw TileData_15dae
- dw $0000
- dw TileData_15da1
- dw TileData_15db4
- dw $0000
-
-TileData_15d85: ; 0x15d85
- db $02
- dw TileData_15db7
- dw TileData_15df2
-
-TileData_15d8a: ; 0x15d8a
- db $02
- dw TileData_15df2
- dw TileData_15e82
-
-TileData_15d8f: ; 0x15d8f
- db $03
- dw TileData_15db7
- dw TileData_15df2
- dw TileData_15e50
-
-TileData_15d96: ; 0x15d96
- db $01
- dw TileData_15db7
-
-TileData_15d99: ; 0x15d99
- db $01
- dw TileData_15e82
-
-TileData_15d9c: ; 0x15d9c
- db $02
- dw TileData_15db7
- dw TileData_15e50
-
-TileData_15da1: ; 0x15da1
- db $02
- dw TileData_15dd5
- dw TileData_15e82
-
-TileData_15da6: ; 0x15da6
- db $01
- dw TileData_15e50
-
-TileData_15da9: ; 0x15da9
- db $02
- dw TileData_15db7
- dw TileData_15e69
-
-TileData_15dae: ; 0x15dae
- db $01
- dw TileData_15e69
-
-TileData_15db1: ; 0x15dab1
- db $01
- dw TileData_15df2
-
-TileData_15db4: ; 0x15db4
- db $01
- dw TileData_15e21
-
-TileData_15db7: ; 0x15db7
- dw Func_1198
-
- db ($a << 1)
- db $03
- dw vBGMap + $4c
-
- db ($40 << 1)
- db $09
- dw vBGMap + $6c
-
- db (($32 << 1) | 1)
- db $08
- dw vBGMap + $8d
-
- db (4 << 1)
- dw vBGMap + $ae
-
- db (2 << 1)
- dw vBGMap + $d0
-
- db (2 << 1)
- dw vBGMap + $f1
-
- db (2 << 1)
- dw vBGMap + $111
-
- db (1 << 1)
- dw vBGMap + $132
-
- db $00 ; terminator
-
-TileData_15dd5: ; 0x15dd5
- dw Func_1198
-
- db ($a << 1)
- db $03
- dw vBGMap + $4c
-
- db (($28 << 1) | 1)
- db $08
- dw vBGMap + $6c
-
- db ($4 << 1)
- dw vBGMap + $8d
-
- db ($04 << 1)
- dw vBGMap + $ae
-
- db ($02 << 1)
- dw vBGMap + $d0
-
- db ($02 << 1)
- dw vBGMap + $f1
-
- db ($02 << 1)
- dw vBGMap + $111
-
- db (1 << 1)
- dw vBGMap + $132
-
- db $00 ; terminator
-
-TileData_15df2: ; 0x15df2
- dw LoadTileLists
- db $19 ; total number of tiles
-
- db $05 ; number of tiles
- dw vBGMap + $a9
- db $1e, $1f, $20, $21, $22
-
- db $07
- dw vBGMap + $c7
- db $23, $24, $39, $3a, $25, $3b, $26
-
- db $08 ; number of tiles
- dw vBGMap + $e6
- db $27, $37, $28, $29, $2a, $2b, $3c, $2c
-
- db $03 ; number of tiles
- dw vBGMap + $106
- db $2d, $38, $2e
-
- db $01 ; number of tiles
- dw vBGMap + $10d
- db $2f
-
- db $01 ; number of tiles
- dw vBGMap + $126
- db $30
-
- db 00 ; terminator
-
-TileData_15e21: ; 0x15e21
- dw LoadTileLists
- db $19 ; total number of tiles
-
- db $05 ; number of tiles
- dw vBGMap + $a9
- db $0b, $0c, $0d, $0e, $0f
-
- db $07
- dw vBGMap + $c7
- db $10, $11, $33, $34, $12, $35, $13
-
- db $08 ; number of tiles
- dw vBGMap + $e6
- db $14, $31, $15, $16, $17, $18, $36, $19
-
- db $03 ; number of tiles
- dw vBGMap + $106
- db $1a, $32, $1b
-
- db $01 ; number of tiles
- dw vBGMap + $10d
- db $1c
-
- db $01 ; number of tiles
- dw vBGMap + $126
- db $1d
-
- db 00 ; terminator
-
-TileData_15e50: ; 0x15e50
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $100
- db $45, $46, $22
-
- db $02 ; number of tiles
- dw vBGMap + $120
- db $45, $46
-
- db $02 ; number of tiles
- dw vBGMap + $140
- db $45, $46
-
- db $02 ; number of tiles
- dw vBGMap + $160
- db $45, $46
-
- db $00 ; terminator
-
-TileData_15e69: ; 0x15e69
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $100
- db $43, $44, $22
-
- db $02 ; number of tiles
- dw vBGMap + $120
- db $45, $46
-
- db $02 ; number of tiles
- dw vBGMap + $140
- db $45, $46
-
- db $02 ; number of tiles
- dw vBGMap + $160
- db $45, $46
-
- db $00 ; terminator
-
-TileData_15e82: ; 0x15e82
- dw Func_1198
-
- db ((4 << 1) | 1)
- db $07
- dw vBGMap + $100
-
- db (($23 << 1) | 1)
- db $04
- dw vBGMap + $120
-
- db (2 << 1)
- dw vBGMap + $140
-
- db (2 << 1)
- dw vBGMap + $160
-
- db $00 ; terminator
-
-ResolveBellsproutCollision: ; 0x15e93
- ld a, [wBellsproutCollision]
- and a
- jr z, .asm_15eda
- xor a
- ld [wBellsproutCollision], a
- ld bc, TenThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $05
- call PlaySoundEffect
- ld hl, BellsproutAnimationData
- ld de, wBellsproutAnimationFrameCounter
- call CopyHLToDE
- xor a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wBallXPos], a
- ld [wBallYPos], a
- ld a, $7c
- ld [wBallXPos + 1], a
- ld a, $78
- ld [wBallYPos + 1], a
- xor a
- ld [wd549], a
-.asm_15eda
- ld hl, BellsproutAnimationData
- ld de, wBellsproutAnimationFrameCounter
- call UpdateAnimation
- push af
- ld a, [wBellsproutAnimationFrameCounter]
- and a
- jr nz, .asm_15ef8
- ld a, $19
- ld [wBellsproutAnimationFrameCounter], a
- xor a
- ld [wBellsproutAnimationFrame], a
- ld a, $6
- ld [wBellsproutAnimationFrameIndex], a
-.asm_15ef8
- pop af
- ret nc
- ld a, [wBellsproutAnimationFrameIndex]
- cp $1
- jr nz, .asm_15f35
- xor a
- ld [wd548], a
- ld a, [wRightAlleyCount]
- cp $2
- jr c, .noCatchEmMode
- ld a, $8
- jr nz, .startCatchEmMode
- xor a
-.startCatchEmMode
- ld [wRareMonsFlag], a
- callba StartCatchEmMode
-.noCatchEmMode
- ld hl, wd62a
- call Func_e4a
- ret nc
- ld c, $19
- call Func_e55
- callba z, Func_30164
- ret
-
-.asm_15f35
- ld a, [wBellsproutAnimationFrameIndex]
- cp $4
- jr nz, .asm_15f42
- ld a, $1
- ld [wd548], a
- ret
-
-.asm_15f42
- ld a, [wBellsproutAnimationFrameIndex]
- cp $5
- ret nz
- ld a, $1
- ld [wd549], a
- xor a
- ld [wBallXVelocity + 1], a
- ld a, $2
- ld [wBallYVelocity + 1], a
- lb de, $00, $06
- call PlaySoundEffect
- ld a, $5
- callba Func_10000
- ret
-
-BellsproutAnimationData: ; 0x15f69
-; Each entry is [duration][OAM id]
- db $08, $01
- db $06, $02
- db $20, $03
- db $06, $02
- db $08, $01
- db $01, $00
- db $29, $00
- db $28, $01
- db $2A, $00
- db $27, $01
- db $29, $00
- db $28, $01
- db $2B, $00
- db $28, $01
- db $00 ; terminator
-
-Func_15f86: ; 0x15f86
- ld a, [wWhichBumper]
- and a
- jr z, .asm_15f99
- call Func_5fb8
- call Func_15fa6
- xor a
- ld [wWhichBumper], a
- call Func_15fda
-.asm_15f99
- ld a, [wd4da]
- and a
- ret z
- dec a
- ld [wd4da], a
- call z, Func_5fb8
- ret
-
-Func_15fa6: ; 0x15fa6
- ld a, $10
- ld [wd4da], a
- ld a, [wWhichBumperId]
- sub $6
- ld [wd4db], a
- sla a
- inc a
- jr asm_15fc0
-
-Func_5fb8: ; 0x5fb8
- ld a, [wd4db]
- cp $ff
- ret z
- sla a
-asm_15fc0
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_16010
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_15fd0
- ld hl, Data_16080
-.asm_15fd0
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_16010)
- call Func_10aa
- ret
-
-Func_15fda: ; 0x15fda
- ld a, $ff
- ld [wd803], a
- ld a, $3
- ld [wd804], a
- ld hl, $0200
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- ld a, [wWhichBumperId]
- sub $6
- ld c, a
- ld b, $0
- ld hl, CollisionAngleDeltas_1600e
- add hl, bc
- ld a, [wCollisionForceAngle]
- add [hl]
- ld [wCollisionForceAngle], a
- lb de, $00, $0b
- call PlaySoundEffect
- ret
-
-CollisionAngleDeltas_1600e:
- db -8, 8
-
-TileDataPointers_16010:
- dw TileData_16018
- dw TileData_1601b
- dw TileData_1601e
- dw TileData_16021
-
-TileData_16018: ; 0x16018
- db $01
- dw TileData_16024
-
-TileData_1601b: ; 0x1601b
- db $01
- dw TileData_1603B
-
-TileData_1601e: ; 0x1601e
- db $01
- dw TileData_16052
-
-TileData_16021: ; 0x16021
- db $01
- dw TileData_16069
-
-TileData_16024: ; 0x16024
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $60
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $61, $62
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $63, $64
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $65, $66
-
- db $00 ; terminator
-
-TileData_1603B: ; 0x1603B
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $67
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $68, $69
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $6A, $6B
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $6C, $6D
-
- db $00 ; terminator
-
-TileData_16052: ; 0x16052
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $6E
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $6F, $70
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $71, $72
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $73, $74
-
- db $00 ; terminator
-
-TileData_16069: ; 0x16069
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $75
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $76, $77
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $78, $79
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $7A, $7B
-
- db $00 ; terminator
-
-Data_16080:
- dw Data_16088
- dw Data_1608b
- dw Data_1608e
- dw Data_16091
-
-Data_16088: ; 0x16088
- db $01
- dw Data_16094
-
-Data_1608b: ; 0x1608b
- db $01
- dw Data_160ab
-
-Data_1608e: ; 0x1608e
- db $01
- dw Data_160c2
-
-Data_16091: ; 0x16091
- db $01
- dw Data_160d9
-
-Data_16094: ; 0x16094
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $2A
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $2B, $2C
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $2D, $2E
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $2F, $30
-
- db $00 ; terminator
-
-Data_160ab: ; 0x160ab
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $31
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $34, $35
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $36, $37
-
- db $00 ; terminator
-
-Data_160c2: ; 0x160c2
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $2A
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $2C, $2B
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $2E, $2D
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $30, $2F
-
- db $00 ; terminator
-
-Data_160d9: ; 0x160d9
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $31
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $33, $32
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $35, $34
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $37, $36
-
- db $00 ; terminator
-
-ResolveDittoSlotCollision: ; 0x160f0
- ld a, [wDittoSlotCollision]
- and a
- jr z, .asm_16137
- xor a
- ld [wDittoSlotCollision], a
- ld bc, TenThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $21
- call PlaySoundEffect
- xor a
- ld hl, wBallXVelocity
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [wd549], a
- ld [wBallXPos], a
- ld [wBallYPos], a
- ld a, $11
- ld [wBallXPos + 1], a
- ld a, $23
- ld [wBallYPos + 1], a
- ld a, $10
- ld [wd600], a
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
-.asm_16137
- ld a, [wd600]
- and a
- ret z
- dec a
- ld [wd600], a
- cp $f
- jr nz, .asm_1614f
- callba LoadMiniBallGfx
- ret
-
-.asm_1614f
- cp $c
- jr nz, .asm_1615e
- callba Func_dd62
- ret
-
-.asm_1615e
- cp $9
- jr nz, .asm_1616d
- xor a
- ld [wd548], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- ret
-
-.asm_1616d
- cp $6
- jr nz, .asm_1618e
- callba Func_10ab3
- ld a, $1
- ld [wd548], a
- ld [wd549], a
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ret
-
-.asm_1618e
- cp $3
- jr nz, .asm_1619d
- callba LoadMiniBallGfx
- ret
-
-.asm_1619d
- and a
- ret nz
- callba LoadBallGfx
- ld a, $2
- ld [wBallYVelocity + 1], a
- ret
-
-Func_161af: ; 0x161af
- ld a, [wd604]
- and a
- ret z
- ld a, [wBallYPos + 1]
- sub $fe
- cp $30
- ret nc
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
- jr asm_1620f
-
-Func_161e0: ; 0x161e0
- ld a, [wd604]
- and a
- ret z
- ld a, [wBallYPos + 1]
- sub $86
- cp $30
- ret nc
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
-asm_1620f: ; 0x1620f
- ld bc, BallPhysicsData_f0000
- add hl, bc
- ld de, wBallXVelocity
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- push bc
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- bit 7, b
- jr z, .asm_1624e
- ld a, c
- cpl
- ld c, a
- ld a, b
- cpl
- ld b, a
- inc bc
-.asm_1624e
- pop hl
- bit 7, h
- jr z, .asm_1625a
- ld a, l
- cpl
- ld l, a
- ld a, h
- cpl
- ld h, a
- inc hl
-.asm_1625a
- add hl, bc
- sla l
- rl h
- ld a, h
- cp $2
- ret c
- ld a, [wd804]
- and a
- ret nz
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- lb de, $00, $04
- call PlaySoundEffect
- ret
-
-Func_16279: ; 0x16279
- ld a, [wSlotCollision]
- and a
- jr z, .asm_162ae
- xor a
- ld [wSlotCollision], a
- ld a, [wd604]
- and a
- ret z
- ld a, [wd603]
- and a
- jr nz, .asm_162ae
- xor a
- ld hl, wBallXVelocity
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [wd549], a
- ld [wBallXPos], a
- ld [wBallYPos], a
- ld a, $50
- ld [wBallXPos + 1], a
- ld a, $16
- ld [wBallYPos + 1], a
- ld a, $13
- ld [wd603], a
-.asm_162ae
- ld a, [wd603]
- and a
- ret z
- dec a
- ld [wd603], a
- ld a, $18
- ld [wd606], a
- ld a, [wd603]
- cp $12
- jr nz, .asm_162d4
- lb de, $00, $21
- call PlaySoundEffect
- callba LoadMiniBallGfx
- ret
-
-.asm_162d4
- cp $f
- jr nz, .asm_162e3
- callba Func_dd62
- ret
-
-.asm_162e3
- cp $c
- jr nz, .asm_162f2
- xor a
- ld [wd548], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- ret
-
-.asm_162f2
- cp $9
- jr nz, .asm_162fa
- call Func_16352
- ret
-
-.asm_162fa
- cp $6
- jr nz, .asm_16317
- xor a
- ld [wd604], a
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- callba LoadMiniBallGfx
- ret
-
-.asm_16317
- cp $3
- jr nz, .asm_16330
- callba LoadBallGfx
- ld a, $2
- ld [wBallYVelocity + 1], a
- ld a, $80
- ld [wBallXVelocity], a
- ret
-
-.asm_16330
- and a
- ret nz
- call Func_16425
- ld a, [wCatchEmOrEvolutionSlotRewardActive]
- cp CATCHEM_MODE_SLOT_REWARD
- ret nz
- call GenRandom
- and $8
- ld [wRareMonsFlag], a
- callba StartCatchEmMode
- xor a
- ld [wCatchEmOrEvolutionSlotRewardActive], a
- ret
-
-Func_16352: ; 0x16352
- xor a
- ld [wIndicatorStates + 4], a
- ld a, $d
- callba Func_10000
- jr nc, .asm_1636d
- ld a, $1
- ld [wd548], a
- ld [wd549], a
- ret
-
-.asm_1636d
- ld a, [wd624]
- cp $3
- jr nz, .asm_163b3
- ld a, [wd607]
- and a
- jr nz, .asm_163b3
-.asm_1637a
- ld a, [wBonusStageSlotRewardActive]
- and a
- jr nz, .asm_16389
- xor a
- ld [wd625], a
- ld a, $40
- ld [wd626], a
-.asm_16389
- xor a
- ld [wBonusStageSlotRewardActive], a
- ld a, $1
- ld [wd495], a
- ld [wd4ae], a
- ld a, [wd498]
- ld c, a
- ld b, $0
- ld hl, GoToBonusStageTextIds_RedField
- add hl, bc
- ld a, [hl]
- ld [wd497], a
- call Func_163f2
- xor a
- ld [wd609], a
- ld [wCatchEmOrEvolutionSlotRewardActive], a
- ld a, $1e
- ld [wd607], a
- ret
-
-.asm_163b3
- callba Func_ed8e
- xor a
- ld [wd608], a
- ld a, [wd61d]
- cp $d
- jr nc, .asm_1637a
- ld a, $1
- ld [wd548], a
- ld [wd549], a
- ld a, [wCatchEmOrEvolutionSlotRewardActive]
- cp EVOLUTION_MODE_SLOT_REWARD
- ret nz
- callba Func_10ab3
- ld a, [wd7ad]
- ld c, a
- ld a, [wStageCollisionState]
- and $1
- or c
- ld [wStageCollisionState], a
- xor a
- ld [wCatchEmOrEvolutionSlotRewardActive], a
- ret
-
-Func_163f2: ; 0x163f2
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5dc
- ld a, [wd497]
- ld de, GoToDiglettStageText
- cp STAGE_DIGLETT_BONUS
- jr z, .asm_1640f
- ld de, GoToGengarStageText
- cp STAGE_GENGAR_BONUS
- jr z, .asm_1640f
- ld de, GoToMewtwoStageText
-.asm_1640f
- call LoadTextHeader
- ld de, $0000
- call PlaySong
- rst AdvanceFrame
- lb de, $3c, $23
- call PlaySoundEffect
- ret
-
-GoToBonusStageTextIds_RedField:
- db STAGE_GENGAR_BONUS
- db STAGE_MEWTWO_BONUS
- db STAGE_MEOWTH_BONUS
- db STAGE_DIGLETT_BONUS
- db STAGE_SEEL_BONUS
-
-Func_16425: ; 0x16425
- ld a, [wCurrentStage]
- and $1
- sla a
- ld c, a
- ld a, [wd604]
- add c
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1644d
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_16441
- ld hl, TileDataPointers_164a1
-.asm_16441
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_1644d)
- call Func_10aa
- ret
-
-TileDataPointers_1644d:
- dw TileData_16455
- dw TileData_16458
- dw TileData_1645b
- dw TileData_16460
-
-TileData_16455: ; 0x16455
- db $01
- dw TileData_16465
-
-TileData_16458: ; 0x16458
- db $01
- dw TileData_1646f
-
-TileData_1645b: ; 0x1645b
- db $02
- dw TileData_16479
- dw TileData_16483
-
-TileData_16460: ; 0x16460
- db $02
- dw TileData_1648D
- dw TileData_16497
-
-TileData_16465: ; 0x16465
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldTopBaseGameBoyGfx + $1c0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_1646f: ; 0x1646f
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16479: ; 0x16479
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $48
- dw StageRedFieldBottomBaseGameBoyGfx + $c80
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16483: ; 0x16483
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $4A
- dw StageRedFieldBottomBaseGameBoyGfx + $CA0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1648D: ; 0x1648D
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16497: ; 0x16497
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $4A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $360
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileDataPointers_164a1:
- dw TileData_164a9
- dw TileData_164ac
- dw TileData_164af
- dw TileData_164b2
-
-TileData_164a9: ; 0x164a9
- db $01
- dw TileData_164b5
-
-TileData_164ac: ; 0x164ac
- db $01
- dw TileData_164be
-
-TileData_164af: ; 0x164af
- db $01
- dw TileData_164c7
-
-TileData_164b2: ; 0x164b2
- db $01
- dw TileData_164d5
-
-TileData_164b5: ; 0x164b5
- dw LoadTileLists
- db $02
-
- db $02
- dw vBGMap + $229
- db $d4, $d5
-
- db $00
-
-TileData_164be: ; 0x164be
- dw LoadTileLists
- db $02
-
- db $02
-
- dw vBGMap + $229
- db $d6, $d7
-
- db $00
-
-TileData_164c7: ; 0x164c7
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $9
- db $38, $39
-
- db $02
- dw vBGMap + $29
- db $3a, $3b
-
- db $00
-
-TileData_164d5: ; 0x164d5
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $9
- db $3c, $3d
-
- db $02
- dw vBGMap + $29
- db $3e, $3f
-
- db $00
-
-Func_164e3: ; 0x164e3
- ld a, [wd607]
- and a
- ret z
- dec a
- ld [wd607], a
- ret nz
- ld a, [wInSpecialMode]
- and a
- ret nz
- ld a, [wd609]
- and a
- jr z, .asm_164ff
- ld a, [wd498]
- add $15
- jr .asm_16506
-
-.asm_164ff
- ld a, [wd608]
- and a
- ret z
- ld a, $1a
-.asm_16506
- ld hl, wCurrentStage
- bit 0, [hl]
- callba nz, Func_30256
- ld a, [wd604]
- and a
- ret nz
- ld a, $1
- ld [wd604], a
- ld a, $80
- ld [wIndicatorStates + 4], a
- ld a, [wCurrentStage]
- bit 0, a
- call nz, Func_16425
- ret
-
-Func_1652d: ; 0x1652d
- ld a, [wPinballLaunchAlley]
- and a
- ret z
- xor a
- ld [wPinballLaunchAlley], a
- ld a, [wd4de]
- and a
- jr z, .asm_16566
- xor a
- ld [wRightAlleyTrigger], a
- ld [wLeftAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- ld hl, wBallXVelocity
- ld [hli], a
- ld [hl], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- ld a, $80
- ld [wBallYVelocity], a
- ld a, $fa
- ld [wBallYVelocity + 1], a
- ld a, $1
- ld [wd549], a
- lb de, $00, $0a
- call PlaySoundEffect
-.asm_16566
- ld a, $ff
- ld [wPreviousTriggeredGameObject], a
- ld a, [wd4de]
- and a
- ret nz
- ld a, [wd4e0]
- and a
- jr nz, .asm_16582
- call Func_1658f
- ld a, $1
- ld [wd4e0], a
- ld [wd4de], a
- ret
-
-.asm_16582
- ld hl, wKeyConfigBallStart
- call IsKeyPressed
- ret z
- ld a, $1
- ld [wd4de], a
- ret
-
-Func_1658f: ; 0x1658f
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, LoadGreyBillboardPaletteData
-.showNextMap
- ld a, [wInitialMapSelectionIndex]
- inc a
- cp $7 ; number of maps to choose from at the start of play
- jr c, .gotMapId
- xor a ; wrap around to 0
-.gotMapId
- ld [wInitialMapSelectionIndex], a
- ld c, a
- ld b, $0
- ld hl, RedStageInitialMaps
- add hl, bc
- ld a, [hl]
- ld [wCurrentMap], a
- push af
- lb de, $00, $48
- call PlaySoundEffect
- pop af
- add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
- callba LoadBillboardPicture
- ld b, $20 ; number of frames to delay before the next map is shown
-.waitOnCurrentMap
- push bc
- callba Func_eeee
- ld hl, wKeyConfigBallStart
- call IsKeyPressed
- jr nz, .ballStartKeyPressed
- pop bc
- dec b
- jr nz, .waitOnCurrentMap
- jr .showNextMap
-
-.ballStartKeyPressed
- pop bc
- callba Func_30253
- ld bc, StartFromMapText
- callba Func_3118f
- ld a, [wCurrentMap]
- ld [wd4e3], a
- xor a
- ld [wd4e2], a
- ret
-
-RedStageInitialMaps: ; 0x16605
- db PALLET_TOWN
- db VIRIDIAN_FOREST
- db PEWTER_CITY
- db CERULEAN_CITY
- db VERMILION_SEASIDE
- db ROCK_MOUNTAIN
- db LAVENDER_TOWN
-
-ResolveRedStagePikachuCollision: ; 0x1660c
- ld a, [wWhichPikachu]
- and a
- jr z, .asm_1667b
- xor a
- ld [wWhichPikachu], a
- ld a, [wd51c]
- and a
- jr nz, .asm_1667b
- ld a, [wPikachuSaverSlotRewardActive]
- and a
- jr nz, .asm_16634
- ld a, [wWhichPikachuId]
- sub $1c
- ld hl, wd518
- cp [hl]
- jr nz, .asm_1667b
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- jr nz, .asm_16667
-.asm_16634
- ld hl, PikachuSaverAnimationDataBlueStage
- ld de, wPikachuSaverAnimationFrameCounter
- call CopyHLToDE
- ld a, [wPikachuSaverSlotRewardActive]
- and a
- jr nz, .asm_16647
- xor a
- ld [wPikachuSaverCharge], a
-.asm_16647
- ld a, $1
- ld [wd51c], a
- xor a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- ld [wd549], a
- call FillBottomMessageBufferWithBlackTile
- jr .asm_1667b
-
-.asm_16667
- ld hl, PikachuSaverAnimation2DataBlueStage
- ld de, wPikachuSaverAnimationFrameCounter
- call CopyHLToDE
- ld a, $2
- ld [wd51c], a
- lb de, $00, $3b
- call PlaySoundEffect
-.asm_1667b
- ld a, [wd51c]
- and a
- call z, Func_16766
- call Func_1669e
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- ret nz
- ld a, [wd51e]
- and a
- ret z
- dec a
- ld [wd51e], a
- cp $5a
- ret nz
- lb de, $0f, $22
- call PlaySoundEffect
- ret
-
-Func_1669e: ; 0x1669e
- ld a, [wd51c]
- cp $1
- jr nz, .asm_16719
- ld hl, PikachuSaverAnimationDataBlueStage
- ld de, wPikachuSaverAnimationFrameCounter
- call UpdateAnimation
- ret nc
- ld a, [wPikachuSaverAnimationFrameIndex]
- cp $1
- jr nz, .asm_166f7
- xor a
- ld [wd85d], a
- call Func_310a
- rst AdvanceFrame
- ld a, $1
- callba PlayPikachuSoundClip
- ld a, $1
- ld [wd85d], a
- ld a, $ff
- ld [wd803], a
- ld a, $60
- ld [wd804], a
- ld hl, wd62e
- call Func_e4a
- jr nc, .asm_166f0
- ld c, $a
- call Func_e55
- callba z, Func_30164
-.asm_166f0
- lb de, $16, $10
- call PlaySoundEffect
- ret
-
-.asm_166f7
- ld a, [wPikachuSaverAnimationFrameIndex]
- cp $11
- ret nz
- ld a, $fc
- ld [wBallYVelocity + 1], a
- ld a, $1
- ld [wd549], a
- ld bc, FiveThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- xor a
- ld [wd51c], a
- ret
-
-.asm_16719
- cp $2
- jr nz, .asm_16732
- ld hl, PikachuSaverAnimation2DataBlueStage
- ld de, wPikachuSaverAnimationFrameCounter
- call UpdateAnimation
- ret nc
- ld a, [wPikachuSaverAnimationFrameIndex]
- cp $1
- ret nz
- xor a
- ld [wd51c], a
- ret
-
-.asm_16732
- ld a, [hNumFramesDropped]
- swap a
- and $1
- ld [wPikachuSaverAnimationFrame], a
- ret
-
-PikachuSaverAnimationDataBlueStage: ; 0x1673c
-; Each entry is [duration][OAM id]
- db $0C, $02
- db $05, $03
- db $05, $02
- db $05, $04
- db $05, $05
- db $05, $02
- db $06, $06
- db $06, $07
- db $06, $08
- db $06, $02
- db $06, $05
- db $06, $08
- db $06, $07
- db $06, $02
- db $06, $08
- db $06, $07
- db $06, $02
- db $01, $00
- db $00
-
-PikachuSaverAnimation2DataBlueStage: ; 0x16761
-; Each entry is [duration][OAM id]
- db $0C, $02
- db $01, $00
- db $00
-
-Func_16766: ; 0x16766
- ld hl, wKeyConfigLeftFlipper
- call IsKeyPressed2
- jr z, .asm_16774
- ld hl, wd518
- ld [hl], $0
- ret
-
-.asm_16774
- ld hl, wKeyConfigRightFlipper
- call IsKeyPressed2
- ret z
- ld hl, wd518
- ld [hl], $1
- ret
-
-ResolveStaryuCollision: ; 0x16781
- ld a, [wStaryuCollision]
- and a
- jr z, .asm_167bd
- xor a
- ld [wStaryuCollision], a
- ld a, [wd503]
- and a
- jr nz, .asm_167c2
- ld bc, FiveThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wd502]
- xor $1
- set 1, a
- ld [wd502], a
- ld a, $14
- ld [wd503], a
- call Func_16859
- ld a, $6
- callba Func_10000
- ret
-
-.asm_167bd
- ld a, [wd503]
- and a
- ret z
-.asm_167c2
- dec a
- ld [wd503], a
- ret nz
- ld a, [wd502]
- res 1, a
- ld [wd502], a
- call Func_16859
- ld a, [wd502]
- and $1
- ld c, a
- ld a, [wStageCollisionState]
- and $fe
- or c
- ld [wStageCollisionState], a
- callba LoadStageCollisionAttributes
- call Func_159f4
- lb de, $00, $07
- call PlaySoundEffect
- ld a, [wStageCollisionState]
- bit 0, a
- jp nz, Func_15450
- jp Func_15499
-
-Func_167ff: ; 0x167ff
- ld a, [wStaryuCollision]
- and a
- jr z, .asm_16839
- xor a
- ld [wStaryuCollision], a
- ld a, [wd503]
- and a
- jr nz, .asm_1683e
- ld bc, FiveThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wd502]
- xor $1
- ld [wd502], a
- ld a, $14
- ld [wd503], a
- call Func_16878
- ld a, $6
- callba Func_10000
- ret
-
-.asm_16839
- ld a, [wd503]
- and a
- ret z
-.asm_1683e
- dec a
- ld [wd503], a
- ret nz
- ld a, [wd502]
- and $1
- ld c, a
- ld a, [wStageCollisionState]
- and $fe
- or c
- ld [wStageCollisionState], a
- lb de, $00, $07
- call PlaySoundEffect
- ret
-
-Func_16859: ; 0x16859
- ld a, [wd502]
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_16899
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1686c
- ld hl, TileDataPointers_16910
-.asm_1686c
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_16899)
- call Func_10aa
- ret
-
-Func_16878: ; 0x16878
- ld a, [wd502]
- and $1
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1695a
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1688d
- ld hl, TileDataPointers_16980
-.asm_1688d
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_1695a)
- call Func_10aa
- ret
-
-TileDataPointers_16899:
- dw TileData_168a1
- dw TileData_168a8
- dw TileData_168af
- dw TileData_168af
-
-TileData_168a1: ; 0x168a1
- db $03
- dw TileData_168b6
- dw TileData_168c0
- dw TileData_168ca
-
-TileData_168a8: ; 0x168a8
- db $03
- dw TileData_168d4
- dw TileData_168de
- dw TileData_168e8
-
-TileData_168af: ; 0x168af
- db $03
- dw TileData_168f2
- dw TileData_168fc
- dw TileData_16906
-
-TileData_168b6: ; 0x168b6
- dw Func_11d2
- db $30, $03
- dw vTilesSH tile $50
- dw StageRedFieldTopBaseGameBoyGfx + $260
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_168c0: ; 0x168c0
- dw Func_11d2
- db $30, $03
- dw vTilesSH tile $53
- dw StageRedFieldTopBaseGameBoyGfx + $290
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_168ca: ; 0x168ca
- dw Func_11d2
- db $10, $01
- dw vTilesSH tile $56
- dw StageRedFieldTopBaseGameBoyGfx + $2c0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_168d4: ; 0x168d4
- dw Func_11d2
- db $30, $03
- dw vTilesSH tile $52
- dw StageRedFieldTopBaseGameBoyGfx + $280
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_168de: ; 0x168de
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $55
- dw StageRedFieldTopBaseGameBoyGfx + $2b0
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileData_168e8: ; 0x168e8
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $50
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $EA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_168f2: ; 0x168f2
- dw Func_11d2
- db $30, $03
- dw vTilesSH tile $51
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_168fc: ; 0x168fc
- dw Func_11d2
- db $30, $03
- dw vTilesSH tile $54
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1110
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16906: ; 0x16906
- dw Func_11d2
- db $10, $01
- dw vTilesSH tile $50
- dw StageRedFieldTopBaseGameBoyGfx + $260
- db Bank(StageRedFieldTopBaseGameBoyGfx)
- db $00
-
-TileDataPointers_16910:
- dw TileData_16918
- dw TileData_1691b
- dw TileData_1691e
- dw TileData_1691e
-
-TileData_16918: ;0x16918
- db $01
- dw TileData_16921
-
-TileData_1691b: ;0x1691b
- db $01
- dw TileData_16934
-
-TileData_1691e: ;0x1691e
- db $01
- dw TileData_16947
-
-TileData_16921: ; 0x16921
- dw LoadTileLists
- db $06
-
- db $03
- dw vBGMap + $1C6
- db $C3, $C4, $C5
-
- db $02
- dw vBGMap + $1E7
- db $C6, $C7
-
- db $01
- dw vBGMap + $207
- db $C8
-
- db $00
-
-TileData_16934: ; 0x16934
- dw LoadTileLists
- db $06
-
- db $03
- dw vBGMap + $1C6
- db $CD, $CE, $C5
-
- db $02
- dw vBGMap + $1E7
- db $C6, $C7
-
- db $01
- dw vBGMap + $207
- db $C8
-
- db $00
-
-TileData_16947: ; 0x16947
- dw LoadTileLists
- db $06
-
- db $03
- dw vBGMap + $1C6
- db $C3, $C4, $C9
-
- db $02
- dw vBGMap + $1E7
- db $CA, $CB
-
- db $01
- dw vBGMap + $207
- db $CC
-
- db $00
-
-TileDataPointers_1695a:
- dw TileData_1695e
- dw TileData_16961
-
-TileData_1695e: ; 0x1695e
- db $01
- dw TileData_16964
-
-TileData_16961: ; 0x16961
- db $01
- dw TileData_16972
-
-TileData_16964: ; 0x16964
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $40
- db $BE, $BF
-
- db $02
- dw vBGMap + $60
- db $C0, $C1
-
- db $00
-
-TileData_16972: ; 0x16972
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $40
- db $C2, $C3
-
- db $02
- dw vBGMap + $60
- db $C4, $C5
-
- db $00
-
-TileDataPointers_16980:
- dw TileData_16984
- dw TileData_16987
-
-TileData_16984: ; 0x16984
- db $01
- dw TileData_1698a
-
-TileData_16987: ; 0x16987
- db $01
- dw TileData_16998
-
-TileData_1698a: ; 0x1698a
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $40
- db $BC, $BD
-
- db $02
- dw vBGMap + $60
- db $BE, $BF
-
- db $00
-
-TileData_16998: ; 0x16998
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $40
- db $C0, $C1
-
- db $02
- dw vBGMap + $60
- db $C2, $C3
-
- db $00
-
-Func_169a6: ; 0x169a6
- ld a, [hNumFramesDropped]
- and $1f
- ret nz
- ld bc, $0000
-.asm_169ae
- push bc
- ld hl, wIndicatorStates
- add hl, bc
- bit 7, [hl]
- jr z, .asm_169c5
- ld a, [hl]
- res 7, a
- ld hl, hNumFramesDropped
- bit 5, [hl]
- jr z, .asm_169c2
- inc a
-.asm_169c2
- call Func_169cd
-.asm_169c5
- pop bc
- inc c
- ld a, c
- cp $5
- jr nz, .asm_169ae
- ret
-
-Func_169cd: ; 0x169cd
- push af
- sla c
- ld hl, TileDataPointers_169ed
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_169db
- ld hl, TileDataPointers_16bef
-.asm_169db
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop af
- sla a
- ld c, a
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_169ed)
- call Func_10aa
- ret
-
-TileDataPointers_169ed:
- dw TileDataPointers_169f7
- dw TileDataPointers_16a01
- dw TileDataPointers_16a0b
- dw TileDataPointers_16a0f
- dw TileDataPointers_16a13
-
-TileDataPointers_169f7: ; 0x169f7
- dw TileData_16a17
- dw TileData_16a1e
- dw TileData_16a25
- dw TileData_16a2c
- dw TileData_16a33
-
-TileDataPointers_16a01: ; 0x16a01
- dw TileData_16a3a
- dw TileData_16a41
- dw TileData_16a48
- dw TileData_16a4f
- dw TileData_16a56
-
-TileDataPointers_16a0b: ; 0x16a0b
- dw TileData_16a5d
- dw TileData_16a60
-
-TileDataPointers_16a0f: ; 0x16a0f
- dw TileData_16a63
- dw TileData_16a66
-
-TileDataPointers_16a13: ; 0x16a13
- dw TileData_16a69
- dw TileData_16a6e
-
-TileData_16a17: ; 0x16a17
- db $03
- dw TileData_16a73
- dw TileData_16a7d
- dw TileData_16a87
-
-TileData_16a1e: ; 0x16a1e
- db $03
- dw TileData_16a91
- dw TileData_16a9b
- dw TileData_16aa5
-
-TileData_16a25: ; 0x16a25
- db $03
- dw TileData_16aaf
- dw TileData_16ab9
- dw TileData_16ac3
-
-TileData_16a2c: ; 0x16a2c
- db $03
- dw TileData_16acd
- dw TileData_16ad7
- dw TileData_16ae1
-
-TileData_16a33: ; 0x16a33
- db $03
- dw TileData_16aeb
- dw TileData_16af5
- dw TileData_16aff
-
-TileData_16a3a: ; 0x16a3a
- db $03
- dw TileData_16b09
- dw TileData_16b13
- dw TileData_16b1d
-
-TileData_16a41: ; 0x16a41
- db $03
- dw TileData_16b27
- dw TileData_16b31
- dw TileData_16b3b
-
-TileData_16a48: ; 0x16a48
- db $03
- dw TileData_16b45
- dw TileData_16b4f
- dw TileData_16b59
-
-TileData_16a4f: ; 0x16a4f
- db $03
- dw TileData_16b63
- dw TileData_16b6d
- dw TileData_16b77
-
-TileData_16a56: ; 0x16a56
- db $03
- dw TileData_16b81
- dw TileData_16b8b
- dw TileData_16b95
-
-TileData_16a5d: ; 0x16a5d
- db $01
- dw TileData_16b9f
-
-TileData_16a60: ; 0x16a60
- db $01
- dw TileData_16ba9
-
-TileData_16a63: ; 0x16a63
- db $01
- dw TileData_16bb3
-
-TileData_16a66: ; 0x16a66
- db $01
- dw TileData_16bbd
-
-TileData_16a69: ; 0x16a69
- db $02
- dw TileData_16bc7
- dw TileData_16bd1
-
-TileData_16a6e: ; 0x16a6e
- db $02
- dw TileData_16bdb
- dw TileData_16be5
-
-TileData_16a73: ; 0x16a73
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3A
- dw StageRedFieldBottomBaseGameBoyGfx + $ba0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16a7d: ; 0x16a7d
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3D
- dw StageRedFieldBottomBaseGameBoyGfx + $bd0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16a87: ; 0x16a87
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $40
- dw StageRedFieldBottomBaseGameBoyGfx + $c00
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16a91: ; 0x16a91
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $380
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16a9b: ; 0x16a9b
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16aa5: ; 0x16aa5
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $40
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16aaf: ; 0x16aaf
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3F0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16ab9: ; 0x16ab9
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $420
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16ac3: ; 0x16ac3
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $40
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $450
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16acd: ; 0x16acd
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $460
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16ad7: ; 0x16ad7
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $490
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16ae1: ; 0x16ae1
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $40
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16aeb: ; 0x16aeb
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F30
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16af5: ; 0x16af5
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $3D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16aff: ; 0x16aff
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $40
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F90
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b09: ; 0x16b09
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomBaseGameBoyGfx + $c10
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16b13: ; 0x16b13
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomBaseGameBoyGfx + $c40
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16b1d: ; 0x16b1d
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $47
- dw StageRedFieldBottomBaseGameBoyGfx + $c70
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16b27: ; 0x16b27
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4D0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b31: ; 0x16b31
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $500
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b3b: ; 0x16b3b
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $530
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b45: ; 0x16b45
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $540
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b4f: ; 0x16b4f
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $570
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b59: ; 0x16b59
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b63: ; 0x16b63
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b6d: ; 0x16b6d
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b77: ; 0x16b77
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $610
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b81: ; 0x16b81
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1010
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b8b: ; 0x16b8b
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1040
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b95: ; 0x16b95
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1070
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16b9f: ; 0x16b9f
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $20
- dw StageRedFieldBottomBaseGameBoyGfx + $a00
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16ba9: ; 0x16ba9
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $20
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1080
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16bb3: ; 0x16bb3
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $23
- dw StageRedFieldBottomBaseGameBoyGfx + $a30
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16bbd: ; 0x16bbd
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $23
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16bc7: ; 0x16bc7
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1C
- dw StageRedFieldBottomBaseGameBoyGfx + $9c0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16bd1: ; 0x16bd1
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1E
- dw StageRedFieldBottomBaseGameBoyGfx + $9e0
- db Bank(StageRedFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_16bdb: ; 0x16bdb
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $6E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_16be5: ; 0x16be5
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $700
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileDataPointers_16bef:
- dw TileDataPointers_16bf9
- dw TileDataPointers_16c03
- dw TileDataPointers_16c0d
- dw TileDataPointers_16c11
- dw TileDataPointers_16c15
-
-TileDataPointers_16bf9: ; 0x16bf9
- dw TileData_16c19
- dw TileData_16c1c
- dw TileData_16c1f
- dw TileData_16c22
- dw TileData_16c25
-
-TileDataPointers_16c03: ; 0x16c03
- dw TileData_16c28
- dw TileData_16c2b
- dw TileData_16c2e
- dw TileData_16c31
- dw TileData_16c34
-
-TileDataPointers_16c0d: ; 0x16c0d
- dw TileData_16c37
- dw TileData_16c3a
-
-TileDataPointers_16c11: ; 0x16c11
- dw TileData_16c3d
- dw TileData_16c40
-
-TileDataPointers_16c15: ; 0x16c15
- dw TileData_16c43
- dw TileData_16c46
-
-TileData_16c19: ; 0x16c19
- db $01
- dw TileData_16c49
-
-TileData_16c1c: ; 0x16c1c
- db $01
- dw TileData_16c63
-
-TileData_16c1f: ; 0x16c1f
- db $01
- dw TileData_16c7d
-
-TileData_16c22: ; 0x16c22
- db $01
- dw TileData_16c97
-
-TileData_16c25: ; 0x16c25
- db $01
- dw TileData_16cb1
-
-TileData_16c28: ; 0x16c28
- db $01
- dw TileData_16ccb
-
-TileData_16c2b: ; 0x16c2b
- db $01
- dw TileData_16ce5
-
-TileData_16c2e: ; 0x16c2e
- db $01
- dw TileData_16cff
-
-TileData_16c31: ; 0x16c31
- db $01
- dw TileData_16d19
-
-TileData_16c34: ; 0x16c34
- db $01
- dw TileData_16d33
-
-TileData_16c37: ; 0x16c37
- db $01
- dw TileData_16d4d
-
-TileData_16c3a: ; 0x16c3a
- db $01
- dw TileData_16d5a
-
-TileData_16c3d: ; 0x16c3d
- db $01
- dw TileData_16d67
-
-TileData_16c40: ; 0x16c40
- db $01
- dw TileData_16d74
-
-TileData_16c43: ; 0x16c43
- db $01
- dw TileData_16d81
-
-TileData_16c46: ; 0x16c46
- db $01
- dw TileData_16d8f
-
-TileData_16c49: ; 0x16c49
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $23
- db $5E
-
- db $02
- dw vBGMap + $43
- db $5F, $60
-
- db $02
- dw vBGMap + $64
- db $61, $62
-
- db $01
- dw vBGMap + $85
- db $63
-
- db $01
- dw vBGMap + $A5
- db $64
-
- db $00
-
-TileData_16c63: ; 0x16c63
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $23
- db $65
-
- db $02
- dw vBGMap + $43
- db $66, $67
-
- db $02
- dw vBGMap + $64
- db $61, $62
-
- db $01
- dw vBGMap + $85
- db $63
-
- db $01
- dw vBGMap + $A5
- db $64
-
- db $00
-
-TileData_16c7d: ; 0x16c7d
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $23
- db $65
-
- db $02
- dw vBGMap + $43
- db $66, $67
-
- db $02
- dw vBGMap + $64
- db $68, $69
-
- db $01
- dw vBGMap + $85
- db $63
-
- db $01
- dw vBGMap + $A5
- db $64
-
- db $00
-
-TileData_16c97: ; 0x16c97
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $23
- db $65
-
- db $02
- dw vBGMap + $43
- db $66, $67
-
- db $02
- dw vBGMap + $64
- db $68, $69
-
- db $01
- dw vBGMap + $85
- db $6A
-
- db $01
- dw vBGMap + $A5
- db $6B
-
- db $00
-
-TileData_16cb1: ; 0x16cb1
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $23
- db $5E
-
- db $02
- dw vBGMap + $43
- db $5F, $60
-
- db $02
- dw vBGMap + $64
- db $68, $69
-
- db $01
- dw vBGMap + $85
- db $6A
-
- db $01
- dw vBGMap + $A5
- db $6B
-
- db $00
-
-TileData_16ccb: ; 0x16ccb
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $30
- db $6C
-
- db $02
- dw vBGMap + $4F
- db $6D, $6E
-
- db $02
- dw vBGMap + $6E
- db $6F, $70
-
- db $01
- dw vBGMap + $8E
- db $71
-
- db $01
- dw vBGMap + $AE
- db $72
-
- db $00
-
-TileData_16ce5: ; 0x16ce5
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $30
- db $73
-
- db $02
- dw vBGMap + $4F
- db $74, $75
-
- db $02
- dw vBGMap + $6E
- db $6F, $70
-
- db $01
- dw vBGMap + $8E
- db $71
-
- db $01
- dw vBGMap + $AE
- db $72
-
- db $00
-
-TileData_16cff: ; 0x16cff
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $30
- db $73
-
- db $02
- dw vBGMap + $4F
- db $74, $75
-
- db $02
- dw vBGMap + $6E
- db $76, $77
-
- db $01
- dw vBGMap + $8E
- db $71
-
- db $01
- dw vBGMap + $AE
- db $72
-
- db $00
-
-TileData_16d19: ; 0x16d19
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $30
- db $73
-
- db $02
- dw vBGMap + $4F
- db $74, $75
-
- db $02
- dw vBGMap + $6E
- db $76, $77
-
- db $01
- dw vBGMap + $8E
- db $78
-
- db $01
- dw vBGMap + $AE
- db $79
-
- db $00
-
-TileData_16d33: ; 0x16d33
- dw LoadTileLists
- db $07
-
- db $01
- dw vBGMap + $30
- db $6C
-
- db $02
- dw vBGMap + $4F
- db $6D, $6E
-
- db $02
- dw vBGMap + $6E
- db $76, $77
-
- db $01
- dw vBGMap + $8E
- db $78
-
- db $01
- dw vBGMap + $AE
- db $79
-
- db $00
-
-TileData_16d4d: ; 0x16d4d
- dw LoadTileLists
- db $03
-
- db $01
- dw vBGMap + $6
- db $48
-
- db $02
- dw vBGMap + $26
- db $49, $4A
-
- db $00
-
-TileData_16d5a: ; 0x16d5a
- dw LoadTileLists
- db $03
-
- db $01
- dw vBGMap + $6
- db $4B
-
- db $02
- dw vBGMap + $26
- db $4C, $4D
-
- db $00
-
-TileData_16d67: ; 0x16d67
- dw LoadTileLists
- db $03
-
- db $01
- dw vBGMap + $D
- db $4E
-
- db $02
- dw vBGMap + $2C
- db $4F, $50
-
- db $00
-
-TileData_16d74: ; 0x16d74
- dw LoadTileLists
- db $03
-
- db $01
- dw vBGMap + $D
- db $51
-
- db $02
- dw vBGMap + $2C
- db $52, $53
-
- db $00
-
-TileData_16d81: ; 0x16d81
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $49
- db $40, $41
-
- db $02
- dw vBGMap + $69
- db $42, $43
-
- db $00
-
-TileData_16d8f: ; 0x16d8f
- dw LoadTileLists
- db $04
-
- db $02
- dw vBGMap + $49
- db $44, $45
-
- db $02
- dw vBGMap + $69
- db $46, $47
-
- db $00
-
-ResolveRedStageBonusMultiplierCollision: ; 016d9d
- ld a, [wWhichBonusMultiplierRailing]
- and a
- jp z, Func_16e51
- xor a
- ld [wWhichBonusMultiplierRailing], a
- lb de, $00, $0d
- call PlaySoundEffect
- ld a, [wWhichBonusMultiplierRailingId]
- sub $21
- jr nz, .asm_16ddc
- ld a, $9
- callba Func_10000
- ld a, [wd610]
- cp $3
- jr nz, .asm_16e35
- ld a, $1
- ld [wd610], a
- ld a, $3
- ld [wd611], a
- ld a, [wd60c]
- set 7, a
- ld [wd60c], a
- jr .asm_16e35
-
-.asm_16ddc
- ld a, $a
- callba Func_10000
- ld a, [wd611]
- cp $3
- jr nz, .asm_16e35
- ld a, $1
- ld [wd610], a
- ld a, $1
- ld [wd611], a
- ld a, $80
- ld [wd612], a
- ld a, [wd60d]
- set 7, a
- ld [wd60d], a
- ld a, [wd482]
- inc a
- cp 100
- jr c, .asm_16e10
- ld a, 99
-.asm_16e10
- ld [wd482], a
- jr nc, .asm_16e24
- ld c, $19
- call Func_e55
- callba z, Func_30164
-.asm_16e24
- ld a, [wd60c]
- ld [wd614], a
- ld a, [wd60d]
- ld [wd615], a
- ld a, $1
- ld [wd613], a
-.asm_16e35
- ld bc, TenPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wd60c]
- call Func_16f28
- ld a, [wd60d]
- add $14
- call Func_16f28
- ret
-
-Func_16e51: ; 0x16e51
- call Func_16ef5
- ld a, [wd612]
- and a
- jr z, .asm_16e8f
- dec a
- ld [wd612], a
- cp $70
- jr nz, .asm_16e6e
- ld a, $2
- ld [wd610], a
- ld a, $2
- ld [wd611], a
- jr .asm_16e8f
-
-.asm_16e6e
- and a
- jr nz, .asm_16e8f
- ld a, $3
- ld [wd610], a
- xor a
- ld [wd611], a
- ld a, [wd482]
- call Func_16f95
- ld a, [wd60c]
- call Func_16f28
- ld a, [wd60d]
- add $14
- call Func_16f28
- ret
-
-.asm_16e8f
- ld a, [wd610]
- cp $2
- jr c, .asm_16ec1
- cp $3
- ld a, [hNumFramesDropped]
- jr c, .asm_16ea0
- srl a
- srl a
-.asm_16ea0
- ld b, a
- and $3
- jr nz, .asm_16ec1
- bit 3, b
- jr nz, .asm_16eb6
- ld a, [wd60c]
- res 7, a
- ld [wd60c], a
- call Func_16f28
- jr .asm_16ec1
-
-.asm_16eb6
- ld a, [wd60c]
- set 7, a
- ld [wd60c], a
- call Func_16f28
-.asm_16ec1
- ld a, [wd611]
- cp $2
- ret c
- cp $3
- ld a, [hNumFramesDropped]
- jr c, .asm_16ed1
- srl a
- srl a
-.asm_16ed1
- ld b, a
- and $3
- ret nz
- bit 3, b
- jr nz, .asm_16ee7
- ld a, [wd60d]
- res 7, a
- ld [wd60d], a
- add $14
- call Func_16f28
- ret
-
-.asm_16ee7
- ld a, [wd60d]
- set 7, a
- ld [wd60d], a
- add $14
- call Func_16f28
- ret
-
-Func_16ef5: ; 0x16ef5
- ld a, [wd5ca]
- and a
- ret nz
- ld a, [wd613]
- and a
- ret z
- xor a
- ld [wd613], a
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5cc
- ld de, BonusMultiplierText
- call LoadTextHeader
- ld hl, wBottomMessageText + $12
- ld a, [wd614]
- and $7f
- jr z, .asm_16f1f
- add $30
- ld [hli], a
-.asm_16f1f
- ld a, [wd615]
- res 7, a
- add $30
- ld [hl], a
- ret
-
-Func_16f28: ; 0x16f28
- push af
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_16f33
- pop af
- call Func_16f38
- ret
-
-.asm_16f33
- pop af
- call Func_16f7b
- ret
-
-Func_16f38: ; 0x16f38
- push af
- res 7, a
- ld hl, wd60e
- cp $14
- jr c, .asm_16f47
- ld hl, wd60f
- sub $a
-.asm_16f47
- cp [hl]
- jr z, .asm_16f5c
- ld [hl], a
- ld c, a
- ld b, $0
- sla c
- ld hl, TileDataPointers_16fc8
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_16fc8)
- call Func_10aa
-.asm_16f5c
- pop af
- ld bc, $0000
- bit 7, a
- jr z, .asm_16f68
- res 7, a
- set 1, c
-.asm_16f68
- cp $14
- jr c, .asm_16f6e
- set 2, c
-.asm_16f6e
- ld hl, Data_171e4
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(Data_171e4)
- call Func_10aa
- ret
-
-Func_16f7b: ; 0x16f7b
- bit 7, a
- jr z, .asm_16f83
- res 7, a
- add $a
-.asm_16f83
- ld c, a
- ld b, $0
- sla c
- ld hl, TileDataPointers_17228
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_17228)
- call Func_10aa
- ret
-
-Func_16f95: ; 0x16f95
- ld a, [wd482]
- inc a
- cp 100
- jr c, .asm_16f9f
- ld a, 99
-.asm_16f9f
- ld b, a
- xor a
- ld hl, Data_16fc1
- ld c, $7
-.asm_16fa6
- bit 0, b
- jr z, .asm_16fac
- add [hl]
- daa
-.asm_16fac
- srl b
- inc hl
- dec c
- jr nz, .asm_16fa6
- push af
- swap a
- and $f
- ld [wd60c], a
- pop af
- and $f
- ld [wd60d], a
- ret
-
-Data_16fc1:
-; BCD powers of 2
- db $01
- db $02
- db $04
- db $08
- db $16
- db $32
- db $64
-
-TileDataPointers_16fc8:
- dw TileData_16ff0
- dw TileData_16ff5
- dw TileData_16ffa
- dw TileData_16fff
- dw TileData_17004
- dw TileData_17009
- dw TileData_1700e
- dw TileData_17013
- dw TileData_17018
- dw TileData_1701d
- dw TileData_17022
- dw TileData_17027
- dw TileData_1702c
- dw TileData_17031
- dw TileData_17036
- dw TileData_1703b
- dw TileData_17040
- dw TileData_17045
- dw TileData_1704a
- dw TileData_1704f
-
-TileData_16ff0: ; 0x16ff0
- db $02
- dw TileData_17054
- dw TileData_1705e
-
-TileData_16ff5: ; 0x16ff5
- db $02
- dw TileData_17068
- dw TileData_17072
-
-TileData_16ffa: ; 0x16ffa
- db $02
- dw TileData_1707c
- dw TileData_17086
-
-TileData_16fff: ; 0x16fff
- db $02
- dw TileData_17090
- dw TileData_1709a
-
-TileData_17004: ; 0x17004
- db $02
- dw TileData_170a4
- dw TileData_170ae
-
-TileData_17009: ; 0x17009
- db $02
- dw TileData_170b8
- dw TileData_170c2
-
-TileData_1700e: ; 0x1700e
- db $02
- dw TileData_170cc
- dw TileData_170d6
-
-TileData_17013: ; 0x17013
- db $02
- dw TileData_170e0
- dw TileData_170ea
-
-TileData_17018: ; 0x17018
- db $02
- dw TileData_170f4
- dw TileData_170fe
-
-TileData_1701d: ; 0x1701d
- db $02
- dw TileData_17108
- dw TileData_17112
-
-TileData_17022: ; 0x17022
- db $02
- dw TileData_1711c
- dw TileData_17126
-
-TileData_17027: ; 0x17027
- db $02
- dw TileData_17130
- dw TileData_1713a
-
-TileData_1702c: ; 0x1702c
- db $02
- dw TileData_17144
- dw TileData_1714e
-
-TileData_17031: ; 0x17031
- db $02
- dw TileData_17158
- dw TileData_17162
-
-TileData_17036: ; 0x17036
- db $02
- dw TileData_1716c
- dw TileData_17176
-
-TileData_1703b: ; 0x1703b
- db $02
- dw TileData_17180
- dw TileData_1718a
-
-TileData_17040: ; 0x17040
- db $02
- dw TileData_17194
- dw TileData_1719e
-
-TileData_17045: ; 0x17045
- db $02
- dw TileData_171a8
- dw TileData_171b2
-
-TileData_1704a: ; 0x1704a
- db $02
- dw TileData_171bc
- dw TileData_171c6
-
-TileData_1704f: ; 0x1704f
- db $02
- dw TileData_171d0
- dw TileData_171da
-
-TileData_17054: ; 0x17054
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1280
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1705e: ; 0x1705e
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1140
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17068: ; 0x17068
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17072: ; 0x17072
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1160
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1707c: ; 0x1707c
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17086: ; 0x17086
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1180
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17090: ; 0x17090
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1709a: ; 0x1709a
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170a4: ; 0x170a4
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1300
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170ae: ; 0x170ae
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170b8: ; 0x170b8
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1320
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170c2: ; 0x170c2
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170cc: ; 0x170cc
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1340
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170d6: ; 0x170d6
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1200
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170e0: ; 0x170e0
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1360
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170ea: ; 0x170ea
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1220
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170f4: ; 0x170f4
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1380
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_170fe: ; 0x170fe
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1240
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17108: ; 0x17108
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $46
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17112: ; 0x17112
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $48
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1260
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1711c: ; 0x1711c
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1500
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17126: ; 0x17126
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17130: ; 0x17130
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1520
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1713a: ; 0x1713a
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17144: ; 0x17144
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1540
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1714e: ; 0x1714e
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1400
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17158: ; 0x17158
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1560
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17162: ; 0x17162
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1420
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1716c: ; 0x1716c
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1580
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17176: ; 0x17176
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1440
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17180: ; 0x17180
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1718a: ; 0x1718a
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1460
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_17194: ; 0x17194
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1719e: ; 0x1719e
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1480
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_171a8: ; 0x171a8
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_171b2: ; 0x171b2
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_171bc: ; 0x171bc
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1600
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_171c6: ; 0x171c6
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_171d0: ; 0x171d0
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4a
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1620
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_171da: ; 0x171da
- dw Func_11d2
- db $20, $02
- dw vTilesSH tile $4c
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-Data_171e4:
- dw Data_171ec
- dw Data_171ef
- dw Data_171f2
- dw Data_171f5
-
-Data_171ec: ; 0x171ec
- db $01
- dw Data_171f8
-
-Data_171ef: ; 0x171ef
- db $01
- dw Data_17204
-
-Data_171f2: ; 0x171f2
- db $01
- dw Data_17210
-
-Data_171f5: ; 0x171f5
- db $01
- dw Data_1721c
-
-Data_171f8: ; 0x171f8
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $C6
-
- db $01
- dw vBGMap + $24
- db $C7
-
- db $00
-
-Data_17204: ; 0x17204
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $C8
-
- db $01
- dw vBGMap + $24
- db $C9
-
- db $00
-
-Data_17210: ; 0x17210
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $CA
-
- db $01
- dw vBGMap + $2F
- db $CB
-
- db $00
-
-Data_1721c: ; 0x1721c
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $CC
-
- db $01
- dw vBGMap + $2F
- db $CD
-
- db $00
-
-TileDataPointers_17228:
- dw TileData_17278
- dw TileData_1727b
- dw TileData_1727e
- dw TileData_17281
- dw TileData_17284
- dw TileData_17287
- dw TileData_1728a
- dw TileData_1728d
- dw TileData_17290
- dw TileData_17293
- dw TileData_17296
- dw TileData_17299
- dw TileData_1729c
- dw TileData_1729f
- dw TileData_172a2
- dw TileData_172a5
- dw TileData_172a8
- dw TileData_172ab
- dw TileData_172ae
- dw TileData_172b1
- dw TileData_172b4
- dw TileData_172b7
- dw TileData_172ba
- dw TileData_172bd
- dw TileData_172c0
- dw TileData_172c3
- dw TileData_172c6
- dw TileData_172c9
- dw TileData_172cc
- dw TileData_172cf
- dw TileData_172d2
- dw TileData_172d5
- dw TileData_172d8
- dw TileData_172db
- dw TileData_172de
- dw TileData_172e1
- dw TileData_172e4
- dw TileData_172e7
- dw TileData_172ea
- dw TileData_172ed
-
-TileData_17278: ; 0x17278
- db $01
- dw TileData_172f0
-
-TileData_1727b: ; 0x1727b
- db $01
- dw TileData_172fc
-
-TileData_1727e: ; 0x1727e
- db $01
- dw TileData_17308
-
-TileData_17281: ; 0x17281
- db $01
- dw TileData_17314
-
-TileData_17284: ; 0x17284
- db $01
- dw TileData_17320
-
-TileData_17287: ; 0x17287
- db $01
- dw TileData_1732c
-
-TileData_1728a: ; 0x1728a
- db $01
- dw TileData_17338
-
-TileData_1728d: ; 0x1728d
- db $01
- dw TileData_17344
-
-TileData_17290: ; 0x17290
- db $01
- dw TileData_17350
-
-TileData_17293: ; 0x17293
- db $01
- dw TileData_1735c
-
-TileData_17296: ; 0x17296
- db $01
- dw TileData_17368
-
-TileData_17299: ; 0x17299
- db $01
- dw TileData_17374
-
-TileData_1729c: ; 0x1729c
- db $01
- dw TileData_17380
-
-TileData_1729f: ; 0x1729f
- db $01
- dw TileData_1738c
-
-TileData_172a2: ; 0x172a2
- db $01
- dw TileData_17398
-
-TileData_172a5: ; 0x172a5
- db $01
- dw TileData_173a4
-
-TileData_172a8: ; 0x172a8
- db $01
- dw TileData_173b0
-
-TileData_172ab: ; 0x172ab
- db $01
- dw TileData_173bc
-
-TileData_172ae: ; 0x172ae
- db $01
- dw TileData_173c8
-
-TileData_172b1: ; 0x172b1
- db $01
- dw TileData_173d4
-
-TileData_172b4: ; 0x172b4
- db $01
- dw TileData_173e0
-
-TileData_172b7: ; 0x172b7
- db $01
- dw TileData_173ec
-
-TileData_172ba: ; 0x172ba
- db $01
- dw TileData_173f8
-
-TileData_172bd: ; 0x172bd
- db $01
- dw TileData_17404
-
-TileData_172c0: ; 0x172c0
- db $01
- dw TileData_17410
-
-TileData_172c3: ; 0x172c3
- db $01
- dw TileData_1741c
-
-TileData_172c6: ; 0x172c6
- db $01
- dw TileData_17428
-
-TileData_172c9: ; 0x172c9
- db $01
- dw TileData_17434
-
-TileData_172cc: ; 0x172cc
- db $01
- dw TileData_17440
-
-TileData_172cf: ; 0x172cf
- db $01
- dw TileData_1744c
-
-TileData_172d2: ; 0x172d2
- db $01
- dw TileData_17458
-
-TileData_172d5: ; 0x172d5
- db $01
- dw TileData_17464
-
-TileData_172d8: ; 0x172d8
- db $01
- dw TileData_17470
-
-TileData_172db: ; 0x172db
- db $01
- dw TileData_1747c
-
-TileData_172de: ; 0x172de
- db $01
- dw TileData_17488
-
-TileData_172e1: ; 0x172e1
- db $01
- dw TileData_17494
-
-TileData_172e4: ; 0x172e4
- db $01
- dw TileData_174a0
-
-TileData_172e7: ; 0x172e7
- db $01
- dw TileData_174ac
-
-TileData_172ea: ; 0x172ea
- db $01
- dw TileData_174b8
-
-TileData_172ed: ; 0x172ed
- db $01
- dw TileData_174c4
-
-TileData_172f0: ; 0x172f0
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $40
-
- db $01
- dw vBGMap + $24
- db $41
-
- db $00
-
-TileData_172fc: ; 0x172fc
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $42
-
- db $01
- dw vBGMap + $24
- db $43
-
- db $00
-
-TileData_17308: ; 0x17308
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $44
-
- db $01
- dw vBGMap + $24
- db $45
-
- db $00
-
-TileData_17314: ; 0x17314
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $46
-
- db $01
- dw vBGMap + $24
- db $47
-
- db $00
-
-TileData_17320: ; 0x17320
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $48
-
- db $01
- dw vBGMap + $24
- db $49
-
- db $00
-
-TileData_1732c: ; 0x1732c
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $4A
-
- db $01
- dw vBGMap + $24
- db $4B
-
- db $00
-
-TileData_17338: ; 0x17338
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $4C
-
- db $01
- dw vBGMap + $24
- db $4D
-
- db $00
-
-TileData_17344: ; 0x17344
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $4E
-
- db $01
- dw vBGMap + $24
- db $4F
-
- db $00
-
-TileData_17350: ; 0x17350
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $50
-
- db $01
- dw vBGMap + $24
- db $51
-
- db $00
-
-TileData_1735c: ; 0x1735c
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $52
-
- db $01
- dw vBGMap + $24
- db $53
-
- db $00
-
-TileData_17368: ; 0x17368
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $2C
-
- db $01
- dw vBGMap + $24
- db $2D
-
- db $00
-
-TileData_17374: ; 0x17374
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $2E
-
- db $01
- dw vBGMap + $24
- db $2F
-
- db $00
-
-TileData_17380: ; 0x17380
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $30
-
- db $01
- dw vBGMap + $24
- db $31
-
- db $00
-
-TileData_1738c: ; 0x1738c
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $32
-
- db $01
- dw vBGMap + $24
- db $33
-
- db $00
-
-TileData_17398: ; 0x17398
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $34
-
- db $01
- dw vBGMap + $24
- db $35
-
- db $00
-
-TileData_173a4: ; 0x173a4
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $36
-
- db $01
- dw vBGMap + $24
- db $37
-
- db $00
-
-TileData_173b0: ; 0x173b0
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $38
-
- db $01
- dw vBGMap + $24
- db $39
-
- db $00
-
-TileData_173bc: ; 0x173bc
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $3A
-
- db $01
- dw vBGMap + $24
- db $3B
-
- db $00
-
-TileData_173c8: ; 0x173c8
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $3C
-
- db $01
- dw vBGMap + $24
- db $3D
-
- db $00
-
-TileData_173d4: ; 0x173d4
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $4
- db $3E
-
- db $01
- dw vBGMap + $24
- db $3F
-
- db $00
-
-TileData_173e0: ; 0x173e0
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $68
-
- db $01
- dw vBGMap + $2F
- db $69
-
- db $00
-
-TileData_173ec: ; 0x173ec
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $6A
-
- db $01
- dw vBGMap + $2F
- db $6B
-
- db $00
-
-TileData_173f8: ; 0x173f8
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $6C
-
- db $01
- dw vBGMap + $2F
- db $6D
-
- db $00
-
-TileData_17404: ; 0x17404
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $6E
-
- db $01
- dw vBGMap + $2F
- db $6F
-
- db $00
-
-TileData_17410: ; 0x17410
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $70
-
- db $01
- dw vBGMap + $2F
- db $71
-
- db $00
-
-TileData_1741c: ; 0x1741c
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $72
-
- db $01
- dw vBGMap + $2F
- db $73
-
- db $00
-
-TileData_17428: ; 0x17428
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $74
-
- db $01
- dw vBGMap + $2F
- db $75
-
- db $00
-
-TileData_17434: ; 0x17434
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $76
-
- db $01
- dw vBGMap + $2F
- db $77
-
- db $00
-
-TileData_17440: ; 0x17440
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $78
-
- db $01
- dw vBGMap + $2F
- db $79
-
- db $00
-
-TileData_1744c: ; 0x1744c
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $7A
-
- db $01
- dw vBGMap + $2F
- db $7B
-
- db $00
-
-TileData_17458: ; 0x17458
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $54
-
- db $01
- dw vBGMap + $2F
- db $55
-
- db $00
-
-TileData_17464: ; 0x17464
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $56
-
- db $01
- dw vBGMap + $2F
- db $57
-
- db $00
-
-TileData_17470: ; 0x17470
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $58
-
- db $01
- dw vBGMap + $2F
- db $59
-
- db $00
-
-TileData_1747c: ; 0x1747c
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $5A
-
- db $01
- dw vBGMap + $2F
- db $5B
-
- db $00
-
-TileData_17488: ; 0x17488
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $5C
-
- db $01
- dw vBGMap + $2F
- db $5D
-
- db $00
-
-TileData_17494: ; 0x17494
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $5E
-
- db $01
- dw vBGMap + $2F
- db $5F
-
- db $00
-
-TileData_174a0: ; 0x174a0
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $60
-
- db $01
- dw vBGMap + $2F
- db $61
-
- db $00
-
-TileData_174ac: ; 0x174ac
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $62
-
- db $01
- dw vBGMap + $2F
- db $63
-
- db $00
-
-TileData_174b8: ; 0x174b8
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $64
-
- db $01
- dw vBGMap + $2F
- db $65
-
- db $00
-
-TileData_174c4: ; 0x174c4
- dw LoadTileLists
- db $02
-
- db $01
- dw vBGMap + $F
- db $66
-
- db $01
- dw vBGMap + $2F
- db $67
-
- db $00
-
-Func_174d0: ; 0x174d0
- call Func_174ea
- ret nc
- ; fall through
-
-Func_174d4: ; 0x174d4
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_17528
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, $5
- ld de, LoadTileLists
- call Func_10c5
- ret
-
-Func_174ea: ; 0x174ea
- ld a, [wd624]
- ld hl, wd625
- cp [hl]
- ret z
- ld a, [wd626]
- dec a
- ld [wd626], a
- jr nz, .asm_17514
- ld a, [wd625]
- ld [wd624], a
- cp $3
- jr c, .asm_1750f
- ld a, $1
- ld [wd609], a
- ld a, $3
- ld [wd607], a
-.asm_1750f
- ld a, [wd624]
- scf
- ret
-
-.asm_17514
- and $7
- ret nz
- ld a, [wd626]
- bit 3, a
- jr nz, .asm_17523
- ld a, [wd624]
- scf
- ret
-
-.asm_17523
- ld a, [wd625]
- scf
- ret
-
-TileDataPointers_17528:
- dw TileData_17530
- dw TileData_1753B
- dw TileData_17546
- dw TileData_17551
-
-TileData_17530: ; 0x17530
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw $9907
- db $B0, $B1, $B0, $B1, $B0, $B1
- db $00
-
-TileData_1753B: ; 0x1753B
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw $9907
- db $AE, $AF, $B0, $B1, $B0, $B1
- db $00
-
-TileData_17546: ; 0x17546
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw $9907
- db $AE, $AF, $AE, $AF, $B0, $B1
- db $00
-
-TileData_17551: ; 0x17551
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw $9907
- db $AE, $AF, $AE, $AF, $AE, $AF
- db $00
-
+INCLUDE "engine/pinball_game/object_collision/red_stage_resolve_collision.asm"
INCLUDE "engine/pinball_game/draw_sprites/draw_red_field_sprites.asm"
SECTION "bank6", ROMX, BANK[$6]
@@ -10143,1452 +1414,7 @@ INCLUDE "engine/pinball_game/stage_init/init_gengar_bonus.asm"
INCLUDE "engine/pinball_game/ball_init/ball_init_gengar_bonus.asm"
INCLUDE "engine/pinball_game/load_stage_data/load_gengar_bonus.asm"
INCLUDE "engine/pinball_game/object_collision/gengar_bonus_object_collision.asm"
-
-Func_18377: ; 0x18377
- call Func_18464
- call Func_1860b
- call Func_187b1
- call Func_18d34
- call Func_183b7
- callba Func_107f8
- ld a, [wd57e]
- and a
- ret z
- xor a
- ld [wd57e], a
- ld a, $1
- ld [wd7be], a
- call Func_2862
- callba StopTimer
- ld a, [wd6a2]
- cp $5
- ret nc
- ld a, $1
- ld [wd6a8], a
- ret
-
-Func_183b7: ; 0x183b7
- ld a, [wd653]
- and a
- ret nz
- ld a, [wd4b4]
- cp $8a
- ret nc
- ld a, $1
- ld [wStageCollisionState], a
- ld [wd653], a
- callba LoadStageCollisionAttributes
- call Func_183db
- call Func_18d91
- ret
-
-Func_183db: ; 0x183db
- ld a, [wStageCollisionState]
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_183f8
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_183ee
- ld hl, TileDataPointers_1842e
-.asm_183ee
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, BANK(TileDataPointers_183f8)
- call Func_10aa
- ret
-
-TileDataPointers_183f8:
- dw TileData_183fc
- dw TileData_183ff
-
-TileData_183fc: ; 0x183fc
- db $01
- dw TileData_18402
-
-TileData_183ff: ; 0x183ff
- db $01
- dw TileData_18418
-
-TileData_18402: ; 0x18402
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $D4
-
- db $02 ; number of tiles
- dw vBGMap + $132
- db $D5, $D6
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $D9, $D7
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $D8
-
- db $00 ; terminator
-
-TileData_18418: ; 0x18418
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $12
-
- db $02 ; number of tiles
- dw vBGMap + $132
- db $0C, $0D
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $07, $08
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $03
-
- db $00 ; terminator
-
-TileDataPointers_1842e:
- dw TileData_18432
- dw TileData_18435
-
-TileData_18432: ; 0x18432
- db $01
- dw TileData_18438
-
-TileData_18435: ; 0x18435
- db $01
- dw TileData_1844e
-
-TileData_18438: ; 0x18438
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $D4
-
- db $02 ; number of tiles
- dw vBGMap + $132
- db $D5, $D6
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $D9, $D7
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $D8
-
- db $00 ; terminator
-
-TileData_1844e: ; 0x1844e
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $21
-
- db $02 ; number of tiles
- dw vBGMap + $132
- db $15, $16
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $0A, $0B
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $03
-
- db $00 ; terminator
-
-Func_18464: ; 0x18464
- ld a, [wd659]
- and a
- ret z
- ld a, [wd657]
- and a
- jr z, .asm_184d5
- xor a
- ld [wd657], a
- ld a, [wd7be]
- and a
- jr nz, .asm_184d5
- ld a, [wd658]
- sub $5
- ld c, a
- sla a
- sla a
- sla a
- add c
- ld c, a
- ld b, $0
- ld hl, wd65d
- add hl, bc
- ld d, h
- ld e, l
- ld a, [de]
- and a
- jr nz, .asm_184d5
- push de
- dec de
- dec de
- dec de
- ld hl, AnimationData_185e6
- call CopyHLToDE
- pop de
- ld a, $1
- ld [de], a
- ld a, [wd67b]
- inc a
- ld [wd67b], a
- ld bc, OneHundredThousandPoints
- callba AddBigBCD6FromQueue
- ld a, $33
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ld hl, $0100
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- lb de, $00, $2c
- call PlaySoundEffect
-.asm_184d5
- ld bc, $0830
- ld de, wd65d
- ld hl, wd675
- call Func_1850c
- ld bc, $5078
- ld de, wd666
- ld hl, wd677
- call Func_1850c
- ld bc, $3050
- ld de, wd66f
- ld hl, wd679
- call Func_1850c
- ld de, wd65d
- call Func_18562
- ld de, wd666
- call Func_18562
- ld de, wd66f
- call Func_18562
- ret
-
-Func_1850c: ; 0x1850c
- ld a, [de]
- and a
- ret nz
- inc de
- push hl
- ld a, [hli]
- push af
- push bc
- ld a, [hl]
- inc a
- and $1f
- ld [hl], a
- ld c, a
- ld b, $0
- ld hl, GastlyData_18542
- add hl, bc
- pop bc
- pop af
- and a
- jr nz, .asm_18534
- ld a, [de]
- add [hl]
- ld [de], a
- inc de
- ld a, [de]
- adc $0
- ld [de], a
- pop hl
- cp c
- ret c
- ld a, $1
- ld [hl], a
- ret
-
-.asm_18534
- ld a, [de]
- sub [hl]
- ld [de], a
- inc de
- ld a, [de]
- sbc $0
- ld [de], a
- pop hl
- cp b
- ret nc
- xor a
- ld [hl], a
- ret
-
-GastlyData_18542: ; 0x18542
-; Might be floating y offsets, not sure at the moment.
- db $31, $32, $33, $34, $35, $36, $37, $36
- db $35, $34, $33, $32, $33, $34, $35, $36
- db $37, $38, $39, $3A, $3B, $3A, $39, $38
- db $37, $36, $35, $34, $33, $32, $31, $30
-
-Func_18562: ; 0x18562
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, AnimationDataPointers_185d9
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ret nc
- ld a, [de]
- dec de
- and a
- jr nz, .asm_1858a
- ld a, [de]
- cp $4
- ret nz
- ld hl, AnimationData_185dd
- dec de
- dec de
- call CopyHLToDE
- ret
-
-.asm_1858a
- cp $1
- ret nz
- ld a, [de]
- cp $12
- ret nz
- ld a, [wd67b]
- cp $a
- jr nz, .asm_185b1
- ld a, $1
- ld [wd67e], a
- ld [wd687], a
- xor a
- ld [wd659], a
- ld [wd662], a
- ld [wd66b], a
- ld de, $0006
- call PlaySong
- ret
-
-.asm_185b1
- ld c, a
- ld a, [wd65d]
- and a
- jr nz, .asm_185b9
- inc c
-.asm_185b9
- ld a, [wd666]
- and a
- jr nz, .asm_185c0
- inc c
-.asm_185c0
- ld a, [wd66f]
- and a
- jr nz, .asm_185c7
- inc c
-.asm_185c7
- ld a, c
- cp $a
- ret nc
- ld hl, AnimationData_185dd
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- xor a
- ld [de], a
- ret
-
-AnimationDataPointers_185d9:
- dw AnimationData_185dd
- dw AnimationData_185e6
-
-AnimationData_185dd: ; 0x185dd
-; Each entry is [duration][OAM id]
- db $0D, $01
- db $0D, $00
- db $0D, $02
- db $0D, $00
- db $00 ; terminator
-
-AnimationData_185e6: ; 0x185e6
-; Each entry is [duration][OAM id]
- db $05, $03
- db $04, $03
- db $04, $04
- db $04, $03
- db $04, $04
- db $03, $03
- db $03, $04
- db $03, $03
- db $03, $04
- db $02, $03
- db $02, $04
- db $02, $03
- db $02, $04
- db $01, $03
- db $01, $04
- db $01, $03
- db $01, $04
- db $80, $04
- db $00 ; terminator
-
-Func_1860b: ; 0x1860b
- ld a, [wd67e]
- and a
- ret z
- ld a, [wd67c]
- and a
- jr z, .asm_1867c
- xor a
- ld [wd67c], a
- ld a, [wd7be]
- and a
- jr nz, .asm_1867c
- ld a, [wd67d]
- sub $8
- ld c, a
- sla a
- sla a
- sla a
- add c
- ld c, a
- ld b, $0
- ld hl, wd682
- add hl, bc
- ld d, h
- ld e, l
- ld a, [de]
- and a
- jr nz, .asm_1867c
- push de
- dec de
- dec de
- dec de
- ld hl, AnimationData_1878a
- call CopyHLToDE
- pop de
- ld a, $1
- ld [de], a
- ld a, [wd695]
- inc a
- ld [wd695], a
- ld bc, FiveHundredThousandPoints
- callba AddBigBCD6FromQueue
- ld a, $33
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ld hl, $0100
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- lb de, $00, $2d
- call PlaySoundEffect
-.asm_1867c
- ld bc, $5078
- ld de, wd682
- ld hl, wd691
- call Func_186a1
- ld bc, $1038
- ld de, wd68b
- ld hl, wd693
- call Func_186a1
- ld de, wd682
- call Func_186f7
- ld de, wd68b
- call Func_186f7
- ret
-
-Func_186a1: ; 0x186a1
- ld a, [de]
- and a
- ret nz
- inc de
- push hl
- ld a, [hli]
- push af
- push bc
- ld a, [hl]
- inc a
- and $1f
- ld [hl], a
- ld c, a
- ld b, $0
- ld hl, HaunterData_186d7
- add hl, bc
- pop bc
- pop af
- and a
- jr nz, .asm_186c9
- ld a, [de]
- add [hl]
- ld [de], a
- inc de
- ld a, [de]
- adc $0
- ld [de], a
- pop hl
- cp c
- ret c
- ld a, $1
- ld [hl], a
- ret
-
-.asm_186c9
- ld a, [de]
- sub [hl]
- ld [de], a
- inc de
- ld a, [de]
- sbc $0
- ld [de], a
- pop hl
- cp b
- ret nc
- xor a
- ld [hl], a
- ret
-
-HaunterData_186d7:
-; Might be floating y offsets, not sure at the moment.
- db $31, $32, $33, $34, $35, $36, $37, $36
- db $35, $34, $33, $32, $33, $34, $35, $36
- db $37, $38, $39, $3A, $3B, $3A, $39, $38
- db $37, $36, $35, $34, $33, $32, $31, $30
-
-Func_186f7: ; 0x186f7
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, AnimationDataPointers_1877d
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ret nc
- ld a, [de]
- dec de
- and a
- jr nz, .asm_1871f
- ld a, [de]
- cp $4
- ret nz
- ld hl, AnimationData_18781
- dec de
- dec de
- call CopyHLToDE
- ret
-
-.asm_1871f
- cp $1
- ret nz
- ld a, [de]
- cp $12
- jr nz, .asm_18761
- ld a, [wd695]
- cp $a
- jr nz, .asm_18740
- ld a, $1
- ld [wd656], a
- call Func_18d72
- call Func_18d91
- ld de, $0000
- call PlaySong
- ret
-
-.asm_18740
- ld c, a
- ld a, [wd682]
- and a
- jr nz, .asm_18748
- inc c
-.asm_18748
- ld a, [wd68b]
- and a
- jr nz, .asm_1874f
- inc c
-.asm_1874f
- ld a, c
- cp $a
- ret nc
- ld hl, AnimationData_18781
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- xor a
- ld [de], a
- ret
-
-.asm_18761
- cp $13
- ret nz
- ld a, [wd695]
- cp $a
- ret nz
- ld a, $1
- ld [wd698], a
- xor a
- ld [wd67e], a
- ld [wd687], a
- ld de, GENGAR
- call PlayCry
- ret
-
-AnimationDataPointers_1877d:
- dw AnimationData_18781
- dw AnimationData_1878a
-
-AnimationData_18781:
-; Each entry is [duration][OAM id]
- db $0D, $00
- db $0D, $01
- db $0D, $02
- db $0D, $03
- db $00 ; terminator
-
-AnimationData_1878a:
-; Each entry is [duration][OAM id]
- db $05, $04
- db $04, $04
- db $04, $05
- db $04, $04
- db $04, $05
- db $03, $04
- db $03, $05
- db $03, $04
- db $03, $05
- db $02, $04
- db $02, $05
- db $02, $04
- db $02, $05
- db $01, $04
- db $01, $05
- db $01, $04
- db $01, $05
- db $80, $05
- db $10, $05
- db $00 ; terminator
-
-Func_187b1: ; 0x187b1
- ld a, [wd698]
- and a
- ret z
- ld a, [wd696]
- and a
- jp z, .asm_1885d
- xor a
- ld [wd696], a
- ld a, [wd7be]
- and a
- jp nz, .asm_1885d
- ld a, [wd697]
- sub $a
- ld c, a
- sla a
- sla a
- sla a
- add c
- ld c, a
- ld b, $0
- ld hl, wd69c
- add hl, bc
- ld d, h
- ld e, l
- ld a, [de]
- and a
- jp nz, .asm_1885d
- push de
- dec de
- dec de
- dec de
- ld a, [wd6a2]
- inc a
- ld [wd6a2], a
- cp $5
- jr nc, .asm_18804
- ld hl, AnimationData_18b2b
- call CopyHLToDE
- pop de
- ld a, $2
- ld [de], a
- lb de, $00, $37
- call PlaySoundEffect
- jr .asm_18826
-
-.asm_18804
- ld hl, AnimationData_18b32
- call CopyHLToDE
- pop de
- ld a, $3
- ld [de], a
- ld a, $1
- ld [wd7be], a
- call Func_2862
- callba StopTimer
- ld de, $0000
- call PlaySong
-.asm_18826
- ld bc, FiveMillionPoints
- callba AddBigBCD6FromQueue
- ld a, $33
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ld hl, $0200
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- ld a, [wGengarYPos]
- add $0
- ld [wGengarYPos], a
- ld a, [wGengarYPos + 1]
- adc $ff
- ld [wGengarYPos + 1], a
-.asm_1885d
- ld a, [wd69c]
- cp $2
- jr nc, .asm_18869
- call Func_18876
- jr .asm_1886c
-
-.asm_18869
- call Func_188e1
-.asm_1886c
- ld de, wd69c
- call Func_189af
- call Func_1894c
- ret
-
-Func_18876: ; 0x18876
- ld a, [wd6a3]
- cp $1
- jr z, .asm_1889b
- cp $2
- jr z, .asm_1889b
- ld a, [wGengarAnimationState]
- cp $1
- jr z, .asm_1888c
- cp $2
- jr nz, .asm_1889b
-.asm_1888c
- ld a, $1
- ld [wd6a4], a
- ld a, $11
- ld [wd803], a
- ld a, $8
- ld [wd804], a
-.asm_1889b
- ld a, [wGengarAnimationState]
- ld hl, wd6a3
- cp [hl]
- ret z
- ld a, [wd69c]
- and a
- jr nz, .asm_188da
- ld a, [wGengarYPos + 1]
- add $80
- cp $a0
- jr nc, .asm_188da
- ld a, [wGengarAnimationState]
- and a
- jr z, .asm_188ca
- ld a, [wGengarYPos]
- add $0
- ld [wGengarYPos], a
- ld a, [wGengarYPos + 1]
- adc $3
- ld [wGengarYPos + 1], a
- jr .asm_188da
-
-.asm_188ca
- ld a, [wGengarYPos]
- add $0
- ld [wGengarYPos], a
- ld a, [wGengarYPos + 1]
- adc $1
- ld [wGengarYPos + 1], a
-.asm_188da
- ld a, [wGengarAnimationState]
- ld [wd6a3], a
- ret
-
-Func_188e1: ; 0x188e1
- ld a, [wd6a3]
- cp $1
- jr z, .asm_18901
- cp $2
- jr z, .asm_18901
- ld a, [wGengarAnimationState]
- cp $1
- jr z, .asm_188f7
- cp $2
- jr nz, .asm_18901
-.asm_188f7
- ld a, $1
- ld [wd803], a
- ld a, $8
- ld [wd804], a
-.asm_18901
- ld a, [wGengarAnimationState]
- cp $6
- ret z
- ld a, [wGengarAnimationState]
- ld hl, wd6a3
- cp [hl]
- ret z
- ld a, [wd69c]
- cp $3
- jr nz, .asm_1891d
- ld a, [wd69b]
- cp $9
- jr c, .asm_18945
-.asm_1891d
- ld a, [wGengarAnimationState]
- and a
- jr z, .asm_18935
- ld a, [wGengarYPos]
- add $0
- ld [wGengarYPos], a
- ld a, [wGengarYPos + 1]
- adc $fd
- ld [wGengarYPos + 1], a
- jr .asm_18945
-
-.asm_18935
- ld a, [wGengarYPos]
- add $0
- ld [wGengarYPos], a
- ld a, [wGengarYPos + 1]
- adc $ff
- ld [wGengarYPos + 1], a
-.asm_18945
- ld a, [wGengarAnimationState]
- ld [wd6a3], a
- ret
-
-Func_1894c: ; 0x1894c
- ld a, [wd6a6]
- and a
- jr nz, .asm_1898f
- ld a, [wd6a4]
- and a
- jr z, .asm_1898f
- ld a, [wd6a5]
- cp $3
- jr z, .asm_18980
- inc a
- ld [wd6a5], a
- ld a, [wd548]
- ld hl, wd549
- and [hl]
- jr z, .asm_18973
- ld a, [wd4b6]
- inc a
- ld [wd4b6], a
-.asm_18973
- ld a, [wd7a0]
- dec a
- ld [wd7a0], a
- ld a, $1
- ld [wUpperTiltPushing], a
- ret
-
-.asm_18980
- lb de, $00, $2b
- call PlaySoundEffect
- ld a, $1
- ld [wd6a6], a
- xor a
- ld [wd6a4], a
-.asm_1898f
- xor a
- ld [wUpperTiltPushing], a
- ld a, [wd6a5]
- and a
- jr z, .asm_189a5
- dec a
- ld [wd6a5], a
- ld a, [wd7a0]
- inc a
- ld [wd7a0], a
- ret
-
-.asm_189a5
- ld a, [wd6a4]
- and a
- ret nz
- xor a
- ld [wd6a6], a
- ret
-
-Func_189af: ; 0x189af
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, AnimationDataPointers_18a57
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ret nc
- ld a, [de]
- dec de
- and a
- jr nz, .asm_189d7
- ld a, [de]
- cp $4
- ret nz
- ld hl, AnimationData_18a61
- dec de
- dec de
- call CopyHLToDE
- ret
-
-.asm_189d7
- cp $1
- jr nz, .asm_189ed
- ld a, [de]
- cp $60
- ret nz
- ld hl, AnimationData_18a61
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- xor a
- ld [de], a
- ret
-
-.asm_189ed
- cp $2
- jr nz, .asm_18a04
- ld a, [de]
- cp $3
- ret nz
- ld hl, AnimationData_18a6a
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- ld a, $1
- ld [de], a
- ret
-
-.asm_18a04
- cp $3
- jr nz, .asm_18a3c
- ld a, [de]
- cp $1
- jr nz, .asm_18a14
- lb de, $00, $2e
- call PlaySoundEffect
- ret
-
-.asm_18a14
- cp $fe
- ret nz
- ld a, $1
- ld [wd6a8], a
- ld a, $1
- ld [wd498], a
- ld a, $1
- ld [wd49a], a
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5dc
- ld de, GengarStageClearedText
- call LoadTextHeader
- lb de, $4b, $2a
- call PlaySoundEffect
- ret
-
-.asm_18a3c
- cp $4
- ret nz
- ld a, [de]
- cp $2
- ret nz
- ld hl, AnimationData_18a61
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- xor a
- ld [de], a
- ld de, $0007
- call PlaySong
- ret
-
-AnimationDataPointers_18a57:
- dw AnimationData_18a61
- dw AnimationData_18a6a
- dw AnimationData_18b2b
- dw AnimationData_18b32
- dw AnimationData_18d2f
-
-AnimationData_18a61:
-; Each entry is [duration][OAM id]
- db $40, $01
- db $10, $00
- db $40, $02
- db $10, $00
- db $00 ; terminator
-
-AnimationData_18a6a:
-; Each entry is [duration][OAM id]
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $01, $00
- db $01, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $01, $03
- db $01, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $01, $03
- db $01, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $01, $04
- db $01, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $00
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $04
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $02, $03
- db $01, $06
- db $00 ; terminator
-
-AnimationData_18b2b:
-; Each entry is [duration][OAM id]
- db $10, $05
- db $20, $01
- db $08, $00
- db $00 ; terminator
-
-AnimationData_18b32:
-; Each entry is [duration][OAM id]
- db $10, $05
- db $10, $00
- db $08, $03
- db $0C, $04
- db $0A, $03
- db $10, $00
- db $08, $03
- db $0C, $04
- db $0A, $03
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $00
- db $04, $06
- db $04, $00
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $00
- db $04, $06
- db $04, $00
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $01
- db $04, $06
- db $04, $00
- db $04, $06
- db $04, $00
- db $04, $06
- db $04, $02
- db $04, $06
- db $04, $02
- db $04, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $00
- db $03, $06
- db $03, $00
- db $03, $06
- db $03, $00
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $03, $01
- db $03, $06
- db $02, $01
- db $01, $00
- db $03, $06
- db $03, $00
- db $03, $06
- db $03, $00
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $03, $02
- db $03, $06
- db $02, $02
- db $02, $06
- db $02, $02
- db $02, $06
- db $02, $02
- db $02, $06
- db $02, $02
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $01
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $00
- db $02, $06
- db $02, $02
- db $02, $06
- db $02, $02
- db $02, $06
- db $02, $02
- db $02, $06
- db $02, $02
- db $02, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $02
- db $01, $06
- db $01, $00
- db $01, $06
- db $01, $00
- db $01, $06
- db $00 ; terminator
-
-AnimationData_18d2f:
-; Each entry is [duration][OAM id]
- db $40, $00
- db $40, $00
- db $00 ; terminator
-
-Func_18d34: ; 0x18d34
- ld a, [wWhichGravestone]
- and a
- jr z, .asm_18d71
- xor a
- ld [wWhichGravestone], a
- ld a, [wd7be]
- and a
- jr nz, .asm_18d71
- ld bc, OneHundredPoints
- callba AddBigBCD6FromQueue
- ld a, $ff
- ld [wd803], a
- ld a, $3
- ld [wd804], a
- ld hl, $0100
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- ld de, $002f
- call Func_4d8
-.asm_18d71
- ret
+INCLUDE "engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm"
Func_18d72: ; 0x18d72
ld a, [wd656]
@@ -12033,1548 +1859,13 @@ INCLUDE "engine/pinball_game/stage_init/init_mewtwo_bonus.asm"
INCLUDE "engine/pinball_game/ball_init/ball_init_mewtwo_bonus.asm"
INCLUDE "engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm"
INCLUDE "engine/pinball_game/object_collision/mewtwo_bonus_object_collision.asm"
-
-Func_19451: ; 0x19451
- call Func_19531
- call Func_19701
- call Func_1948b
- callba Func_107f8
- ld a, [wd57e]
- and a
- ret z
- xor a
- ld [wd57e], a
- ld a, $1
- ld [wd7be], a
- call Func_2862
- callba StopTimer
- ld a, [wd6b1]
- cp $8
- ret nc
- ld a, $1
- ld [wd6b3], a
- ret
-
-Func_1948b: ; 0x1948b
- ld a, [wd6a9]
- and a
- ret nz
- ld a, [wd4b4]
- cp $8a
- ret nc
- ld a, $1
- ld [wStageCollisionState], a
- ld [wd6a9], a
- callba LoadStageCollisionAttributes
- call Func_194ac
- ret
-
-Func_194ac: ; 0x194ac
- ld a, [wStageCollisionState]
- sla a
- ld c, a
- ld b, $0
- ld hl, Data_194c9
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_194bf
- ld hl, Data_194fd
-.asm_194bf
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(Data_194c9)
- call Func_10aa
- ret
-
-Data_194c9:
- dw Data_194cd
- dw Data_194d0
-
-Data_194cd: ; 0x194cd
- db 1
- dw Data_194d3
-
-Data_194d0: ; 0x194d0
- db 1
- dw Data_194e8
-
-Data_194d3: ; 0x194d3
- dw LoadTileLists
- db $05 ; total number of tiles to load
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $45
-
- db $01 ; number of tiles
- dw vBGMap + $133
- db $80
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $80, $09
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $12
-
- db $00 ; terminator
-
-Data_194e8: ; 0x194e8
- dw LoadTileLists
- db $05 ; total number of tiles to load
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $46
-
- db $01 ; number of tiles
- dw vBGMap + $133
- db $47
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $48, $49
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $4A
-
- db $00 ; terminator
-
-Data_194fd:
- dw Data_19501
- dw Data_19504
-
-Data_19501: ; 0x19501
- db 1
- dw Data_19507
-
-Data_19504: ; 0x19504
- db 1
- dw Data_1951c
-
-Data_19507: ; 0x19507
- dw LoadTileLists
- db $05 ; total number of tiles to load
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $45
-
- db $01 ; number of tiles
- dw vBGMap + $133
- db $80
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $80, $09
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $12
-
- db $00 ; terminator
-
-Data_1951c: ; 0x1951c
- dw LoadTileLists
- db $05 ; total number of tiles to load
-
- db $01 ; number of tiles
- dw vBGMap + $113
- db $46
-
- db $01 ; number of tiles
- dw vBGMap + $133
- db $47
-
- db $02 ; number of tiles
- dw vBGMap + $152
- db $48, $49
-
- db $01 ; number of tiles
- dw vBGMap + $172
- db $4A
-
- db $00 ; terminator
-
-Func_19531: ; 0x19531
- ld a, [wd6aa]
- and a
- jr z, .asm_195a2
- xor a
- ld [wd6aa], a
- ld a, [wd7be]
- and a
- jr nz, .asm_195a2
- ld a, [wd6af]
- cp $2
- jr nc, .asm_195a2
- ld bc, FiveMillionPoints
- callba AddBigBCD6FromQueue
- ld a, [wd6b0]
- inc a
- cp $3
- jr nz, .asm_19565
- ld a, [wd6b1]
- inc a
- ld [wd6b1], a
- xor a
-.asm_19565
- ld [wd6b0], a
- call ResetOrbitingBalls
- ld a, [wd6b1]
- cp $8
- jr z, .asm_19582
- ld a, $2
- ld de, wd6ae
- call Func_19679
- lb de, $00, $39
- call PlaySoundEffect
- jr .asm_195a2
-
-.asm_19582
- ld a, $3
- ld de, wd6ae
- call Func_19679
- ld a, $1
- ld [wd7be], a
- call Func_2862
- callba StopTimer
- ld de, $0000
- call PlaySong
-.asm_195a2
- call Func_195ac
- ld de, wd6af
- call Func_195f5
- ret
-
-Func_195ac: ; 0x195ac
- ld a, [wd6af]
- and a
- ret nz
- ld hl, wd6bd
- ld de, $0008
- ld b, $6
-.asm_195b9
- ld a, [hl]
- cp $2b
- jr nz, .asm_195ce
- dec hl
- dec hl
- dec hl
- ld a, [hl]
- cp $2
- ret nz
- ld a, $1
- ld de, wd6ae
- call Func_19679
- ret
-
-.asm_195ce
- add hl, de
- dec b
- jr nz, .asm_195b9
- ret
-
-Func_195d3: ; 0x195d3
- ld hl, wd6bd
- ld de, $0008
- ld b, $6
-.asm_195db
- ld a, [hl]
- cp $18
- jr nz, .asm_195f0
- dec hl
- dec hl
- dec hl
- ld a, [hl]
- cp $2
- ret nz
- ld d, h
- ld e, l
- dec de
- ld a, $1
- call Func_19876
- ret
-
-.asm_195f0
- add hl, de
- dec b
- jr nz, .asm_195db
- ret
-
-Func_195f5: ; 0x195f5
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, Data_19691
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ret nc
- ld a, [de]
- rst JumpTable ; calls JumpToFuncInTable
-CallTable_1960d: ; 0x1960d
- dw Func_19615
- dw Func_1961e
- dw Func_1962f
- dw Func_19638
-
-Func_19615: ; 0x19615
- dec de
- ld a, [de]
- cp $4
- ret nz
- xor a
- jp Func_19679
-
-Func_1961e: ; 0x1961e
- dec de
- ld a, [de]
- cp $c
- jr nz, .asm_19628
- call Func_195d3
- ret
-
-.asm_19628
- cp $d
- ret nz
- xor a
- jp Func_19679
-
-Func_1962f: ; 0x1962f
- dec de
- ld a, [de]
- cp $1
- ret nz
- xor a
- jp Func_19679
-
-Func_19638: ; 0x19638
- dec de
- ld a, [de]
- cp $1
- jr nz, .asm_19645
- lb de, $00, $40
- call PlaySoundEffect
- ret
-
-.asm_19645
- cp $20
- ret nz
- ld a, $1
- ld [wd6b3], a
- ld a, [wd499]
- ld [wd498], a
- ld a, [wNumMewtwoBonusCompletions]
- cp $2 ; only counts up to 2. Gets reset to 0 when Mew is encountered in Catch 'Em Mode.
- jr z, .asm_1965e
- inc a
- ld [wNumMewtwoBonusCompletions], a
-.asm_1965e
- ld a, $1
- ld [wd49a], a
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5dc
-.asm_1966b
- ld de, MewtwoStageClearedText
- call LoadTextHeader
- lb de, $4b, $2a
- call PlaySoundEffect
- ret
-
-Func_19679: ; 0x19679
- push af
- sla a
- ld c, a
- ld b, $0
- ld hl, Data_19691
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- pop af
- ld [de], a
- ret
-
-Data_19691:
- dw Data_19699
- dw Data_196a2
- dw Data_196bd
- dw Data_196c0
-
-Data_19699: ; 0x19699
- db $30, $00, $04, $05, $34, $04, $03, $05
- db $00 ; terminator
-
-Data_196a2: ; 0x196a2
- db $0A, $00, $06, $01, $05, $02, $05, $01, $04, $02, $04, $01, $04, $02, $03, $01
- db $03, $02, $03, $01, $03, $02, $04, $00, $40, $03
- db $00 ; terminator
-
-Data_196bd: ; 0x196bd
- db $10, $06
- db $00 ; terminator
-
-Data_196c0: ; 0x196c0
- db $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07
- db $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07
- db $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07
- db $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07
- db $00 ; terminator
-
-Func_19701: ; 0x19701
- ld a, [wd6b4]
- and a
- jr z, .asm_19742
- xor a
- ld [wd6b4], a
- ld a, [wd7be]
- and a
- jr nz, .asm_19742
- ld a, [wd6b5]
- sub $1
- sla a
- sla a
- sla a
- ld c, a
- ld b, $0
- ld hl, wd6ba
- add hl, bc
- ld d, h
- ld e, l
- ld a, [de]
- and a
- jr nz, .asm_19742
- dec de
- ld a, $2
- call Func_19876
- ld bc, OneHundredThousandPoints
- callba AddBigBCD6FromQueue
- lb de, $00, $38
- call PlaySoundEffect
-.asm_19742
- ld de, wd6bd
- call SetOrbitingBallCoordinates
- ld de, wd6c5
- call SetOrbitingBallCoordinates
- ld de, wd6cd
- call SetOrbitingBallCoordinates
- ld de, wd6d5
- call SetOrbitingBallCoordinates
- ld de, wd6dd
- call SetOrbitingBallCoordinates
- ld de, wd6e5
- call SetOrbitingBallCoordinates
- ld de, wd6b6
- call UpdateOrbitingBallAnimation
- ld de, wd6be
- call UpdateOrbitingBallAnimation
- ld de, wd6c6
- call UpdateOrbitingBallAnimation
- ld de, wd6ce
- call UpdateOrbitingBallAnimation
- ld de, wd6d6
- call UpdateOrbitingBallAnimation
- ld de, wd6de
- call UpdateOrbitingBallAnimation
- ret
-
-SetOrbitingBallCoordinates: ; 0x1978b
-; Sets the x, y coordinates for one of the balls orbiting around Mewtwo
- ld a, [de]
- ld c, a
- ld b, $0
- sla c
- inc a
- cp $48 ; num entries in MewtwoOrbitingBallsCoords
- jr c, .looadCoords
- xor a
-.looadCoords
- ld [de], a
- ld hl, MewtwoOrbitingBallsCoords + 1
- add hl, bc
- dec de
- ld a, [hld]
- ld [de], a
- dec de
- ld a, [hl]
- ld [de], a
- ret
-
-MewtwoOrbitingBallsCoords:
-; x, y coordinates for balls that orbit around Mewtwo.
- db $62, $08
- db $62, $0A
- db $62, $0D
- db $61, $0F
- db $60, $11
- db $60, $13
- db $5F, $15
- db $5D, $17
- db $5C, $19
- db $5A, $1A
- db $59, $1C
- db $57, $1D
- db $55, $1F
- db $53, $20
- db $51, $20
- db $4F, $21
- db $4D, $22
- db $4A, $22
- db $48, $22
- db $46, $22
- db $43, $22
- db $41, $21
- db $3F, $20
- db $3D, $20
- db $3B, $1F
- db $39, $1D
- db $37, $1C
- db $36, $1A
- db $34, $19
- db $33, $17
- db $31, $15
- db $30, $13
- db $30, $11
- db $2F, $0F
- db $2E, $0D
- db $2E, $0A
- db $2E, $08
- db $2E, $06
- db $2E, $03
- db $2F, $01
- db $30, $FF
- db $30, $FD
- db $31, $FB
- db $33, $F9
- db $34, $F7
- db $36, $F6
- db $37, $F4
- db $39, $F3
- db $3B, $F1
- db $3D, $F0
- db $3F, $F0
- db $41, $EF
- db $43, $EE
- db $46, $EE
- db $48, $EE
- db $4A, $EE
- db $4D, $EE
- db $4F, $EF
- db $51, $F0
- db $53, $F0
- db $55, $F1
- db $57, $F3
- db $59, $F4
- db $5A, $F6
- db $5C, $F7
- db $5D, $F9
- db $5F, $FB
- db $60, $FD
- db $60, $FF
- db $61, $01
- db $62, $03
- db $62, $06
-
-UpdateOrbitingBallAnimation: ; 0x19833
-; Updates the animation for one of the balls orbiting around Mewtwo.
- ld a, [de]
- and a
- ret z
- inc de
- inc de
- inc de
- inc de
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, OrbitingBallAnimations
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ret nc
- ld a, [de]
- rst JumpTable ; calls JumpToFuncInTable
-CallTable_19852: ; 0x19852
- dw Func_1985a
- dw Func_19863
- dw Func_1986c
- dw Func_1986d
-
-Func_1985a: ; 0x1985a
- dec de
- ld a, [de]
- cp $6
- ret nz
- xor a
- jp Func_19876
-
-Func_19863: ; 0x19863
- dec de
- ld a, [de]
- cp $7
- ret nz
- xor a
- jp Func_19876
-
-Func_1986c: ; 0x1986c
- ret
-
-Func_1986d: ; 0x1986d
- dec de
- ld a, [de]
- cp $1
- ret nz
- xor a
- jp Func_19876
-
-Func_19876: ; 0x19876
- push af
- sla a
- ld c, a
- ld b, $0
- ld hl, OrbitingBallAnimations
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- pop af
- ld [de], a
- ret
-
-ResetOrbitingBalls: ; 0x1988e
- ld a, [wd6b1]
- sla a
- sla a
- sla a
- ld c, a
- ld b, $0
- ld hl, OrbitingBallsStartCoordsIndices
- add hl, bc
- ld de, wd6bd
- ld b, $6
-.asm_198a3
- ld a, [hli]
- push bc
- push de
- push hl
- bit 7, a
- jr nz, .asm_198b7
- ld [de], a
- dec de
- dec de
- dec de
- dec de
- ld a, $3
- call Func_19876
- jr .asm_198c0
-
-.asm_198b7
- dec de
- dec de
- dec de
- dec de
- dec de
- dec de
- dec de
- xor a
- ld [de], a
-.asm_198c0
- pop hl
- pop de
- pop bc
- ld a, e
- add $8
- ld e, a
- jr nc, .asm_198ca
- inc d
-.asm_198ca
- dec b
- jr nz, .asm_198a3
- ret
-
-OrbitingBallsStartCoordsIndices:
-; When Mewtwo is hit, the orbs briefly disappear. When they reappear,
-; this table determines which entry in the MewtwoOrbitingBallsCoords table
-; each orb will start at.
-; Last two bytes in each row are unused
- db $00, $0C, $18, $24, $30, $3C, $FF, $FF ; All 6 orbs are up
- db $00, $0E, $1D, $2B, $3A, $FF, $FF, $FF ; 5 orbs are up
- db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 4 orbs
- db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 3 orbs
- db $00, $18, $30, $FF, $FF, $FF, $FF, $FF ; 2 orbs
- db $00, $24, $FF, $FF, $FF, $FF, $FF, $FF ; 1 orb
- db $00, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; 0 orbs
- db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
- db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
-
-OrbitingBallAnimations:
- dw OrbitingBallAnimation1
- dw OrbitingBallAnimation2
- dw OrbitingBallAnimation3
- dw OrbitingBallAnimation4
-
-OrbitingBallAnimation1: ; 0x1991e
-; Each entry is [duration][OAM id]
- db $0A, $00
- db $08, $01
- db $08, $02
- db $0A, $03
- db $08, $02
- db $08, $01
- db $00 ; terminator
-
-OrbitingBallAnimation2: ; 0x1992b
-; Each entry is [duration][OAM id]
- db $05, $04
- db $06, $05
- db $06, $06
- db $07, $07
- db $07, $08
- db $08, $09
- db $08, $0A
- db $00 ; terminator
-
-OrbitingBallAnimation3: ; 0x1993a
-; Each entry is [duration][OAM id]
- db $05, $0A
- db $05, $09
- db $04, $08
- db $04, $07
- db $03, $06
- db $03, $05
- db $02, $04
- db $80, $0B
- db $00 ; terminator
-
-OrbitingBallAnimation4: ; 0x1994b
-; Each entry is [duration][OAM id]
- db $0C, $0B
- db $00 ; terminator
-
+INCLUDE "engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm"
INCLUDE "engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm"
INCLUDE "engine/pinball_game/stage_init/init_diglett_bonus.asm"
INCLUDE "engine/pinball_game/ball_init/ball_init_diglett_bonus.asm"
INCLUDE "engine/pinball_game/load_stage_data/load_diglett_bonus.asm"
INCLUDE "engine/pinball_game/object_collision/diglett_bonus_object_collision.asm"
-
-Func_19b88: ; 0x19b88
- call Func_19c52
- call Func_1aad4
- call Func_19b92
- ret
-
-Func_19b92: ; 0x19b92
- ld a, [wd73a]
- and a
- ret nz
- ld a, [wd4b4]
- cp $8a
- ret nc
- ld a, $1
- ld [wStageCollisionState], a
- ld [wd73a], a
- xor a
- ld [wc853], a
- ld [wc873], a
- ld [wc893], a
- ld a, $5
- ld [wc872], a
- ld a, $7
- ld [wc892], a
- call Func_19bbd
- ret
-
-Func_19bbd: ; 0x19bbd
- ld a, [wStageCollisionState]
- sla a
- ld c, a
- ld b, $0
- ld hl, Data_19bda
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_19bd0
- ld hl, Data_19c16
-.asm_19bd0
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(Data_19bda)
- call Func_10aa
- ret
-
-Data_19bda:
- dw Data_19bde
- dw Data_19be1
-
-Data_19bde: ; 0x19bde
- dbw $1, TileListData_19be4
-
-Data_19be1: ; 0x19be1
- dbw $1, TileListData_19bfd
-
-TileListData_19be4: ; 0x19be4
- dw LoadTileLists
- db $09
- db $02
- dw vBGMap + $113
- db $4E, $4F
- db $02
- dw vBGMap + $133
- db $80, $4D
- db $03
- dw vBGMap + $152
- db $80, $4B, $4C
- db $02
- dw vBGMap + $172
- db $49, $4A
- db $00 ; terminator
-
-TileListData_19bfd: ; 0x19bfd
- dw LoadTileLists
- db $09
- db $02
- dw vBGMap + $113
- db $1D, $FB
- db $02
- dw vBGMap + $133
- db $1B, $FA
- db $03
- dw vBGMap + $152
- db $18, $19, $FB
- db $02
- dw vBGMap + $172
- db $14, $15
- db $00 ; terminator
-
-Data_19c16:
- dw Data_19c1a
- dw Data_19c1d
-
-Data_19c1a: ; 0x19c1a
- dbw $1, Data_19c20
-
-Data_19c1d: ; 0x19c1d
- dbw $1, Data_19c39
-
-Data_19c20: ; 0x19c20
- dw LoadTileLists
- db $09
- db $02
- dw vBGMap + $113
- db $4E, $4F
- db $02
- dw vBGMap + $133
- db $80, $4D
- db $03
- dw vBGMap + $152
- db $80, $4B, $4C
- db $02
- dw vBGMap + $172
- db $49, $4A
- db $00 ; terminator
-
-Data_19c39: ; 0x19c39
- dw LoadTileLists
- db $09
- db $02
- dw vBGMap + $113
- db $1D, $FB
- db $02
- dw vBGMap + $133
- db $1B, $FA
- db $03
- dw vBGMap + $152
- db $18, $19, $FB
- db $02
- dw vBGMap + $172
- db $14, $15
- db $00 ; terminator
-
-Func_19c52: ; 0x19c52
- ld a, [wd73b]
- and a
- jr z, .asm_19cc8
- xor a
- ld [wd73b], a
- ld bc, OneHundredThousandPoints
- callba AddBigBCD6FromQueue
- lb de, $00, $35
- call PlaySoundEffect
- ld hl, $0100
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- ld a, [wd73c]
- sub $1
- ld c, a
- ld b, $0
- ld hl, wDiglettStates
- add hl, bc
- ld a, [hl]
- cp $6
- jr nc, .asm_19cc8
- ld a, $8
- ld [hl], a
- call Func_19da8
- call Func_19df0
- ld hl, wDiglettStates
- ld bc, NUM_DIGLETTS << 8
- xor a
-.asm_19ca0
- ld a, [hli]
- and a
- jr z, .asm_19ca8
- cp $6
- jr c, .asm_19ca9
-.asm_19ca8
- inc c
-.asm_19ca9
- dec b
- jr nz, .asm_19ca0
- ld a, c
- cp NUM_DIGLETTS
- jr nz, .asm_19cc8
- ld hl, AnimationData_1ac75
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld a, $1
- ld [wDugrioState], a
- call Func_1ac2c
- ld de, $0002
- call PlaySong
-.asm_19cc8
- call Func_19cdd
- ld a, [wd765]
- and a
- ret nz
- ld a, $1
- ld [wd765], a
- ld a, [wDugrioState]
- and a
- call nz, Func_1ac2c
- ret
-
-Func_19cdd: ; 0x19cdd
- ld a, [wDiglettsInitializedFlag]
- and a
- jr nz, .alreadyInitializedDigletts
- ld a, [wDiglettInitDelayCounter]
- add DIGLETT_INITIALIZE_DELAY
- ld [wDiglettInitDelayCounter], a
- ret nc
- ld hl, DiglettInitializeOrder
- ld a, [wCurrentDiglett]
- ld c, a
- ld b, $0
- add hl, bc
- ld b, $1
-.asm_19cf8
- push bc
- ld a, [hli]
- bit 7, a
- jr z, .asm_19d02
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hli]
-.asm_19d02
- push hl
- ld c, a
- ld b, $0
- ld hl, wDiglettStates
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_19d29
- dec a
- jr nz, .asm_19d21
- ; pick a random starting state for the diglett that isn't the "hiding" state
- call GenRandom
- and $3
- add $2
- ld [hl], a
- call Func_19da8
- call Func_19dcd
- jr .asm_19d29
-
-.asm_19d21
- and $3
- add $2
- ld [hl], a
- call Func_19da8
-.asm_19d29
- pop hl
- pop bc
- dec b
- jr nz, .asm_19cf8
- ld hl, wDiglettsInitializedFlag
- ld a, [wCurrentDiglett]
- add $1
- cp NUM_DIGLETTS
- jr c, .notDoneInitializingDigletts
- set 0, [hl]
- sub NUM_DIGLETTS
-.notDoneInitializingDigletts
- ld [wCurrentDiglett], a
- ret
-
-.alreadyInitializedDigletts
- ld hl, DiglettUpdateOrder
- ld a, [wCurrentDiglett]
- ld c, a
- ld b, $0
- add hl, bc
- ld b, $4 ; update 4 digletts
-.updateDiglettLoop
- push bc
- ld a, [hli]
- bit 7, a
- jr z, .asm_19d58
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hli]
-.asm_19d58
- push hl
- ld c, a
- ld b, $0
- ld hl, wDiglettStates
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_19d8f
- dec a
- jr nz, .asm_19d77
- call GenRandom
- and $3
- add $2
- ld [hl], a
- call Func_19da8
- call Func_19dcd
- jr .asm_19d8f
-
-.asm_19d77
- cp $5
- jr c, .incrementDiglettState
- ld [hl], a
- jr nz, .asm_19d8f
- xor a
- ld [hl], a
- ld a, $1
- call Func_19da8
- jr .asm_19d8f
-
-.incrementDiglettState
- and $3
- add $2
- ld [hl], a
- call Func_19da8
-.asm_19d8f
- pop hl
- pop bc
- dec b
- jr nz, .updateDiglettLoop
- ld hl, wDiglettsInitializedFlag
- ld a, [wCurrentDiglett]
- add $4
- cp NUM_DIGLETTS
- jr c, .asm_19da4
- set 0, [hl]
- sub NUM_DIGLETTS
-.asm_19da4
- ld [wCurrentDiglett], a
- ret
-
-Func_19da8: ; 0x19da8
-; input: a = diglett state
-; c = diglett index
- cp $6
- jr c, .asm_19dae
- ld a, $6 ; "getting hit" state
-.asm_19dae
- push bc
- ld b, a
- sla c
- ld a, c
- sla c
- add c
- add b ; a = (index * 6) + state
- dec a
- ld c, a
- ld b, $0 ; bc = (index * 6) + state - 1
- sla c
- rl b ; bc = 2 * ((index * 6) + state - 1)
- ld hl, DiglettTileDataPointers
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(DiglettTileDataPointers)
- call Func_10aa
- pop bc
- ret
-
-Func_19dcd: ; 0x19dcd
- sla c
- ld a, c
- sla c
- add c
- ld c, a
- ld b, $0
- ld hl, Data_19e13
- add hl, bc
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- ld a, e
- add $1f
- ld e, a
- jr nc, .asm_19dea
- inc d
-.asm_19dea
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- ret
-
-Func_19df0: ; 0x19df0
- sla c
- ld a, c
- sla c
- add c
- ld c, a
- ld b, $0
- ld hl, Data_19e13
- add hl, bc
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld a, $2
- ld [de], a
- inc de
- ld [de], a
- ld a, e
- add $1f
- ld e, a
- jr nc, .asm_19e0d
- inc d
-.asm_19e0d
- ld a, $2
- ld [de], a
- inc de
- ld [de], a
- ret
-
-Data_19e13:
- dw wc7a1
- db $19, $19, $1A, $1B
-
- dw wc7e1
- db $1C, $1C, $1D, $1E
-
- dw wc821
- db $1F, $1F, $20, $21
-
- dw wc7c3
- db $22, $22, $23, $24
-
- dw wc803
- db $25, $25, $26, $27
-
- dw wc843
- db $28, $28, $29, $2A
-
- dw wc7a5
- db $2B, $2B, $2C, $2D
-
- dw wc7e5
- db $2E, $2E, $2F, $30
-
- dw wc825
- db $31, $31, $32, $33
-
- dw wc865
- db $34, $34, $35, $36
-
- dw wc7c7
- db $37, $37, $38, $39
-
- dw wc807
- db $3A, $3A, $3B, $3C
-
- dw wc847
- db $3D, $3D, $3E, $3F
-
- dw wc887
- db $40, $40, $41, $42
-
- dw wc7e9
- db $43, $43, $44, $45
-
- dw wc829
- db $46, $46, $47, $48
-
- dw wc869
- db $49, $49, $4A, $4B
-
- dw wc7cb
- db $19, $19, $1A, $1B
-
- dw wc80b
- db $1C, $1C, $1D, $1E
-
- dw wc84b
- db $1F, $1F, $20, $21
-
- dw wc88b
- db $22, $22, $23, $24
-
- dw wc7ad
- db $25, $25, $26, $27
-
- dw wc7ed
- db $28, $28, $29, $2A
-
- dw wc82d
- db $2B, $2B, $2C, $2D
-
- dw wc86d
- db $2E, $2E, $2F, $30
-
- dw wc7cf
- db $31, $31, $32, $33
-
- dw wc80f
- db $34, $34, $35, $36
-
- dw wc84f
- db $37, $37, $38, $39
-
- dw wc7b1
- db $3A, $3A, $3B, $3C
-
- dw wc7f1
- db $3D, $3D, $3E, $3F
-
- dw wc831
- db $40, $40, $41, $42
-
- ; unused pointers?
- dw DiglettInitializeOrder
- dw DiglettUpdateOrder
-
-INCLUDE "data/diglett_stage/diglett_stage_animation_data.asm"
-
-Func_1aad4: ; 0x1aad4
- ld a, [wd75f]
- and a
- jr z, .asm_1ab2c
- xor a
- ld [wd75f], a
- ld a, [wDugrioState]
- bit 0, a
- jr z, .asm_1ab2c
- cp $7
- jr z, .asm_1ab2c
- inc a
- ld [wDugrioState], a
- sla a
- ld c, a
- ld b, $0
- ld hl, AnimationDataPointers_1ac62
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld bc, FiveMillionPoints
- callba AddBigBCD6FromQueue
- lb de, $00, $36
- call PlaySoundEffect
- ld a, $33
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ld hl, $0200
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
-.asm_1ab2c
- call Func_1ab30
- ret
-
-Func_1ab30: ; 0x1ab30
- ld a, [wDugrioState]
- sla a
- ld c, a
- ld b, $0
- ld hl, AnimationDataPointers_1ac62
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, wDugtrioAnimationFrameCounter
- call UpdateAnimation
- ret nc
- ld a, [wDugrioState]
- and a
- ret z
- cp $1
- jr nz, .asm_1ab64
- ld a, [wDugtrioAnimationFrameIndex]
- cp $3
- ret nz
- ld hl, AnimationData_1ac75
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld a, $1
- ld [wDugrioState], a
- ret
-
-.asm_1ab64
- cp $2
- jr nz, .asm_1ab7d
- ld a, [wDugtrioAnimationFrameIndex]
- cp $1
- ret nz
- ld hl, AnimationData_1ac7f
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld a, $3
- ld [wDugrioState], a
- ret
-
-.asm_1ab7d
- cp $3
- jr nz, .asm_1ab96
- ld a, [wDugtrioAnimationFrameIndex]
- cp $3
- ret nz
- ld hl, AnimationData_1ac7f
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld a, $3
- ld [wDugrioState], a
- ret
-
-.asm_1ab96
- cp $4
- jr nz, .asm_1abaf
- ld a, [wDugtrioAnimationFrameIndex]
- cp $1
- ret nz
- ld hl, AnimationData_1ac89
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld a, $5
- ld [wDugrioState], a
- ret
-
-.asm_1abaf
- cp $5
- jr nz, .asm_1abc8
- ld a, [wDugtrioAnimationFrameIndex]
- cp $3
- ret nz
- ld hl, AnimationData_1ac89
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld a, $5
- ld [wDugrioState], a
- ret
-
-.asm_1abc8
- cp $6
- jr nz, .asm_1abe1
- ld a, [wDugtrioAnimationFrameIndex]
- cp $1
- ret nz
- ld hl, AnimationData_1ac93
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- ld a, $7
- ld [wDugrioState], a
- ret
-
-.asm_1abe1
- cp $7
- ret nz
- ld a, [wDugtrioAnimationFrameIndex]
- cp $1
- jr nz, .asm_1abf2
- ld de, $0000
- call PlaySong
- ret
-
-.asm_1abf2
- cp $2
- ret nz
- ld hl, AnimationData_1ac72
- ld de, wDugtrioAnimationFrameCounter
- call CopyHLToDE
- xor a
- ld [wDugrioState], a
- ld [wd498], a
- ld a, $1
- ld [wd49a], a
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5dc
- ld de, DiglettStageClearedText
- call LoadTextHeader
- lb de, $4b, $2a
- call PlaySoundEffect
- ld a, $1
- ld [wd7be], a
- call Func_2862
- ld hl, Data_1ac56
- jr asm_1ac2f
-
-Func_1ac2c: ; 0x1ac2c
- ld hl, Data_1ac4a
-asm_1ac2f:
- ld de, wc768
- ld b, $3
-.asm_1ac34
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- ld a, e
- add $1d
- ld e, a
- jr nc, .asm_1ac46
- inc d
-.asm_1ac46
- dec b
- jr nz, .asm_1ac34
- ret
-
-Data_1ac4a:
- db $00, $00, $00, $00
- db $14, $14, $14, $14
- db $15, $16, $17, $18
-
-Data_1ac56:
- db $50, $02, $02, $51
- db $02, $02, $02, $02
- db $02, $02, $02, $02
-
-AnimationDataPointers_1ac62: ; 0x1ac62
- dw AnimationData_1ac72
- dw AnimationData_1ac75
- dw AnimationData_1ac7c
- dw AnimationData_1ac7f
- dw AnimationData_1ac86
- dw AnimationData_1ac89
- dw AnimationData_1ac90
- dw AnimationData_1ac93
-
-AnimationData_1ac72: ; 0x1ac72
-; Each entry is [duration][OAM id]
- db $01, $0C
- db $00 ; terminator
-
-AnimationData_1ac75: ; 0x1ac75
-; Each entry is [duration][OAM id]
- db $0E, $00
- db $0E, $01
- db $0E, $02
- db $00 ; terminator
-
-AnimationData_1ac7c: ; 0x1ac7c
-; Each entry is [duration][OAM id]
- db $0D, $03
- db $00 ; terminator
-
-AnimationData_1ac7f: ; 0x1ac7f
-; Each entry is [duration][OAM id]
- db $0E, $04
- db $0E, $05
- db $0E, $06
- db $00
-
-AnimationData_1ac86: ; 0x1ac86
-; Each entry is [duration][OAM id]
- db $0D, $07
- db $00 ; terminator
-
-AnimationData_1ac89: ; 0x1ac89
-; Each entry is [duration][OAM id]
- db $0E, $08
- db $0E, $09
- db $0E, $0A
- db $00
-
-AnimationData_1ac90: ; 0x1ac90
-; Each entry is [duration][OAM id]
- db $0D, $0B
- db $00 ; terminator
-
-AnimationData_1ac93: ; 0x1ac93
-; Each entry is [duration][OAM id]
- db $01, $0D
- db $40, $0D
- db $00 ; terminator
-
+INCLUDE "engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm"
INCLUDE "engine/pinball_game/draw_sprites/draw_diglett_bonus_sprites.asm"
SECTION "bank7", ROMX, BANK[$7]
@@ -13583,8075 +1874,7 @@ INCLUDE "engine/pinball_game/stage_init/init_blue_field.asm"
INCLUDE "engine/pinball_game/ball_init/ball_init_blue_field.asm"
INCLUDE "engine/pinball_game/load_stage_data/load_blue_field.asm"
INCLUDE "engine/pinball_game/object_collision/blue_stage_object_collision.asm"
-
-Func_1c715: ; 0x1c715
- call ResolveShellderCollision
- call ResolveBlueStageSpinnerCollision
- call ResolveBlueStagePinballUpgradeTriggersCollision
- call HandleBlueStageBallTypeUpgradeCounter
- call Func_1e66a
- call ResolveBlueStageBoardTriggerCollision
- call ResolveBlueStagePikachuCollision
- call ResolveSlowpokeCollision
- call ResolveCloysterCollision
- call Func_1ea3b
- call ResolvePsyduckPoliwagCollision
- call ResolveBlueStageForceFieldCollision
- call Func_1e9c0
- call Func_1c8b6
- call Func_1f18a
- callba Func_146a9
- call Func_1f27b
- call Func_1df15
- callba Func_30188
- ld a, $0
- callba Func_10000
- ret
-
-Func_1c769: ; 0x1c769
- call Func_1ca4a
- call Func_1ce40
- call ResolvePsyduckPoliwagCollision
- call Func_1ca85
- call Func_1e4b8
- call HandleBlueStageBallTypeUpgradeCounter
- call Func_1e5c5
- call Func_1c7d7
- call ResolveBlueStagePikachuCollision
- call Func_1ead4
- call ResolveBlueStageBonusMultiplierCollision
- call Func_1e757
- call Func_1e9c0
- call Func_1ea0a
- call Func_1c8b6
- callba Func_14733
- callba Func_146a2
- call Func_1f261
- call Func_1de93
- callba Func_30188
- ld a, $0
- callba Func_10000
- ret
-
-Func_1c7c7: ; 0x1c7c7
- ld a, $0
- ld [wStageCollisionState], a
- callba LoadStageCollisionAttributes
- ret
-
-Func_1c7d7: ; 0x1c7d7
- ld a, [wPinballLaunchAlley]
- and a
- ret z
- xor a
- ld [wPinballLaunchAlley], a
- ld a, [wd4de]
- and a
- jr z, .asm_1c810
- xor a
- ld [wRightAlleyTrigger], a
- ld [wLeftAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- ld hl, wBallXVelocity
- ld [hli], a
- ld [hl], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- ld a, $71
- ld [wBallYVelocity], a
- ld a, $fa
- ld [wBallYVelocity + 1], a
- ld a, $1
- ld [wd549], a
- lb de, $00, $0a
- call PlaySoundEffect
-.asm_1c810
- ld a, $ff
- ld [wPreviousTriggeredGameObject], a
- ld a, [wd4de]
- and a
- ret nz
- ld a, [wd4e0]
- and a
- jr nz, .asm_1c82c
- call Func_1c839
- ld a, $1
- ld [wd4e0], a
- ld [wd4de], a
- ret
-
-.asm_1c82c
- ld hl, wKeyConfigBallStart
- call IsKeyPressed
- ret z
- ld a, $1
- ld [wd4de], a
- ret
-
-Func_1c839: ; 0x1c839
- ld a, [hGameBoyColorFlag]
- and a
- callba nz, LoadGreyBillboardPaletteData
-.showNextMap
- ld a, [wInitialMapSelectionIndex]
- inc a
- cp $7 ; number of maps to choose from at the start of play
- jr c, .gotMapId
- xor a ; wrap around to 0
-.gotMapId
- ld [wInitialMapSelectionIndex], a
- ld c, a
- ld b, $0
- ld hl, BlueStageInitialMaps
- add hl, bc
- ld a, [hl]
- ld [wCurrentMap], a
- push af
- lb de, $00, $48
- call PlaySoundEffect
- pop af
- add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
- callba LoadBillboardPicture
- ld b, $20 ; number of frames to delay before the next map is shown
-.waitOnCurrentMap
- push bc
- callba Func_eeee
- ld hl, wKeyConfigBallStart
- call IsKeyPressed
- jr nz, .ballStartKeyPressed
- pop bc
- dec b
- jr nz, .waitOnCurrentMap
- jr .showNextMap
-
-.ballStartKeyPressed
- pop bc
- callba Func_30253
- ld bc, StartFromMapText
- callba Func_3118f
- ld a, [wCurrentMap]
- ld [wd4e3], a
- xor a
- ld [wd4e2], a
- ret
-
-BlueStageInitialMaps: ; 0x1c8af
- db VIRIDIAN_CITY
- db VIRIDIAN_FOREST
- db MT_MOON
- db CERULEAN_CITY
- db VERMILION_STREETS
- db ROCK_MOUNTAIN
- db CELADON_CITY
-
-Func_1c8b6: ; 0x1c8b6
- ld a, [wd64c]
- inc a
- cp $3c
- jr z, .asm_1c8c2
- ld [wd64c], a
- ret
-
-.asm_1c8c2
- xor a
- ld [wd64c], a
- ld hl, wd64d
- inc [hl]
- ld a, [hl]
- cp $5
- ret nz
- ld a, [wd644]
- and a
- jr nz, .asm_1c8e1
- ld a, [wd643]
- and a
- jr nz, .asm_1c8e5
- ld a, [wRightAlleyCount]
- cp $2
- jr nc, .asm_1c8e5
-.asm_1c8e1
- xor a
- ld [wd64b], a
-.asm_1c8e5
- ld a, [wd644]
- and a
- jr nz, .asm_1c8f8
- ld a, [wd643]
- and a
- jr nz, .asm_1c8fc
- ld a, [wLeftAlleyCount]
- cp $3
- jr z, .asm_1c8fc
-.asm_1c8f8
- xor a
- ld [wd64b], a
-.asm_1c8fc
- xor a
- ld [wd64d], a
- xor a
- ld [wd64a], a
- ld [wd649], a
- ld [wd648], a
- ld a, [wBlueStageForceFieldDirection]
- cp $1 ; right direction
- jr z, .asm_1c97f
- cp $3 ; left direction
- jr z, .asm_1c97f
-.asm_1c915
- ld a, [wd644]
- cp $0
- jr z, .asm_1c925
- ld a, [wd55a]
- cp $0
- jr nz, .asm_1c933
- jr .asm_1c947
-
-.asm_1c925
- ld a, [wd643]
- cp $0
- jr nz, .asm_1c933
- ld a, [wRightAlleyCount]
- cp $2
- jr c, .asm_1c947
-.asm_1c933
- ld a, [wd64b]
- cp $1
- jr z, .asm_1c947
- ld a, $1 ; right direction
- ld [wBlueStageForceFieldDirection], a
- ld [wd64b], a
- ld [wd640], a
- jr .asm_1c99e
-
-.asm_1c947
- ld a, [wd644]
- cp $0
- jr z, .asm_1c955
- ld a, [wd55a]
- cp $0
- jr z, .asm_1c969
-.asm_1c955
- ld a, [wd643]
- cp $0
- jr nz, .asm_1c969
- ld a, [wLeftAlleyCount]
- cp $3
- jr nz, .asm_1c97f
- ld a, [wInSpecialMode]
- and a
- jr nz, .asm_1c97f
-.asm_1c969
- ld a, [wd64b]
- cp $3
- jr z, .asm_1c915
- ld a, $3 ; left direction
- ld [wBlueStageForceFieldDirection], a
- ld [wd64b], a
- ld a, $1
- ld [wd640], a
- jr .asm_1c99e
-
-.asm_1c97f
- ld a, [wd641]
- and a
- jr nz, .asm_1c993
- xor a
- ld [wBlueStageForceFieldDirection], a
- ld a, $1
- ld [wd640], a
- ld [wd64a], a
- jr .asm_1c99e
-
-.asm_1c993
- ld a, $2 ; down direction
- ld [wBlueStageForceFieldDirection], a
- ld a, $1
- ld [wd640], a
- ret
-
-.asm_1c99e
- ld a, [wBlueStageForceFieldDirection]
- cp $0 ; up direction
- jr nz, .asm_1c9ac
- ld a, $1
- ld [wd64a], a
- jr .asm_1c9c0
-
-.asm_1c9ac
- cp $1
- jr nz, .asm_1c9b7
- ld a, $1
- ld [wd649], a
- jr .asm_1c9c0
-
-.asm_1c9b7
- cp $3
- jr nz, .asm_1c9c0
- ld a, $1
- ld [wd648], a
-.asm_1c9c0
- ret
-
-ResolveShellderCollision: ; 0x1c9c1
- ld a, [wWhichShellder]
- and a
- jr z, .noCollision
- xor a
- ld [wWhichShellder], a
- call Func_1ca29
- ld a, [wd641]
- and a
- jr nz, .asm_1c9f2
- ld a, $1
- ld [wd641], a
- ld a, [wBlueStageForceFieldDirection]
- cp $0 ; up direction
- jr nz, .asm_1c9f2
- ld a, $2 ; down direction
- ld [wBlueStageForceFieldDirection], a
- ld a, $1
- ld [wd640], a
- ld a, $3
- ld [wd64c], a
- ld [wd64d], a
-.asm_1c9f2
- ld a, $10
- ld [wd4d6], a
- ld a, [wWhichShellderId]
- sub $3
- ld [wd4d7], a
- ld a, $4
- callba Func_10000
- ld bc, FiveHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ret
-
-.noCollision
- ld a, [wd4d6]
- and a
- ret z
- dec a
- ld [wd4d6], a
- ret nz
- ld a, $ff
- ld [wd4d7], a
- ret
-
-Func_1ca29: ; 0x1ca29
- ld a, $ff
- ld [wd803], a
- ld a, $3
- ld [wd804], a
- ld hl, $0200
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- lb de, $00, $0e
- call PlaySoundEffect
- ret
-
-Func_1ca4a: ; 1ca4a
- ld a, [wWildMonCollision]
- and a
- ret z
- xor a
- ld [wWildMonCollision], a
- ld a, $1
- ld [wBallHitWildMon], a
- lb de, $00, $06
- call PlaySoundEffect
- ret
-
-ResolveBlueStageSpinnerCollision: ; 0x1ca5f
- ld a, [wSpinnerCollision]
- and a
- jr z, Func_1ca85
- xor a
- ld [wSpinnerCollision], a
- ld a, [wBallYVelocity]
- ld c, a
- ld a, [wBallYVelocity + 1]
- ld b, a
- ld a, c
- ld [wd50b], a
- ld a, b
- ld [wd50c], a
- ld a, $c
- callba Func_10000
- ; fall through
-
-Func_1ca85: ; 0x1ca85
- ld hl, wd50b
- ld a, [hli]
- or [hl]
- ret z
- ld a, [wd50b]
- ld c, a
- ld a, [wd50c]
- ld b, a
- bit 7, b
- jr nz, .asm_1caa3
- ld a, c
- sub $7
- ld c, a
- ld a, b
- sbc $0
- ld b, a
- jr nc, .asm_1cab0
- jr .asm_1caad
-
-.asm_1caa3
- ld a, c
- add $7
- ld c, a
- ld a, b
- adc $0
- ld b, a
- jr nc, .asm_1cab0
-.asm_1caad
- ld bc, $0000
-.asm_1cab0
- ld a, c
- ld [wd50b], a
- ld a, b
- ld [wd50c], a
- ld hl, wd50b
- ld a, [wd509]
- add [hl]
- ld [wd509], a
- inc hl
- ld a, [wd50a]
- adc [hl]
- bit 7, a
- ld c, $0
- jr z, .asm_1cad3
- add $18
- ld c, $1
- jr .asm_1cadb
-
-.asm_1cad3
- cp $18
- jr c, .asm_1cadb
- sub $18
- ld c, $1
-.asm_1cadb
- ld [wd50a], a
- ld a, c
- and a
- ret z
- ld bc, TenPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd62d
- call Func_e4a
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- jr nz, .asm_1caff
- call Func_1cb1c
- ret
-
-.asm_1caff
- inc a
- ld [wPikachuSaverCharge], a
- call Func_1cb1c
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- jr nz, .asm_1cb12
- ld a, $64
- ld [wd51e], a
-.asm_1cb12
- ld a, [wCurrentStage]
- bit 0, a
- ret nz
- call Func_1cb43
- ret
-
-Func_1cb1c: ; 0x1cb1c
- ld a, [wd51e]
- and a
- ret nz
- ld a, [wPikachuSaverCharge]
- ld c, a
- ld b, $0
- ld hl, SoundEffectIds_1cb33
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- call PlaySoundEffect
- ret
-
-SoundEffectIds_1cb33:
- db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
-
-Func_1cb43: ; 0x1cb43
- ld a, [wPikachuSaverCharge]
- ld c, a
- sla c
- ld b, $0
- ld hl, TileDataPointers_1cb60
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1cb56
- ld hl, TileDataPointers_1cd10
-.asm_1cb56
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_1cb60)
- call Func_10aa
- ret
-
-TileDataPointers_1cb60:
- dw TileData_1cb80
- dw TileData_1cb85
- dw TileData_1cb8a
- dw TileData_1cb8f
- dw TileData_1cb94
- dw TileData_1cb99
- dw TileData_1cb9e
- dw TileData_1cba3
- dw TileData_1cba8
- dw TileData_1cbad
- dw TileData_1cbb2
- dw TileData_1cbb7
- dw TileData_1cbbc
- dw TileData_1cbc1
- dw TileData_1cbc6
- dw TileData_1cbcb
-
-TileData_1cb80: ; 0x1cb80
- db $02
- dw TileData_1cbd0
- dw TileData_1cbda
-
-TileData_1cb85: ; 0x1cb85
- db $02
- dw TileData_1cbe4
- dw TileData_1cbee
-
-TileData_1cb8a: ; 0x1cb8a
- db $02
- dw TileData_1cbf8
- dw TileData_1cc02
-
-TileData_1cb8f: ; 0x1cb8f
- db $02
- dw TileData_1cc0c
- dw TileData_1cc16
-
-TileData_1cb94: ; 0x1cb94
- db $02
- dw TileData_1cc20
- dw TileData_1cc2a
-
-TileData_1cb99: ; 0x1cb99
- db $02
- dw TileData_1cc34
- dw TileData_1cc3e
-
-TileData_1cb9e: ; 0x1cb9e
- db $02
- dw TileData_1cc48
- dw TileData_1cc52
-
-TileData_1cba3: ; 0x1cba3
- db $02
- dw TileData_1cc5c
- dw TileData_1cc66
-
-TileData_1cba8: ; 0x1cba8
- db $02
- dw TileData_1cc70
- dw TileData_1cc7a
-
-TileData_1cbad: ; 0x1cbad
- db $02
- dw TileData_1cc84
- dw TileData_1cc8e
-
-TileData_1cbb2: ; 0x1cbb2
- db $02
- dw TileData_1cc98
- dw TileData_1cca2
-
-TileData_1cbb7: ; 0x1cbb7
- db $02
- dw TileData_1ccac
- dw TileData_1ccb6
-
-TileData_1cbbc: ; 0x1cbbc
- db $02
- dw TileData_1ccc0
- dw TileData_1ccca
-
-TileData_1cbc1: ; 0x1cbc1
- db $02
- dw TileData_1ccd4
- dw TileData_1ccde
-
-TileData_1cbc6: ; 0x1cbc6
- db $02
- dw TileData_1cce8
- dw TileData_1ccf2
-
-TileData_1cbcb: ; 0x1cbcb
- db $02
- dw TileData_1ccfc
- dw TileData_1cd06
-
-TileData_1cbd0: ; 0xcbd0
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageBlueFieldTopBaseGameBoyGfx + $c20
- db Bank(StageBlueFieldTopBaseGameBoyGfx)
- db $00 ; terminator
-
-TileData_1cbda: ; 0xcbda
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageBlueFieldTopBaseGameBoyGfx + $c40
- db Bank(StageBlueFieldTopBaseGameBoyGfx)
- db $00 ; terminator
-
-TileData_1cbe4: ; 0xcbe4
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1800
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cbee: ; 0xcbee
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1820
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cbf8: ; 0xcbf8
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1840
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc02: ; 0xcc02
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1860
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc0c: ; 0xcc0c
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1880
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc16: ; 0xcc16
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc20: ; 0xcc20
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc2a: ; 0xcc2a
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc34: ; 0xcc34
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1900
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc3e: ; 0xcc3e
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1920
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc48: ; 0xcc48
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1940
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc52: ; 0xcc52
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1960
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc5c: ; 0xcc5c
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1980
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc66: ; 0xcc66
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc70: ; 0xcc70
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc7a: ; 0xcc7a
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc84: ; 0xcc84
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc8e: ; 0xcc8e
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cc98: ; 0xcc98
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cca2: ; 0xcca2
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccac: ; 0xccac
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccb6: ; 0xccb6
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccc0: ; 0xccc0
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AC0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccca: ; 0xccca
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AE0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccd4: ; 0xccd4
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccde: ; 0xccde
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cce8: ; 0xcce8
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccf2: ; 0xccf2
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1ccfc: ; 0xccfc
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6C
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileData_1cd06: ; 0xcd06
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $6E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00 ; terminator
-
-TileDataPointers_1cd10:
- dw TileData_1cd30
- dw TileData_1cd33
- dw TileData_1cd36
- dw TileData_1cd39
- dw TileData_1cd3c
- dw TileData_1cd3f
- dw TileData_1cd42
- dw TileData_1cd45
- dw TileData_1cd48
- dw TileData_1cd4b
- dw TileData_1cd4e
- dw TileData_1cd51
- dw TileData_1cd54
- dw TileData_1cd57
- dw TileData_1cd5a
- dw TileData_1cd5d
-
-TileData_1cd30: ; 0x1cd30
- db $01
- dw TileData_1cd60
-
-TileData_1cd33: ; 0x1cd33
- db $01
- dw TileData_1cd6e
-
-TileData_1cd36: ; 0x1cd36
- db $01
- dw TileData_1cd7c
-
-TileData_1cd39: ; 0x1cd39
- db $01
- dw TileData_1cd8a
-
-TileData_1cd3c: ; 0x1cd3c
- db $01
- dw TileData_1cd98
-
-TileData_1cd3f: ; 0x1cd3f
- db $01
- dw TileData_1cda6
-
-TileData_1cd42: ; 0x1cd42
- db $01
- dw TileData_1cdb4
-
-TileData_1cd45: ; 0x1cd45
- db $01
- dw TileData_1cdc2
-
-TileData_1cd48: ; 0x1cd48
- db $01
- dw TileData_1cdd0
-
-TileData_1cd4b: ; 0x1cd4b
- db $01
- dw TileData_1cdde
-
-TileData_1cd4e: ; 0x1cd4e
- db $01
- dw TileData_1cdec
-
-TileData_1cd51: ; 0x1cd51
- db $01
- dw TileData_1cdfa
-
-TileData_1cd54: ; 0x1cd54
- db $01
- dw TileData_1ce08
-
-TileData_1cd57: ; 0x1cd57
- db $01
- dw TileData_1ce16
-
-TileData_1cd5a: ; 0x1cd5a
- db $01
- dw TileData_1ce24
-
-TileData_1cd5d: ; 0x1cd5d
- db $01
- dw TileData_1ce32
-
-TileData_1cd60: ; 0x1cd60
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $4A, $4B
-
- db $00 ; terminator
-
-TileData_1cd6e: ; 0x1cd6e
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $4C, $4D
-
- db $00 ; terminator
-
-TileData_1cd7c: ; 0x1cd7c
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $4E, $4F
-
- db $00 ; terminator
-
-TileData_1cd8a: ; 0x1cd8a
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $50, $51
-
- db $00 ; terminator
-
-TileData_1cd98: ; 0x1cd98
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $52, $53
-
- db $00 ; terminator
-
-TileData_1cda6: ; 0x1cda6
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $54, $55
-
- db $00 ; terminator
-
-TileData_1cdb4: ; 0x1cdb4
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $56, $57
-
- db $00 ; terminator
-
-TileData_1cdc2: ; 0x1cdc2
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1cdd0: ; 0x1cdd0
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $48, $49
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1cdde: ; 0x1cdde
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $5C, $5D
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1cdec: ; 0x1cdec
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $5E, $5F
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1cdfa: ; 0x1cdfa
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $60, $61
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1ce08: ; 0x1ce08
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $62, $63
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1ce16: ; 0x1ce16
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $64, $65
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1ce24: ; 0x1ce24
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $66, $67
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $58, $59
-
- db $00 ; terminator
-
-TileData_1ce32: ; 0x1ce32
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $143
- db $68, $69
-
- db $02 ; number of tiles
- dw vBGMap + $163
- db $6A, $6B
-
- db $00 ; terminator
-
-Func_1ce40: ; 1ce40
- ld a, [wWhichBumper]
- and a
- jr z, .asm_1ce53
- call Func_1ce72
- call Func_1ce60
- xor a
- ld [wWhichBumper], a
- call Func_1ce94
-.asm_1ce53
- ld a, [wd4da]
- and a
- ret z
- dec a
- ld [wd4da], a
- call z, Func_1ce72
- ret
-
-Func_1ce60: ; 0x1ce60
- ld a, $10
- ld [wd4da], a
- ld a, [wWhichBumperId]
- sub $1
- ld [wd4db], a
- sla a
- inc a
- jr asm_1ce7a
-
-Func_1ce72: ; 1ce72
- ld a, [wd4db]
- cp $ff
- ret z
- sla a
-asm_1ce7a: ; 0x1ce7a
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1ceca
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1ce8a
- ld hl, TileDataPointers_1cf3a
-.asm_1ce8a
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_1ceca)
- call Func_10aa
- ret
-
-Func_1ce94: ; 0x1ce94
- ld a, $ff
- ld [wd803], a
- ld a, $3
- ld [wd804], a
- ld hl, $0200
- ld a, l
- ld [wFlipperYForce], a
- ld a, h
- ld [wFlipperYForce + 1], a
- ld a, $80
- ld [wFlipperCollision], a
- ld a, [wWhichBumperId]
- sub $1
- ld c, a
- ld b, $0
- ld hl, Data_1cec8
- add hl, bc
- ld a, [wCollisionForceAngle]
- add [hl]
- ld [wCollisionForceAngle], a
- lb de, $00, $0b
- call PlaySoundEffect
- ret
-
-Data_1cec8:
- db -8, 8
-
-TileDataPointers_1ceca:
- dw TileData_1ced2
- dw TileData_1ced5
- dw TileData_1ced8
- dw TileData_1cedb
-
-TileData_1ced2: ; 0x1ced2
- db $01
- dw TileData_1cede
-
-TileData_1ced5: ; 0x1ced5
- db $01
- dw TileData_1cef5
-
-TileData_1ced8: ; 0x1ced8
- db $01
- dw TileData_1cf0c
-
-TileData_1cedb: ; 0x1cedb
- db $01
- dw TileData_1cf23
-
-TileData_1cede: ; 0x1cede
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $61
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $62, $63
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $64, $65
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $66, $67
-
- db $00 ; number of tiles
-
-TileData_1cef5: ; 0x1cef5
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $68
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $69, $6A
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $6B, $6C
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $6D, $6E
-
- db $00 ; number of tiles
-
-TileData_1cf0c: ; 0x1cf0c
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $6F
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $70, $71
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $72, $73
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $74, $75
-
- db $00 ; number of tiles
-
-TileData_1cf23: ; 0x1cf23
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $76
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $77, $78
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $79, $7A
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $7B, $7C
-
- db $00 ; number of tiles
-
-TileDataPointers_1cf3a:
- dw TileData_1cf42
- dw TileData_1cf45
- dw TileData_1cf48
- dw TileData_1cf4b
-
-TileData_1cf42: ; 0x1cf42
- db $01
- dw TileData_1cf4e
-
-TileData_1cf45: ; 0x1cf45
- db $01
- dw TileData_1cf65
-
-TileData_1cf48: ; 0x1cf48
- db $01
- dw TileData_1cf7c
-
-TileData_1cf4b: ; 0x1cf4b
- db $01
- dw TileData_1cf93
-
-TileData_1cf4e: ; 0x1cf4e
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $39
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $3A, $3B
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $3C, $3D
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $3E, $3F
-
- db $00 ; terminator
-
-TileData_1cf65: ; 0x1cf65
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $124
- db $40
-
- db $02 ; number of tiles
- dw vBGMap + $144
- db $41, $42
-
- db $02 ; number of tiles
- dw vBGMap + $164
- db $43, $44
-
- db $02 ; number of tiles
- dw vBGMap + $185
- db $45, $46
-
- db $00 ; terminator
-
-TileData_1cf7c: ; 0x1cf7c
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $39
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $3B, $3A
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $3D, $3C
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $3F, $3E
-
- db $00 ; terminator
-
-TileData_1cf93: ; 0x1cf93
- dw LoadTileLists
- db $07 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $12F
- db $40
-
- db $02 ; number of tiles
- dw vBGMap + $14E
- db $42, $41
-
- db $02 ; number of tiles
- dw vBGMap + $16E
- db $44, $43
-
- db $02 ; number of tiles
- dw vBGMap + $18D
- db $46, $45
-
- db $00 ; terminator
-
-ResolveBlueStageBoardTriggerCollision: ; 0x1cfaa
- ld a, [wWhichBoardTrigger]
- and a
- ret z
- xor a
- ld [wWhichBoardTrigger], a
- ld bc, FivePoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wStageCollisionState]
- cp $0
- jr nz, .asm_1cfe5
- ld a, $1
- ld [wStageCollisionState], a
- callba LoadStageCollisionAttributes
- ld a, $1
- ld [wd580], a
- callba Func_1404a
-.asm_1cfe5
- ld a, [wWhichBoardTriggerId]
- sub $7
- ld c, a
- ld b, $0
- ld hl, wd521
- add hl, bc
- ld [hl], $1
- ld a, [wd521]
- and a
- call nz, Func_1d010
- ld a, [wd522]
- and a
- call nz, Func_1d047
- ld a, [wd523]
- and a
- call nz, HandleLeftAlleyTriggerBlueField
- ld a, [wd524]
- and a
- call nz, HandleRightAlleyTriggerBlueField
- ret
-
-Func_1d010: ; 0x1d010
- xor a
- ld [wd521], a
- ld a, [wLeftAlleyTrigger]
- and a
- ret z
- xor a
- ld [wLeftAlleyTrigger], a
- ld a, $1
- callba Func_10000
- ret c
- ld a, [wLeftAlleyCount]
- cp $3
- ret z
- inc a
- ld [wLeftAlleyCount], a
- cp $3
- jr z, .asm_1d03e
- set 7, a
- ld [wIndicatorStates], a
- ret
-
-.asm_1d03e
- ld [wIndicatorStates], a
- ld a, $80
- ld [wIndicatorStates + 2], a
- ret
-
-Func_1d047: ; 0x1d047
- xor a
- ld [wd522], a
- ld a, [wRightAlleyTrigger]
- and a
- ret z
- xor a
- ld [wRightAlleyTrigger], a
- ld a, $2
- callba Func_10000
- ret c
- ld a, [wRightAlleyCount]
- cp $3
- ret z
- inc a
- ld [wRightAlleyCount], a
- cp $3
- jr z, .asm_1d071
- set 7, a
-.asm_1d071
- ld [wIndicatorStates + 1], a
- ld a, [wRightAlleyCount]
- cp $2
- ret c
- ld a, $80
- ld [wIndicatorStates + 3], a
- ret
-
-HandleLeftAlleyTriggerBlueField: ; 0x1d080
-; Ball passed over the left alley trigger point in the Blue Field.
- xor a
- ld [wd523], a
- ld [wRightAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- ld a, $1
- ld [wLeftAlleyTrigger], a
- ret c
- ret
-
-HandleRightAlleyTriggerBlueField: ; 0x1d091
-; Ball passed over the right alley trigger point in the Blue Field.
- xor a
- ld [wd524], a
- ld [wLeftAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- ld a, $1
- ld [wRightAlleyTrigger], a
- ret
-
-ResolveBlueStagePikachuCollision: ; 0x1d0a1
- ld a, [wWhichPikachu]
- and a
- jr z, .asm_1d110
- xor a
- ld [wWhichPikachu], a
- ld a, [wd51c]
- and a
- jr nz, .asm_1d110
- ld a, [wPikachuSaverSlotRewardActive]
- and a
- jr nz, .asm_1d0c9
- ld a, [wWhichPikachuId]
- sub $d
- ld hl, wd518
- cp [hl]
- jr nz, .asm_1d110
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- jr nz, .asm_1d0fc
-.asm_1d0c9
- ld hl, PikachuSaverAnimationDataRedStage
- ld de, wPikachuSaverAnimationFrameCounter
- call CopyHLToDE
- ld a, [wPikachuSaverSlotRewardActive]
- and a
- jr nz, .asm_1d0dc
- xor a
- ld [wPikachuSaverCharge], a
-.asm_1d0dc
- ld a, $1
- ld [wd51c], a
- xor a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- ld [wd549], a
- call FillBottomMessageBufferWithBlackTile
- jr .asm_1d110
-
-.asm_1d0fc
- ld hl, PikachuSaverAnimation2DataRedStage
- ld de, wPikachuSaverAnimationFrameCounter
- call CopyHLToDE
- ld a, $2
- ld [wd51c], a
- lb de, $00, $3b
- call PlaySoundEffect
-.asm_1d110
- ld a, [wd51c]
- and a
- call z, Func_1d1fb
- call Func_1d133
- ld a, [wPikachuSaverCharge]
- cp MAX_PIKACHU_SAVER_CHARGE
- ret nz
- ld a, [wd51e]
- and a
- ret z
- dec a
- ld [wd51e], a
- cp $5a
- ret nz
- lb de, $0f, $22
- call PlaySoundEffect
- ret
-
-Func_1d133: ; 0x1d133
- ld a, [wd51c]
- cp $1
- jr nz, .asm_1d1ae
- ld hl, PikachuSaverAnimationDataRedStage
- ld de, wPikachuSaverAnimationFrameCounter
- call UpdateAnimation
- ret nc
- ld a, [wPikachuSaverAnimationFrameIndex]
- cp $1
- jr nz, .asm_1d18c
- xor a
- ld [wd85d], a
- call Func_310a
- rst AdvanceFrame
- ld a, $1
- callba PlayPikachuSoundClip
- ld a, $1
- ld [wd85d], a
- ld a, $ff
- ld [wd803], a
- ld a, $60
- ld [wd804], a
- ld hl, wd62e
- call Func_e4a
- jr nc, .asm_1d185
- ld c, $a
- call Func_e55
- callba z, Func_30164
-.asm_1d185
- lb de, $16, $10
- call PlaySoundEffect
- ret
-
-.asm_1d18c
- ld a, [wPikachuSaverAnimationFrameIndex]
- cp $11
- ret nz
- ld a, $fc
- ld [wBallYVelocity + 1], a
- ld a, $1
- ld [wd549], a
- ld bc, FiveThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- xor a
- ld [wd51c], a
- ret
-
-.asm_1d1ae
- cp $2
- jr nz, .asm_1d1c7
- ld hl, PikachuSaverAnimation2DataRedStage
- ld de, wPikachuSaverAnimationFrameCounter
- call UpdateAnimation
- ret nc
- ld a, [wPikachuSaverAnimationFrameIndex]
- cp $1
- ret nz
- xor a
- ld [wd51c], a
- ret
-
-.asm_1d1c7
- ld a, [hNumFramesDropped]
- swap a
- and $1
- ld [wPikachuSaverAnimationFrame], a
- ret
-
-PikachuSaverAnimationDataRedStage: ; 0x1d1d1
-; Each entry is [duration][OAM id]
- db $0C, $02
- db $05, $03
- db $05, $02
- db $05, $04
- db $05, $05
- db $05, $02
- db $06, $06
- db $06, $07
- db $06, $08
- db $06, $02
- db $06, $05
- db $06, $08
- db $06, $07
- db $06, $02
- db $06, $08
- db $06, $07
- db $06, $02
- db $01, $00
- db $00
-
-PikachuSaverAnimation2DataRedStage: ; 0x1d1f6
-; Each entry is [duration][OAM id]
- db $0C, $02
- db $01, $00
- db $00
-
-Func_1d1fb: ; 0x1d1fb
- ld hl, wKeyConfigLeftFlipper
- call IsKeyPressed2
- jr z, .asm_1d209
- ld hl, wd518
- ld [hl], $0
- ret
-
-.asm_1d209
- ld hl, wKeyConfigRightFlipper
- call IsKeyPressed2
- ret z
- ld hl, wd518
- ld [hl], $1
- ret
-
-ResolveSlowpokeCollision: ; 0x1d216
- ld a, [wSlowpokeCollision]
- and a
- jr z, .asm_1d253
- xor a
- ld [wSlowpokeCollision], a
- ld bc, TenThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $05
- call PlaySoundEffect
- ld hl, SlowpokeCollisionAnimationData ; 0x1d312
- ld de, wd632
- call CopyHLToDE
- xor a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wBallXPos], a
- ld [wBallYPos], a
- xor a
- ld [wd549], a
-.asm_1d253
- ld hl, SlowpokeCollisionAnimationData ; 0x1d312
- ld de, wd632
- call UpdateAnimation
- push af
- ld a, [wd632]
- and a
- jr nz, .asm_1d271
- ld a, $19
- ld [wd632], a
- xor a
- ld [wd633], a
- ld a, $6
- ld [wd634], a
-.asm_1d271
- pop af
- ret nc
- ld a, [wd634]
- cp $1
- jr nz, .asm_1d2b6
- xor a
- ld [wd548], a
- ld a, [wLeftAlleyCount]
- cp $3
- jr nz, .asm_1d299
- callba Func_10ab3
- ld a, [wd643]
- and a
- ret z
- ld a, $1
- ld [wd642], a
-.asm_1d299
- ld hl, wd63a
- call Func_e4a
- ld hl, wd62a
- call Func_e4a
- ret nc
- ld c, $19
- call Func_e55
- callba z, Func_30164
- ret
-
-.asm_1d2b6
- ld a, [wd634]
- cp $4
- jr nz, .asm_1d2c3
- ld a, $1
- ld [wd548], a
- ret
-
-.asm_1d2c3
- ld a, [wd634]
- cp $5
- ret nz
- ld a, $1
- ld [wd549], a
- ld a, $b0
- ld [wBallXVelocity], a
- ld a, $0
- ld [wBallXVelocity + 1], a
- xor a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- lb de, $00, $06
- call PlaySoundEffect
- ld a, [wd642]
- cp $0
- jr nz, .asm_1d2f8
- ld a, $f
- callba Func_10000
-.asm_1d2f8
- xor a
- ld [wd642], a
- ld [wd64c], a
- ld [wd64d], a
- ld a, $1
- ld [wd641], a
- ld a, $2 ; down direction
- ld [wBlueStageForceFieldDirection], a
- ld a, $1
- ld [wd640], a
- ret
-
-SlowpokeCollisionAnimationData: ; 0x1d312
-; Each entry is [OAM id][duration]
- db $08, $01
- db $06, $02
- db $06, $02
- db $08, $01
- db $01, $00
- db $29, $00
- db $28, $01
- db $2A, $00
- db $27, $01
- db $29, $00
- db $28, $01
- db $2B, $00
- db $28, $01
- db $00
-
-ResolveCloysterCollision: ; 0x1d32d
- ld a, [wCloysterCollision]
- and a
- jr z, .asm_1d36a
- xor a
- ld [wCloysterCollision], a
- ld bc, TenThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $05
- call PlaySoundEffect
- ld hl, CloysterCollisionAnimationData
- ld de, wd637
- call CopyHLToDE
- xor a
- ld [wBallXVelocity], a
- ld [wBallXVelocity + 1], a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- ld [wBallXPos], a
- ld [wBallYPos], a
- xor a
- ld [wd549], a
-.asm_1d36a
- ld hl, CloysterCollisionAnimationData
- ld de, wd637
- call UpdateAnimation
- push af
- ld a, [wd637]
- and a
- jr nz, .asm_1d388
- ld a, $19
- ld [wd637], a
- xor a
- ld [wd638], a
- ld a, $6
- ld [wd639], a
-.asm_1d388
- pop af
- ret nc
- ld a, [wd639]
- cp $1
- jr nz, .asm_1d3cb
- xor a
- ld [wd548], a
- ld a, [wRightAlleyCount]
- cp $2
- jr c, .noCatchEmMode
- ld a, $8
- jr nz, .asm_1d3a1
- xor a
-.asm_1d3a1
- ld [wRareMonsFlag], a
- callba StartCatchEmMode
-.noCatchEmMode
- ld hl, wd63b
- call Func_e4a
- ld hl, wd62a
- call Func_e4a
- ret nc
- ld c, $19
- call Func_e55
- callba z, Func_30164
- ret
-
-.asm_1d3cb
- ld a, [wd639]
- cp $4
- jr nz, .asm_1d3d8
- ld a, $1
- ld [wd548], a
- ret
-
-.asm_1d3d8
- ld a, [wd639]
- cp $5
- ret nz
- ld a, $1
- ld [wd549], a
- ld a, $4f
- ld [wBallXVelocity], a
- ld a, $ff
- ld [wBallXVelocity + 1], a
- xor a
- ld [wBallYVelocity], a
- ld [wBallYVelocity + 1], a
- lb de, $00, $06
- call PlaySoundEffect
- ld a, $e
- callba Func_10000
- xor a
- ld [wd64c], a
- ld [wd64d], a
- ld a, $1
- ld [wd641], a
- ld a, $2 ; down direction
- ld [wBlueStageForceFieldDirection], a
- ld a, $1
- ld [wd640], a
- ret
-
-CloysterCollisionAnimationData: ; 0x1d41d
-; Each entry is [OAM id][duration]
- db $08, $01
- db $06, $02
- db $06, $02
- db $08, $01
- db $01, $00
- db $29, $00
- db $28, $01
- db $2A, $00
- db $27, $01
- db $29, $00
- db $28, $01
- db $2B, $00
- db $28, $01
- db 00 ; terminator
-
-ResolveBlueStageBonusMultiplierCollision: ; 0x1d438
- call Func_1d692
- ld a, [wWhichBonusMultiplierRailing]
- and a
- jp z, Func_1d51b
- xor a
- ld [wWhichBonusMultiplierRailing], a
- lb de, $00, $0d
- call PlaySoundEffect
- ld a, [wWhichBonusMultiplierRailingId]
- sub $f
- jr nz, .asm_1d48e
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1d45c
- ld a, $1f
- jr .asm_1d45e
-
-.asm_1d45c
- ld a, $29
-.asm_1d45e
- call Func_1d5f2
- ld a, $3c
- ld [wd647], a
- ld a, $9
- callba Func_10000
- ld a, [wd610]
- cp $3
- jp nz, asm_1d4fa
- ld a, $1
- ld [wd610], a
- ld a, $3
- ld [wd611], a
- ld a, [wd60c]
- set 7, a
- ld [wd60c], a
- jr asm_1d4fa
-
-.asm_1d48e
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1d497
- ld a, $21
- jr .asm_1d499
-
-.asm_1d497
- ld a, $2b
-.asm_1d499
- call Func_1d5f2
- ld a, $1e
- ld [wd647], a
- ld a, $a
- callba Func_10000
- ld a, [wd611]
- cp $3
- jr nz, asm_1d4fa
- ld a, $1
- ld [wd610], a
- ld a, $1
- ld [wd611], a
- ld a, $80
- ld [wd612], a
- ld a, [wd60d]
- set 7, a
- ld [wd60d], a
- ld a, [wd482]
- inc a
- cp 100
- jr c, .asm_1d4d5
- ld a, 99
-.asm_1d4d5
- ld [wd482], a
- jr nc, .asm_1d4e9
- ld c, $19
- call Func_e55
- callba z, Func_30164
-.asm_1d4e9
- ld a, [wd60c]
- ld [wd614], a
- ld a, [wd60d]
- ld [wd615], a
- ld a, $1
- ld [wd613], a
-asm_1d4fa: ; 0x1d4fa
- ld bc, TenPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wd60c]
- call Func_1d5f2
- ld a, [wd60d]
- add $14
- call Func_1d5f2
- ld a, $3c
- ld [wd647], a
- ret
-
-Func_1d51b: ; 0x1d51b
- call Func_1d5bf
- ld a, [wd612]
- and a
- jr z, .asm_1d559
- dec a
- ld [wd612], a
- cp $70
- jr nz, .asm_1d538
- ld a, $2
- ld [wd610], a
- ld a, $2
- ld [wd611], a
- jr .asm_1d559
-
-.asm_1d538
- and a
- jr nz, .asm_1d559
- ld a, $3
- ld [wd610], a
- xor a
- ld [wd611], a
- ld a, [wd482]
- call Func_1d65f
- ld a, [wd60c]
- call Func_1d5f2
- ld a, [wd60d]
- add $14
- call Func_1d5f2
- ret
-
-.asm_1d559
- ld a, [wd610]
- cp $2
- jr c, .asm_1d58b
- cp $3
- ld a, [hNumFramesDropped]
- jr c, .asm_1d56a
- srl a
- srl a
-.asm_1d56a
- ld b, a
- and $3
- jr nz, .asm_1d58b
- bit 3, b
- jr nz, .asm_1d580
- ld a, [wd60c]
- res 7, a
- ld [wd60c], a
- call Func_1d5f2
- jr .asm_1d58b
-
-.asm_1d580
- ld a, [wd60c]
- set 7, a
- ld [wd60c], a
- call Func_1d5f2
-.asm_1d58b
- ld a, [wd611]
- cp $2
- ret c
- cp $3
- ld a, [hNumFramesDropped]
- jr c, .asm_1d59b
- srl a
- srl a
-.asm_1d59b
- ld b, a
- and $3
- ret nz
- bit 3, b
- jr nz, .asm_1d5b1
- ld a, [wd60d]
- res 7, a
- ld [wd60d], a
- add $14
- call Func_1d5f2
- ret
-
-.asm_1d5b1
- ld a, [wd60d]
- set 7, a
- ld [wd60d], a
- add $14
- call Func_1d5f2
- ret
-
-Func_1d5bf: ; 0x1d5bf
- ld a, [wd5ca]
- and a
- ret nz
- ld a, [wd613]
- and a
- ret z
- xor a
- ld [wd613], a
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5cc
- ld de, BonusMultiplierText
- call LoadTextHeader
- ld hl, wBottomMessageText + $12
- ld a, [wd614]
- and $7f
- jr z, .asm_1d5e9
- add $30
- ld [hli], a
-.asm_1d5e9
- ld a, [wd615]
- res 7, a
- add $30
- ld [hl], a
- ret
-
-Func_1d5f2: ; 0x1d5f2
- push af
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1d5fd
- pop af
- call Func_1d602
- ret
-
-.asm_1d5fd
- pop af
- call Func_1d645
- ret
-
-Func_1d602: ; 0x1d602
- push af
- res 7, a
- ld hl, wd60e
- cp $14
- jr c, .asm_1d611
- ld hl, wd60f
- sub $a
-.asm_1d611
- cp [hl]
- jr z, .asm_1d626
- ld [hl], a
- ld c, a
- ld b, $0
- sla c
- ld hl, TileDataPointers_1d6be
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_1d6be)
- call Func_10aa
-.asm_1d626
- pop af
- ld bc, $0000
- bit 7, a
- jr z, .asm_1d632
- res 7, a
- set 1, c
-.asm_1d632
- cp $14
- jr c, .asm_1d638
- set 2, c
-.asm_1d638
- ld hl, TileDataPointers_1d946
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_1d946)
- call Func_10aa
- ret
-
-Func_1d645: ; 0x1d645
- bit 7, a
- jr z, .asm_1d64d
- res 7, a
- add $a
-.asm_1d64d
- ld c, a
- ld b, $0
- sla c
- ld hl, TileDataPointers_1d97a
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_1d97a)
- call Func_10aa
- ret
-
-Func_1d65f: ; 0x1d65f
- ld a, [wd482]
- inc a
- cp $64
- jr c, .asm_1d669
- ld a, $63
-.asm_1d669
- ld b, a
- xor a
- ld hl, Data_1d68b
- ld c, $7
-.asm_1d670
- bit 0, b
- jr z, .asm_1d676
- add [hl]
- daa
-.asm_1d676
- srl b
- inc hl
- dec c
- jr nz, .asm_1d670
- push af
- swap a
- and $f
- ld [wd60c], a
- pop af
- and $f
- ld [wd60d], a
- ret
-
-Data_1d68b:
-; BCD powers of 2
- db $01, $02, $04, $08, $16, $32, $64
-
-Func_1d692: ; 0x1d692
- ld a, [wd647]
- cp $1
- jr z, .asm_1d69e
- dec a
- ld [wd647], a
- ret
-
-.asm_1d69e
- ld a, $0
- ld [wd647], a
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1d6b3
- ld a, $1e
- call Func_1d5f2
- ld a, $20
- call Func_1d5f2
- ret
-
-.asm_1d6b3
- ld a, $2a
- call Func_1d5f2
- ld a, $28
- call Func_1d5f2
- ret
-
-TileDataPointers_1d6be:
- dw TileData_1d6ee
- dw TileData_1d6f3
- dw TileData_1d6f8
- dw TileData_1d6fd
- dw TileData_1d702
- dw TileData_1d707
- dw TileData_1d70c
- dw TileData_1d711
- dw TileData_1d716
- dw TileData_1d71b
- dw TileData_1d720
- dw TileData_1d725
- dw TileData_1d72a
- dw TileData_1d72f
- dw TileData_1d734
- dw TileData_1d739
- dw TileData_1d73e
- dw TileData_1d743
- dw TileData_1d748
- dw TileData_1d74d
- dw TileData_1d752
- dw TileData_1d757
- dw TileData_1d75c
- dw TileData_1d761
-
-TileData_1d6ee: ; 0x1d6ee
- db $02
- dw TileData_1d766
- dw TileData_1d770
-
-TileData_1d6f3: ; 0x1d6f3
- db $02
- dw TileData_1d77a
- dw TileData_1d784
-
-TileData_1d6f8: ; 0x1d6f8
- db $02
- dw TileData_1d78e
- dw TileData_1d798
-
-TileData_1d6fd: ; 0x1d6fd
- db $02
- dw TileData_1d7a2
- dw TileData_1d7AC
-
-TileData_1d702: ; 0x1d702
- db $02
- dw TileData_1d7b6
- dw TileData_1d7C0
-
-TileData_1d707: ; 0x1d707
- db $02
- dw TileData_1d7ca
- dw TileData_1d7D4
-
-TileData_1d70c: ; 0x1d70c
- db $02
- dw TileData_1d7de
- dw TileData_1d7E8
-
-TileData_1d711: ; 0x1d711
- db $02
- dw TileData_1d7f2
- dw TileData_1d7FC
-
-TileData_1d716: ; 0x1d716
- db $02
- dw TileData_1d806
- dw TileData_1d810
-
-TileData_1d71b: ; 0x1d71b
- db $02
- dw TileData_1d81a
- dw TileData_1d824
-
-TileData_1d720: ; 0x1d720
- db $02
- dw TileData_1d82e
- dw TileData_1d838
-
-TileData_1d725: ; 0x1d725
- db $02
- dw TileData_1d842
- dw TileData_1d84C
-
-TileData_1d72a: ; 0x1d72a
- db $02
- dw TileData_1d856
- dw TileData_1d860
-
-TileData_1d72f: ; 0x1d72f
- db $02
- dw TileData_1d86a
- dw TileData_1d874
-
-TileData_1d734: ; 0x1d734
- db $02
- dw TileData_1d87e
- dw TileData_1d888
-
-TileData_1d739: ; 0x1d739
- db $02
- dw TileData_1d892
- dw TileData_1d89C
-
-TileData_1d73e: ; 0x1d73e
- db $02
- dw TileData_1d8a6
- dw TileData_1d8B0
-
-TileData_1d743: ; 0x1d743
- db $02
- dw TileData_1d8ba
- dw TileData_1d8C4
-
-TileData_1d748: ; 0x1d748
- db $02
- dw TileData_1d8ce
- dw TileData_1d8D8
-
-TileData_1d74d: ; 0x1d74d
- db $02
- dw TileData_1d8e2
- dw TileData_1d8EC
-
-TileData_1d752: ; 0x1d752
- db $02
- dw TileData_1d8f6
- dw TileData_1d900
-
-TileData_1d757: ; 0x1d757
- db $02
- dw TileData_1d90a
- dw TileData_1d914
-
-TileData_1d75c: ; 0x1d75c
- db $02
- dw TileData_1d91e
- dw TileData_1d928
-
-TileData_1d761: ; 0x1d761
- db $02
- dw TileData_1d932
- dw TileData_1d93C
-
-TileData_1d766: ; 0x1d766
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d770: ; 0x1d770
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cc0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d77a: ; 0x1d77a
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d70
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d784: ; 0x1d784
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cd0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d78e: ; 0x1d78e
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d798: ; 0x1d798
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ce0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7a2: ; 0x1d7a2
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d90
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7AC: ; 0x1d7AC
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cf0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7b6: ; 0x1d7b6
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1da0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7C0: ; 0x1d7C0
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7ca: ; 0x1d7ca
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1db0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7D4: ; 0x1d7D4
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d10
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7de: ; 0x1d7de
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dc0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7E8: ; 0x1d7E8
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7f2: ; 0x1d7f2
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dd0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d7FC: ; 0x1d7FC
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d30
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d806: ; 0x1d806
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1de0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d810: ; 0x1d810
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d81a: ; 0x1d81a
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $27
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1df0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d824: ; 0x1d824
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7D
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d50
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d82e: ; 0x1d82e
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ea0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d838: ; 0x1d838
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d842: ; 0x1d842
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1eb0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d84C: ; 0x1d84C
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e10
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d856: ; 0x1d856
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ec0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d860: ; 0x1d860
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d86a: ; 0x1d86a
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ed0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d874: ; 0x1d874
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e30
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d87e: ; 0x1d87e
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ee0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d888: ; 0x1d888
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d892: ; 0x1d892
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ef0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d89C: ; 0x1d89C
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e50
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8a6: ; 0x1d8a6
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8B0: ; 0x1d8B0
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8ba: ; 0x1d8ba
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f10
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8C4: ; 0x1d8C4
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e70
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8ce: ; 0x1d8ce
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8D8: ; 0x1d8D8
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8e2: ; 0x1d8e2
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $28
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f30
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8EC: ; 0x1d8EC
- dw Func_11d2
- db $10, $01
- dw vTilesBG tile $7E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e90
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1d8f6: ; 0x1d8f6
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $29
- dw StageBlueFieldBottomBaseGameBoyGfx + $A90
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1d900: ; 0x1d900
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $2C
- dw StageBlueFieldBottomBaseGameBoyGfx + $AC0
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1d90a: ; 0x1d90a
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $29
- dw StageBlueFieldBottomBaseGameBoyGfx + $AE0
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1d914: ; 0x1d914
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $2C
- dw StageBlueFieldBottomBaseGameBoyGfx + $B10
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1d91e: ; 0x1d91e
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $33
- dw StageBlueFieldBottomBaseGameBoyGfx + $B30
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1d928: ; 0x1d928
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $36
- dw StageBlueFieldBottomBaseGameBoyGfx + $B60
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1d932: ; 0x1d932
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $33
- dw StageBlueFieldBottomBaseGameBoyGfx + $B80
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1d93C: ; 0x1d93C
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $36
- dw StageBlueFieldBottomBaseGameBoyGfx + $BB0
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileDataPointers_1d946:
- dw TileData_1d94e
- dw TileData_1d951
- dw TileData_1d954
- dw TileData_1d957
-
-TileData_1d94e: ; 0x1d94e
- db $01
- dw TileData_1d95a
-
-TileData_1d951: ; 0x1d951
- db $01
- dw TileData_1d962
-
-TileData_1d954: ; 0x1d954
- db $01
- dw TileData_1d96a
-
-TileData_1d957: ; 0x1d957
- db $01
- dw TileData_1d972
-
-TileData_1d95a: ; 0x1d95a
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $27
-
- db $00 ; terminator
-
-TileData_1d962: ; 0x1d962
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $7D
-
- db $00 ; terminator
-
-TileData_1d96a: ; 0x1d96a
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $28
-
- db $00 ; terminator
-
-TileData_1d972: ; 0x1d972
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $7E
-
- db $00 ; terminator
-
-TileDataPointers_1d97a:
- dw TileData_1d9d2
- dw TileData_1d9d5
- dw TileData_1d9d8
- dw TileData_1d9db
- dw TileData_1d9de
- dw TileData_1d9e1
- dw TileData_1d9e4
- dw TileData_1d9e7
- dw TileData_1d9ea
- dw TileData_1d9ed
- dw TileData_1d9f0
- dw TileData_1d9f3
- dw TileData_1d9f6
- dw TileData_1d9f9
- dw TileData_1d9fc
- dw TileData_1d9ff
- dw TileData_1da02
- dw TileData_1da05
- dw TileData_1da08
- dw TileData_1da0b
- dw TileData_1da0e
- dw TileData_1da11
- dw TileData_1da14
- dw TileData_1da17
- dw TileData_1da1a
- dw TileData_1da1d
- dw TileData_1da20
- dw TileData_1da23
- dw TileData_1da26
- dw TileData_1da29
- dw TileData_1da2c
- dw TileData_1da2f
- dw TileData_1da32
- dw TileData_1da35
- dw TileData_1da38
- dw TileData_1da3b
- dw TileData_1da3e
- dw TileData_1da41
- dw TileData_1da44
- dw TileData_1da47
- dw TileData_1da4a
- dw TileData_1da4d
- dw TileData_1da50
- dw TileData_1da53
-
-TileData_1d9d2: ; 0x1d9d2
- db $01
- dw TileData_1da56
-
-TileData_1d9d5: ; 0x1d9d5
- db $01
- dw TileData_1da5e
-
-TileData_1d9d8: ; 0x1d9d8
- db $01
- dw TileData_1da66
-
-TileData_1d9db: ; 0x1d9db
- db $01
- dw TileData_1da6e
-
-TileData_1d9de: ; 0x1d9de
- db $01
- dw TileData_1da76
-
-TileData_1d9e1: ; 0x1d9e1
- db $01
- dw TileData_1da7e
-
-TileData_1d9e4: ; 0x1d9e4
- db $01
- dw TileData_1da86
-
-TileData_1d9e7: ; 0x1d9e7
- db $01
- dw TileData_1da8e
-
-TileData_1d9ea: ; 0x1d9ea
- db $01
- dw TileData_1da96
-
-TileData_1d9ed: ; 0x1d9ed
- db $01
- dw TileData_1da9e
-
-TileData_1d9f0: ; 0x1d9f0
- db $01
- dw TileData_1daa6
-
-TileData_1d9f3: ; 0x1d9f3
- db $01
- dw TileData_1daae
-
-TileData_1d9f6: ; 0x1d9f6
- db $01
- dw TileData_1dab6
-
-TileData_1d9f9: ; 0x1d9f9
- db $01
- dw TileData_1dabe
-
-TileData_1d9fc: ; 0x1d9fc
- db $01
- dw TileData_1dac6
-
-TileData_1d9ff: ; 0x1d9ff
- db $01
- dw TileData_1dace
-
-TileData_1da02: ; 0x1da02
- db $01
- dw TileData_1dad6
-
-TileData_1da05: ; 0x1da05
- db $01
- dw TileData_1dade
-
-TileData_1da08: ; 0x1da08
- db $01
- dw TileData_1dae6
-
-TileData_1da0b: ; 0x1da0b
- db $01
- dw TileData_1daee
-
-TileData_1da0e: ; 0x1da0e
- db $01
- dw TileData_1daf6
-
-TileData_1da11: ; 0x1da11
- db $01
- dw TileData_1dafe
-
-TileData_1da14: ; 0x1da14
- db $01
- dw TileData_1db06
-
-TileData_1da17: ; 0x1da17
- db $01
- dw TileData_1db0e
-
-TileData_1da1a: ; 0x1da1a
- db $01
- dw TileData_1db16
-
-TileData_1da1d: ; 0x1da1d
- db $01
- dw TileData_1db1e
-
-TileData_1da20: ; 0x1da20
- db $01
- dw TileData_1db26
-
-TileData_1da23: ; 0x1da23
- db $01
- dw TileData_1db2e
-
-TileData_1da26: ; 0x1da26
- db $01
- dw TileData_1db36
-
-TileData_1da29: ; 0x1da29
- db $01
- dw TileData_1db3e
-
-TileData_1da2c: ; 0x1da2c
- db $01
- dw TileData_1db46
-
-TileData_1da2f: ; 0x1da2f
- db $01
- dw TileData_1db4e
-
-TileData_1da32: ; 0x1da32
- db $01
- dw TileData_1db56
-
-TileData_1da35: ; 0x1da35
- db $01
- dw TileData_1db5e
-
-TileData_1da38: ; 0x1da38
- db $01
- dw TileData_1db66
-
-TileData_1da3b: ; 0x1da3b
- db $01
- dw TileData_1db6e
-
-TileData_1da3e: ; 0x1da3e
- db $01
- dw TileData_1db76
-
-TileData_1da41: ; 0x1da41
- db $01
- dw TileData_1db7e
-
-TileData_1da44: ; 0x1da44
- db $01
- dw TileData_1db86
-
-TileData_1da47: ; 0x1da47
- db $01
- dw TileData_1db8e
-
-TileData_1da4a: ; 0x1da4a
- db $01
- dw TileData_1db96
-
-TileData_1da4d: ; 0x1da4d
- db $01
- dw TileData_1dba5
-
-TileData_1da50: ; 0x1da50
- db $01
- dw TileData_1dbb4
-
-TileData_1da53: ; 0x1da53
- db $01
- dw TileData_1dbc3
-
-TileData_1da56: ; 0x1da56
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $62
-
- db $00 ; terminator
-
-TileData_1da5e: ; 0x1da5e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $63
-
- db $00 ; terminator
-
-TileData_1da66: ; 0x1da66
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $64
-
- db $00 ; terminator
-
-TileData_1da6e: ; 0x1da6e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $65
-
- db $00 ; terminator
-
-TileData_1da76: ; 0x1da76
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $66
-
- db $00 ; terminator
-
-TileData_1da7e: ; 0x1da7e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $67
-
- db $00 ; terminator
-
-TileData_1da86: ; 0x1da86
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $68
-
- db $00 ; terminator
-
-TileData_1da8e: ; 0x1da8e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $69
-
- db $00 ; terminator
-
-TileData_1da96: ; 0x1da96
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $6A
-
- db $00 ; terminator
-
-TileData_1da9e: ; 0x1da9e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $6B
-
- db $00 ; terminator
-
-TileData_1daa6: ; 0x1daa6
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $58
-
- db $00 ; terminator
-
-TileData_1daae: ; 0x1daae
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $59
-
- db $00 ; terminator
-
-TileData_1dab6: ; 0x1dab6
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $5A
-
- db $00 ; terminator
-
-TileData_1dabe: ; 0x1dabe
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $5B
-
- db $00 ; terminator
-
-TileData_1dac6: ; 0x1dac6
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $5C
-
- db $00 ; terminator
-
-TileData_1dace: ; 0x1dace
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $5D
-
- db $00 ; terminator
-
-TileData_1dad6: ; 0x1dad6
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $5E
-
- db $00 ; terminator
-
-TileData_1dade: ; 0x1dade
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $5F
-
- db $00 ; terminator
-
-TileData_1dae6: ; 0x1dae6
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $60
-
- db $00 ; terminator
-
-TileData_1daee: ; 0x1daee
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $4
- db $61
-
- db $00 ; terminator
-
-TileData_1daf6: ; 0x1daf6
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $76
-
- db $00 ; terminator
-
-TileData_1dafe: ; 0x1dafe
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $77
-
- db $00 ; terminator
-
-TileData_1db06: ; 0x1db06
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $78
-
- db $00 ; terminator
-
-TileData_1db0e: ; 0x1db0e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $79
-
- db $00 ; terminator
-
-TileData_1db16: ; 0x1db16
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $7A
-
- db $00 ; terminator
-
-TileData_1db1e: ; 0x1db1e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $7B
-
- db $00 ; terminator
-
-TileData_1db26: ; 0x1db26
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $7C
-
- db $00 ; terminator
-
-TileData_1db2e: ; 0x1db2e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $7D
-
- db $00 ; terminator
-
-TileData_1db36: ; 0x1db36
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $7E
-
- db $00 ; terminator
-
-TileData_1db3e: ; 0x1db3e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $7F
-
- db $00 ; terminator
-
-TileData_1db46: ; 0x1db46
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $6C
-
- db $00 ; terminator
-
-TileData_1db4e: ; 0x1db4e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $6D
-
- db $00 ; terminator
-
-TileData_1db56: ; 0x1db56
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $6E
-
- db $00 ; terminator
-
-TileData_1db5e: ; 0x1db5e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $6F
-
- db $00 ; terminator
-
-TileData_1db66: ; 0x1db66
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $70
-
- db $00 ; terminator
-
-TileData_1db6e: ; 0x1db6e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $71
-
- db $00 ; terminator
-
-TileData_1db76: ; 0x1db76
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $72
-
- db $00 ; terminator
-
-TileData_1db7e: ; 0x1db7e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $73
-
- db $00 ; terminator
-
-TileData_1db86: ; 0x1db86
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $74
-
- db $00 ; terminator
-
-TileData_1db8e: ; 0x1db8e
- dw LoadTileLists
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $F
- db $75
-
- db $00 ; terminator
-
-TileData_1db96: ; 0x1db96
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $24
- db $25, $26, $27
-
- db $02 ; number of tiles
- dw vBGMap + $44
- db $28, $29
-
- db $00 ; terminator
-
-TileData_1dba5: ; 0x1dba5
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $24
- db $2A, $2B, $2C
-
- db $02 ; number of tiles
- dw vBGMap + $44
- db $2D, $2E
-
- db $00 ; terminator
-
-TileData_1dbb4: ; 0x1dbb4
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $2D
- db $27, $26, $2F
-
- db $02 ; number of tiles
- dw vBGMap + $4E
- db $29, $28
-
- db $00 ; terminator
-
-TileData_1dbc3: ; 0x1dbc3
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $2D
- db $2C, $2B, $30
-
- db $02 ; number of tiles
- dw vBGMap + $4E
- db $2E, $2D
-
- db $00 ; terminator
-
-ResolvePsyduckPoliwagCollision: ; 0x1dbd2
- ld a, [wWhichPsyduckPoliwag]
- and a
- jp z, Func_1dc8e
- cp $2
- jr z, .asm_1dc33
- xor a
- ld [wWhichPsyduckPoliwag], a
- ld hl, wLeftMapMoveCounter
- ld a, [hl]
- cp $3
- jp z, Func_1dc8e
- inc a
- ld [hl], a
- ld hl, wd4f7
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wCurrentStage]
- bit 0, a
- jr z, .asm_1dc06
- ld a, $54
- ld [wc7e3], a
- ld a, $55
- ld [wc803], a
-.asm_1dc06
- ld a, $1
- call Func_1de4b
- ld a, [wLeftMapMoveCounter]
- call Func_1de6f
- ld a, [wLeftMapMoveCounter]
- cp $3
- ld a, $7
- callba Func_10000
- ld a, $2
- ld [wd646], a
- ld a, $78
- ld [wLeftMapMoveDiglettAnimationCounter], a
- ld a, $14
- ld [wLeftMapMoveDiglettFrame], a
- jr .asm_1dc8a
-
-.asm_1dc33
- xor a
- ld [wWhichPsyduckPoliwag], a
- ld hl, wRightMapMoveCounter
- ld a, [hl]
- cp $3
- jp z, Func_1dc8e
- inc a
- ld [hl], a
- ld hl, wd4f9
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wCurrentStage]
- bit 0, a
- jr z, .asm_1dc5c
- ld a, $52
- ld [wc7f0], a
- ld a, $53
- ld [wc810], a
-.asm_1dc5c
- ld a, $3
- call Func_1de4b
- ld a, [wRightMapMoveCounter]
- cp $3
- ld a, $8
- callba Func_10000
- ld a, [wRightMapMoveCounter]
- cp $3
- ccf
- call z, Func_1ddf4
- ld a, $2
- ld [wd645], a
- ld a, $28
- ld [wRightMapMoveDiglettAnimationCounter], a
- ld a, $78
- ld [wRightMapMoveDiglettFrame], a
-.asm_1dc8a
- call Func_1de22
- ret
-
-Func_1dc8e: ; 0x1dc8e
- call Func_1dc95
- call Func_1dd2e
- ret
-
-Func_1dc95: ; 0x1dc95
- ld a, [wd646]
- cp $0
- ret z
- ld a, [wLeftMapMoveDiglettAnimationCounter]
- and a
- jr z, .asm_1dceb
- dec a
- ld [wLeftMapMoveDiglettAnimationCounter], a
- ld a, [wd644]
- and a
- ret nz
- ld a, [wLeftMapMoveDiglettFrame]
- cp $1
- jr z, .asm_1dcb9
- cp $0
- ret z
- dec a
- ld [wLeftMapMoveDiglettFrame], a
- ret
-
-.asm_1dcb9
- ld a, [wd646]
- cp $2
- ret nz
- call Func_1130
- ret nz
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1dcd7
- ld a, [wLeftMapMoveCounter]
- cp $0
- jr z, .asm_1dcd4
- ld b, $7
- add b
- jr .asm_1dcd9
-
-.asm_1dcd4
- xor a
- jr .asm_1dcd9
-
-.asm_1dcd7
- ld a, $8
-.asm_1dcd9
- call Func_1de6f
- ld a, [wLeftMapMoveCounter]
- cp $3
- ccf
- call z, Func_1ddc7
- ld a, $1
- ld [wd646], a
- ret
-
-.asm_1dceb
- ld a, [wd646]
- cp $1
- ret nz
- ld a, [wLeftMapMoveDiglettAnimationCounter]
- and a
- ret nz
- ld a, $0
- call Func_1de4b
- ld a, [wCurrentStage]
- bit 0, a
- jr z, .asm_1dd0c
- ld a, $5e
- ld [wc7e3], a
- ld a, $5f
- ld [wc803], a
-.asm_1dd0c
- ld a, $0
- ld [wd646], a
- ld a, [wLeftMapMoveCounter]
- sub $3
- ret nz
- ld a, [wLeftMapMoveCounter]
- sub $3
- ld [wLeftMapMoveCounter], a
- call Func_1de6f
- ld a, $0
- call Func_1de4b
- ld a, $0
- ld [wd646], a
- ret
-
-; XXX
- ret
-
-Func_1dd2e: ; 0x1dd2e
- ld a, [wd645]
- cp $0
- ret z
- cp $1
- jr z, .asm_1dd53
- cp $3
- jr z, .asm_1dd69
- ld a, [wRightMapMoveDiglettAnimationCounter]
- cp $0
- jr z, .asm_1dd48
- dec a
- ld [wRightMapMoveDiglettAnimationCounter], a
- ret
-
-.asm_1dd48
- ld a, $2
- call Func_1de4b
- ld a, $1
- ld [wd645], a
- ret
-
-.asm_1dd53
- ld a, [wRightMapMoveCounter]
- add $4
- call Func_1de6f
- ld a, [wRightMapMoveCounter]
- add $3
- call Func_1de4b
- ld a, $3
- ld [wd645], a
- ret
-
-.asm_1dd69
- ld a, [wRightMapMoveDiglettFrame]
- and a
- jr z, .asm_1dd74
- dec a
- ld [wRightMapMoveDiglettFrame], a
- ret
-
-.asm_1dd74
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1dd89
- ld a, [wRightMapMoveCounter]
- cp $0
- jr z, .asm_1dd85
- ld b, $a
- add b
- jr .asm_1dd8b
-
-.asm_1dd85
- ld a, $4
- jr .asm_1dd8b
-
-.asm_1dd89
- ld a, $9
-.asm_1dd8b
- call Func_1de6f
- ld a, $2
- call Func_1de4b
- ld a, [wCurrentStage]
- bit 0, a
- jr z, .asm_1dda9
- ld a, $24
- ld [wc7f0], a
- ld a, $25
- ld [wc810], a
- ld a, $0
- ld [wd645], a
-.asm_1dda9
- ld a, [wRightMapMoveCounter]
- sub $3
- ret nz
- ld a, [wRightMapMoveCounter]
- sub $3
- ld [wRightMapMoveCounter], a
- ld a, $4
- call Func_1de6f
- ld a, $2
- call Func_1de4b
- ld a, $0
- ld [wd645], a
- ret
-
-Func_1ddc7: ; 0x1ddc7
- ld hl, wd63d
- call Func_e4a
- ld hl, wd62b
- call Func_e4a
- jr nc, .asm_1dde4
- ld c, $a
- call Func_e55
- callba z, Func_30164
-.asm_1dde4
- xor a
- ld [wd55a], a
- callba StartMapMoveMode
- scf
- ret
-
-Func_1ddf4: ; 0x1ddf4
- ld hl, wd63c
- call Func_e4a
- ld hl, wd62b
- call Func_e4a
- jr nc, .asm_1de11
- ld c, $a
- call Func_e55
- callba z, Func_30164
-.asm_1de11
- ld a, $1
- ld [wd55a], a
- callba StartMapMoveMode
- scf
- ret
-
-Func_1de22: ; 0x1de22
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- ld a, $55
- ld [wd803], a
- ld a, $4
- ld [wd804], a
- ld a, $2
- ld [wd7eb], a
- ld bc, FiveHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $0f
- call PlaySoundEffect
- ret
-
-Func_1de4b: ; 0x1de4b
- ld b, a
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- ld a, b
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1df66
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1de63
- ld hl, TileDataPointers_1e00f
-.asm_1de63
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_1df66)
- call Func_10aa
- ret
-
-Func_1de6f: ; 0x1de6f
- ld b, a
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- ld a, b
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1e0a4
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1de87
- ld hl, TileDataPointers_1e1d6
-.asm_1de87
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_1e0a4)
- call Func_10aa
- ret
-
-Func_1de93: ; 0x1de93
- ld hl, wd4f7
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_1ded2
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_1ded2
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wLeftMapMoveCounter]
- and a
- jr z, .asm_1ded2
- cp $3
- jr z, .asm_1ded2
- dec a
- ld [wLeftMapMoveCounter], a
- call Func_1de6f
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1decd
- ld a, [wLeftMapMoveCounter]
- cp $0
- jr z, .asm_1deca
- ld b, $7
- add b
- jr .asm_1decf
-
-.asm_1deca
- xor a
- jr .asm_1decf
-
-.asm_1decd
- ld a, $8
-.asm_1decf
- call Func_1de6f
-.asm_1ded2
- ld hl, wd4f9
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_1df14
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_1df14
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wRightMapMoveCounter]
- and a
- jr z, .asm_1df14
- cp $3
- jr z, .asm_1df14
- dec a
- ld [wRightMapMoveCounter], a
- add $4
- call Func_1de6f
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1df0f
- ld a, [wRightMapMoveCounter]
- cp $0
- jr z, .asm_1df0b
- ld b, $a
- add b
- jr .asm_1df11
-
-.asm_1df0b
- ld a, $4
- jr .asm_1df11
-
-.asm_1df0f
- ld a, $9
-.asm_1df11
- call Func_1de6f
-.asm_1df14
- ret
-
-Func_1df15: ; 0x1df15
- ld b, $0
- ld hl, wd4f8
- ld a, [hld]
- or [hl]
- jr z, .asm_1df3e
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_1df3e
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_1df3e
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wLeftMapMoveCounter]
- and a
- jr z, .asm_1df3e
- cp $3
- jr z, .asm_1df3e
- dec a
- ld [wLeftMapMoveCounter], a
-.asm_1df3e
- ld hl, wd4fa
- ld a, [hld]
- or [hl]
- jr z, .asm_1df65
- dec [hl]
- ld a, [hli]
- cp $ff
- jr nz, .asm_1df65
- dec [hl]
- ld a, [hld]
- cp $ff
- jr nz, .asm_1df65
- ld a, $e0
- ld [hli], a
- ld a, $1
- ld [hl], a
- ld a, [wRightMapMoveCounter]
- and a
- jr z, .asm_1df65
- cp $3
- jr z, .asm_1df65
- dec a
- ld [wRightMapMoveCounter], a
-.asm_1df65
- ret
-
-TileDataPointers_1df66:
- dw TileData_1df74
- dw TileData_1df77
- dw TileData_1df7a
- dw TileData_1df7f
- dw TileData_1df84
- dw TileData_1df89
- dw TileData_1df8e
-
-TileData_1df74: ; 0x1df74
- db $01
- dw TileData_1df93
-
-TileData_1df77: ; 0x1df77
- db $01
- dw TileData_1df9f
-
-TileData_1df7a: ; 0x1df7a
- db $02
- dw TileData_1dfab
- dw TileData_1dfb5
-
-TileData_1df7f: ; 0x1df7f
- db $02
- dw TileData_1dfbf
- dw TileData_1dfc9
-
-TileData_1df84: ; 0x1df84
- db $02
- dw TileData_1dfd3
- dw TileData_1dfdd
-
-TileData_1df89: ; 0x1df89
- db $02
- dw TileData_1dfe7
- dw TileData_1dff1
-
-TileData_1df8e: ; 0x1df8e
- db $02
- dw TileData_1dffb
- dw TileData_1e005
-
-TileData_1df93: ; 0x1df93
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $A3
- db $4A
-
- db $01 ; number of tiles
- dw vBGMap + $C3
- db $4B
-
- db $00 ; terminator
-
-TileData_1df9f: ; 0x1df9f
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $A3
- db $4C
-
- db $01 ; number of tiles
- dw vBGMap + $C3
- db $4D
-
- db $00 ; terminator
-
-TileData_1dfab: ; 0x1dfab
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4E
- dw StageBlueFieldBottomBaseGameBoyGfx + $CE0
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1dfb5: ; 0x1dfb5
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $51
- dw StageBlueFieldBottomBaseGameBoyGfx + $D10
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1dfbf: ; 0x1dfbf
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4E
- dw StageBlueFieldBottomBaseGameBoyGfx + $D30
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1dfc9: ; 0x1dfc9
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $51
- dw StageBlueFieldBottomBaseGameBoyGfx + $D60
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1dfd3: ; 0x1dfd3
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1dfdd: ; 0x1dfdd
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $51
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1dfe7: ; 0x1dfe7
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2100
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1dff1: ; 0x1dff1
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $51
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2130
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1dffb: ; 0x1dffb
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $4E
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2150
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e005: ; 0x1e005
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $51
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2180
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileDataPointers_1e00f:
- dw TileData_1e01d
- dw TileData_1e020
- dw TileData_1e023
- dw TileData_1e026
- dw TileData_1e029
- dw TileData_1e02c
- dw TileData_1e02f
-
-TileData_1e01d: ; 0x1e01d
- db $01
- dw TileData_1e032
-
-TileData_1e020: ; 0x1e020
- db $01
- dw TileData_1e03e
-
-TileData_1e023: ; 0x1e023
- db $01
- dw TileData_1e04a
-
-TileData_1e026: ; 0x1e026
- db $01
- dw TileData_1e05c
-
-TileData_1e029: ; 0x1e029
- db $01
- dw TileData_1e06e
-
-TileData_1e02c: ; 0x1e02c
- db $01
- dw TileData_1e080
-
-TileData_1e02f: ; 0x1e02f
- db $01
- dw TileData_1e092
-
-TileData_1e032: ; 0x1e032
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $A3
- db $35
-
- db $01 ; number of tiles
- dw vBGMap + $C3
- db $36
-
- db $00 ; terminator
-
-TileData_1e03e: ; 0x1e03e
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $A3
- db $37
-
- db $01 ; number of tiles
- dw vBGMap + $C3
- db $38
-
- db $00 ; terminator
-
-TileData_1e04a: ; 0x1e04a
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $90
- db $4F
-
- db $02 ; number of tiles
- dw vBGMap + $AF
- db $50, $51
-
- db $02 ; number of tiles
- dw vBGMap + $CF
- db $52, $53
-
- db $00 ; terminator
-
-TileData_1e05c: ; 0x1e05c
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $90
- db $54
-
- db $02 ; number of tiles
- dw vBGMap + $AF
- db $55, $56
-
- db $02 ; number of tiles
- dw vBGMap + $CF
- db $57, $58
-
- db $00 ; terminator
-
-TileData_1e06e: ; 0x1e06e
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $90
- db $59
-
- db $02 ; number of tiles
- dw vBGMap + $AF
- db $5A, $5B
-
- db $02 ; number of tiles
- dw vBGMap + $CF
- db $5C, $5D
-
- db $00 ; terminator
-
-TileData_1e080: ; 0x1e080
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $90
- db $59
-
- db $02 ; number of tiles
- dw vBGMap + $AF
- db $5A, $5E
-
- db $02 ; number of tiles
- dw vBGMap + $CF
- db $5C, $5F
-
- db $00 ; terminator
-
-TileData_1e092: ; 0x1e092
- dw LoadTileLists
- db $05 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $90
- db $60
-
- db $02 ; number of tiles
- dw vBGMap + $AF
- db $61, $62
-
- db $02 ; number of tiles
- dw vBGMap + $CF
- db $63, $64
-
- db $00 ; terminator
-
-TileDataPointers_1e0a4:
- dw TileData_1e0b8
- dw TileData_1e0bf
- dw TileData_1e0c6
- dw TileData_1e0cd
- dw TileData_1e0d4
- dw TileData_1e0d9
- dw TileData_1e0de
- dw TileData_1e0e3
- dw TileData_1e0e8
- dw TileData_1e0ed
-
-TileData_1e0b8: ; 0x1e0b8
- db $03
- dw TileData_1e0f0
- dw TileData_1e0fa
- dw TileData_1e104
-
-TileData_1e0bf: ; 0x1e0bf
- db $03
- dw TileData_1e10e
- dw TileData_1e118
- dw TileData_1e122
-
-TileData_1e0c6: ; 0x1e0c6
- db $03
- dw TileData_1e12c
- dw TileData_1e136
- dw TileData_1e140
-
-TileData_1e0cd: ; 0x1e0cd
- db $03
- dw TileData_1e14a
- dw TileData_1e154
- dw TileData_1e15e
-
-TileData_1e0d4: ; 0x1e0d4
- db $02
- dw TileData_1e168
- dw TileData_1e172
-
-TileData_1e0d9: ; 0x1e0d9
- db $02
- dw TileData_1e17c
- dw TileData_1e186
-
-TileData_1e0de: ; 0x1e0de
- db $02
- dw TileData_1e190
- dw TileData_1e19a
-
-TileData_1e0e3: ; 0x1e0e3
- db $02
- dw TileData_1e1a4
- dw TileData_1e1ae
-
-TileData_1e0e8: ; 0x1e0e8
- db $02
- dw TileData_1e1b8
- dw TileData_1e1c2
-
-TileData_1e0ed: ; 0x1e0ed
- db $01
- dw TileData_1e1cc
-
-TileData_1e0f0: ; 0x1e0f0
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageBlueFieldBottomBaseGameBoyGfx + $C10
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e0fa: ; 0x1e0fa
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageBlueFieldBottomBaseGameBoyGfx + $C40
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e104: ; 0x1e104
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $47
- dw StageBlueFieldBottomBaseGameBoyGfx + $C70
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e10e: ; 0x1e10e
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FC0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e118: ; 0x1e118
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e122: ; 0x1e122
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e12c: ; 0x1e12c
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FF0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e136: ; 0x1e136
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e140: ; 0x1e140
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e14a: ; 0x1e14a
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $41
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2020
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e154: ; 0x1e154
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e15e: ; 0x1e15e
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $47
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e168: ; 0x1e168
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $58
- dw StageBlueFieldBottomBaseGameBoyGfx + $D80
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e172: ; 0x1e172
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5A
- dw StageBlueFieldBottomBaseGameBoyGfx + $DA0
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e17c: ; 0x1e17c
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $58
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e186: ; 0x1e186
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21E0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e190: ; 0x1e190
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $58
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e19a: ; 0x1e19a
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2210
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e1a4: ; 0x1e1a4
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $58
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21C0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e1ae: ; 0x1e1ae
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $5A
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2240
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e1b8: ; 0x1e1b8
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $44
- dw StageBlueFieldBottomBaseGameBoyGfx + $C40
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e1c2: ; 0x1e1c2
- dw Func_11d2
- db $30, $03
- dw vTilesBG tile $47
- dw StageBlueFieldBottomBaseGameBoyGfx + $C70
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e1cc: ; 0x1e1cc
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $58
- dw StageBlueFieldBottomBaseGameBoyGfx + $D80
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileDataPointers_1e1d6:
- dw TileData_1e1f2
- dw TileData_1e1f5
- dw TileData_1e1f8
- dw TileData_1e1fb
- dw TileData_1e1fe
- dw TileData_1e201
- dw TileData_1e204
- dw TileData_1e207
- dw TileData_1e20a
- dw TileData_1e20d
- dw TileData_1e210
- dw TileData_1e213
- dw TileData_1e216
- dw TileData_1e219
-
-TileData_1e1f2: ; 0x1e1f2
- db $01
- dw TileData_1e21c
-
-TileData_1e1f5: ; 0x1e1f5
- db $01
- dw TileData_1e238
-
-TileData_1e1f8: ; 0x1e1f8
- db $01
- dw TileData_1e254
-
-TileData_1e1fb: ; 0x1e1fb
- db $01
- dw TileData_1e270
-
-TileData_1e1fe: ; 0x1e1fe
- db $01
- dw TileData_1e28c
-
-TileData_1e201: ; 0x1e201
- db $01
- dw TileData_1e2a2
-
-TileData_1e204: ; 0x1e204
- db $01
- dw TileData_1e2b8
-
-TileData_1e207: ; 0x1e207
- db $01
- dw TileData_1e2ce
-
-TileData_1e20a: ; 0x1e20a
- db $01
- dw TileData_1e2e4
-
-TileData_1e20d: ; 0x1e20d
- db $01
- dw TileData_1e2fa
-
-TileData_1e210: ; 0x1e210
- db $01
- dw TileData_1e310
-
-TileData_1e213: ; 0x1e213
- db $01
- dw TileData_1e326
-
-TileData_1e216: ; 0x1e216
- db $01
- dw TileData_1e336
-
-TileData_1e219: ; 0x1e219
- db $01
- dw TileData_1e346
-
-TileData_1e21c: ; 0x1e21c
- dw LoadTileLists
- db $0C ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $60
- db $36, $37, $38
-
- db $03 ; number of tiles
- dw vBGMap + $80
- db $39, $3A, $3B
-
- db $03 ; number of tiles
- dw vBGMap + $A0
- db $4C, $4D, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $C0
- db $4F, $50, $51
-
- db $00 ; terminator
-
-TileData_1e238: ; 0x1e238
- dw LoadTileLists
- db $0C ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $60
- db $3C, $37, $38
-
- db $03 ; number of tiles
- dw vBGMap + $80
- db $3D, $3E, $3B
-
- db $03 ; number of tiles
- dw vBGMap + $A0
- db $52, $53, $54
-
- db $03 ; number of tiles
- dw vBGMap + $C0
- db $55, $56, $57
-
- db $00 ; terminator
-
-TileData_1e254: ; 0x1e254
- dw LoadTileLists
- db $0C ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $60
- db $40, $41, $38
-
- db $03 ; number of tiles
- dw vBGMap + $80
- db $42, $43, $3B
-
- db $03 ; number of tiles
- dw vBGMap + $A0
- db $52, $53, $54
-
- db $03 ; number of tiles
- dw vBGMap + $C0
- db $55, $56, $57
-
- db $00 ; terminator
-
-TileData_1e270: ; 0x1e270
- dw LoadTileLists
- db $0C ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $60
- db $36, $46, $47
-
- db $03 ; number of tiles
- dw vBGMap + $80
- db $48, $49, $4A
-
- db $03 ; number of tiles
- dw vBGMap + $A0
- db $52, $53, $54
-
- db $03 ; number of tiles
- dw vBGMap + $C0
- db $55, $56, $57
-
- db $00 ; terminator
-
-TileData_1e28c: ; 0x1e28c
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $91
- db $4D, $65, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $B1
- db $66, $67, $68
-
- db $03 ; number of tiles
- dw vBGMap + $D1
- db $69, $6A, $6B
-
- db $00 ; terminator
-
-TileData_1e2a2: ; 0x1e2a2
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $91
- db $4D, $6C, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $B1
- db $6D, $6E, $68
-
- db $03 ; number of tiles
- dw vBGMap + $D1
- db $6F, $70, $6B
-
- db $00 ; terminator
-
-TileData_1e2b8: ; 0x1e2b8
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $91
- db $4D, $6C, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $B1
- db $66, $72, $68
-
- db $03 ; number of tiles
- dw vBGMap + $D1
- db $69, $73, $6B
-
- db $00 ; terminator
-
-TileData_1e2ce: ; 0x1e2ce
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $91
- db $4D, $75, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $B1
- db $66, $76, $77
-
- db $03 ; number of tiles
- dw vBGMap + $D1
- db $69, $78, $79
-
- db $00 ; terminator
-
-TileData_1e2e4: ; 0x1e2e4
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $80
- db $3F, $3A, $3B
-
- db $03 ; number of tiles
- dw vBGMap + $A0
- db $4C, $4D, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $C0
- db $4F, $50, $51
-
- db $00 ; terminator
-
-TileData_1e2fa: ; 0x1e2fa
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $80
- db $44, $45, $3B
-
- db $03 ; number of tiles
- dw vBGMap + $A0
- db $4C, $4D, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $C0
- db $4F, $50, $51
-
- db $00 ; terminator
-
-TileData_1e310: ; 0x1e310
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $80
- db $39, $4B, $4A
-
- db $03 ; number of tiles
- dw vBGMap + $A0
- db $4C, $4D, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $C0
- db $4F, $50, $51
-
- db $00 ; terminator
-
-TileData_1e326: ; 0x1e326
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $91
- db $4D, $65, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $B1
- db $6D, $71, $68
-
- db $00 ; terminator
-
-TileData_1e336: ; 0x1e336
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $91
- db $4D, $65, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $B1
- db $66, $74, $68
-
- db $00 ; terminator
-
-TileData_1e346: ; 0x1e346
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap + $91
- db $4D, $65, $4E
-
- db $03 ; number of tiles
- dw vBGMap + $B1
- db $66, $67, $77
-
- db $00 ; terminator
-
-ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356
- ld a, [wWhichPinballUpgradeTrigger]
- and a
- jp z, Func_1e471
- xor a
- ld [wWhichPinballUpgradeTrigger], a
- ld a, [wStageCollisionState]
- cp $0
- jr nz, .asm_1e386
- ld a, $1
- ld [wStageCollisionState], a
- callba LoadStageCollisionAttributes
- ld a, $1
- ld [wd580], a
- callba Func_1404a
-.asm_1e386
- ld a, [wStageCollisionState]
- bit 0, a
- jp z, Func_1e471
- ld a, [wd5fc]
- and a
- jp nz, Func_1e471
- xor a
- ld [wRightAlleyTrigger], a
- ld [wLeftAlleyTrigger], a
- ld [wSecondaryLeftAlleyTrigger], a
- ld a, $b
- callba Func_10000
- ld a, [wWhichPinballUpgradeTriggerId]
- sub $13
- ld c, a
- ld b, $0
- ld hl, wd5f9
- add hl, bc
- ld a, [hl]
- ld [hl], $1
- and a
- jr z, .asm_1e3bf
- ld [hl], $0
-.asm_1e3bf
- ld bc, OneHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd5f9
- ld a, [hli]
- and [hl]
- inc hl
- and [hl]
- jr nz, .asm_1e3de
- lb de, $00, $09
- call PlaySoundEffect
- jp asm_1e475
-
-.asm_1e3de
- ld a, $1
- ld [wd5fc], a
- ld a, $80
- ld [wd5fd], a
- ; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
- ld [wBallTypeCounter], a
- ld a, $e
- ld [wBallTypeCounter + 1], a
- ld bc, FourHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld a, [wBallType]
- cp MASTER_BALL
- jr z, .masterBall
- lb de, $06, $3a
- call PlaySoundEffect
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5cc
- ld de, FieldMultiplierText
- call LoadTextHeader
- ld a, [wBallType]
- ld c, a
- ld b, $0
- ld hl, BallTypeProgression2BlueField
- add hl, bc
- ld a, [hl]
- ld [wBallType], a
- add $30
- ld [wBottomMessageText + $12], a
- jr .asm_1e465
-
-.masterBall
- lb de, $0f, $4d
- call PlaySoundEffect
- ld bc, OneMillionPoints
- callba AddBigBCD6FromQueue
- ld bc, $0100
- ld de, $0000
- push bc
- push de
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5d4
- ld de, DigitsText1to8
- call Func_32cc
- pop de
- pop bc
- ld hl, wd5cc
- ld de, FieldMultiplierSpecialBonusText
- call LoadTextHeader
-.asm_1e465
- callba TransitionPinballUpgrade
- jr asm_1e475
-
-Func_1e471: ; 0x1e471
- call Func_1e4b8
- ret z
-asm_1e475: ; 0x1e475
- ld hl, wd5fb
- ld b, $3
-.asm_1e47a
- ld a, [hld]
- push hl
- call Func_1e484
- pop hl
- dec b
- jr nz, .asm_1e47a
- ret
-
-Func_1e484: ; 0x1e484
- and a
- jr z, .asm_1e496
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1e491
- ld hl, TileDataPointers_1e520
- jr .asm_1e4a3
-
-.asm_1e491
- ld hl, TileDataPointers_1e556
- jr .asm_1e4a3
-
-.asm_1e496
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1e4a0
- ld hl, TileDataPointers_1e526
- jr .asm_1e4a3
-
-.asm_1e4a0
- ld hl, TileDataPointers_1e55c
-.asm_1e4a3
- push bc
- dec b
- sla b
- ld e, b
- ld d, $0
- add hl, de
- ld c, [hl]
- inc hl
- ld b, [hl]
- ld a, $7
- ld de, LoadTileLists
- call Func_10c5
- pop bc
- ret
-
-Func_1e4b8: ; 0x1e4b8
- ld a, [wd5fc]
- and a
- jr z, .asm_1e4e5
- ld a, [wd5fd]
- dec a
- ld [wd5fd], a
- jr nz, .asm_1e4ca
- ld [wd5fc], a
-.asm_1e4ca
- and $7
- jr nz, .asm_1e4e3
- ld a, [wd5fd]
- srl a
- srl a
- srl a
- and $1
- ld hl, wd5f9
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld a, $1
- and a
- ret
-
-.asm_1e4e3
- xor a
- ret
-
-.asm_1e4e5
- ld hl, wKeyConfigLeftFlipper
- call IsKeyPressed
- jr z, .leftFlipperKeyIsPressed
- ; left flipper key is pressed
- ld hl, wd5f9
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld e, a
- ld a, c
- ld [hld], a
- ld a, e
- ld [hld], a
- ld a, b
- ld [hl], a
- ret
-
-.leftFlipperKeyIsPressed
- ld hl, wKeyConfigRightFlipper
- call IsKeyPressed
- ret z
- ; right flipper key is pressed
- ld hl, wd5f9
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld e, a
- ld a, b
- ld [hld], a
- ld a, c
- ld [hld], a
- ld a, e
- ld [hl], a
- ret
-
-BallTypeProgression2BlueField: ; 0x1e514
-; Determines the next upgrade for the Ball.
- db GREAT_BALL ; POKE_BALL -> GREAT_BALL
- db GREAT_BALL ; unused
- db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
- db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
- db MASTER_BALL ; unused
- db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
-
-BallTypeDegradation2BlueField: ; 0x1e51a
-; Determines the previous upgrade for the Ball.
- db POKE_BALL ; POKE_BALL -> POKE_BALL
- db POKE_BALL ; unused
- db POKE_BALL ; GREAT_BALL -> POKE_BALL
- db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
- db ULTRA_BALL ; unused
- db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
-
-TileDataPointers_1e520:
- dw TileData_1e52c
- dw TileData_1e533
- dw TileData_1e53a
-
-TileDataPointers_1e526:
- dw TileData_1e541
- dw TileData_1e548
- dw TileData_1e54f
-
-TileData_1e52c: ; 0x1e52c
- db $02, $02
- dw vBGMap + $86
- db $66, $67
- db $00
-
-TileData_1e533: ; 0x1e533
- db $02, $02
- dw vBGMap + $69
- db $66, $67
- db $00
-
-TileData_1e53a: ; 0x1e53a
- db $02, $02
- dw vBGMap + $8C
- db $66, $67
- db $00
-
-TileData_1e541: ; 0x1e541
- db $02, $02
- dw vBGMap + $86
- db $64, $65
- db $00
-
-TileData_1e548: ; 0x1e548
- db $02, $02
- dw vBGMap + $69
- db $64, $65
- db $00
-
-TileData_1e54f: ; 0x1e54f
- db $02, $02
- dw vBGMap + $8C
- db $64, $65
- db $00
-
-TileDataPointers_1e556:
- dw TileData_1e562
- dw TileData_1e569
- dw TileData_1e570
-
-TileDataPointers_1e55c:
- dw TileData_1e577
- dw TileData_1e57e
- dw TileData_1e585
-
-TileData_1e562: ; 0x1e562
- db $02, $02
- dw vBGMap + $86
- db $43, $43
- db $00
-
-TileData_1e569: ; 0x1e569
- db $02, $02
- dw vBGMap + $69
- db $43, $43
- db $00
-
-TileData_1e570: ; 0x1e570
- db $02, $02
- dw vBGMap + $8C
- db $43, $43
- db $00
-
-TileData_1e577: ; 0x1e577
- db $02, $02
- dw vBGMap + $86
- db $42, $42
- db $00
-
-TileData_1e57e: ; 0x1e57e
- db $02, $02
- dw vBGMap + $69
- db $42, $42
- db $00
-
-TileData_1e585: ; 0x1e585
- db $02, $02
- dw vBGMap + $8C
- db $42, $42
- db $00
-
-HandleBlueStageBallTypeUpgradeCounter: ; 0x1e58c
- ld a, [wCapturingMon]
- and a
- ret nz
- ; check if counter is at 0
- ld hl, wBallTypeCounter
- ld a, [hli]
- ld c, a
- ld b, [hl]
- or b
- ret z
- dec bc
- ld a, b
- ld [hld], a
- ld [hl], c
- or c
- ret nz
- ; counter is now 0! Degrade the ball upgrade.
- ld a, [wBallType]
- ld c, a
- ld b, $0
- ld hl, BallTypeDegradation2BlueField
- add hl, bc
- ld a, [hl]
- ld [wBallType], a
- and a
- jr z, .pokeball
- ; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
- ld [wBallTypeCounter], a
- ld a, $e
- ld [wBallTypeCounter + 1], a
-.pokeball
- callba TransitionPinballUpgrade
- ret
-
-Func_1e5c5: ; 0x1e5c5
- ld a, [wWhichCAVELight]
- and a
- jr z, .asm_1e623
- xor a
- ld [wWhichCAVELight], a
- ld a, [wd513]
- and a
- jr nz, .asm_1e623
- ld a, [wWhichCAVELightId]
- sub $16
- ld c, a
- ld b, $0
- ld hl, wd50f
- add hl, bc
- ld a, [hl]
- ld [hl], $1
- and a
- ret nz
- ld bc, OneHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd50f
- ld a, [hli]
- and [hl]
- inc hl
- and [hl]
- inc hl
- and [hl]
- jr z, Func_1e627
- ld a, $1
- ld [wd513], a
- ld a, $80
- ld [wd514], a
- ld bc, FourHundredPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- lb de, $00, $09
- call PlaySoundEffect
- ld hl, wd62c
- call Func_e4a
- jr Func_1e627
-
-.asm_1e623
- call Func_1e66a
- ret z
- ; fall through
-
-Func_1e627: ; 0x1e627
- ld hl, wd512
- ld b, $4
-.asm_1e62c
- ld a, [hld]
- push hl
- call Func_1e636
- pop hl
- dec b
- jr nz, .asm_1e62c
- ret
-
-Func_1e636: ; 0x1e636
- and a
- jr z, .asm_1e648
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1e643
- ld hl, TileDataPointers_1e6d7
- jr .asm_1e655
-
-.asm_1e643
- ld hl, TileDataPointers_1e717
- jr .asm_1e655
-
-.asm_1e648
- ld a, [hGameBoyColorFlag]
- and a
- jr nz, .asm_1e652
- ld hl, TileDataPointers_1e6df
- jr .asm_1e655
-
-.asm_1e652
- ld hl, TileDataPointers_1e71f
-.asm_1e655
- push bc
- dec b
- sla b
- ld e, b
- ld d, $0
- add hl, de
- ld c, [hl]
- inc hl
- ld b, [hl]
- ld a, $7
- ld de, LoadTileLists
- call Func_10c5
- pop bc
- ret
-
-Func_1e66a: ; 0x1e66a
- ld a, [wd513]
- and a
- jr z, .asm_1e6a0
- ld a, [wd514]
- dec a
- ld [wd514], a
- jr nz, .asm_1e687
- ld [wd513], a
- ld a, $1
- ld [wd608], a
- ld a, $3
- ld [wd607], a
- xor a
-.asm_1e687
- and $7
- ret nz
- ld a, [wd514]
- srl a
- srl a
- srl a
- and $1
- ld hl, wd50f
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hl], a
- ld a, $1
- and a
- ret
-
-.asm_1e6a0
- ld hl, wKeyConfigLeftFlipper
- call IsKeyPressed
- jr z, .asm_1e6bc
- ld hl, wd50f
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hli]
- ld e, a
- ld a, [hl]
- ld d, a
- ld a, c
- ld [hld], a
- ld a, d
- ld [hld], a
- ld a, e
- ld [hld], a
- ld a, b
- ld [hl], a
- ret
-
-.asm_1e6bc
- ld hl, wKeyConfigRightFlipper
- call IsKeyPressed
- ret z
- ld hl, wd50f
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hli]
- ld e, a
- ld a, [hl]
- ld d, a
- ld a, e
- ld [hld], a
- ld a, b
- ld [hld], a
- ld a, c
- ld [hld], a
- ld a, d
- ld [hl], a
- ret
-
-TileDataPointers_1e6d7:
- dw TileData_1e6e7
- dw TileData_1e6ed
- dw TileData_1e6f3
- dw TileData_1e6f9
-
-TileDataPointers_1e6df:
- dw TileData_1e6ff
- dw TileData_1e705
- dw TileData_1e70b
- dw TileData_1e711
-
-TileData_1e6e7: ; 0x1e6e7
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $5E
-
- db $00 ; terminator
-
-TileData_1e6ed: ; 0x1e6ed
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $5E
-
- db $00 ; terminator
-
-TileData_1e6f3: ; 0x1e6f3
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $60
-
- db $00 ; terminator
-
-TileData_1e6f9: ; 0x1e6f9
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $60
-
- db $00 ; terminator
-
-TileData_1e6ff: ; 0x1e6ff
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $5D
-
- db $00 ; terminator
-
-TileData_1e705: ; 0x1e705
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $5D
-
- db $00 ; terminator
-
-TileData_1e70b: ; 0x1e70b
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $5F
-
- db $00 ; terminator
-
-TileData_1e711: ; 0x1e711
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $5F
-
- db $00 ; terminator
-
-TileDataPointers_1e717:
- dw TileData_1e727
- dw TileData_1e72d
- dw TileData_1e733
- dw TileData_1e739
-
-TileDataPointers_1e71f:
- dw TileData_1e73f
- dw TileData_1e745
- dw TileData_1e74b
- dw TileData_1e751
-
-TileData_1e727: ; 0x1e727
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $49
-
- db $00 ; terminator
-
-TileData_1e72d: ; 0x1e72d
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $4A
-
- db $00 ; terminator
-
-TileData_1e733: ; 0x1e733
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $4B
-
- db $00 ; terminator
-
-TileData_1e739: ; 0x1e739
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $4C
-
- db $00 ; terminator
-
-TileData_1e73f: ; 0x1e73f
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $121
- db $47
-
- db $00 ; terminator
-
-TileData_1e745: ; 0x1e745
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $123
- db $48
-
- db $00 ; terminator
-
-TileData_1e74b: ; 0x1e74b
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $130
- db $7A
-
- db $00 ; terminator
-
-TileData_1e751: ; 0x1e751
- db $01 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $132
- db $7B
-
- db $00 ; terminator
-
-Func_1e757: ; 0x1e757
- ld a, [wSlotCollision]
- and a
- jr z, .asm_1e78c
- xor a
- ld [wSlotCollision], a
- ld a, [wd604]
- and a
- ret z
- ld a, [wd603]
- and a
- jr nz, .asm_1e78c
- xor a
- ld hl, wBallXVelocity
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [hli], a
- ld [wd549], a
- ld [wBallXPos], a
- ld [wBallYPos], a
- ld a, $50
- ld [wBallXPos + 1], a
- ld a, $16
- ld [wBallYPos + 1], a
- ld a, $13
- ld [wd603], a
-.asm_1e78c
- ld a, [wd603]
- and a
- ret z
- dec a
- ld [wd603], a
- ld a, $18
- ld [wd606], a
- ld a, [wd603]
- cp $12
- jr nz, .asm_1e7b2
- lb de, $00, $21
- call PlaySoundEffect
- callba LoadMiniBallGfx
- ret
-
-.asm_1e7b2
- cp $f
- jr nz, .asm_1e7c1
- callba Func_dd62
- ret
-
-.asm_1e7c1
- cp $c
- jr nz, .asm_1e7d0
- xor a
- ld [wd548], a
- ld [wBallSpin], a
- ld [wBallRotation], a
- ret
-
-.asm_1e7d0
- cp $9
- jr nz, .asm_1e7d8
- call Func_1e830
- ret
-
-.asm_1e7d8
- cp $6
- jr nz, .asm_1e7f5
- xor a
- ld [wd604], a
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- callba LoadMiniBallGfx
- ret
-
-.asm_1e7f5
- cp $3
- jr nz, .asm_1e80e
- callba LoadBallGfx
- ld a, $2
- ld [wBallYVelocity + 1], a
- ld a, $80
- ld [wBallXVelocity], a
- ret
-
-.asm_1e80e
- and a
- ret nz
- call Func_1e8f6
- ld a, [wCatchEmOrEvolutionSlotRewardActive]
- cp CATCHEM_MODE_SLOT_REWARD
- ret nz
- call GenRandom
- and $8
- ld [wRareMonsFlag], a
- callba StartCatchEmMode
- xor a
- ld [wCatchEmOrEvolutionSlotRewardActive], a
- ret
-
-Func_1e830: ; 0x1e830
- xor a
- ld [wIndicatorStates + 4], a
- ld a, $d
- callba Func_10000
- jr nc, .asm_1e84b
- ld a, $1
- ld [wd548], a
- ld [wd549], a
- ret
-
-.asm_1e84b
- ld a, [wd624]
- cp $3
- jr nz, .asm_1e891
- ld a, [wd607]
- and a
- jr nz, .asm_1e891
-.asm_1e858
- ld a, [wBonusStageSlotRewardActive]
- and a
- jr nz, .asm_1e867
- xor a
- ld [wd625], a
- ld a, $40
- ld [wd626], a
-.asm_1e867
- xor a
- ld [wBonusStageSlotRewardActive], a
- ld a, $1
- ld [wd495], a
- ld [wd4ae], a
- ld a, [wd498]
- ld c, a
- ld b, $0
- ld hl, GoToBonusStageTextIds_BlueField
- add hl, bc
- ld a, [hl]
- ld [wd497], a
- call Func_1e8c3
- xor a
- ld [wd609], a
- ld [wCatchEmOrEvolutionSlotRewardActive], a
- ld a, $1e
- ld [wd607], a
- ret
-
-.asm_1e891
- callba Func_ed8e
- xor a
- ld [wd608], a
- ld a, [wd61d]
- cp $d
- jr nc, .asm_1e858
- ld a, $1
- ld [wd548], a
- ld [wd549], a
- ld a, [wCatchEmOrEvolutionSlotRewardActive]
- cp EVOLUTION_MODE_SLOT_REWARD
- ret nz
- callba Func_10ab3
- xor a
- ld [wCatchEmOrEvolutionSlotRewardActive], a
- ret
-
-Func_1e8c3: ; 0x1e8c3
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5dc
- ld a, [wd497]
- ld de, GoToMeowthStageText
- cp STAGE_MEOWTH_BONUS
- jr z, .loadText
- ld de, GoToSeelStageText
- cp STAGE_SEEL_BONUS
- jr z, .loadText
- ld de, GoToMewtwoStageText
-.loadText
- call LoadTextHeader
- ld de, $0000
- call PlaySong
- rst AdvanceFrame
- lb de, $3c, $23
- call PlaySoundEffect
- ret
-
-GoToBonusStageTextIds_BlueField:
- db STAGE_GENGAR_BONUS
- db STAGE_MEWTWO_BONUS
- db STAGE_MEOWTH_BONUS
- db STAGE_DIGLETT_BONUS
- db STAGE_SEEL_BONUS
-
-Func_1e8f6: ; 0x1e8f6
- ld a, [wCurrentStage]
- and $1
- sla a
- ld c, a
- ld a, [wd604]
- add c
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1e91e
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1e912
- ld hl, TileDataPointers_1e970
-.asm_1e912
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_1e91e)
- call Func_10aa
- ret
-
-TileDataPointers_1e91e:
- dw TileData_1e926
- dw TileData_1e929
- dw TileData_1e92c
- dw TileData_1e931
-
-TileData_1e926: ; 0x1e926
- db $01
- dw TileData_1e936
-
-TileData_1e929: ; 0x1e929
- db $01
- dw TileData_1e93f
-
-TileData_1e92c: ; 0x1e92c
- db $02
- dw TileData_1e948
- dw TileData_1e952
-
-TileData_1e931: ; 0x1e931
- db $02
- dw TileData_1e95c
- dw TileData_1e966
-
-TileData_1e936: ; 0x1e936
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $229
- db $EE, $EF
-
- db $00 ; terminator
-
-TileData_1e93f: ; 0x1e93f
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $229
- db $F0, $F1
-
- db $00 ; terminator
-
-TileData_1e948: ; 0x1e948
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1F
- dw StageBlueFieldBottomBaseGameBoyGfx + $9F0
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e952: ; 0x1e952
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $21
- dw StageBlueFieldBottomBaseGameBoyGfx + $A10
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1e95c: ; 0x1e95c
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1F
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BC0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e966: ; 0x1e966
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $21
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BE0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileDataPointers_1e970:
- dw TileData_1e978
- dw TileData_1e97d
- dw TileData_1e980
- dw TileData_1e983
-
-TileData_1e978: ; 0x1e978
- db $02
- dw TileData_1e986
- dw TileData_1e98F
-
-TileData_1e97d: ; 0x1e97d
- db $01
- dw TileData_1e99b
-
-TileData_1e980: ; 0x1e980
- db $01
- dw TileData_1e9a4
-
-TileData_1e983: ; 0x1e983
- db $01
- dw TileData_1e9b2
-
-TileData_1e986: ; 0x1e986
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $229
- db $F0, $F1
-
- db $00 ; terminator
-
-TileData_1e98F: ; 0x1e98F
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $224
- db $D8
-
- db $01 ; number of tiles
- dw vBGMap + $22f
- db $EC
-
- db $00 ; terminator
-
-TileData_1e99b: ; 0x1e99b
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $229
- db $F2, $F3
-
- db $00 ; terminator
-
-TileData_1e9a4: ; 0x1e9a4
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw $9809
- db $15, $16
-
- db $02 ; terminator
- dw vBGMap + $29
- db $17, $18
-
- db $00 ; terminator
-
-TileData_1e9b2: ; 0x1e9b2
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $9
- db $19, $1A
-
- db $02 ; terminator
- dw vBGMap + $29
- db $1B, $1C
-
- db $00 ; terminator
-
-Func_1e9c0: ; 0x1e9c0
- ld a, [wd607]
- and a
- ret z
- dec a
- ld [wd607], a
- ret nz
- ld a, [wInSpecialMode]
- and a
- ret nz
- ld a, [wd609]
- and a
- jr z, .asm_1e9dc
- ld a, [wd498]
- add $15
- jr .asm_1e9e3
-
-.asm_1e9dc
- ld a, [wd608]
- and a
- ret z
- ld a, $1a
-.asm_1e9e3
- ld hl, wCurrentStage
- bit 0, [hl]
- callba nz, Func_30256
- ld a, [wd604]
- and a
- ret nz
- ld a, $1
- ld [wd604], a
- ld a, $80
- ld [wIndicatorStates + 4], a
- ld a, [wCurrentStage]
- bit 0, a
- call nz, Func_1e8f6
- ret
-
-Func_1ea0a: ; 0x1ea0a
- ld a, [wd604]
- and a
- ret z
- ld a, [wBallYPos + 1]
- sub $fe
- cp $30
- ret nc
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
- jr asm_1ea6a
-
-Func_1ea3b: ; 0x1ea3b
- ld a, [wd604]
- and a
- ret z
- ld a, [wBallYPos + 1]
- sub $86
- cp $30
- ret nc
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
- ; fall through
-
-asm_1ea6a: ; 0x1ea6a
- ld bc, BallPhysicsData_f0000
- add hl, bc
- ld de, wBallXVelocity
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- push bc
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_f0000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- bit 7, b
- jr z, .asm_1eaa9
- ld a, c
- cpl
- ld c, a
- ld a, b
- cpl
- ld b, a
- inc bc
-.asm_1eaa9
- pop hl
- bit 7, h
- jr z, .asm_1eab5
- ld a, l
- cpl
- ld l, a
- ld a, h
- cpl
- ld h, a
- inc hl
-.asm_1eab5
- add hl, bc
- sla l
- rl h
- ld a, h
- cp $2
- ret c
- ld a, [wd804]
- and a
- ret nz
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- lb de, $00, $04
- call PlaySoundEffect
- ret
-
-Func_1ead4: ; 0x1ead4
- ld a, [hNumFramesDropped]
- and $f
- ret nz
- ld bc, $0000
-.asm_1eadc
- push bc
- ld hl, wIndicatorStates
- add hl, bc
- ld a, [hl]
- cp $1
- jr z, .asm_1eaf8
- bit 7, [hl]
- jr z, .asm_1eaf8
- ld a, [hl]
- res 7, a
- ld hl, hNumFramesDropped
- bit 4, [hl]
- jr z, .asm_1eaf5
- inc a
-.asm_1eaf5
- call Func_1eb41
-.asm_1eaf8
- pop bc
- inc c
- ld a, c
- cp $2
- jr nz, .asm_1eadc
- ld a, [hNumFramesDropped]
- and $f
- ret nz
- ld a, [wCurrentStage]
- bit 0, a
- ret z
- ld bc, $0002
-.asm_1eb0d
- push bc
- ld hl, wIndicatorStates
- add hl, bc
- ld a, [hl]
- cp $1
- jr z, .asm_1eb29
- bit 7, [hl]
- jr z, .asm_1eb29
- ld a, [hl]
- res 7, a
- ld hl, hNumFramesDropped
- bit 4, [hl]
- jr z, .asm_1eb2b
- inc a
- inc a
- jr .asm_1eb2b
-
-.asm_1eb29
- ld a, $0
-.asm_1eb2b
- 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_1eb0d
- ret
-
-Func_1eb41: ; 0x1eb41
- push af
- sla c
- ld hl, TileDataPointers_1eb61
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1eb4f
- ld hl, TileDataPointers_1ed51
-.asm_1eb4f
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop af
- sla a
- ld c, a
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_1eb61)
- call Func_10aa
- ret
-
-TileDataPointers_1eb61:
- dw TileDataPointers_1eb6b
- dw TileDataPointers_1eb75
- dw TileDataPointers_1eb7f
- dw TileDataPointers_1eb87
- dw TileDataPointers_1eb8f
-
-TileDataPointers_1eb6b: ; 0x1eb6b
- dw TileData_1eb97
- dw TileData_1eb9a
- dw TileData_1eb9d
- dw TileData_1eba0
- dw TileData_1eba3
-
-TileDataPointers_1eb75: ; 0x1eb75
- dw TileData_1eba6
- dw TileData_1eba9
- dw TileData_1ebac
- dw TileData_1ebaf
- dw TileData_1ebb2
-
-TileDataPointers_1eb7f: ; 0x1eb7f
- dw TileData_1ebb5
- dw TileData_1ebb8
- dw TileData_1ebbb
- dw TileData_1ebbe
-
-TileDataPointers_1eb87: ; 0x1eb87
- dw TileData_1ebc1
- dw TileData_1ebc6
- dw TileData_1ebcb
- dw TileData_1ebd0
-
-TileDataPointers_1eb8f: ; 0x1eb8f
- dw TileData_1ebd5
- dw TileData_1ebda
- dw TileData_1ebdf
- dw TileData_1ebe4
-
-TileData_1eb97: ; 0x1eb97
- db $01
- dw TileData_1ebe9
-
-TileData_1eb9a: ; 0x1eb9a
- db $01
- dw TileData_1ebf9
-
-TileData_1eb9d: ; 0x1eb9d
- db $01
- dw TileData_1ec09
-
-TileData_1eba0: ; 0x1eba0
- db $01
- dw TileData_1ec19
-
-TileData_1eba3: ; 0x1eba3
- db $01
- dw TileData_1ec29
-
-TileData_1eba6: ; 0x1eba6
- db $01
- dw TileData_1ec39
-
-TileData_1eba9: ; 0x1eba9
- db $01
- dw TileData_1ec49
-
-TileData_1ebac: ; 0x1ebac
- db $01
- dw TileData_1ec59
-
-TileData_1ebaf: ; 0x1ebaf
- db $01
- dw TileData_1ec69
-
-TileData_1ebb2: ; 0x1ebb2
- db $01
- dw TileData_1ec79
-
-TileData_1ebb5: ; 0x1ebb5
- db $01
- dw TileData_1ec89
-
-TileData_1ebb8: ; 0x1ebb8
- db $01
- dw TileData_1ec93
-
-TileData_1ebbb: ; 0x1ebbb
- db $01
- dw TileData_1ec9d
-
-TileData_1ebbe: ; 0x1ebbe
- db $01
- dw TileData_1eca7
-
-TileData_1ebc1: ; 0x1ebc1
- db $02
- dw TileData_1ecb1
- dw TileData_1ecbb
-
-TileData_1ebc6: ; 0x1ebc6
- db $02
- dw TileData_1ecc5
- dw TileData_1eccf
-
-TileData_1ebcb: ; 0x1ebcb
- db $02
- dw TileData_1ecd9
- dw TileData_1ece3
-
-TileData_1ebd0: ; 0x1ebd0
- db $02
- dw TileData_1eced
- dw TileData_1ecf7
-
-TileData_1ebd5: ; 0x1ebd5
- db $02
- dw TileData_1ed01
- dw TileData_1ed0b
-
-TileData_1ebda: ; 0x1ebda
- db $02
- dw TileData_1ed15
- dw TileData_1ed1f
-
-TileData_1ebdf: ; 0x1ebdf
- db $02
- dw TileData_1ed01
- dw TileData_1ed0b
-
-TileData_1ebe4: ; 0x1ebe4
- db $02
- dw TileData_1ed15
- dw TileData_1ed1f
-
-TileData_1ebe9: ; 0x1ebe9
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $3D
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $17
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $3D
-
- db $00 ; terminator
-
-TileData_1ebf9: ; 0x1ebf9
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $3E
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $17
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $3D
-
- db $00 ; terminator
-
-TileData_1ec09: ; 0x1ec09
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $3E
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $18
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $3D
-
- db $00 ; terminator
-
-TileData_1ec19: ; 0x1ec19
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $3E
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $18
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $3E
-
- db $00 ; terminator
-
-TileData_1ec29: ; 0x1ec29
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $3D
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $18
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $3D
-
- db $00 ; terminator
-
-TileData_1ec39: ; 0x1ec39
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $3F
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $1D
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $3F
-
- db $00 ; terminator
-
-TileData_1ec49: ; 0x1ec49
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $40
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $1D
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $3F
-
- db $00 ; terminator
-
-TileData_1ec59: ; 0x1ec59
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $40
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $1E
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $3F
-
- db $00 ; terminator
-
-TileData_1ec69: ; 0x1ec69
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $40
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $1E
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $40
-
- db $00 ; terminator
-
-TileData_1ec79: ; 0x1ec79
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $40
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $1D
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $40
-
- db $00 ; terminator
-
-TileData_1ec89: ; 0x1ec89
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $15
- dw StageBlueFieldBottomBaseGameBoyGfx + $950
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1ec93: ; 0x1ec93
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $15
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ec9d: ; 0x1ec9d
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $15
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1eca7: ; 0x1eca7
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $15
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ecb1: ; 0x1ecb1
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $19
- dw StageBlueFieldBottomBaseGameBoyGfx + $990
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1ecbb: ; 0x1ecbb
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1B
- dw StageBlueFieldBottomBaseGameBoyGfx + $9B0
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1ecc5: ; 0x1ecc5
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $19
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2270
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1eccf: ; 0x1eccf
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1B
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2290
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ecd9: ; 0x1ecd9
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $19
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22B0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ece3: ; 0x1ece3
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1B
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22D0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1eced: ; 0x1eced
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $19
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22F0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ecf7: ; 0x1ecf7
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $1B
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2310
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ed01: ; 0x1ed01
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $23
- dw StageBlueFieldBottomBaseGameBoyGfx + $A30
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1ed0b: ; 0x1ed0b
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $25
- dw StageBlueFieldBottomBaseGameBoyGfx + $A50
- db Bank(StageBlueFieldBottomBaseGameBoyGfx)
- db $00
-
-TileData_1ed15: ; 0x1ed15
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $23
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C00
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ed1f: ; 0x1ed1f
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $25
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C20
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ed29: ; 0x1ed29
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $23
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C40
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ed33: ; 0x1ed33
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $25
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C60
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1e3d: ; 0x1e3d
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $23
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C80
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileData_1ed47: ; 0x1ed47
- dw Func_11d2
- db $20, $02
- dw vTilesBG tile $25
- dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1CA0
- db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
- db $00
-
-TileDataPointers_1ed51: ; 0x1ed51
- dw TileDataPointers_1ed5b
- dw TileDataPointers_1ed65
- dw TileDataPointers_1ed6f
- dw TileDataPointers_1ed77
- dw TileDataPointers_1ed7f
-
-TileDataPointers_1ed5b: ; 0x1ed5b
- dw TileData_1ed87
- dw TileData_1ed8a
- dw TileData_1ed8d
- dw TileData_1ed90
- dw TileData_1ed93
-
-TileDataPointers_1ed65: ; 0x1ed65
- dw TileData_1ed96
- dw TileData_1ed99
- dw TileData_1ed9c
- dw TileData_1ed9f
- dw TileData_1eda2
-
-TileDataPointers_1ed6f: ; 0x1ed6f
- dw TileData_1eda5
- dw TileData_1eda8
- dw TileData_1edab
- dw TileData_1edae
-
-TileDataPointers_1ed77: ; 0x1ed77
- dw TileData_1edb1
- dw TileData_1edb4
- dw TileData_1edb7
- dw TileData_1edba
-
-TileDataPointers_1ed7f: ; 0x1ed7f
- dw TileData_1edbd
- dw TileData_1edc0
- dw TileData_1edc3
- dw TileData_1edc6
-
-TileData_1ed87: ; 0x1ed87
- db $01
- dw TileData_1edc9
-
-TileData_1ed8a: ; 0x1ed8a
- db $01
- dw TileData_1edd9
-
-TileData_1ed8d: ; 0x1ed8d
- db $01
- dw TileData_1ede9
-
-TileData_1ed90: ; 0x1ed90
- db $01
- dw TileData_1edf9
-
-TileData_1ed93: ; 0x1ed93
- db $01
- dw TileData_1ee09
-
-TileData_1ed96: ; 0x1ed96
- db $01
- dw TileData_1ee19
-
-TileData_1ed99: ; 0x1ed99
- db $01
- dw TileData_1ee29
-
-TileData_1ed9c: ; 0x1ed9c
- db $01
- dw TileData_1ee39
-
-TileData_1ed9f: ; 0x1ed9f
- db $01
- dw TileData_1ee49
-
-TileData_1eda2: ; 0x1eda2
- db $01
- dw TileData_1ee59
-
-TileData_1eda5: ; 0x1eda5
- db $01
- dw TileData_1ee69
-
-TileData_1eda8: ; 0x1eda8
- db $01
- dw TileData_1ee75
-
-TileData_1edab: ; 0x1edab
- db $01
- dw TileData_1ee81
-
-TileData_1edae: ; 0x1edae
- db $01
- dw TileData_1ee8d
-
-TileData_1edb1: ; 0x1edb1
- db $01
- dw TileData_1ee99
-
-TileData_1edb4: ; 0x1edb4
- db $01
- dw TileData_1eea7
-
-TileData_1edb7: ; 0x1edb7
- db $01
- dw TileData_1eeb5
-
-TileData_1edba: ; 0x1edba
- db $01
- dw TileData_1eec3
-
-TileData_1edbd: ; 0x1edbd
- db $01
- dw TileData_1eed1
-
-TileData_1edc0: ; 0x1edc0
- db $01
- dw TileData_1eedf
-
-TileData_1edc3: ; 0x1edc3
- db $01
- dw TileData_1eeed
-
-TileData_1edc6: ; 0x1edc6
- db $01
- dw TileData_1eefb
-
-TileData_1edc9: ; 0x1edc9
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $31
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $0D
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $7C
-
- db $00 ; terminator
-
-TileData_1edd9: ; 0x1edd9
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $32
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $0D
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $7C
-
- db $00 ; terminator
-
-TileData_1ede9: ; 0x1ede9
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $32
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $0E
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $7C
-
- db $00 ; terminator
-
-TileData_1edf9: ; 0x1edf9
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $32
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $0E
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $7D
-
- db $00 ; terminator
-
-TileData_1ee09: ; 0x1ee09
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $64
- db $31
-
- db $01 ; number of tiles
- dw vBGMap + $84
- db $0E
-
- db $01 ; number of tiles
- dw vBGMap + $A5
- db $7C
-
- db $00 ; terminator
-
-TileData_1ee19: ; 0x1ee19
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $33
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $0F
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $7E
-
- db $00 ; terminator
-
-TileData_1ee29: ; 0x1ee29
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $34
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $0F
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $7E
-
- db $00 ; terminator
-
-TileData_1ee39: ; 0x1ee39
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $34
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $10
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $7E
-
- db $00 ; terminator
-
-TileData_1ee49: ; 0x1ee49
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $34
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $10
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $7F
-
- db $00 ; terminator
-
-TileData_1ee59: ; 0x1ee59
- dw LoadTileLists
- db $03 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $6F
- db $33
-
- db $01 ; number of tiles
- dw vBGMap + $8F
- db $10
-
- db $01 ; number of tiles
- dw vBGMap + $AE
- db $7E
-
- db $00 ; terminator
-
-TileData_1ee69: ; 0x1ee69
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $48
- db $05
-
- db $01 ; number of tiles
- dw vBGMap + $68
- db $06
-
- db $00 ; terminator
-
-TileData_1ee75: ; 0x1ee75
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $48
- db $07
-
- db $01 ; number of tiles
- dw vBGMap + $68
- db $08
-
- db $00 ; terminator
-
-TileData_1ee81: ; 0x1ee81
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $48
- db $09
-
- db $01 ; number of tiles
- dw vBGMap + $68
- db $0A
-
- db $00 ; terminator
-
-TileData_1ee8d: ; 0x1ee8d
- dw LoadTileLists
- db $02 ; total number of tiles
-
- db $01 ; number of tiles
- dw vBGMap + $48
- db $0B
-
- db $01 ; number of tiles
- dw vBGMap + $68
- db $0C
-
- db $00 ; terminator
-
-TileData_1ee99: ; 0x1ee99
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $4B
- db $26, $27
-
- db $02 ; number of tiles
- dw vBGMap + $6B
- db $28, $29
-
- db $00 ; terminator
-
-TileData_1eea7: ; 0x1eea7
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $4B
- db $2A, $2B
-
- db $02 ; number of tiles
- dw vBGMap + $6B
- db $2C, $2D
-
- db $00 ; terminator
-
-TileData_1eeb5: ; 0x1eeb5
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $4B
- db $2E, $2F
-
- db $02 ; number of tiles
- dw vBGMap + $6B
- db $30, $31
-
- db $00 ; terminator
-
-TileData_1eec3: ; 0x1eec3
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $4B
- db $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $6B
- db $34, $35
-
- db $00 ; terminator
-
-TileData_1eed1: ; 0x1eed1
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $49
- db $16, $17
-
- db $02 ; number of tiles
- dw vBGMap + $69
- db $18, $19
-
- db $00 ; terminator
-
-TileData_1eedf: ; 0x1eedf
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $49
- db $1A, $1B
-
- db $02 ; number of tiles
- dw vBGMap + $69
- db $1C, $1D
-
- db $00 ; terminator
-
-TileData_1eeed: ; 0x1eeed
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $49
- db $1E, $1F
-
- db $02 ; number of tiles
- dw vBGMap + $69
- db $20, $21
-
- db $00 ; terminator
-
-TileData_1eefb: ; 0x1eefb
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $49
- db $22, $23
-
- db $02 ; number of tiles
- dw vBGMap + $69
- db $24, $25
-
- db $00 ; terminator
-
-ResolveBlueStageForceFieldCollision: ; 0x1ef09
- ld a, [wBlueStageForceFieldDirection]
- cp $0 ; up direction
- jp z, Func_1ef20
- cp $1 ; right direction
- jp z, Func_1ef4d
- cp $2 ; down direction
- jp z, Func_1ef7e
- cp $3 ; left direction
- jp z, Func_1efae
- ; fall through
- ; default to upward forcefield
-
-Func_1ef20: ; 0x1ef20
- ld a, [wBallYPos + 1]
- sub $60
- cp $30
- ret nc
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
- jp Func_1efdc
-
-Func_1ef4d: ; 0x1ef4d
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, a
- ld a, $30
- sub c
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallYPos + 1]
- sub $60
- cp $30
- ret nc
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
- jp Func_1efdc
-
-Func_1ef7e: ; 0x1ef7e
- ld a, [wBallYPos + 1]
- sub $60
- cp $30
- ret nc
- ld c, a
- ld a, $30
- sub c
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
- jr Func_1efdc
-
-Func_1efae: ; 0x1efae
- ld a, [wBallXPos + 1]
- sub $38
- cp $30
- ret nc
- ld c, $0
- ld b, a
- ld h, b
- ld l, c
- srl b
- rr c
- srl b
- rr c
- srl h
- rr l
- add hl, bc
- ld a, [wBallYPos + 1]
- sub $60
- cp $30
- ret nc
- ld c, a
- ld a, $30
- sub c
- ld c, a
- ld b, $0
- sla c
- sla c
- add hl, bc
- ; fall through
-Func_1efdc: ; 0x1efdc
- ld a, [wBlueStageForceFieldDirection]
- cp $0 ; up direction
- jp z, Func_1eff3
- cp $1 ; right direction
- jp z, Func_1f0be
- cp $2 ; down direction
- jp z, Func_1f057
- cp $3 ; left direction
- jp z, Func_1f124
- ; fall through
- ; default to upward forcefield
-
-Func_1eff3: ; 0x1eff3
- ld bc, BallPhysicsData_ec000
- add hl, bc
- ld de, wBallXVelocity
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- push bc
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- bit 7, b
- jr z, .asm_1f032
- ld a, c
- cpl
- ld c, a
- ld a, b
- cpl
- ld b, a
- inc bc
-.asm_1f032
- pop hl
- bit 7, h
- jr z, .asm_1f03e
- ld a, l
- cpl
- ld l, a
- ld a, h
- cpl
- ld h, a
- inc hl
-.asm_1f03e
- add hl, bc
- sla l
- rl h
- ld a, h
- cp $2
- ret c
- ld a, [wd804]
- and a
- ret nz
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ret
-
-Func_1f057: ; 0x1f057
- ld bc, BallPhysicsData_ec000
- add hl, bc
- ld de, wBallXVelocity
- bit 2, l
- ret nz
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- push bc
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- sub c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- sbc b
- ld [de], a
- inc de
- inc hl
- bit 7, b
- jr z, .asm_1f099
- ld a, c
- cpl
- ld c, a
- ld a, b
- cpl
- ld b, a
- inc bc
-.asm_1f099
- pop hl
- bit 7, h
- jr z, .asm_1f0a5
- ld a, l
- cpl
- ld l, a
- ld a, h
- cpl
- ld h, a
- inc hl
-.asm_1f0a5
- add hl, bc
- sla l
- rl h
- ld a, h
- cp $2
- ret c
- ld a, [wd804]
- and a
- ret nz
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ret
-
-Func_1f0be: ; 0x1f0be
- ld bc, BallPhysicsData_ec000
- add hl, bc
- ld de, wBallYVelocity
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc hl
- push bc
- dec de
- dec de
- dec de
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- sub c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- sbc b
- ld [de], a
- inc de
- inc hl
- bit 7, b
- jr z, .asm_1f0ff
- ld a, c
- cpl
- ld c, a
- ld a, b
- cpl
- ld b, a
- inc bc
-.asm_1f0ff
- pop hl
- bit 7, h
- jr z, .asm_1f10b
- ld a, l
- cpl
- ld l, a
- ld a, h
- cpl
- ld h, a
- inc hl
-.asm_1f10b
- add hl, bc
- sla l
- rl h
- ld a, h
- cp $2
- ret c
- ld a, [wd804]
- and a
- ret nz
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ret
-
-Func_1f124: ; 0x1f124
- ld bc, BallPhysicsData_ec000
- add hl, bc
- ld de, wBallYVelocity
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- sub c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- sbc b
- ld [de], a
- inc hl
- push bc
- dec de
- dec de
- dec de
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld c, a
- ld a, [de]
- add c
- ld [de], a
- inc de
- inc hl
- ld a, BANK(BallPhysicsData_ec000)
- call ReadByteFromBank
- ld b, a
- ld a, [de]
- adc b
- ld [de], a
- inc de
- inc hl
- bit 7, b
- jr z, .asm_1f165
- ld a, c
- cpl
- ld c, a
- ld a, b
- cpl
- ld b, a
- inc bc
-.asm_1f165
- pop hl
- bit 7, h
- jr z, .asm_1f171
- ld a, l
- cpl
- ld l, a
- ld a, h
- cpl
- ld h, a
- inc hl
-.asm_1f171
- add hl, bc
- sla l
- rl h
- ld a, h
- cp $2
- ret c
- ld a, [wd804]
- and a
- ret nz
- ld a, $5
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- ret
-
-Func_1f18a: ; 0x1f18a
- ld a, [wd640]
- cp $0
- jr z, .asm_1f1b4
- ld a, [wBlueStageForceFieldDirection]
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1f1b5
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_1f1a4
- ld hl, TileDataPointers_1f201
-.asm_1f1a4
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- or h
- ret z
- ld a, Bank(TileDataPointers_1f1b5)
- call Func_10aa
- ld a, $0
- ld [wd640], a
-.asm_1f1b4
- ret
-
-TileDataPointers_1f1b5:
- dw TileData_1f1bd
- dw TileData_1f1c0
- dw TileData_1f1c3
- dw TileData_1f1c6
-
-TileData_1f1bd: ; 0x1f1bd
- db $01
- dw TileData_1f1c9
-
-TileData_1f1c0: ; 0x1f1c0
- db $01
- dw TileData_1f1d7
-
-TileData_1f1c3: ; 0x1f1c3
- db $01
- dw TileData_1f1e5
-
-TileData_1f1c6: ; 0x1f1c6
- db $01
- dw TileData_1f1f3
-
-TileData_1f1c9: ; 0x1f1c9
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $189
- db $70, $71
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $72, $73
-
- db $00 ; terminator
-
-TileData_1f1d7: ; 0x1f1d7
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $189
- db $74, $75
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $76, $77
-
- db $00 ; terminator
-
-TileData_1f1e5: ; 0x1f1e5
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $189
- db $78, $79
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $7A, $7B
-
- db $00 ; terminator
-
-TileData_1f1f3: ; 0x1f1f3
- dw LoadTileLists
- db $04 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $189
- db $7C, $7D
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $7E, $7F
-
- db $00 ; terminator
-
-TileDataPointers_1f201:
- dw TileData_1f209
- dw TileData_1f20c
- dw TileData_1f20f
- dw TileData_1f212
-
-TileData_1f209: ; 0x1f209
- db $01
- dw TileData_1f215
-
-TileData_1f20c: ; 0x1f20c
- db $01
- dw TileData_1f228
-
-TileData_1f20f: ; 0x1f20f
- db $01
- dw TileData_1f23b
-
-TileData_1f212: ; 0x1f212
- db $01
- dw TileData_1f24e
-
-TileData_1f215: ; 0x1f215
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $02 ; number of otiles
- dw vBGMap + $189
- db $6C, $6D
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $6E, $6F
-
- db $02
- dw vBGMap + $1c9
- db $70, $71
-
- db $00 ; terminator
-
-TileData_1f228: ; 0x1f228
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $02 ; number of otiles
- dw vBGMap + $189
- db $72, $80
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $73, $74
-
- db $02
- dw vBGMap + $1c9
- db $75, $80
-
- db $00 ; terminator
-
-TileData_1f23b: ; 0x1f23b
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $02 ; number of otiles
- dw vBGMap + $189
- db $76, $77
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $78, $79
-
- db $02
- dw vBGMap + $1c9
- db $7A, $7B
-
- db $00 ; terminator
-
-TileData_1f24e: ; 0x1f24e
- dw LoadTileLists
- db $06 ; total number of tiles
-
- db $02 ; number of otiles
- dw vBGMap + $189
- db $80, $7C
-
- db $02 ; number of tiles
- dw vBGMap + $1a9
- db $7D, $7E
-
- db $02
- dw vBGMap + $1c9
- db $80, $7F
-
- db $00 ; terminator
-
-Func_1f261: ; 0x1f261
- call Func_1f27b
- ret nc
- ; fall through
-
-Func_1f265: ; 0x1f265
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_1f2b9
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, $7
- ld de, LoadTileLists
- call Func_10c5
- ret
-
-Func_1f27b: ; 0x1f27b
- ld a, [wd624]
- ld hl, wd625
- cp [hl]
- ret z
- ld a, [wd626]
- dec a
- ld [wd626], a
- jr nz, .asm_1f2a5
- ld a, [wd625]
- ld [wd624], a
- cp $3
- jr c, .asm_1f2a0
- ld a, $1
- ld [wd609], a
- ld a, $3
- ld [wd607], a
-.asm_1f2a0
- ld a, [wd624]
- scf
- ret
-
-.asm_1f2a5
- and $7
- ret nz
- ld a, [wd626]
- bit 3, a
- jr nz, .asm_1f2b4
- ld a, [wd624]
- scf
- ret
-
-.asm_1f2b4
- ld a, [wd625]
- scf
- ret
-
-TileDataPointers_1f2b9:
- dw TileData_1f2c1
- dw TileData_1f2cc
- dw TileData_1f2d7
- dw TileData_1f2e2
-
-TileData_1f2c1: ; 0x1f2c1
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw vBGMap + $107
- db $B0, $B1, $B0, $B1, $B0, $B1
-
- db $00 ; terminator
-
-TileData_1f2cc: ; 0x1f2cc
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw vBGMap + $107
- db $AE, $AF, $B0, $B1, $B0, $B1
-
- db $00 ; terminator
-
-TileData_1f2d7: ; 0x1f2d7
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw vBGMap + $107
- db $AE, $AF, $AE, $AF, $B0, $B1
-
- db $00 ; terminator
-
-TileData_1f2e2: ; 0x1f2e2
- db $06 ; total number of tiles
-
- db $06 ; number of tiles
- dw vBGMap + $107
- db $AE, $AF, $AE, $AF, $AE, $AF
-
- db $00 ; terminator
+INCLUDE "engine/pinball_game/object_collision/blue_stage_resolve_collision.asm"
Func_1f2ed: ; 0x1f2ed
xor a
@@ -23925,6201 +4148,13 @@ Func_24405: ; 0x24405
and a
ret
-Func_2442a: ; 0x2442a
- ld a, [wd710]
- jr nz, .asm_2443f
- ld a, [wMeowthStageBonusCounter]
- dec a
- dec a
- cp $fe
- jr z, .asm_24447
- cp $ff
- jr z, .asm_24447
- ld [wd79a], a
-.asm_2443f
- ld de, wd79a
- call Func_24f00
- jr .asm_2444b
-
-.asm_24447
- xor a
- ld [wd79a], a
-.asm_2444b
- call Func_244f5
- call Func_245ab
- call Func_248ac
- call Func_24d07
- ld a, [wMeowthStageScore]
- cp $14
- jr c, .asm_24498
- ld a, [wd712]
- cp $2
- jr nc, .asm_24498
- ld a, [wd498]
- cp $4
- ret z
- ld a, $4
- ld [wd712], a
- ld [wd498], a
- ld a, $96
- ld [wd739], a
- ld de, $0000
- call PlaySong
- ld a, $1
- ld [wd49a], a
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5dc
- ld de, MeowthStageClearedText
- call LoadTextHeader
- lb de, $4b, $2a
- call PlaySoundEffect
-.asm_24498
- ld a, [wd712]
- cp $4
- jr nz, .asm_244b0
- ld a, [wSFXTimer]
- and a
- jr nz, .asm_244b0
- ld de, $0004
- call PlaySong
- ld a, $5
- ld [wd712], a
-.asm_244b0
- ld a, [wd712]
- cp $4
- jr z, .asm_244c1
- callba Func_107f8
-.asm_244c1
- ld a, [wd57e]
- and a
- ret z
- xor a
- ld [wd57e], a
- ld a, $1
- ld [wd7be], a
- call Func_2862
- callba StopTimer
- ld a, $1
- ld [wd713], a
- ld a, $1
- ld [wd712], a
- ld hl, MeowthAnimationData5
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $4
- ld [wd6ec], a
- ret
-
-Func_244f5: ; 0x244f5
- ld a, [wd6e6]
- and a
- ret nz
- ld a, [wd4b4]
- cp $8a
- ret nc
- ld a, $1
- ld [wStageCollisionState], a
- ld [wd6e6], a
- callba LoadStageCollisionAttributes
- call Func_24516
- ret
-
-Func_24516: ; 0x24516
- ld a, [wStageCollisionState]
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_24533
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_24529
- ld hl, TileDataPointers_2456f
-.asm_24529
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_24533)
- call Func_10aa
- ret
-
-TileDataPointers_24533: ; 0x24533
- dw TileData_24537
- dw TileData_2453a
-
-TileData_24537: ; 0x24537
- db $01
- dw TileData_2453D
-
-TileData_2453a: ; 0x2453a
- db $01
- dw TileData_24556
-
-TileData_2453D: ; 0x2453D
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $01, $02
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $FF, $00
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $80, $FD, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $172
- db $F6, $FA
-
- db $00 ; terminator
-
-TileData_24556: ; 0x24556
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $E9, $E5
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $E7, $E3
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $12, $13, $E4
-
- db $02 ; number of tiles
- dw vBGMap + $172
- db $10, $11
-
- db $00 ; terminator
-
-TileDataPointers_2456f: ; 0x2456f
- dw TileData_24573
- dw TileData_24576
-
-TileData_24573: ; 0x
- db $01
- dw TileData_24579
-
-TileData_24576: ; 0x
- db $01
- dw TileData_24592
-
-TileData_24579: ; 0x24579
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $F6, $F5
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $F4, $F3
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $80, $F1, $F2
-
- db $02 ; number of tiles
- dw vBGMap + $172
- db $EA, $EE
-
- db $00 ; terminator
-
-TileData_24592: ; 0x24592
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $E5, $E3
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $E4, $E2
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $F0, $EF, $E3
-
- db $02 ; number of tiles
- dw vBGMap + $172
- db $ED, $EC
-
- db $00 ; terminator
-
-Func_245ab: ; 0x245ab
- ld a, [wd6e7]
- and a
- jr z, .asm_24621
- cp $2
- jr z, .asm_24621
- ld a, $1
- ld [wd6f3], a
- ld a, [wMeowthYPosition]
- cp $20
- jr z, .asm_245c7
- cp $10
- jr z, .asm_245cc
- jr .asm_245cf
-
-.asm_245c7
- call Func_247d9
- jr .asm_245cf
-
-.asm_245cc
- call Func_24c28
-.asm_245cf
- xor a
- ld [wd6e7], a
- ld [wd6f3], a
- ld a, $ff
- ld [wd803], a
- ld a, $3
- ld [wd804], a
- lb de, $00, $33
- call PlaySoundEffect
- ld bc, OneThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- xor a
- ld [wMeowthStageBonusCounter], a
- ld a, [wd6ec]
- cp $2
- jr nc, .asm_24621
- and a
- jr nz, .asm_24611
- ld hl, MeowthAnimationData3
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $2
- ld [wd6ec], a
- jr .asm_24651
-
-.asm_24611
- ld hl, MeowthAnimationData4
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $3
- ld [wd6ec], a
- jr .asm_24651
-
-.asm_24621
- ld a, [wd713]
- and a
- jr z, .asm_2462e
- ld a, $4
- ld [wd6ec], a
- jr .asm_24651
-
-.asm_2462e
- ld a, [wd6ec]
- cp $2
- jr nc, .asm_24651
- ld a, [wd70b]
- cp $3
- jr nz, .asm_24651
- ld a, [wd70c]
- cp $3
- jr nz, .asm_24651
- ld hl, MeowthAnimationData5
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $4
- ld [wd6ec], a
-.asm_24651
- ld a, [wd6ec]
- cp $2
- call c, Func_24709
- call Func_2465d
- ret
-
-Func_2465d: ; 0x2465d
- ld a, [wd6ec]
- sla a
- ld c, a
- ld b, $0
- ld hl, MewothAnimationDataTable ; 0x246e2
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, wMeowthAnimationFrameCounter
- call UpdateAnimation
- ret nc
- ld a, [wd6ec]
- and a
- jr nz, .asm_24689
- ld a, [wMeowthAnimationFrameIndex]
- cp $4
- ret nz
- ld hl, MeowthAnimationData1
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ret
-
-.asm_24689
- cp $1
- jr nz, .asm_2469d
- ld a, [wMeowthAnimationFrameIndex]
- cp $4
- ret nz
- ld hl, MeowthAnimationData2
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ret
-
-.asm_2469d
- cp $2
- jr nz, .asm_246b5
- ld a, [wMeowthAnimationFrameIndex]
- cp $1
- ret nz
- ld hl, MeowthAnimationData1
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- xor a
- ld [wd6ec], a
- ret
-
-.asm_246b5
- cp $3
- jr nz, .asm_246ce
- ld a, [wMeowthAnimationFrameIndex]
- cp $1
- ret nz
- ld hl, MeowthAnimationData2
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $1
- ld [wd6ec], a
- ret
-
-.asm_246ce
- cp $4
- jr nz, .asm_24689
- ld a, [wMeowthAnimationFrameIndex]
- cp $2
- ret nz
- ld hl, MeowthAnimationData5
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ret
-
-MewothAnimationDataTable: ; 0x246e2
- dw MeowthAnimationData1
- dw MeowthAnimationData2
- dw MeowthAnimationData3
- dw MeowthAnimationData4
- dw MeowthAnimationData5
-
-MeowthAnimationData1: ; 0x246ec
-; Each entry is [OAM id][duration]
- db $10, $00
- db $0B, $01
- db $10, $02
- db $0C, $01
- db $00 ; terminator
-
-MeowthAnimationData2: ; 0x246f5
-; Each entry is [OAM id][duration]
- db $10, $04
- db $0B, $05
- db $10, $06
- db $0C, $05
- db $00 ; terminator
-
-MeowthAnimationData3: ; 0x246fe
-; Each entry is [OAM id][duration]
- db $16, $03
- db $00 ; terminator
-
-MeowthAnimationData4: ; 0x24701
-; Each entry is [OAM id][duration]
- db $16, $07
- db $00 ; terminator
-
-MeowthAnimationData5: ; 0x24704
- db $17, $08
- db $17, $09
- db $00 ; terminator
-
-Func_24709: ; 0x24709
- ld a, [wMeowthXPosition]
- ld hl, wMeowthXMovement
- add [hl]
- ld [wMeowthXPosition], a
- ld hl, wMeowthYMovement
- ld a, [hl]
- and a
- jr z, .asm_24730
- bit 7, [hl]
- ld a, [wMeowthYPosition]
- jr nz, .asm_24724
- inc a
- jr .asm_24725
-
-.asm_24724
- dec a
-.asm_24725
- cp $21
- jr z, .asm_24730
- cp $f
- jr z, .asm_24730
- ld [wMeowthYPosition], a
-.asm_24730
- call Func_24737
- call Func_2476d
- ret
-
-Func_24737: ; 0x24737
- ld a, [wMeowthXPosition]
- cp $8
- jr nc, .asm_24742
- ld a, $1
- jr .asm_2475a
-
-.asm_24742
- cp $78
- jr c, .asm_2474a
- ld a, $ff
- jr .asm_2475a
-
-.asm_2474a
- ld a, [hNumFramesDropped]
- and $3f
- ret nz
- call GenRandom
- bit 7, a
- ld a, $1
- jr z, .asm_2475a
- ld a, $ff
-.asm_2475a
- ld [wMeowthXMovement], a
- bit 7, a
- ld a, $1
- jr z, .asm_24764
- xor a
-.asm_24764
- ld [wd6ec], a
- ld a, $2
- ld [wMeowthAnimationFrameCounter], a
- ret
-
-Func_2476d: ; 0x2476d
- ld a, [wMeowthYMovement]
- and a
- jr z, .asm_247ab
- cp $1
- jr z, .asm_24791
- ld a, [wMeowthYPosition]
- cp $10
- jr nz, .asm_2478d
- ld a, [wd6e7]
- cp $2
- jr nz, .asm_2478a
- ld a, $1
- ld [wd6e7], a
-.asm_2478a
- xor a
- jr .asm_247c9
-
-.asm_2478d
- ld a, $ff
- jr .asm_247c9
-
-.asm_24791
- ld a, [wMeowthYPosition]
- cp $20
- jr nz, .asm_247a7
- ld a, [wd6e7]
- cp $2
- jr nz, .asm_247a4
- ld a, $1
- ld [wd6e7], a
-.asm_247a4
- xor a
- jr .asm_247c9
-
-.asm_247a7
- ld a, $1
- jr .asm_247c9
-
-.asm_247ab
- ld a, [wd70b]
- cp $3
- jr z, .asm_247cd
- ld a, [wd70c]
- cp $3
- jr z, .asm_247d3
- ld a, [hNumFramesDropped]
- and $3f
- ret nz
- call GenRandom
- bit 0, a
- ld a, $1
- jr z, .asm_247c9
- ld a, $ff
-.asm_247c9
- ld [wMeowthYMovement], a
- ret
-
-.asm_247cd
- ld a, $ff
- ld [wMeowthYMovement], a
- ret
-
-.asm_247d3
- ld a, $1
- ld [wMeowthYMovement], a
- ret
-
-Func_247d9: ; 0x247d9
- ld a, [wd6f3]
- and a
- ret z
- ld a, [wd71a]
- cp $c8
- jr nz, .asm_24823
- ld a, [wMeowthXPosition]
- add $8
- ld [wd71a], a
- ld a, [wMeowthYPosition]
- add $fb
- ld [wd727], a
- ld a, $1
- ld [wd717], a
- xor a
- ld [wd6f3], a
- ld [wd714], a
- ld [wd6f5], a
- ld [wd6f8], a
- ld [wd6fb], a
- ld a, [wMeowthXPosition]
- add $14
- ld b, a
- ld a, [wd4b4]
- cp b
- jr nc, .asm_2481d
- ld a, $0
- ld [wd72a], a
- jr .asm_24822
-
-.asm_2481d
- ld a, $1
- ld [wd72a], a
-.asm_24822
- ret
-
-.asm_24823
- ld a, [wd71b]
- cp $c8
- jr nz, .asm_24868
- ld a, [wMeowthXPosition]
- add $8
- ld [wd71b], a
- ld a, [wMeowthYPosition]
- add $fb
- ld [wd728], a
- ld a, $1
- ld [wd718], a
- xor a
- ld [wd6f3], a
- ld [wd715], a
- ld [wd6f6], a
- ld [wd6f9], a
- ld [wd6fc], a
- ld a, [wMeowthXPosition]
- add $14
- ld b, a
- ld a, [wd4b4]
- cp b
- jr nc, .asm_24862
- ld a, $0
- ld [wd72b], a
- jr .asm_24867
-
-.asm_24862
- ld a, $1
- ld [wd72b], a
-.asm_24867
- ret
-
-.asm_24868
- ld a, [wd71c]
- cp $c8
- ret nz
- ld a, [wMeowthXPosition]
- add $8
- ld [wd71c], a
- ld a, [wMeowthYPosition]
- add $fb
- ld [wd729], a
- ld a, $1
- ld [wd719], a
- xor a
- ld [wd6f3], a
- ld [wd716], a
- ld [wd6f7], a
- ld [wd6fa], a
- ld [wd6fd], a
- ld a, [wMeowthXPosition]
- add $14
- ld b, a
- ld a, [wd4b4]
- cp b
- jr nc, .asm_248a6
- ld a, $0
- ld [wd72c], a
- jr .asm_248ab
-
-.asm_248a6
- ld a, $1
- ld [wd72c], a
-.asm_248ab
- ret
-
-Func_248ac: ; 0x248ac
- ld a, [wd717]
- cp $1
- jr nz, .asm_248d3
- ld a, [wd714]
- cp $a
- jr z, .asm_248c4
- ld a, $0
- ld [wd6f4], a
- call Func_24a30
- jr .asm_248d3
-
-.asm_248c4
- ld hl, wd70b
- inc [hl]
- ld a, $2
- ld [wd717], a
- lb de, $00, $34
- call PlaySoundEffect
-.asm_248d3
- ld a, [wd718]
- cp $1
- jr nz, .asm_248fa
- ld a, [wd715]
- cp $a
- jr z, .asm_248eb
- ld a, $1
- ld [wd6f4], a
- call Func_24a30
- jr .asm_248fa
-
-.asm_248eb
- ld hl, wd70b
- inc [hl]
- ld a, $2
- ld [wd718], a
- lb de, $00, $34
- call PlaySoundEffect
-.asm_248fa
- ld a, [wd719]
- cp $1
- jr nz, .asm_24921
- ld a, [wd716]
- cp $a
- jr z, .asm_24912
- ld a, $2
- ld [wd6f4], a
- call Func_24a30
- jr .asm_24921
-
-.asm_24912
- ld hl, wd70b
- inc [hl]
- ld a, $2
- ld [wd719], a
- lb de, $00, $34
- call PlaySoundEffect
-.asm_24921
- ld a, [wd717]
- cp $2
- jr nz, .asm_2492c
- ld hl, wd714
- inc [hl]
-.asm_2492c
- ld a, [wd718]
- cp $2
- jr nz, .asm_24937
- ld hl, wd715
- inc [hl]
-.asm_24937
- ld a, [wd719]
- cp $2
- jr nz, .asm_24942
- ld hl, wd716
- inc [hl]
-.asm_24942
- ld a, [wd717]
- cp $3
- jr nz, .asm_24968
- ld a, [wd71a]
- ld b, a
- ld a, [wd727]
- ld c, a
- ld hl, wd714
- inc [hl]
- ld a, [hl]
- cp $2
- jr nz, .asm_2495f
- call Func_24e7f
- jr .asm_24968
-
-.asm_2495f
- cp $a
- jr nz, .asm_24968
- ld a, $4
- ld [wd717], a
-.asm_24968
- ld a, [wd718]
- cp $3
- jr nz, .asm_2498e
- ld a, [wd71b]
- ld b, a
- ld a, [wd728]
- ld c, a
- ld hl, wd715
- inc [hl]
- ld a, [hl]
- cp $2
- jr nz, .asm_24985
- call Func_24e7f
- jr .asm_2498e
-
-.asm_24985
- cp $a
- jr nz, .asm_2498e
- ld a, $4
- ld [wd718], a
-.asm_2498e
- ld a, [wd719]
- cp $3
- jr nz, .asm_249b4
- ld a, [wd71c]
- ld b, a
- ld a, [wd729]
- ld c, a
- ld hl, wd716
- inc [hl]
- ld a, [hl]
- cp $2
- jr nz, .asm_249ab
- call Func_24e7f
- jr .asm_249b4
-
-.asm_249ab
- cp $a
- jr nz, .asm_249b4
- ld a, $4
- ld [wd719], a
-.asm_249b4
- ld a, [wd717]
- cp $4
- jr nz, .asm_249d0
- ld a, $c8
- ld [wd71a], a
- ld [wd727], a
- xor a
- ld [wd717], a
- ld hl, wd70b
- dec [hl]
- ld a, [hl]
- cp $2
- jr z, .asm_24a06
-.asm_249d0
- ld a, [wd718]
- cp $4
- jr nz, .asm_249ec
- ld a, $c8
- ld [wd71b], a
- ld [wd728], a
- xor a
- ld [wd718], a
- ld hl, wd70b
- dec [hl]
- ld a, [hl]
- cp $2
- jr z, .asm_24a06
-.asm_249ec
- ld a, [wd719]
- cp $4
- ret nz
- ld a, $c8
- ld [wd71c], a
- ld [wd729], a
- xor a
- ld [wd719], a
- ld hl, wd70b
- dec [hl]
- ld a, [hl]
- cp $2
- ret nz
-.asm_24a06
- ld a, [wd713]
- and a
- ret nz
- ld a, [wMeowthXMovement]
- cp $ff
- jr z, .asm_24a21
- ld hl, MeowthAnimationData2
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $1
- ld [wd6ec], a
- ret
-
-.asm_24a21
- ld hl, MeowthAnimationData1
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $0
- ld [wd6ec], a
- ret
-
-Func_24a30: ; 0x24a30
- ld a, [wd6f4]
- ld c, a
- ld b, $0
- ld hl, wd6f8
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_24a42
- call Func_24b41
- ret
-
-.asm_24a42
- ld a, [wd6f4]
- ld c, a
- ld b, $0
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- bit 2, a
- jr z, .asm_24a5e
- bit 1, a
- jr nz, .asm_24a5e
- bit 0, a
- jr nz, .asm_24a5e
- ld hl, wd714
- add hl, bc
- inc [hl]
-.asm_24a5e
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld hl, Data_24af1
- ld e, a
- ld d, $0
- add hl, de
- ld hl, wd72a
- add hl, bc
- ld a, [hl]
- and a
- jr nz, .asm_24a97
-.asm_24a72
- ld hl, wd72a
- add hl, bc
- ld [hl], $0
- ld hl, wd71a
- add hl, bc
- ld a, [hl]
- push af
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- ld hl, Data_24af1
- add hl, de
- pop af
- add [hl]
- cp $8e
- jr nc, .asm_24a97
- ld hl, wd71a
- add hl, bc
- ld [hl], a
- jr .asm_24abf
-
-.asm_24a97
- ld hl, wd72a
- add hl, bc
- ld [hl], $1
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- ld hl, Data_24af1
- add hl, de
- ld a, [hl]
- ld d, a
- ld a, $ff
- sub d
- inc a
- ld d, a
- ld hl, wd71a
- add hl, bc
- ld a, [hl]
- add d
- cp $5
- jr c, .asm_24a72
- ld hl, wd71a
- add hl, bc
- ld [hl], a
-.asm_24abf
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- ld hl, Data_24af1
- add hl, de
- inc hl
- ld a, [hl]
- ld d, a
- ld hl, wd727
- add hl, bc
- ld a, [hl]
- add d
- ld hl, wd727
- add hl, bc
- ld [hl], a
- ld hl, wd6f5
- add hl, bc
- inc [hl]
- inc [hl]
- ld a, [hl]
- cp $46
- jr nz, .asm_24af0
- ld a, c
- cp $9
- jr c, .asm_24aed
- call Func_2438f
- ret
-
-.asm_24aed
- call Func_24319
-.asm_24af0
- ret
-
-Data_24af1:
-; These are offsets for something in the Meowth stage
- db 2, -4
- db 2, -4
- db 2, -4
- db 2, 0
- db 2, -2
- db 2, 0
- db 2, -2
- db 2, 0
- db 2, -2
- db 2, 0
- db 2, -2
- db 2, 0
- db 2, 0
- db 2, 0
- db 2, 0
- db 2, 2
- db 2, 2
- db 2, 2
- db 2, 2
- db 2, 2
- db 2, 3
- db 2, 4
- db 2, 4
- db 2, 4
- db 2, 4
- db 2, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 1, 4
- db 0, 0
- db 0, 0
- db 0, 0
- db 0, 0
-
-Func_24b41: ; 0x24b41
- ld a, [wd6f4]
- ld b, $0
- ld c, a
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- cp $14
- jp nc, Func_24bf6
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld hl, Data_24c0a
- ld e, a
- ld d, $0
- add hl, de
- ld hl, wd72a
- add hl, bc
- ld a, [hl]
- and a
- jr nz, .asm_24b8a
-.asm_24b65
- ld hl, wd72a
- add hl, bc
- ld [hl], $0
- ld hl, wd71a
- add hl, bc
- ld a, [hl]
- push af
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- ld hl, Data_24c0a
- add hl, de
- pop af
- add [hl]
- cp $90
- jr nc, .asm_24b8a
- ld hl, wd71a
- add hl, bc
- ld [hl], a
- jr .asm_24bb2
-
-.asm_24b8a
- ld hl, wd72a
- add hl, bc
- ld [hl], $1
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- ld hl, Data_24c0a
- add hl, de
- ld a, [hl]
- ld d, a
- ld a, $ff
- sub d
- inc a
- ld d, a
- ld hl, wd71a
- add hl, bc
- ld a, [hl]
- add d
- cp $6
- jr c, .asm_24b65
- ld hl, wd71a
- add hl, bc
- ld [hl], a
-.asm_24bb2
- ld hl, wd6f5
- add hl, bc
- ld a, [hl]
- ld e, a
- ld d, $0
- ld hl, Data_24c0a
- add hl, de
- inc hl
- ld a, [hl]
- ld d, a
- ld hl, wd727
- add hl, bc
- ld a, [hl]
- add d
- ld hl, wd727
- add hl, bc
- ld [hl], a
- ld hl, wd6f5
- add hl, bc
- inc [hl]
- inc [hl]
- ld a, [hl]
- cp $12
- jr nz, .asm_24bf4
- ld a, c
- cp $9
- jr c, .asm_24be1
- call Func_2438f
- jr .asm_24be4
-
-.asm_24be1
- call Func_24319
-.asm_24be4
- ld a, [wd6f4]
- ld b, $0
- ld c, a
- ld hl, wd6f8
- add hl, bc
- ld a, [hl]
- and a
- jr nz, .asm_24bf4
- ld [hl], $1
-.asm_24bf4
- scf
- ret
-
-Func_24bf6: ; 0x24bf6
- ld a, [wd6f4]
- ld b, $0
- ld c, a
- ld hl, wd6f8
- add hl, bc
- ld [hl], $0
- ld hl, wd714
- add hl, bc
- ld [hl], $a
- ccf
- ret
-
-Data_24c0a:
-; These are offsets for something in the Meowth stage
- db 2, -2
- db 2, -1
- db 2, -1
- db 2, 0
- db 2, 0
- db 2, 0
- db 2, 1
- db 2, 1
- db 2, 2
- db 2, 4
- db 1, 4
- db 0, 0
- db 0, 0
- db 0, 0
- db 0, 0
-
-Func_24c28: ; 0x24c28
- ld a, [wd6f3]
- and a
- ret z
- ld a, [wd724]
- cp $c8
- jr nz, .asm_24c76
- ld a, [wMeowthXPosition]
- add $8
- ld [wd724], a
- ld a, [wMeowthYPosition]
- add $fb
- ld [wd731], a
- ld a, $1
- ld [wd721], a
- ld hl, wd70c
- inc [hl]
- xor a
- ld [wd6f3], a
- ld [wd71e], a
- ld [wd6ff], a
- ld [wd702], a
- ld [wd705], a
- ld a, [wMeowthXPosition]
- add $14
- ld b, a
- ld a, [wd4b4]
- cp b
- jr nc, .asm_24c70
- ld a, $0
- ld [wd734], a
- jr .asm_24c75
-
-.asm_24c70
- ld a, $1
- ld [wd734], a
-.asm_24c75
- ret
-
-.asm_24c76
- ld a, [wd725]
- cp $c8
- jr nz, .asm_24cbf
- ld a, [wMeowthXPosition]
- add $8
- ld [wd725], a
- ld a, [wMeowthYPosition]
- add $fb
- ld [wd732], a
- ld a, $1
- ld [wd722], a
- ld hl, wd70c
- inc [hl]
- xor a
- ld [wd6f3], a
- ld [wd71f], a
- ld [wd700], a
- ld [wd703], a
- ld [wd706], a
- ld a, [wd6f7]
- add $14
- ld b, a
- ld a, [wd4b4]
- cp b
- jr nc, .asm_24cb9
- ld a, $0
- ld [wd735], a
- jr .asm_24cbe
-
-.asm_24cb9
- ld a, $1
- ld [wd735], a
-.asm_24cbe
- ret
-
-.asm_24cbf
- ld a, [wd726]
- cp $c8
- ret nz
- ld a, [wMeowthXPosition]
- add $8
- ld [wd726], a
- ld a, [wMeowthYPosition]
- add $fb
- ld [wd733], a
- ld a, $1
- ld [wd723], a
- ld hl, wd70c
- inc [hl]
- xor a
- ld [wd6f3], a
- ld [wd720], a
- ld [wd701], a
- ld [wd704], a
- ld [wd707], a
- ld a, [wMeowthXPosition]
- add $14
- ld b, a
- ld a, [wd4b4]
- cp b
- jr nc, .asm_24d01
- ld a, $0
- ld [wd736], a
- jr .asm_24d06
-
-.asm_24d01
- ld a, $1
- ld [wd736], a
-.asm_24d06
- ret
-
-Func_24d07: ; 0x24d07
- ld a, [wd721]
- cp $1
- jr nz, .asm_24d2a
- ld a, [wd71e]
- cp $a
- jr z, .asm_24d1f
- ld a, $a
- ld [wd6f4], a
- call Func_24a30
- jr .asm_24d2a
-
-.asm_24d1f
- ld a, $2
- ld [wd721], a
- lb de, $00, $34
- call PlaySoundEffect
-.asm_24d2a
- ld a, [wd722]
- cp $1
- jr nz, .asm_24d4d
- ld a, [wd71f]
- cp $a
- jr z, .asm_24d42
- ld a, $b
- ld [wd6f4], a
- call Func_24a30
- jr .asm_24d4d
-
-.asm_24d42
- ld a, $2
- ld [wd722], a
- lb de, $00, $34
- call PlaySoundEffect
-.asm_24d4d
- ld a, [wd723]
- cp $1
- jr nz, .asm_24d70
- ld a, [wd720]
- cp $a
- jr z, .asm_24d65
- ld a, $c
- ld [wd6f4], a
- call Func_24a30
- jr .asm_24d70
-
-.asm_24d65
- ld a, $2
- ld [wd723], a
- lb de, $00, $34
- call PlaySoundEffect
-.asm_24d70
- ld a, [wd721]
- cp $2
- jr nz, .asm_24d7b
- ld hl, wd71e
- inc [hl]
-.asm_24d7b
- ld a, [wd722]
- cp $2
- jr nz, .asm_24d86
- ld hl, wd71f
- inc [hl]
-.asm_24d86
- ld a, [wd723]
- cp $2
- jr nz, .asm_24d91
- ld hl, wd720
- inc [hl]
-.asm_24d91
- ld a, [wd721]
- cp $3
- jr nz, .asm_24db7
- ld a, [wd724]
- ld b, a
- ld a, [wd731]
- ld c, a
- ld hl, wd71e
- inc [hl]
- ld a, [hl]
- cp $2
- jr nz, .asm_24dae
- call Func_24e7f
- jr .asm_24db7
-
-.asm_24dae
- cp $a
- jr nz, .asm_24db7
- ld a, $4
- ld [wd721], a
-.asm_24db7
- ld a, [wd722]
- cp $3
- jr nz, .asm_24ddd
- ld a, [wd725]
- ld b, a
- ld a, [wd732]
- ld c, a
- ld hl, wd71f
- inc [hl]
- ld a, [hl]
- cp $2
- jr nz, .asm_24dd4
- call Func_24e7f
- jr .asm_24ddd
-
-.asm_24dd4
- cp $a
- jr nz, .asm_24ddd
- ld a, $4
- ld [wd722], a
-.asm_24ddd
- ld a, [wd723]
- cp $3
- jr nz, .asm_24e03
- ld a, [wd726]
- ld b, a
- ld a, [wd733]
- ld c, a
- ld hl, wd720
- inc [hl]
- ld a, [hl]
- cp $2
- jr nz, .asm_24dfa
- call Func_24e7f
- jr .asm_24e03
-
-.asm_24dfa
- cp $a
- jr nz, .asm_24e03
- ld a, $4
- ld [wd723], a
-.asm_24e03
- ld a, [wd721]
- cp $4
- jr nz, .asm_24e1f
- ld a, $c8
- ld [wd724], a
- ld [wd731], a
- xor a
- ld [wd721], a
- ld hl, wd70c
- dec [hl]
- ld a, [hl]
- cp $2
- jr z, .asm_24e55
-.asm_24e1f
- ld a, [wd722]
- cp $4
- jr nz, .asm_24e3b
- ld a, $c8
- ld [wd725], a
- ld [wd732], a
- xor a
- ld [wd722], a
- ld hl, wd70c
- dec [hl]
- ld a, [hl]
- cp $2
- jr z, .asm_24e55
-.asm_24e3b
- ld a, [wd723]
- cp $4
- ret nz
- ld a, $c8
- ld [wd726], a
- ld [wd733], a
- xor a
- ld [wd723], a
- ld hl, wd70c
- dec [hl]
- ld a, [hl]
- cp $2
- ret nz
-.asm_24e55
- ld a, [wd713]
- and a
- ret nz
- ld a, [wMeowthXMovement]
- cp $ff
- jr z, .asm_24e70
- ld hl, MeowthAnimationData2
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $1
- ld [wd6ec], a
- ret
-
-.asm_24e70
- ld hl, MeowthAnimationData1
- ld de, wMeowthAnimationFrameCounter
- call CopyHLToDE
- ld a, $0
- ld [wd6ec], a
- ret
-
-Func_24e7f: ; 0x24e7f
- ld a, b
- ld [wd79c], a
- ld a, c
- ld [wd79e], a
- ld hl, wMeowthStageBonusCounter
- inc [hl]
- ld a, [hl]
- cp $7 ; maximum bonus
- jr nz, .asm_24e92
- xor a
- ld [hl], a
-.asm_24e92
- ld a, $ff
- ld [wd803], a
- ld a, $3
- ld [wd804], a
- lb de, $00, $32
- call PlaySoundEffect
- ld a, [wMeowthStageBonusCounter]
- dec a
-.asm_24ea6
- push af
- ld bc, OneHundredThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wMeowthStageScore
- inc [hl]
- pop af
- and a
- jr z, .asm_24ebf
- dec a
- jr .asm_24ea6
-
-.asm_24ebf
- ld a, [wMeowthStageBonusCounter]
- dec a
- dec a
- cp $fe
- jr z, .asm_24ed7
- cp $ff
- jr z, .asm_24ed7
- ld [wd79a], a
- ld de, wd79a
- call Func_24ee7
- jr .asm_24ede
-
-.asm_24ed7
- xor a
- ld [wd79a], a
- ld [wd795], a
-.asm_24ede
- ld a, $1
- ld [wd64e], a
- call Func_24fa3
- ret
-
-Func_24ee7: ; 0x24ee7
- ld a, $ff
- ld [wd795], a
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, MeowthStageAnimationDataTable
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- dec de
- dec de
- dec de
- call CopyHLToDE
- ret
-
-Func_24f00: ; 0x24f00
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, MeowthStageAnimationDataTable
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ld a, $1
- ld [wd710], a
- ret nc
- dec de
- ld a, [de]
- cp $a
- ret nz
- xor a
- ld [de], a
- ld [wd79c], a
- ld [wd79e], a
- ld [wd795], a
- xor a
- ld [wd710], a
- ret
-
-MeowthStageAnimationDataTable: ; 0x24f30
- dw MeowthStageAnimationData1
- dw MeowthStageAnimationData2
- dw MeowthStageAnimationData3
- dw MeowthStageAnimationData4
- dw MeowthStageAnimationData5
-
-MeowthStageAnimationData1: ; 0x24f3a
-; Each entry is [OAM id][duration]
- db $02, $00
- db $02, $01
- db $02, $02
- db $10, $00
- db $04, $0F
- db $04, $00
- db $04, $0F
- db $04, $00
- db $04, $0F
- db $04, $00
- db $00 ; terminator
-
-MeowthStageAnimationData2: ; 0x24f4f
-; Each entry is [OAM id][duration]
- db $02, $03
- db $02, $04
- db $02, $05
- db $10, $03
- db $04, $0F
- db $04, $03
- db $04, $0F
- db $04, $03
- db $04, $0F
- db $04, $03
- db $00 ; terminator
-
-MeowthStageAnimationData3: ; 0x24f64
-; Each entry is [OAM id][duration]
- db $02, $06
- db $02, $07
- db $02, $08
- db $10, $06
- db $04, $0F
- db $04, $06
- db $04, $0F
- db $04, $06
- db $04, $0F
- db $04, $06
- db $00 ; terminator
-
-MeowthStageAnimationData4: ; 0x24f79
-; Each entry is [OAM id][duration]
- db $02, $09
- db $02, $0A
- db $02, $0B
- db $10, $09
- db $04, $0F
- db $04, $09
- db $04, $0F
- db $04, $09
- db $04, $0F
- db $04, $09
- db $00 ; terminator
-
-MeowthStageAnimationData5: ; 0x24f8e
-; Each entry is [OAM id][duration]
- db $02, $0C
- db $02, $0D
- db $02, $0E
- db $10, $0C
- db $04, $0F
- db $04, $0C
- db $04, $0F
- db $04, $0C
- db $04, $0F
- db $04, $0C
- db $00 ; terminator
-
-Func_24fa3: ; 0x24fa3
- ld a, [wMeowthStageScore]
- ld c, a
- ld b, $0
-.asm_24fa9
- ld a, c
- and a
- jr z, .asm_24fb5
- ld a, b
- add $8
- ld b, a
- dec c
- ld a, c
- jr .asm_24fa9
-
-.asm_24fb5
- ld a, b
- and a
- jr z, .asm_24fbb
- sub $8
-.asm_24fbb
- ld [wd652], a
- ld a, [wMeowthStageBonusCounter]
- and a
- jr z, .asm_24fca
- ld b, a
- ld a, [wMeowthStageScore]
- inc a
- sub b
-.asm_24fca
- ld [wd651], a
- ld a, $0
- ld [wd64e], a
- ld a, [wMeowthStageScore]
- and a
- ret z
- cp $15
- jr c, .asm_24fe2
- ld a, $14
- ld [wMeowthStageScore], a
- jr .asm_24fed
-
-.asm_24fe2
- push af
- xor a
- ld [wd650], a
- ld a, $1
- ld [wd64e], a
- pop af
-.asm_24fed
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_25007
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_24ffd
- ld hl, TileDataPointers_25421
-.asm_24ffd
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_25007)
- call Func_10aa
- ret
-
-TileDataPointers_25007:
- dw TileData_25031
- dw TileData_25034
- dw TileData_25037
- dw TileData_2503a
- dw TileData_2503d
- dw TileData_25040
- dw TileData_25043
- dw TileData_25046
- dw TileData_25049
- dw TileData_2504c
- dw TileData_2504f
- dw TileData_25052
- dw TileData_25055
- dw TileData_25058
- dw TileData_2505b
- dw TileData_2505e
- dw TileData_25061
- dw TileData_25064
- dw TileData_25067
- dw TileData_2506a
- dw TileData_2506d
-
-TileData_25031: ; 0x25031
- db $01
- dw TileData_25070
-
-TileData_25034: ; 0x25034
- db $01
- dw TileData_2509d
-
-TileData_25037: ; 0x25037
- db $01
- dw TileData_250ca
-
-TileData_2503a: ; 0x2503a
- db $01
- dw TileData_250f7
-
-TileData_2503d: ; 0x2503d
- db $01
- dw TileData_25124
-
-TileData_25040: ; 0x25040
- db $01
- dw TileData_25151
-
-TileData_25043: ; 0x25043
- db $01
- dw TileData_2517e
-
-TileData_25046: ; 0x25046
- db $01
- dw TileData_251ab
-
-TileData_25049: ; 0x25049
- db $01
- dw TileData_251d8
-
-TileData_2504c: ; 0x2504c
- db $01
- dw TileData_25205
-
-TileData_2504f: ; 0x2504f
- db $01
- dw TileData_25232
-
-TileData_25052: ; 0x25052
- db $01
- dw TileData_2525f
-
-TileData_25055: ; 0x25055
- db $01
- dw TileData_2528c
-
-TileData_25058: ; 0x25058
- db $01
- dw TileData_252b9
-
-TileData_2505b: ; 0x2505b
- db $01
- dw TileData_252e6
-
-TileData_2505e: ; 0x2505e
- db $01
- dw TileData_25313
-
-TileData_25061: ; 0x25061
- db $01
- dw TileData_25340
-
-TileData_25064: ; 0x25064
- db $01
- dw TileData_2536d
-
-TileData_25067: ; 0x25067
- db $01
- dw TileData_2539a
-
-TileData_2506a: ; 0x2506a
- db $01
- dw TileData_253c7
-
-TileData_2506d: ; 0x2506d
- db $01
- dw TileData_253f4
-
-TileData_25070: ; 0x25070
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $E4, $0C, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_2509d: ; 0x2509d
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $0C, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_250ca: ; 0x250ca
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_250f7: ; 0x250f7
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_25124: ; 0x25124
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_25151: ; 0x25151
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_2517e: ; 0x2517e
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_251ab: ; 0x251ab
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_251d8: ; 0x251d8
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_25205: ; 0x25205
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $0E, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_25232: ; 0x25232
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $0D, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_2525f: ; 0x2525f
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $0E
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_2528c: ; 0x2528c
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $0D, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_252b9: ; 0x252b9
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_252e6: ; 0x252e6
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $16, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_25313: ; 0x25313
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $0E, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_25340: ; 0x25340
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $16, $0D, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_2536d: ; 0x2536d
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $16, $16, $0E
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_2539a: ; 0x2539a
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $16, $16, $16
-
- db $02
- dw vBGMap + $12
- db $0F, $E4
-
- db $00 ; terminator
-
-TileData_253c7: ; 0x253c7
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $16, $16, $16
-
- db $02
- dw vBGMap + $12
- db $17, $E4
-
- db $00 ; terminator
-
-TileData_253f4: ; 0x253f4
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $14, $15, $16
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $16, $16, $16
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $16, $16, $16
-
- db $02
- dw vBGMap + $12
- db $17, $18
-
- db $00 ; terminator
-
-TileDataPointers_25421: ; 0x25421
- dw TileData_2544b
- dw TileData_2544e
- dw TileData_25451
- dw TileData_25454
- dw TileData_25457
- dw TileData_2545a
- dw TileData_2545d
- dw TileData_25460
- dw TileData_25463
- dw TileData_25466
- dw TileData_25469
- dw TileData_2546c
- dw TileData_2546f
- dw TileData_25472
- dw TileData_25475
- dw TileData_25478
- dw TileData_2547b
- dw TileData_2547e
- dw TileData_25481
- dw TileData_25484
- dw TileData_25487
-
-TileData_2544b: ; 0x2544b
- db $01
- dw TileData_2548a
-
-TileData_2544e: ; 0x2544e
- db $01
- dw TileData_254b7
-
-TileData_25451: ; 0x25451
- db $01
- dw TileData_254e4
-
-TileData_25454: ; 0x25454
- db $01
- dw TileData_25511
-
-TileData_25457: ; 0x25457
- db $01
- dw TileData_2553e
-
-TileData_2545a: ; 0x2545a
- db $01
- dw TileData_2556b
-
-TileData_2545d: ; 0x2545d
- db $01
- dw TileData_25598
-
-TileData_25460: ; 0x25460
- db $01
- dw TileData_255c5
-
-TileData_25463: ; 0x25463
- db $01
- dw TileData_255f2
-
-TileData_25466: ; 0x25466
- db $01
- dw TileData_2561f
-
-TileData_25469: ; 0x25469
- db $01
- dw TileData_2564c
-
-TileData_2546c: ; 0x2546c
- db $01
- dw TileData_25679
-
-TileData_2546f: ; 0x2546f
- db $01
- dw TileData_256a6
-
-TileData_25472: ; 0x25472
- db $01
- dw TileData_256d3
-
-TileData_25475: ; 0x25475
- db $01
- dw TileData_25700
-
-TileData_25478: ; 0x25478
- db $01
- dw TileData_2572d
-
-TileData_2547b: ; 0x2547b
- db $01
- dw TileData_2575a
-
-TileData_2547e: ; 0x2547e
- db $01
- dw TileData_25787
-
-TileData_25481: ; 0x25481
- db $01
- dw TileData_257b4
-
-TileData_25484: ; 0x25484
- db $01
- dw TileData_257e1
-
-TileData_25487: ; 0x25487
- db $01
- dw TileData_2580e
-
-TileData_2548a: ; 0x2548a
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $E3, $FD, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_254b7: ; 0x254b7
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $FD, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_254e4: ; 0x254e4
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_25511: ; 0x25511
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_2553e: ; 0x2553e
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_2556b: ; 0x2556b
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_25598: ; 0x25598
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_255c5: ; 0x255c5
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_255f2: ; 0x255f2
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_2561f: ; 0x2561f
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_2564c: ; 0x2564c
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_25679: ; 0x25679
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_256a6: ; 0x256a6
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $FE, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_256d3: ; 0x256d3
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $FE, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_25700: ; 0x25700
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $00, $FE
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_2572d: ; 0x2572d
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $FE, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_2575a: ; 0x2575a
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $00, $FE, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_25787: ; 0x25787
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $00, $00, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_257b4: ; 0x257b4
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $00, $00, $00
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $FD, $E3
-
- db $00 ; terminator
-
-TileData_257e1: ; 0x257e1
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $00, $00, $00
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $02, $E3
-
- db $00 ; terminator
-
-TileData_2580e: ; 0x2580e
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FF, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $00, $00, $00
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $00, $00, $00
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $02, $03
-
- db $00 ; terminator
-
+INCLUDE "engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm"
INCLUDE "engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm"
INCLUDE "engine/pinball_game/stage_init/init_seel_bonus.asm"
INCLUDE "engine/pinball_game/ball_init/ball_init_seel_bonus.asm"
INCLUDE "engine/pinball_game/load_stage_data/load_seel_bonus.asm"
INCLUDE "engine/pinball_game/object_collision/seel_bonus_object_collision.asm"
-
-Func_25c5a: ; 0x25c5a
- call Func_25da3
- call Func_25ced
- ld a, [wd793]
- cp $14
- jr c, .asm_25c98
- ld a, [wd794]
- cp $2
- jr nc, .asm_25c98
- ld a, $1
- ld [wd498], a
- ld de, $0000
- call PlaySong
- ld a, $1
- ld [wd49a], a
- call FillBottomMessageBufferWithBlackTile
- call Func_30db
- ld hl, wd5dc
- ld de, SeelStageClearedText
- call LoadTextHeader
- ld a, $2
- ld [wd794], a
- lb de, $4b, $2a
- call PlaySoundEffect
-.asm_25c98
- ld a, [wd794]
- cp $2
- jr nz, .asm_25cb0
- ld a, [wSFXTimer]
- and a
- jr nz, .asm_25cb0
- ld de, $0003
- call PlaySong
- ld a, $5
- ld [wd794], a
-.asm_25cb0
- ld a, [wd794]
- cp $2
- jr z, .asm_25cc1
- callba Func_107f8
-.asm_25cc1
- ld a, [wd57e]
- and a
- ret z
- xor a
- ld [wd57e], a
- ld a, $1
- ld [wd7be], a
- call Func_2862
- callba StopTimer
- ld a, $3
- ld [wd791], a
- ld a, [wd794]
- cp $5
- ret z
- ld a, $1
- ld [wd794], a
- ret
-
-Func_25ced: ; 0x25ced
- ld a, [wd766]
- and a
- ret nz
- ld a, [wd4b4]
- cp $8a
- ret nc
- ld a, $1
- ld [wStageCollisionState], a
- ld [wd766], a
- callba LoadStageCollisionAttributes
- call Func_25d0e
- ret
-
-Func_25d0e: ; 0x25d0e
- ld a, [wStageCollisionState]
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_25d2b
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_25d21
- ld hl, TileDataPointers_25d67
-.asm_25d21
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_25d2b)
- call Func_10aa
- ret
-
-TileDataPointers_25d2b:
- dw TileData_25d2f
- dw TileData_25d32
-
-TileData_25d2f: ; 0x25d2f
- db $01
- dw TileData_25d35
-
-TileData_25d32: ; 0x25d32
- db $01
- dw TileData_25d4e
-
-TileData_25d35: ; 0x25d35
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $1F, $20
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $1D, $1E
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $80, $1B, $1C
-
- db $02 ; number of tiles
- dw vBGMap + $172
- db $17, $18
-
- db $00 ; terminator
-
-TileData_25d4e: ; 0x25d4e
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $24, $F9
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $22, $04
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $36, $37, $FE
-
- db $02 ; number of tiles
- dw vBGMap + $172
- db $35, $F9
-
- db $00 ; terminator
-
-TileDataPointers_25d67:
- dw TileData_25d6b
- dw TileData_25d6e
-
-TileData_25d6b: ; 0x25d6b
- db $01
- dw TileData_25d71
-
-TileData_25d6e: ; 0x25d6e
- db $01
- dw TileData_25d8a
-
-TileData_25d71: ; 0x25d71
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $11, $10
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $0E, $0D
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $80, $0B, $0A
-
- db $02
- dw vBGMap + $172
- db $07, $06
-
- db $00 ; terminator
-
-TileData_25d8a: ; 0x25d8a
- dw LoadTileLists
- db $09 ; total number of tiles
-
- db $02 ; number of tiles
- dw vBGMap + $113
- db $0F, $F4
-
- db $02 ; number of tiles
- dw vBGMap + $133
- db $0C, $FB
-
- db $03 ; number of tiles
- dw vBGMap + $152
- db $09, $08, $F8
-
- db $02
- dw vBGMap + $172
- db $04, $F4
-
- db $00 ; terminator
-
-Func_25da3: ; 0x25da3
- ld a, [wd767]
- and a
- jp z, .asm_25e38
- xor a
- ld [wd767], a
- ld a, [wd768]
- sla a
- ld c, a
- sla a
- sla a
- add c
- ld c, a
- ld b, $0
- ld hl, wd76c
- add hl, bc
- ld d, h
- ld e, l
- ld a, $9
- ld [de], a
- dec de
- dec de
- dec de
- push bc
- ld hl, SeelAnimationData10
- call CopyHLToDE
- pop bc
- ld hl, wd76e
- add hl, bc
- ld a, [hl]
- ld [wd79c], a
- ld hl, wd770
- add hl, bc
- ld a, [hl]
- add $8
- ld [wd79e], a
- ld a, [wd792]
- cp $9
- jr nz, .asm_25df1
- ld a, $0
- ld [wd792], a
- ld [wd79a], a
-.asm_25df1
- ld a, [wd792]
- dec a
- cp $ff
- jr z, .asm_25e04
- ld [wd79a], a
- ld de, wd79a
- call Func_261f9
- jr .asm_25e07
-
-.asm_25e04
- ld [wd79a], a
-.asm_25e07
- ld a, $33
- ld [wd803], a
- ld a, $8
- ld [wd804], a
- lb de, $00, $30
- call PlaySoundEffect
- call Func_25e85
- ld hl, wd792
- inc [hl]
- ld a, [wd793]
- cp $14
- ret nc
- ld hl, wd793
- inc [hl]
- ld a, [wd792]
- dec a
- ld b, a
- ld a, [hl]
- add b
- ld [hl], a
- ld a, $1
- ld [wd64e], a
- call Func_262f4
-.asm_25e38
- ld de, wd76c ; I think these three calls are one for each Seel swimming around
- call Func_25f47
- ld de, wd776
- call Func_25f47
- ld de, wd780
- call Func_25f47
- ld a, [wd792]
- dec a
- cp $ff
- jr z, .asm_25e5d
- ld [wd79a], a
- ld de, wd79a
- call Func_26212
- jr .asm_25e60
-
-.asm_25e5d
- ld [wd79a], a
-.asm_25e60
- ld bc, $087a ; again, probably one call for each Seel swimming around
- ld de, wd76d
- ld hl, wd772
- call Func_25ec5
- ld bc, $087a
- ld de, wd777
- ld hl, wd77c
- call Func_25ec5
- ld bc, $087a
- ld de, wd781
- ld hl, wd786
- call Func_25ec5
- ret
-
-Func_25e85: ; 0x25e85
- ld a, [wd792]
- inc a
- ld d, $1
- ld e, a
- ld a, $1
-.asm_25e8e
- cp e
- jr z, .asm_25e96
- sla d
- inc a
- jr .asm_25e8e
-
-.asm_25e96
- push de
- ld a, d
- cp $32
- jr nc, .asm_25ead
- ld bc, OneHundredThousandPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- pop de
- dec d
- jr .asm_25ebf
-
-.asm_25ead
- ld bc, FiveMillionPoints
- callba AddBigBCD6FromQueueWithBallMultiplier
- pop de
- ld a, d
- sub $32
- ld d, a
-.asm_25ebf
- ld a, d
- cp $0
- jr nz, .asm_25e96
- ret
-
-Func_25ec5: ; 0x25ec5
- dec de
- ld a, [de]
- cp $1
- jr z, .asm_25ece
- cp $4
- ret nz
-.asm_25ece
- inc de
- push hl
- ld a, [hld]
- push af
- push bc
- ld a, [hl]
- and $f
- ld c, a
- ld b, $0
- ld hl, SeelSwimmingYOffsets
- add hl, bc
- pop bc
- pop af
- and a
- jr nz, .asm_25f05
- ld a, [de]
- add [hl]
- ld [de], a
- inc de
- ld a, [de]
- adc $0
- ld [de], a
- pop hl
- cp c
- ret c
- ld a, $1
- ld [hl], a
- dec hl
- dec hl
- dec hl
- dec hl
- dec hl
- dec hl
- ld a, $7
- ld [hl], a
- dec hl
- dec hl
- dec hl
- ld d, h
- ld e, l
- ld hl, SeelAnimationData8
- call CopyHLToDE
- ret
-
-.asm_25f05
- ld a, [de]
- sub [hl]
- ld [de], a
- inc de
- ld a, [de]
- sbc $0
- ld [de], a
- pop hl
- cp b
- ret nc
- xor a
- ld [hl], a
- dec hl
- dec hl
- dec hl
- dec hl
- dec hl
- dec hl
- ld a, $8
- ld [hl], a
- dec hl
- dec hl
- dec hl
- ld d, h
- ld e, l
- ld hl, SeelAnimationData9
- call CopyHLToDE
- ret
-
-SeelSwimmingYOffsets:
- db $31, $32, $33, $34, $35, $36, $37, $36, $35, $34, $33, $32, $33, $34, $35, $36
- db $37, $38, $39, $3A, $3B, $3A, $39, $38, $37, $36, $35, $34, $33, $32, $31, $30
-
-Func_25f47: ; 0x25f47
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, SeelAnimationsTable
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ret nc
- ld a, [de]
- rst JumpTable ; calls JumpToFuncInTable
-CallTable_25f5f: ; 0x25f5f
- dw Func_25f77
- dw Func_25fbe
- dw Func_25ff3
- dw Func_2602a
- dw Func_2604c
- dw Func_2607f
- dw Func_260b6
- dw Func_260d8
- dw Func_260e2
- dw Func_260ec
- dw Func_26109
- dw Func_26120
-
-Func_25f77: ; 0x25f77
- dec de
- ld a, [de]
- cp $2
- ret nz
- push de
- inc de
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, [de]
- dec a
- ld [de], a
- ld a, $3
- jr z, .asm_25f8f
- pop de
- xor a
- jp Func_26137
-
-.asm_25f8f
- ld hl, wd792
- ld [hl], $0
- call GenRandom
- bit 7, a
- jr z, .asm_25fa2
- inc de
- ld a, $1
- ld [de], a
- dec de
- jr .asm_25fa7
-
-.asm_25fa2
- inc de
- ld a, $0
- ld [de], a
- dec de
-.asm_25fa7
- inc de
- ld a, [de]
- and a
- jr z, .asm_25fb0
- ld a, $6
- jr .asm_25fb2
-
-.asm_25fb0
- ld a, $3
-.asm_25fb2
- push af
- lb de, $00, $31
- call PlaySoundEffect
- pop af
- pop de
- jp Func_26137
-
-Func_25fbe: ; 0x25fbe
- dec de
- ld a, [de]
- cp $4
- ret nz
- push de
- inc de
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, [de]
- dec a
- ld [de], a
- jr z, .asm_25fd5
- pop de
- ld a, $1
- jp Func_26137
-
-.asm_25fd5
- ld a, [wd791]
- cp $0
- jr z, .asm_25fe9
- ld a, $2
- ld [de], a
- pop de
- ld a, $4
- ld [de], a
- ld a, $1
- jp Func_26137
- ret ; unused instruction
-
-.asm_25fe9
- ld hl, wd791
- inc [hl]
- pop de
- ld a, $2
- jp Func_26137
-
-Func_25ff3: ; 0x25ff3
- dec de
- ld a, [de]
- cp $7
- ret nz
- xor a
- call Func_26137
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, [wd792]
- cp $6
- jr nc, .asm_26020
- cp $2
- jr nc, .asm_26016
- ld a, $3
- ld [de], a
- lb de, $00, $31
- call PlaySoundEffect
- ret
-
-.asm_26016
- ld a, $2
- ld [de], a
- lb de, $00, $31
- call PlaySoundEffect
- ret
-
-.asm_26020
- ld a, $1
- ld [de], a
- lb de, $00, $31
- call PlaySoundEffect
- ret
-
-Func_2602a: ; 0x2602a
- dec de
- ld a, [de]
- cp $9
- ret nz
- ld a, $1
- call Func_26137
- inc de
- inc de
- inc de
- inc de
- inc de
- call GenRandom
- bit 7, a
- jr z, .asm_26044
- ld a, $3
- jr .asm_26046
-
-.asm_26044
- ld a, $5
-.asm_26046
- ld [de], a
- ld hl, wd791
- dec [hl]
- ret
-
-Func_2604c: ; 0x2604c
- dec de
- ld a, [de]
- cp $4
- ret nz
- push de
- inc de
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, [de]
- dec a
- ld [de], a
- jr z, .asm_26063
- pop de
- ld a, $4
- jp Func_26137
-
-.asm_26063
- ld a, [wd791]
- cp $0
- jr z, .asm_26075
- ld a, $2
- ld [de], a
- pop de
- ld a, $4
- ld [de], a
- jp Func_26137
- ret ; unused instruction
-
-.asm_26075
- ld hl, wd791
- inc [hl]
- pop de
- ld a, $5
- jp Func_26137
-
-Func_2607f: ; 0x2607f
- dec de
- ld a, [de]
- cp $7
- ret nz
- xor a
- call Func_26137
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, [wd792]
- cp $6
- jr nc, .asm_260ac
- cp $2
- jr nc, .asm_260a2
- ld a, $3
- ld [de], a
- lb de, $00, $31
- call PlaySoundEffect
- ret
-
-.asm_260a2
- ld a, $2
- ld [de], a
- lb de, $00, $31
- call PlaySoundEffect
- ret
-
-.asm_260ac
- ld a, $1
- ld [de], a
- lb de, $00, $31
- call PlaySoundEffect
- ret
-
-Func_260b6: ; 0x260b6
- dec de
- ld a, [de]
- cp $9
- ret nz
- ld a, $4
- call Func_26137
- inc de
- inc de
- inc de
- inc de
- inc de
- call GenRandom
- bit 7, a
- jr z, .asm_260d0
- ld a, $3
- jr .asm_260d2
-
-.asm_260d0
- ld a, $5
-.asm_260d2
- ld [de], a
- ld hl, wd791
- dec [hl]
- ret
-
-Func_260d8: ; 0x260d8
- dec de
- ld a, [de]
- cp $5
- ret nz
- ld a, $4
- jp Func_26137
-
-Func_260e2: ; 0x260e2
- dec de
- ld a, [de]
- cp $5
- ret nz
- ld a, $1
- jp Func_26137
-
-Func_260ec: ; 0x260ec
- dec de
- ld a, [de]
- cp $1
- ret nz
- push de
- inc de
- inc de
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, [de]
- and a
- jr z, .asm_26103
- pop de
- ld a, $b
- jp Func_26137
-
-.asm_26103
- pop de
- ld a, $a
- jp Func_26137
-
-Func_26109: ; 0x26109
- dec de
- ld a, [de]
- cp $7
- ret nz
- ld a, $1
- call Func_26137
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, $5
- ld [de], a
- ld hl, wd791
- dec [hl]
- ret
-
-Func_26120: ; 0x26120
- dec de
- ld a, [de]
- cp $7
- ret nz
- ld a, $4
- call Func_26137
- inc de
- inc de
- inc de
- inc de
- inc de
- ld a, $5
- ld [de], a
- ld hl, wd791
- dec [hl]
- ret
-
-Func_26137: ; 0x26137
- push af
- sla a
- ld c, a
- ld b, $0
- ld hl, SeelAnimationsTable
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- call CopyHLToDE
- pop de
- inc de
- pop af
- ld [de], a
- ret
-
-SeelAnimationsTable: ; 0x2614f
- dw SeelAnimationData1
- dw SeelAnimationData2
- dw SeelAnimationData3
- dw SeelAnimationData4
- dw SeelAnimationData5
- dw SeelAnimationData6
- dw SeelAnimationData7
- dw SeelAnimationData8
- dw SeelAnimationData9
- dw SeelAnimationData10
- dw SeelAnimationData11
- dw SeelAnimationData12
-
-SeelAnimationData1:
- db $1C, $00
- db $1C, $01
- db $00 ; terminator
-
-SeelAnimationData2:
- db $0C, $03
- db $08, $04
- db $0C, $05
- db $08, $04
- db $00 ; terminator
-
-SeelAnimationData3:
- db $04, $06
- db $04, $07
- db $05, $08
- db $05, $09
- db $06, $0A
- db $04, $0B
- db $08, $0C
- db $00 ; terminator
-
-SeelAnimationData4:
- db $08, $0C
- db $04, $0B
- db $06, $0D
- db $10, $17
- db $06, $0A
- db $05, $09
- db $05, $08
- db $04, $0E
- db $04, $0F
- db $00 ; terminator
-
-SeelAnimationData5:
- db $0C, $10
- db $08, $11
- db $0C, $12
- db $08, $11
- db $00 ; terminator
-
-SeelAnimationData6:
- db $04, $13
- db $04, $14
- db $05, $08
- db $05, $09
- db $06, $0A
- db $04, $0B
- db $08, $0C
- db $00 ; terminator
-
-SeelAnimationData7:
- db $08, $0C
- db $04, $0B
- db $06, $0D
- db $10, $17
- db $06, $0A
- db $05, $09
- db $05, $08
- db $04, $15
- db $04, $16
- db $00 ; terminator
-
-SeelAnimationData8:
- db $04, $06
- db $04, $07
- db $06, $0A
- db $04, $15
- db $04, $16
- db $00 ; terminator
-
-SeelAnimationData9:
- db $04, $13
- db $04, $14
- db $06, $0A
- db $04, $0E
- db $04, $0F
- db $00 ; terminator
-
-SeelAnimationData10:
- db $10, $02
- db $00 ; terminator
-
-SeelAnimationData11:
- db $06, $0D
- db $10, $17
- db $06, $0A
- db $05, $09
- db $05, $08
- db $04, $0E
- db $04, $0F
- db $00 ; terminator
-
-SeelAnimationData12:
- db $06, $0D
- db $10, $17
- db $06, $0A
- db $05, $09
- db $05, $08
- db $04, $15
- db $04, $16
- db $00 ; terminator
-
-Func_261f9: ; 0x261f9
- ld a, $ff
- ld [wd795], a
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, SeelStageAnimations
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- dec de
- dec de
- dec de
- call CopyHLToDE
- ret
-
-Func_26212: ; 0x26212
- ld a, [de]
- sla a
- ld c, a
- ld b, $0
- ld hl, SeelStageAnimations
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push de
- dec de
- dec de
- dec de
- call UpdateAnimation
- pop de
- ret nc
- dec de
- ld a, [de]
- cp $a
- ret nz
- xor a
- ld [de], a
- ld [wd79c], a
- ld [wd79e], a
- ld a, a
- ld [wd795], a
- ret
-
-SeelStageAnimations:
- dw SeelStageAnimationData1
- dw SeelStageAnimationData1
- dw SeelStageAnimationData2
- dw SeelStageAnimationData3
- dw SeelStageAnimationData4
- dw SeelStageAnimationData5
- dw SeelStageAnimationData6
- dw SeelStageAnimationData7
- dw SeelStageAnimationData8
-
-SeelStageAnimationData1:
- db $02, $00
- db $02, $01
- db $02, $02
- db $10, $00
- db $04, $18
- db $04, $00
- db $04, $18
- db $04, $00
- db $04, $18
- db $04, $00
- db $00 ; terminator
-
-SeelStageAnimationData2:
- db $02, $03
- db $02, $04
- db $02, $05
- db $10, $03
- db $04, $18
- db $04, $03
- db $04, $18
- db $04, $03
- db $04, $18
- db $04, $03
- db $00 ; terminator
-
-SeelStageAnimationData3:
- db $02, $06
- db $02, $07
- db $02, $08
- db $10, $06
- db $04, $18
- db $04, $06
- db $04, $18
- db $04, $06
- db $04, $18
- db $04, $06
- db $00 ; terminator
-
-SeelStageAnimationData4:
- db $02, $09
- db $02, $0A
- db $02, $0B
- db $10, $09
- db $04, $18
- db $04, $09
- db $04, $18
- db $04, $09
- db $04, $18
- db $04, $09
- db $00 ; terminator
-
-SeelStageAnimationData5:
- db $02, $0C
- db $02, $0D
- db $02, $0E
- db $10, $0C
- db $04, $18
- db $04, $0C
- db $04, $18
- db $04, $0C
- db $04, $18
- db $04, $0C
- db $00 ; terminator
-
-SeelStageAnimationData6:
- db $02, $0F
- db $02, $10
- db $02, $11
- db $10, $0F
- db $04, $18
- db $04, $0F
- db $04, $18
- db $04, $0F
- db $04, $18
- db $04, $0F
- db $00 ; terminator
-
-SeelStageAnimationData7:
- db $02, $12
- db $02, $13
- db $02, $14
- db $10, $12
- db $04, $18
- db $04, $12
- db $04, $18
- db $04, $12
- db $04, $18
- db $04, $12
- db $00 ; terminator
-
-SeelStageAnimationData8:
- db $02, $15
- db $02, $16
- db $02, $17
- db $10, $15
- db $04, $18
- db $04, $15
- db $04, $18
- db $04, $15
- db $04, $18
- db $04, $15
- db $00 ; terminator
-
-Func_262f4: ; 0x262f4
- ld a, [wd793]
- ld c, a
- ld b, $0
-.asm_262fa
- ld a, c
- and a
- jr z, .asm_26306
- ld a, b
- add $8
- ld b, a
- dec c
- ld a, c
- jr .asm_262fa
-
-.asm_26306
- ld a, b
- and a
- jr z, .asm_2630c
- sub $8
-.asm_2630c
- ld [wd652], a
- ld a, [wd792]
- and a
- jr z, .asm_2631b
- ld b, a
- ld a, [wd793]
- inc a
- sub b
-.asm_2631b
- ld [wd651], a
- ld a, [wd793]
- cp $15
- jr c, .asm_2632a
- ld a, $14
- ld [wd793], a
-.asm_2632a
- push af
- xor a
- ld [wd650], a
- pop af
- sla a
- ld c, a
- ld b, $0
- ld hl, TileDataPointers_2634a
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .asm_26340
- ld hl, TileDataPointers_26764
-.asm_26340
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, Bank(TileDataPointers_2634a)
- call Func_10aa
- ret
-
-TileDataPointers_2634a:
- dw TileData_26374
- dw TileData_26377
- dw TileData_2637a
- dw TileData_2637d
- dw TileData_26380
- dw TileData_26383
- dw TileData_26386
- dw TileData_26389
- dw TileData_2638c
- dw TileData_2638f
- dw TileData_26392
- dw TileData_26395
- dw TileData_26398
- dw TileData_2639b
- dw TileData_2639e
- dw TileData_263a1
- dw TileData_263a4
- dw TileData_263a7
- dw TileData_263aa
- dw TileData_263ad
- dw TileData_263b0
-
-TileData_26374: ; 0x26374
- db $01
- dw TileData_263b3
-
-TileData_26377: ; 0x26377
- db $01
- dw TileData_263e0
-
-TileData_2637a: ; 0x2637a
- db $01
- dw TileData_2640d
-
-TileData_2637d: ; 0x2637d
- db $01
- dw TileData_2643a
-
-TileData_26380: ; 0x26380
- db $01
- dw TileData_26467
-
-TileData_26383: ; 0x26383
- db $01
- dw TileData_26494
-
-TileData_26386: ; 0x26386
- db $01
- dw TileData_264c1
-
-TileData_26389: ; 0x26389
- db $01
- dw TileData_264ee
-
-TileData_2638c: ; 0x2638c
- db $01
- dw TileData_2651b
-
-TileData_2638f: ; 0x2638f
- db $01
- dw TileData_26548
-
-TileData_26392: ; 0x26392
- db $01
- dw TileData_26575
-
-TileData_26395: ; 0x26395
- db $01
- dw TileData_265a2
-
-TileData_26398: ; 0x26398
- db $01
- dw TileData_265cf
-
-TileData_2639b: ; 0x2639b
- db $01
- dw TileData_265fc
-
-TileData_2639e: ; 0x2639e
- db $01
- dw TileData_26629
-
-TileData_263a1: ; 0x263a1
- db $01
- dw TileData_26656
-
-TileData_263a4: ; 0x263a4
- db $01
- dw TileData_26683
-
-TileData_263a7: ; 0x263a7
- db $01
- dw TileData_266b0
-
-TileData_263aa: ; 0x263aa
- db $01
- dw TileData_266dd
-
-TileData_263ad: ; 0x263ad
- db $01
- dw TileData_2670a
-
-TileData_263b0: ; 0x263b0
- db $01
- dw TileData_26737
-
-TileData_263b3: ; 0x263b3
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $01, $30, $31
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_263e0: ; 0x263e0
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $30, $31
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_2640d: ; 0x2640d
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $31
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_2643a: ; 0x2643a
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_26467: ; 0x26467
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_26494: ; 0x26494
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $32
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_264c1: ; 0x264c1
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_264ee: ; 0x264ee
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_2651b: ; 0x2651b
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $32
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_26548: ; 0x26548
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_26575: ; 0x26575
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_265a2: ; 0x265a2
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $32
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_265cf: ; 0x265cf
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $32, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_265fc: ; 0x265fc
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $32, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_26629: ; 0x26629
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $3A, $32
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_26656: ; 0x26656
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $32, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_26683: ; 0x26683
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $3A, $32, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_266b0: ; 0x266b0
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $3A, $3A, $33
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_266dd: ; 0x266dd
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $3A, $3A, $3A
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $34, $04
-
- db $00 ; terminator
-
-TileData_2670a: ; 0x2670a
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $3A, $3A, $3A
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $3B, $04
-
- db $00 ; terminator
-
-TileData_26737: ; 0x26737
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $38, $39, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $3A, $3A, $3A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $3A, $3A, $3A
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $3B, $38
-
- db $00 ; terminator
-
-TileDataPointers_26764:
- dw TileData_2678e
- dw TileData_26791
- dw TileData_26794
- dw TileData_26797
- dw TileData_2679a
- dw TileData_2679d
- dw TileData_267a0
- dw TileData_267a3
- dw TileData_267a6
- dw TileData_267a9
- dw TileData_267ac
- dw TileData_267af
- dw TileData_267b2
- dw TileData_267b5
- dw TileData_267b8
- dw TileData_267bb
- dw TileData_267be
- dw TileData_267c1
- dw TileData_267c4
- dw TileData_267c7
- dw TileData_267ca
-
-TileData_2678e: ; 0x2678e
- db $01
- dw TileData_267cd
-
-TileData_26791: ; 0x26791
- db $01
- dw TileData_267fa
-
-TileData_26794: ; 0x26794
- db $01
- dw TileData_26827
-
-TileData_26797: ; 0x26797
- db $01
- dw TileData_26854
-
-TileData_2679a: ; 0x2679a
- db $01
- dw TileData_26881
-
-TileData_2679d: ; 0x2679d
- db $01
- dw TileData_268ae
-
-TileData_267a0: ; 0x267a0
- db $01
- dw TileData_268db
-
-TileData_267a3: ; 0x267a3
- db $01
- dw TileData_26908
-
-TileData_267a6: ; 0x267a6
- db $01
- dw TileData_26935
-
-TileData_267a9: ; 0x267a9
- db $01
- dw TileData_26962
-
-TileData_267ac: ; 0x267ac
- db $01
- dw TileData_2698f
-
-TileData_267af: ; 0x267af
- db $01
- dw TileData_269bc
-
-TileData_267b2: ; 0x267b2
- db $01
- dw TileData_269e9
-
-TileData_267b5: ; 0x267b5
- db $01
- dw TileData_26a16
-
-TileData_267b8: ; 0x267b8
- db $01
- dw TileData_26a43
-
-TileData_267bb: ; 0x267bb
- db $01
- dw TileData_26a70
-
-TileData_267be: ; 0x267be
- db $01
- dw TileData_26a9d
-
-TileData_267c1: ; 0x267c1
- db $01
- dw TileData_26aca
-
-TileData_267c4: ; 0x267c4
- db $01
- dw TileData_26af7
-
-TileData_267c7: ; 0x267c7
- db $01
- dw TileData_26b24
-
-TileData_267ca: ; 0x267ca
- db $01
- dw TileData_26b51
-
-TileData_267cd: ; 0x267cd
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $FB, $18, $19
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_267fa: ; 0x267fa
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $18, $19
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26827: ; 0x26827
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $19
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26854: ; 0x26854
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26881: ; 0x26881
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_268ae: ; 0x268ae
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_268db: ; 0x268db
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26908: ; 0x26908
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26935: ; 0x26935
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26962: ; 0x26962
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_2698f: ; 0x2698f
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_269bc: ; 0x269bc
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_269e9: ; 0x269e9
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1A, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26a16: ; 0x26a16
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1A, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26a43: ; 0x26a43
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1D, $1A
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26a70: ; 0x26a70
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1A, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26a9d: ; 0x26a9d
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1D, $1A, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26aca: ; 0x26aca
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1D, $1D, $19
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26af7: ; 0x26af7
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1D, $1D, $1D
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $18, $FB
-
- db $00 ; terminator
-
-TileData_26b24: ; 0x26b24
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1D, $1D, $1D
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $1E, $FB
-
- db $00 ; terminator
-
-TileData_26b51: ; 0x26b51
- dw LoadTileLists
- db $14 ; total number of tiles
-
- db $03 ; number of tiles
- dw vBGMap
- db $1B, $1C, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $3
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $6
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $9
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $C
- db $1D, $1D, $1D
-
- db $03 ; number of tiles
- dw vBGMap + $F
- db $1D, $1D, $1D
-
- db $02 ; number of tiles
- dw vBGMap + $12
- db $1E, $1B
-
- db $00 ; terminator
-
+INCLUDE "engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm"
INCLUDE "engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm"
SECTION "banka", ROMX, BANK[$a]