diff options
author | Marcus Huderle <huderlem@gmail.com> | 2017-07-02 17:29:36 -0500 |
---|---|---|
committer | Marcus Huderle <huderlem@gmail.com> | 2017-07-02 17:29:36 -0500 |
commit | 76dbb41a2f9616e06ac475425832481fa9fd48f9 (patch) | |
tree | e153b3f5f78c2a3765c4dbcd8cdb9d1aaf38b11f /engine | |
parent | d73a1f172e520865f8d34a1f2c2ba068e934eb11 (diff) |
Move game object collision logic into separate files for each stage
Diffstat (limited to 'engine')
9 files changed, 26015 insertions, 1 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
|