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 | |
parent | d73a1f172e520865f8d34a1f2c2ba068e934eb11 (diff) |
Move game object collision logic into separate files for each stage
-rwxr-xr-x | engine/pinball_game.asm | 2 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/blue_stage_resolve_collision.asm | 8068 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm | 783 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm | 1445 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm | 3380 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm | 750 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/object_collision.asm | 51 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/red_stage_resolve_collision.asm | 8730 | ||||
-rwxr-xr-x | engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm | 2807 | ||||
-rwxr-xr-x | home.asm | 51 | ||||
-rwxr-xr-x | main.asm | 25979 |
11 files changed, 26022 insertions, 26024 deletions
diff --git a/engine/pinball_game.asm b/engine/pinball_game.asm index 08e821c..23c6490 100755 --- a/engine/pinball_game.asm +++ b/engine/pinball_game.asm @@ -89,7 +89,7 @@ GameScreenFunction_HandleBallPhysics: ; 0xd909 ld [wCollisionForceAngle], a
.noFlipperCollision
call CheckGameObjectCollisions
- call Func_281c ; not collision-related
+ call ResolveGameObjectCollisions
ld hl, wKeyConfigMenu
call IsKeyPressed
jr z, .didntPressMenuKey
diff --git a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm new file mode 100755 index 0000000..056f0fe --- /dev/null +++ b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm @@ -0,0 +1,8068 @@ +ResolveBlueFieldTopGameObjectCollisions: ; 0x1c715
+ call ResolveShellderCollision
+ call ResolveBlueStageSpinnerCollision
+ call ResolveBlueStagePinballUpgradeTriggersCollision
+ call HandleBlueStageBallTypeUpgradeCounter
+ call Func_1e66a
+ call ResolveBlueStageBoardTriggerCollision
+ call ResolveBlueStagePikachuCollision
+ call ResolveSlowpokeCollision
+ call ResolveCloysterCollision
+ call Func_1ea3b
+ call ResolvePsyduckPoliwagCollision
+ call ResolveBlueStageForceFieldCollision
+ call Func_1e9c0
+ call Func_1c8b6
+ call Func_1f18a
+ callba Func_146a9
+ call Func_1f27b
+ call Func_1df15
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+ResolveBlueFieldBottomGameObjectCollisions: ; 0x1c769
+ call Func_1ca4a
+ call Func_1ce40
+ call ResolvePsyduckPoliwagCollision
+ call Func_1ca85
+ call Func_1e4b8
+ call HandleBlueStageBallTypeUpgradeCounter
+ call Func_1e5c5
+ call Func_1c7d7
+ call ResolveBlueStagePikachuCollision
+ call Func_1ead4
+ call ResolveBlueStageBonusMultiplierCollision
+ call Func_1e757
+ call Func_1e9c0
+ call Func_1ea0a
+ call Func_1c8b6
+ callba Func_14733
+ callba Func_146a2
+ call Func_1f261
+ call Func_1de93
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+Func_1c7c7: ; 0x1c7c7
+ ld a, $0
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ ret
+
+Func_1c7d7: ; 0x1c7d7
+ ld a, [wPinballLaunchAlley]
+ and a
+ ret z
+ xor a
+ ld [wPinballLaunchAlley], a
+ ld a, [wd4de]
+ and a
+ jr z, .asm_1c810
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hl], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld a, $71
+ ld [wBallYVelocity], a
+ ld a, $fa
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ lb de, $00, $0a
+ call PlaySoundEffect
+.asm_1c810
+ ld a, $ff
+ ld [wPreviousTriggeredGameObject], a
+ ld a, [wd4de]
+ and a
+ ret nz
+ ld a, [wd4e0]
+ and a
+ jr nz, .asm_1c82c
+ call Func_1c839
+ ld a, $1
+ ld [wd4e0], a
+ ld [wd4de], a
+ ret
+
+.asm_1c82c
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ ret z
+ ld a, $1
+ ld [wd4de], a
+ ret
+
+Func_1c839: ; 0x1c839
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, LoadGreyBillboardPaletteData
+.showNextMap
+ ld a, [wInitialMapSelectionIndex]
+ inc a
+ cp $7 ; number of maps to choose from at the start of play
+ jr c, .gotMapId
+ xor a ; wrap around to 0
+.gotMapId
+ ld [wInitialMapSelectionIndex], a
+ ld c, a
+ ld b, $0
+ ld hl, BlueStageInitialMaps
+ add hl, bc
+ ld a, [hl]
+ ld [wCurrentMap], a
+ push af
+ lb de, $00, $48
+ call PlaySoundEffect
+ pop af
+ add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
+ callba LoadBillboardPicture
+ ld b, $20 ; number of frames to delay before the next map is shown
+.waitOnCurrentMap
+ push bc
+ callba Func_eeee
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ jr nz, .ballStartKeyPressed
+ pop bc
+ dec b
+ jr nz, .waitOnCurrentMap
+ jr .showNextMap
+
+.ballStartKeyPressed
+ pop bc
+ callba Func_30253
+ ld bc, StartFromMapText
+ callba Func_3118f
+ ld a, [wCurrentMap]
+ ld [wd4e3], a
+ xor a
+ ld [wd4e2], a
+ ret
+
+BlueStageInitialMaps: ; 0x1c8af
+ db VIRIDIAN_CITY
+ db VIRIDIAN_FOREST
+ db MT_MOON
+ db CERULEAN_CITY
+ db VERMILION_STREETS
+ db ROCK_MOUNTAIN
+ db CELADON_CITY
+
+Func_1c8b6: ; 0x1c8b6
+ ld a, [wd64c]
+ inc a
+ cp $3c
+ jr z, .asm_1c8c2
+ ld [wd64c], a
+ ret
+
+.asm_1c8c2
+ xor a
+ ld [wd64c], a
+ ld hl, wd64d
+ inc [hl]
+ ld a, [hl]
+ cp $5
+ ret nz
+ ld a, [wd644]
+ and a
+ jr nz, .asm_1c8e1
+ ld a, [wd643]
+ and a
+ jr nz, .asm_1c8e5
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr nc, .asm_1c8e5
+.asm_1c8e1
+ xor a
+ ld [wd64b], a
+.asm_1c8e5
+ ld a, [wd644]
+ and a
+ jr nz, .asm_1c8f8
+ ld a, [wd643]
+ and a
+ jr nz, .asm_1c8fc
+ ld a, [wLeftAlleyCount]
+ cp $3
+ jr z, .asm_1c8fc
+.asm_1c8f8
+ xor a
+ ld [wd64b], a
+.asm_1c8fc
+ xor a
+ ld [wd64d], a
+ xor a
+ ld [wd64a], a
+ ld [wd649], a
+ ld [wd648], a
+ ld a, [wBlueStageForceFieldDirection]
+ cp $1 ; right direction
+ jr z, .asm_1c97f
+ cp $3 ; left direction
+ jr z, .asm_1c97f
+.asm_1c915
+ ld a, [wd644]
+ cp $0
+ jr z, .asm_1c925
+ ld a, [wd55a]
+ cp $0
+ jr nz, .asm_1c933
+ jr .asm_1c947
+
+.asm_1c925
+ ld a, [wd643]
+ cp $0
+ jr nz, .asm_1c933
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr c, .asm_1c947
+.asm_1c933
+ ld a, [wd64b]
+ cp $1
+ jr z, .asm_1c947
+ ld a, $1 ; right direction
+ ld [wBlueStageForceFieldDirection], a
+ ld [wd64b], a
+ ld [wd640], a
+ jr .asm_1c99e
+
+.asm_1c947
+ ld a, [wd644]
+ cp $0
+ jr z, .asm_1c955
+ ld a, [wd55a]
+ cp $0
+ jr z, .asm_1c969
+.asm_1c955
+ ld a, [wd643]
+ cp $0
+ jr nz, .asm_1c969
+ ld a, [wLeftAlleyCount]
+ cp $3
+ jr nz, .asm_1c97f
+ ld a, [wInSpecialMode]
+ and a
+ jr nz, .asm_1c97f
+.asm_1c969
+ ld a, [wd64b]
+ cp $3
+ jr z, .asm_1c915
+ ld a, $3 ; left direction
+ ld [wBlueStageForceFieldDirection], a
+ ld [wd64b], a
+ ld a, $1
+ ld [wd640], a
+ jr .asm_1c99e
+
+.asm_1c97f
+ ld a, [wd641]
+ and a
+ jr nz, .asm_1c993
+ xor a
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ld [wd64a], a
+ jr .asm_1c99e
+
+.asm_1c993
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ret
+
+.asm_1c99e
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jr nz, .asm_1c9ac
+ ld a, $1
+ ld [wd64a], a
+ jr .asm_1c9c0
+
+.asm_1c9ac
+ cp $1
+ jr nz, .asm_1c9b7
+ ld a, $1
+ ld [wd649], a
+ jr .asm_1c9c0
+
+.asm_1c9b7
+ cp $3
+ jr nz, .asm_1c9c0
+ ld a, $1
+ ld [wd648], a
+.asm_1c9c0
+ ret
+
+ResolveShellderCollision: ; 0x1c9c1
+ ld a, [wWhichShellder]
+ and a
+ jr z, .noCollision
+ xor a
+ ld [wWhichShellder], a
+ call Func_1ca29
+ ld a, [wd641]
+ and a
+ jr nz, .asm_1c9f2
+ ld a, $1
+ ld [wd641], a
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jr nz, .asm_1c9f2
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ld a, $3
+ ld [wd64c], a
+ ld [wd64d], a
+.asm_1c9f2
+ ld a, $10
+ ld [wd4d6], a
+ ld a, [wWhichShellderId]
+ sub $3
+ ld [wd4d7], a
+ ld a, $4
+ callba Func_10000
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ret
+
+.noCollision
+ ld a, [wd4d6]
+ and a
+ ret z
+ dec a
+ ld [wd4d6], a
+ ret nz
+ ld a, $ff
+ ld [wd4d7], a
+ ret
+
+Func_1ca29: ; 0x1ca29
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $0e
+ call PlaySoundEffect
+ ret
+
+Func_1ca4a: ; 1ca4a
+ ld a, [wWildMonCollision]
+ and a
+ ret z
+ xor a
+ ld [wWildMonCollision], a
+ ld a, $1
+ ld [wBallHitWildMon], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ret
+
+ResolveBlueStageSpinnerCollision: ; 0x1ca5f
+ ld a, [wSpinnerCollision]
+ and a
+ jr z, Func_1ca85
+ xor a
+ ld [wSpinnerCollision], a
+ ld a, [wBallYVelocity]
+ ld c, a
+ ld a, [wBallYVelocity + 1]
+ ld b, a
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld a, $c
+ callba Func_10000
+ ; fall through
+
+Func_1ca85: ; 0x1ca85
+ ld hl, wd50b
+ ld a, [hli]
+ or [hl]
+ ret z
+ ld a, [wd50b]
+ ld c, a
+ ld a, [wd50c]
+ ld b, a
+ bit 7, b
+ jr nz, .asm_1caa3
+ ld a, c
+ sub $7
+ ld c, a
+ ld a, b
+ sbc $0
+ ld b, a
+ jr nc, .asm_1cab0
+ jr .asm_1caad
+
+.asm_1caa3
+ ld a, c
+ add $7
+ ld c, a
+ ld a, b
+ adc $0
+ ld b, a
+ jr nc, .asm_1cab0
+.asm_1caad
+ ld bc, $0000
+.asm_1cab0
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld hl, wd50b
+ ld a, [wd509]
+ add [hl]
+ ld [wd509], a
+ inc hl
+ ld a, [wd50a]
+ adc [hl]
+ bit 7, a
+ ld c, $0
+ jr z, .asm_1cad3
+ add $18
+ ld c, $1
+ jr .asm_1cadb
+
+.asm_1cad3
+ cp $18
+ jr c, .asm_1cadb
+ sub $18
+ ld c, $1
+.asm_1cadb
+ ld [wd50a], a
+ ld a, c
+ and a
+ ret z
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd62d
+ call Func_e4a
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_1caff
+ call Func_1cb1c
+ ret
+
+.asm_1caff
+ inc a
+ ld [wPikachuSaverCharge], a
+ call Func_1cb1c
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_1cb12
+ ld a, $64
+ ld [wd51e], a
+.asm_1cb12
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret nz
+ call Func_1cb43
+ ret
+
+Func_1cb1c: ; 0x1cb1c
+ ld a, [wd51e]
+ and a
+ ret nz
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ ld b, $0
+ ld hl, SoundEffectIds_1cb33
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ call PlaySoundEffect
+ ret
+
+SoundEffectIds_1cb33:
+ db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
+
+Func_1cb43: ; 0x1cb43
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ sla c
+ ld b, $0
+ ld hl, TileDataPointers_1cb60
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1cb56
+ ld hl, TileDataPointers_1cd10
+.asm_1cb56
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1cb60)
+ call Func_10aa
+ ret
+
+TileDataPointers_1cb60:
+ dw TileData_1cb80
+ dw TileData_1cb85
+ dw TileData_1cb8a
+ dw TileData_1cb8f
+ dw TileData_1cb94
+ dw TileData_1cb99
+ dw TileData_1cb9e
+ dw TileData_1cba3
+ dw TileData_1cba8
+ dw TileData_1cbad
+ dw TileData_1cbb2
+ dw TileData_1cbb7
+ dw TileData_1cbbc
+ dw TileData_1cbc1
+ dw TileData_1cbc6
+ dw TileData_1cbcb
+
+TileData_1cb80: ; 0x1cb80
+ db $02
+ dw TileData_1cbd0
+ dw TileData_1cbda
+
+TileData_1cb85: ; 0x1cb85
+ db $02
+ dw TileData_1cbe4
+ dw TileData_1cbee
+
+TileData_1cb8a: ; 0x1cb8a
+ db $02
+ dw TileData_1cbf8
+ dw TileData_1cc02
+
+TileData_1cb8f: ; 0x1cb8f
+ db $02
+ dw TileData_1cc0c
+ dw TileData_1cc16
+
+TileData_1cb94: ; 0x1cb94
+ db $02
+ dw TileData_1cc20
+ dw TileData_1cc2a
+
+TileData_1cb99: ; 0x1cb99
+ db $02
+ dw TileData_1cc34
+ dw TileData_1cc3e
+
+TileData_1cb9e: ; 0x1cb9e
+ db $02
+ dw TileData_1cc48
+ dw TileData_1cc52
+
+TileData_1cba3: ; 0x1cba3
+ db $02
+ dw TileData_1cc5c
+ dw TileData_1cc66
+
+TileData_1cba8: ; 0x1cba8
+ db $02
+ dw TileData_1cc70
+ dw TileData_1cc7a
+
+TileData_1cbad: ; 0x1cbad
+ db $02
+ dw TileData_1cc84
+ dw TileData_1cc8e
+
+TileData_1cbb2: ; 0x1cbb2
+ db $02
+ dw TileData_1cc98
+ dw TileData_1cca2
+
+TileData_1cbb7: ; 0x1cbb7
+ db $02
+ dw TileData_1ccac
+ dw TileData_1ccb6
+
+TileData_1cbbc: ; 0x1cbbc
+ db $02
+ dw TileData_1ccc0
+ dw TileData_1ccca
+
+TileData_1cbc1: ; 0x1cbc1
+ db $02
+ dw TileData_1ccd4
+ dw TileData_1ccde
+
+TileData_1cbc6: ; 0x1cbc6
+ db $02
+ dw TileData_1cce8
+ dw TileData_1ccf2
+
+TileData_1cbcb: ; 0x1cbcb
+ db $02
+ dw TileData_1ccfc
+ dw TileData_1cd06
+
+TileData_1cbd0: ; 0xcbd0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageBlueFieldTopBaseGameBoyGfx + $c20
+ db Bank(StageBlueFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_1cbda: ; 0xcbda
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageBlueFieldTopBaseGameBoyGfx + $c40
+ db Bank(StageBlueFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_1cbe4: ; 0xcbe4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1800
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cbee: ; 0xcbee
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1820
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cbf8: ; 0xcbf8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1840
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc02: ; 0xcc02
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1860
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc0c: ; 0xcc0c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1880
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc16: ; 0xcc16
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc20: ; 0xcc20
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc2a: ; 0xcc2a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc34: ; 0xcc34
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1900
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc3e: ; 0xcc3e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1920
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc48: ; 0xcc48
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1940
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc52: ; 0xcc52
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1960
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc5c: ; 0xcc5c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1980
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc66: ; 0xcc66
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc70: ; 0xcc70
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc7a: ; 0xcc7a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc84: ; 0xcc84
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc8e: ; 0xcc8e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cc98: ; 0xcc98
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cca2: ; 0xcca2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccac: ; 0xccac
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccb6: ; 0xccb6
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccc0: ; 0xccc0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccca: ; 0xccca
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccd4: ; 0xccd4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccde: ; 0xccde
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cce8: ; 0xcce8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccf2: ; 0xccf2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1ccfc: ; 0xccfc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1cd06: ; 0xcd06
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $6E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileDataPointers_1cd10:
+ dw TileData_1cd30
+ dw TileData_1cd33
+ dw TileData_1cd36
+ dw TileData_1cd39
+ dw TileData_1cd3c
+ dw TileData_1cd3f
+ dw TileData_1cd42
+ dw TileData_1cd45
+ dw TileData_1cd48
+ dw TileData_1cd4b
+ dw TileData_1cd4e
+ dw TileData_1cd51
+ dw TileData_1cd54
+ dw TileData_1cd57
+ dw TileData_1cd5a
+ dw TileData_1cd5d
+
+TileData_1cd30: ; 0x1cd30
+ db $01
+ dw TileData_1cd60
+
+TileData_1cd33: ; 0x1cd33
+ db $01
+ dw TileData_1cd6e
+
+TileData_1cd36: ; 0x1cd36
+ db $01
+ dw TileData_1cd7c
+
+TileData_1cd39: ; 0x1cd39
+ db $01
+ dw TileData_1cd8a
+
+TileData_1cd3c: ; 0x1cd3c
+ db $01
+ dw TileData_1cd98
+
+TileData_1cd3f: ; 0x1cd3f
+ db $01
+ dw TileData_1cda6
+
+TileData_1cd42: ; 0x1cd42
+ db $01
+ dw TileData_1cdb4
+
+TileData_1cd45: ; 0x1cd45
+ db $01
+ dw TileData_1cdc2
+
+TileData_1cd48: ; 0x1cd48
+ db $01
+ dw TileData_1cdd0
+
+TileData_1cd4b: ; 0x1cd4b
+ db $01
+ dw TileData_1cdde
+
+TileData_1cd4e: ; 0x1cd4e
+ db $01
+ dw TileData_1cdec
+
+TileData_1cd51: ; 0x1cd51
+ db $01
+ dw TileData_1cdfa
+
+TileData_1cd54: ; 0x1cd54
+ db $01
+ dw TileData_1ce08
+
+TileData_1cd57: ; 0x1cd57
+ db $01
+ dw TileData_1ce16
+
+TileData_1cd5a: ; 0x1cd5a
+ db $01
+ dw TileData_1ce24
+
+TileData_1cd5d: ; 0x1cd5d
+ db $01
+ dw TileData_1ce32
+
+TileData_1cd60: ; 0x1cd60
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $4A, $4B
+
+ db $00 ; terminator
+
+TileData_1cd6e: ; 0x1cd6e
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $4C, $4D
+
+ db $00 ; terminator
+
+TileData_1cd7c: ; 0x1cd7c
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $4E, $4F
+
+ db $00 ; terminator
+
+TileData_1cd8a: ; 0x1cd8a
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $50, $51
+
+ db $00 ; terminator
+
+TileData_1cd98: ; 0x1cd98
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $52, $53
+
+ db $00 ; terminator
+
+TileData_1cda6: ; 0x1cda6
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $54, $55
+
+ db $00 ; terminator
+
+TileData_1cdb4: ; 0x1cdb4
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $56, $57
+
+ db $00 ; terminator
+
+TileData_1cdc2: ; 0x1cdc2
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdd0: ; 0x1cdd0
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $48, $49
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdde: ; 0x1cdde
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdec: ; 0x1cdec
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $5E, $5F
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1cdfa: ; 0x1cdfa
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $60, $61
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce08: ; 0x1ce08
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $62, $63
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce16: ; 0x1ce16
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $64, $65
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce24: ; 0x1ce24
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $66, $67
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $58, $59
+
+ db $00 ; terminator
+
+TileData_1ce32: ; 0x1ce32
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $143
+ db $68, $69
+
+ db $02 ; number of tiles
+ dw vBGMap + $163
+ db $6A, $6B
+
+ db $00 ; terminator
+
+Func_1ce40: ; 1ce40
+ ld a, [wWhichBumper]
+ and a
+ jr z, .asm_1ce53
+ call Func_1ce72
+ call Func_1ce60
+ xor a
+ ld [wWhichBumper], a
+ call Func_1ce94
+.asm_1ce53
+ ld a, [wd4da]
+ and a
+ ret z
+ dec a
+ ld [wd4da], a
+ call z, Func_1ce72
+ ret
+
+Func_1ce60: ; 0x1ce60
+ ld a, $10
+ ld [wd4da], a
+ ld a, [wWhichBumperId]
+ sub $1
+ ld [wd4db], a
+ sla a
+ inc a
+ jr asm_1ce7a
+
+Func_1ce72: ; 1ce72
+ ld a, [wd4db]
+ cp $ff
+ ret z
+ sla a
+asm_1ce7a: ; 0x1ce7a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1ceca
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1ce8a
+ ld hl, TileDataPointers_1cf3a
+.asm_1ce8a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1ceca)
+ call Func_10aa
+ ret
+
+Func_1ce94: ; 0x1ce94
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wWhichBumperId]
+ sub $1
+ ld c, a
+ ld b, $0
+ ld hl, Data_1cec8
+ add hl, bc
+ ld a, [wCollisionForceAngle]
+ add [hl]
+ ld [wCollisionForceAngle], a
+ lb de, $00, $0b
+ call PlaySoundEffect
+ ret
+
+Data_1cec8:
+ db -8, 8
+
+TileDataPointers_1ceca:
+ dw TileData_1ced2
+ dw TileData_1ced5
+ dw TileData_1ced8
+ dw TileData_1cedb
+
+TileData_1ced2: ; 0x1ced2
+ db $01
+ dw TileData_1cede
+
+TileData_1ced5: ; 0x1ced5
+ db $01
+ dw TileData_1cef5
+
+TileData_1ced8: ; 0x1ced8
+ db $01
+ dw TileData_1cf0c
+
+TileData_1cedb: ; 0x1cedb
+ db $01
+ dw TileData_1cf23
+
+TileData_1cede: ; 0x1cede
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $61
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $62, $63
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $64, $65
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $66, $67
+
+ db $00 ; number of tiles
+
+TileData_1cef5: ; 0x1cef5
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $68
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $69, $6A
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $6B, $6C
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $6D, $6E
+
+ db $00 ; number of tiles
+
+TileData_1cf0c: ; 0x1cf0c
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $6F
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $70, $71
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $72, $73
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $74, $75
+
+ db $00 ; number of tiles
+
+TileData_1cf23: ; 0x1cf23
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $76
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $77, $78
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $79, $7A
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $7B, $7C
+
+ db $00 ; number of tiles
+
+TileDataPointers_1cf3a:
+ dw TileData_1cf42
+ dw TileData_1cf45
+ dw TileData_1cf48
+ dw TileData_1cf4b
+
+TileData_1cf42: ; 0x1cf42
+ db $01
+ dw TileData_1cf4e
+
+TileData_1cf45: ; 0x1cf45
+ db $01
+ dw TileData_1cf65
+
+TileData_1cf48: ; 0x1cf48
+ db $01
+ dw TileData_1cf7c
+
+TileData_1cf4b: ; 0x1cf4b
+ db $01
+ dw TileData_1cf93
+
+TileData_1cf4e: ; 0x1cf4e
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $39
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $3A, $3B
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $3C, $3D
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $3E, $3F
+
+ db $00 ; terminator
+
+TileData_1cf65: ; 0x1cf65
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $40
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $41, $42
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $43, $44
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $45, $46
+
+ db $00 ; terminator
+
+TileData_1cf7c: ; 0x1cf7c
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $39
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $3B, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $3D, $3C
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $3F, $3E
+
+ db $00 ; terminator
+
+TileData_1cf93: ; 0x1cf93
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $40
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $42, $41
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $44, $43
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $46, $45
+
+ db $00 ; terminator
+
+ResolveBlueStageBoardTriggerCollision: ; 0x1cfaa
+ ld a, [wWhichBoardTrigger]
+ and a
+ ret z
+ xor a
+ ld [wWhichBoardTrigger], a
+ ld bc, FivePoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wStageCollisionState]
+ cp $0
+ jr nz, .asm_1cfe5
+ ld a, $1
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ ld a, $1
+ ld [wd580], a
+ callba Func_1404a
+.asm_1cfe5
+ ld a, [wWhichBoardTriggerId]
+ sub $7
+ ld c, a
+ ld b, $0
+ ld hl, wd521
+ add hl, bc
+ ld [hl], $1
+ ld a, [wd521]
+ and a
+ call nz, Func_1d010
+ ld a, [wd522]
+ and a
+ call nz, Func_1d047
+ ld a, [wd523]
+ and a
+ call nz, HandleLeftAlleyTriggerBlueField
+ ld a, [wd524]
+ and a
+ call nz, HandleRightAlleyTriggerBlueField
+ ret
+
+Func_1d010: ; 0x1d010
+ xor a
+ ld [wd521], a
+ ld a, [wLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ callba Func_10000
+ ret c
+ ld a, [wLeftAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wLeftAlleyCount], a
+ cp $3
+ jr z, .asm_1d03e
+ set 7, a
+ ld [wIndicatorStates], a
+ ret
+
+.asm_1d03e
+ ld [wIndicatorStates], a
+ ld a, $80
+ ld [wIndicatorStates + 2], a
+ ret
+
+Func_1d047: ; 0x1d047
+ xor a
+ ld [wd522], a
+ ld a, [wRightAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld a, $2
+ callba Func_10000
+ ret c
+ ld a, [wRightAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wRightAlleyCount], a
+ cp $3
+ jr z, .asm_1d071
+ set 7, a
+.asm_1d071
+ ld [wIndicatorStates + 1], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ ret c
+ ld a, $80
+ ld [wIndicatorStates + 3], a
+ ret
+
+HandleLeftAlleyTriggerBlueField: ; 0x1d080
+; Ball passed over the left alley trigger point in the Blue Field.
+ xor a
+ ld [wd523], a
+ ld [wRightAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wLeftAlleyTrigger], a
+ ret c
+ ret
+
+HandleRightAlleyTriggerBlueField: ; 0x1d091
+; Ball passed over the right alley trigger point in the Blue Field.
+ xor a
+ ld [wd524], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wRightAlleyTrigger], a
+ ret
+
+ResolveBlueStagePikachuCollision: ; 0x1d0a1
+ ld a, [wWhichPikachu]
+ and a
+ jr z, .asm_1d110
+ xor a
+ ld [wWhichPikachu], a
+ ld a, [wd51c]
+ and a
+ jr nz, .asm_1d110
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_1d0c9
+ ld a, [wWhichPikachuId]
+ sub $d
+ ld hl, wd518
+ cp [hl]
+ jr nz, .asm_1d110
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_1d0fc
+.asm_1d0c9
+ ld hl, PikachuSaverAnimationDataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_1d0dc
+ xor a
+ ld [wPikachuSaverCharge], a
+.asm_1d0dc
+ ld a, $1
+ ld [wd51c], a
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld [wd549], a
+ call FillBottomMessageBufferWithBlackTile
+ jr .asm_1d110
+
+.asm_1d0fc
+ ld hl, PikachuSaverAnimation2DataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $2
+ ld [wd51c], a
+ lb de, $00, $3b
+ call PlaySoundEffect
+.asm_1d110
+ ld a, [wd51c]
+ and a
+ call z, Func_1d1fb
+ call Func_1d133
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ ret nz
+ ld a, [wd51e]
+ and a
+ ret z
+ dec a
+ ld [wd51e], a
+ cp $5a
+ ret nz
+ lb de, $0f, $22
+ call PlaySoundEffect
+ ret
+
+Func_1d133: ; 0x1d133
+ ld a, [wd51c]
+ cp $1
+ jr nz, .asm_1d1ae
+ ld hl, PikachuSaverAnimationDataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_1d18c
+ xor a
+ ld [wd85d], a
+ call Func_310a
+ rst AdvanceFrame
+ ld a, $1
+ callba PlayPikachuSoundClip
+ ld a, $1
+ ld [wd85d], a
+ ld a, $ff
+ ld [wd803], a
+ ld a, $60
+ ld [wd804], a
+ ld hl, wd62e
+ call Func_e4a
+ jr nc, .asm_1d185
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1d185
+ lb de, $16, $10
+ call PlaySoundEffect
+ ret
+
+.asm_1d18c
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $11
+ ret nz
+ ld a, $fc
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_1d1ae
+ cp $2
+ jr nz, .asm_1d1c7
+ ld hl, PikachuSaverAnimation2DataRedStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ ret nz
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_1d1c7
+ ld a, [hNumFramesDropped]
+ swap a
+ and $1
+ ld [wPikachuSaverAnimationFrame], a
+ ret
+
+PikachuSaverAnimationDataRedStage: ; 0x1d1d1
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $05, $03
+ db $05, $02
+ db $05, $04
+ db $05, $05
+ db $05, $02
+ db $06, $06
+ db $06, $07
+ db $06, $08
+ db $06, $02
+ db $06, $05
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $01, $00
+ db $00
+
+PikachuSaverAnimation2DataRedStage: ; 0x1d1f6
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $01, $00
+ db $00
+
+Func_1d1fb: ; 0x1d1fb
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed2
+ jr z, .asm_1d209
+ ld hl, wd518
+ ld [hl], $0
+ ret
+
+.asm_1d209
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed2
+ ret z
+ ld hl, wd518
+ ld [hl], $1
+ ret
+
+ResolveSlowpokeCollision: ; 0x1d216
+ ld a, [wSlowpokeCollision]
+ and a
+ jr z, .asm_1d253
+ xor a
+ ld [wSlowpokeCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $05
+ call PlaySoundEffect
+ ld hl, SlowpokeCollisionAnimationData ; 0x1d312
+ ld de, wd632
+ call CopyHLToDE
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ xor a
+ ld [wd549], a
+.asm_1d253
+ ld hl, SlowpokeCollisionAnimationData ; 0x1d312
+ ld de, wd632
+ call UpdateAnimation
+ push af
+ ld a, [wd632]
+ and a
+ jr nz, .asm_1d271
+ ld a, $19
+ ld [wd632], a
+ xor a
+ ld [wd633], a
+ ld a, $6
+ ld [wd634], a
+.asm_1d271
+ pop af
+ ret nc
+ ld a, [wd634]
+ cp $1
+ jr nz, .asm_1d2b6
+ xor a
+ ld [wd548], a
+ ld a, [wLeftAlleyCount]
+ cp $3
+ jr nz, .asm_1d299
+ callba Func_10ab3
+ ld a, [wd643]
+ and a
+ ret z
+ ld a, $1
+ ld [wd642], a
+.asm_1d299
+ ld hl, wd63a
+ call Func_e4a
+ ld hl, wd62a
+ call Func_e4a
+ ret nc
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+ ret
+
+.asm_1d2b6
+ ld a, [wd634]
+ cp $4
+ jr nz, .asm_1d2c3
+ ld a, $1
+ ld [wd548], a
+ ret
+
+.asm_1d2c3
+ ld a, [wd634]
+ cp $5
+ ret nz
+ ld a, $1
+ ld [wd549], a
+ ld a, $b0
+ ld [wBallXVelocity], a
+ ld a, $0
+ ld [wBallXVelocity + 1], a
+ xor a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ld a, [wd642]
+ cp $0
+ jr nz, .asm_1d2f8
+ ld a, $f
+ callba Func_10000
+.asm_1d2f8
+ xor a
+ ld [wd642], a
+ ld [wd64c], a
+ ld [wd64d], a
+ ld a, $1
+ ld [wd641], a
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ret
+
+SlowpokeCollisionAnimationData: ; 0x1d312
+; Each entry is [OAM id][duration]
+ db $08, $01
+ db $06, $02
+ db $06, $02
+ db $08, $01
+ db $01, $00
+ db $29, $00
+ db $28, $01
+ db $2A, $00
+ db $27, $01
+ db $29, $00
+ db $28, $01
+ db $2B, $00
+ db $28, $01
+ db $00
+
+ResolveCloysterCollision: ; 0x1d32d
+ ld a, [wCloysterCollision]
+ and a
+ jr z, .asm_1d36a
+ xor a
+ ld [wCloysterCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $05
+ call PlaySoundEffect
+ ld hl, CloysterCollisionAnimationData
+ ld de, wd637
+ call CopyHLToDE
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ xor a
+ ld [wd549], a
+.asm_1d36a
+ ld hl, CloysterCollisionAnimationData
+ ld de, wd637
+ call UpdateAnimation
+ push af
+ ld a, [wd637]
+ and a
+ jr nz, .asm_1d388
+ ld a, $19
+ ld [wd637], a
+ xor a
+ ld [wd638], a
+ ld a, $6
+ ld [wd639], a
+.asm_1d388
+ pop af
+ ret nc
+ ld a, [wd639]
+ cp $1
+ jr nz, .asm_1d3cb
+ xor a
+ ld [wd548], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr c, .noCatchEmMode
+ ld a, $8
+ jr nz, .asm_1d3a1
+ xor a
+.asm_1d3a1
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+.noCatchEmMode
+ ld hl, wd63b
+ call Func_e4a
+ ld hl, wd62a
+ call Func_e4a
+ ret nc
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+ ret
+
+.asm_1d3cb
+ ld a, [wd639]
+ cp $4
+ jr nz, .asm_1d3d8
+ ld a, $1
+ ld [wd548], a
+ ret
+
+.asm_1d3d8
+ ld a, [wd639]
+ cp $5
+ ret nz
+ ld a, $1
+ ld [wd549], a
+ ld a, $4f
+ ld [wBallXVelocity], a
+ ld a, $ff
+ ld [wBallXVelocity + 1], a
+ xor a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ld a, $e
+ callba Func_10000
+ xor a
+ ld [wd64c], a
+ ld [wd64d], a
+ ld a, $1
+ ld [wd641], a
+ ld a, $2 ; down direction
+ ld [wBlueStageForceFieldDirection], a
+ ld a, $1
+ ld [wd640], a
+ ret
+
+CloysterCollisionAnimationData: ; 0x1d41d
+; Each entry is [OAM id][duration]
+ db $08, $01
+ db $06, $02
+ db $06, $02
+ db $08, $01
+ db $01, $00
+ db $29, $00
+ db $28, $01
+ db $2A, $00
+ db $27, $01
+ db $29, $00
+ db $28, $01
+ db $2B, $00
+ db $28, $01
+ db 00 ; terminator
+
+ResolveBlueStageBonusMultiplierCollision: ; 0x1d438
+ call Func_1d692
+ ld a, [wWhichBonusMultiplierRailing]
+ and a
+ jp z, Func_1d51b
+ xor a
+ ld [wWhichBonusMultiplierRailing], a
+ lb de, $00, $0d
+ call PlaySoundEffect
+ ld a, [wWhichBonusMultiplierRailingId]
+ sub $f
+ jr nz, .asm_1d48e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d45c
+ ld a, $1f
+ jr .asm_1d45e
+
+.asm_1d45c
+ ld a, $29
+.asm_1d45e
+ call Func_1d5f2
+ ld a, $3c
+ ld [wd647], a
+ ld a, $9
+ callba Func_10000
+ ld a, [wd610]
+ cp $3
+ jp nz, asm_1d4fa
+ ld a, $1
+ ld [wd610], a
+ ld a, $3
+ ld [wd611], a
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ jr asm_1d4fa
+
+.asm_1d48e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d497
+ ld a, $21
+ jr .asm_1d499
+
+.asm_1d497
+ ld a, $2b
+.asm_1d499
+ call Func_1d5f2
+ ld a, $1e
+ ld [wd647], a
+ ld a, $a
+ callba Func_10000
+ ld a, [wd611]
+ cp $3
+ jr nz, asm_1d4fa
+ ld a, $1
+ ld [wd610], a
+ ld a, $1
+ ld [wd611], a
+ ld a, $80
+ ld [wd612], a
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ ld a, [wd482]
+ inc a
+ cp 100
+ jr c, .asm_1d4d5
+ ld a, 99
+.asm_1d4d5
+ ld [wd482], a
+ jr nc, .asm_1d4e9
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+.asm_1d4e9
+ ld a, [wd60c]
+ ld [wd614], a
+ ld a, [wd60d]
+ ld [wd615], a
+ ld a, $1
+ ld [wd613], a
+asm_1d4fa: ; 0x1d4fa
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd60c]
+ call Func_1d5f2
+ ld a, [wd60d]
+ add $14
+ call Func_1d5f2
+ ld a, $3c
+ ld [wd647], a
+ ret
+
+Func_1d51b: ; 0x1d51b
+ call Func_1d5bf
+ ld a, [wd612]
+ and a
+ jr z, .asm_1d559
+ dec a
+ ld [wd612], a
+ cp $70
+ jr nz, .asm_1d538
+ ld a, $2
+ ld [wd610], a
+ ld a, $2
+ ld [wd611], a
+ jr .asm_1d559
+
+.asm_1d538
+ and a
+ jr nz, .asm_1d559
+ ld a, $3
+ ld [wd610], a
+ xor a
+ ld [wd611], a
+ ld a, [wd482]
+ call Func_1d65f
+ ld a, [wd60c]
+ call Func_1d5f2
+ ld a, [wd60d]
+ add $14
+ call Func_1d5f2
+ ret
+
+.asm_1d559
+ ld a, [wd610]
+ cp $2
+ jr c, .asm_1d58b
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_1d56a
+ srl a
+ srl a
+.asm_1d56a
+ ld b, a
+ and $3
+ jr nz, .asm_1d58b
+ bit 3, b
+ jr nz, .asm_1d580
+ ld a, [wd60c]
+ res 7, a
+ ld [wd60c], a
+ call Func_1d5f2
+ jr .asm_1d58b
+
+.asm_1d580
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ call Func_1d5f2
+.asm_1d58b
+ ld a, [wd611]
+ cp $2
+ ret c
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_1d59b
+ srl a
+ srl a
+.asm_1d59b
+ ld b, a
+ and $3
+ ret nz
+ bit 3, b
+ jr nz, .asm_1d5b1
+ ld a, [wd60d]
+ res 7, a
+ ld [wd60d], a
+ add $14
+ call Func_1d5f2
+ ret
+
+.asm_1d5b1
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ add $14
+ call Func_1d5f2
+ ret
+
+Func_1d5bf: ; 0x1d5bf
+ ld a, [wd5ca]
+ and a
+ ret nz
+ ld a, [wd613]
+ and a
+ ret z
+ xor a
+ ld [wd613], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5cc
+ ld de, BonusMultiplierText
+ call LoadTextHeader
+ ld hl, wBottomMessageText + $12
+ ld a, [wd614]
+ and $7f
+ jr z, .asm_1d5e9
+ add $30
+ ld [hli], a
+.asm_1d5e9
+ ld a, [wd615]
+ res 7, a
+ add $30
+ ld [hl], a
+ ret
+
+Func_1d5f2: ; 0x1d5f2
+ push af
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d5fd
+ pop af
+ call Func_1d602
+ ret
+
+.asm_1d5fd
+ pop af
+ call Func_1d645
+ ret
+
+Func_1d602: ; 0x1d602
+ push af
+ res 7, a
+ ld hl, wd60e
+ cp $14
+ jr c, .asm_1d611
+ ld hl, wd60f
+ sub $a
+.asm_1d611
+ cp [hl]
+ jr z, .asm_1d626
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_1d6be
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1d6be)
+ call Func_10aa
+.asm_1d626
+ pop af
+ ld bc, $0000
+ bit 7, a
+ jr z, .asm_1d632
+ res 7, a
+ set 1, c
+.asm_1d632
+ cp $14
+ jr c, .asm_1d638
+ set 2, c
+.asm_1d638
+ ld hl, TileDataPointers_1d946
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1d946)
+ call Func_10aa
+ ret
+
+Func_1d645: ; 0x1d645
+ bit 7, a
+ jr z, .asm_1d64d
+ res 7, a
+ add $a
+.asm_1d64d
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_1d97a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1d97a)
+ call Func_10aa
+ ret
+
+Func_1d65f: ; 0x1d65f
+ ld a, [wd482]
+ inc a
+ cp $64
+ jr c, .asm_1d669
+ ld a, $63
+.asm_1d669
+ ld b, a
+ xor a
+ ld hl, Data_1d68b
+ ld c, $7
+.asm_1d670
+ bit 0, b
+ jr z, .asm_1d676
+ add [hl]
+ daa
+.asm_1d676
+ srl b
+ inc hl
+ dec c
+ jr nz, .asm_1d670
+ push af
+ swap a
+ and $f
+ ld [wd60c], a
+ pop af
+ and $f
+ ld [wd60d], a
+ ret
+
+Data_1d68b:
+; BCD powers of 2
+ db $01, $02, $04, $08, $16, $32, $64
+
+Func_1d692: ; 0x1d692
+ ld a, [wd647]
+ cp $1
+ jr z, .asm_1d69e
+ dec a
+ ld [wd647], a
+ ret
+
+.asm_1d69e
+ ld a, $0
+ ld [wd647], a
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1d6b3
+ ld a, $1e
+ call Func_1d5f2
+ ld a, $20
+ call Func_1d5f2
+ ret
+
+.asm_1d6b3
+ ld a, $2a
+ call Func_1d5f2
+ ld a, $28
+ call Func_1d5f2
+ ret
+
+TileDataPointers_1d6be:
+ dw TileData_1d6ee
+ dw TileData_1d6f3
+ dw TileData_1d6f8
+ dw TileData_1d6fd
+ dw TileData_1d702
+ dw TileData_1d707
+ dw TileData_1d70c
+ dw TileData_1d711
+ dw TileData_1d716
+ dw TileData_1d71b
+ dw TileData_1d720
+ dw TileData_1d725
+ dw TileData_1d72a
+ dw TileData_1d72f
+ dw TileData_1d734
+ dw TileData_1d739
+ dw TileData_1d73e
+ dw TileData_1d743
+ dw TileData_1d748
+ dw TileData_1d74d
+ dw TileData_1d752
+ dw TileData_1d757
+ dw TileData_1d75c
+ dw TileData_1d761
+
+TileData_1d6ee: ; 0x1d6ee
+ db $02
+ dw TileData_1d766
+ dw TileData_1d770
+
+TileData_1d6f3: ; 0x1d6f3
+ db $02
+ dw TileData_1d77a
+ dw TileData_1d784
+
+TileData_1d6f8: ; 0x1d6f8
+ db $02
+ dw TileData_1d78e
+ dw TileData_1d798
+
+TileData_1d6fd: ; 0x1d6fd
+ db $02
+ dw TileData_1d7a2
+ dw TileData_1d7AC
+
+TileData_1d702: ; 0x1d702
+ db $02
+ dw TileData_1d7b6
+ dw TileData_1d7C0
+
+TileData_1d707: ; 0x1d707
+ db $02
+ dw TileData_1d7ca
+ dw TileData_1d7D4
+
+TileData_1d70c: ; 0x1d70c
+ db $02
+ dw TileData_1d7de
+ dw TileData_1d7E8
+
+TileData_1d711: ; 0x1d711
+ db $02
+ dw TileData_1d7f2
+ dw TileData_1d7FC
+
+TileData_1d716: ; 0x1d716
+ db $02
+ dw TileData_1d806
+ dw TileData_1d810
+
+TileData_1d71b: ; 0x1d71b
+ db $02
+ dw TileData_1d81a
+ dw TileData_1d824
+
+TileData_1d720: ; 0x1d720
+ db $02
+ dw TileData_1d82e
+ dw TileData_1d838
+
+TileData_1d725: ; 0x1d725
+ db $02
+ dw TileData_1d842
+ dw TileData_1d84C
+
+TileData_1d72a: ; 0x1d72a
+ db $02
+ dw TileData_1d856
+ dw TileData_1d860
+
+TileData_1d72f: ; 0x1d72f
+ db $02
+ dw TileData_1d86a
+ dw TileData_1d874
+
+TileData_1d734: ; 0x1d734
+ db $02
+ dw TileData_1d87e
+ dw TileData_1d888
+
+TileData_1d739: ; 0x1d739
+ db $02
+ dw TileData_1d892
+ dw TileData_1d89C
+
+TileData_1d73e: ; 0x1d73e
+ db $02
+ dw TileData_1d8a6
+ dw TileData_1d8B0
+
+TileData_1d743: ; 0x1d743
+ db $02
+ dw TileData_1d8ba
+ dw TileData_1d8C4
+
+TileData_1d748: ; 0x1d748
+ db $02
+ dw TileData_1d8ce
+ dw TileData_1d8D8
+
+TileData_1d74d: ; 0x1d74d
+ db $02
+ dw TileData_1d8e2
+ dw TileData_1d8EC
+
+TileData_1d752: ; 0x1d752
+ db $02
+ dw TileData_1d8f6
+ dw TileData_1d900
+
+TileData_1d757: ; 0x1d757
+ db $02
+ dw TileData_1d90a
+ dw TileData_1d914
+
+TileData_1d75c: ; 0x1d75c
+ db $02
+ dw TileData_1d91e
+ dw TileData_1d928
+
+TileData_1d761: ; 0x1d761
+ db $02
+ dw TileData_1d932
+ dw TileData_1d93C
+
+TileData_1d766: ; 0x1d766
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d770: ; 0x1d770
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cc0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d77a: ; 0x1d77a
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d70
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d784: ; 0x1d784
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cd0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d78e: ; 0x1d78e
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d798: ; 0x1d798
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ce0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7a2: ; 0x1d7a2
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7AC: ; 0x1d7AC
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cf0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7b6: ; 0x1d7b6
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1da0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7C0: ; 0x1d7C0
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7ca: ; 0x1d7ca
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1db0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7D4: ; 0x1d7D4
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d10
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7de: ; 0x1d7de
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dc0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7E8: ; 0x1d7E8
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7f2: ; 0x1d7f2
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dd0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d7FC: ; 0x1d7FC
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d806: ; 0x1d806
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1de0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d810: ; 0x1d810
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d81a: ; 0x1d81a
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $27
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1df0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d824: ; 0x1d824
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d50
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d82e: ; 0x1d82e
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ea0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d838: ; 0x1d838
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d842: ; 0x1d842
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1eb0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d84C: ; 0x1d84C
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e10
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d856: ; 0x1d856
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ec0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d860: ; 0x1d860
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d86a: ; 0x1d86a
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ed0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d874: ; 0x1d874
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d87e: ; 0x1d87e
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ee0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d888: ; 0x1d888
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d892: ; 0x1d892
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ef0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d89C: ; 0x1d89C
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e50
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8a6: ; 0x1d8a6
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8B0: ; 0x1d8B0
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8ba: ; 0x1d8ba
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f10
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8C4: ; 0x1d8C4
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e70
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8ce: ; 0x1d8ce
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8D8: ; 0x1d8D8
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8e2: ; 0x1d8e2
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $28
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8EC: ; 0x1d8EC
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $7E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1d8f6: ; 0x1d8f6
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A90
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d900: ; 0x1d900
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $2C
+ dw StageBlueFieldBottomBaseGameBoyGfx + $AC0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d90a: ; 0x1d90a
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageBlueFieldBottomBaseGameBoyGfx + $AE0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d914: ; 0x1d914
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $2C
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d91e: ; 0x1d91e
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B30
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d928: ; 0x1d928
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $36
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B60
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d932: ; 0x1d932
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageBlueFieldBottomBaseGameBoyGfx + $B80
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1d93C: ; 0x1d93C
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $36
+ dw StageBlueFieldBottomBaseGameBoyGfx + $BB0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileDataPointers_1d946:
+ dw TileData_1d94e
+ dw TileData_1d951
+ dw TileData_1d954
+ dw TileData_1d957
+
+TileData_1d94e: ; 0x1d94e
+ db $01
+ dw TileData_1d95a
+
+TileData_1d951: ; 0x1d951
+ db $01
+ dw TileData_1d962
+
+TileData_1d954: ; 0x1d954
+ db $01
+ dw TileData_1d96a
+
+TileData_1d957: ; 0x1d957
+ db $01
+ dw TileData_1d972
+
+TileData_1d95a: ; 0x1d95a
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $27
+
+ db $00 ; terminator
+
+TileData_1d962: ; 0x1d962
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $7D
+
+ db $00 ; terminator
+
+TileData_1d96a: ; 0x1d96a
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $28
+
+ db $00 ; terminator
+
+TileData_1d972: ; 0x1d972
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7E
+
+ db $00 ; terminator
+
+TileDataPointers_1d97a:
+ dw TileData_1d9d2
+ dw TileData_1d9d5
+ dw TileData_1d9d8
+ dw TileData_1d9db
+ dw TileData_1d9de
+ dw TileData_1d9e1
+ dw TileData_1d9e4
+ dw TileData_1d9e7
+ dw TileData_1d9ea
+ dw TileData_1d9ed
+ dw TileData_1d9f0
+ dw TileData_1d9f3
+ dw TileData_1d9f6
+ dw TileData_1d9f9
+ dw TileData_1d9fc
+ dw TileData_1d9ff
+ dw TileData_1da02
+ dw TileData_1da05
+ dw TileData_1da08
+ dw TileData_1da0b
+ dw TileData_1da0e
+ dw TileData_1da11
+ dw TileData_1da14
+ dw TileData_1da17
+ dw TileData_1da1a
+ dw TileData_1da1d
+ dw TileData_1da20
+ dw TileData_1da23
+ dw TileData_1da26
+ dw TileData_1da29
+ dw TileData_1da2c
+ dw TileData_1da2f
+ dw TileData_1da32
+ dw TileData_1da35
+ dw TileData_1da38
+ dw TileData_1da3b
+ dw TileData_1da3e
+ dw TileData_1da41
+ dw TileData_1da44
+ dw TileData_1da47
+ dw TileData_1da4a
+ dw TileData_1da4d
+ dw TileData_1da50
+ dw TileData_1da53
+
+TileData_1d9d2: ; 0x1d9d2
+ db $01
+ dw TileData_1da56
+
+TileData_1d9d5: ; 0x1d9d5
+ db $01
+ dw TileData_1da5e
+
+TileData_1d9d8: ; 0x1d9d8
+ db $01
+ dw TileData_1da66
+
+TileData_1d9db: ; 0x1d9db
+ db $01
+ dw TileData_1da6e
+
+TileData_1d9de: ; 0x1d9de
+ db $01
+ dw TileData_1da76
+
+TileData_1d9e1: ; 0x1d9e1
+ db $01
+ dw TileData_1da7e
+
+TileData_1d9e4: ; 0x1d9e4
+ db $01
+ dw TileData_1da86
+
+TileData_1d9e7: ; 0x1d9e7
+ db $01
+ dw TileData_1da8e
+
+TileData_1d9ea: ; 0x1d9ea
+ db $01
+ dw TileData_1da96
+
+TileData_1d9ed: ; 0x1d9ed
+ db $01
+ dw TileData_1da9e
+
+TileData_1d9f0: ; 0x1d9f0
+ db $01
+ dw TileData_1daa6
+
+TileData_1d9f3: ; 0x1d9f3
+ db $01
+ dw TileData_1daae
+
+TileData_1d9f6: ; 0x1d9f6
+ db $01
+ dw TileData_1dab6
+
+TileData_1d9f9: ; 0x1d9f9
+ db $01
+ dw TileData_1dabe
+
+TileData_1d9fc: ; 0x1d9fc
+ db $01
+ dw TileData_1dac6
+
+TileData_1d9ff: ; 0x1d9ff
+ db $01
+ dw TileData_1dace
+
+TileData_1da02: ; 0x1da02
+ db $01
+ dw TileData_1dad6
+
+TileData_1da05: ; 0x1da05
+ db $01
+ dw TileData_1dade
+
+TileData_1da08: ; 0x1da08
+ db $01
+ dw TileData_1dae6
+
+TileData_1da0b: ; 0x1da0b
+ db $01
+ dw TileData_1daee
+
+TileData_1da0e: ; 0x1da0e
+ db $01
+ dw TileData_1daf6
+
+TileData_1da11: ; 0x1da11
+ db $01
+ dw TileData_1dafe
+
+TileData_1da14: ; 0x1da14
+ db $01
+ dw TileData_1db06
+
+TileData_1da17: ; 0x1da17
+ db $01
+ dw TileData_1db0e
+
+TileData_1da1a: ; 0x1da1a
+ db $01
+ dw TileData_1db16
+
+TileData_1da1d: ; 0x1da1d
+ db $01
+ dw TileData_1db1e
+
+TileData_1da20: ; 0x1da20
+ db $01
+ dw TileData_1db26
+
+TileData_1da23: ; 0x1da23
+ db $01
+ dw TileData_1db2e
+
+TileData_1da26: ; 0x1da26
+ db $01
+ dw TileData_1db36
+
+TileData_1da29: ; 0x1da29
+ db $01
+ dw TileData_1db3e
+
+TileData_1da2c: ; 0x1da2c
+ db $01
+ dw TileData_1db46
+
+TileData_1da2f: ; 0x1da2f
+ db $01
+ dw TileData_1db4e
+
+TileData_1da32: ; 0x1da32
+ db $01
+ dw TileData_1db56
+
+TileData_1da35: ; 0x1da35
+ db $01
+ dw TileData_1db5e
+
+TileData_1da38: ; 0x1da38
+ db $01
+ dw TileData_1db66
+
+TileData_1da3b: ; 0x1da3b
+ db $01
+ dw TileData_1db6e
+
+TileData_1da3e: ; 0x1da3e
+ db $01
+ dw TileData_1db76
+
+TileData_1da41: ; 0x1da41
+ db $01
+ dw TileData_1db7e
+
+TileData_1da44: ; 0x1da44
+ db $01
+ dw TileData_1db86
+
+TileData_1da47: ; 0x1da47
+ db $01
+ dw TileData_1db8e
+
+TileData_1da4a: ; 0x1da4a
+ db $01
+ dw TileData_1db96
+
+TileData_1da4d: ; 0x1da4d
+ db $01
+ dw TileData_1dba5
+
+TileData_1da50: ; 0x1da50
+ db $01
+ dw TileData_1dbb4
+
+TileData_1da53: ; 0x1da53
+ db $01
+ dw TileData_1dbc3
+
+TileData_1da56: ; 0x1da56
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $62
+
+ db $00 ; terminator
+
+TileData_1da5e: ; 0x1da5e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $63
+
+ db $00 ; terminator
+
+TileData_1da66: ; 0x1da66
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $64
+
+ db $00 ; terminator
+
+TileData_1da6e: ; 0x1da6e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $65
+
+ db $00 ; terminator
+
+TileData_1da76: ; 0x1da76
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $66
+
+ db $00 ; terminator
+
+TileData_1da7e: ; 0x1da7e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $67
+
+ db $00 ; terminator
+
+TileData_1da86: ; 0x1da86
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $68
+
+ db $00 ; terminator
+
+TileData_1da8e: ; 0x1da8e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $69
+
+ db $00 ; terminator
+
+TileData_1da96: ; 0x1da96
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $6A
+
+ db $00 ; terminator
+
+TileData_1da9e: ; 0x1da9e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $6B
+
+ db $00 ; terminator
+
+TileData_1daa6: ; 0x1daa6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $58
+
+ db $00 ; terminator
+
+TileData_1daae: ; 0x1daae
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $59
+
+ db $00 ; terminator
+
+TileData_1dab6: ; 0x1dab6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5A
+
+ db $00 ; terminator
+
+TileData_1dabe: ; 0x1dabe
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5B
+
+ db $00 ; terminator
+
+TileData_1dac6: ; 0x1dac6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5C
+
+ db $00 ; terminator
+
+TileData_1dace: ; 0x1dace
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5D
+
+ db $00 ; terminator
+
+TileData_1dad6: ; 0x1dad6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5E
+
+ db $00 ; terminator
+
+TileData_1dade: ; 0x1dade
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $5F
+
+ db $00 ; terminator
+
+TileData_1dae6: ; 0x1dae6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $60
+
+ db $00 ; terminator
+
+TileData_1daee: ; 0x1daee
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $4
+ db $61
+
+ db $00 ; terminator
+
+TileData_1daf6: ; 0x1daf6
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $76
+
+ db $00 ; terminator
+
+TileData_1dafe: ; 0x1dafe
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $77
+
+ db $00 ; terminator
+
+TileData_1db06: ; 0x1db06
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $78
+
+ db $00 ; terminator
+
+TileData_1db0e: ; 0x1db0e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $79
+
+ db $00 ; terminator
+
+TileData_1db16: ; 0x1db16
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7A
+
+ db $00 ; terminator
+
+TileData_1db1e: ; 0x1db1e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7B
+
+ db $00 ; terminator
+
+TileData_1db26: ; 0x1db26
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1db2e: ; 0x1db2e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7D
+
+ db $00 ; terminator
+
+TileData_1db36: ; 0x1db36
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1db3e: ; 0x1db3e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $7F
+
+ db $00 ; terminator
+
+TileData_1db46: ; 0x1db46
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6C
+
+ db $00 ; terminator
+
+TileData_1db4e: ; 0x1db4e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6D
+
+ db $00 ; terminator
+
+TileData_1db56: ; 0x1db56
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6E
+
+ db $00 ; terminator
+
+TileData_1db5e: ; 0x1db5e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $6F
+
+ db $00 ; terminator
+
+TileData_1db66: ; 0x1db66
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $70
+
+ db $00 ; terminator
+
+TileData_1db6e: ; 0x1db6e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $71
+
+ db $00 ; terminator
+
+TileData_1db76: ; 0x1db76
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $72
+
+ db $00 ; terminator
+
+TileData_1db7e: ; 0x1db7e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $73
+
+ db $00 ; terminator
+
+TileData_1db86: ; 0x1db86
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $74
+
+ db $00 ; terminator
+
+TileData_1db8e: ; 0x1db8e
+ dw LoadTileLists
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $F
+ db $75
+
+ db $00 ; terminator
+
+TileData_1db96: ; 0x1db96
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $24
+ db $25, $26, $27
+
+ db $02 ; number of tiles
+ dw vBGMap + $44
+ db $28, $29
+
+ db $00 ; terminator
+
+TileData_1dba5: ; 0x1dba5
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $24
+ db $2A, $2B, $2C
+
+ db $02 ; number of tiles
+ dw vBGMap + $44
+ db $2D, $2E
+
+ db $00 ; terminator
+
+TileData_1dbb4: ; 0x1dbb4
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $2D
+ db $27, $26, $2F
+
+ db $02 ; number of tiles
+ dw vBGMap + $4E
+ db $29, $28
+
+ db $00 ; terminator
+
+TileData_1dbc3: ; 0x1dbc3
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $2D
+ db $2C, $2B, $30
+
+ db $02 ; number of tiles
+ dw vBGMap + $4E
+ db $2E, $2D
+
+ db $00 ; terminator
+
+ResolvePsyduckPoliwagCollision: ; 0x1dbd2
+ ld a, [wWhichPsyduckPoliwag]
+ and a
+ jp z, Func_1dc8e
+ cp $2
+ jr z, .asm_1dc33
+ xor a
+ ld [wWhichPsyduckPoliwag], a
+ ld hl, wLeftMapMoveCounter
+ ld a, [hl]
+ cp $3
+ jp z, Func_1dc8e
+ inc a
+ ld [hl], a
+ ld hl, wd4f7
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dc06
+ ld a, $54
+ ld [wc7e3], a
+ ld a, $55
+ ld [wc803], a
+.asm_1dc06
+ ld a, $1
+ call Func_1de4b
+ ld a, [wLeftMapMoveCounter]
+ call Func_1de6f
+ ld a, [wLeftMapMoveCounter]
+ cp $3
+ ld a, $7
+ callba Func_10000
+ ld a, $2
+ ld [wd646], a
+ ld a, $78
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ ld a, $14
+ ld [wLeftMapMoveDiglettFrame], a
+ jr .asm_1dc8a
+
+.asm_1dc33
+ xor a
+ ld [wWhichPsyduckPoliwag], a
+ ld hl, wRightMapMoveCounter
+ ld a, [hl]
+ cp $3
+ jp z, Func_1dc8e
+ inc a
+ ld [hl], a
+ ld hl, wd4f9
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dc5c
+ ld a, $52
+ ld [wc7f0], a
+ ld a, $53
+ ld [wc810], a
+.asm_1dc5c
+ ld a, $3
+ call Func_1de4b
+ ld a, [wRightMapMoveCounter]
+ cp $3
+ ld a, $8
+ callba Func_10000
+ ld a, [wRightMapMoveCounter]
+ cp $3
+ ccf
+ call z, Func_1ddf4
+ ld a, $2
+ ld [wd645], a
+ ld a, $28
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ld a, $78
+ ld [wRightMapMoveDiglettFrame], a
+.asm_1dc8a
+ call Func_1de22
+ ret
+
+Func_1dc8e: ; 0x1dc8e
+ call Func_1dc95
+ call Func_1dd2e
+ ret
+
+Func_1dc95: ; 0x1dc95
+ ld a, [wd646]
+ cp $0
+ ret z
+ ld a, [wLeftMapMoveDiglettAnimationCounter]
+ and a
+ jr z, .asm_1dceb
+ dec a
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ ld a, [wd644]
+ and a
+ ret nz
+ ld a, [wLeftMapMoveDiglettFrame]
+ cp $1
+ jr z, .asm_1dcb9
+ cp $0
+ ret z
+ dec a
+ ld [wLeftMapMoveDiglettFrame], a
+ ret
+
+.asm_1dcb9
+ ld a, [wd646]
+ cp $2
+ ret nz
+ call Func_1130
+ ret nz
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1dcd7
+ ld a, [wLeftMapMoveCounter]
+ cp $0
+ jr z, .asm_1dcd4
+ ld b, $7
+ add b
+ jr .asm_1dcd9
+
+.asm_1dcd4
+ xor a
+ jr .asm_1dcd9
+
+.asm_1dcd7
+ ld a, $8
+.asm_1dcd9
+ call Func_1de6f
+ ld a, [wLeftMapMoveCounter]
+ cp $3
+ ccf
+ call z, Func_1ddc7
+ ld a, $1
+ ld [wd646], a
+ ret
+
+.asm_1dceb
+ ld a, [wd646]
+ cp $1
+ ret nz
+ ld a, [wLeftMapMoveDiglettAnimationCounter]
+ and a
+ ret nz
+ ld a, $0
+ call Func_1de4b
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dd0c
+ ld a, $5e
+ ld [wc7e3], a
+ ld a, $5f
+ ld [wc803], a
+.asm_1dd0c
+ ld a, $0
+ ld [wd646], a
+ ld a, [wLeftMapMoveCounter]
+ sub $3
+ ret nz
+ ld a, [wLeftMapMoveCounter]
+ sub $3
+ ld [wLeftMapMoveCounter], a
+ call Func_1de6f
+ ld a, $0
+ call Func_1de4b
+ ld a, $0
+ ld [wd646], a
+ ret
+
+; XXX
+ ret
+
+Func_1dd2e: ; 0x1dd2e
+ ld a, [wd645]
+ cp $0
+ ret z
+ cp $1
+ jr z, .asm_1dd53
+ cp $3
+ jr z, .asm_1dd69
+ ld a, [wRightMapMoveDiglettAnimationCounter]
+ cp $0
+ jr z, .asm_1dd48
+ dec a
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ret
+
+.asm_1dd48
+ ld a, $2
+ call Func_1de4b
+ ld a, $1
+ ld [wd645], a
+ ret
+
+.asm_1dd53
+ ld a, [wRightMapMoveCounter]
+ add $4
+ call Func_1de6f
+ ld a, [wRightMapMoveCounter]
+ add $3
+ call Func_1de4b
+ ld a, $3
+ ld [wd645], a
+ ret
+
+.asm_1dd69
+ ld a, [wRightMapMoveDiglettFrame]
+ and a
+ jr z, .asm_1dd74
+ dec a
+ ld [wRightMapMoveDiglettFrame], a
+ ret
+
+.asm_1dd74
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1dd89
+ ld a, [wRightMapMoveCounter]
+ cp $0
+ jr z, .asm_1dd85
+ ld b, $a
+ add b
+ jr .asm_1dd8b
+
+.asm_1dd85
+ ld a, $4
+ jr .asm_1dd8b
+
+.asm_1dd89
+ ld a, $9
+.asm_1dd8b
+ call Func_1de6f
+ ld a, $2
+ call Func_1de4b
+ ld a, [wCurrentStage]
+ bit 0, a
+ jr z, .asm_1dda9
+ ld a, $24
+ ld [wc7f0], a
+ ld a, $25
+ ld [wc810], a
+ ld a, $0
+ ld [wd645], a
+.asm_1dda9
+ ld a, [wRightMapMoveCounter]
+ sub $3
+ ret nz
+ ld a, [wRightMapMoveCounter]
+ sub $3
+ ld [wRightMapMoveCounter], a
+ ld a, $4
+ call Func_1de6f
+ ld a, $2
+ call Func_1de4b
+ ld a, $0
+ ld [wd645], a
+ ret
+
+Func_1ddc7: ; 0x1ddc7
+ ld hl, wd63d
+ call Func_e4a
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_1dde4
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1dde4
+ xor a
+ ld [wd55a], a
+ callba StartMapMoveMode
+ scf
+ ret
+
+Func_1ddf4: ; 0x1ddf4
+ ld hl, wd63c
+ call Func_e4a
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_1de11
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1de11
+ ld a, $1
+ ld [wd55a], a
+ callba StartMapMoveMode
+ scf
+ ret
+
+Func_1de22: ; 0x1de22
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld a, $55
+ ld [wd803], a
+ ld a, $4
+ ld [wd804], a
+ ld a, $2
+ ld [wd7eb], a
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $0f
+ call PlaySoundEffect
+ ret
+
+Func_1de4b: ; 0x1de4b
+ ld b, a
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld a, b
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1df66
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1de63
+ ld hl, TileDataPointers_1e00f
+.asm_1de63
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1df66)
+ call Func_10aa
+ ret
+
+Func_1de6f: ; 0x1de6f
+ ld b, a
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld a, b
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1e0a4
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1de87
+ ld hl, TileDataPointers_1e1d6
+.asm_1de87
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1e0a4)
+ call Func_10aa
+ ret
+
+Func_1de93: ; 0x1de93
+ ld hl, wd4f7
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1ded2
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1ded2
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_1ded2
+ cp $3
+ jr z, .asm_1ded2
+ dec a
+ ld [wLeftMapMoveCounter], a
+ call Func_1de6f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1decd
+ ld a, [wLeftMapMoveCounter]
+ cp $0
+ jr z, .asm_1deca
+ ld b, $7
+ add b
+ jr .asm_1decf
+
+.asm_1deca
+ xor a
+ jr .asm_1decf
+
+.asm_1decd
+ ld a, $8
+.asm_1decf
+ call Func_1de6f
+.asm_1ded2
+ ld hl, wd4f9
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1df14
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1df14
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_1df14
+ cp $3
+ jr z, .asm_1df14
+ dec a
+ ld [wRightMapMoveCounter], a
+ add $4
+ call Func_1de6f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1df0f
+ ld a, [wRightMapMoveCounter]
+ cp $0
+ jr z, .asm_1df0b
+ ld b, $a
+ add b
+ jr .asm_1df11
+
+.asm_1df0b
+ ld a, $4
+ jr .asm_1df11
+
+.asm_1df0f
+ ld a, $9
+.asm_1df11
+ call Func_1de6f
+.asm_1df14
+ ret
+
+Func_1df15: ; 0x1df15
+ ld b, $0
+ ld hl, wd4f8
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_1df3e
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1df3e
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1df3e
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_1df3e
+ cp $3
+ jr z, .asm_1df3e
+ dec a
+ ld [wLeftMapMoveCounter], a
+.asm_1df3e
+ ld hl, wd4fa
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_1df65
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1df65
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1df65
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_1df65
+ cp $3
+ jr z, .asm_1df65
+ dec a
+ ld [wRightMapMoveCounter], a
+.asm_1df65
+ ret
+
+TileDataPointers_1df66:
+ dw TileData_1df74
+ dw TileData_1df77
+ dw TileData_1df7a
+ dw TileData_1df7f
+ dw TileData_1df84
+ dw TileData_1df89
+ dw TileData_1df8e
+
+TileData_1df74: ; 0x1df74
+ db $01
+ dw TileData_1df93
+
+TileData_1df77: ; 0x1df77
+ db $01
+ dw TileData_1df9f
+
+TileData_1df7a: ; 0x1df7a
+ db $02
+ dw TileData_1dfab
+ dw TileData_1dfb5
+
+TileData_1df7f: ; 0x1df7f
+ db $02
+ dw TileData_1dfbf
+ dw TileData_1dfc9
+
+TileData_1df84: ; 0x1df84
+ db $02
+ dw TileData_1dfd3
+ dw TileData_1dfdd
+
+TileData_1df89: ; 0x1df89
+ db $02
+ dw TileData_1dfe7
+ dw TileData_1dff1
+
+TileData_1df8e: ; 0x1df8e
+ db $02
+ dw TileData_1dffb
+ dw TileData_1e005
+
+TileData_1df93: ; 0x1df93
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $4A
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $4B
+
+ db $00 ; terminator
+
+TileData_1df9f: ; 0x1df9f
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $4C
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $4D
+
+ db $00 ; terminator
+
+TileData_1dfab: ; 0x1dfab
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageBlueFieldBottomBaseGameBoyGfx + $CE0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfb5: ; 0x1dfb5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfbf: ; 0x1dfbf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D30
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfc9: ; 0x1dfc9
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D60
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1dfd3: ; 0x1dfd3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dfdd: ; 0x1dfdd
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dfe7: ; 0x1dfe7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2100
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dff1: ; 0x1dff1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2130
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1dffb: ; 0x1dffb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2150
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e005: ; 0x1e005
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2180
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_1e00f:
+ dw TileData_1e01d
+ dw TileData_1e020
+ dw TileData_1e023
+ dw TileData_1e026
+ dw TileData_1e029
+ dw TileData_1e02c
+ dw TileData_1e02f
+
+TileData_1e01d: ; 0x1e01d
+ db $01
+ dw TileData_1e032
+
+TileData_1e020: ; 0x1e020
+ db $01
+ dw TileData_1e03e
+
+TileData_1e023: ; 0x1e023
+ db $01
+ dw TileData_1e04a
+
+TileData_1e026: ; 0x1e026
+ db $01
+ dw TileData_1e05c
+
+TileData_1e029: ; 0x1e029
+ db $01
+ dw TileData_1e06e
+
+TileData_1e02c: ; 0x1e02c
+ db $01
+ dw TileData_1e080
+
+TileData_1e02f: ; 0x1e02f
+ db $01
+ dw TileData_1e092
+
+TileData_1e032: ; 0x1e032
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $35
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $36
+
+ db $00 ; terminator
+
+TileData_1e03e: ; 0x1e03e
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $A3
+ db $37
+
+ db $01 ; number of tiles
+ dw vBGMap + $C3
+ db $38
+
+ db $00 ; terminator
+
+TileData_1e04a: ; 0x1e04a
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $4F
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $50, $51
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $52, $53
+
+ db $00 ; terminator
+
+TileData_1e05c: ; 0x1e05c
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $54
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $55, $56
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $57, $58
+
+ db $00 ; terminator
+
+TileData_1e06e: ; 0x1e06e
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $59
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $5A, $5B
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $5C, $5D
+
+ db $00 ; terminator
+
+TileData_1e080: ; 0x1e080
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $59
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $5A, $5E
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $5C, $5F
+
+ db $00 ; terminator
+
+TileData_1e092: ; 0x1e092
+ dw LoadTileLists
+ db $05 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $90
+ db $60
+
+ db $02 ; number of tiles
+ dw vBGMap + $AF
+ db $61, $62
+
+ db $02 ; number of tiles
+ dw vBGMap + $CF
+ db $63, $64
+
+ db $00 ; terminator
+
+TileDataPointers_1e0a4:
+ dw TileData_1e0b8
+ dw TileData_1e0bf
+ dw TileData_1e0c6
+ dw TileData_1e0cd
+ dw TileData_1e0d4
+ dw TileData_1e0d9
+ dw TileData_1e0de
+ dw TileData_1e0e3
+ dw TileData_1e0e8
+ dw TileData_1e0ed
+
+TileData_1e0b8: ; 0x1e0b8
+ db $03
+ dw TileData_1e0f0
+ dw TileData_1e0fa
+ dw TileData_1e104
+
+TileData_1e0bf: ; 0x1e0bf
+ db $03
+ dw TileData_1e10e
+ dw TileData_1e118
+ dw TileData_1e122
+
+TileData_1e0c6: ; 0x1e0c6
+ db $03
+ dw TileData_1e12c
+ dw TileData_1e136
+ dw TileData_1e140
+
+TileData_1e0cd: ; 0x1e0cd
+ db $03
+ dw TileData_1e14a
+ dw TileData_1e154
+ dw TileData_1e15e
+
+TileData_1e0d4: ; 0x1e0d4
+ db $02
+ dw TileData_1e168
+ dw TileData_1e172
+
+TileData_1e0d9: ; 0x1e0d9
+ db $02
+ dw TileData_1e17c
+ dw TileData_1e186
+
+TileData_1e0de: ; 0x1e0de
+ db $02
+ dw TileData_1e190
+ dw TileData_1e19a
+
+TileData_1e0e3: ; 0x1e0e3
+ db $02
+ dw TileData_1e1a4
+ dw TileData_1e1ae
+
+TileData_1e0e8: ; 0x1e0e8
+ db $02
+ dw TileData_1e1b8
+ dw TileData_1e1c2
+
+TileData_1e0ed: ; 0x1e0ed
+ db $01
+ dw TileData_1e1cc
+
+TileData_1e0f0: ; 0x1e0f0
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e0fa: ; 0x1e0fa
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C40
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e104: ; 0x1e104
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C70
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e10e: ; 0x1e10e
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e118: ; 0x1e118
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e122: ; 0x1e122
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e12c: ; 0x1e12c
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FF0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e136: ; 0x1e136
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e140: ; 0x1e140
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e14a: ; 0x1e14a
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2020
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e154: ; 0x1e154
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e15e: ; 0x1e15e
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e168: ; 0x1e168
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D80
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e172: ; 0x1e172
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageBlueFieldBottomBaseGameBoyGfx + $DA0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e17c: ; 0x1e17c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e186: ; 0x1e186
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e190: ; 0x1e190
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e19a: ; 0x1e19a
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2210
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e1a4: ; 0x1e1a4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e1ae: ; 0x1e1ae
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2240
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e1b8: ; 0x1e1b8
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C40
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e1c2: ; 0x1e1c2
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageBlueFieldBottomBaseGameBoyGfx + $C70
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e1cc: ; 0x1e1cc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $58
+ dw StageBlueFieldBottomBaseGameBoyGfx + $D80
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileDataPointers_1e1d6:
+ dw TileData_1e1f2
+ dw TileData_1e1f5
+ dw TileData_1e1f8
+ dw TileData_1e1fb
+ dw TileData_1e1fe
+ dw TileData_1e201
+ dw TileData_1e204
+ dw TileData_1e207
+ dw TileData_1e20a
+ dw TileData_1e20d
+ dw TileData_1e210
+ dw TileData_1e213
+ dw TileData_1e216
+ dw TileData_1e219
+
+TileData_1e1f2: ; 0x1e1f2
+ db $01
+ dw TileData_1e21c
+
+TileData_1e1f5: ; 0x1e1f5
+ db $01
+ dw TileData_1e238
+
+TileData_1e1f8: ; 0x1e1f8
+ db $01
+ dw TileData_1e254
+
+TileData_1e1fb: ; 0x1e1fb
+ db $01
+ dw TileData_1e270
+
+TileData_1e1fe: ; 0x1e1fe
+ db $01
+ dw TileData_1e28c
+
+TileData_1e201: ; 0x1e201
+ db $01
+ dw TileData_1e2a2
+
+TileData_1e204: ; 0x1e204
+ db $01
+ dw TileData_1e2b8
+
+TileData_1e207: ; 0x1e207
+ db $01
+ dw TileData_1e2ce
+
+TileData_1e20a: ; 0x1e20a
+ db $01
+ dw TileData_1e2e4
+
+TileData_1e20d: ; 0x1e20d
+ db $01
+ dw TileData_1e2fa
+
+TileData_1e210: ; 0x1e210
+ db $01
+ dw TileData_1e310
+
+TileData_1e213: ; 0x1e213
+ db $01
+ dw TileData_1e326
+
+TileData_1e216: ; 0x1e216
+ db $01
+ dw TileData_1e336
+
+TileData_1e219: ; 0x1e219
+ db $01
+ dw TileData_1e346
+
+TileData_1e21c: ; 0x1e21c
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $36, $37, $38
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $39, $3A, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e238: ; 0x1e238
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $3C, $37, $38
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $3D, $3E, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $52, $53, $54
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $55, $56, $57
+
+ db $00 ; terminator
+
+TileData_1e254: ; 0x1e254
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $40, $41, $38
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $42, $43, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $52, $53, $54
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $55, $56, $57
+
+ db $00 ; terminator
+
+TileData_1e270: ; 0x1e270
+ dw LoadTileLists
+ db $0C ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $60
+ db $36, $46, $47
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $48, $49, $4A
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $52, $53, $54
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $55, $56, $57
+
+ db $00 ; terminator
+
+TileData_1e28c: ; 0x1e28c
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $67, $68
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $69, $6A, $6B
+
+ db $00 ; terminator
+
+TileData_1e2a2: ; 0x1e2a2
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $6C, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $6D, $6E, $68
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $6F, $70, $6B
+
+ db $00 ; terminator
+
+TileData_1e2b8: ; 0x1e2b8
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $6C, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $72, $68
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $69, $73, $6B
+
+ db $00 ; terminator
+
+TileData_1e2ce: ; 0x1e2ce
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $75, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $76, $77
+
+ db $03 ; number of tiles
+ dw vBGMap + $D1
+ db $69, $78, $79
+
+ db $00 ; terminator
+
+TileData_1e2e4: ; 0x1e2e4
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $3F, $3A, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e2fa: ; 0x1e2fa
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $44, $45, $3B
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e310: ; 0x1e310
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $80
+ db $39, $4B, $4A
+
+ db $03 ; number of tiles
+ dw vBGMap + $A0
+ db $4C, $4D, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C0
+ db $4F, $50, $51
+
+ db $00 ; terminator
+
+TileData_1e326: ; 0x1e326
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $6D, $71, $68
+
+ db $00 ; terminator
+
+TileData_1e336: ; 0x1e336
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $74, $68
+
+ db $00 ; terminator
+
+TileData_1e346: ; 0x1e346
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $91
+ db $4D, $65, $4E
+
+ db $03 ; number of tiles
+ dw vBGMap + $B1
+ db $66, $67, $77
+
+ db $00 ; terminator
+
+ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356
+ ld a, [wWhichPinballUpgradeTrigger]
+ and a
+ jp z, Func_1e471
+ xor a
+ ld [wWhichPinballUpgradeTrigger], a
+ ld a, [wStageCollisionState]
+ cp $0
+ jr nz, .asm_1e386
+ ld a, $1
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ ld a, $1
+ ld [wd580], a
+ callba Func_1404a
+.asm_1e386
+ ld a, [wStageCollisionState]
+ bit 0, a
+ jp z, Func_1e471
+ ld a, [wd5fc]
+ and a
+ jp nz, Func_1e471
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $b
+ callba Func_10000
+ ld a, [wWhichPinballUpgradeTriggerId]
+ sub $13
+ ld c, a
+ ld b, $0
+ ld hl, wd5f9
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ jr z, .asm_1e3bf
+ ld [hl], $0
+.asm_1e3bf
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd5f9
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ jr nz, .asm_1e3de
+ lb de, $00, $09
+ call PlaySoundEffect
+ jp asm_1e475
+
+.asm_1e3de
+ ld a, $1
+ ld [wd5fc], a
+ ld a, $80
+ ld [wd5fd], a
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wBallType]
+ cp MASTER_BALL
+ jr z, .masterBall
+ lb de, $06, $3a
+ call PlaySoundEffect
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5cc
+ ld de, FieldMultiplierText
+ call LoadTextHeader
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeProgression2BlueField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ add $30
+ ld [wBottomMessageText + $12], a
+ jr .asm_1e465
+
+.masterBall
+ lb de, $0f, $4d
+ call PlaySoundEffect
+ ld bc, OneMillionPoints
+ callba AddBigBCD6FromQueue
+ ld bc, $0100
+ ld de, $0000
+ push bc
+ push de
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5d4
+ ld de, DigitsText1to8
+ call Func_32cc
+ pop de
+ pop bc
+ ld hl, wd5cc
+ ld de, FieldMultiplierSpecialBonusText
+ call LoadTextHeader
+.asm_1e465
+ callba TransitionPinballUpgrade
+ jr asm_1e475
+
+Func_1e471: ; 0x1e471
+ call Func_1e4b8
+ ret z
+asm_1e475: ; 0x1e475
+ ld hl, wd5fb
+ ld b, $3
+.asm_1e47a
+ ld a, [hld]
+ push hl
+ call Func_1e484
+ pop hl
+ dec b
+ jr nz, .asm_1e47a
+ ret
+
+Func_1e484: ; 0x1e484
+ and a
+ jr z, .asm_1e496
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e491
+ ld hl, TileDataPointers_1e520
+ jr .asm_1e4a3
+
+.asm_1e491
+ ld hl, TileDataPointers_1e556
+ jr .asm_1e4a3
+
+.asm_1e496
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e4a0
+ ld hl, TileDataPointers_1e526
+ jr .asm_1e4a3
+
+.asm_1e4a0
+ ld hl, TileDataPointers_1e55c
+.asm_1e4a3
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $7
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_1e4b8: ; 0x1e4b8
+ ld a, [wd5fc]
+ and a
+ jr z, .asm_1e4e5
+ ld a, [wd5fd]
+ dec a
+ ld [wd5fd], a
+ jr nz, .asm_1e4ca
+ ld [wd5fc], a
+.asm_1e4ca
+ and $7
+ jr nz, .asm_1e4e3
+ ld a, [wd5fd]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd5f9
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_1e4e3
+ xor a
+ ret
+
+.asm_1e4e5
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .leftFlipperKeyIsPressed
+ ; left flipper key is pressed
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.leftFlipperKeyIsPressed
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ; right flipper key is pressed
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hl], a
+ ret
+
+BallTypeProgression2BlueField: ; 0x1e514
+; Determines the next upgrade for the Ball.
+ db GREAT_BALL ; POKE_BALL -> GREAT_BALL
+ db GREAT_BALL ; unused
+ db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
+ db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
+ db MASTER_BALL ; unused
+ db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
+
+BallTypeDegradation2BlueField: ; 0x1e51a
+; Determines the previous upgrade for the Ball.
+ db POKE_BALL ; POKE_BALL -> POKE_BALL
+ db POKE_BALL ; unused
+ db POKE_BALL ; GREAT_BALL -> POKE_BALL
+ db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
+ db ULTRA_BALL ; unused
+ db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
+
+TileDataPointers_1e520:
+ dw TileData_1e52c
+ dw TileData_1e533
+ dw TileData_1e53a
+
+TileDataPointers_1e526:
+ dw TileData_1e541
+ dw TileData_1e548
+ dw TileData_1e54f
+
+TileData_1e52c: ; 0x1e52c
+ db $02, $02
+ dw vBGMap + $86
+ db $66, $67
+ db $00
+
+TileData_1e533: ; 0x1e533
+ db $02, $02
+ dw vBGMap + $69
+ db $66, $67
+ db $00
+
+TileData_1e53a: ; 0x1e53a
+ db $02, $02
+ dw vBGMap + $8C
+ db $66, $67
+ db $00
+
+TileData_1e541: ; 0x1e541
+ db $02, $02
+ dw vBGMap + $86
+ db $64, $65
+ db $00
+
+TileData_1e548: ; 0x1e548
+ db $02, $02
+ dw vBGMap + $69
+ db $64, $65
+ db $00
+
+TileData_1e54f: ; 0x1e54f
+ db $02, $02
+ dw vBGMap + $8C
+ db $64, $65
+ db $00
+
+TileDataPointers_1e556:
+ dw TileData_1e562
+ dw TileData_1e569
+ dw TileData_1e570
+
+TileDataPointers_1e55c:
+ dw TileData_1e577
+ dw TileData_1e57e
+ dw TileData_1e585
+
+TileData_1e562: ; 0x1e562
+ db $02, $02
+ dw vBGMap + $86
+ db $43, $43
+ db $00
+
+TileData_1e569: ; 0x1e569
+ db $02, $02
+ dw vBGMap + $69
+ db $43, $43
+ db $00
+
+TileData_1e570: ; 0x1e570
+ db $02, $02
+ dw vBGMap + $8C
+ db $43, $43
+ db $00
+
+TileData_1e577: ; 0x1e577
+ db $02, $02
+ dw vBGMap + $86
+ db $42, $42
+ db $00
+
+TileData_1e57e: ; 0x1e57e
+ db $02, $02
+ dw vBGMap + $69
+ db $42, $42
+ db $00
+
+TileData_1e585: ; 0x1e585
+ db $02, $02
+ dw vBGMap + $8C
+ db $42, $42
+ db $00
+
+HandleBlueStageBallTypeUpgradeCounter: ; 0x1e58c
+ ld a, [wCapturingMon]
+ and a
+ ret nz
+ ; check if counter is at 0
+ ld hl, wBallTypeCounter
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ or b
+ ret z
+ dec bc
+ ld a, b
+ ld [hld], a
+ ld [hl], c
+ or c
+ ret nz
+ ; counter is now 0! Degrade the ball upgrade.
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeDegradation2BlueField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ and a
+ jr z, .pokeball
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+.pokeball
+ callba TransitionPinballUpgrade
+ ret
+
+Func_1e5c5: ; 0x1e5c5
+ ld a, [wWhichCAVELight]
+ and a
+ jr z, .asm_1e623
+ xor a
+ ld [wWhichCAVELight], a
+ ld a, [wd513]
+ and a
+ jr nz, .asm_1e623
+ ld a, [wWhichCAVELightId]
+ sub $16
+ ld c, a
+ ld b, $0
+ ld hl, wd50f
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ ret nz
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd50f
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ inc hl
+ and [hl]
+ jr z, Func_1e627
+ ld a, $1
+ ld [wd513], a
+ ld a, $80
+ ld [wd514], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $09
+ call PlaySoundEffect
+ ld hl, wd62c
+ call Func_e4a
+ jr Func_1e627
+
+.asm_1e623
+ call Func_1e66a
+ ret z
+ ; fall through
+
+Func_1e627: ; 0x1e627
+ ld hl, wd512
+ ld b, $4
+.asm_1e62c
+ ld a, [hld]
+ push hl
+ call Func_1e636
+ pop hl
+ dec b
+ jr nz, .asm_1e62c
+ ret
+
+Func_1e636: ; 0x1e636
+ and a
+ jr z, .asm_1e648
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e643
+ ld hl, TileDataPointers_1e6d7
+ jr .asm_1e655
+
+.asm_1e643
+ ld hl, TileDataPointers_1e717
+ jr .asm_1e655
+
+.asm_1e648
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_1e652
+ ld hl, TileDataPointers_1e6df
+ jr .asm_1e655
+
+.asm_1e652
+ ld hl, TileDataPointers_1e71f
+.asm_1e655
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $7
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_1e66a: ; 0x1e66a
+ ld a, [wd513]
+ and a
+ jr z, .asm_1e6a0
+ ld a, [wd514]
+ dec a
+ ld [wd514], a
+ jr nz, .asm_1e687
+ ld [wd513], a
+ ld a, $1
+ ld [wd608], a
+ ld a, $3
+ ld [wd607], a
+ xor a
+.asm_1e687
+ and $7
+ ret nz
+ ld a, [wd514]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd50f
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_1e6a0
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .asm_1e6bc
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.asm_1e6bc
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hl], a
+ ret
+
+TileDataPointers_1e6d7:
+ dw TileData_1e6e7
+ dw TileData_1e6ed
+ dw TileData_1e6f3
+ dw TileData_1e6f9
+
+TileDataPointers_1e6df:
+ dw TileData_1e6ff
+ dw TileData_1e705
+ dw TileData_1e70b
+ dw TileData_1e711
+
+TileData_1e6e7: ; 0x1e6e7
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $5E
+
+ db $00 ; terminator
+
+TileData_1e6ed: ; 0x1e6ed
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $5E
+
+ db $00 ; terminator
+
+TileData_1e6f3: ; 0x1e6f3
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $60
+
+ db $00 ; terminator
+
+TileData_1e6f9: ; 0x1e6f9
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $60
+
+ db $00 ; terminator
+
+TileData_1e6ff: ; 0x1e6ff
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $5D
+
+ db $00 ; terminator
+
+TileData_1e705: ; 0x1e705
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $5D
+
+ db $00 ; terminator
+
+TileData_1e70b: ; 0x1e70b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $5F
+
+ db $00 ; terminator
+
+TileData_1e711: ; 0x1e711
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $5F
+
+ db $00 ; terminator
+
+TileDataPointers_1e717:
+ dw TileData_1e727
+ dw TileData_1e72d
+ dw TileData_1e733
+ dw TileData_1e739
+
+TileDataPointers_1e71f:
+ dw TileData_1e73f
+ dw TileData_1e745
+ dw TileData_1e74b
+ dw TileData_1e751
+
+TileData_1e727: ; 0x1e727
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $49
+
+ db $00 ; terminator
+
+TileData_1e72d: ; 0x1e72d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $4A
+
+ db $00 ; terminator
+
+TileData_1e733: ; 0x1e733
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $4B
+
+ db $00 ; terminator
+
+TileData_1e739: ; 0x1e739
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $4C
+
+ db $00 ; terminator
+
+TileData_1e73f: ; 0x1e73f
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $47
+
+ db $00 ; terminator
+
+TileData_1e745: ; 0x1e745
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $48
+
+ db $00 ; terminator
+
+TileData_1e74b: ; 0x1e74b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7A
+
+ db $00 ; terminator
+
+TileData_1e751: ; 0x1e751
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7B
+
+ db $00 ; terminator
+
+Func_1e757: ; 0x1e757
+ ld a, [wSlotCollision]
+ and a
+ jr z, .asm_1e78c
+ xor a
+ ld [wSlotCollision], a
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wd603]
+ and a
+ jr nz, .asm_1e78c
+ xor a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wd549], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $50
+ ld [wBallXPos + 1], a
+ ld a, $16
+ ld [wBallYPos + 1], a
+ ld a, $13
+ ld [wd603], a
+.asm_1e78c
+ ld a, [wd603]
+ and a
+ ret z
+ dec a
+ ld [wd603], a
+ ld a, $18
+ ld [wd606], a
+ ld a, [wd603]
+ cp $12
+ jr nz, .asm_1e7b2
+ lb de, $00, $21
+ call PlaySoundEffect
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1e7b2
+ cp $f
+ jr nz, .asm_1e7c1
+ callba Func_dd62
+ ret
+
+.asm_1e7c1
+ cp $c
+ jr nz, .asm_1e7d0
+ xor a
+ ld [wd548], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ret
+
+.asm_1e7d0
+ cp $9
+ jr nz, .asm_1e7d8
+ call Func_1e830
+ ret
+
+.asm_1e7d8
+ cp $6
+ jr nz, .asm_1e7f5
+ xor a
+ ld [wd604], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1e7f5
+ cp $3
+ jr nz, .asm_1e80e
+ callba LoadBallGfx
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ ld a, $80
+ ld [wBallXVelocity], a
+ ret
+
+.asm_1e80e
+ and a
+ ret nz
+ call Func_1e8f6
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp CATCHEM_MODE_SLOT_REWARD
+ ret nz
+ call GenRandom
+ and $8
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_1e830: ; 0x1e830
+ xor a
+ ld [wIndicatorStates + 4], a
+ ld a, $d
+ callba Func_10000
+ jr nc, .asm_1e84b
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ret
+
+.asm_1e84b
+ ld a, [wd624]
+ cp $3
+ jr nz, .asm_1e891
+ ld a, [wd607]
+ and a
+ jr nz, .asm_1e891
+.asm_1e858
+ ld a, [wBonusStageSlotRewardActive]
+ and a
+ jr nz, .asm_1e867
+ xor a
+ ld [wd625], a
+ ld a, $40
+ ld [wd626], a
+.asm_1e867
+ xor a
+ ld [wBonusStageSlotRewardActive], a
+ ld a, $1
+ ld [wd495], a
+ ld [wd4ae], a
+ ld a, [wd498]
+ ld c, a
+ ld b, $0
+ ld hl, GoToBonusStageTextIds_BlueField
+ add hl, bc
+ ld a, [hl]
+ ld [wd497], a
+ call Func_1e8c3
+ xor a
+ ld [wd609], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ld a, $1e
+ ld [wd607], a
+ ret
+
+.asm_1e891
+ callba Func_ed8e
+ xor a
+ ld [wd608], a
+ ld a, [wd61d]
+ cp $d
+ jr nc, .asm_1e858
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp EVOLUTION_MODE_SLOT_REWARD
+ ret nz
+ callba Func_10ab3
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_1e8c3: ; 0x1e8c3
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld a, [wd497]
+ ld de, GoToMeowthStageText
+ cp STAGE_MEOWTH_BONUS
+ jr z, .loadText
+ ld de, GoToSeelStageText
+ cp STAGE_SEEL_BONUS
+ jr z, .loadText
+ ld de, GoToMewtwoStageText
+.loadText
+ call LoadTextHeader
+ ld de, $0000
+ call PlaySong
+ rst AdvanceFrame
+ lb de, $3c, $23
+ call PlaySoundEffect
+ ret
+
+GoToBonusStageTextIds_BlueField:
+ db STAGE_GENGAR_BONUS
+ db STAGE_MEWTWO_BONUS
+ db STAGE_MEOWTH_BONUS
+ db STAGE_DIGLETT_BONUS
+ db STAGE_SEEL_BONUS
+
+Func_1e8f6: ; 0x1e8f6
+ ld a, [wCurrentStage]
+ and $1
+ sla a
+ ld c, a
+ ld a, [wd604]
+ add c
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1e91e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1e912
+ ld hl, TileDataPointers_1e970
+.asm_1e912
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1e91e)
+ call Func_10aa
+ ret
+
+TileDataPointers_1e91e:
+ dw TileData_1e926
+ dw TileData_1e929
+ dw TileData_1e92c
+ dw TileData_1e931
+
+TileData_1e926: ; 0x1e926
+ db $01
+ dw TileData_1e936
+
+TileData_1e929: ; 0x1e929
+ db $01
+ dw TileData_1e93f
+
+TileData_1e92c: ; 0x1e92c
+ db $02
+ dw TileData_1e948
+ dw TileData_1e952
+
+TileData_1e931: ; 0x1e931
+ db $02
+ dw TileData_1e95c
+ dw TileData_1e966
+
+TileData_1e936: ; 0x1e936
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $EE, $EF
+
+ db $00 ; terminator
+
+TileData_1e93f: ; 0x1e93f
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $F0, $F1
+
+ db $00 ; terminator
+
+TileData_1e948: ; 0x1e948
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1F
+ dw StageBlueFieldBottomBaseGameBoyGfx + $9F0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e952: ; 0x1e952
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $21
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A10
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1e95c: ; 0x1e95c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e966: ; 0x1e966
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $21
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_1e970:
+ dw TileData_1e978
+ dw TileData_1e97d
+ dw TileData_1e980
+ dw TileData_1e983
+
+TileData_1e978: ; 0x1e978
+ db $02
+ dw TileData_1e986
+ dw TileData_1e98F
+
+TileData_1e97d: ; 0x1e97d
+ db $01
+ dw TileData_1e99b
+
+TileData_1e980: ; 0x1e980
+ db $01
+ dw TileData_1e9a4
+
+TileData_1e983: ; 0x1e983
+ db $01
+ dw TileData_1e9b2
+
+TileData_1e986: ; 0x1e986
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $F0, $F1
+
+ db $00 ; terminator
+
+TileData_1e98F: ; 0x1e98F
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $224
+ db $D8
+
+ db $01 ; number of tiles
+ dw vBGMap + $22f
+ db $EC
+
+ db $00 ; terminator
+
+TileData_1e99b: ; 0x1e99b
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $229
+ db $F2, $F3
+
+ db $00 ; terminator
+
+TileData_1e9a4: ; 0x1e9a4
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $9809
+ db $15, $16
+
+ db $02 ; terminator
+ dw vBGMap + $29
+ db $17, $18
+
+ db $00 ; terminator
+
+TileData_1e9b2: ; 0x1e9b2
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $9
+ db $19, $1A
+
+ db $02 ; terminator
+ dw vBGMap + $29
+ db $1B, $1C
+
+ db $00 ; terminator
+
+Func_1e9c0: ; 0x1e9c0
+ ld a, [wd607]
+ and a
+ ret z
+ dec a
+ ld [wd607], a
+ ret nz
+ ld a, [wInSpecialMode]
+ and a
+ ret nz
+ ld a, [wd609]
+ and a
+ jr z, .asm_1e9dc
+ ld a, [wd498]
+ add $15
+ jr .asm_1e9e3
+
+.asm_1e9dc
+ ld a, [wd608]
+ and a
+ ret z
+ ld a, $1a
+.asm_1e9e3
+ ld hl, wCurrentStage
+ bit 0, [hl]
+ callba nz, Func_30256
+ ld a, [wd604]
+ and a
+ ret nz
+ ld a, $1
+ ld [wd604], a
+ ld a, $80
+ ld [wIndicatorStates + 4], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ call nz, Func_1e8f6
+ ret
+
+Func_1ea0a: ; 0x1ea0a
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $fe
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jr asm_1ea6a
+
+Func_1ea3b: ; 0x1ea3b
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $86
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ ; fall through
+
+asm_1ea6a: ; 0x1ea6a
+ ld bc, BallPhysicsData_f0000
+ add hl, bc
+ ld de, wBallXVelocity
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1eaa9
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1eaa9
+ pop hl
+ bit 7, h
+ jr z, .asm_1eab5
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1eab5
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ lb de, $00, $04
+ call PlaySoundEffect
+ ret
+
+Func_1ead4: ; 0x1ead4
+ ld a, [hNumFramesDropped]
+ and $f
+ ret nz
+ ld bc, $0000
+.asm_1eadc
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ ld a, [hl]
+ cp $1
+ jr z, .asm_1eaf8
+ bit 7, [hl]
+ jr z, .asm_1eaf8
+ ld a, [hl]
+ res 7, a
+ ld hl, hNumFramesDropped
+ bit 4, [hl]
+ jr z, .asm_1eaf5
+ inc a
+.asm_1eaf5
+ call Func_1eb41
+.asm_1eaf8
+ pop bc
+ inc c
+ ld a, c
+ cp $2
+ jr nz, .asm_1eadc
+ ld a, [hNumFramesDropped]
+ and $f
+ ret nz
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret z
+ ld bc, $0002
+.asm_1eb0d
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ ld a, [hl]
+ cp $1
+ jr z, .asm_1eb29
+ bit 7, [hl]
+ jr z, .asm_1eb29
+ ld a, [hl]
+ res 7, a
+ ld hl, hNumFramesDropped
+ bit 4, [hl]
+ jr z, .asm_1eb2b
+ inc a
+ inc a
+ jr .asm_1eb2b
+
+.asm_1eb29
+ ld a, $0
+.asm_1eb2b
+ push af
+ ld hl, wd648
+ add hl, bc
+ dec hl
+ dec hl
+ ld a, [hl]
+ ld d, a
+ pop af
+ add d
+ call Func_1eb41
+ pop bc
+ inc c
+ ld a, c
+ cp $5
+ jr nz, .asm_1eb0d
+ ret
+
+Func_1eb41: ; 0x1eb41
+ push af
+ sla c
+ ld hl, TileDataPointers_1eb61
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1eb4f
+ ld hl, TileDataPointers_1ed51
+.asm_1eb4f
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ sla a
+ ld c, a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_1eb61)
+ call Func_10aa
+ ret
+
+TileDataPointers_1eb61:
+ dw TileDataPointers_1eb6b
+ dw TileDataPointers_1eb75
+ dw TileDataPointers_1eb7f
+ dw TileDataPointers_1eb87
+ dw TileDataPointers_1eb8f
+
+TileDataPointers_1eb6b: ; 0x1eb6b
+ dw TileData_1eb97
+ dw TileData_1eb9a
+ dw TileData_1eb9d
+ dw TileData_1eba0
+ dw TileData_1eba3
+
+TileDataPointers_1eb75: ; 0x1eb75
+ dw TileData_1eba6
+ dw TileData_1eba9
+ dw TileData_1ebac
+ dw TileData_1ebaf
+ dw TileData_1ebb2
+
+TileDataPointers_1eb7f: ; 0x1eb7f
+ dw TileData_1ebb5
+ dw TileData_1ebb8
+ dw TileData_1ebbb
+ dw TileData_1ebbe
+
+TileDataPointers_1eb87: ; 0x1eb87
+ dw TileData_1ebc1
+ dw TileData_1ebc6
+ dw TileData_1ebcb
+ dw TileData_1ebd0
+
+TileDataPointers_1eb8f: ; 0x1eb8f
+ dw TileData_1ebd5
+ dw TileData_1ebda
+ dw TileData_1ebdf
+ dw TileData_1ebe4
+
+TileData_1eb97: ; 0x1eb97
+ db $01
+ dw TileData_1ebe9
+
+TileData_1eb9a: ; 0x1eb9a
+ db $01
+ dw TileData_1ebf9
+
+TileData_1eb9d: ; 0x1eb9d
+ db $01
+ dw TileData_1ec09
+
+TileData_1eba0: ; 0x1eba0
+ db $01
+ dw TileData_1ec19
+
+TileData_1eba3: ; 0x1eba3
+ db $01
+ dw TileData_1ec29
+
+TileData_1eba6: ; 0x1eba6
+ db $01
+ dw TileData_1ec39
+
+TileData_1eba9: ; 0x1eba9
+ db $01
+ dw TileData_1ec49
+
+TileData_1ebac: ; 0x1ebac
+ db $01
+ dw TileData_1ec59
+
+TileData_1ebaf: ; 0x1ebaf
+ db $01
+ dw TileData_1ec69
+
+TileData_1ebb2: ; 0x1ebb2
+ db $01
+ dw TileData_1ec79
+
+TileData_1ebb5: ; 0x1ebb5
+ db $01
+ dw TileData_1ec89
+
+TileData_1ebb8: ; 0x1ebb8
+ db $01
+ dw TileData_1ec93
+
+TileData_1ebbb: ; 0x1ebbb
+ db $01
+ dw TileData_1ec9d
+
+TileData_1ebbe: ; 0x1ebbe
+ db $01
+ dw TileData_1eca7
+
+TileData_1ebc1: ; 0x1ebc1
+ db $02
+ dw TileData_1ecb1
+ dw TileData_1ecbb
+
+TileData_1ebc6: ; 0x1ebc6
+ db $02
+ dw TileData_1ecc5
+ dw TileData_1eccf
+
+TileData_1ebcb: ; 0x1ebcb
+ db $02
+ dw TileData_1ecd9
+ dw TileData_1ece3
+
+TileData_1ebd0: ; 0x1ebd0
+ db $02
+ dw TileData_1eced
+ dw TileData_1ecf7
+
+TileData_1ebd5: ; 0x1ebd5
+ db $02
+ dw TileData_1ed01
+ dw TileData_1ed0b
+
+TileData_1ebda: ; 0x1ebda
+ db $02
+ dw TileData_1ed15
+ dw TileData_1ed1f
+
+TileData_1ebdf: ; 0x1ebdf
+ db $02
+ dw TileData_1ed01
+ dw TileData_1ed0b
+
+TileData_1ebe4: ; 0x1ebe4
+ db $02
+ dw TileData_1ed15
+ dw TileData_1ed1f
+
+TileData_1ebe9: ; 0x1ebe9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3D
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $17
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ebf9: ; 0x1ebf9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3E
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $17
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ec09: ; 0x1ec09
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3E
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $18
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ec19: ; 0x1ec19
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3E
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $18
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3E
+
+ db $00 ; terminator
+
+TileData_1ec29: ; 0x1ec29
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $3D
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $18
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $3D
+
+ db $00 ; terminator
+
+TileData_1ec39: ; 0x1ec39
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $3F
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1D
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $3F
+
+ db $00 ; terminator
+
+TileData_1ec49: ; 0x1ec49
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1D
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $3F
+
+ db $00 ; terminator
+
+TileData_1ec59: ; 0x1ec59
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1E
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $3F
+
+ db $00 ; terminator
+
+TileData_1ec69: ; 0x1ec69
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1E
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $40
+
+ db $00 ; terminator
+
+TileData_1ec79: ; 0x1ec79
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $40
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $1D
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $40
+
+ db $00 ; terminator
+
+TileData_1ec89: ; 0x1ec89
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageBlueFieldBottomBaseGameBoyGfx + $950
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ec93: ; 0x1ec93
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ec9d: ; 0x1ec9d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1eca7: ; 0x1eca7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $15
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ecb1: ; 0x1ecb1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageBlueFieldBottomBaseGameBoyGfx + $990
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ecbb: ; 0x1ecbb
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageBlueFieldBottomBaseGameBoyGfx + $9B0
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ecc5: ; 0x1ecc5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2270
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1eccf: ; 0x1eccf
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2290
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ecd9: ; 0x1ecd9
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ece3: ; 0x1ece3
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22D0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1eced: ; 0x1eced
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $19
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ecf7: ; 0x1ecf7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1B
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2310
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed01: ; 0x1ed01
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A30
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ed0b: ; 0x1ed0b
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageBlueFieldBottomBaseGameBoyGfx + $A50
+ db Bank(StageBlueFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1ed15: ; 0x1ed15
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed1f: ; 0x1ed1f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed29: ; 0x1ed29
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed33: ; 0x1ed33
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1e3d: ; 0x1e3d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1ed47: ; 0x1ed47
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $25
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1CA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_1ed51: ; 0x1ed51
+ dw TileDataPointers_1ed5b
+ dw TileDataPointers_1ed65
+ dw TileDataPointers_1ed6f
+ dw TileDataPointers_1ed77
+ dw TileDataPointers_1ed7f
+
+TileDataPointers_1ed5b: ; 0x1ed5b
+ dw TileData_1ed87
+ dw TileData_1ed8a
+ dw TileData_1ed8d
+ dw TileData_1ed90
+ dw TileData_1ed93
+
+TileDataPointers_1ed65: ; 0x1ed65
+ dw TileData_1ed96
+ dw TileData_1ed99
+ dw TileData_1ed9c
+ dw TileData_1ed9f
+ dw TileData_1eda2
+
+TileDataPointers_1ed6f: ; 0x1ed6f
+ dw TileData_1eda5
+ dw TileData_1eda8
+ dw TileData_1edab
+ dw TileData_1edae
+
+TileDataPointers_1ed77: ; 0x1ed77
+ dw TileData_1edb1
+ dw TileData_1edb4
+ dw TileData_1edb7
+ dw TileData_1edba
+
+TileDataPointers_1ed7f: ; 0x1ed7f
+ dw TileData_1edbd
+ dw TileData_1edc0
+ dw TileData_1edc3
+ dw TileData_1edc6
+
+TileData_1ed87: ; 0x1ed87
+ db $01
+ dw TileData_1edc9
+
+TileData_1ed8a: ; 0x1ed8a
+ db $01
+ dw TileData_1edd9
+
+TileData_1ed8d: ; 0x1ed8d
+ db $01
+ dw TileData_1ede9
+
+TileData_1ed90: ; 0x1ed90
+ db $01
+ dw TileData_1edf9
+
+TileData_1ed93: ; 0x1ed93
+ db $01
+ dw TileData_1ee09
+
+TileData_1ed96: ; 0x1ed96
+ db $01
+ dw TileData_1ee19
+
+TileData_1ed99: ; 0x1ed99
+ db $01
+ dw TileData_1ee29
+
+TileData_1ed9c: ; 0x1ed9c
+ db $01
+ dw TileData_1ee39
+
+TileData_1ed9f: ; 0x1ed9f
+ db $01
+ dw TileData_1ee49
+
+TileData_1eda2: ; 0x1eda2
+ db $01
+ dw TileData_1ee59
+
+TileData_1eda5: ; 0x1eda5
+ db $01
+ dw TileData_1ee69
+
+TileData_1eda8: ; 0x1eda8
+ db $01
+ dw TileData_1ee75
+
+TileData_1edab: ; 0x1edab
+ db $01
+ dw TileData_1ee81
+
+TileData_1edae: ; 0x1edae
+ db $01
+ dw TileData_1ee8d
+
+TileData_1edb1: ; 0x1edb1
+ db $01
+ dw TileData_1ee99
+
+TileData_1edb4: ; 0x1edb4
+ db $01
+ dw TileData_1eea7
+
+TileData_1edb7: ; 0x1edb7
+ db $01
+ dw TileData_1eeb5
+
+TileData_1edba: ; 0x1edba
+ db $01
+ dw TileData_1eec3
+
+TileData_1edbd: ; 0x1edbd
+ db $01
+ dw TileData_1eed1
+
+TileData_1edc0: ; 0x1edc0
+ db $01
+ dw TileData_1eedf
+
+TileData_1edc3: ; 0x1edc3
+ db $01
+ dw TileData_1eeed
+
+TileData_1edc6: ; 0x1edc6
+ db $01
+ dw TileData_1eefb
+
+TileData_1edc9: ; 0x1edc9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $31
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0D
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1edd9: ; 0x1edd9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $32
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0D
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1ede9: ; 0x1ede9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $32
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0E
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1edf9: ; 0x1edf9
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $32
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0E
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7D
+
+ db $00 ; terminator
+
+TileData_1ee09: ; 0x1ee09
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $64
+ db $31
+
+ db $01 ; number of tiles
+ dw vBGMap + $84
+ db $0E
+
+ db $01 ; number of tiles
+ dw vBGMap + $A5
+ db $7C
+
+ db $00 ; terminator
+
+TileData_1ee19: ; 0x1ee19
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $33
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $0F
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee29: ; 0x1ee29
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $34
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $0F
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee39: ; 0x1ee39
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $34
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $10
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee49: ; 0x1ee49
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $34
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $10
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7F
+
+ db $00 ; terminator
+
+TileData_1ee59: ; 0x1ee59
+ dw LoadTileLists
+ db $03 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $6F
+ db $33
+
+ db $01 ; number of tiles
+ dw vBGMap + $8F
+ db $10
+
+ db $01 ; number of tiles
+ dw vBGMap + $AE
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1ee69: ; 0x1ee69
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $05
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $06
+
+ db $00 ; terminator
+
+TileData_1ee75: ; 0x1ee75
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $07
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $08
+
+ db $00 ; terminator
+
+TileData_1ee81: ; 0x1ee81
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $09
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $0A
+
+ db $00 ; terminator
+
+TileData_1ee8d: ; 0x1ee8d
+ dw LoadTileLists
+ db $02 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $48
+ db $0B
+
+ db $01 ; number of tiles
+ dw vBGMap + $68
+ db $0C
+
+ db $00 ; terminator
+
+TileData_1ee99: ; 0x1ee99
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $26, $27
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $28, $29
+
+ db $00 ; terminator
+
+TileData_1eea7: ; 0x1eea7
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $2A, $2B
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $2C, $2D
+
+ db $00 ; terminator
+
+TileData_1eeb5: ; 0x1eeb5
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $2E, $2F
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $30, $31
+
+ db $00 ; terminator
+
+TileData_1eec3: ; 0x1eec3
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $4B
+ db $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $6B
+ db $34, $35
+
+ db $00 ; terminator
+
+TileData_1eed1: ; 0x1eed1
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $16, $17
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $18, $19
+
+ db $00 ; terminator
+
+TileData_1eedf: ; 0x1eedf
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $1A, $1B
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $1C, $1D
+
+ db $00 ; terminator
+
+TileData_1eeed: ; 0x1eeed
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $1E, $1F
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $20, $21
+
+ db $00 ; terminator
+
+TileData_1eefb: ; 0x1eefb
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $49
+ db $22, $23
+
+ db $02 ; number of tiles
+ dw vBGMap + $69
+ db $24, $25
+
+ db $00 ; terminator
+
+ResolveBlueStageForceFieldCollision: ; 0x1ef09
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jp z, Func_1ef20
+ cp $1 ; right direction
+ jp z, Func_1ef4d
+ cp $2 ; down direction
+ jp z, Func_1ef7e
+ cp $3 ; left direction
+ jp z, Func_1efae
+ ; fall through
+ ; default to upward forcefield
+
+Func_1ef20: ; 0x1ef20
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jp Func_1efdc
+
+Func_1ef4d: ; 0x1ef4d
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld a, $30
+ sub c
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jp Func_1efdc
+
+Func_1ef7e: ; 0x1ef7e
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, a
+ ld a, $30
+ sub c
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jr Func_1efdc
+
+Func_1efae: ; 0x1efae
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallYPos + 1]
+ sub $60
+ cp $30
+ ret nc
+ ld c, a
+ ld a, $30
+ sub c
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ ; fall through
+Func_1efdc: ; 0x1efdc
+ ld a, [wBlueStageForceFieldDirection]
+ cp $0 ; up direction
+ jp z, Func_1eff3
+ cp $1 ; right direction
+ jp z, Func_1f0be
+ cp $2 ; down direction
+ jp z, Func_1f057
+ cp $3 ; left direction
+ jp z, Func_1f124
+ ; fall through
+ ; default to upward forcefield
+
+Func_1eff3: ; 0x1eff3
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallXVelocity
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f032
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f032
+ pop hl
+ bit 7, h
+ jr z, .asm_1f03e
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f03e
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f057: ; 0x1f057
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallXVelocity
+ bit 2, l
+ ret nz
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ sub c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ sbc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f099
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f099
+ pop hl
+ bit 7, h
+ jr z, .asm_1f0a5
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f0a5
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f0be: ; 0x1f0be
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallYVelocity
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc hl
+ push bc
+ dec de
+ dec de
+ dec de
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ sub c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ sbc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f0ff
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f0ff
+ pop hl
+ bit 7, h
+ jr z, .asm_1f10b
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f10b
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f124: ; 0x1f124
+ ld bc, BallPhysicsData_ec000
+ add hl, bc
+ ld de, wBallYVelocity
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ sub c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ sbc b
+ ld [de], a
+ inc hl
+ push bc
+ dec de
+ dec de
+ dec de
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_ec000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1f165
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1f165
+ pop hl
+ bit 7, h
+ jr z, .asm_1f171
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1f171
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+Func_1f18a: ; 0x1f18a
+ ld a, [wd640]
+ cp $0
+ jr z, .asm_1f1b4
+ ld a, [wBlueStageForceFieldDirection]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1f1b5
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1f1a4
+ ld hl, TileDataPointers_1f201
+.asm_1f1a4
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1f1b5)
+ call Func_10aa
+ ld a, $0
+ ld [wd640], a
+.asm_1f1b4
+ ret
+
+TileDataPointers_1f1b5:
+ dw TileData_1f1bd
+ dw TileData_1f1c0
+ dw TileData_1f1c3
+ dw TileData_1f1c6
+
+TileData_1f1bd: ; 0x1f1bd
+ db $01
+ dw TileData_1f1c9
+
+TileData_1f1c0: ; 0x1f1c0
+ db $01
+ dw TileData_1f1d7
+
+TileData_1f1c3: ; 0x1f1c3
+ db $01
+ dw TileData_1f1e5
+
+TileData_1f1c6: ; 0x1f1c6
+ db $01
+ dw TileData_1f1f3
+
+TileData_1f1c9: ; 0x1f1c9
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $70, $71
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $72, $73
+
+ db $00 ; terminator
+
+TileData_1f1d7: ; 0x1f1d7
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $74, $75
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $76, $77
+
+ db $00 ; terminator
+
+TileData_1f1e5: ; 0x1f1e5
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $78, $79
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $7A, $7B
+
+ db $00 ; terminator
+
+TileData_1f1f3: ; 0x1f1f3
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $189
+ db $7C, $7D
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $7E, $7F
+
+ db $00 ; terminator
+
+TileDataPointers_1f201:
+ dw TileData_1f209
+ dw TileData_1f20c
+ dw TileData_1f20f
+ dw TileData_1f212
+
+TileData_1f209: ; 0x1f209
+ db $01
+ dw TileData_1f215
+
+TileData_1f20c: ; 0x1f20c
+ db $01
+ dw TileData_1f228
+
+TileData_1f20f: ; 0x1f20f
+ db $01
+ dw TileData_1f23b
+
+TileData_1f212: ; 0x1f212
+ db $01
+ dw TileData_1f24e
+
+TileData_1f215: ; 0x1f215
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $6C, $6D
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $6E, $6F
+
+ db $02
+ dw vBGMap + $1c9
+ db $70, $71
+
+ db $00 ; terminator
+
+TileData_1f228: ; 0x1f228
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $72, $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $73, $74
+
+ db $02
+ dw vBGMap + $1c9
+ db $75, $80
+
+ db $00 ; terminator
+
+TileData_1f23b: ; 0x1f23b
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $76, $77
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $78, $79
+
+ db $02
+ dw vBGMap + $1c9
+ db $7A, $7B
+
+ db $00 ; terminator
+
+TileData_1f24e: ; 0x1f24e
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $02 ; number of otiles
+ dw vBGMap + $189
+ db $80, $7C
+
+ db $02 ; number of tiles
+ dw vBGMap + $1a9
+ db $7D, $7E
+
+ db $02
+ dw vBGMap + $1c9
+ db $80, $7F
+
+ db $00 ; terminator
+
+Func_1f261: ; 0x1f261
+ call Func_1f27b
+ ret nc
+ ; fall through
+
+Func_1f265: ; 0x1f265
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1f2b9
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, $7
+ ld de, LoadTileLists
+ call Func_10c5
+ ret
+
+Func_1f27b: ; 0x1f27b
+ ld a, [wd624]
+ ld hl, wd625
+ cp [hl]
+ ret z
+ ld a, [wd626]
+ dec a
+ ld [wd626], a
+ jr nz, .asm_1f2a5
+ ld a, [wd625]
+ ld [wd624], a
+ cp $3
+ jr c, .asm_1f2a0
+ ld a, $1
+ ld [wd609], a
+ ld a, $3
+ ld [wd607], a
+.asm_1f2a0
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_1f2a5
+ and $7
+ ret nz
+ ld a, [wd626]
+ bit 3, a
+ jr nz, .asm_1f2b4
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_1f2b4
+ ld a, [wd625]
+ scf
+ ret
+
+TileDataPointers_1f2b9:
+ dw TileData_1f2c1
+ dw TileData_1f2cc
+ dw TileData_1f2d7
+ dw TileData_1f2e2
+
+TileData_1f2c1: ; 0x1f2c1
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $B0, $B1, $B0, $B1, $B0, $B1
+
+ db $00 ; terminator
+
+TileData_1f2cc: ; 0x1f2cc
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $AE, $AF, $B0, $B1, $B0, $B1
+
+ db $00 ; terminator
+
+TileData_1f2d7: ; 0x1f2d7
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $AE, $AF, $AE, $AF, $B0, $B1
+
+ db $00 ; terminator
+
+TileData_1f2e2: ; 0x1f2e2
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw vBGMap + $107
+ db $AE, $AF, $AE, $AF, $AE, $AF
+
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm new file mode 100755 index 0000000..7abab10 --- /dev/null +++ b/engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm @@ -0,0 +1,783 @@ +ResolveDiglettBonusGameObjectCollisions: ; 0x19b88
+ call Func_19c52
+ call Func_1aad4
+ call Func_19b92
+ ret
+
+Func_19b92: ; 0x19b92
+ ld a, [wd73a]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd73a], a
+ xor a
+ ld [wc853], a
+ ld [wc873], a
+ ld [wc893], a
+ ld a, $5
+ ld [wc872], a
+ ld a, $7
+ ld [wc892], a
+ call Func_19bbd
+ ret
+
+Func_19bbd: ; 0x19bbd
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_19bda
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_19bd0
+ ld hl, Data_19c16
+.asm_19bd0
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(Data_19bda)
+ call Func_10aa
+ ret
+
+Data_19bda:
+ dw Data_19bde
+ dw Data_19be1
+
+Data_19bde: ; 0x19bde
+ dbw $1, TileListData_19be4
+
+Data_19be1: ; 0x19be1
+ dbw $1, TileListData_19bfd
+
+TileListData_19be4: ; 0x19be4
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $4E, $4F
+ db $02
+ dw vBGMap + $133
+ db $80, $4D
+ db $03
+ dw vBGMap + $152
+ db $80, $4B, $4C
+ db $02
+ dw vBGMap + $172
+ db $49, $4A
+ db $00 ; terminator
+
+TileListData_19bfd: ; 0x19bfd
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $1D, $FB
+ db $02
+ dw vBGMap + $133
+ db $1B, $FA
+ db $03
+ dw vBGMap + $152
+ db $18, $19, $FB
+ db $02
+ dw vBGMap + $172
+ db $14, $15
+ db $00 ; terminator
+
+Data_19c16:
+ dw Data_19c1a
+ dw Data_19c1d
+
+Data_19c1a: ; 0x19c1a
+ dbw $1, Data_19c20
+
+Data_19c1d: ; 0x19c1d
+ dbw $1, Data_19c39
+
+Data_19c20: ; 0x19c20
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $4E, $4F
+ db $02
+ dw vBGMap + $133
+ db $80, $4D
+ db $03
+ dw vBGMap + $152
+ db $80, $4B, $4C
+ db $02
+ dw vBGMap + $172
+ db $49, $4A
+ db $00 ; terminator
+
+Data_19c39: ; 0x19c39
+ dw LoadTileLists
+ db $09
+ db $02
+ dw vBGMap + $113
+ db $1D, $FB
+ db $02
+ dw vBGMap + $133
+ db $1B, $FA
+ db $03
+ dw vBGMap + $152
+ db $18, $19, $FB
+ db $02
+ dw vBGMap + $172
+ db $14, $15
+ db $00 ; terminator
+
+Func_19c52: ; 0x19c52
+ ld a, [wd73b]
+ and a
+ jr z, .asm_19cc8
+ xor a
+ ld [wd73b], a
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ lb de, $00, $35
+ call PlaySoundEffect
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wd73c]
+ sub $1
+ ld c, a
+ ld b, $0
+ ld hl, wDiglettStates
+ add hl, bc
+ ld a, [hl]
+ cp $6
+ jr nc, .asm_19cc8
+ ld a, $8
+ ld [hl], a
+ call Func_19da8
+ call Func_19df0
+ ld hl, wDiglettStates
+ ld bc, NUM_DIGLETTS << 8
+ xor a
+.asm_19ca0
+ ld a, [hli]
+ and a
+ jr z, .asm_19ca8
+ cp $6
+ jr c, .asm_19ca9
+.asm_19ca8
+ inc c
+.asm_19ca9
+ dec b
+ jr nz, .asm_19ca0
+ ld a, c
+ cp NUM_DIGLETTS
+ jr nz, .asm_19cc8
+ ld hl, AnimationData_1ac75
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wDugrioState], a
+ call Func_1ac2c
+ ld de, $0002
+ call PlaySong
+.asm_19cc8
+ call Func_19cdd
+ ld a, [wd765]
+ and a
+ ret nz
+ ld a, $1
+ ld [wd765], a
+ ld a, [wDugrioState]
+ and a
+ call nz, Func_1ac2c
+ ret
+
+Func_19cdd: ; 0x19cdd
+ ld a, [wDiglettsInitializedFlag]
+ and a
+ jr nz, .alreadyInitializedDigletts
+ ld a, [wDiglettInitDelayCounter]
+ add DIGLETT_INITIALIZE_DELAY
+ ld [wDiglettInitDelayCounter], a
+ ret nc
+ ld hl, DiglettInitializeOrder
+ ld a, [wCurrentDiglett]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld b, $1
+.asm_19cf8
+ push bc
+ ld a, [hli]
+ bit 7, a
+ jr z, .asm_19d02
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+.asm_19d02
+ push hl
+ ld c, a
+ ld b, $0
+ ld hl, wDiglettStates
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_19d29
+ dec a
+ jr nz, .asm_19d21
+ ; pick a random starting state for the diglett that isn't the "hiding" state
+ call GenRandom
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+ call Func_19dcd
+ jr .asm_19d29
+
+.asm_19d21
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+.asm_19d29
+ pop hl
+ pop bc
+ dec b
+ jr nz, .asm_19cf8
+ ld hl, wDiglettsInitializedFlag
+ ld a, [wCurrentDiglett]
+ add $1
+ cp NUM_DIGLETTS
+ jr c, .notDoneInitializingDigletts
+ set 0, [hl]
+ sub NUM_DIGLETTS
+.notDoneInitializingDigletts
+ ld [wCurrentDiglett], a
+ ret
+
+.alreadyInitializedDigletts
+ ld hl, DiglettUpdateOrder
+ ld a, [wCurrentDiglett]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld b, $4 ; update 4 digletts
+.updateDiglettLoop
+ push bc
+ ld a, [hli]
+ bit 7, a
+ jr z, .asm_19d58
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+.asm_19d58
+ push hl
+ ld c, a
+ ld b, $0
+ ld hl, wDiglettStates
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_19d8f
+ dec a
+ jr nz, .asm_19d77
+ call GenRandom
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+ call Func_19dcd
+ jr .asm_19d8f
+
+.asm_19d77
+ cp $5
+ jr c, .incrementDiglettState
+ ld [hl], a
+ jr nz, .asm_19d8f
+ xor a
+ ld [hl], a
+ ld a, $1
+ call Func_19da8
+ jr .asm_19d8f
+
+.incrementDiglettState
+ and $3
+ add $2
+ ld [hl], a
+ call Func_19da8
+.asm_19d8f
+ pop hl
+ pop bc
+ dec b
+ jr nz, .updateDiglettLoop
+ ld hl, wDiglettsInitializedFlag
+ ld a, [wCurrentDiglett]
+ add $4
+ cp NUM_DIGLETTS
+ jr c, .asm_19da4
+ set 0, [hl]
+ sub NUM_DIGLETTS
+.asm_19da4
+ ld [wCurrentDiglett], a
+ ret
+
+Func_19da8: ; 0x19da8
+; input: a = diglett state
+; c = diglett index
+ cp $6
+ jr c, .asm_19dae
+ ld a, $6 ; "getting hit" state
+.asm_19dae
+ push bc
+ ld b, a
+ sla c
+ ld a, c
+ sla c
+ add c
+ add b ; a = (index * 6) + state
+ dec a
+ ld c, a
+ ld b, $0 ; bc = (index * 6) + state - 1
+ sla c
+ rl b ; bc = 2 * ((index * 6) + state - 1)
+ ld hl, DiglettTileDataPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(DiglettTileDataPointers)
+ call Func_10aa
+ pop bc
+ ret
+
+Func_19dcd: ; 0x19dcd
+ sla c
+ ld a, c
+ sla c
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, Data_19e13
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld a, e
+ add $1f
+ ld e, a
+ jr nc, .asm_19dea
+ inc d
+.asm_19dea
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ret
+
+Func_19df0: ; 0x19df0
+ sla c
+ ld a, c
+ sla c
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, Data_19e13
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, $2
+ ld [de], a
+ inc de
+ ld [de], a
+ ld a, e
+ add $1f
+ ld e, a
+ jr nc, .asm_19e0d
+ inc d
+.asm_19e0d
+ ld a, $2
+ ld [de], a
+ inc de
+ ld [de], a
+ ret
+
+Data_19e13:
+ dw wc7a1
+ db $19, $19, $1A, $1B
+
+ dw wc7e1
+ db $1C, $1C, $1D, $1E
+
+ dw wc821
+ db $1F, $1F, $20, $21
+
+ dw wc7c3
+ db $22, $22, $23, $24
+
+ dw wc803
+ db $25, $25, $26, $27
+
+ dw wc843
+ db $28, $28, $29, $2A
+
+ dw wc7a5
+ db $2B, $2B, $2C, $2D
+
+ dw wc7e5
+ db $2E, $2E, $2F, $30
+
+ dw wc825
+ db $31, $31, $32, $33
+
+ dw wc865
+ db $34, $34, $35, $36
+
+ dw wc7c7
+ db $37, $37, $38, $39
+
+ dw wc807
+ db $3A, $3A, $3B, $3C
+
+ dw wc847
+ db $3D, $3D, $3E, $3F
+
+ dw wc887
+ db $40, $40, $41, $42
+
+ dw wc7e9
+ db $43, $43, $44, $45
+
+ dw wc829
+ db $46, $46, $47, $48
+
+ dw wc869
+ db $49, $49, $4A, $4B
+
+ dw wc7cb
+ db $19, $19, $1A, $1B
+
+ dw wc80b
+ db $1C, $1C, $1D, $1E
+
+ dw wc84b
+ db $1F, $1F, $20, $21
+
+ dw wc88b
+ db $22, $22, $23, $24
+
+ dw wc7ad
+ db $25, $25, $26, $27
+
+ dw wc7ed
+ db $28, $28, $29, $2A
+
+ dw wc82d
+ db $2B, $2B, $2C, $2D
+
+ dw wc86d
+ db $2E, $2E, $2F, $30
+
+ dw wc7cf
+ db $31, $31, $32, $33
+
+ dw wc80f
+ db $34, $34, $35, $36
+
+ dw wc84f
+ db $37, $37, $38, $39
+
+ dw wc7b1
+ db $3A, $3A, $3B, $3C
+
+ dw wc7f1
+ db $3D, $3D, $3E, $3F
+
+ dw wc831
+ db $40, $40, $41, $42
+
+ ; unused pointers?
+ dw DiglettInitializeOrder
+ dw DiglettUpdateOrder
+
+INCLUDE "data/diglett_stage/diglett_stage_animation_data.asm"
+
+Func_1aad4: ; 0x1aad4
+ ld a, [wd75f]
+ and a
+ jr z, .asm_1ab2c
+ xor a
+ ld [wd75f], a
+ ld a, [wDugrioState]
+ bit 0, a
+ jr z, .asm_1ab2c
+ cp $7
+ jr z, .asm_1ab2c
+ inc a
+ ld [wDugrioState], a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_1ac62
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueue
+ lb de, $00, $36
+ call PlaySoundEffect
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+.asm_1ab2c
+ call Func_1ab30
+ ret
+
+Func_1ab30: ; 0x1ab30
+ ld a, [wDugrioState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_1ac62
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wDugtrioAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wDugrioState]
+ and a
+ ret z
+ cp $1
+ jr nz, .asm_1ab64
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $3
+ ret nz
+ ld hl, AnimationData_1ac75
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wDugrioState], a
+ ret
+
+.asm_1ab64
+ cp $2
+ jr nz, .asm_1ab7d
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, AnimationData_1ac7f
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $3
+ ld [wDugrioState], a
+ ret
+
+.asm_1ab7d
+ cp $3
+ jr nz, .asm_1ab96
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $3
+ ret nz
+ ld hl, AnimationData_1ac7f
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $3
+ ld [wDugrioState], a
+ ret
+
+.asm_1ab96
+ cp $4
+ jr nz, .asm_1abaf
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, AnimationData_1ac89
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $5
+ ld [wDugrioState], a
+ ret
+
+.asm_1abaf
+ cp $5
+ jr nz, .asm_1abc8
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $3
+ ret nz
+ ld hl, AnimationData_1ac89
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $5
+ ld [wDugrioState], a
+ ret
+
+.asm_1abc8
+ cp $6
+ jr nz, .asm_1abe1
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, AnimationData_1ac93
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $7
+ ld [wDugrioState], a
+ ret
+
+.asm_1abe1
+ cp $7
+ ret nz
+ ld a, [wDugtrioAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_1abf2
+ ld de, $0000
+ call PlaySong
+ ret
+
+.asm_1abf2
+ cp $2
+ ret nz
+ ld hl, AnimationData_1ac72
+ ld de, wDugtrioAnimationFrameCounter
+ call CopyHLToDE
+ xor a
+ ld [wDugrioState], a
+ ld [wd498], a
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, DiglettStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ ld hl, Data_1ac56
+ jr asm_1ac2f
+
+Func_1ac2c: ; 0x1ac2c
+ ld hl, Data_1ac4a
+asm_1ac2f:
+ ld de, wc768
+ ld b, $3
+.asm_1ac34
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld a, e
+ add $1d
+ ld e, a
+ jr nc, .asm_1ac46
+ inc d
+.asm_1ac46
+ dec b
+ jr nz, .asm_1ac34
+ ret
+
+Data_1ac4a:
+ db $00, $00, $00, $00
+ db $14, $14, $14, $14
+ db $15, $16, $17, $18
+
+Data_1ac56:
+ db $50, $02, $02, $51
+ db $02, $02, $02, $02
+ db $02, $02, $02, $02
+
+AnimationDataPointers_1ac62: ; 0x1ac62
+ dw AnimationData_1ac72
+ dw AnimationData_1ac75
+ dw AnimationData_1ac7c
+ dw AnimationData_1ac7f
+ dw AnimationData_1ac86
+ dw AnimationData_1ac89
+ dw AnimationData_1ac90
+ dw AnimationData_1ac93
+
+AnimationData_1ac72: ; 0x1ac72
+; Each entry is [duration][OAM id]
+ db $01, $0C
+ db $00 ; terminator
+
+AnimationData_1ac75: ; 0x1ac75
+; Each entry is [duration][OAM id]
+ db $0E, $00
+ db $0E, $01
+ db $0E, $02
+ db $00 ; terminator
+
+AnimationData_1ac7c: ; 0x1ac7c
+; Each entry is [duration][OAM id]
+ db $0D, $03
+ db $00 ; terminator
+
+AnimationData_1ac7f: ; 0x1ac7f
+; Each entry is [duration][OAM id]
+ db $0E, $04
+ db $0E, $05
+ db $0E, $06
+ db $00
+
+AnimationData_1ac86: ; 0x1ac86
+; Each entry is [duration][OAM id]
+ db $0D, $07
+ db $00 ; terminator
+
+AnimationData_1ac89: ; 0x1ac89
+; Each entry is [duration][OAM id]
+ db $0E, $08
+ db $0E, $09
+ db $0E, $0A
+ db $00
+
+AnimationData_1ac90: ; 0x1ac90
+; Each entry is [duration][OAM id]
+ db $0D, $0B
+ db $00 ; terminator
+
+AnimationData_1ac93: ; 0x1ac93
+; Each entry is [duration][OAM id]
+ db $01, $0D
+ db $40, $0D
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm new file mode 100755 index 0000000..5d37c22 --- /dev/null +++ b/engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm @@ -0,0 +1,1445 @@ +ResolveGengarBonusGameObjectCollisions: ; 0x18377
+ call Func_18464
+ call Func_1860b
+ call Func_187b1
+ call Func_18d34
+ call Func_183b7
+ callba Func_107f8
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, [wd6a2]
+ cp $5
+ ret nc
+ ld a, $1
+ ld [wd6a8], a
+ ret
+
+Func_183b7: ; 0x183b7
+ ld a, [wd653]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd653], a
+ callba LoadStageCollisionAttributes
+ call Func_183db
+ call Func_18d91
+ ret
+
+Func_183db: ; 0x183db
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_183f8
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_183ee
+ ld hl, TileDataPointers_1842e
+.asm_183ee
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, BANK(TileDataPointers_183f8)
+ call Func_10aa
+ ret
+
+TileDataPointers_183f8:
+ dw TileData_183fc
+ dw TileData_183ff
+
+TileData_183fc: ; 0x183fc
+ db $01
+ dw TileData_18402
+
+TileData_183ff: ; 0x183ff
+ db $01
+ dw TileData_18418
+
+TileData_18402: ; 0x18402
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $D4
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $D5, $D6
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $D9, $D7
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $D8
+
+ db $00 ; terminator
+
+TileData_18418: ; 0x18418
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $12
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $0C, $0D
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $07, $08
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $03
+
+ db $00 ; terminator
+
+TileDataPointers_1842e:
+ dw TileData_18432
+ dw TileData_18435
+
+TileData_18432: ; 0x18432
+ db $01
+ dw TileData_18438
+
+TileData_18435: ; 0x18435
+ db $01
+ dw TileData_1844e
+
+TileData_18438: ; 0x18438
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $D4
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $D5, $D6
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $D9, $D7
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $D8
+
+ db $00 ; terminator
+
+TileData_1844e: ; 0x1844e
+ dw LoadTileLists
+ db $06 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $21
+
+ db $02 ; number of tiles
+ dw vBGMap + $132
+ db $15, $16
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $0A, $0B
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $03
+
+ db $00 ; terminator
+
+Func_18464: ; 0x18464
+ ld a, [wd659]
+ and a
+ ret z
+ ld a, [wd657]
+ and a
+ jr z, .asm_184d5
+ xor a
+ ld [wd657], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_184d5
+ ld a, [wd658]
+ sub $5
+ ld c, a
+ sla a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd65d
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jr nz, .asm_184d5
+ push de
+ dec de
+ dec de
+ dec de
+ ld hl, AnimationData_185e6
+ call CopyHLToDE
+ pop de
+ ld a, $1
+ ld [de], a
+ ld a, [wd67b]
+ inc a
+ ld [wd67b], a
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $2c
+ call PlaySoundEffect
+.asm_184d5
+ ld bc, $0830
+ ld de, wd65d
+ ld hl, wd675
+ call Func_1850c
+ ld bc, $5078
+ ld de, wd666
+ ld hl, wd677
+ call Func_1850c
+ ld bc, $3050
+ ld de, wd66f
+ ld hl, wd679
+ call Func_1850c
+ ld de, wd65d
+ call Func_18562
+ ld de, wd666
+ call Func_18562
+ ld de, wd66f
+ call Func_18562
+ ret
+
+Func_1850c: ; 0x1850c
+ ld a, [de]
+ and a
+ ret nz
+ inc de
+ push hl
+ ld a, [hli]
+ push af
+ push bc
+ ld a, [hl]
+ inc a
+ and $1f
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ ld hl, GastlyData_18542
+ add hl, bc
+ pop bc
+ pop af
+ and a
+ jr nz, .asm_18534
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ adc $0
+ ld [de], a
+ pop hl
+ cp c
+ ret c
+ ld a, $1
+ ld [hl], a
+ ret
+
+.asm_18534
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ sbc $0
+ ld [de], a
+ pop hl
+ cp b
+ ret nc
+ xor a
+ ld [hl], a
+ ret
+
+GastlyData_18542: ; 0x18542
+; Might be floating y offsets, not sure at the moment.
+ db $31, $32, $33, $34, $35, $36, $37, $36
+ db $35, $34, $33, $32, $33, $34, $35, $36
+ db $37, $38, $39, $3A, $3B, $3A, $39, $38
+ db $37, $36, $35, $34, $33, $32, $31, $30
+
+Func_18562: ; 0x18562
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_185d9
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ dec de
+ and a
+ jr nz, .asm_1858a
+ ld a, [de]
+ cp $4
+ ret nz
+ ld hl, AnimationData_185dd
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+.asm_1858a
+ cp $1
+ ret nz
+ ld a, [de]
+ cp $12
+ ret nz
+ ld a, [wd67b]
+ cp $a
+ jr nz, .asm_185b1
+ ld a, $1
+ ld [wd67e], a
+ ld [wd687], a
+ xor a
+ ld [wd659], a
+ ld [wd662], a
+ ld [wd66b], a
+ ld de, $0006
+ call PlaySong
+ ret
+
+.asm_185b1
+ ld c, a
+ ld a, [wd65d]
+ and a
+ jr nz, .asm_185b9
+ inc c
+.asm_185b9
+ ld a, [wd666]
+ and a
+ jr nz, .asm_185c0
+ inc c
+.asm_185c0
+ ld a, [wd66f]
+ and a
+ jr nz, .asm_185c7
+ inc c
+.asm_185c7
+ ld a, c
+ cp $a
+ ret nc
+ ld hl, AnimationData_185dd
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ret
+
+AnimationDataPointers_185d9:
+ dw AnimationData_185dd
+ dw AnimationData_185e6
+
+AnimationData_185dd: ; 0x185dd
+; Each entry is [duration][OAM id]
+ db $0D, $01
+ db $0D, $00
+ db $0D, $02
+ db $0D, $00
+ db $00 ; terminator
+
+AnimationData_185e6: ; 0x185e6
+; Each entry is [duration][OAM id]
+ db $05, $03
+ db $04, $03
+ db $04, $04
+ db $04, $03
+ db $04, $04
+ db $03, $03
+ db $03, $04
+ db $03, $03
+ db $03, $04
+ db $02, $03
+ db $02, $04
+ db $02, $03
+ db $02, $04
+ db $01, $03
+ db $01, $04
+ db $01, $03
+ db $01, $04
+ db $80, $04
+ db $00 ; terminator
+
+Func_1860b: ; 0x1860b
+ ld a, [wd67e]
+ and a
+ ret z
+ ld a, [wd67c]
+ and a
+ jr z, .asm_1867c
+ xor a
+ ld [wd67c], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_1867c
+ ld a, [wd67d]
+ sub $8
+ ld c, a
+ sla a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd682
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jr nz, .asm_1867c
+ push de
+ dec de
+ dec de
+ dec de
+ ld hl, AnimationData_1878a
+ call CopyHLToDE
+ pop de
+ ld a, $1
+ ld [de], a
+ ld a, [wd695]
+ inc a
+ ld [wd695], a
+ ld bc, FiveHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $2d
+ call PlaySoundEffect
+.asm_1867c
+ ld bc, $5078
+ ld de, wd682
+ ld hl, wd691
+ call Func_186a1
+ ld bc, $1038
+ ld de, wd68b
+ ld hl, wd693
+ call Func_186a1
+ ld de, wd682
+ call Func_186f7
+ ld de, wd68b
+ call Func_186f7
+ ret
+
+Func_186a1: ; 0x186a1
+ ld a, [de]
+ and a
+ ret nz
+ inc de
+ push hl
+ ld a, [hli]
+ push af
+ push bc
+ ld a, [hl]
+ inc a
+ and $1f
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ ld hl, HaunterData_186d7
+ add hl, bc
+ pop bc
+ pop af
+ and a
+ jr nz, .asm_186c9
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ adc $0
+ ld [de], a
+ pop hl
+ cp c
+ ret c
+ ld a, $1
+ ld [hl], a
+ ret
+
+.asm_186c9
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ sbc $0
+ ld [de], a
+ pop hl
+ cp b
+ ret nc
+ xor a
+ ld [hl], a
+ ret
+
+HaunterData_186d7:
+; Might be floating y offsets, not sure at the moment.
+ db $31, $32, $33, $34, $35, $36, $37, $36
+ db $35, $34, $33, $32, $33, $34, $35, $36
+ db $37, $38, $39, $3A, $3B, $3A, $39, $38
+ db $37, $36, $35, $34, $33, $32, $31, $30
+
+Func_186f7: ; 0x186f7
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_1877d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ dec de
+ and a
+ jr nz, .asm_1871f
+ ld a, [de]
+ cp $4
+ ret nz
+ ld hl, AnimationData_18781
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+.asm_1871f
+ cp $1
+ ret nz
+ ld a, [de]
+ cp $12
+ jr nz, .asm_18761
+ ld a, [wd695]
+ cp $a
+ jr nz, .asm_18740
+ ld a, $1
+ ld [wd656], a
+ call Func_18d72
+ call Func_18d91
+ ld de, $0000
+ call PlaySong
+ ret
+
+.asm_18740
+ ld c, a
+ ld a, [wd682]
+ and a
+ jr nz, .asm_18748
+ inc c
+.asm_18748
+ ld a, [wd68b]
+ and a
+ jr nz, .asm_1874f
+ inc c
+.asm_1874f
+ ld a, c
+ cp $a
+ ret nc
+ ld hl, AnimationData_18781
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ret
+
+.asm_18761
+ cp $13
+ ret nz
+ ld a, [wd695]
+ cp $a
+ ret nz
+ ld a, $1
+ ld [wd698], a
+ xor a
+ ld [wd67e], a
+ ld [wd687], a
+ ld de, GENGAR
+ call PlayCry
+ ret
+
+AnimationDataPointers_1877d:
+ dw AnimationData_18781
+ dw AnimationData_1878a
+
+AnimationData_18781:
+; Each entry is [duration][OAM id]
+ db $0D, $00
+ db $0D, $01
+ db $0D, $02
+ db $0D, $03
+ db $00 ; terminator
+
+AnimationData_1878a:
+; Each entry is [duration][OAM id]
+ db $05, $04
+ db $04, $04
+ db $04, $05
+ db $04, $04
+ db $04, $05
+ db $03, $04
+ db $03, $05
+ db $03, $04
+ db $03, $05
+ db $02, $04
+ db $02, $05
+ db $02, $04
+ db $02, $05
+ db $01, $04
+ db $01, $05
+ db $01, $04
+ db $01, $05
+ db $80, $05
+ db $10, $05
+ db $00 ; terminator
+
+Func_187b1: ; 0x187b1
+ ld a, [wd698]
+ and a
+ ret z
+ ld a, [wd696]
+ and a
+ jp z, .asm_1885d
+ xor a
+ ld [wd696], a
+ ld a, [wd7be]
+ and a
+ jp nz, .asm_1885d
+ ld a, [wd697]
+ sub $a
+ ld c, a
+ sla a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd69c
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jp nz, .asm_1885d
+ push de
+ dec de
+ dec de
+ dec de
+ ld a, [wd6a2]
+ inc a
+ ld [wd6a2], a
+ cp $5
+ jr nc, .asm_18804
+ ld hl, AnimationData_18b2b
+ call CopyHLToDE
+ pop de
+ ld a, $2
+ ld [de], a
+ lb de, $00, $37
+ call PlaySoundEffect
+ jr .asm_18826
+
+.asm_18804
+ ld hl, AnimationData_18b32
+ call CopyHLToDE
+ pop de
+ ld a, $3
+ ld [de], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld de, $0000
+ call PlaySong
+.asm_18826
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueue
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $ff
+ ld [wGengarYPos + 1], a
+.asm_1885d
+ ld a, [wd69c]
+ cp $2
+ jr nc, .asm_18869
+ call Func_18876
+ jr .asm_1886c
+
+.asm_18869
+ call Func_188e1
+.asm_1886c
+ ld de, wd69c
+ call Func_189af
+ call Func_1894c
+ ret
+
+Func_18876: ; 0x18876
+ ld a, [wd6a3]
+ cp $1
+ jr z, .asm_1889b
+ cp $2
+ jr z, .asm_1889b
+ ld a, [wGengarAnimationState]
+ cp $1
+ jr z, .asm_1888c
+ cp $2
+ jr nz, .asm_1889b
+.asm_1888c
+ ld a, $1
+ ld [wd6a4], a
+ ld a, $11
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+.asm_1889b
+ ld a, [wGengarAnimationState]
+ ld hl, wd6a3
+ cp [hl]
+ ret z
+ ld a, [wd69c]
+ and a
+ jr nz, .asm_188da
+ ld a, [wGengarYPos + 1]
+ add $80
+ cp $a0
+ jr nc, .asm_188da
+ ld a, [wGengarAnimationState]
+ and a
+ jr z, .asm_188ca
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $3
+ ld [wGengarYPos + 1], a
+ jr .asm_188da
+
+.asm_188ca
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $1
+ ld [wGengarYPos + 1], a
+.asm_188da
+ ld a, [wGengarAnimationState]
+ ld [wd6a3], a
+ ret
+
+Func_188e1: ; 0x188e1
+ ld a, [wd6a3]
+ cp $1
+ jr z, .asm_18901
+ cp $2
+ jr z, .asm_18901
+ ld a, [wGengarAnimationState]
+ cp $1
+ jr z, .asm_188f7
+ cp $2
+ jr nz, .asm_18901
+.asm_188f7
+ ld a, $1
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+.asm_18901
+ ld a, [wGengarAnimationState]
+ cp $6
+ ret z
+ ld a, [wGengarAnimationState]
+ ld hl, wd6a3
+ cp [hl]
+ ret z
+ ld a, [wd69c]
+ cp $3
+ jr nz, .asm_1891d
+ ld a, [wd69b]
+ cp $9
+ jr c, .asm_18945
+.asm_1891d
+ ld a, [wGengarAnimationState]
+ and a
+ jr z, .asm_18935
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $fd
+ ld [wGengarYPos + 1], a
+ jr .asm_18945
+
+.asm_18935
+ ld a, [wGengarYPos]
+ add $0
+ ld [wGengarYPos], a
+ ld a, [wGengarYPos + 1]
+ adc $ff
+ ld [wGengarYPos + 1], a
+.asm_18945
+ ld a, [wGengarAnimationState]
+ ld [wd6a3], a
+ ret
+
+Func_1894c: ; 0x1894c
+ ld a, [wd6a6]
+ and a
+ jr nz, .asm_1898f
+ ld a, [wd6a4]
+ and a
+ jr z, .asm_1898f
+ ld a, [wd6a5]
+ cp $3
+ jr z, .asm_18980
+ inc a
+ ld [wd6a5], a
+ ld a, [wd548]
+ ld hl, wd549
+ and [hl]
+ jr z, .asm_18973
+ ld a, [wd4b6]
+ inc a
+ ld [wd4b6], a
+.asm_18973
+ ld a, [wd7a0]
+ dec a
+ ld [wd7a0], a
+ ld a, $1
+ ld [wUpperTiltPushing], a
+ ret
+
+.asm_18980
+ lb de, $00, $2b
+ call PlaySoundEffect
+ ld a, $1
+ ld [wd6a6], a
+ xor a
+ ld [wd6a4], a
+.asm_1898f
+ xor a
+ ld [wUpperTiltPushing], a
+ ld a, [wd6a5]
+ and a
+ jr z, .asm_189a5
+ dec a
+ ld [wd6a5], a
+ ld a, [wd7a0]
+ inc a
+ ld [wd7a0], a
+ ret
+
+.asm_189a5
+ ld a, [wd6a4]
+ and a
+ ret nz
+ xor a
+ ld [wd6a6], a
+ ret
+
+Func_189af: ; 0x189af
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, AnimationDataPointers_18a57
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ dec de
+ and a
+ jr nz, .asm_189d7
+ ld a, [de]
+ cp $4
+ ret nz
+ ld hl, AnimationData_18a61
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+.asm_189d7
+ cp $1
+ jr nz, .asm_189ed
+ ld a, [de]
+ cp $60
+ ret nz
+ ld hl, AnimationData_18a61
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ret
+
+.asm_189ed
+ cp $2
+ jr nz, .asm_18a04
+ ld a, [de]
+ cp $3
+ ret nz
+ ld hl, AnimationData_18a6a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ ld a, $1
+ ld [de], a
+ ret
+
+.asm_18a04
+ cp $3
+ jr nz, .asm_18a3c
+ ld a, [de]
+ cp $1
+ jr nz, .asm_18a14
+ lb de, $00, $2e
+ call PlaySoundEffect
+ ret
+
+.asm_18a14
+ cp $fe
+ ret nz
+ ld a, $1
+ ld [wd6a8], a
+ ld a, $1
+ ld [wd498], a
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, GengarStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+ ret
+
+.asm_18a3c
+ cp $4
+ ret nz
+ ld a, [de]
+ cp $2
+ ret nz
+ ld hl, AnimationData_18a61
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ xor a
+ ld [de], a
+ ld de, $0007
+ call PlaySong
+ ret
+
+AnimationDataPointers_18a57:
+ dw AnimationData_18a61
+ dw AnimationData_18a6a
+ dw AnimationData_18b2b
+ dw AnimationData_18b32
+ dw AnimationData_18d2f
+
+AnimationData_18a61:
+; Each entry is [duration][OAM id]
+ db $40, $01
+ db $10, $00
+ db $40, $02
+ db $10, $00
+ db $00 ; terminator
+
+AnimationData_18a6a:
+; Each entry is [duration][OAM id]
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $01, $00
+ db $01, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $01, $03
+ db $01, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $01, $03
+ db $01, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $01, $04
+ db $01, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $00
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $04
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $02, $03
+ db $01, $06
+ db $00 ; terminator
+
+AnimationData_18b2b:
+; Each entry is [duration][OAM id]
+ db $10, $05
+ db $20, $01
+ db $08, $00
+ db $00 ; terminator
+
+AnimationData_18b32:
+; Each entry is [duration][OAM id]
+ db $10, $05
+ db $10, $00
+ db $08, $03
+ db $0C, $04
+ db $0A, $03
+ db $10, $00
+ db $08, $03
+ db $0C, $04
+ db $0A, $03
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $01
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $00
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $04, $02
+ db $04, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $03, $01
+ db $03, $06
+ db $02, $01
+ db $01, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $00
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $03, $02
+ db $03, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $01
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $00
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $02, $02
+ db $02, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $02
+ db $01, $06
+ db $01, $00
+ db $01, $06
+ db $01, $00
+ db $01, $06
+ db $00 ; terminator
+
+AnimationData_18d2f:
+; Each entry is [duration][OAM id]
+ db $40, $00
+ db $40, $00
+ db $00 ; terminator
+
+Func_18d34: ; 0x18d34
+ ld a, [wWhichGravestone]
+ and a
+ jr z, .asm_18d71
+ xor a
+ ld [wWhichGravestone], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_18d71
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueue
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0100
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld de, $002f
+ call Func_4d8
+.asm_18d71
+ ret
diff --git a/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm new file mode 100755 index 0000000..3d911eb --- /dev/null +++ b/engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm @@ -0,0 +1,3380 @@ +ResolveMeowthBonusGameObjectCollisions: ; 0x2442a
+ ld a, [wd710]
+ jr nz, .asm_2443f
+ ld a, [wMeowthStageBonusCounter]
+ dec a
+ dec a
+ cp $fe
+ jr z, .asm_24447
+ cp $ff
+ jr z, .asm_24447
+ ld [wd79a], a
+.asm_2443f
+ ld de, wd79a
+ call Func_24f00
+ jr .asm_2444b
+
+.asm_24447
+ xor a
+ ld [wd79a], a
+.asm_2444b
+ call Func_244f5
+ call Func_245ab
+ call Func_248ac
+ call Func_24d07
+ ld a, [wMeowthStageScore]
+ cp $14
+ jr c, .asm_24498
+ ld a, [wd712]
+ cp $2
+ jr nc, .asm_24498
+ ld a, [wd498]
+ cp $4
+ ret z
+ ld a, $4
+ ld [wd712], a
+ ld [wd498], a
+ ld a, $96
+ ld [wd739], a
+ ld de, $0000
+ call PlaySong
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, MeowthStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+.asm_24498
+ ld a, [wd712]
+ cp $4
+ jr nz, .asm_244b0
+ ld a, [wSFXTimer]
+ and a
+ jr nz, .asm_244b0
+ ld de, $0004
+ call PlaySong
+ ld a, $5
+ ld [wd712], a
+.asm_244b0
+ ld a, [wd712]
+ cp $4
+ jr z, .asm_244c1
+ callba Func_107f8
+.asm_244c1
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, $1
+ ld [wd713], a
+ ld a, $1
+ ld [wd712], a
+ ld hl, MeowthAnimationData5
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $4
+ ld [wd6ec], a
+ ret
+
+Func_244f5: ; 0x244f5
+ ld a, [wd6e6]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd6e6], a
+ callba LoadStageCollisionAttributes
+ call Func_24516
+ ret
+
+Func_24516: ; 0x24516
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_24533
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_24529
+ ld hl, TileDataPointers_2456f
+.asm_24529
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_24533)
+ call Func_10aa
+ ret
+
+TileDataPointers_24533: ; 0x24533
+ dw TileData_24537
+ dw TileData_2453a
+
+TileData_24537: ; 0x24537
+ db $01
+ dw TileData_2453D
+
+TileData_2453a: ; 0x2453a
+ db $01
+ dw TileData_24556
+
+TileData_2453D: ; 0x2453D
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $01, $02
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $FF, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $FD, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $F6, $FA
+
+ db $00 ; terminator
+
+TileData_24556: ; 0x24556
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $E9, $E5
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $E7, $E3
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $12, $13, $E4
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $10, $11
+
+ db $00 ; terminator
+
+TileDataPointers_2456f: ; 0x2456f
+ dw TileData_24573
+ dw TileData_24576
+
+TileData_24573: ; 0x
+ db $01
+ dw TileData_24579
+
+TileData_24576: ; 0x
+ db $01
+ dw TileData_24592
+
+TileData_24579: ; 0x24579
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $F6, $F5
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $F4, $F3
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $F1, $F2
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $EA, $EE
+
+ db $00 ; terminator
+
+TileData_24592: ; 0x24592
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $E5, $E3
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $E4, $E2
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $F0, $EF, $E3
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $ED, $EC
+
+ db $00 ; terminator
+
+Func_245ab: ; 0x245ab
+ ld a, [wd6e7]
+ and a
+ jr z, .asm_24621
+ cp $2
+ jr z, .asm_24621
+ ld a, $1
+ ld [wd6f3], a
+ ld a, [wMeowthYPosition]
+ cp $20
+ jr z, .asm_245c7
+ cp $10
+ jr z, .asm_245cc
+ jr .asm_245cf
+
+.asm_245c7
+ call Func_247d9
+ jr .asm_245cf
+
+.asm_245cc
+ call Func_24c28
+.asm_245cf
+ xor a
+ ld [wd6e7], a
+ ld [wd6f3], a
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ lb de, $00, $33
+ call PlaySoundEffect
+ ld bc, OneThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ xor a
+ ld [wMeowthStageBonusCounter], a
+ ld a, [wd6ec]
+ cp $2
+ jr nc, .asm_24621
+ and a
+ jr nz, .asm_24611
+ ld hl, MeowthAnimationData3
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $2
+ ld [wd6ec], a
+ jr .asm_24651
+
+.asm_24611
+ ld hl, MeowthAnimationData4
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $3
+ ld [wd6ec], a
+ jr .asm_24651
+
+.asm_24621
+ ld a, [wd713]
+ and a
+ jr z, .asm_2462e
+ ld a, $4
+ ld [wd6ec], a
+ jr .asm_24651
+
+.asm_2462e
+ ld a, [wd6ec]
+ cp $2
+ jr nc, .asm_24651
+ ld a, [wd70b]
+ cp $3
+ jr nz, .asm_24651
+ ld a, [wd70c]
+ cp $3
+ jr nz, .asm_24651
+ ld hl, MeowthAnimationData5
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $4
+ ld [wd6ec], a
+.asm_24651
+ ld a, [wd6ec]
+ cp $2
+ call c, Func_24709
+ call Func_2465d
+ ret
+
+Func_2465d: ; 0x2465d
+ ld a, [wd6ec]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, MewothAnimationDataTable ; 0x246e2
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, wMeowthAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wd6ec]
+ and a
+ jr nz, .asm_24689
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $4
+ ret nz
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ret
+
+.asm_24689
+ cp $1
+ jr nz, .asm_2469d
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $4
+ ret nz
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ret
+
+.asm_2469d
+ cp $2
+ jr nz, .asm_246b5
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ xor a
+ ld [wd6ec], a
+ ret
+
+.asm_246b5
+ cp $3
+ jr nz, .asm_246ce
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $1
+ ret nz
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wd6ec], a
+ ret
+
+.asm_246ce
+ cp $4
+ jr nz, .asm_24689
+ ld a, [wMeowthAnimationFrameIndex]
+ cp $2
+ ret nz
+ ld hl, MeowthAnimationData5
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ret
+
+MewothAnimationDataTable: ; 0x246e2
+ dw MeowthAnimationData1
+ dw MeowthAnimationData2
+ dw MeowthAnimationData3
+ dw MeowthAnimationData4
+ dw MeowthAnimationData5
+
+MeowthAnimationData1: ; 0x246ec
+; Each entry is [OAM id][duration]
+ db $10, $00
+ db $0B, $01
+ db $10, $02
+ db $0C, $01
+ db $00 ; terminator
+
+MeowthAnimationData2: ; 0x246f5
+; Each entry is [OAM id][duration]
+ db $10, $04
+ db $0B, $05
+ db $10, $06
+ db $0C, $05
+ db $00 ; terminator
+
+MeowthAnimationData3: ; 0x246fe
+; Each entry is [OAM id][duration]
+ db $16, $03
+ db $00 ; terminator
+
+MeowthAnimationData4: ; 0x24701
+; Each entry is [OAM id][duration]
+ db $16, $07
+ db $00 ; terminator
+
+MeowthAnimationData5: ; 0x24704
+ db $17, $08
+ db $17, $09
+ db $00 ; terminator
+
+Func_24709: ; 0x24709
+ ld a, [wMeowthXPosition]
+ ld hl, wMeowthXMovement
+ add [hl]
+ ld [wMeowthXPosition], a
+ ld hl, wMeowthYMovement
+ ld a, [hl]
+ and a
+ jr z, .asm_24730
+ bit 7, [hl]
+ ld a, [wMeowthYPosition]
+ jr nz, .asm_24724
+ inc a
+ jr .asm_24725
+
+.asm_24724
+ dec a
+.asm_24725
+ cp $21
+ jr z, .asm_24730
+ cp $f
+ jr z, .asm_24730
+ ld [wMeowthYPosition], a
+.asm_24730
+ call Func_24737
+ call Func_2476d
+ ret
+
+Func_24737: ; 0x24737
+ ld a, [wMeowthXPosition]
+ cp $8
+ jr nc, .asm_24742
+ ld a, $1
+ jr .asm_2475a
+
+.asm_24742
+ cp $78
+ jr c, .asm_2474a
+ ld a, $ff
+ jr .asm_2475a
+
+.asm_2474a
+ ld a, [hNumFramesDropped]
+ and $3f
+ ret nz
+ call GenRandom
+ bit 7, a
+ ld a, $1
+ jr z, .asm_2475a
+ ld a, $ff
+.asm_2475a
+ ld [wMeowthXMovement], a
+ bit 7, a
+ ld a, $1
+ jr z, .asm_24764
+ xor a
+.asm_24764
+ ld [wd6ec], a
+ ld a, $2
+ ld [wMeowthAnimationFrameCounter], a
+ ret
+
+Func_2476d: ; 0x2476d
+ ld a, [wMeowthYMovement]
+ and a
+ jr z, .asm_247ab
+ cp $1
+ jr z, .asm_24791
+ ld a, [wMeowthYPosition]
+ cp $10
+ jr nz, .asm_2478d
+ ld a, [wd6e7]
+ cp $2
+ jr nz, .asm_2478a
+ ld a, $1
+ ld [wd6e7], a
+.asm_2478a
+ xor a
+ jr .asm_247c9
+
+.asm_2478d
+ ld a, $ff
+ jr .asm_247c9
+
+.asm_24791
+ ld a, [wMeowthYPosition]
+ cp $20
+ jr nz, .asm_247a7
+ ld a, [wd6e7]
+ cp $2
+ jr nz, .asm_247a4
+ ld a, $1
+ ld [wd6e7], a
+.asm_247a4
+ xor a
+ jr .asm_247c9
+
+.asm_247a7
+ ld a, $1
+ jr .asm_247c9
+
+.asm_247ab
+ ld a, [wd70b]
+ cp $3
+ jr z, .asm_247cd
+ ld a, [wd70c]
+ cp $3
+ jr z, .asm_247d3
+ ld a, [hNumFramesDropped]
+ and $3f
+ ret nz
+ call GenRandom
+ bit 0, a
+ ld a, $1
+ jr z, .asm_247c9
+ ld a, $ff
+.asm_247c9
+ ld [wMeowthYMovement], a
+ ret
+
+.asm_247cd
+ ld a, $ff
+ ld [wMeowthYMovement], a
+ ret
+
+.asm_247d3
+ ld a, $1
+ ld [wMeowthYMovement], a
+ ret
+
+Func_247d9: ; 0x247d9
+ ld a, [wd6f3]
+ and a
+ ret z
+ ld a, [wd71a]
+ cp $c8
+ jr nz, .asm_24823
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd71a], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd727], a
+ ld a, $1
+ ld [wd717], a
+ xor a
+ ld [wd6f3], a
+ ld [wd714], a
+ ld [wd6f5], a
+ ld [wd6f8], a
+ ld [wd6fb], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_2481d
+ ld a, $0
+ ld [wd72a], a
+ jr .asm_24822
+
+.asm_2481d
+ ld a, $1
+ ld [wd72a], a
+.asm_24822
+ ret
+
+.asm_24823
+ ld a, [wd71b]
+ cp $c8
+ jr nz, .asm_24868
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd71b], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd728], a
+ ld a, $1
+ ld [wd718], a
+ xor a
+ ld [wd6f3], a
+ ld [wd715], a
+ ld [wd6f6], a
+ ld [wd6f9], a
+ ld [wd6fc], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24862
+ ld a, $0
+ ld [wd72b], a
+ jr .asm_24867
+
+.asm_24862
+ ld a, $1
+ ld [wd72b], a
+.asm_24867
+ ret
+
+.asm_24868
+ ld a, [wd71c]
+ cp $c8
+ ret nz
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd71c], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd729], a
+ ld a, $1
+ ld [wd719], a
+ xor a
+ ld [wd6f3], a
+ ld [wd716], a
+ ld [wd6f7], a
+ ld [wd6fa], a
+ ld [wd6fd], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_248a6
+ ld a, $0
+ ld [wd72c], a
+ jr .asm_248ab
+
+.asm_248a6
+ ld a, $1
+ ld [wd72c], a
+.asm_248ab
+ ret
+
+Func_248ac: ; 0x248ac
+ ld a, [wd717]
+ cp $1
+ jr nz, .asm_248d3
+ ld a, [wd714]
+ cp $a
+ jr z, .asm_248c4
+ ld a, $0
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_248d3
+
+.asm_248c4
+ ld hl, wd70b
+ inc [hl]
+ ld a, $2
+ ld [wd717], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_248d3
+ ld a, [wd718]
+ cp $1
+ jr nz, .asm_248fa
+ ld a, [wd715]
+ cp $a
+ jr z, .asm_248eb
+ ld a, $1
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_248fa
+
+.asm_248eb
+ ld hl, wd70b
+ inc [hl]
+ ld a, $2
+ ld [wd718], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_248fa
+ ld a, [wd719]
+ cp $1
+ jr nz, .asm_24921
+ ld a, [wd716]
+ cp $a
+ jr z, .asm_24912
+ ld a, $2
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24921
+
+.asm_24912
+ ld hl, wd70b
+ inc [hl]
+ ld a, $2
+ ld [wd719], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24921
+ ld a, [wd717]
+ cp $2
+ jr nz, .asm_2492c
+ ld hl, wd714
+ inc [hl]
+.asm_2492c
+ ld a, [wd718]
+ cp $2
+ jr nz, .asm_24937
+ ld hl, wd715
+ inc [hl]
+.asm_24937
+ ld a, [wd719]
+ cp $2
+ jr nz, .asm_24942
+ ld hl, wd716
+ inc [hl]
+.asm_24942
+ ld a, [wd717]
+ cp $3
+ jr nz, .asm_24968
+ ld a, [wd71a]
+ ld b, a
+ ld a, [wd727]
+ ld c, a
+ ld hl, wd714
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_2495f
+ call Func_24e7f
+ jr .asm_24968
+
+.asm_2495f
+ cp $a
+ jr nz, .asm_24968
+ ld a, $4
+ ld [wd717], a
+.asm_24968
+ ld a, [wd718]
+ cp $3
+ jr nz, .asm_2498e
+ ld a, [wd71b]
+ ld b, a
+ ld a, [wd728]
+ ld c, a
+ ld hl, wd715
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24985
+ call Func_24e7f
+ jr .asm_2498e
+
+.asm_24985
+ cp $a
+ jr nz, .asm_2498e
+ ld a, $4
+ ld [wd718], a
+.asm_2498e
+ ld a, [wd719]
+ cp $3
+ jr nz, .asm_249b4
+ ld a, [wd71c]
+ ld b, a
+ ld a, [wd729]
+ ld c, a
+ ld hl, wd716
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_249ab
+ call Func_24e7f
+ jr .asm_249b4
+
+.asm_249ab
+ cp $a
+ jr nz, .asm_249b4
+ ld a, $4
+ ld [wd719], a
+.asm_249b4
+ ld a, [wd717]
+ cp $4
+ jr nz, .asm_249d0
+ ld a, $c8
+ ld [wd71a], a
+ ld [wd727], a
+ xor a
+ ld [wd717], a
+ ld hl, wd70b
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24a06
+.asm_249d0
+ ld a, [wd718]
+ cp $4
+ jr nz, .asm_249ec
+ ld a, $c8
+ ld [wd71b], a
+ ld [wd728], a
+ xor a
+ ld [wd718], a
+ ld hl, wd70b
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24a06
+.asm_249ec
+ ld a, [wd719]
+ cp $4
+ ret nz
+ ld a, $c8
+ ld [wd71c], a
+ ld [wd729], a
+ xor a
+ ld [wd719], a
+ ld hl, wd70b
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ ret nz
+.asm_24a06
+ ld a, [wd713]
+ and a
+ ret nz
+ ld a, [wMeowthXMovement]
+ cp $ff
+ jr z, .asm_24a21
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wd6ec], a
+ ret
+
+.asm_24a21
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $0
+ ld [wd6ec], a
+ ret
+
+Func_24a30: ; 0x24a30
+ ld a, [wd6f4]
+ ld c, a
+ ld b, $0
+ ld hl, wd6f8
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_24a42
+ call Func_24b41
+ ret
+
+.asm_24a42
+ ld a, [wd6f4]
+ ld c, a
+ ld b, $0
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ bit 2, a
+ jr z, .asm_24a5e
+ bit 1, a
+ jr nz, .asm_24a5e
+ bit 0, a
+ jr nz, .asm_24a5e
+ ld hl, wd714
+ add hl, bc
+ inc [hl]
+.asm_24a5e
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld hl, Data_24af1
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld hl, wd72a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_24a97
+.asm_24a72
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $0
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24af1
+ add hl, de
+ pop af
+ add [hl]
+ cp $8e
+ jr nc, .asm_24a97
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+ jr .asm_24abf
+
+.asm_24a97
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $1
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24af1
+ add hl, de
+ ld a, [hl]
+ ld d, a
+ ld a, $ff
+ sub d
+ inc a
+ ld d, a
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ add d
+ cp $5
+ jr c, .asm_24a72
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+.asm_24abf
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24af1
+ add hl, de
+ inc hl
+ ld a, [hl]
+ ld d, a
+ ld hl, wd727
+ add hl, bc
+ ld a, [hl]
+ add d
+ ld hl, wd727
+ add hl, bc
+ ld [hl], a
+ ld hl, wd6f5
+ add hl, bc
+ inc [hl]
+ inc [hl]
+ ld a, [hl]
+ cp $46
+ jr nz, .asm_24af0
+ ld a, c
+ cp $9
+ jr c, .asm_24aed
+ call Func_2438f
+ ret
+
+.asm_24aed
+ call Func_24319
+.asm_24af0
+ ret
+
+Data_24af1:
+; These are offsets for something in the Meowth stage
+ db 2, -4
+ db 2, -4
+ db 2, -4
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, -2
+ db 2, 0
+ db 2, 0
+ db 2, 0
+ db 2, 0
+ db 2, 2
+ db 2, 2
+ db 2, 2
+ db 2, 2
+ db 2, 2
+ db 2, 3
+ db 2, 4
+ db 2, 4
+ db 2, 4
+ db 2, 4
+ db 2, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 1, 4
+ db 0, 0
+ db 0, 0
+ db 0, 0
+ db 0, 0
+
+Func_24b41: ; 0x24b41
+ ld a, [wd6f4]
+ ld b, $0
+ ld c, a
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ cp $14
+ jp nc, Func_24bf6
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld hl, Data_24c0a
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld hl, wd72a
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_24b8a
+.asm_24b65
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $0
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24c0a
+ add hl, de
+ pop af
+ add [hl]
+ cp $90
+ jr nc, .asm_24b8a
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+ jr .asm_24bb2
+
+.asm_24b8a
+ ld hl, wd72a
+ add hl, bc
+ ld [hl], $1
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24c0a
+ add hl, de
+ ld a, [hl]
+ ld d, a
+ ld a, $ff
+ sub d
+ inc a
+ ld d, a
+ ld hl, wd71a
+ add hl, bc
+ ld a, [hl]
+ add d
+ cp $6
+ jr c, .asm_24b65
+ ld hl, wd71a
+ add hl, bc
+ ld [hl], a
+.asm_24bb2
+ ld hl, wd6f5
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ ld hl, Data_24c0a
+ add hl, de
+ inc hl
+ ld a, [hl]
+ ld d, a
+ ld hl, wd727
+ add hl, bc
+ ld a, [hl]
+ add d
+ ld hl, wd727
+ add hl, bc
+ ld [hl], a
+ ld hl, wd6f5
+ add hl, bc
+ inc [hl]
+ inc [hl]
+ ld a, [hl]
+ cp $12
+ jr nz, .asm_24bf4
+ ld a, c
+ cp $9
+ jr c, .asm_24be1
+ call Func_2438f
+ jr .asm_24be4
+
+.asm_24be1
+ call Func_24319
+.asm_24be4
+ ld a, [wd6f4]
+ ld b, $0
+ ld c, a
+ ld hl, wd6f8
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr nz, .asm_24bf4
+ ld [hl], $1
+.asm_24bf4
+ scf
+ ret
+
+Func_24bf6: ; 0x24bf6
+ ld a, [wd6f4]
+ ld b, $0
+ ld c, a
+ ld hl, wd6f8
+ add hl, bc
+ ld [hl], $0
+ ld hl, wd714
+ add hl, bc
+ ld [hl], $a
+ ccf
+ ret
+
+Data_24c0a:
+; These are offsets for something in the Meowth stage
+ db 2, -2
+ db 2, -1
+ db 2, -1
+ db 2, 0
+ db 2, 0
+ db 2, 0
+ db 2, 1
+ db 2, 1
+ db 2, 2
+ db 2, 4
+ db 1, 4
+ db 0, 0
+ db 0, 0
+ db 0, 0
+ db 0, 0
+
+Func_24c28: ; 0x24c28
+ ld a, [wd6f3]
+ and a
+ ret z
+ ld a, [wd724]
+ cp $c8
+ jr nz, .asm_24c76
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd724], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd731], a
+ ld a, $1
+ ld [wd721], a
+ ld hl, wd70c
+ inc [hl]
+ xor a
+ ld [wd6f3], a
+ ld [wd71e], a
+ ld [wd6ff], a
+ ld [wd702], a
+ ld [wd705], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24c70
+ ld a, $0
+ ld [wd734], a
+ jr .asm_24c75
+
+.asm_24c70
+ ld a, $1
+ ld [wd734], a
+.asm_24c75
+ ret
+
+.asm_24c76
+ ld a, [wd725]
+ cp $c8
+ jr nz, .asm_24cbf
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd725], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd732], a
+ ld a, $1
+ ld [wd722], a
+ ld hl, wd70c
+ inc [hl]
+ xor a
+ ld [wd6f3], a
+ ld [wd71f], a
+ ld [wd700], a
+ ld [wd703], a
+ ld [wd706], a
+ ld a, [wd6f7]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24cb9
+ ld a, $0
+ ld [wd735], a
+ jr .asm_24cbe
+
+.asm_24cb9
+ ld a, $1
+ ld [wd735], a
+.asm_24cbe
+ ret
+
+.asm_24cbf
+ ld a, [wd726]
+ cp $c8
+ ret nz
+ ld a, [wMeowthXPosition]
+ add $8
+ ld [wd726], a
+ ld a, [wMeowthYPosition]
+ add $fb
+ ld [wd733], a
+ ld a, $1
+ ld [wd723], a
+ ld hl, wd70c
+ inc [hl]
+ xor a
+ ld [wd6f3], a
+ ld [wd720], a
+ ld [wd701], a
+ ld [wd704], a
+ ld [wd707], a
+ ld a, [wMeowthXPosition]
+ add $14
+ ld b, a
+ ld a, [wd4b4]
+ cp b
+ jr nc, .asm_24d01
+ ld a, $0
+ ld [wd736], a
+ jr .asm_24d06
+
+.asm_24d01
+ ld a, $1
+ ld [wd736], a
+.asm_24d06
+ ret
+
+Func_24d07: ; 0x24d07
+ ld a, [wd721]
+ cp $1
+ jr nz, .asm_24d2a
+ ld a, [wd71e]
+ cp $a
+ jr z, .asm_24d1f
+ ld a, $a
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24d2a
+
+.asm_24d1f
+ ld a, $2
+ ld [wd721], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24d2a
+ ld a, [wd722]
+ cp $1
+ jr nz, .asm_24d4d
+ ld a, [wd71f]
+ cp $a
+ jr z, .asm_24d42
+ ld a, $b
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24d4d
+
+.asm_24d42
+ ld a, $2
+ ld [wd722], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24d4d
+ ld a, [wd723]
+ cp $1
+ jr nz, .asm_24d70
+ ld a, [wd720]
+ cp $a
+ jr z, .asm_24d65
+ ld a, $c
+ ld [wd6f4], a
+ call Func_24a30
+ jr .asm_24d70
+
+.asm_24d65
+ ld a, $2
+ ld [wd723], a
+ lb de, $00, $34
+ call PlaySoundEffect
+.asm_24d70
+ ld a, [wd721]
+ cp $2
+ jr nz, .asm_24d7b
+ ld hl, wd71e
+ inc [hl]
+.asm_24d7b
+ ld a, [wd722]
+ cp $2
+ jr nz, .asm_24d86
+ ld hl, wd71f
+ inc [hl]
+.asm_24d86
+ ld a, [wd723]
+ cp $2
+ jr nz, .asm_24d91
+ ld hl, wd720
+ inc [hl]
+.asm_24d91
+ ld a, [wd721]
+ cp $3
+ jr nz, .asm_24db7
+ ld a, [wd724]
+ ld b, a
+ ld a, [wd731]
+ ld c, a
+ ld hl, wd71e
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24dae
+ call Func_24e7f
+ jr .asm_24db7
+
+.asm_24dae
+ cp $a
+ jr nz, .asm_24db7
+ ld a, $4
+ ld [wd721], a
+.asm_24db7
+ ld a, [wd722]
+ cp $3
+ jr nz, .asm_24ddd
+ ld a, [wd725]
+ ld b, a
+ ld a, [wd732]
+ ld c, a
+ ld hl, wd71f
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24dd4
+ call Func_24e7f
+ jr .asm_24ddd
+
+.asm_24dd4
+ cp $a
+ jr nz, .asm_24ddd
+ ld a, $4
+ ld [wd722], a
+.asm_24ddd
+ ld a, [wd723]
+ cp $3
+ jr nz, .asm_24e03
+ ld a, [wd726]
+ ld b, a
+ ld a, [wd733]
+ ld c, a
+ ld hl, wd720
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ jr nz, .asm_24dfa
+ call Func_24e7f
+ jr .asm_24e03
+
+.asm_24dfa
+ cp $a
+ jr nz, .asm_24e03
+ ld a, $4
+ ld [wd723], a
+.asm_24e03
+ ld a, [wd721]
+ cp $4
+ jr nz, .asm_24e1f
+ ld a, $c8
+ ld [wd724], a
+ ld [wd731], a
+ xor a
+ ld [wd721], a
+ ld hl, wd70c
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24e55
+.asm_24e1f
+ ld a, [wd722]
+ cp $4
+ jr nz, .asm_24e3b
+ ld a, $c8
+ ld [wd725], a
+ ld [wd732], a
+ xor a
+ ld [wd722], a
+ ld hl, wd70c
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ jr z, .asm_24e55
+.asm_24e3b
+ ld a, [wd723]
+ cp $4
+ ret nz
+ ld a, $c8
+ ld [wd726], a
+ ld [wd733], a
+ xor a
+ ld [wd723], a
+ ld hl, wd70c
+ dec [hl]
+ ld a, [hl]
+ cp $2
+ ret nz
+.asm_24e55
+ ld a, [wd713]
+ and a
+ ret nz
+ ld a, [wMeowthXMovement]
+ cp $ff
+ jr z, .asm_24e70
+ ld hl, MeowthAnimationData2
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $1
+ ld [wd6ec], a
+ ret
+
+.asm_24e70
+ ld hl, MeowthAnimationData1
+ ld de, wMeowthAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $0
+ ld [wd6ec], a
+ ret
+
+Func_24e7f: ; 0x24e7f
+ ld a, b
+ ld [wd79c], a
+ ld a, c
+ ld [wd79e], a
+ ld hl, wMeowthStageBonusCounter
+ inc [hl]
+ ld a, [hl]
+ cp $7 ; maximum bonus
+ jr nz, .asm_24e92
+ xor a
+ ld [hl], a
+.asm_24e92
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ lb de, $00, $32
+ call PlaySoundEffect
+ ld a, [wMeowthStageBonusCounter]
+ dec a
+.asm_24ea6
+ push af
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wMeowthStageScore
+ inc [hl]
+ pop af
+ and a
+ jr z, .asm_24ebf
+ dec a
+ jr .asm_24ea6
+
+.asm_24ebf
+ ld a, [wMeowthStageBonusCounter]
+ dec a
+ dec a
+ cp $fe
+ jr z, .asm_24ed7
+ cp $ff
+ jr z, .asm_24ed7
+ ld [wd79a], a
+ ld de, wd79a
+ call Func_24ee7
+ jr .asm_24ede
+
+.asm_24ed7
+ xor a
+ ld [wd79a], a
+ ld [wd795], a
+.asm_24ede
+ ld a, $1
+ ld [wd64e], a
+ call Func_24fa3
+ ret
+
+Func_24ee7: ; 0x24ee7
+ ld a, $ff
+ ld [wd795], a
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, MeowthStageAnimationDataTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ dec de
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+Func_24f00: ; 0x24f00
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, MeowthStageAnimationDataTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ld a, $1
+ ld [wd710], a
+ ret nc
+ dec de
+ ld a, [de]
+ cp $a
+ ret nz
+ xor a
+ ld [de], a
+ ld [wd79c], a
+ ld [wd79e], a
+ ld [wd795], a
+ xor a
+ ld [wd710], a
+ ret
+
+MeowthStageAnimationDataTable: ; 0x24f30
+ dw MeowthStageAnimationData1
+ dw MeowthStageAnimationData2
+ dw MeowthStageAnimationData3
+ dw MeowthStageAnimationData4
+ dw MeowthStageAnimationData5
+
+MeowthStageAnimationData1: ; 0x24f3a
+; Each entry is [OAM id][duration]
+ db $02, $00
+ db $02, $01
+ db $02, $02
+ db $10, $00
+ db $04, $0F
+ db $04, $00
+ db $04, $0F
+ db $04, $00
+ db $04, $0F
+ db $04, $00
+ db $00 ; terminator
+
+MeowthStageAnimationData2: ; 0x24f4f
+; Each entry is [OAM id][duration]
+ db $02, $03
+ db $02, $04
+ db $02, $05
+ db $10, $03
+ db $04, $0F
+ db $04, $03
+ db $04, $0F
+ db $04, $03
+ db $04, $0F
+ db $04, $03
+ db $00 ; terminator
+
+MeowthStageAnimationData3: ; 0x24f64
+; Each entry is [OAM id][duration]
+ db $02, $06
+ db $02, $07
+ db $02, $08
+ db $10, $06
+ db $04, $0F
+ db $04, $06
+ db $04, $0F
+ db $04, $06
+ db $04, $0F
+ db $04, $06
+ db $00 ; terminator
+
+MeowthStageAnimationData4: ; 0x24f79
+; Each entry is [OAM id][duration]
+ db $02, $09
+ db $02, $0A
+ db $02, $0B
+ db $10, $09
+ db $04, $0F
+ db $04, $09
+ db $04, $0F
+ db $04, $09
+ db $04, $0F
+ db $04, $09
+ db $00 ; terminator
+
+MeowthStageAnimationData5: ; 0x24f8e
+; Each entry is [OAM id][duration]
+ db $02, $0C
+ db $02, $0D
+ db $02, $0E
+ db $10, $0C
+ db $04, $0F
+ db $04, $0C
+ db $04, $0F
+ db $04, $0C
+ db $04, $0F
+ db $04, $0C
+ db $00 ; terminator
+
+Func_24fa3: ; 0x24fa3
+ ld a, [wMeowthStageScore]
+ ld c, a
+ ld b, $0
+.asm_24fa9
+ ld a, c
+ and a
+ jr z, .asm_24fb5
+ ld a, b
+ add $8
+ ld b, a
+ dec c
+ ld a, c
+ jr .asm_24fa9
+
+.asm_24fb5
+ ld a, b
+ and a
+ jr z, .asm_24fbb
+ sub $8
+.asm_24fbb
+ ld [wd652], a
+ ld a, [wMeowthStageBonusCounter]
+ and a
+ jr z, .asm_24fca
+ ld b, a
+ ld a, [wMeowthStageScore]
+ inc a
+ sub b
+.asm_24fca
+ ld [wd651], a
+ ld a, $0
+ ld [wd64e], a
+ ld a, [wMeowthStageScore]
+ and a
+ ret z
+ cp $15
+ jr c, .asm_24fe2
+ ld a, $14
+ ld [wMeowthStageScore], a
+ jr .asm_24fed
+
+.asm_24fe2
+ push af
+ xor a
+ ld [wd650], a
+ ld a, $1
+ ld [wd64e], a
+ pop af
+.asm_24fed
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_25007
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_24ffd
+ ld hl, TileDataPointers_25421
+.asm_24ffd
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_25007)
+ call Func_10aa
+ ret
+
+TileDataPointers_25007:
+ dw TileData_25031
+ dw TileData_25034
+ dw TileData_25037
+ dw TileData_2503a
+ dw TileData_2503d
+ dw TileData_25040
+ dw TileData_25043
+ dw TileData_25046
+ dw TileData_25049
+ dw TileData_2504c
+ dw TileData_2504f
+ dw TileData_25052
+ dw TileData_25055
+ dw TileData_25058
+ dw TileData_2505b
+ dw TileData_2505e
+ dw TileData_25061
+ dw TileData_25064
+ dw TileData_25067
+ dw TileData_2506a
+ dw TileData_2506d
+
+TileData_25031: ; 0x25031
+ db $01
+ dw TileData_25070
+
+TileData_25034: ; 0x25034
+ db $01
+ dw TileData_2509d
+
+TileData_25037: ; 0x25037
+ db $01
+ dw TileData_250ca
+
+TileData_2503a: ; 0x2503a
+ db $01
+ dw TileData_250f7
+
+TileData_2503d: ; 0x2503d
+ db $01
+ dw TileData_25124
+
+TileData_25040: ; 0x25040
+ db $01
+ dw TileData_25151
+
+TileData_25043: ; 0x25043
+ db $01
+ dw TileData_2517e
+
+TileData_25046: ; 0x25046
+ db $01
+ dw TileData_251ab
+
+TileData_25049: ; 0x25049
+ db $01
+ dw TileData_251d8
+
+TileData_2504c: ; 0x2504c
+ db $01
+ dw TileData_25205
+
+TileData_2504f: ; 0x2504f
+ db $01
+ dw TileData_25232
+
+TileData_25052: ; 0x25052
+ db $01
+ dw TileData_2525f
+
+TileData_25055: ; 0x25055
+ db $01
+ dw TileData_2528c
+
+TileData_25058: ; 0x25058
+ db $01
+ dw TileData_252b9
+
+TileData_2505b: ; 0x2505b
+ db $01
+ dw TileData_252e6
+
+TileData_2505e: ; 0x2505e
+ db $01
+ dw TileData_25313
+
+TileData_25061: ; 0x25061
+ db $01
+ dw TileData_25340
+
+TileData_25064: ; 0x25064
+ db $01
+ dw TileData_2536d
+
+TileData_25067: ; 0x25067
+ db $01
+ dw TileData_2539a
+
+TileData_2506a: ; 0x2506a
+ db $01
+ dw TileData_253c7
+
+TileData_2506d: ; 0x2506d
+ db $01
+ dw TileData_253f4
+
+TileData_25070: ; 0x25070
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $E4, $0C, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2509d: ; 0x2509d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $0C, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_250ca: ; 0x250ca
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_250f7: ; 0x250f7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25124: ; 0x25124
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25151: ; 0x25151
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2517e: ; 0x2517e
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_251ab: ; 0x251ab
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_251d8: ; 0x251d8
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25205: ; 0x25205
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $0E, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25232: ; 0x25232
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $0D, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2525f: ; 0x2525f
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $0E
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2528c: ; 0x2528c
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $0D, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_252b9: ; 0x252b9
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_252e6: ; 0x252e6
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25313: ; 0x25313
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $0E, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_25340: ; 0x25340
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $0D, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2536d: ; 0x2536d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $0E
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_2539a: ; 0x2539a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $16
+
+ db $02
+ dw vBGMap + $12
+ db $0F, $E4
+
+ db $00 ; terminator
+
+TileData_253c7: ; 0x253c7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $16
+
+ db $02
+ dw vBGMap + $12
+ db $17, $E4
+
+ db $00 ; terminator
+
+TileData_253f4: ; 0x253f4
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $14, $15, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $16, $16, $16
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $16, $16, $16
+
+ db $02
+ dw vBGMap + $12
+ db $17, $18
+
+ db $00 ; terminator
+
+TileDataPointers_25421: ; 0x25421
+ dw TileData_2544b
+ dw TileData_2544e
+ dw TileData_25451
+ dw TileData_25454
+ dw TileData_25457
+ dw TileData_2545a
+ dw TileData_2545d
+ dw TileData_25460
+ dw TileData_25463
+ dw TileData_25466
+ dw TileData_25469
+ dw TileData_2546c
+ dw TileData_2546f
+ dw TileData_25472
+ dw TileData_25475
+ dw TileData_25478
+ dw TileData_2547b
+ dw TileData_2547e
+ dw TileData_25481
+ dw TileData_25484
+ dw TileData_25487
+
+TileData_2544b: ; 0x2544b
+ db $01
+ dw TileData_2548a
+
+TileData_2544e: ; 0x2544e
+ db $01
+ dw TileData_254b7
+
+TileData_25451: ; 0x25451
+ db $01
+ dw TileData_254e4
+
+TileData_25454: ; 0x25454
+ db $01
+ dw TileData_25511
+
+TileData_25457: ; 0x25457
+ db $01
+ dw TileData_2553e
+
+TileData_2545a: ; 0x2545a
+ db $01
+ dw TileData_2556b
+
+TileData_2545d: ; 0x2545d
+ db $01
+ dw TileData_25598
+
+TileData_25460: ; 0x25460
+ db $01
+ dw TileData_255c5
+
+TileData_25463: ; 0x25463
+ db $01
+ dw TileData_255f2
+
+TileData_25466: ; 0x25466
+ db $01
+ dw TileData_2561f
+
+TileData_25469: ; 0x25469
+ db $01
+ dw TileData_2564c
+
+TileData_2546c: ; 0x2546c
+ db $01
+ dw TileData_25679
+
+TileData_2546f: ; 0x2546f
+ db $01
+ dw TileData_256a6
+
+TileData_25472: ; 0x25472
+ db $01
+ dw TileData_256d3
+
+TileData_25475: ; 0x25475
+ db $01
+ dw TileData_25700
+
+TileData_25478: ; 0x25478
+ db $01
+ dw TileData_2572d
+
+TileData_2547b: ; 0x2547b
+ db $01
+ dw TileData_2575a
+
+TileData_2547e: ; 0x2547e
+ db $01
+ dw TileData_25787
+
+TileData_25481: ; 0x25481
+ db $01
+ dw TileData_257b4
+
+TileData_25484: ; 0x25484
+ db $01
+ dw TileData_257e1
+
+TileData_25487: ; 0x25487
+ db $01
+ dw TileData_2580e
+
+TileData_2548a: ; 0x2548a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $E3, $FD, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_254b7: ; 0x254b7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $FD, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_254e4: ; 0x254e4
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25511: ; 0x25511
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2553e: ; 0x2553e
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2556b: ; 0x2556b
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25598: ; 0x25598
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_255c5: ; 0x255c5
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_255f2: ; 0x255f2
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2561f: ; 0x2561f
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2564c: ; 0x2564c
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25679: ; 0x25679
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_256a6: ; 0x256a6
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $FE, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_256d3: ; 0x256d3
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $FE, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25700: ; 0x25700
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $FE
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2572d: ; 0x2572d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $FE, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_2575a: ; 0x2575a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $FE, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_25787: ; 0x25787
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_257b4: ; 0x257b4
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $00
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $FD, $E3
+
+ db $00 ; terminator
+
+TileData_257e1: ; 0x257e1
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $00
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $02, $E3
+
+ db $00 ; terminator
+
+TileData_2580e: ; 0x2580e
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FF, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $00, $00, $00
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $00, $00, $00
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $02, $03
+
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm new file mode 100755 index 0000000..86df2f3 --- /dev/null +++ b/engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm @@ -0,0 +1,750 @@ +ResolveMewtwoBonusGameObjectCollisions: ; 0x19451
+ call Func_19531
+ call Func_19701
+ call Func_1948b
+ callba Func_107f8
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, [wd6b1]
+ cp $8
+ ret nc
+ ld a, $1
+ ld [wd6b3], a
+ ret
+
+Func_1948b: ; 0x1948b
+ ld a, [wd6a9]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd6a9], a
+ callba LoadStageCollisionAttributes
+ call Func_194ac
+ ret
+
+Func_194ac: ; 0x194ac
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_194c9
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_194bf
+ ld hl, Data_194fd
+.asm_194bf
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(Data_194c9)
+ call Func_10aa
+ ret
+
+Data_194c9:
+ dw Data_194cd
+ dw Data_194d0
+
+Data_194cd: ; 0x194cd
+ db 1
+ dw Data_194d3
+
+Data_194d0: ; 0x194d0
+ db 1
+ dw Data_194e8
+
+Data_194d3: ; 0x194d3
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $45
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $80, $09
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $12
+
+ db $00 ; terminator
+
+Data_194e8: ; 0x194e8
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $46
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $47
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $48, $49
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $4A
+
+ db $00 ; terminator
+
+Data_194fd:
+ dw Data_19501
+ dw Data_19504
+
+Data_19501: ; 0x19501
+ db 1
+ dw Data_19507
+
+Data_19504: ; 0x19504
+ db 1
+ dw Data_1951c
+
+Data_19507: ; 0x19507
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $45
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $80, $09
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $12
+
+ db $00 ; terminator
+
+Data_1951c: ; 0x1951c
+ dw LoadTileLists
+ db $05 ; total number of tiles to load
+
+ db $01 ; number of tiles
+ dw vBGMap + $113
+ db $46
+
+ db $01 ; number of tiles
+ dw vBGMap + $133
+ db $47
+
+ db $02 ; number of tiles
+ dw vBGMap + $152
+ db $48, $49
+
+ db $01 ; number of tiles
+ dw vBGMap + $172
+ db $4A
+
+ db $00 ; terminator
+
+Func_19531: ; 0x19531
+ ld a, [wd6aa]
+ and a
+ jr z, .asm_195a2
+ xor a
+ ld [wd6aa], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_195a2
+ ld a, [wd6af]
+ cp $2
+ jr nc, .asm_195a2
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueue
+ ld a, [wd6b0]
+ inc a
+ cp $3
+ jr nz, .asm_19565
+ ld a, [wd6b1]
+ inc a
+ ld [wd6b1], a
+ xor a
+.asm_19565
+ ld [wd6b0], a
+ call ResetOrbitingBalls
+ ld a, [wd6b1]
+ cp $8
+ jr z, .asm_19582
+ ld a, $2
+ ld de, wd6ae
+ call Func_19679
+ lb de, $00, $39
+ call PlaySoundEffect
+ jr .asm_195a2
+
+.asm_19582
+ ld a, $3
+ ld de, wd6ae
+ call Func_19679
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld de, $0000
+ call PlaySong
+.asm_195a2
+ call Func_195ac
+ ld de, wd6af
+ call Func_195f5
+ ret
+
+Func_195ac: ; 0x195ac
+ ld a, [wd6af]
+ and a
+ ret nz
+ ld hl, wd6bd
+ ld de, $0008
+ ld b, $6
+.asm_195b9
+ ld a, [hl]
+ cp $2b
+ jr nz, .asm_195ce
+ dec hl
+ dec hl
+ dec hl
+ ld a, [hl]
+ cp $2
+ ret nz
+ ld a, $1
+ ld de, wd6ae
+ call Func_19679
+ ret
+
+.asm_195ce
+ add hl, de
+ dec b
+ jr nz, .asm_195b9
+ ret
+
+Func_195d3: ; 0x195d3
+ ld hl, wd6bd
+ ld de, $0008
+ ld b, $6
+.asm_195db
+ ld a, [hl]
+ cp $18
+ jr nz, .asm_195f0
+ dec hl
+ dec hl
+ dec hl
+ ld a, [hl]
+ cp $2
+ ret nz
+ ld d, h
+ ld e, l
+ dec de
+ ld a, $1
+ call Func_19876
+ ret
+
+.asm_195f0
+ add hl, de
+ dec b
+ jr nz, .asm_195db
+ ret
+
+Func_195f5: ; 0x195f5
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_19691
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ rst JumpTable ; calls JumpToFuncInTable
+CallTable_1960d: ; 0x1960d
+ dw Func_19615
+ dw Func_1961e
+ dw Func_1962f
+ dw Func_19638
+
+Func_19615: ; 0x19615
+ dec de
+ ld a, [de]
+ cp $4
+ ret nz
+ xor a
+ jp Func_19679
+
+Func_1961e: ; 0x1961e
+ dec de
+ ld a, [de]
+ cp $c
+ jr nz, .asm_19628
+ call Func_195d3
+ ret
+
+.asm_19628
+ cp $d
+ ret nz
+ xor a
+ jp Func_19679
+
+Func_1962f: ; 0x1962f
+ dec de
+ ld a, [de]
+ cp $1
+ ret nz
+ xor a
+ jp Func_19679
+
+Func_19638: ; 0x19638
+ dec de
+ ld a, [de]
+ cp $1
+ jr nz, .asm_19645
+ lb de, $00, $40
+ call PlaySoundEffect
+ ret
+
+.asm_19645
+ cp $20
+ ret nz
+ ld a, $1
+ ld [wd6b3], a
+ ld a, [wd499]
+ ld [wd498], a
+ ld a, [wNumMewtwoBonusCompletions]
+ cp $2 ; only counts up to 2. Gets reset to 0 when Mew is encountered in Catch 'Em Mode.
+ jr z, .asm_1965e
+ inc a
+ ld [wNumMewtwoBonusCompletions], a
+.asm_1965e
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+.asm_1966b
+ ld de, MewtwoStageClearedText
+ call LoadTextHeader
+ lb de, $4b, $2a
+ call PlaySoundEffect
+ ret
+
+Func_19679: ; 0x19679
+ push af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_19691
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ pop af
+ ld [de], a
+ ret
+
+Data_19691:
+ dw Data_19699
+ dw Data_196a2
+ dw Data_196bd
+ dw Data_196c0
+
+Data_19699: ; 0x19699
+ db $30, $00, $04, $05, $34, $04, $03, $05
+ db $00 ; terminator
+
+Data_196a2: ; 0x196a2
+ db $0A, $00, $06, $01, $05, $02, $05, $01, $04, $02, $04, $01, $04, $02, $03, $01
+ db $03, $02, $03, $01, $03, $02, $04, $00, $40, $03
+ db $00 ; terminator
+
+Data_196bd: ; 0x196bd
+ db $10, $06
+ db $00 ; terminator
+
+Data_196c0: ; 0x196c0
+ db $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07
+ db $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07
+ db $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07
+ db $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07
+ db $00 ; terminator
+
+Func_19701: ; 0x19701
+ ld a, [wd6b4]
+ and a
+ jr z, .asm_19742
+ xor a
+ ld [wd6b4], a
+ ld a, [wd7be]
+ and a
+ jr nz, .asm_19742
+ ld a, [wd6b5]
+ sub $1
+ sla a
+ sla a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, wd6ba
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [de]
+ and a
+ jr nz, .asm_19742
+ dec de
+ ld a, $2
+ call Func_19876
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueue
+ lb de, $00, $38
+ call PlaySoundEffect
+.asm_19742
+ ld de, wd6bd
+ call SetOrbitingBallCoordinates
+ ld de, wd6c5
+ call SetOrbitingBallCoordinates
+ ld de, wd6cd
+ call SetOrbitingBallCoordinates
+ ld de, wd6d5
+ call SetOrbitingBallCoordinates
+ ld de, wd6dd
+ call SetOrbitingBallCoordinates
+ ld de, wd6e5
+ call SetOrbitingBallCoordinates
+ ld de, wd6b6
+ call UpdateOrbitingBallAnimation
+ ld de, wd6be
+ call UpdateOrbitingBallAnimation
+ ld de, wd6c6
+ call UpdateOrbitingBallAnimation
+ ld de, wd6ce
+ call UpdateOrbitingBallAnimation
+ ld de, wd6d6
+ call UpdateOrbitingBallAnimation
+ ld de, wd6de
+ call UpdateOrbitingBallAnimation
+ ret
+
+SetOrbitingBallCoordinates: ; 0x1978b
+; Sets the x, y coordinates for one of the balls orbiting around Mewtwo
+ ld a, [de]
+ ld c, a
+ ld b, $0
+ sla c
+ inc a
+ cp $48 ; num entries in MewtwoOrbitingBallsCoords
+ jr c, .looadCoords
+ xor a
+.looadCoords
+ ld [de], a
+ ld hl, MewtwoOrbitingBallsCoords + 1
+ add hl, bc
+ dec de
+ ld a, [hld]
+ ld [de], a
+ dec de
+ ld a, [hl]
+ ld [de], a
+ ret
+
+MewtwoOrbitingBallsCoords:
+; x, y coordinates for balls that orbit around Mewtwo.
+ db $62, $08
+ db $62, $0A
+ db $62, $0D
+ db $61, $0F
+ db $60, $11
+ db $60, $13
+ db $5F, $15
+ db $5D, $17
+ db $5C, $19
+ db $5A, $1A
+ db $59, $1C
+ db $57, $1D
+ db $55, $1F
+ db $53, $20
+ db $51, $20
+ db $4F, $21
+ db $4D, $22
+ db $4A, $22
+ db $48, $22
+ db $46, $22
+ db $43, $22
+ db $41, $21
+ db $3F, $20
+ db $3D, $20
+ db $3B, $1F
+ db $39, $1D
+ db $37, $1C
+ db $36, $1A
+ db $34, $19
+ db $33, $17
+ db $31, $15
+ db $30, $13
+ db $30, $11
+ db $2F, $0F
+ db $2E, $0D
+ db $2E, $0A
+ db $2E, $08
+ db $2E, $06
+ db $2E, $03
+ db $2F, $01
+ db $30, $FF
+ db $30, $FD
+ db $31, $FB
+ db $33, $F9
+ db $34, $F7
+ db $36, $F6
+ db $37, $F4
+ db $39, $F3
+ db $3B, $F1
+ db $3D, $F0
+ db $3F, $F0
+ db $41, $EF
+ db $43, $EE
+ db $46, $EE
+ db $48, $EE
+ db $4A, $EE
+ db $4D, $EE
+ db $4F, $EF
+ db $51, $F0
+ db $53, $F0
+ db $55, $F1
+ db $57, $F3
+ db $59, $F4
+ db $5A, $F6
+ db $5C, $F7
+ db $5D, $F9
+ db $5F, $FB
+ db $60, $FD
+ db $60, $FF
+ db $61, $01
+ db $62, $03
+ db $62, $06
+
+UpdateOrbitingBallAnimation: ; 0x19833
+; Updates the animation for one of the balls orbiting around Mewtwo.
+ ld a, [de]
+ and a
+ ret z
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, OrbitingBallAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ rst JumpTable ; calls JumpToFuncInTable
+CallTable_19852: ; 0x19852
+ dw Func_1985a
+ dw Func_19863
+ dw Func_1986c
+ dw Func_1986d
+
+Func_1985a: ; 0x1985a
+ dec de
+ ld a, [de]
+ cp $6
+ ret nz
+ xor a
+ jp Func_19876
+
+Func_19863: ; 0x19863
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ xor a
+ jp Func_19876
+
+Func_1986c: ; 0x1986c
+ ret
+
+Func_1986d: ; 0x1986d
+ dec de
+ ld a, [de]
+ cp $1
+ ret nz
+ xor a
+ jp Func_19876
+
+Func_19876: ; 0x19876
+ push af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, OrbitingBallAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ pop af
+ ld [de], a
+ ret
+
+ResetOrbitingBalls: ; 0x1988e
+ ld a, [wd6b1]
+ sla a
+ sla a
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, OrbitingBallsStartCoordsIndices
+ add hl, bc
+ ld de, wd6bd
+ ld b, $6
+.asm_198a3
+ ld a, [hli]
+ push bc
+ push de
+ push hl
+ bit 7, a
+ jr nz, .asm_198b7
+ ld [de], a
+ dec de
+ dec de
+ dec de
+ dec de
+ ld a, $3
+ call Func_19876
+ jr .asm_198c0
+
+.asm_198b7
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ dec de
+ xor a
+ ld [de], a
+.asm_198c0
+ pop hl
+ pop de
+ pop bc
+ ld a, e
+ add $8
+ ld e, a
+ jr nc, .asm_198ca
+ inc d
+.asm_198ca
+ dec b
+ jr nz, .asm_198a3
+ ret
+
+OrbitingBallsStartCoordsIndices:
+; When Mewtwo is hit, the orbs briefly disappear. When they reappear,
+; this table determines which entry in the MewtwoOrbitingBallsCoords table
+; each orb will start at.
+; Last two bytes in each row are unused
+ db $00, $0C, $18, $24, $30, $3C, $FF, $FF ; All 6 orbs are up
+ db $00, $0E, $1D, $2B, $3A, $FF, $FF, $FF ; 5 orbs are up
+ db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 4 orbs
+ db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 3 orbs
+ db $00, $18, $30, $FF, $FF, $FF, $FF, $FF ; 2 orbs
+ db $00, $24, $FF, $FF, $FF, $FF, $FF, $FF ; 1 orb
+ db $00, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; 0 orbs
+ db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
+ db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused
+
+OrbitingBallAnimations:
+ dw OrbitingBallAnimation1
+ dw OrbitingBallAnimation2
+ dw OrbitingBallAnimation3
+ dw OrbitingBallAnimation4
+
+OrbitingBallAnimation1: ; 0x1991e
+; Each entry is [duration][OAM id]
+ db $0A, $00
+ db $08, $01
+ db $08, $02
+ db $0A, $03
+ db $08, $02
+ db $08, $01
+ db $00 ; terminator
+
+OrbitingBallAnimation2: ; 0x1992b
+; Each entry is [duration][OAM id]
+ db $05, $04
+ db $06, $05
+ db $06, $06
+ db $07, $07
+ db $07, $08
+ db $08, $09
+ db $08, $0A
+ db $00 ; terminator
+
+OrbitingBallAnimation3: ; 0x1993a
+; Each entry is [duration][OAM id]
+ db $05, $0A
+ db $05, $09
+ db $04, $08
+ db $04, $07
+ db $03, $06
+ db $03, $05
+ db $02, $04
+ db $80, $0B
+ db $00 ; terminator
+
+OrbitingBallAnimation4: ; 0x1994b
+; Each entry is [duration][OAM id]
+ db $0C, $0B
+ db $00 ; terminator
diff --git a/engine/pinball_game/object_collision/object_collision.asm b/engine/pinball_game/object_collision/object_collision.asm index 51e34ce..b4ca37b 100755 --- a/engine/pinball_game/object_collision/object_collision.asm +++ b/engine/pinball_game/object_collision/object_collision.asm @@ -196,3 +196,54 @@ PinballCollidesWithPoints: ; 0x27fd ld a, d
ld [wd578], a
ret
+
+ResolveGameObjectCollisions: ; 0x281c
+ ld a, [wCurrentStage]
+ call CallInFollowingTable
+CallTable_2822: ; 0x2822
+; not collisions
+ ; STAGE_RED_FIELD_TOP
+ padded_dab ResolveRedFieldTopGameObjectCollisions
+
+ ; STAGE_RED_FIELD_BOTTOM
+ padded_dab ResolveRedFieldBottomGameObjectCollisions
+
+ padded_dab DoNothing_1806d
+
+ padded_dab Func_1806e
+
+ ; STAGE_BLUE_FIELD_TOP
+ padded_dab ResolveBlueFieldTopGameObjectCollisions
+
+ ; STAGE_BLUE_FIELD_BOTTOM
+ padded_dab ResolveBlueFieldBottomGameObjectCollisions
+
+ ; STAGE_GENGAR_BONUS
+ padded_dab ResolveGengarBonusGameObjectCollisions
+
+ ; STAGE_GENGAR_BONUS
+ padded_dab ResolveGengarBonusGameObjectCollisions
+
+ ; STAGE_MEWTWO_BONUS
+ padded_dab ResolveMewtwoBonusGameObjectCollisions
+
+ ; STAGE_MEWTWO_BONUS
+ padded_dab ResolveMewtwoBonusGameObjectCollisions
+
+ ; STAGE_MEOWTH_BONUS
+ padded_dab ResolveMeowthBonusGameObjectCollisions
+
+ ; STAGE_MEOWTH_BONUS
+ padded_dab ResolveMeowthBonusGameObjectCollisions
+
+ ; STAGE_DIGLETT_BONUS
+ padded_dab ResolveDiglettBonusGameObjectCollisions
+
+ ; STAGE_DIGLETT_BONUS
+ padded_dab ResolveDiglettBonusGameObjectCollisions
+
+ ; STAGE_SEEL_BONUS
+ padded_dab ResolveSeelBonusGameObjectCollisions
+
+ ; STAGE_SEEL_BONUS
+ padded_dab ResolveSeelBonusGameObjectCollisions
diff --git a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm new file mode 100755 index 0000000..94d195d --- /dev/null +++ b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm @@ -0,0 +1,8730 @@ +; TODO: this file has a bunch of stuff that doesn't belong here.
+
+ResolveRedFieldTopGameObjectCollisions: ; 0x1460e
+ call ResolveVoltorbCollision
+ call ResolveRedStageSpinnerCollision
+ call ResolveRedStagePinballUpgradeTriggersCollision
+ call HandleRedStageBallTypeUpgradeCounter
+ call Func_15270
+ call ResolveRedStageBoardTriggerCollision
+ call ResolveRedStagePikachuCollision
+ call ResolveStaryuCollision
+ call ResolveBellsproutCollision
+ call ResolveDittoSlotCollision
+ call Func_161e0
+ call Func_164e3
+ call Func_146a9
+ call Func_174ea
+ call Func_148cf
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+ResolveRedFieldBottomGameObjectCollisions: ; 0x14652
+ call Func_14795
+ call Func_15f86
+ call ResolveDiglettCollision
+ call Func_14880
+ call Func_14e10
+ call Func_154a9
+ call HandleRedStageBallTypeUpgradeCounter
+ call Func_151cb
+ call Func_1652d
+ call ResolveRedStagePikachuCollision
+ call Func_167ff
+ call Func_169a6
+ call ResolveRedStageBonusMultiplierCollision
+ call Func_16279
+ call Func_161af
+ call Func_164e3
+ call Func_14733
+ call Func_146a2
+ call Func_174d0
+ callba Func_30188
+ ld a, $0
+ callba Func_10000
+ ret
+
+Func_146a2: ; 0x146a2
+ call Func_146a9
+ call nz, Func_14707
+ ret
+
+Func_146a9: ; 0x146a9
+ ld a, [wBallSaverTimerFrames]
+ ld hl, wBallSaverTimerSeconds
+ or [hl]
+ ret z
+ ld a, [wBallXPos + 1]
+ cp $9a
+ jr nc, .asm_146e8
+ ld a, [wBallSaverTimerFrames]
+ dec a
+ ld [wBallSaverTimerFrames], a
+ bit 7, a
+ jr z, .asm_146e8
+ ld a, 59
+ ld [wBallSaverTimerFrames], a
+ ld a, [hl]
+ dec a
+ bit 7, a
+ jr nz, .asm_146cf
+ ld [hl], a
+.asm_146cf
+ inc a
+ ld c, $0
+ cp $2
+ jr c, .asm_146e4
+ ld c, $4
+ cp $6
+ jr c, .asm_146e4
+ ld c, $10
+ cp $b
+ jr c, .asm_146e4
+ ld c, $ff
+.asm_146e4
+ ld a, c
+ ld [wd4a2], a
+.asm_146e8
+ ld a, [wd4a2]
+ ld c, $0
+ and a
+ jr z, .asm_146fe
+ ld c, $1
+ cp $ff
+ jr z, .asm_146fe
+ ld hl, hNumFramesDropped
+ and [hl]
+ jr z, .asm_146fe
+ ld c, $0
+.asm_146fe
+ ld a, [wBallSaverIconOn]
+ cp c
+ ld a, c
+ ld [wBallSaverIconOn], a
+ ret
+
+Func_14707: ; 0x14707
+ ld a, [wBallSaverIconOn]
+ and a
+ jr nz, .asm_1471c
+ ld a, BANK(BgTileData_1172b)
+ ld hl, BgTileData_1172b
+ deCoord 8, 13, vBGMap
+ ld bc, $0004
+ call LoadOrCopyVRAMData
+ ret
+
+.asm_1471c
+ ld a, BANK(BgTileData_1472f)
+ ld hl, BgTileData_1472f
+ deCoord 8, 13, vBGMap
+ ld bc, $0004
+ call LoadOrCopyVRAMData
+ ret
+
+BgTileData_1172b:
+ db $AA, $AB, $AC, $AD
+
+BgTileData_1472f:
+ db $B4, $B5, $B6, $B7
+
+Func_14733: ; 0x14733
+ ld c, $0
+ ld a, [wd49b]
+ and a
+ jr z, .asm_1473d
+ ld c, $1
+.asm_1473d
+ ld a, [wd4a9]
+ cp c
+ ld a, c
+ ld [wd4a9], a
+ ret z
+ ; fall through
+
+Func_14746: ; 0x14746
+ ld c, $0
+ ld a, [wd49b]
+ and a
+ jr z, .asm_14750
+ ld c, $2
+.asm_14750
+ ld b, $0
+ ld hl, AgainTextTileDataRedField
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, BANK(AgainTextTileDataRedField)
+ call Func_10aa
+ ret
+
+AgainTextTileDataRedField:
+ dw AgainTextOffTileDataRedField
+ dw AgainTextOnTileDataRedField
+
+AgainTextOffTileDataRedField:
+ db 2
+ dw AgainTextOffTileDataRedField1
+ dw AgainTextOffTileDataRedField2
+
+AgainTextOnTileDataRedField:
+ db 2
+ dw AgainTextOnTileDataRedField1
+ dw AgainTextOnTileDataRedField2
+
+AgainTextOffTileDataRedField1:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $38
+ dw AgainTextOffGfx
+ db Bank(AgainTextOffGfx)
+ db $00
+
+AgainTextOffTileDataRedField2:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $3a
+ dw AgainTextOffGfx + $20
+ db Bank(AgainTextOffGfx)
+ db $00
+
+AgainTextOnTileDataRedField1:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $38
+ dw StageRedFieldBottomBaseGameBoyGfx + $380
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+AgainTextOnTileDataRedField2:
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $3a
+ dw StageRedFieldBottomBaseGameBoyGfx + $3a0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+Func_14795: ; 0x14795
+ ld a, [wWildMonCollision]
+ and a
+ ret z
+ xor a
+ ld [wWildMonCollision], a
+ ld a, $1
+ ld [wBallHitWildMon], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ret
+
+ResolveDiglettCollision: ; 0x147aa
+ ld a, [wWhichDiglett]
+ and a
+ jp z, .asm_14834
+ xor a
+ ld [wWhichDiglett], a
+ ld a, [wWhichDiglettId]
+ sub $1
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, wLeftMapMoveCounter
+ add hl, bc
+ ld a, [hl]
+ cp $3
+ jr z, .asm_14834
+ inc a
+ ld [hld], a
+ ld [hl], $50
+ ld hl, wd4f7
+ add hl, bc
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, c
+ and a
+ jr z, .asm_14807
+ ld a, $6a
+ ld [wc7f0], a
+ ld a, $6b
+ ld [wc810], a
+ ld a, $5
+ call Func_149d9
+ ld a, [wRightMapMoveCounter]
+ add $4
+ call Func_149f5
+ ld a, $8
+ callba Func_10000
+ ld a, [wRightMapMoveCounter]
+ cp $3
+ call z, Func_14920
+ jr .asm_14830
+
+.asm_14807
+ ld a, $66
+ ld [wc7e3], a
+ ld a, $67
+ ld [wc803], a
+ ld a, $2
+ call Func_149d9
+ ld a, [wLeftMapMoveCounter]
+ call Func_149f5
+ ld a, $7
+ callba Func_10000
+ ld a, [wLeftMapMoveCounter]
+ cp $3
+ call z, Func_14947
+.asm_14830
+ call Func_1496d
+ ret
+
+.asm_14834
+ ld a, [wd4ef]
+ and a
+ jr z, .asm_14857
+ dec a
+ ld [wd4ef], a
+ jr nz, .asm_14857
+ ld a, [wLeftMapMoveCounter]
+ sub $3
+ jr nz, .asm_1484d
+ ld [wLeftMapMoveCounter], a
+ call Func_149f5
+.asm_1484d
+ ld a, $64
+ ld [wc7e3], a
+ ld a, $65
+ ld [wc803], a
+.asm_14857
+ ld a, [wd4f1]
+ and a
+ jr z, .asm_1487c
+ dec a
+ ld [wd4f1], a
+ jr nz, .asm_1487c
+ ld a, [wRightMapMoveCounter]
+ sub $3
+ jr nz, .asm_14872
+ ld [wRightMapMoveCounter], a
+ add $4
+ call Func_149f5
+.asm_14872
+ ld a, $68
+ ld [wc7f0], a
+ ld a, $69
+ ld [wc810], a
+.asm_1487c
+ call Func_14990
+ ret
+
+Func_14880: ; 0x14880
+ ld hl, wd4f7
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_148a6
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_148a6
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_148a6
+ cp $3
+ jr z, .asm_148a6
+ dec a
+ ld [wLeftMapMoveCounter], a
+ call Func_149f5
+.asm_148a6
+ ld hl, wd4f9
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_148ce
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_148ce
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_148ce
+ cp $3
+ jr z, .asm_148ce
+ dec a
+ ld [wRightMapMoveCounter], a
+ add $4
+ call Func_149f5
+.asm_148ce
+ ret
+
+Func_148cf: ; 0x148cf
+ ld b, $0
+ ld hl, wd4f8
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_148f8
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_148f8
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_148f8
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wLeftMapMoveCounter]
+ and a
+ jr z, .asm_148f8
+ cp $3
+ jr z, .asm_148f8
+ dec a
+ ld [wLeftMapMoveCounter], a
+.asm_148f8
+ ld hl, wd4fa
+ ld a, [hld]
+ or [hl]
+ jr z, .asm_1491f
+ dec [hl]
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_1491f
+ dec [hl]
+ ld a, [hld]
+ cp $ff
+ jr nz, .asm_1491f
+ ld a, $e0
+ ld [hli], a
+ ld a, $1
+ ld [hl], a
+ ld a, [wRightMapMoveCounter]
+ and a
+ jr z, .asm_1491f
+ cp $3
+ jr z, .asm_1491f
+ dec a
+ ld [wRightMapMoveCounter], a
+.asm_1491f
+ ret
+
+Func_14920: ; 0x14920
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_14937
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_14937
+ ld a, $1
+ ld [wd55a], a
+ callba StartMapMoveMode
+ ret
+
+Func_14947: ; 0x14947
+ ld hl, wd62b
+ call Func_e4a
+ jr nc, .asm_1495e
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_1495e
+ xor a
+ ld [wd55a], a
+ callba StartMapMoveMode
+ ret
+
+Func_1496d: ; 0x1496d
+ ld a, $55
+ ld [wd803], a
+ ld a, $4
+ ld [wd804], a
+ ld a, $2
+ ld [wd7eb], a
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $0f
+ call PlaySoundEffect
+ ret
+
+Func_14990: ; 0x14990
+ ld a, [wd4ef]
+ and a
+ jr nz, .asm_149b6
+ ld a, [wLeftMapMoveDiglettAnimationCounter]
+ and a
+ jr z, .asm_149a2
+ dec a
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ jr .asm_149b6
+
+.asm_149a2
+ call Func_1130
+ ret nz
+ ld a, $14
+ ld [wLeftMapMoveDiglettAnimationCounter], a
+ ld a, [wLeftMapMoveDiglettFrame]
+ xor $1
+ ld [wLeftMapMoveDiglettFrame], a
+ call Func_149d9
+.asm_149b6
+ ld a, [wd4f1]
+ and a
+ ret nz
+ ld a, [wRightMapMoveDiglettAnimationCounter]
+ and a
+ jr z, .asm_149c6
+ dec a
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ret
+
+.asm_149c6
+ call Func_1130
+ ret nz
+ ld a, $14
+ ld [wRightMapMoveDiglettAnimationCounter], a
+ ld a, [wRightMapMoveDiglettFrame]
+ xor $1
+ ld [wRightMapMoveDiglettFrame], a
+ add $3
+ ; fall through
+Func_149d9: ; 0x149d9
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileListDataPointers_14a11
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_149e9
+ ld hl, TileListDataPointers_14a83
+.asm_149e9
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, BANK(TileListDataPointers_14a11)
+ call Func_10aa
+ ret
+
+Func_149f5: ; 0x149f5
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_14af5
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_14a05
+ ld hl, TileListDataPointers_14c8d
+.asm_14a05
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, BANK(Data_14af5)
+ call Func_10aa
+ ret
+
+TileListDataPointers_14a11: ; 0x14a11
+ dw TileListData_14a1d
+ dw TileListData_14a20
+ dw TileListData_14a23
+ dw TileListData_14a26
+ dw TileListData_14a29
+ dw TileListData_14a2c
+
+TileListData_14a1d: ; 0x14a1d
+ db $01
+ dw TileListData_14a2f
+
+TileListData_14a20: ; 0x14a20
+ db $01
+ dw TileListData_14a3d
+
+TileListData_14a23: ; 0x14a23
+ db $01
+ dw TileListData_14a4b
+
+TileListData_14a26: ; 0x14a26
+ db $01
+ dw TileListData_14a59
+
+TileListData_14a29: ; 0x14a29
+ db $01
+ dw TileListData_14a67
+
+TileListData_14a2c: ; 0x14a2c
+ db $01
+ dw TileListData_14a75
+
+TileListData_14a2f: ; 0x14a2f
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $4C, $4D
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $4E, $4F
+
+ db $00 ; terminator
+
+TileListData_14a3d: ; 0x14a3d
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $50, $51
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $52, $53
+
+ db $00 ; terminator
+
+TileListData_14a4b: ; 0x14a4b
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $54, $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $55, $80
+
+ db $00 ; terminator
+
+TileListData_14a59: ; 0x14a59
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $56, $57
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $58, $59
+
+ db $00 ; terminator
+
+TileListData_14a67: ; 0x14a67
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $5a, $5b
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $5c, $5d
+
+ db $00 ; terminator
+
+TileListData_14a75: ; 0x14a75
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $80, $5e
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $80, $5f
+
+ db $00 ; terminator
+
+TileListDataPointers_14a83:
+ dw TileListData_14a8f
+ dw TileListData_14a92
+ dw TileListData_14a95
+ dw TileListData_14a98
+ dw TileListData_14a9b
+ dw TileListData_14a9e
+
+TileListData_14a8f: ; 0x14a8f
+ db $01
+ dw TileListData_14aa1
+
+TileListData_14a92: ; 0x14a92
+ db $01
+ dw TileListData_14aaf
+
+TileListData_14a95: ; 0x14a95
+ db $01
+ dw TileListData_14abd
+
+TileListData_14a98: ; 0x14a98
+ db $01
+ dw TileListData_14acb
+
+TileListData_14a9b: ; 0x14a9b
+ db $01
+ dw TileListData_14ad9
+
+TileListData_14a9e: ; 0x14a9e
+ db $01
+ dw TileListData_14ae7
+
+TileListData_14aa1: ; 0x14aa1
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $54, $55
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $56, $57
+
+ db $00
+
+TileListData_14aaf: ; 0x14aaf
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $58, $59
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $5A, $5B
+
+ db $00 ; terminator
+
+TileListData_14abd: ; 0x14abd
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $a3
+ db $5C, $80
+
+ db $02 ; number of tiles
+ dw vBGMap + $c3
+ db $5D, $80
+
+ db $00 ; terminator
+
+TileListData_14acb: ; 0x14acb
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $55, $54
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $57, $56
+
+ db $00 ; terminator
+
+TileListData_14ad9: ; 0x14ad9
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $59, $58
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $5B, $5A
+
+ db $00 ; terminator
+
+TileListData_14ae7: ; 0x14ae7
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $af
+ db $80, $5C
+
+ db $02 ; number of tiles
+ dw vBGMap + $cf
+ db $80, $5D
+
+ db $00 ; terminator
+
+Data_14af5: ; 0x14af5
+ dw Data_14b05
+ dw Data_14b0e
+ dw Data_14b17
+ dw Data_14b20
+ dw Data_14b29
+ dw Data_14b32
+ dw Data_14b3b
+ dw Data_14b44
+
+Data_14b05: ; 0x14b05
+ db $04
+ dw Data_14b4d
+ dw Data_14b57
+ dw Data_14b61
+ dw Data_14b6b
+
+Data_14b0e: ; 0x14b0e
+ db $04
+ dw Data_14b75
+ dw Data_14b7f
+ dw Data_14b89
+ dw Data_14b93
+
+Data_14b17: ; 0x14b17
+ db $04
+ dw Data_14b9d
+ dw Data_14ba7
+ dw Data_14bb1
+ dw Data_14bbb
+
+Data_14b20: ; 0x14b20
+ db $04
+ dw Data_14bc5
+ dw Data_14bcf
+ dw Data_14bd9
+ dw Data_14be3
+
+Data_14b29: ; 0x14b29
+ db $04
+ dw Data_14bed
+ dw Data_14bf7
+ dw Data_14c01
+ dw Data_14c0b
+
+Data_14b32: ; 0x14b32
+ db $04
+ dw Data_14c15
+ dw Data_14c1f
+ dw Data_14c29
+ dw Data_14c33
+
+Data_14b3b: ; 0x14b3b
+ db $04
+ dw Data_14c3d
+ dw Data_14c47
+ dw Data_14c51
+ dw Data_14c5b
+
+Data_14b44: ; 0x14b44
+ db $04
+ dw Data_14c65
+ dw Data_14c6f
+ dw Data_14c79
+ dw Data_14c83
+
+Data_14b4d: ; 0x14b4d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomBaseGameBoyGfx + $a60
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b57: ; 0x14b57
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomBaseGameBoyGfx + $a90
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b61: ; 0x14b61
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomBaseGameBoyGfx + $ac0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b6b: ; 0x14b6b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomBaseGameBoyGfx + $af0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14b75: ; 0x14b75
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $720
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b7f: ; 0x14b7f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $750
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b89: ; 0x14b89
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $780
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b93: ; 0x14b93
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14b9d: ; 0x14b9d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14ba7: ; 0x14ba7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bb1: ; 0x14bb1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $820
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bbb: ; 0x14bbb
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $850
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bc5: ; 0x14bc5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $26
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $860
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bcf: ; 0x14bcf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $29
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $890
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bd9: ; 0x14bd9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $2C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14be3: ; 0x14be3
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $2F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14bed: ; 0x14bed
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomBaseGameBoyGfx + $B00
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14bf7: ; 0x14bf7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomBaseGameBoyGfx + $B30
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14c01: ; 0x14c01
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomBaseGameBoyGfx + $B60
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14c0b: ; 0x14c0b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomBaseGameBoyGfx + $B90
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00 ; terminator
+
+Data_14c15: ; 0x14c15
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $900
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c1f: ; 0x14c1f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $930
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c29: ; 0x14c29
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $960
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c33: ; 0x14c33
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $990
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c3d: ; 0x14c3d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c47: ; 0x14c47
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9D0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c51: ; 0x14c51
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c5b: ; 0x14c5b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c65: ; 0x14c65
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $30
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c6f: ; 0x14c6f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $33
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A70
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c79: ; 0x14c79
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $36
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+Data_14c83: ; 0x14c83
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $39
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AD0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileListDataPointers_14c8d:
+ dw Data_14c9d
+ dw Data_14ca0
+ dw Data_14ca3
+ dw Data_14ca6
+ dw Data_14ca9
+ dw Data_14cac
+ dw Data_14caf
+ dw Data_14cb2
+
+Data_14c9d: ; 0x14c9d
+ db $01
+ dw TileListData_14cb5
+
+Data_14ca0: ; 0x14ca0
+ db $01
+ dw TileListData_14ccf
+
+Data_14ca3: ; 0x14ca3
+ db $01
+ dw TileListData_14ce9
+
+Data_14ca6: ; 0x14ca6
+ db $01
+ dw TileListData_14d03
+
+Data_14ca9: ; 0x14ca9
+ db $01
+ dw TileListData_14d1d
+
+Data_14cac: ; 0x14cac
+ db $01
+ dw TileListData_14d37
+
+Data_14caf: ; 0x14caf
+ db $01
+ dw TileListData_14d51
+
+Data_14cb2: ; 0x14cb2
+ db $01
+ dw TileListData_14d6b
+
+TileListData_14cb5: ; 0x14cb5
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $06, $07
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $08, $09, $0A
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $0B, $0C, $0D
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $0E, $0F
+
+ db $00 ; terminator
+
+TileListData_14ccf: ; 0x14ccf
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $06, $07
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $10, $11, $0A
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $12, $13, $0D
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $14, $15
+
+ db $00 ; terminator
+
+TileListData_14ce9: ; 0x14ce9
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $06, $07
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $10, $16, $17
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $12, $18, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $14, $15
+
+ db $00 ; terminator
+
+TileListData_14d03: ; 0x14d03
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $80
+ db $1A, $1B
+
+ db $03 ; number of tiles
+ dw vBGMap + $a0
+ db $1C, $1D, $17
+
+ db $03 ; number of tiles
+ dw vBGMap + $c0
+ db $12, $18, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $e0
+ db $14, $15
+
+ db $00 ; terminator
+
+TileListData_14d1d: ; 014d1d
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $07, $06
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $0A, $1E, $08
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $22, $0C, $24
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $0F, $0E
+
+ db $00 ; terminator
+
+TileListData_14d37: ; 0x14d37
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $07, $06
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $0A, $1F, $10
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $22, $13, $25
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $15, $14
+
+ db $00 ; terminator
+
+TileListData_14d51: ; 0x14d51
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $07, $06
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $17, $20, $10
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $23, $18, $25
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $15, $14
+
+ db $00 ; terminator
+
+TileListData_14d6b: ; 0x14d6b
+ dw LoadTileLists
+ db $0A ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $92
+ db $1B, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $b1
+ db $17, $21, $1C
+
+ db $03 ; number of tiles
+ dw vBGMap + $d1
+ db $23, $18, $25
+
+ db $02 ; number of tiles
+ dw vBGMap + $f2
+ db $15, $14
+
+ db $00 ; terminator
+
+ResolveVoltorbCollision: ; 0x14d85
+ ld a, [wWhichVoltorb]
+ and a
+ jr z, .noVoltorbCollision
+ xor a
+ ld [wWhichVoltorb], a
+ call Func_14dc9
+ ld a, $10
+ ld [wd4d6], a
+ ld a, [wWhichVoltorbId]
+ sub $3
+ ld [wd4d7], a
+ ld a, $4
+ callba Func_10000
+ ld bc, FiveHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ret
+
+.noVoltorbCollision
+ ld a, [wd4d6]
+ and a
+ ret z
+ dec a
+ ld [wd4d6], a
+ ret nz
+ ld a, $ff
+ ld [wd4d7], a
+ ret
+
+Func_14dc9: ; 0x14dc9
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ lb de, $00, $0e
+ call PlaySoundEffect
+ ret
+
+ResolveRedStageSpinnerCollision: ; 0x14dea
+ ld a, [wSpinnerCollision]
+ and a
+ jr z, Func_14e10
+ xor a
+ ld [wSpinnerCollision], a
+ ld a, [wBallYVelocity]
+ ld c, a
+ ld a, [wBallYVelocity + 1]
+ ld b, a
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld a, $c
+ callba Func_10000
+ ; fall through
+Func_14e10: ; 0x14e10
+ ld hl, wd50b
+ ld a, [hli]
+ or [hl]
+ ret z
+ ld a, [wd50b]
+ ld c, a
+ ld a, [wd50c]
+ ld b, a
+ bit 7, b
+ jr nz, .asm_14e2e
+ ld a, c
+ sub $7
+ ld c, a
+ ld a, b
+ sbc $0
+ ld b, a
+ jr nc, .asm_14e3b
+ jr .asm_14e38
+
+.asm_14e2e
+ ld a, c
+ add $7
+ ld c, a
+ ld a, b
+ adc $0
+ ld b, a
+ jr nc, .asm_14e3b
+.asm_14e38
+ ld bc, $0000
+.asm_14e3b
+ ld a, c
+ ld [wd50b], a
+ ld a, b
+ ld [wd50c], a
+ ld hl, wd50b
+ ld a, [wd509]
+ add [hl]
+ ld [wd509], a
+ inc hl
+ ld a, [wd50a]
+ adc [hl]
+ bit 7, a
+ ld c, $0
+ jr z, .asm_14e5e
+ add $18
+ ld c, $1
+ jr .asm_14e66
+
+.asm_14e5e
+ cp $18
+ jr c, .asm_14e66
+ sub $18
+ ld c, $1
+.asm_14e66
+ ld [wd50a], a
+ ld a, c
+ and a
+ ret z
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd62d
+ call Func_e4a
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_14e8a
+ call Func_14ea7
+ ret
+
+.asm_14e8a
+ inc a
+ ld [wPikachuSaverCharge], a
+ call Func_14ea7
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_14e9d
+ ld a, $64
+ ld [wd51e], a
+.asm_14e9d
+ ld a, [wCurrentStage]
+ bit 0, a
+ ret nz
+ call Func_14ece
+ ret
+
+Func_14ea7: ; 0x14ea7
+ ld a, [wd51e]
+ and a
+ ret nz
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ ld b, $0
+ ld hl, SoundEffects_14ebe
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, $0
+ call PlaySoundEffect
+ ret
+
+SoundEffects_14ebe:
+ db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11
+
+Func_14ece: ; 0x14ece
+ ld a, [wPikachuSaverCharge]
+ ld c, a
+ sla c
+ ld b, $0
+ ld hl, TileDataPointers_14eeb
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_14ee1
+ ld hl, TileDataPointers_1509b
+.asm_14ee1
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, BANK(TileDataPointers_14eeb)
+ call Func_10aa
+ ret
+
+TileDataPointers_14eeb:
+ dw TileData_14f0b
+ dw TileData_14f10
+ dw TileData_14f15
+ dw TileData_14f1a
+ dw TileData_14f1f
+ dw TileData_14f24
+ dw TileData_14f29
+ dw TileData_14f2e
+ dw TileData_14f33
+ dw TileData_14f38
+ dw TileData_14f3d
+ dw TileData_14f42
+ dw TileData_14f47
+ dw TileData_14f4c
+ dw TileData_14f51
+ dw TileData_14f56
+
+TileData_14f0b: ; 0x14f0b
+ db $02
+ dw TileData_14f5b
+ dw TileData_14f65
+
+TileData_14f10: ; 0x14f10
+ db $02
+ dw TileData_14f6f
+ dw TileData_14f79
+
+TileData_14f15: ; 0x14f15
+ db $02
+ dw TileData_14f83
+ dw TileData_14f8d
+
+TileData_14f1a: ; 0x14f1a
+ db $02
+ dw TileData_14f97
+ dw TileData_14fa1
+
+TileData_14f1f: ; 0x14f1f
+ db $02
+ dw TileData_14fab
+ dw TileData_14fb5
+
+TileData_14f24: ; 0x14f24
+ db $02
+ dw TileData_14fbf
+ dw TileData_14fc9
+
+TileData_14f29: ; 0x14f29
+ db $02
+ dw TileData_14fd3
+ dw TileData_14fdd
+
+TileData_14f2e: ; 0x14f2e
+ db $02
+ dw TileData_14fe7
+ dw TileData_14ff1
+
+TileData_14f33: ; 0x14f33
+ db $02
+ dw TileData_14ffb
+ dw TileData_15005
+
+TileData_14f38: ; 0x14f38
+ db $02
+ dw TileData_1500f
+ dw TileData_15019
+
+TileData_14f3d: ; 0x14f3d
+ db $02
+ dw TileData_15023
+ dw TileData_1502d
+
+TileData_14f42: ; 0x14f42
+ db $02
+ dw TileData_15037
+ dw TileData_15041
+
+TileData_14f47: ; 0x14f47
+ db $02
+ dw TileData_1504b
+ dw TileData_15055
+
+TileData_14f4c: ; 0x14f4c
+ db $02
+ dw TileData_1505f
+ dw TileData_15069
+
+TileData_14f51: ; 0x14f51
+ db $02
+ dw TileData_15073
+ dw TileData_1507d
+
+TileData_14f56: ; 0x14f56
+ db $02
+ dw TileData_15087
+ dw TileData_15091
+
+TileData_14f5b: ; 0x14f5b
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldTopBaseGameBoyGfx + $cb0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_14f65: ; 0x14f65
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldTopBaseGameBoyGfx + $cd0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00 ; terminator
+
+TileData_14f6f: ; 0x14f6f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f79: ; 0x14f79
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f83: ; 0x14f83
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f8d: ; 0x14f8d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14f97: ; 0x14f97
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fa1: ; 0x14fa1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fab: ; 0x14fab
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fb5: ; 0x14fb5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fbf: ; 0x14fbf
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fc9: ; 0x14fc9
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fd3: ; 0x14fd3
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fdd: ; 0x14fdd
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14fe7: ; 0x14fe7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14ff1: ; 0x14ff1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_14ffb: ; 0x14ffb
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15005: ; 0x15005
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1500f: ; 0x1500f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15019: ; 0x15019
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15023: ; 0x15023
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1502d: ; 0x1502d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15037: ; 0x15037
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15041: ; 0x15041
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1504b: ; 0x1504b
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15055: ; 0x15055
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DC0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1505f: ; 0x1505f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DE0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15069: ; 0x15069
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E00
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15073: ; 0x15073
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E20
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_1507d: ; 0x1507d
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E40
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15087: ; 0x15087
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $75
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileData_15091: ; 0x15091
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $77
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E80
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00 ; terminator
+
+TileDataPointers_1509b:
+ dw TileData_150bb
+ dw TileData_150be
+ dw TileData_150c1
+ dw TileData_150c4
+ dw TileData_150c7
+ dw TileData_150ca
+ dw TileData_150cd
+ dw TileData_150d0
+ dw TileData_150d3
+ dw TileData_150d6
+ dw TileData_150d9
+ dw TileData_150dc
+ dw TileData_150df
+ dw TileData_150e2
+ dw TileData_150e5
+ dw TileData_150e8
+
+TileData_150bb: ; 0x150bb
+ db $01
+ dw TileData_150eb
+
+TileData_150be: ; 0x150be
+ db $01
+ dw TileData_150f9
+
+TileData_150c1: ; 0x150c1
+ db $01
+ dw TileData_15107
+
+TileData_150c4: ; 0x150c4
+ db $01
+ dw TileData_15115
+
+TileData_150c7: ; 0x150c7
+ db $01
+ dw TileData_15123
+
+TileData_150ca: ; 0x150ca
+ db $01
+ dw TileData_15131
+
+TileData_150cd: ; 0x150cd
+ db $01
+ dw TileData_1513f
+
+TileData_150d0: ; 0x150d0
+ db $01
+ dw TileData_1514d
+
+TileData_150d3: ; 0x150d3
+ db $01
+ dw TileData_1515b
+
+TileData_150d6: ; 0x150d6
+ db $01
+ dw TileData_15169
+
+TileData_150d9: ; 0x150d9
+ db $01
+ dw TileData_15177
+
+TileData_150dc: ; 0x150dc
+ db $01
+ dw TileData_15185
+
+TileData_150df: ; 0x150df
+ db $01
+ dw TileData_15193
+
+TileData_150e2: ; 0x150e2
+ db $01
+ dw TileData_151a1
+
+TileData_150e5: ; 0x150e5
+ db $01
+ dw TileData_151af
+
+TileData_150e8: ; 0x150e8
+ db $01
+ dw TileData_151bd
+
+TileData_150eb: ; 0x150eb
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $5E, $5F
+
+ db $00 ; terminator
+
+TileData_150f9: ; 0x150f9
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $60, $61
+
+ db $00 ; terminator
+
+TileData_15107: ; 0x15107
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $62, $63
+
+ db $00 ; terminator
+
+TileData_15115: ; 0x15115
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $64, $65
+
+ db $00 ; terminator
+
+TileData_15123: ; 0x15123
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $66, $67
+
+ db $00 ; terminator
+
+TileData_15131: ; 0x15131
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $68, $69
+
+ db $00 ; terminator
+
+TileData_1513f: ; 0x1513f
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6A, $6B
+
+ db $00 ; terminator
+
+TileData_1514d: ; 0x1514d
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6C, $6D
+
+ db $00 ; terminator
+
+TileData_1515b: ; 0x1515b
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $5C, $5D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15169: ; 0x15169
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $70, $71
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15177: ; 0x15177
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $72, $73
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15185: ; 0x15185
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $74, $75
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_15193: ; 0x15193
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $76, $77
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_151a1: ; 0x151a1
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $78, $79
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_151af: ; 0x151af
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $7A, $7B
+
+ db $02 ; number of tiles
+ dw $992E
+ db $6E, $6F
+
+ db $00 ; terminator
+
+TileData_151bd: ; 0x151bd
+ dw LoadTileLists
+ db $04 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw $990E
+ db $7C, $7D
+
+ db $02 ; number of tiles
+ dw $992E
+ db $7E, $7F
+
+ db $00 ; terminator
+
+Func_151cb: ; 0x151cb
+ ld a, [wWhichCAVELight]
+ and a
+ jr z, .asm_15229
+ xor a
+ ld [wWhichCAVELight], a
+ ld a, [wd513]
+ and a
+ jr nz, .asm_15229
+ ld a, [wWhichCAVELightId]
+ sub $a
+ ld c, a
+ ld b, $0
+ ld hl, wd50f
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ ret nz
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd50f
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ inc hl
+ and [hl]
+ jr z, Func_asm_1522d
+ ld a, $1
+ ld [wd513], a
+ ld a, $80
+ ld [wd514], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $09
+ call PlaySoundEffect
+ ld hl, wd62c
+ call Func_e4a
+ jr Func_asm_1522d
+
+.asm_15229
+ call Func_15270
+ ret z
+ ; fall through
+
+Func_asm_1522d: ; 0x1522d
+ ld hl, wd512
+ ld b, $4
+.asm_15232
+ ld a, [hld]
+ push hl
+ call Func_1523c
+ pop hl
+ dec b
+ jr nz, .asm_15232
+ ret
+
+Func_1523c: ; 0x1523c
+ and a
+ jr z, .asm_1524e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15249
+ ld hl, TileDataPointers_152dd
+ jr .asm_1525b
+
+.asm_15249
+ ld hl, TileDataPointers_1531d
+ jr .asm_1525b
+
+.asm_1524e
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15258
+ ld hl, TileDataPointers_152e5
+ jr .asm_1525b
+
+.asm_15258
+ ld hl, TileDataPointers_15325
+.asm_1525b
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $5
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_15270: ; 0x15270
+ ld a, [wd513]
+ and a
+ jr z, .asm_152a6
+ ld a, [wd514]
+ dec a
+ ld [wd514], a
+ jr nz, .asm_1528d
+ ld [wd513], a
+ ld a, $1
+ ld [wd608], a
+ ld a, $3
+ ld [wd607], a
+ xor a
+.asm_1528d
+ and $7
+ ret nz
+ ld a, [wd514]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd50f
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_152a6
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .asm_152c2
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.asm_152c2
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ld hl, wd50f
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, d
+ ld [hl], a
+ ret
+
+TileDataPointers_152dd:
+ dw TileData_152ed
+ dw TileData_152f3
+ dw TileData_152f9
+ dw TileData_152ff
+
+TileDataPointers_152e5:
+ dw TileData_15305
+ dw TileData_1530b
+ dw TileData_15311
+ dw TileData_15317
+
+TileData_152ed: ; 0x152ed
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $7d
+
+ db $00 ; terminator
+
+TileData_152f3: ; 0x152f3
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $7d
+
+ db $00 ; terminator
+
+TileData_152f9: ; 0x152f9
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7f
+
+ db $00 ; terminator
+
+TileData_152ff: ; 0x152ff
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7f
+
+ db $00 ; terminator
+
+TileData_15305: ; 0x15305
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $7c
+
+ db $00 ; terminator
+
+TileData_1530b: ; 0x1530b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $7c
+
+ db $00 ; terminator
+
+TileData_15311: ; 0x15311
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7e
+
+ db $00 ; terminator
+
+TileData_15317: ; 0x15317
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7e
+
+ db $00 ; terminator
+
+TileDataPointers_1531d:
+ dw TileData_1532d
+ dw TileData_15333
+ dw TileData_15339
+ dw TileData_1533f
+
+TileDataPointers_15325:
+ dw TileData_15345
+ dw TileData_1534b
+ dw TileData_15351
+ dw TileData_15357
+
+TileData_1532d: ; 0x1532d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $27
+
+ db $00 ; terminator
+
+TileData_15333: ; 0x15333
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $29
+
+ db $00 ; terminator
+
+TileData_15339: ; 0x15339
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7E
+
+ db $00 ; terminator
+
+TileData_1533f: ; 0x1533f
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7F
+
+ db $00 ; terminator
+
+TileData_15345: ; 0x15345
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $121
+ db $26
+
+ db $00 ; terminator
+
+TileData_1534b: ; 0x1534b
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $123
+ db $28
+
+ db $00 ; terminator
+
+TileData_15351: ; 0x15351
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $130
+ db $7C
+
+ db $00 ; terminator
+
+TileData_15357: ; 0x15357
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $132
+ db $7D
+
+ db $00 ; terminator
+
+ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d
+ ld a, [wWhichPinballUpgradeTrigger]
+ and a
+ jp z, .asm_1544c
+ xor a
+ ld [wWhichPinballUpgradeTrigger], a
+ ld a, [wStageCollisionState]
+ bit 0, a
+ jp z, .asm_1544c
+ ld a, [wd5fc]
+ and a
+ jp nz, .asm_1544c
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ call Func_159c9
+ ld a, $b
+ callba Func_10000
+ ld a, [wWhichPinballUpgradeTriggerId]
+ sub $e
+ ld c, a
+ ld b, $0
+ ld hl, wd5f9
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $1
+ and a
+ ret nz
+ ld bc, OneHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld hl, wd5f9
+ ld a, [hli]
+ and [hl]
+ inc hl
+ and [hl]
+ jr nz, .asm_153c0
+ lb de, $00, $09
+ call PlaySoundEffect
+ jp Func_15450
+
+.asm_153c0
+ ld a, $1
+ ld [wd5fc], a
+ ld a, $80
+ ld [wd5fd], a
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+ ld bc, FourHundredPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wBallType]
+ cp MASTER_BALL
+ jr z, .masterBall
+ lb de, $06, $3a
+ call PlaySoundEffect
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld de, FieldMultiplierText
+ ld hl, wd5cc
+ call LoadTextHeader
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeProgressionRedField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ add $30
+ ld [wBottomMessageText + $12], a
+ jr .asm_15447
+
+.masterBall
+ lb de, $0f, $4d
+ call PlaySoundEffect
+ ld bc, OneMillionPoints
+ callba AddBigBCD6FromQueue
+ ld bc, $0100
+ ld de, $0000
+ push bc
+ push de
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5d4
+ ld de, DigitsText1to8
+ call Func_32cc
+ pop de
+ pop bc
+ ld hl, wd5cc
+ ld de, FieldMultiplierSpecialBonusText
+ call LoadTextHeader
+.asm_15447
+ call TransitionPinballUpgrade
+ jr Func_15450
+
+.asm_1544c
+ call Func_154a9
+ ret z
+
+Func_15450
+ ld a, [wStageCollisionState]
+ bit 0, a
+ ret z
+ ld hl, wd5fb
+ ld b, $3
+.asm_1545b
+ ld a, [hld]
+ push hl
+ call Func_15465
+ pop hl
+ dec b
+ jr nz, .asm_1545b
+ ret
+
+Func_15465: ; 0x15465
+ and a
+ jr z, .asm_15477
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15472
+ ld hl, TileDataPointers_15511
+ jr .asm_15484
+
+.asm_15472
+ ld hl, TileDataPointers_15543
+ jr .asm_15484
+
+.asm_15477
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_15481
+ ld hl, TileDataPointers_15517
+ jr .asm_15484
+
+.asm_15481
+ ld hl, TileDataPointers_15549
+.asm_15484
+ push bc
+ dec b
+ sla b
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, $5
+ ld de, LoadTileLists
+ call Func_10c5
+ pop bc
+ ret
+
+Func_15499: ; 0x15499
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret nz
+ ld b, $3
+.asm_1549f
+ push hl
+ xor a
+ call Func_15465
+ pop hl
+ dec b
+ jr nz, .asm_1549f
+ ret
+
+Func_154a9: ; 0x154a9
+ ld a, [wd5fc]
+ and a
+ jr z, .asm_154d6
+ ld a, [wd5fd]
+ dec a
+ ld [wd5fd], a
+ jr nz, .asm_154bb
+ ld [wd5fc], a
+.asm_154bb
+ and $7
+ jr nz, .asm_154d4
+ ld a, [wd5fd]
+ srl a
+ srl a
+ srl a
+ and $1
+ ld hl, wd5f9
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, $1
+ and a
+ ret
+
+.asm_154d4
+ xor a
+ ret
+
+.asm_154d6
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+ jr z, .asm_154ee
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hld], a
+ ld a, b
+ ld [hl], a
+ ret
+
+.asm_154ee
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ ret z
+ ld hl, wd5f9
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld e, a
+ ld a, b
+ ld [hld], a
+ ld a, c
+ ld [hld], a
+ ld a, e
+ ld [hl], a
+ ret
+
+BallTypeProgressionRedField: ; 0x15505
+; Determines the next upgrade for the Ball.
+ db GREAT_BALL ; POKE_BALL -> GREAT_BALL
+ db GREAT_BALL ; unused
+ db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL
+ db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL
+ db MASTER_BALL ; unused
+ db MASTER_BALL ; MASTER_BALL -> MASTER_BALL
+
+BallTypeDegradationRedField: ; 0x1550b
+; Determines the previous upgrade for the Ball.
+ db POKE_BALL ; POKE_BALL -> POKE_BALL
+ db POKE_BALL ; unused
+ db POKE_BALL ; GREAT_BALL -> POKE_BALL
+ db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL
+ db ULTRA_BALL ; unused
+ db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL
+
+TileDataPointers_15511:
+ dw TileData_1551d
+ dw TileData_15523
+ dw TileData_1552a
+
+TileDataPointers_15517:
+ dw TileData_15530
+ dw TileData_15536
+ dw TileData_1553d
+
+TileData_1551d: ; 0x1551d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $E7
+ db $ac
+
+ db $00 ; terminator
+
+TileData_15523: ; 0x15523
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $C9
+ db $ad, $ae
+
+ db $00 ; terminator
+
+TileData_1552a: ; 0x1552a
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $CC
+ db $af
+
+ db $00 ; terminator
+
+TileData_15530: ; 0x15530
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $E7
+ db $66
+
+ db $00 ; terminator
+
+TileData_15536: ; 0x15536
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $C9
+ db $68, $69
+
+ db $00 ; terminator
+
+TileData_1553d: ; 0x1553d
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $CC
+ db $6a
+
+ db $00 ; terminator
+
+TileDataPointers_15543:
+ dw TileData_1554f
+ dw TileData_15555
+ dw TileData_1555c
+
+TileDataPointers_15549:
+ dw TileData_15562
+ dw TileData_15568
+ dw TileData_1556F
+
+TileData_1554f: ; 0x1554f
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $e7
+ db $3D
+
+ db $00 ; terminator
+
+TileData_15555: ; 0x15555
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $c9
+ db $3F, $40
+
+ db $00 ; terminator
+
+TileData_1555c: ; 0x1555c
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $cc
+ db $41
+
+ db $00 ; terminator
+
+TileData_15562: ; 0x15562
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $e7
+ db $37
+
+ db $00 ; terminator
+
+TileData_15568: ; 0x15568
+ db $02 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $c9
+ db $39, $3a
+
+ db $00 ; terminator
+
+TileData_1556F: ; 0x1556F
+ db $01 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $cc
+ db $3B
+
+ db $00 ; terminator
+
+HandleRedStageBallTypeUpgradeCounter: ; 0x15575
+ ld a, [wCapturingMon]
+ and a
+ ret nz
+ ld hl, wBallTypeCounter
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ or b
+ ret z
+ dec bc
+ ld a, b
+ ld [hld], a
+ ld [hl], c
+ or c
+ ret nz
+ ; counter is now 0! Degrade the ball upgrade.
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeDegradationRedField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ and a
+ jr z, .pokeball
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+.pokeball
+ call TransitionPinballUpgrade
+ ret
+
+TransitionPinballUpgrade: ; 0x155a7
+ ld a, [wBallType]
+ ld c, a
+ sla c
+ ld b, $0
+ ld hl, PinballUpgradeTransitionPointers
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(PinballUpgradeTransitionPointers)
+ call Func_10aa
+ ; fall through
+
+Func_155bb: ; 0x155bb
+ ld a, [hGameBoyColorFlag]
+ and a
+ ret z
+ ; gameboy color
+ ld a, [wBallType]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, Data_157f7
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, BANK(Data_157f7)
+ ld de, LoadPalettes
+ call Func_10c5
+ ret
+
+PinballUpgradeTransitionPointers:
+ dw TransitionToPokeBallPointers ; POKE_BALL
+ dw TransitionToPokeBallPointers ; POKE_BALL
+ dw TransitionToGreatBallPointers ; GREAT_BALL
+ dw TransitionToUltraBallPointers ; ULTRA_BALL
+ dw TransitionToUltraBallPointers ; ULTRA_BALL
+ dw TransitionToMasterBallPointers ; MASTER_BALL
+
+TransitionToPokeBallPointers:
+ db 11
+ dw TransitionToPokeBall_TileData_1
+ dw TransitionToPokeBall_TileData_2
+ dw TransitionToPokeBall_TileData_3
+ dw TransitionToPokeBall_TileData_4
+ dw TransitionToPokeBall_TileData_5
+ dw TransitionToPokeBall_TileData_6
+ dw TransitionToPokeBall_TileData_7
+ dw TransitionToPokeBall_TileData_8
+ dw TransitionToPokeBall_TileData_9
+ dw TransitionToPokeBall_TileData_10
+ dw TransitionToPokeBall_TileData_11
+
+TransitionToGreatBallPointers:
+ db 11
+ dw TransitionToGreatBall_TileData_1
+ dw TransitionToGreatBall_TileData_2
+ dw TransitionToGreatBall_TileData_3
+ dw TransitionToGreatBall_TileData_4
+ dw TransitionToGreatBall_TileData_5
+ dw TransitionToGreatBall_TileData_6
+ dw TransitionToGreatBall_TileData_7
+ dw TransitionToGreatBall_TileData_8
+ dw TransitionToGreatBall_TileData_9
+ dw TransitionToGreatBall_TileData_10
+ dw TransitionToGreatBall_TileData_11
+
+TransitionToUltraBallPointers:
+ db 11
+ dw TransitionToUltraBall_TileData_1
+ dw TransitionToUltraBall_TileData_2
+ dw TransitionToUltraBall_TileData_3
+ dw TransitionToUltraBall_TileData_4
+ dw TransitionToUltraBall_TileData_5
+ dw TransitionToUltraBall_TileData_6
+ dw TransitionToUltraBall_TileData_7
+ dw TransitionToUltraBall_TileData_8
+ dw TransitionToUltraBall_TileData_9
+ dw TransitionToUltraBall_TileData_10
+ dw TransitionToUltraBall_TileData_11
+
+TransitionToMasterBallPointers:
+ db 11
+ dw TransitionToMasterBall_TileData_1
+ dw TransitionToMasterBall_TileData_2
+ dw TransitionToMasterBall_TileData_3
+ dw TransitionToMasterBall_TileData_4
+ dw TransitionToMasterBall_TileData_5
+ dw TransitionToMasterBall_TileData_6
+ dw TransitionToMasterBall_TileData_7
+ dw TransitionToMasterBall_TileData_8
+ dw TransitionToMasterBall_TileData_9
+ dw TransitionToMasterBall_TileData_10
+ dw TransitionToMasterBall_TileData_11
+
+TransitionToPokeBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballPokeballGfx + $0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballPokeballGfx + $30
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballPokeballGfx + $60
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballPokeballGfx + $90
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballPokeballGfx + $c0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballPokeballGfx + $f0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballPokeballGfx + $120
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballPokeballGfx + $150
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballPokeballGfx + $180
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballPokeballGfx + $1b0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToPokeBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballPokeballGfx + $1e0
+ db Bank(PinballPokeballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballGreatballGfx + $0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballGreatballGfx + $30
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballGreatballGfx + $60
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballGreatballGfx + $90
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballGreatballGfx + $c0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballGreatballGfx + $f0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballGreatballGfx + $120
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballGreatballGfx + $150
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballGreatballGfx + $180
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballGreatballGfx + $1b0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToGreatBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballGreatballGfx + $1e0
+ db Bank(PinballGreatballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballUltraballGfx + $0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballUltraballGfx + $30
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballUltraballGfx + $60
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballUltraballGfx + $90
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballUltraballGfx + $c0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballUltraballGfx + $f0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballUltraballGfx + $120
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballUltraballGfx + $150
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballUltraballGfx + $180
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballUltraballGfx + $1b0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToUltraBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballUltraballGfx + $1e0
+ db Bank(PinballUltraballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_1:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $40)
+ dw PinballMasterballGfx + $0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_2:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $43)
+ dw PinballMasterballGfx + $30
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_3:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $46)
+ dw PinballMasterballGfx + $60
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_4:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $49)
+ dw PinballMasterballGfx + $90
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_5:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4c)
+ dw PinballMasterballGfx + $c0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_6:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $4f)
+ dw PinballMasterballGfx + $f0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_7:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $52)
+ dw PinballMasterballGfx + $120
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_8:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $55)
+ dw PinballMasterballGfx + $150
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_9:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $58)
+ dw PinballMasterballGfx + $180
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_10:
+ dw Func_11d2
+ db $30, $03
+ dw (vTilesOB tile $5b)
+ dw PinballMasterballGfx + $1b0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+TransitionToMasterBall_TileData_11:
+ dw Func_11d2
+ db $20, $02
+ dw (vTilesOB tile $5e)
+ dw PinballMasterballGfx + $1e0
+ db Bank(PinballMasterballGfx)
+ db $00
+
+Data_157f7:
+ dw Data_15803
+ dw Data_15803
+ dw Data_1580a
+ dw Data_15811
+ dw Data_15811
+ dw Data_15818
+
+Data_15803:
+ db $08, $04, $40, $68, $51, $37, $00
+Data_1580a:
+ db $08, $04, $40, $70, $51, $37, $00
+Data_15811:
+ db $08, $04, $40, $78, $51, $37, $00
+Data_15818:
+ db $08, $04, $40, $80, $51, $37, $00
+
+ResolveRedStageBoardTriggerCollision: ; 0x1581f
+ ld a, [wWhichBoardTrigger]
+ and a
+ ret z
+ xor a
+ ld [wWhichBoardTrigger], a
+ ld bc, FivePoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wWhichBoardTriggerId]
+ sub $11
+ ld c, a
+ ld b, $0
+ ld hl, wd521
+ add hl, bc
+ ld [hl], $1
+ ld a, [wd521]
+ and a
+ call nz, Func_1587c
+ ld a, [wd522]
+ and a
+ call nz, Func_158c0
+ ld a, [wd523]
+ and a
+ call nz, Func_15904
+ ld a, [wd524]
+ and a
+ call nz, HandleLeftAlleyTriggerRedField
+ ld a, [wd525]
+ and a
+ call nz, Func_15931
+ ld a, [wd526]
+ and a
+ call nz, Func_15944
+ ld a, [wd527]
+ and a
+ call nz, HandleRightAlleyTriggerRedField
+ ld a, [wd528]
+ and a
+ call nz, Func_15990
+ ret
+
+Func_1587c: ; 0x1587c
+ xor a
+ ld [wd521], a
+ ld a, [wLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ callba Func_10000
+ ret c
+ ld a, [wLeftAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wLeftAlleyCount], a
+ set 7, a
+ ld [wIndicatorStates], a
+ cp $83
+ ret nz
+ ld a, [wStageCollisionState]
+ and $1
+ or $6
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ ret
+
+Func_158c0: ; 0x158c0
+ xor a
+ ld [wd522], a
+ ld a, [wLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ callba Func_10000
+ ret c
+ ld a, [wLeftAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wLeftAlleyCount], a
+ set 7, a
+ ld [wIndicatorStates], a
+ cp $83
+ ret nz
+ ld a, [wStageCollisionState]
+ and $1
+ or $6
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ ret
+
+Func_15904: ; 0x15904
+ xor a
+ ld [wd523], a
+ ld a, [wSecondaryLeftAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $3
+ callba Func_10000
+ ret
+
+HandleLeftAlleyTriggerRedField: ; 0x1591e
+; Ball passed over the left alley trigger point in the Red Field.
+ xor a
+ ld [wd524], a
+ ld [wRightAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wLeftAlleyTrigger], a
+ call Func_159c9
+ ret
+
+Func_15931: ; 0x15931
+ xor a
+ ld [wd525], a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld a, $1
+ ld [wSecondaryLeftAlleyTrigger], a
+ call Func_159c9
+ ret
+
+Func_15944: ; 0x15944
+ xor a
+ ld [wd526], a
+ ld a, [wRightAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld a, $2
+ callba Func_10000
+ ret c
+ ld a, [wRightAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wRightAlleyCount], a
+ cp $3
+ jr z, .asm_1596e
+ set 7, a
+.asm_1596e
+ ld [wIndicatorStates + 1], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ ret c
+ ld a, $80
+ ld [wIndicatorStates + 3], a
+ ret
+
+HandleRightAlleyTriggerRedField: ; 0x1597d
+; Ball passed over the right alley trigger point in the Red Field.
+ xor a
+ ld [wd527], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld a, $1
+ ld [wRightAlleyTrigger], a
+ call Func_159c9
+ ret
+
+Func_15990: ; 0x15990
+ xor a
+ ld [wd528], a
+ ld a, [wRightAlleyTrigger]
+ and a
+ ret z
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld a, $2
+ callba Func_10000
+ ret c
+ ld a, [wRightAlleyCount]
+ cp $3
+ ret z
+ inc a
+ ld [wRightAlleyCount], a
+ cp $3
+ jr z, .asm_159ba
+ set 7, a
+.asm_159ba
+ ld [wIndicatorStates + 1], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ ret c
+ ld a, $80
+ ld [wIndicatorStates + 3], a
+ ret
+
+Func_159c9: ; 0x159c9
+ ld a, [wd7ad]
+ bit 7, a
+ ret nz
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $1
+ or c
+ ld [wStageCollisionState], a
+ ld a, $ff
+ ld [wd7ad], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ ld a, $1
+ ld [wd580], a
+ call Func_1404a
+ ret
+
+Func_159f4: ; 0x159f4
+ ld a, [hLCDC]
+ bit 7, a
+ jr z, .asm_15a13
+ ld a, [wd7f2]
+ and $fe
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $fe
+ cp c
+ jr z, .asm_15a13
+ add c
+ cp $2
+ jr z, .asm_15a13
+ lb de, $00, $00
+ call PlaySoundEffect
+.asm_15a13
+ ld a, [wd7f2]
+ swap a
+ ld c, a
+ ld a, [wStageCollisionState]
+ sla a
+ or c
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_15a3f
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_15a2d
+ ld hl, TileDataPointers_15d05
+.asm_15a2d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_15a3f)
+ call Func_10aa
+ ld a, [wStageCollisionState]
+ ld [wd7f2], a
+ ret
+
+TileDataPointers_15a3f:
+ dw $0000
+ dw TileData_15b71
+ dw TileData_15b16
+ dw TileData_15abf
+ dw TileData_15b23
+ dw TileData_15adc
+ dw TileData_15b2a
+ dw TileData_15af3
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b16
+ dw $0000
+ dw TileData_15b23
+ dw $0000
+ dw TileData_15b2a
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b71
+ dw TileData_15b3d
+ dw $0000
+ dw TileData_15b50
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b82
+ dw $0000
+ dw $0000
+ dw TileData_15b3d
+ dw $0000
+ dw TileData_15b50
+ dw $0000
+ dw $0000
+ dw TileData_15b57
+ dw $0000
+ dw $0000
+ dw TileData_15b71
+ dw TileData_15b2a
+ dw $0000
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b57
+ dw TileData_15b82
+ dw $0000
+ dw $0000
+ dw TileData_15b2a
+ dw $0000
+ dw $0000
+ dw TileData_15b6a
+ dw $0000
+ dw TileData_15b3d
+ dw $0000
+ dw $0000
+ dw TileData_15b71
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15b6a
+ dw $0000
+ dw TileData_15b3d
+ dw TileData_15b82
+ dw $0000
+
+TileData_15abf: ; 0x15abf
+ db $e
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+
+TileData_15adc: ; 0x15adc
+ db $0b
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+ dw TileData_15ce7
+ dw TileData_15cf1
+ dw TileData_15cfb
+
+TileData_15af3: ; 0x15af3
+ db $11
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+ dw TileData_15cab
+ dw TileData_15cb5
+ dw TileData_15cbf
+
+TileData_15b16: ; 0x15b16
+ db $06
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+
+TileData_15b23: ; 0x15b23
+ db $03
+ dw TileData_15ce7
+ dw TileData_15cf1
+ dw TileData_15cfb
+
+TileData_15b2a: ; 0x15b2a
+ db $09
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15cab
+ dw TileData_15cb5
+ dw TileData_15cbf
+
+TileData_15b3d: ; 0x15b3d
+ db $09
+ dw TileData_15bcf
+ dw TileData_15bd9
+ dw TileData_15be3
+ dw TileData_15bed
+ dw TileData_15bf7
+ dw TileData_15c01
+ dw TileData_15ce7
+ dw TileData_15cf1
+ dw TileData_15cfb
+
+TileData_15b50: ; 0x15b50
+ db $03
+ dw TileData_15cab
+ dw TileData_15cb5
+ dw TileData_15cbf
+
+TileData_15b57: ; 0x15b57
+ db $09
+ dw TileData_15b93
+ dw TileData_15b9d
+ dw TileData_15ba7
+ dw TileData_15bb1
+ dw TileData_15bbb
+ dw TileData_15bc5
+ dw TileData_15cc9
+ dw TileData_15cd3
+ dw TileData_15cdd
+
+TileData_15b6a: ; 0x15b6a
+ db $03
+ dw TileData_15cc9
+ dw TileData_15cd3
+ dw TileData_15cdd
+
+TileData_15b71: ; 0x15b71
+ db $08
+ dw TileData_15c0b
+ dw TileData_15c15
+ dw TileData_15c1f
+ dw TileData_15c29
+ dw TileData_15c33
+ dw TileData_15c3d
+ dw TileData_15c47
+ dw TileData_15c51
+
+TileData_15b82: ; 0x15b82
+ db $08
+ dw TileData_15c5b
+ dw TileData_15c65
+ dw TileData_15c6f
+ dw TileData_15c79
+ dw TileData_15c83
+ dw TileData_15c8d
+ dw TileData_15c97
+ dw TileData_15ca1
+
+TileData_15b93: ; 0x15b93
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15b9d: ; 0x15b9d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15ba7: ; 0x15ba7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bb1: ; 0x15bb1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bbb: ; 0x15bbb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $50
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bc5: ; 0x15bc5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $53
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15bcf: ; 0x15bcf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldTopBaseGameBoyGfx + $9a0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15bd9: ; 0x15bd9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $47
+ dw StageRedFieldTopBaseGameBoyGfx + $9d0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15be3: ; 0x15be3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4A
+ dw StageRedFieldTopBaseGameBoyGfx + $a00
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15bed: ; 0x15bed
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $4D
+ dw StageRedFieldTopBaseGameBoyGfx + $a30
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15bf7: ; 0x15bf7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $50
+ dw StageRedFieldTopBaseGameBoyGfx + $a60
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c01: ; 0x15c01
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $53
+ dw StageRedFieldTopBaseGameBoyGfx + $a90
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c0b: ; 0x15c0b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $56
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $120
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c15: ; 0x15c15
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $59
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $150
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c1f: ; 0x15c1f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $180
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c29: ; 0x15c29
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c33: ; 0x15c33
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $62
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c3d: ; 0x15c3d
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $65
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $210
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c47: ; 0x15c47
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $66
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $620
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c51: ; 0x15c51
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $69
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $650
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15c5b: ; 0x15c5b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $56
+ dw StageRedFieldTopBaseGameBoyGfx + $ac0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c65: ; 0x15c65
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $59
+ dw StageRedFieldTopBaseGameBoyGfx + $af0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c6f: ; 0x15c6f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5C
+ dw StageRedFieldTopBaseGameBoyGfx + $b20
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c79: ; 0x15c79
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $5F
+ dw StageRedFieldTopBaseGameBoyGfx + $b50
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c83: ; 0x15c83
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $62
+ dw StageRedFieldTopBaseGameBoyGfx + $b80
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c8d: ; 0x15c8d
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $65
+ dw StageRedFieldTopBaseGameBoyGfx + $bb0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15c97: ; 0x15c97
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $66
+ dw StageRedFieldTopBaseGameBoyGfx + $bc0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15ca1: ; 0x15ca1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $69
+ dw StageRedFieldTopBaseGameBoyGfx + $bf0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15cab: ; 0x15cab
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cb5: ; 0x15cb5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cbf: ; 0x15cbf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $72
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $310
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cc9: ; 0x15cc9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6C
+ dw StageRedFieldTopBaseGameBoyGfx + $c20
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15cd3: ; 0x15cd3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6F
+ dw StageRedFieldTopBaseGameBoyGfx + $c50
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15cdd: ; 0x15cdd
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $72
+ dw StageRedFieldTopBaseGameBoyGfx + $c80
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_15ce7: ; 0x15ce7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $220
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cf1: ; 0x15cf1
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $6F
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $250
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_15cfb: ; 0x15cfb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $72
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $280
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_15d05:
+ dw $0000
+ dw TileData_15db1
+ dw TileData_15d96
+ dw TileData_15d85
+ dw TileData_15d99
+ dw TileData_15d8a
+ dw TileData_15d9c
+ dw TileData_15d8f
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15d96
+ dw $0000
+ dw TileData_15d99
+ dw $0000
+ dw TileData_15d9c
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15db1
+ dw TileData_15da1
+ dw $0000
+ dw TileData_15da6
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15db4
+ dw $0000
+ dw $0000
+ dw TileData_15da1
+ dw $0000
+ dw TileData_15da6
+ dw $0000
+ dw $0000
+ dw TileData_15da9
+ dw $0000
+ dw $0000
+ dw TileData_15db1
+ dw TileData_15d9c
+ dw $0000
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15da9
+ dw TileData_15db4
+ dw $0000
+ dw $0000
+ dw TileData_15d9c
+ dw $0000
+ dw $0000
+ dw TileData_15dae
+ dw $0000
+ dw TileData_15da1
+ dw $0000
+ dw $0000
+ dw TileData_15db1
+ dw $0000
+ dw $0000
+ dw $0000
+ dw TileData_15dae
+ dw $0000
+ dw TileData_15da1
+ dw TileData_15db4
+ dw $0000
+
+TileData_15d85: ; 0x15d85
+ db $02
+ dw TileData_15db7
+ dw TileData_15df2
+
+TileData_15d8a: ; 0x15d8a
+ db $02
+ dw TileData_15df2
+ dw TileData_15e82
+
+TileData_15d8f: ; 0x15d8f
+ db $03
+ dw TileData_15db7
+ dw TileData_15df2
+ dw TileData_15e50
+
+TileData_15d96: ; 0x15d96
+ db $01
+ dw TileData_15db7
+
+TileData_15d99: ; 0x15d99
+ db $01
+ dw TileData_15e82
+
+TileData_15d9c: ; 0x15d9c
+ db $02
+ dw TileData_15db7
+ dw TileData_15e50
+
+TileData_15da1: ; 0x15da1
+ db $02
+ dw TileData_15dd5
+ dw TileData_15e82
+
+TileData_15da6: ; 0x15da6
+ db $01
+ dw TileData_15e50
+
+TileData_15da9: ; 0x15da9
+ db $02
+ dw TileData_15db7
+ dw TileData_15e69
+
+TileData_15dae: ; 0x15dae
+ db $01
+ dw TileData_15e69
+
+TileData_15db1: ; 0x15dab1
+ db $01
+ dw TileData_15df2
+
+TileData_15db4: ; 0x15db4
+ db $01
+ dw TileData_15e21
+
+TileData_15db7: ; 0x15db7
+ dw Func_1198
+
+ db ($a << 1)
+ db $03
+ dw vBGMap + $4c
+
+ db ($40 << 1)
+ db $09
+ dw vBGMap + $6c
+
+ db (($32 << 1) | 1)
+ db $08
+ dw vBGMap + $8d
+
+ db (4 << 1)
+ dw vBGMap + $ae
+
+ db (2 << 1)
+ dw vBGMap + $d0
+
+ db (2 << 1)
+ dw vBGMap + $f1
+
+ db (2 << 1)
+ dw vBGMap + $111
+
+ db (1 << 1)
+ dw vBGMap + $132
+
+ db $00 ; terminator
+
+TileData_15dd5: ; 0x15dd5
+ dw Func_1198
+
+ db ($a << 1)
+ db $03
+ dw vBGMap + $4c
+
+ db (($28 << 1) | 1)
+ db $08
+ dw vBGMap + $6c
+
+ db ($4 << 1)
+ dw vBGMap + $8d
+
+ db ($04 << 1)
+ dw vBGMap + $ae
+
+ db ($02 << 1)
+ dw vBGMap + $d0
+
+ db ($02 << 1)
+ dw vBGMap + $f1
+
+ db ($02 << 1)
+ dw vBGMap + $111
+
+ db (1 << 1)
+ dw vBGMap + $132
+
+ db $00 ; terminator
+
+TileData_15df2: ; 0x15df2
+ dw LoadTileLists
+ db $19 ; total number of tiles
+
+ db $05 ; number of tiles
+ dw vBGMap + $a9
+ db $1e, $1f, $20, $21, $22
+
+ db $07
+ dw vBGMap + $c7
+ db $23, $24, $39, $3a, $25, $3b, $26
+
+ db $08 ; number of tiles
+ dw vBGMap + $e6
+ db $27, $37, $28, $29, $2a, $2b, $3c, $2c
+
+ db $03 ; number of tiles
+ dw vBGMap + $106
+ db $2d, $38, $2e
+
+ db $01 ; number of tiles
+ dw vBGMap + $10d
+ db $2f
+
+ db $01 ; number of tiles
+ dw vBGMap + $126
+ db $30
+
+ db 00 ; terminator
+
+TileData_15e21: ; 0x15e21
+ dw LoadTileLists
+ db $19 ; total number of tiles
+
+ db $05 ; number of tiles
+ dw vBGMap + $a9
+ db $0b, $0c, $0d, $0e, $0f
+
+ db $07
+ dw vBGMap + $c7
+ db $10, $11, $33, $34, $12, $35, $13
+
+ db $08 ; number of tiles
+ dw vBGMap + $e6
+ db $14, $31, $15, $16, $17, $18, $36, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $106
+ db $1a, $32, $1b
+
+ db $01 ; number of tiles
+ dw vBGMap + $10d
+ db $1c
+
+ db $01 ; number of tiles
+ dw vBGMap + $126
+ db $1d
+
+ db 00 ; terminator
+
+TileData_15e50: ; 0x15e50
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $100
+ db $45, $46, $22
+
+ db $02 ; number of tiles
+ dw vBGMap + $120
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $140
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $160
+ db $45, $46
+
+ db $00 ; terminator
+
+TileData_15e69: ; 0x15e69
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap + $100
+ db $43, $44, $22
+
+ db $02 ; number of tiles
+ dw vBGMap + $120
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $140
+ db $45, $46
+
+ db $02 ; number of tiles
+ dw vBGMap + $160
+ db $45, $46
+
+ db $00 ; terminator
+
+TileData_15e82: ; 0x15e82
+ dw Func_1198
+
+ db ((4 << 1) | 1)
+ db $07
+ dw vBGMap + $100
+
+ db (($23 << 1) | 1)
+ db $04
+ dw vBGMap + $120
+
+ db (2 << 1)
+ dw vBGMap + $140
+
+ db (2 << 1)
+ dw vBGMap + $160
+
+ db $00 ; terminator
+
+ResolveBellsproutCollision: ; 0x15e93
+ ld a, [wBellsproutCollision]
+ and a
+ jr z, .asm_15eda
+ xor a
+ ld [wBellsproutCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $05
+ call PlaySoundEffect
+ ld hl, BellsproutAnimationData
+ ld de, wBellsproutAnimationFrameCounter
+ call CopyHLToDE
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $7c
+ ld [wBallXPos + 1], a
+ ld a, $78
+ ld [wBallYPos + 1], a
+ xor a
+ ld [wd549], a
+.asm_15eda
+ ld hl, BellsproutAnimationData
+ ld de, wBellsproutAnimationFrameCounter
+ call UpdateAnimation
+ push af
+ ld a, [wBellsproutAnimationFrameCounter]
+ and a
+ jr nz, .asm_15ef8
+ ld a, $19
+ ld [wBellsproutAnimationFrameCounter], a
+ xor a
+ ld [wBellsproutAnimationFrame], a
+ ld a, $6
+ ld [wBellsproutAnimationFrameIndex], a
+.asm_15ef8
+ pop af
+ ret nc
+ ld a, [wBellsproutAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_15f35
+ xor a
+ ld [wd548], a
+ ld a, [wRightAlleyCount]
+ cp $2
+ jr c, .noCatchEmMode
+ ld a, $8
+ jr nz, .startCatchEmMode
+ xor a
+.startCatchEmMode
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+.noCatchEmMode
+ ld hl, wd62a
+ call Func_e4a
+ ret nc
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+ ret
+
+.asm_15f35
+ ld a, [wBellsproutAnimationFrameIndex]
+ cp $4
+ jr nz, .asm_15f42
+ ld a, $1
+ ld [wd548], a
+ ret
+
+.asm_15f42
+ ld a, [wBellsproutAnimationFrameIndex]
+ cp $5
+ ret nz
+ ld a, $1
+ ld [wd549], a
+ xor a
+ ld [wBallXVelocity + 1], a
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ lb de, $00, $06
+ call PlaySoundEffect
+ ld a, $5
+ callba Func_10000
+ ret
+
+BellsproutAnimationData: ; 0x15f69
+; Each entry is [duration][OAM id]
+ db $08, $01
+ db $06, $02
+ db $20, $03
+ db $06, $02
+ db $08, $01
+ db $01, $00
+ db $29, $00
+ db $28, $01
+ db $2A, $00
+ db $27, $01
+ db $29, $00
+ db $28, $01
+ db $2B, $00
+ db $28, $01
+ db $00 ; terminator
+
+Func_15f86: ; 0x15f86
+ ld a, [wWhichBumper]
+ and a
+ jr z, .asm_15f99
+ call Func_5fb8
+ call Func_15fa6
+ xor a
+ ld [wWhichBumper], a
+ call Func_15fda
+.asm_15f99
+ ld a, [wd4da]
+ and a
+ ret z
+ dec a
+ ld [wd4da], a
+ call z, Func_5fb8
+ ret
+
+Func_15fa6: ; 0x15fa6
+ ld a, $10
+ ld [wd4da], a
+ ld a, [wWhichBumperId]
+ sub $6
+ ld [wd4db], a
+ sla a
+ inc a
+ jr asm_15fc0
+
+Func_5fb8: ; 0x5fb8
+ ld a, [wd4db]
+ cp $ff
+ ret z
+ sla a
+asm_15fc0
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_16010
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_15fd0
+ ld hl, Data_16080
+.asm_15fd0
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_16010)
+ call Func_10aa
+ ret
+
+Func_15fda: ; 0x15fda
+ ld a, $ff
+ ld [wd803], a
+ ld a, $3
+ ld [wd804], a
+ ld hl, $0200
+ ld a, l
+ ld [wFlipperYForce], a
+ ld a, h
+ ld [wFlipperYForce + 1], a
+ ld a, $80
+ ld [wFlipperCollision], a
+ ld a, [wWhichBumperId]
+ sub $6
+ ld c, a
+ ld b, $0
+ ld hl, CollisionAngleDeltas_1600e
+ add hl, bc
+ ld a, [wCollisionForceAngle]
+ add [hl]
+ ld [wCollisionForceAngle], a
+ lb de, $00, $0b
+ call PlaySoundEffect
+ ret
+
+CollisionAngleDeltas_1600e:
+ db -8, 8
+
+TileDataPointers_16010:
+ dw TileData_16018
+ dw TileData_1601b
+ dw TileData_1601e
+ dw TileData_16021
+
+TileData_16018: ; 0x16018
+ db $01
+ dw TileData_16024
+
+TileData_1601b: ; 0x1601b
+ db $01
+ dw TileData_1603B
+
+TileData_1601e: ; 0x1601e
+ db $01
+ dw TileData_16052
+
+TileData_16021: ; 0x16021
+ db $01
+ dw TileData_16069
+
+TileData_16024: ; 0x16024
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $60
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $61, $62
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $63, $64
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $65, $66
+
+ db $00 ; terminator
+
+TileData_1603B: ; 0x1603B
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $67
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $68, $69
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $6A, $6B
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $6C, $6D
+
+ db $00 ; terminator
+
+TileData_16052: ; 0x16052
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $6E
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $6F, $70
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $71, $72
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $73, $74
+
+ db $00 ; terminator
+
+TileData_16069: ; 0x16069
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $75
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $76, $77
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $78, $79
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $7A, $7B
+
+ db $00 ; terminator
+
+Data_16080:
+ dw Data_16088
+ dw Data_1608b
+ dw Data_1608e
+ dw Data_16091
+
+Data_16088: ; 0x16088
+ db $01
+ dw Data_16094
+
+Data_1608b: ; 0x1608b
+ db $01
+ dw Data_160ab
+
+Data_1608e: ; 0x1608e
+ db $01
+ dw Data_160c2
+
+Data_16091: ; 0x16091
+ db $01
+ dw Data_160d9
+
+Data_16094: ; 0x16094
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $2A
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $2B, $2C
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $2D, $2E
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $2F, $30
+
+ db $00 ; terminator
+
+Data_160ab: ; 0x160ab
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $124
+ db $31
+
+ db $02 ; number of tiles
+ dw vBGMap + $144
+ db $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $164
+ db $34, $35
+
+ db $02 ; number of tiles
+ dw vBGMap + $185
+ db $36, $37
+
+ db $00 ; terminator
+
+Data_160c2: ; 0x160c2
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $2A
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $2C, $2B
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $2E, $2D
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $30, $2F
+
+ db $00 ; terminator
+
+Data_160d9: ; 0x160d9
+ dw LoadTileLists
+ db $07 ; total number of tiles
+
+ db $01 ; number of tiles
+ dw vBGMap + $12F
+ db $31
+
+ db $02 ; number of tiles
+ dw vBGMap + $14E
+ db $33, $32
+
+ db $02 ; number of tiles
+ dw vBGMap + $16E
+ db $35, $34
+
+ db $02 ; number of tiles
+ dw vBGMap + $18D
+ db $37, $36
+
+ db $00 ; terminator
+
+ResolveDittoSlotCollision: ; 0x160f0
+ ld a, [wDittoSlotCollision]
+ and a
+ jr z, .asm_16137
+ xor a
+ ld [wDittoSlotCollision], a
+ ld bc, TenThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ lb de, $00, $21
+ call PlaySoundEffect
+ xor a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wd549], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $11
+ ld [wBallXPos + 1], a
+ ld a, $23
+ ld [wBallYPos + 1], a
+ ld a, $10
+ ld [wd600], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+.asm_16137
+ ld a, [wd600]
+ and a
+ ret z
+ dec a
+ ld [wd600], a
+ cp $f
+ jr nz, .asm_1614f
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1614f
+ cp $c
+ jr nz, .asm_1615e
+ callba Func_dd62
+ ret
+
+.asm_1615e
+ cp $9
+ jr nz, .asm_1616d
+ xor a
+ ld [wd548], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ret
+
+.asm_1616d
+ cp $6
+ jr nz, .asm_1618e
+ callba Func_10ab3
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ ret
+
+.asm_1618e
+ cp $3
+ jr nz, .asm_1619d
+ callba LoadMiniBallGfx
+ ret
+
+.asm_1619d
+ and a
+ ret nz
+ callba LoadBallGfx
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ ret
+
+Func_161af: ; 0x161af
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $fe
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+ jr asm_1620f
+
+Func_161e0: ; 0x161e0
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wBallYPos + 1]
+ sub $86
+ cp $30
+ ret nc
+ ld c, $0
+ ld b, a
+ ld h, b
+ ld l, c
+ srl b
+ rr c
+ srl b
+ rr c
+ srl h
+ rr l
+ add hl, bc
+ ld a, [wBallXPos + 1]
+ sub $38
+ cp $30
+ ret nc
+ ld c, a
+ ld b, $0
+ sla c
+ sla c
+ add hl, bc
+asm_1620f: ; 0x1620f
+ ld bc, BallPhysicsData_f0000
+ add hl, bc
+ ld de, wBallXVelocity
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ push bc
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld c, a
+ ld a, [de]
+ add c
+ ld [de], a
+ inc de
+ inc hl
+ ld a, BANK(BallPhysicsData_f0000)
+ call ReadByteFromBank
+ ld b, a
+ ld a, [de]
+ adc b
+ ld [de], a
+ inc de
+ inc hl
+ bit 7, b
+ jr z, .asm_1624e
+ ld a, c
+ cpl
+ ld c, a
+ ld a, b
+ cpl
+ ld b, a
+ inc bc
+.asm_1624e
+ pop hl
+ bit 7, h
+ jr z, .asm_1625a
+ ld a, l
+ cpl
+ ld l, a
+ ld a, h
+ cpl
+ ld h, a
+ inc hl
+.asm_1625a
+ add hl, bc
+ sla l
+ rl h
+ ld a, h
+ cp $2
+ ret c
+ ld a, [wd804]
+ and a
+ ret nz
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ lb de, $00, $04
+ call PlaySoundEffect
+ ret
+
+Func_16279: ; 0x16279
+ ld a, [wSlotCollision]
+ and a
+ jr z, .asm_162ae
+ xor a
+ ld [wSlotCollision], a
+ ld a, [wd604]
+ and a
+ ret z
+ ld a, [wd603]
+ and a
+ jr nz, .asm_162ae
+ xor a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [wd549], a
+ ld [wBallXPos], a
+ ld [wBallYPos], a
+ ld a, $50
+ ld [wBallXPos + 1], a
+ ld a, $16
+ ld [wBallYPos + 1], a
+ ld a, $13
+ ld [wd603], a
+.asm_162ae
+ ld a, [wd603]
+ and a
+ ret z
+ dec a
+ ld [wd603], a
+ ld a, $18
+ ld [wd606], a
+ ld a, [wd603]
+ cp $12
+ jr nz, .asm_162d4
+ lb de, $00, $21
+ call PlaySoundEffect
+ callba LoadMiniBallGfx
+ ret
+
+.asm_162d4
+ cp $f
+ jr nz, .asm_162e3
+ callba Func_dd62
+ ret
+
+.asm_162e3
+ cp $c
+ jr nz, .asm_162f2
+ xor a
+ ld [wd548], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ret
+
+.asm_162f2
+ cp $9
+ jr nz, .asm_162fa
+ call Func_16352
+ ret
+
+.asm_162fa
+ cp $6
+ jr nz, .asm_16317
+ xor a
+ ld [wd604], a
+ ld a, $5
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ callba LoadMiniBallGfx
+ ret
+
+.asm_16317
+ cp $3
+ jr nz, .asm_16330
+ callba LoadBallGfx
+ ld a, $2
+ ld [wBallYVelocity + 1], a
+ ld a, $80
+ ld [wBallXVelocity], a
+ ret
+
+.asm_16330
+ and a
+ ret nz
+ call Func_16425
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp CATCHEM_MODE_SLOT_REWARD
+ ret nz
+ call GenRandom
+ and $8
+ ld [wRareMonsFlag], a
+ callba StartCatchEmMode
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_16352: ; 0x16352
+ xor a
+ ld [wIndicatorStates + 4], a
+ ld a, $d
+ callba Func_10000
+ jr nc, .asm_1636d
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ret
+
+.asm_1636d
+ ld a, [wd624]
+ cp $3
+ jr nz, .asm_163b3
+ ld a, [wd607]
+ and a
+ jr nz, .asm_163b3
+.asm_1637a
+ ld a, [wBonusStageSlotRewardActive]
+ and a
+ jr nz, .asm_16389
+ xor a
+ ld [wd625], a
+ ld a, $40
+ ld [wd626], a
+.asm_16389
+ xor a
+ ld [wBonusStageSlotRewardActive], a
+ ld a, $1
+ ld [wd495], a
+ ld [wd4ae], a
+ ld a, [wd498]
+ ld c, a
+ ld b, $0
+ ld hl, GoToBonusStageTextIds_RedField
+ add hl, bc
+ ld a, [hl]
+ ld [wd497], a
+ call Func_163f2
+ xor a
+ ld [wd609], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ld a, $1e
+ ld [wd607], a
+ ret
+
+.asm_163b3
+ callba Func_ed8e
+ xor a
+ ld [wd608], a
+ ld a, [wd61d]
+ cp $d
+ jr nc, .asm_1637a
+ ld a, $1
+ ld [wd548], a
+ ld [wd549], a
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp EVOLUTION_MODE_SLOT_REWARD
+ ret nz
+ callba Func_10ab3
+ ld a, [wd7ad]
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $1
+ or c
+ ld [wStageCollisionState], a
+ xor a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+Func_163f2: ; 0x163f2
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld a, [wd497]
+ ld de, GoToDiglettStageText
+ cp STAGE_DIGLETT_BONUS
+ jr z, .asm_1640f
+ ld de, GoToGengarStageText
+ cp STAGE_GENGAR_BONUS
+ jr z, .asm_1640f
+ ld de, GoToMewtwoStageText
+.asm_1640f
+ call LoadTextHeader
+ ld de, $0000
+ call PlaySong
+ rst AdvanceFrame
+ lb de, $3c, $23
+ call PlaySoundEffect
+ ret
+
+GoToBonusStageTextIds_RedField:
+ db STAGE_GENGAR_BONUS
+ db STAGE_MEWTWO_BONUS
+ db STAGE_MEOWTH_BONUS
+ db STAGE_DIGLETT_BONUS
+ db STAGE_SEEL_BONUS
+
+Func_16425: ; 0x16425
+ ld a, [wCurrentStage]
+ and $1
+ sla a
+ ld c, a
+ ld a, [wd604]
+ add c
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1644d
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_16441
+ ld hl, TileDataPointers_164a1
+.asm_16441
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1644d)
+ call Func_10aa
+ ret
+
+TileDataPointers_1644d:
+ dw TileData_16455
+ dw TileData_16458
+ dw TileData_1645b
+ dw TileData_16460
+
+TileData_16455: ; 0x16455
+ db $01
+ dw TileData_16465
+
+TileData_16458: ; 0x16458
+ db $01
+ dw TileData_1646f
+
+TileData_1645b: ; 0x1645b
+ db $02
+ dw TileData_16479
+ dw TileData_16483
+
+TileData_16460: ; 0x16460
+ db $02
+ dw TileData_1648D
+ dw TileData_16497
+
+TileData_16465: ; 0x16465
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldTopBaseGameBoyGfx + $1c0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_1646f: ; 0x1646f
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16479: ; 0x16479
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $48
+ dw StageRedFieldBottomBaseGameBoyGfx + $c80
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16483: ; 0x16483
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $4A
+ dw StageRedFieldBottomBaseGameBoyGfx + $CA0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_1648D: ; 0x1648D
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16497: ; 0x16497
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $4A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $360
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_164a1:
+ dw TileData_164a9
+ dw TileData_164ac
+ dw TileData_164af
+ dw TileData_164b2
+
+TileData_164a9: ; 0x164a9
+ db $01
+ dw TileData_164b5
+
+TileData_164ac: ; 0x164ac
+ db $01
+ dw TileData_164be
+
+TileData_164af: ; 0x164af
+ db $01
+ dw TileData_164c7
+
+TileData_164b2: ; 0x164b2
+ db $01
+ dw TileData_164d5
+
+TileData_164b5: ; 0x164b5
+ dw LoadTileLists
+ db $02
+
+ db $02
+ dw vBGMap + $229
+ db $d4, $d5
+
+ db $00
+
+TileData_164be: ; 0x164be
+ dw LoadTileLists
+ db $02
+
+ db $02
+
+ dw vBGMap + $229
+ db $d6, $d7
+
+ db $00
+
+TileData_164c7: ; 0x164c7
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $9
+ db $38, $39
+
+ db $02
+ dw vBGMap + $29
+ db $3a, $3b
+
+ db $00
+
+TileData_164d5: ; 0x164d5
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $9
+ db $3c, $3d
+
+ db $02
+ dw vBGMap + $29
+ db $3e, $3f
+
+ db $00
+
+Func_164e3: ; 0x164e3
+ ld a, [wd607]
+ and a
+ ret z
+ dec a
+ ld [wd607], a
+ ret nz
+ ld a, [wInSpecialMode]
+ and a
+ ret nz
+ ld a, [wd609]
+ and a
+ jr z, .asm_164ff
+ ld a, [wd498]
+ add $15
+ jr .asm_16506
+
+.asm_164ff
+ ld a, [wd608]
+ and a
+ ret z
+ ld a, $1a
+.asm_16506
+ ld hl, wCurrentStage
+ bit 0, [hl]
+ callba nz, Func_30256
+ ld a, [wd604]
+ and a
+ ret nz
+ ld a, $1
+ ld [wd604], a
+ ld a, $80
+ ld [wIndicatorStates + 4], a
+ ld a, [wCurrentStage]
+ bit 0, a
+ call nz, Func_16425
+ ret
+
+Func_1652d: ; 0x1652d
+ ld a, [wPinballLaunchAlley]
+ and a
+ ret z
+ xor a
+ ld [wPinballLaunchAlley], a
+ ld a, [wd4de]
+ and a
+ jr z, .asm_16566
+ xor a
+ ld [wRightAlleyTrigger], a
+ ld [wLeftAlleyTrigger], a
+ ld [wSecondaryLeftAlleyTrigger], a
+ ld hl, wBallXVelocity
+ ld [hli], a
+ ld [hl], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld a, $80
+ ld [wBallYVelocity], a
+ ld a, $fa
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ lb de, $00, $0a
+ call PlaySoundEffect
+.asm_16566
+ ld a, $ff
+ ld [wPreviousTriggeredGameObject], a
+ ld a, [wd4de]
+ and a
+ ret nz
+ ld a, [wd4e0]
+ and a
+ jr nz, .asm_16582
+ call Func_1658f
+ ld a, $1
+ ld [wd4e0], a
+ ld [wd4de], a
+ ret
+
+.asm_16582
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ ret z
+ ld a, $1
+ ld [wd4de], a
+ ret
+
+Func_1658f: ; 0x1658f
+ ld a, [hGameBoyColorFlag]
+ and a
+ callba nz, LoadGreyBillboardPaletteData
+.showNextMap
+ ld a, [wInitialMapSelectionIndex]
+ inc a
+ cp $7 ; number of maps to choose from at the start of play
+ jr c, .gotMapId
+ xor a ; wrap around to 0
+.gotMapId
+ ld [wInitialMapSelectionIndex], a
+ ld c, a
+ ld b, $0
+ ld hl, RedStageInitialMaps
+ add hl, bc
+ ld a, [hl]
+ ld [wCurrentMap], a
+ push af
+ lb de, $00, $48
+ call PlaySoundEffect
+ pop af
+ add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers
+ callba LoadBillboardPicture
+ ld b, $20 ; number of frames to delay before the next map is shown
+.waitOnCurrentMap
+ push bc
+ callba Func_eeee
+ ld hl, wKeyConfigBallStart
+ call IsKeyPressed
+ jr nz, .ballStartKeyPressed
+ pop bc
+ dec b
+ jr nz, .waitOnCurrentMap
+ jr .showNextMap
+
+.ballStartKeyPressed
+ pop bc
+ callba Func_30253
+ ld bc, StartFromMapText
+ callba Func_3118f
+ ld a, [wCurrentMap]
+ ld [wd4e3], a
+ xor a
+ ld [wd4e2], a
+ ret
+
+RedStageInitialMaps: ; 0x16605
+ db PALLET_TOWN
+ db VIRIDIAN_FOREST
+ db PEWTER_CITY
+ db CERULEAN_CITY
+ db VERMILION_SEASIDE
+ db ROCK_MOUNTAIN
+ db LAVENDER_TOWN
+
+ResolveRedStagePikachuCollision: ; 0x1660c
+ ld a, [wWhichPikachu]
+ and a
+ jr z, .asm_1667b
+ xor a
+ ld [wWhichPikachu], a
+ ld a, [wd51c]
+ and a
+ jr nz, .asm_1667b
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_16634
+ ld a, [wWhichPikachuId]
+ sub $1c
+ ld hl, wd518
+ cp [hl]
+ jr nz, .asm_1667b
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ jr nz, .asm_16667
+.asm_16634
+ ld hl, PikachuSaverAnimationDataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, [wPikachuSaverSlotRewardActive]
+ and a
+ jr nz, .asm_16647
+ xor a
+ ld [wPikachuSaverCharge], a
+.asm_16647
+ ld a, $1
+ ld [wd51c], a
+ xor a
+ ld [wBallXVelocity], a
+ ld [wBallXVelocity + 1], a
+ ld [wBallYVelocity], a
+ ld [wBallYVelocity + 1], a
+ ld [wBallSpin], a
+ ld [wBallRotation], a
+ ld [wd549], a
+ call FillBottomMessageBufferWithBlackTile
+ jr .asm_1667b
+
+.asm_16667
+ ld hl, PikachuSaverAnimation2DataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call CopyHLToDE
+ ld a, $2
+ ld [wd51c], a
+ lb de, $00, $3b
+ call PlaySoundEffect
+.asm_1667b
+ ld a, [wd51c]
+ and a
+ call z, Func_16766
+ call Func_1669e
+ ld a, [wPikachuSaverCharge]
+ cp MAX_PIKACHU_SAVER_CHARGE
+ ret nz
+ ld a, [wd51e]
+ and a
+ ret z
+ dec a
+ ld [wd51e], a
+ cp $5a
+ ret nz
+ lb de, $0f, $22
+ call PlaySoundEffect
+ ret
+
+Func_1669e: ; 0x1669e
+ ld a, [wd51c]
+ cp $1
+ jr nz, .asm_16719
+ ld hl, PikachuSaverAnimationDataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ jr nz, .asm_166f7
+ xor a
+ ld [wd85d], a
+ call Func_310a
+ rst AdvanceFrame
+ ld a, $1
+ callba PlayPikachuSoundClip
+ ld a, $1
+ ld [wd85d], a
+ ld a, $ff
+ ld [wd803], a
+ ld a, $60
+ ld [wd804], a
+ ld hl, wd62e
+ call Func_e4a
+ jr nc, .asm_166f0
+ ld c, $a
+ call Func_e55
+ callba z, Func_30164
+.asm_166f0
+ lb de, $16, $10
+ call PlaySoundEffect
+ ret
+
+.asm_166f7
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $11
+ ret nz
+ ld a, $fc
+ ld [wBallYVelocity + 1], a
+ ld a, $1
+ ld [wd549], a
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_16719
+ cp $2
+ jr nz, .asm_16732
+ ld hl, PikachuSaverAnimation2DataBlueStage
+ ld de, wPikachuSaverAnimationFrameCounter
+ call UpdateAnimation
+ ret nc
+ ld a, [wPikachuSaverAnimationFrameIndex]
+ cp $1
+ ret nz
+ xor a
+ ld [wd51c], a
+ ret
+
+.asm_16732
+ ld a, [hNumFramesDropped]
+ swap a
+ and $1
+ ld [wPikachuSaverAnimationFrame], a
+ ret
+
+PikachuSaverAnimationDataBlueStage: ; 0x1673c
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $05, $03
+ db $05, $02
+ db $05, $04
+ db $05, $05
+ db $05, $02
+ db $06, $06
+ db $06, $07
+ db $06, $08
+ db $06, $02
+ db $06, $05
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $06, $08
+ db $06, $07
+ db $06, $02
+ db $01, $00
+ db $00
+
+PikachuSaverAnimation2DataBlueStage: ; 0x16761
+; Each entry is [duration][OAM id]
+ db $0C, $02
+ db $01, $00
+ db $00
+
+Func_16766: ; 0x16766
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed2
+ jr z, .asm_16774
+ ld hl, wd518
+ ld [hl], $0
+ ret
+
+.asm_16774
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed2
+ ret z
+ ld hl, wd518
+ ld [hl], $1
+ ret
+
+ResolveStaryuCollision: ; 0x16781
+ ld a, [wStaryuCollision]
+ and a
+ jr z, .asm_167bd
+ xor a
+ ld [wStaryuCollision], a
+ ld a, [wd503]
+ and a
+ jr nz, .asm_167c2
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd502]
+ xor $1
+ set 1, a
+ ld [wd502], a
+ ld a, $14
+ ld [wd503], a
+ call Func_16859
+ ld a, $6
+ callba Func_10000
+ ret
+
+.asm_167bd
+ ld a, [wd503]
+ and a
+ ret z
+.asm_167c2
+ dec a
+ ld [wd503], a
+ ret nz
+ ld a, [wd502]
+ res 1, a
+ ld [wd502], a
+ call Func_16859
+ ld a, [wd502]
+ and $1
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $fe
+ or c
+ ld [wStageCollisionState], a
+ callba LoadStageCollisionAttributes
+ call Func_159f4
+ lb de, $00, $07
+ call PlaySoundEffect
+ ld a, [wStageCollisionState]
+ bit 0, a
+ jp nz, Func_15450
+ jp Func_15499
+
+Func_167ff: ; 0x167ff
+ ld a, [wStaryuCollision]
+ and a
+ jr z, .asm_16839
+ xor a
+ ld [wStaryuCollision], a
+ ld a, [wd503]
+ and a
+ jr nz, .asm_1683e
+ ld bc, FiveThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd502]
+ xor $1
+ ld [wd502], a
+ ld a, $14
+ ld [wd503], a
+ call Func_16878
+ ld a, $6
+ callba Func_10000
+ ret
+
+.asm_16839
+ ld a, [wd503]
+ and a
+ ret z
+.asm_1683e
+ dec a
+ ld [wd503], a
+ ret nz
+ ld a, [wd502]
+ and $1
+ ld c, a
+ ld a, [wStageCollisionState]
+ and $fe
+ or c
+ ld [wStageCollisionState], a
+ lb de, $00, $07
+ call PlaySoundEffect
+ ret
+
+Func_16859: ; 0x16859
+ ld a, [wd502]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_16899
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1686c
+ ld hl, TileDataPointers_16910
+.asm_1686c
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_16899)
+ call Func_10aa
+ ret
+
+Func_16878: ; 0x16878
+ ld a, [wd502]
+ and $1
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_1695a
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_1688d
+ ld hl, TileDataPointers_16980
+.asm_1688d
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, Bank(TileDataPointers_1695a)
+ call Func_10aa
+ ret
+
+TileDataPointers_16899:
+ dw TileData_168a1
+ dw TileData_168a8
+ dw TileData_168af
+ dw TileData_168af
+
+TileData_168a1: ; 0x168a1
+ db $03
+ dw TileData_168b6
+ dw TileData_168c0
+ dw TileData_168ca
+
+TileData_168a8: ; 0x168a8
+ db $03
+ dw TileData_168d4
+ dw TileData_168de
+ dw TileData_168e8
+
+TileData_168af: ; 0x168af
+ db $03
+ dw TileData_168f2
+ dw TileData_168fc
+ dw TileData_16906
+
+TileData_168b6: ; 0x168b6
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $50
+ dw StageRedFieldTopBaseGameBoyGfx + $260
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168c0: ; 0x168c0
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $53
+ dw StageRedFieldTopBaseGameBoyGfx + $290
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168ca: ; 0x168ca
+ dw Func_11d2
+ db $10, $01
+ dw vTilesSH tile $56
+ dw StageRedFieldTopBaseGameBoyGfx + $2c0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168d4: ; 0x168d4
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $52
+ dw StageRedFieldTopBaseGameBoyGfx + $280
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168de: ; 0x168de
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $55
+ dw StageRedFieldTopBaseGameBoyGfx + $2b0
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileData_168e8: ; 0x168e8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $50
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $EA0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_168f2: ; 0x168f2
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $51
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_168fc: ; 0x168fc
+ dw Func_11d2
+ db $30, $03
+ dw vTilesSH tile $54
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1110
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16906: ; 0x16906
+ dw Func_11d2
+ db $10, $01
+ dw vTilesSH tile $50
+ dw StageRedFieldTopBaseGameBoyGfx + $260
+ db Bank(StageRedFieldTopBaseGameBoyGfx)
+ db $00
+
+TileDataPointers_16910:
+ dw TileData_16918
+ dw TileData_1691b
+ dw TileData_1691e
+ dw TileData_1691e
+
+TileData_16918: ;0x16918
+ db $01
+ dw TileData_16921
+
+TileData_1691b: ;0x1691b
+ db $01
+ dw TileData_16934
+
+TileData_1691e: ;0x1691e
+ db $01
+ dw TileData_16947
+
+TileData_16921: ; 0x16921
+ dw LoadTileLists
+ db $06
+
+ db $03
+ dw vBGMap + $1C6
+ db $C3, $C4, $C5
+
+ db $02
+ dw vBGMap + $1E7
+ db $C6, $C7
+
+ db $01
+ dw vBGMap + $207
+ db $C8
+
+ db $00
+
+TileData_16934: ; 0x16934
+ dw LoadTileLists
+ db $06
+
+ db $03
+ dw vBGMap + $1C6
+ db $CD, $CE, $C5
+
+ db $02
+ dw vBGMap + $1E7
+ db $C6, $C7
+
+ db $01
+ dw vBGMap + $207
+ db $C8
+
+ db $00
+
+TileData_16947: ; 0x16947
+ dw LoadTileLists
+ db $06
+
+ db $03
+ dw vBGMap + $1C6
+ db $C3, $C4, $C9
+
+ db $02
+ dw vBGMap + $1E7
+ db $CA, $CB
+
+ db $01
+ dw vBGMap + $207
+ db $CC
+
+ db $00
+
+TileDataPointers_1695a:
+ dw TileData_1695e
+ dw TileData_16961
+
+TileData_1695e: ; 0x1695e
+ db $01
+ dw TileData_16964
+
+TileData_16961: ; 0x16961
+ db $01
+ dw TileData_16972
+
+TileData_16964: ; 0x16964
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $BE, $BF
+
+ db $02
+ dw vBGMap + $60
+ db $C0, $C1
+
+ db $00
+
+TileData_16972: ; 0x16972
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $C2, $C3
+
+ db $02
+ dw vBGMap + $60
+ db $C4, $C5
+
+ db $00
+
+TileDataPointers_16980:
+ dw TileData_16984
+ dw TileData_16987
+
+TileData_16984: ; 0x16984
+ db $01
+ dw TileData_1698a
+
+TileData_16987: ; 0x16987
+ db $01
+ dw TileData_16998
+
+TileData_1698a: ; 0x1698a
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $BC, $BD
+
+ db $02
+ dw vBGMap + $60
+ db $BE, $BF
+
+ db $00
+
+TileData_16998: ; 0x16998
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $40
+ db $C0, $C1
+
+ db $02
+ dw vBGMap + $60
+ db $C2, $C3
+
+ db $00
+
+Func_169a6: ; 0x169a6
+ ld a, [hNumFramesDropped]
+ and $1f
+ ret nz
+ ld bc, $0000
+.asm_169ae
+ push bc
+ ld hl, wIndicatorStates
+ add hl, bc
+ bit 7, [hl]
+ jr z, .asm_169c5
+ ld a, [hl]
+ res 7, a
+ ld hl, hNumFramesDropped
+ bit 5, [hl]
+ jr z, .asm_169c2
+ inc a
+.asm_169c2
+ call Func_169cd
+.asm_169c5
+ pop bc
+ inc c
+ ld a, c
+ cp $5
+ jr nz, .asm_169ae
+ ret
+
+Func_169cd: ; 0x169cd
+ push af
+ sla c
+ ld hl, TileDataPointers_169ed
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_169db
+ ld hl, TileDataPointers_16bef
+.asm_169db
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ sla a
+ ld c, a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_169ed)
+ call Func_10aa
+ ret
+
+TileDataPointers_169ed:
+ dw TileDataPointers_169f7
+ dw TileDataPointers_16a01
+ dw TileDataPointers_16a0b
+ dw TileDataPointers_16a0f
+ dw TileDataPointers_16a13
+
+TileDataPointers_169f7: ; 0x169f7
+ dw TileData_16a17
+ dw TileData_16a1e
+ dw TileData_16a25
+ dw TileData_16a2c
+ dw TileData_16a33
+
+TileDataPointers_16a01: ; 0x16a01
+ dw TileData_16a3a
+ dw TileData_16a41
+ dw TileData_16a48
+ dw TileData_16a4f
+ dw TileData_16a56
+
+TileDataPointers_16a0b: ; 0x16a0b
+ dw TileData_16a5d
+ dw TileData_16a60
+
+TileDataPointers_16a0f: ; 0x16a0f
+ dw TileData_16a63
+ dw TileData_16a66
+
+TileDataPointers_16a13: ; 0x16a13
+ dw TileData_16a69
+ dw TileData_16a6e
+
+TileData_16a17: ; 0x16a17
+ db $03
+ dw TileData_16a73
+ dw TileData_16a7d
+ dw TileData_16a87
+
+TileData_16a1e: ; 0x16a1e
+ db $03
+ dw TileData_16a91
+ dw TileData_16a9b
+ dw TileData_16aa5
+
+TileData_16a25: ; 0x16a25
+ db $03
+ dw TileData_16aaf
+ dw TileData_16ab9
+ dw TileData_16ac3
+
+TileData_16a2c: ; 0x16a2c
+ db $03
+ dw TileData_16acd
+ dw TileData_16ad7
+ dw TileData_16ae1
+
+TileData_16a33: ; 0x16a33
+ db $03
+ dw TileData_16aeb
+ dw TileData_16af5
+ dw TileData_16aff
+
+TileData_16a3a: ; 0x16a3a
+ db $03
+ dw TileData_16b09
+ dw TileData_16b13
+ dw TileData_16b1d
+
+TileData_16a41: ; 0x16a41
+ db $03
+ dw TileData_16b27
+ dw TileData_16b31
+ dw TileData_16b3b
+
+TileData_16a48: ; 0x16a48
+ db $03
+ dw TileData_16b45
+ dw TileData_16b4f
+ dw TileData_16b59
+
+TileData_16a4f: ; 0x16a4f
+ db $03
+ dw TileData_16b63
+ dw TileData_16b6d
+ dw TileData_16b77
+
+TileData_16a56: ; 0x16a56
+ db $03
+ dw TileData_16b81
+ dw TileData_16b8b
+ dw TileData_16b95
+
+TileData_16a5d: ; 0x16a5d
+ db $01
+ dw TileData_16b9f
+
+TileData_16a60: ; 0x16a60
+ db $01
+ dw TileData_16ba9
+
+TileData_16a63: ; 0x16a63
+ db $01
+ dw TileData_16bb3
+
+TileData_16a66: ; 0x16a66
+ db $01
+ dw TileData_16bbd
+
+TileData_16a69: ; 0x16a69
+ db $02
+ dw TileData_16bc7
+ dw TileData_16bd1
+
+TileData_16a6e: ; 0x16a6e
+ db $02
+ dw TileData_16bdb
+ dw TileData_16be5
+
+TileData_16a73: ; 0x16a73
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomBaseGameBoyGfx + $ba0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16a7d: ; 0x16a7d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomBaseGameBoyGfx + $bd0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16a87: ; 0x16a87
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomBaseGameBoyGfx + $c00
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16a91: ; 0x16a91
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $380
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16a9b: ; 0x16a9b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aa5: ; 0x16aa5
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aaf: ; 0x16aaf
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3F0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ab9: ; 0x16ab9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $420
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ac3: ; 0x16ac3
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $450
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16acd: ; 0x16acd
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $460
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ad7: ; 0x16ad7
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $490
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16ae1: ; 0x16ae1
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aeb: ; 0x16aeb
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3A
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F30
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16af5: ; 0x16af5
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $3D
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F60
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16aff: ; 0x16aff
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $40
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F90
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b09: ; 0x16b09
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomBaseGameBoyGfx + $c10
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16b13: ; 0x16b13
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomBaseGameBoyGfx + $c40
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16b1d: ; 0x16b1d
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomBaseGameBoyGfx + $c70
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16b27: ; 0x16b27
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4D0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b31: ; 0x16b31
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $500
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b3b: ; 0x16b3b
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $530
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b45: ; 0x16b45
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $540
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b4f: ; 0x16b4f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $570
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b59: ; 0x16b59
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b63: ; 0x16b63
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b6d: ; 0x16b6d
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b77: ; 0x16b77
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $610
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b81: ; 0x16b81
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $41
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1010
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b8b: ; 0x16b8b
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $44
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1040
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b95: ; 0x16b95
+ dw Func_11d2
+ db $10, $01
+ dw vTilesBG tile $47
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1070
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16b9f: ; 0x16b9f
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $20
+ dw StageRedFieldBottomBaseGameBoyGfx + $a00
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16ba9: ; 0x16ba9
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $20
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1080
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16bb3: ; 0x16bb3
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomBaseGameBoyGfx + $a30
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16bbd: ; 0x16bbd
+ dw Func_11d2
+ db $30, $03
+ dw vTilesBG tile $23
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10B0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16bc7: ; 0x16bc7
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1C
+ dw StageRedFieldBottomBaseGameBoyGfx + $9c0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16bd1: ; 0x16bd1
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1E
+ dw StageRedFieldBottomBaseGameBoyGfx + $9e0
+ db Bank(StageRedFieldBottomBaseGameBoyGfx)
+ db $00
+
+TileData_16bdb: ; 0x16bdb
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1C
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $6E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_16be5: ; 0x16be5
+ dw Func_11d2
+ db $20, $02
+ dw vTilesBG tile $1E
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $700
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileDataPointers_16bef:
+ dw TileDataPointers_16bf9
+ dw TileDataPointers_16c03
+ dw TileDataPointers_16c0d
+ dw TileDataPointers_16c11
+ dw TileDataPointers_16c15
+
+TileDataPointers_16bf9: ; 0x16bf9
+ dw TileData_16c19
+ dw TileData_16c1c
+ dw TileData_16c1f
+ dw TileData_16c22
+ dw TileData_16c25
+
+TileDataPointers_16c03: ; 0x16c03
+ dw TileData_16c28
+ dw TileData_16c2b
+ dw TileData_16c2e
+ dw TileData_16c31
+ dw TileData_16c34
+
+TileDataPointers_16c0d: ; 0x16c0d
+ dw TileData_16c37
+ dw TileData_16c3a
+
+TileDataPointers_16c11: ; 0x16c11
+ dw TileData_16c3d
+ dw TileData_16c40
+
+TileDataPointers_16c15: ; 0x16c15
+ dw TileData_16c43
+ dw TileData_16c46
+
+TileData_16c19: ; 0x16c19
+ db $01
+ dw TileData_16c49
+
+TileData_16c1c: ; 0x16c1c
+ db $01
+ dw TileData_16c63
+
+TileData_16c1f: ; 0x16c1f
+ db $01
+ dw TileData_16c7d
+
+TileData_16c22: ; 0x16c22
+ db $01
+ dw TileData_16c97
+
+TileData_16c25: ; 0x16c25
+ db $01
+ dw TileData_16cb1
+
+TileData_16c28: ; 0x16c28
+ db $01
+ dw TileData_16ccb
+
+TileData_16c2b: ; 0x16c2b
+ db $01
+ dw TileData_16ce5
+
+TileData_16c2e: ; 0x16c2e
+ db $01
+ dw TileData_16cff
+
+TileData_16c31: ; 0x16c31
+ db $01
+ dw TileData_16d19
+
+TileData_16c34: ; 0x16c34
+ db $01
+ dw TileData_16d33
+
+TileData_16c37: ; 0x16c37
+ db $01
+ dw TileData_16d4d
+
+TileData_16c3a: ; 0x16c3a
+ db $01
+ dw TileData_16d5a
+
+TileData_16c3d: ; 0x16c3d
+ db $01
+ dw TileData_16d67
+
+TileData_16c40: ; 0x16c40
+ db $01
+ dw TileData_16d74
+
+TileData_16c43: ; 0x16c43
+ db $01
+ dw TileData_16d81
+
+TileData_16c46: ; 0x16c46
+ db $01
+ dw TileData_16d8f
+
+TileData_16c49: ; 0x16c49
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $5E
+
+ db $02
+ dw vBGMap + $43
+ db $5F, $60
+
+ db $02
+ dw vBGMap + $64
+ db $61, $62
+
+ db $01
+ dw vBGMap + $85
+ db $63
+
+ db $01
+ dw vBGMap + $A5
+ db $64
+
+ db $00
+
+TileData_16c63: ; 0x16c63
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $65
+
+ db $02
+ dw vBGMap + $43
+ db $66, $67
+
+ db $02
+ dw vBGMap + $64
+ db $61, $62
+
+ db $01
+ dw vBGMap + $85
+ db $63
+
+ db $01
+ dw vBGMap + $A5
+ db $64
+
+ db $00
+
+TileData_16c7d: ; 0x16c7d
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $65
+
+ db $02
+ dw vBGMap + $43
+ db $66, $67
+
+ db $02
+ dw vBGMap + $64
+ db $68, $69
+
+ db $01
+ dw vBGMap + $85
+ db $63
+
+ db $01
+ dw vBGMap + $A5
+ db $64
+
+ db $00
+
+TileData_16c97: ; 0x16c97
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $65
+
+ db $02
+ dw vBGMap + $43
+ db $66, $67
+
+ db $02
+ dw vBGMap + $64
+ db $68, $69
+
+ db $01
+ dw vBGMap + $85
+ db $6A
+
+ db $01
+ dw vBGMap + $A5
+ db $6B
+
+ db $00
+
+TileData_16cb1: ; 0x16cb1
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $23
+ db $5E
+
+ db $02
+ dw vBGMap + $43
+ db $5F, $60
+
+ db $02
+ dw vBGMap + $64
+ db $68, $69
+
+ db $01
+ dw vBGMap + $85
+ db $6A
+
+ db $01
+ dw vBGMap + $A5
+ db $6B
+
+ db $00
+
+TileData_16ccb: ; 0x16ccb
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $6C
+
+ db $02
+ dw vBGMap + $4F
+ db $6D, $6E
+
+ db $02
+ dw vBGMap + $6E
+ db $6F, $70
+
+ db $01
+ dw vBGMap + $8E
+ db $71
+
+ db $01
+ dw vBGMap + $AE
+ db $72
+
+ db $00
+
+TileData_16ce5: ; 0x16ce5
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $73
+
+ db $02
+ dw vBGMap + $4F
+ db $74, $75
+
+ db $02
+ dw vBGMap + $6E
+ db $6F, $70
+
+ db $01
+ dw vBGMap + $8E
+ db $71
+
+ db $01
+ dw vBGMap + $AE
+ db $72
+
+ db $00
+
+TileData_16cff: ; 0x16cff
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $73
+
+ db $02
+ dw vBGMap + $4F
+ db $74, $75
+
+ db $02
+ dw vBGMap + $6E
+ db $76, $77
+
+ db $01
+ dw vBGMap + $8E
+ db $71
+
+ db $01
+ dw vBGMap + $AE
+ db $72
+
+ db $00
+
+TileData_16d19: ; 0x16d19
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $73
+
+ db $02
+ dw vBGMap + $4F
+ db $74, $75
+
+ db $02
+ dw vBGMap + $6E
+ db $76, $77
+
+ db $01
+ dw vBGMap + $8E
+ db $78
+
+ db $01
+ dw vBGMap + $AE
+ db $79
+
+ db $00
+
+TileData_16d33: ; 0x16d33
+ dw LoadTileLists
+ db $07
+
+ db $01
+ dw vBGMap + $30
+ db $6C
+
+ db $02
+ dw vBGMap + $4F
+ db $6D, $6E
+
+ db $02
+ dw vBGMap + $6E
+ db $76, $77
+
+ db $01
+ dw vBGMap + $8E
+ db $78
+
+ db $01
+ dw vBGMap + $AE
+ db $79
+
+ db $00
+
+TileData_16d4d: ; 0x16d4d
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $6
+ db $48
+
+ db $02
+ dw vBGMap + $26
+ db $49, $4A
+
+ db $00
+
+TileData_16d5a: ; 0x16d5a
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $6
+ db $4B
+
+ db $02
+ dw vBGMap + $26
+ db $4C, $4D
+
+ db $00
+
+TileData_16d67: ; 0x16d67
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $D
+ db $4E
+
+ db $02
+ dw vBGMap + $2C
+ db $4F, $50
+
+ db $00
+
+TileData_16d74: ; 0x16d74
+ dw LoadTileLists
+ db $03
+
+ db $01
+ dw vBGMap + $D
+ db $51
+
+ db $02
+ dw vBGMap + $2C
+ db $52, $53
+
+ db $00
+
+TileData_16d81: ; 0x16d81
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $49
+ db $40, $41
+
+ db $02
+ dw vBGMap + $69
+ db $42, $43
+
+ db $00
+
+TileData_16d8f: ; 0x16d8f
+ dw LoadTileLists
+ db $04
+
+ db $02
+ dw vBGMap + $49
+ db $44, $45
+
+ db $02
+ dw vBGMap + $69
+ db $46, $47
+
+ db $00
+
+ResolveRedStageBonusMultiplierCollision: ; 016d9d
+ ld a, [wWhichBonusMultiplierRailing]
+ and a
+ jp z, Func_16e51
+ xor a
+ ld [wWhichBonusMultiplierRailing], a
+ lb de, $00, $0d
+ call PlaySoundEffect
+ ld a, [wWhichBonusMultiplierRailingId]
+ sub $21
+ jr nz, .asm_16ddc
+ ld a, $9
+ callba Func_10000
+ ld a, [wd610]
+ cp $3
+ jr nz, .asm_16e35
+ ld a, $1
+ ld [wd610], a
+ ld a, $3
+ ld [wd611], a
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ jr .asm_16e35
+
+.asm_16ddc
+ ld a, $a
+ callba Func_10000
+ ld a, [wd611]
+ cp $3
+ jr nz, .asm_16e35
+ ld a, $1
+ ld [wd610], a
+ ld a, $1
+ ld [wd611], a
+ ld a, $80
+ ld [wd612], a
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ ld a, [wd482]
+ inc a
+ cp 100
+ jr c, .asm_16e10
+ ld a, 99
+.asm_16e10
+ ld [wd482], a
+ jr nc, .asm_16e24
+ ld c, $19
+ call Func_e55
+ callba z, Func_30164
+.asm_16e24
+ ld a, [wd60c]
+ ld [wd614], a
+ ld a, [wd60d]
+ ld [wd615], a
+ ld a, $1
+ ld [wd613], a
+.asm_16e35
+ ld bc, TenPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ ld a, [wd60c]
+ call Func_16f28
+ ld a, [wd60d]
+ add $14
+ call Func_16f28
+ ret
+
+Func_16e51: ; 0x16e51
+ call Func_16ef5
+ ld a, [wd612]
+ and a
+ jr z, .asm_16e8f
+ dec a
+ ld [wd612], a
+ cp $70
+ jr nz, .asm_16e6e
+ ld a, $2
+ ld [wd610], a
+ ld a, $2
+ ld [wd611], a
+ jr .asm_16e8f
+
+.asm_16e6e
+ and a
+ jr nz, .asm_16e8f
+ ld a, $3
+ ld [wd610], a
+ xor a
+ ld [wd611], a
+ ld a, [wd482]
+ call Func_16f95
+ ld a, [wd60c]
+ call Func_16f28
+ ld a, [wd60d]
+ add $14
+ call Func_16f28
+ ret
+
+.asm_16e8f
+ ld a, [wd610]
+ cp $2
+ jr c, .asm_16ec1
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_16ea0
+ srl a
+ srl a
+.asm_16ea0
+ ld b, a
+ and $3
+ jr nz, .asm_16ec1
+ bit 3, b
+ jr nz, .asm_16eb6
+ ld a, [wd60c]
+ res 7, a
+ ld [wd60c], a
+ call Func_16f28
+ jr .asm_16ec1
+
+.asm_16eb6
+ ld a, [wd60c]
+ set 7, a
+ ld [wd60c], a
+ call Func_16f28
+.asm_16ec1
+ ld a, [wd611]
+ cp $2
+ ret c
+ cp $3
+ ld a, [hNumFramesDropped]
+ jr c, .asm_16ed1
+ srl a
+ srl a
+.asm_16ed1
+ ld b, a
+ and $3
+ ret nz
+ bit 3, b
+ jr nz, .asm_16ee7
+ ld a, [wd60d]
+ res 7, a
+ ld [wd60d], a
+ add $14
+ call Func_16f28
+ ret
+
+.asm_16ee7
+ ld a, [wd60d]
+ set 7, a
+ ld [wd60d], a
+ add $14
+ call Func_16f28
+ ret
+
+Func_16ef5: ; 0x16ef5
+ ld a, [wd5ca]
+ and a
+ ret nz
+ ld a, [wd613]
+ and a
+ ret z
+ xor a
+ ld [wd613], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5cc
+ ld de, BonusMultiplierText
+ call LoadTextHeader
+ ld hl, wBottomMessageText + $12
+ ld a, [wd614]
+ and $7f
+ jr z, .asm_16f1f
+ add $30
+ ld [hli], a
+.asm_16f1f
+ ld a, [wd615]
+ res 7, a
+ add $30
+ ld [hl], a
+ ret
+
+Func_16f28: ; 0x16f28
+ push af
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr nz, .asm_16f33
+ pop af
+ call Func_16f38
+ ret
+
+.asm_16f33
+ pop af
+ call Func_16f7b
+ ret
+
+Func_16f38: ; 0x16f38
+ push af
+ res 7, a
+ ld hl, wd60e
+ cp $14
+ jr c, .asm_16f47
+ ld hl, wd60f
+ sub $a
+.asm_16f47
+ cp [hl]
+ jr z, .asm_16f5c
+ ld [hl], a
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_16fc8
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_16fc8)
+ call Func_10aa
+.asm_16f5c
+ pop af
+ ld bc, $0000
+ bit 7, a
+ jr z, .asm_16f68
+ res 7, a
+ set 1, c
+.asm_16f68
+ cp $14
+ jr c, .asm_16f6e
+ set 2, c
+.asm_16f6e
+ ld hl, Data_171e4
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(Data_171e4)
+ call Func_10aa
+ ret
+
+Func_16f7b: ; 0x16f7b
+ bit 7, a
+ jr z, .asm_16f83
+ res 7, a
+ add $a
+.asm_16f83
+ ld c, a
+ ld b, $0
+ sla c
+ ld hl, TileDataPointers_17228
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_17228)
+ call Func_10aa
+ ret
+
+Func_16f95: ; 0x16f95
+ ld a, [wd482]
+ inc a
+ cp 100
+ jr c, .asm_16f9f
+ ld a, 99
+.asm_16f9f
+ ld b, a
+ xor a
+ ld hl, Data_16fc1
+ ld c, $7
+.asm_16fa6
+ bit 0, b
+ jr z, .asm_16fac
+ add [hl]
+ daa
+.asm_16fac
+ srl b
+ inc hl
+ dec c
+ jr nz, .asm_16fa6
+ push af
+ swap a
+ and $f
+ ld [wd60c], a
+ pop af
+ and $f
+ ld [wd60d], a
+ ret
+
+Data_16fc1:
+; BCD powers of 2
+ db $01
+ db $02
+ db $04
+ db $08
+ db $16
+ db $32
+ db $64
+
+TileDataPointers_16fc8:
+ dw TileData_16ff0
+ dw TileData_16ff5
+ dw TileData_16ffa
+ dw TileData_16fff
+ dw TileData_17004
+ dw TileData_17009
+ dw TileData_1700e
+ dw TileData_17013
+ dw TileData_17018
+ dw TileData_1701d
+ dw TileData_17022
+ dw TileData_17027
+ dw TileData_1702c
+ dw TileData_17031
+ dw TileData_17036
+ dw TileData_1703b
+ dw TileData_17040
+ dw TileData_17045
+ dw TileData_1704a
+ dw TileData_1704f
+
+TileData_16ff0: ; 0x16ff0
+ db $02
+ dw TileData_17054
+ dw TileData_1705e
+
+TileData_16ff5: ; 0x16ff5
+ db $02
+ dw TileData_17068
+ dw TileData_17072
+
+TileData_16ffa: ; 0x16ffa
+ db $02
+ dw TileData_1707c
+ dw TileData_17086
+
+TileData_16fff: ; 0x16fff
+ db $02
+ dw TileData_17090
+ dw TileData_1709a
+
+TileData_17004: ; 0x17004
+ db $02
+ dw TileData_170a4
+ dw TileData_170ae
+
+TileData_17009: ; 0x17009
+ db $02
+ dw TileData_170b8
+ dw TileData_170c2
+
+TileData_1700e: ; 0x1700e
+ db $02
+ dw TileData_170cc
+ dw TileData_170d6
+
+TileData_17013: ; 0x17013
+ db $02
+ dw TileData_170e0
+ dw TileData_170ea
+
+TileData_17018: ; 0x17018
+ db $02
+ dw TileData_170f4
+ dw TileData_170fe
+
+TileData_1701d: ; 0x1701d
+ db $02
+ dw TileData_17108
+ dw TileData_17112
+
+TileData_17022: ; 0x17022
+ db $02
+ dw TileData_1711c
+ dw TileData_17126
+
+TileData_17027: ; 0x17027
+ db $02
+ dw TileData_17130
+ dw TileData_1713a
+
+TileData_1702c: ; 0x1702c
+ db $02
+ dw TileData_17144
+ dw TileData_1714e
+
+TileData_17031: ; 0x17031
+ db $02
+ dw TileData_17158
+ dw TileData_17162
+
+TileData_17036: ; 0x17036
+ db $02
+ dw TileData_1716c
+ dw TileData_17176
+
+TileData_1703b: ; 0x1703b
+ db $02
+ dw TileData_17180
+ dw TileData_1718a
+
+TileData_17040: ; 0x17040
+ db $02
+ dw TileData_17194
+ dw TileData_1719e
+
+TileData_17045: ; 0x17045
+ db $02
+ dw TileData_171a8
+ dw TileData_171b2
+
+TileData_1704a: ; 0x1704a
+ db $02
+ dw TileData_171bc
+ dw TileData_171c6
+
+TileData_1704f: ; 0x1704f
+ db $02
+ dw TileData_171d0
+ dw TileData_171da
+
+TileData_17054: ; 0x17054
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1280
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1705e: ; 0x1705e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1140
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17068: ; 0x17068
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17072: ; 0x17072
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1160
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1707c: ; 0x1707c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17086: ; 0x17086
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1180
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17090: ; 0x17090
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1709a: ; 0x1709a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170a4: ; 0x170a4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1300
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170ae: ; 0x170ae
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170b8: ; 0x170b8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1320
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170c2: ; 0x170c2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170cc: ; 0x170cc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1340
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170d6: ; 0x170d6
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1200
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170e0: ; 0x170e0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1360
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170ea: ; 0x170ea
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1220
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170f4: ; 0x170f4
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1380
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_170fe: ; 0x170fe
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1240
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17108: ; 0x17108
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $46
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17112: ; 0x17112
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $48
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1260
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1711c: ; 0x1711c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1500
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17126: ; 0x17126
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17130: ; 0x17130
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1520
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1713a: ; 0x1713a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17144: ; 0x17144
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1540
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1714e: ; 0x1714e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1400
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17158: ; 0x17158
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1560
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17162: ; 0x17162
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1420
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1716c: ; 0x1716c
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1580
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17176: ; 0x17176
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1440
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17180: ; 0x17180
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1718a: ; 0x1718a
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1460
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_17194: ; 0x17194
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_1719e: ; 0x1719e
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1480
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171a8: ; 0x171a8
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171b2: ; 0x171b2
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14A0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171bc: ; 0x171bc
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1600
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171c6: ; 0x171c6
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14C0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171d0: ; 0x171d0
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4a
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1620
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+TileData_171da: ; 0x171da
+ dw Func_11d2
+ db $20, $02
+ dw vTilesSH tile $4c
+ dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14E0
+ db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy)
+ db $00
+
+Data_171e4:
+ dw Data_171ec
+ dw Data_171ef
+ dw Data_171f2
+ dw Data_171f5
+
+Data_171ec: ; 0x171ec
+ db $01
+ dw Data_171f8
+
+Data_171ef: ; 0x171ef
+ db $01
+ dw Data_17204
+
+Data_171f2: ; 0x171f2
+ db $01
+ dw Data_17210
+
+Data_171f5: ; 0x171f5
+ db $01
+ dw Data_1721c
+
+Data_171f8: ; 0x171f8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $C6
+
+ db $01
+ dw vBGMap + $24
+ db $C7
+
+ db $00
+
+Data_17204: ; 0x17204
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $C8
+
+ db $01
+ dw vBGMap + $24
+ db $C9
+
+ db $00
+
+Data_17210: ; 0x17210
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $CA
+
+ db $01
+ dw vBGMap + $2F
+ db $CB
+
+ db $00
+
+Data_1721c: ; 0x1721c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $CC
+
+ db $01
+ dw vBGMap + $2F
+ db $CD
+
+ db $00
+
+TileDataPointers_17228:
+ dw TileData_17278
+ dw TileData_1727b
+ dw TileData_1727e
+ dw TileData_17281
+ dw TileData_17284
+ dw TileData_17287
+ dw TileData_1728a
+ dw TileData_1728d
+ dw TileData_17290
+ dw TileData_17293
+ dw TileData_17296
+ dw TileData_17299
+ dw TileData_1729c
+ dw TileData_1729f
+ dw TileData_172a2
+ dw TileData_172a5
+ dw TileData_172a8
+ dw TileData_172ab
+ dw TileData_172ae
+ dw TileData_172b1
+ dw TileData_172b4
+ dw TileData_172b7
+ dw TileData_172ba
+ dw TileData_172bd
+ dw TileData_172c0
+ dw TileData_172c3
+ dw TileData_172c6
+ dw TileData_172c9
+ dw TileData_172cc
+ dw TileData_172cf
+ dw TileData_172d2
+ dw TileData_172d5
+ dw TileData_172d8
+ dw TileData_172db
+ dw TileData_172de
+ dw TileData_172e1
+ dw TileData_172e4
+ dw TileData_172e7
+ dw TileData_172ea
+ dw TileData_172ed
+
+TileData_17278: ; 0x17278
+ db $01
+ dw TileData_172f0
+
+TileData_1727b: ; 0x1727b
+ db $01
+ dw TileData_172fc
+
+TileData_1727e: ; 0x1727e
+ db $01
+ dw TileData_17308
+
+TileData_17281: ; 0x17281
+ db $01
+ dw TileData_17314
+
+TileData_17284: ; 0x17284
+ db $01
+ dw TileData_17320
+
+TileData_17287: ; 0x17287
+ db $01
+ dw TileData_1732c
+
+TileData_1728a: ; 0x1728a
+ db $01
+ dw TileData_17338
+
+TileData_1728d: ; 0x1728d
+ db $01
+ dw TileData_17344
+
+TileData_17290: ; 0x17290
+ db $01
+ dw TileData_17350
+
+TileData_17293: ; 0x17293
+ db $01
+ dw TileData_1735c
+
+TileData_17296: ; 0x17296
+ db $01
+ dw TileData_17368
+
+TileData_17299: ; 0x17299
+ db $01
+ dw TileData_17374
+
+TileData_1729c: ; 0x1729c
+ db $01
+ dw TileData_17380
+
+TileData_1729f: ; 0x1729f
+ db $01
+ dw TileData_1738c
+
+TileData_172a2: ; 0x172a2
+ db $01
+ dw TileData_17398
+
+TileData_172a5: ; 0x172a5
+ db $01
+ dw TileData_173a4
+
+TileData_172a8: ; 0x172a8
+ db $01
+ dw TileData_173b0
+
+TileData_172ab: ; 0x172ab
+ db $01
+ dw TileData_173bc
+
+TileData_172ae: ; 0x172ae
+ db $01
+ dw TileData_173c8
+
+TileData_172b1: ; 0x172b1
+ db $01
+ dw TileData_173d4
+
+TileData_172b4: ; 0x172b4
+ db $01
+ dw TileData_173e0
+
+TileData_172b7: ; 0x172b7
+ db $01
+ dw TileData_173ec
+
+TileData_172ba: ; 0x172ba
+ db $01
+ dw TileData_173f8
+
+TileData_172bd: ; 0x172bd
+ db $01
+ dw TileData_17404
+
+TileData_172c0: ; 0x172c0
+ db $01
+ dw TileData_17410
+
+TileData_172c3: ; 0x172c3
+ db $01
+ dw TileData_1741c
+
+TileData_172c6: ; 0x172c6
+ db $01
+ dw TileData_17428
+
+TileData_172c9: ; 0x172c9
+ db $01
+ dw TileData_17434
+
+TileData_172cc: ; 0x172cc
+ db $01
+ dw TileData_17440
+
+TileData_172cf: ; 0x172cf
+ db $01
+ dw TileData_1744c
+
+TileData_172d2: ; 0x172d2
+ db $01
+ dw TileData_17458
+
+TileData_172d5: ; 0x172d5
+ db $01
+ dw TileData_17464
+
+TileData_172d8: ; 0x172d8
+ db $01
+ dw TileData_17470
+
+TileData_172db: ; 0x172db
+ db $01
+ dw TileData_1747c
+
+TileData_172de: ; 0x172de
+ db $01
+ dw TileData_17488
+
+TileData_172e1: ; 0x172e1
+ db $01
+ dw TileData_17494
+
+TileData_172e4: ; 0x172e4
+ db $01
+ dw TileData_174a0
+
+TileData_172e7: ; 0x172e7
+ db $01
+ dw TileData_174ac
+
+TileData_172ea: ; 0x172ea
+ db $01
+ dw TileData_174b8
+
+TileData_172ed: ; 0x172ed
+ db $01
+ dw TileData_174c4
+
+TileData_172f0: ; 0x172f0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $40
+
+ db $01
+ dw vBGMap + $24
+ db $41
+
+ db $00
+
+TileData_172fc: ; 0x172fc
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $42
+
+ db $01
+ dw vBGMap + $24
+ db $43
+
+ db $00
+
+TileData_17308: ; 0x17308
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $44
+
+ db $01
+ dw vBGMap + $24
+ db $45
+
+ db $00
+
+TileData_17314: ; 0x17314
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $46
+
+ db $01
+ dw vBGMap + $24
+ db $47
+
+ db $00
+
+TileData_17320: ; 0x17320
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $48
+
+ db $01
+ dw vBGMap + $24
+ db $49
+
+ db $00
+
+TileData_1732c: ; 0x1732c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $4A
+
+ db $01
+ dw vBGMap + $24
+ db $4B
+
+ db $00
+
+TileData_17338: ; 0x17338
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $4C
+
+ db $01
+ dw vBGMap + $24
+ db $4D
+
+ db $00
+
+TileData_17344: ; 0x17344
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $4E
+
+ db $01
+ dw vBGMap + $24
+ db $4F
+
+ db $00
+
+TileData_17350: ; 0x17350
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $50
+
+ db $01
+ dw vBGMap + $24
+ db $51
+
+ db $00
+
+TileData_1735c: ; 0x1735c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $52
+
+ db $01
+ dw vBGMap + $24
+ db $53
+
+ db $00
+
+TileData_17368: ; 0x17368
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $2C
+
+ db $01
+ dw vBGMap + $24
+ db $2D
+
+ db $00
+
+TileData_17374: ; 0x17374
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $2E
+
+ db $01
+ dw vBGMap + $24
+ db $2F
+
+ db $00
+
+TileData_17380: ; 0x17380
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $30
+
+ db $01
+ dw vBGMap + $24
+ db $31
+
+ db $00
+
+TileData_1738c: ; 0x1738c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $32
+
+ db $01
+ dw vBGMap + $24
+ db $33
+
+ db $00
+
+TileData_17398: ; 0x17398
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $34
+
+ db $01
+ dw vBGMap + $24
+ db $35
+
+ db $00
+
+TileData_173a4: ; 0x173a4
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $36
+
+ db $01
+ dw vBGMap + $24
+ db $37
+
+ db $00
+
+TileData_173b0: ; 0x173b0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $38
+
+ db $01
+ dw vBGMap + $24
+ db $39
+
+ db $00
+
+TileData_173bc: ; 0x173bc
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $3A
+
+ db $01
+ dw vBGMap + $24
+ db $3B
+
+ db $00
+
+TileData_173c8: ; 0x173c8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $3C
+
+ db $01
+ dw vBGMap + $24
+ db $3D
+
+ db $00
+
+TileData_173d4: ; 0x173d4
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $4
+ db $3E
+
+ db $01
+ dw vBGMap + $24
+ db $3F
+
+ db $00
+
+TileData_173e0: ; 0x173e0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $68
+
+ db $01
+ dw vBGMap + $2F
+ db $69
+
+ db $00
+
+TileData_173ec: ; 0x173ec
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $6A
+
+ db $01
+ dw vBGMap + $2F
+ db $6B
+
+ db $00
+
+TileData_173f8: ; 0x173f8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $6C
+
+ db $01
+ dw vBGMap + $2F
+ db $6D
+
+ db $00
+
+TileData_17404: ; 0x17404
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $6E
+
+ db $01
+ dw vBGMap + $2F
+ db $6F
+
+ db $00
+
+TileData_17410: ; 0x17410
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $70
+
+ db $01
+ dw vBGMap + $2F
+ db $71
+
+ db $00
+
+TileData_1741c: ; 0x1741c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $72
+
+ db $01
+ dw vBGMap + $2F
+ db $73
+
+ db $00
+
+TileData_17428: ; 0x17428
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $74
+
+ db $01
+ dw vBGMap + $2F
+ db $75
+
+ db $00
+
+TileData_17434: ; 0x17434
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $76
+
+ db $01
+ dw vBGMap + $2F
+ db $77
+
+ db $00
+
+TileData_17440: ; 0x17440
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $78
+
+ db $01
+ dw vBGMap + $2F
+ db $79
+
+ db $00
+
+TileData_1744c: ; 0x1744c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $7A
+
+ db $01
+ dw vBGMap + $2F
+ db $7B
+
+ db $00
+
+TileData_17458: ; 0x17458
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $54
+
+ db $01
+ dw vBGMap + $2F
+ db $55
+
+ db $00
+
+TileData_17464: ; 0x17464
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $56
+
+ db $01
+ dw vBGMap + $2F
+ db $57
+
+ db $00
+
+TileData_17470: ; 0x17470
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $58
+
+ db $01
+ dw vBGMap + $2F
+ db $59
+
+ db $00
+
+TileData_1747c: ; 0x1747c
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $5A
+
+ db $01
+ dw vBGMap + $2F
+ db $5B
+
+ db $00
+
+TileData_17488: ; 0x17488
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $5C
+
+ db $01
+ dw vBGMap + $2F
+ db $5D
+
+ db $00
+
+TileData_17494: ; 0x17494
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $5E
+
+ db $01
+ dw vBGMap + $2F
+ db $5F
+
+ db $00
+
+TileData_174a0: ; 0x174a0
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $60
+
+ db $01
+ dw vBGMap + $2F
+ db $61
+
+ db $00
+
+TileData_174ac: ; 0x174ac
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $62
+
+ db $01
+ dw vBGMap + $2F
+ db $63
+
+ db $00
+
+TileData_174b8: ; 0x174b8
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $64
+
+ db $01
+ dw vBGMap + $2F
+ db $65
+
+ db $00
+
+TileData_174c4: ; 0x174c4
+ dw LoadTileLists
+ db $02
+
+ db $01
+ dw vBGMap + $F
+ db $66
+
+ db $01
+ dw vBGMap + $2F
+ db $67
+
+ db $00
+
+Func_174d0: ; 0x174d0
+ call Func_174ea
+ ret nc
+ ; fall through
+
+Func_174d4: ; 0x174d4
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_17528
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, $5
+ ld de, LoadTileLists
+ call Func_10c5
+ ret
+
+Func_174ea: ; 0x174ea
+ ld a, [wd624]
+ ld hl, wd625
+ cp [hl]
+ ret z
+ ld a, [wd626]
+ dec a
+ ld [wd626], a
+ jr nz, .asm_17514
+ ld a, [wd625]
+ ld [wd624], a
+ cp $3
+ jr c, .asm_1750f
+ ld a, $1
+ ld [wd609], a
+ ld a, $3
+ ld [wd607], a
+.asm_1750f
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_17514
+ and $7
+ ret nz
+ ld a, [wd626]
+ bit 3, a
+ jr nz, .asm_17523
+ ld a, [wd624]
+ scf
+ ret
+
+.asm_17523
+ ld a, [wd625]
+ scf
+ ret
+
+TileDataPointers_17528:
+ dw TileData_17530
+ dw TileData_1753B
+ dw TileData_17546
+ dw TileData_17551
+
+TileData_17530: ; 0x17530
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $B0, $B1, $B0, $B1, $B0, $B1
+ db $00
+
+TileData_1753B: ; 0x1753B
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $AE, $AF, $B0, $B1, $B0, $B1
+ db $00
+
+TileData_17546: ; 0x17546
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $AE, $AF, $AE, $AF, $B0, $B1
+ db $00
+
+TileData_17551: ; 0x17551
+ db $06 ; total number of tiles
+
+ db $06 ; number of tiles
+ dw $9907
+ db $AE, $AF, $AE, $AF, $AE, $AF
+ db $00
diff --git a/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm b/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm new file mode 100755 index 0000000..19f87cc --- /dev/null +++ b/engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm @@ -0,0 +1,2807 @@ +ResolveSeelBonusGameObjectCollisions: ; 0x25c5a
+ call Func_25da3
+ call Func_25ced
+ ld a, [wd793]
+ cp $14
+ jr c, .asm_25c98
+ ld a, [wd794]
+ cp $2
+ jr nc, .asm_25c98
+ ld a, $1
+ ld [wd498], a
+ ld de, $0000
+ call PlaySong
+ ld a, $1
+ ld [wd49a], a
+ call FillBottomMessageBufferWithBlackTile
+ call Func_30db
+ ld hl, wd5dc
+ ld de, SeelStageClearedText
+ call LoadTextHeader
+ ld a, $2
+ ld [wd794], a
+ lb de, $4b, $2a
+ call PlaySoundEffect
+.asm_25c98
+ ld a, [wd794]
+ cp $2
+ jr nz, .asm_25cb0
+ ld a, [wSFXTimer]
+ and a
+ jr nz, .asm_25cb0
+ ld de, $0003
+ call PlaySong
+ ld a, $5
+ ld [wd794], a
+.asm_25cb0
+ ld a, [wd794]
+ cp $2
+ jr z, .asm_25cc1
+ callba Func_107f8
+.asm_25cc1
+ ld a, [wd57e]
+ and a
+ ret z
+ xor a
+ ld [wd57e], a
+ ld a, $1
+ ld [wd7be], a
+ call Func_2862
+ callba StopTimer
+ ld a, $3
+ ld [wd791], a
+ ld a, [wd794]
+ cp $5
+ ret z
+ ld a, $1
+ ld [wd794], a
+ ret
+
+Func_25ced: ; 0x25ced
+ ld a, [wd766]
+ and a
+ ret nz
+ ld a, [wd4b4]
+ cp $8a
+ ret nc
+ ld a, $1
+ ld [wStageCollisionState], a
+ ld [wd766], a
+ callba LoadStageCollisionAttributes
+ call Func_25d0e
+ ret
+
+Func_25d0e: ; 0x25d0e
+ ld a, [wStageCollisionState]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_25d2b
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_25d21
+ ld hl, TileDataPointers_25d67
+.asm_25d21
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_25d2b)
+ call Func_10aa
+ ret
+
+TileDataPointers_25d2b:
+ dw TileData_25d2f
+ dw TileData_25d32
+
+TileData_25d2f: ; 0x25d2f
+ db $01
+ dw TileData_25d35
+
+TileData_25d32: ; 0x25d32
+ db $01
+ dw TileData_25d4e
+
+TileData_25d35: ; 0x25d35
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $1F, $20
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $1D, $1E
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $1B, $1C
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $17, $18
+
+ db $00 ; terminator
+
+TileData_25d4e: ; 0x25d4e
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $24, $F9
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $22, $04
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $36, $37, $FE
+
+ db $02 ; number of tiles
+ dw vBGMap + $172
+ db $35, $F9
+
+ db $00 ; terminator
+
+TileDataPointers_25d67:
+ dw TileData_25d6b
+ dw TileData_25d6e
+
+TileData_25d6b: ; 0x25d6b
+ db $01
+ dw TileData_25d71
+
+TileData_25d6e: ; 0x25d6e
+ db $01
+ dw TileData_25d8a
+
+TileData_25d71: ; 0x25d71
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $11, $10
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $0E, $0D
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $80, $0B, $0A
+
+ db $02
+ dw vBGMap + $172
+ db $07, $06
+
+ db $00 ; terminator
+
+TileData_25d8a: ; 0x25d8a
+ dw LoadTileLists
+ db $09 ; total number of tiles
+
+ db $02 ; number of tiles
+ dw vBGMap + $113
+ db $0F, $F4
+
+ db $02 ; number of tiles
+ dw vBGMap + $133
+ db $0C, $FB
+
+ db $03 ; number of tiles
+ dw vBGMap + $152
+ db $09, $08, $F8
+
+ db $02
+ dw vBGMap + $172
+ db $04, $F4
+
+ db $00 ; terminator
+
+Func_25da3: ; 0x25da3
+ ld a, [wd767]
+ and a
+ jp z, .asm_25e38
+ xor a
+ ld [wd767], a
+ ld a, [wd768]
+ sla a
+ ld c, a
+ sla a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ ld hl, wd76c
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, $9
+ ld [de], a
+ dec de
+ dec de
+ dec de
+ push bc
+ ld hl, SeelAnimationData10
+ call CopyHLToDE
+ pop bc
+ ld hl, wd76e
+ add hl, bc
+ ld a, [hl]
+ ld [wd79c], a
+ ld hl, wd770
+ add hl, bc
+ ld a, [hl]
+ add $8
+ ld [wd79e], a
+ ld a, [wd792]
+ cp $9
+ jr nz, .asm_25df1
+ ld a, $0
+ ld [wd792], a
+ ld [wd79a], a
+.asm_25df1
+ ld a, [wd792]
+ dec a
+ cp $ff
+ jr z, .asm_25e04
+ ld [wd79a], a
+ ld de, wd79a
+ call Func_261f9
+ jr .asm_25e07
+
+.asm_25e04
+ ld [wd79a], a
+.asm_25e07
+ ld a, $33
+ ld [wd803], a
+ ld a, $8
+ ld [wd804], a
+ lb de, $00, $30
+ call PlaySoundEffect
+ call Func_25e85
+ ld hl, wd792
+ inc [hl]
+ ld a, [wd793]
+ cp $14
+ ret nc
+ ld hl, wd793
+ inc [hl]
+ ld a, [wd792]
+ dec a
+ ld b, a
+ ld a, [hl]
+ add b
+ ld [hl], a
+ ld a, $1
+ ld [wd64e], a
+ call Func_262f4
+.asm_25e38
+ ld de, wd76c ; I think these three calls are one for each Seel swimming around
+ call Func_25f47
+ ld de, wd776
+ call Func_25f47
+ ld de, wd780
+ call Func_25f47
+ ld a, [wd792]
+ dec a
+ cp $ff
+ jr z, .asm_25e5d
+ ld [wd79a], a
+ ld de, wd79a
+ call Func_26212
+ jr .asm_25e60
+
+.asm_25e5d
+ ld [wd79a], a
+.asm_25e60
+ ld bc, $087a ; again, probably one call for each Seel swimming around
+ ld de, wd76d
+ ld hl, wd772
+ call Func_25ec5
+ ld bc, $087a
+ ld de, wd777
+ ld hl, wd77c
+ call Func_25ec5
+ ld bc, $087a
+ ld de, wd781
+ ld hl, wd786
+ call Func_25ec5
+ ret
+
+Func_25e85: ; 0x25e85
+ ld a, [wd792]
+ inc a
+ ld d, $1
+ ld e, a
+ ld a, $1
+.asm_25e8e
+ cp e
+ jr z, .asm_25e96
+ sla d
+ inc a
+ jr .asm_25e8e
+
+.asm_25e96
+ push de
+ ld a, d
+ cp $32
+ jr nc, .asm_25ead
+ ld bc, OneHundredThousandPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ pop de
+ dec d
+ jr .asm_25ebf
+
+.asm_25ead
+ ld bc, FiveMillionPoints
+ callba AddBigBCD6FromQueueWithBallMultiplier
+ pop de
+ ld a, d
+ sub $32
+ ld d, a
+.asm_25ebf
+ ld a, d
+ cp $0
+ jr nz, .asm_25e96
+ ret
+
+Func_25ec5: ; 0x25ec5
+ dec de
+ ld a, [de]
+ cp $1
+ jr z, .asm_25ece
+ cp $4
+ ret nz
+.asm_25ece
+ inc de
+ push hl
+ ld a, [hld]
+ push af
+ push bc
+ ld a, [hl]
+ and $f
+ ld c, a
+ ld b, $0
+ ld hl, SeelSwimmingYOffsets
+ add hl, bc
+ pop bc
+ pop af
+ and a
+ jr nz, .asm_25f05
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ adc $0
+ ld [de], a
+ pop hl
+ cp c
+ ret c
+ ld a, $1
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ ld a, $7
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ ld d, h
+ ld e, l
+ ld hl, SeelAnimationData8
+ call CopyHLToDE
+ ret
+
+.asm_25f05
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ inc de
+ ld a, [de]
+ sbc $0
+ ld [de], a
+ pop hl
+ cp b
+ ret nc
+ xor a
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ dec hl
+ ld a, $8
+ ld [hl], a
+ dec hl
+ dec hl
+ dec hl
+ ld d, h
+ ld e, l
+ ld hl, SeelAnimationData9
+ call CopyHLToDE
+ ret
+
+SeelSwimmingYOffsets:
+ db $31, $32, $33, $34, $35, $36, $37, $36, $35, $34, $33, $32, $33, $34, $35, $36
+ db $37, $38, $39, $3A, $3B, $3A, $39, $38, $37, $36, $35, $34, $33, $32, $31, $30
+
+Func_25f47: ; 0x25f47
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelAnimationsTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ ld a, [de]
+ rst JumpTable ; calls JumpToFuncInTable
+CallTable_25f5f: ; 0x25f5f
+ dw Func_25f77
+ dw Func_25fbe
+ dw Func_25ff3
+ dw Func_2602a
+ dw Func_2604c
+ dw Func_2607f
+ dw Func_260b6
+ dw Func_260d8
+ dw Func_260e2
+ dw Func_260ec
+ dw Func_26109
+ dw Func_26120
+
+Func_25f77: ; 0x25f77
+ dec de
+ ld a, [de]
+ cp $2
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ dec a
+ ld [de], a
+ ld a, $3
+ jr z, .asm_25f8f
+ pop de
+ xor a
+ jp Func_26137
+
+.asm_25f8f
+ ld hl, wd792
+ ld [hl], $0
+ call GenRandom
+ bit 7, a
+ jr z, .asm_25fa2
+ inc de
+ ld a, $1
+ ld [de], a
+ dec de
+ jr .asm_25fa7
+
+.asm_25fa2
+ inc de
+ ld a, $0
+ ld [de], a
+ dec de
+.asm_25fa7
+ inc de
+ ld a, [de]
+ and a
+ jr z, .asm_25fb0
+ ld a, $6
+ jr .asm_25fb2
+
+.asm_25fb0
+ ld a, $3
+.asm_25fb2
+ push af
+ lb de, $00, $31
+ call PlaySoundEffect
+ pop af
+ pop de
+ jp Func_26137
+
+Func_25fbe: ; 0x25fbe
+ dec de
+ ld a, [de]
+ cp $4
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ dec a
+ ld [de], a
+ jr z, .asm_25fd5
+ pop de
+ ld a, $1
+ jp Func_26137
+
+.asm_25fd5
+ ld a, [wd791]
+ cp $0
+ jr z, .asm_25fe9
+ ld a, $2
+ ld [de], a
+ pop de
+ ld a, $4
+ ld [de], a
+ ld a, $1
+ jp Func_26137
+ ret ; unused instruction
+
+.asm_25fe9
+ ld hl, wd791
+ inc [hl]
+ pop de
+ ld a, $2
+ jp Func_26137
+
+Func_25ff3: ; 0x25ff3
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ xor a
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [wd792]
+ cp $6
+ jr nc, .asm_26020
+ cp $2
+ jr nc, .asm_26016
+ ld a, $3
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_26016
+ ld a, $2
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_26020
+ ld a, $1
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+Func_2602a: ; 0x2602a
+ dec de
+ ld a, [de]
+ cp $9
+ ret nz
+ ld a, $1
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ call GenRandom
+ bit 7, a
+ jr z, .asm_26044
+ ld a, $3
+ jr .asm_26046
+
+.asm_26044
+ ld a, $5
+.asm_26046
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_2604c: ; 0x2604c
+ dec de
+ ld a, [de]
+ cp $4
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ dec a
+ ld [de], a
+ jr z, .asm_26063
+ pop de
+ ld a, $4
+ jp Func_26137
+
+.asm_26063
+ ld a, [wd791]
+ cp $0
+ jr z, .asm_26075
+ ld a, $2
+ ld [de], a
+ pop de
+ ld a, $4
+ ld [de], a
+ jp Func_26137
+ ret ; unused instruction
+
+.asm_26075
+ ld hl, wd791
+ inc [hl]
+ pop de
+ ld a, $5
+ jp Func_26137
+
+Func_2607f: ; 0x2607f
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ xor a
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [wd792]
+ cp $6
+ jr nc, .asm_260ac
+ cp $2
+ jr nc, .asm_260a2
+ ld a, $3
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_260a2
+ ld a, $2
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+.asm_260ac
+ ld a, $1
+ ld [de], a
+ lb de, $00, $31
+ call PlaySoundEffect
+ ret
+
+Func_260b6: ; 0x260b6
+ dec de
+ ld a, [de]
+ cp $9
+ ret nz
+ ld a, $4
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ call GenRandom
+ bit 7, a
+ jr z, .asm_260d0
+ ld a, $3
+ jr .asm_260d2
+
+.asm_260d0
+ ld a, $5
+.asm_260d2
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_260d8: ; 0x260d8
+ dec de
+ ld a, [de]
+ cp $5
+ ret nz
+ ld a, $4
+ jp Func_26137
+
+Func_260e2: ; 0x260e2
+ dec de
+ ld a, [de]
+ cp $5
+ ret nz
+ ld a, $1
+ jp Func_26137
+
+Func_260ec: ; 0x260ec
+ dec de
+ ld a, [de]
+ cp $1
+ ret nz
+ push de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [de]
+ and a
+ jr z, .asm_26103
+ pop de
+ ld a, $b
+ jp Func_26137
+
+.asm_26103
+ pop de
+ ld a, $a
+ jp Func_26137
+
+Func_26109: ; 0x26109
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ ld a, $1
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, $5
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_26120: ; 0x26120
+ dec de
+ ld a, [de]
+ cp $7
+ ret nz
+ ld a, $4
+ call Func_26137
+ inc de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, $5
+ ld [de], a
+ ld hl, wd791
+ dec [hl]
+ ret
+
+Func_26137: ; 0x26137
+ push af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelAnimationsTable
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ call CopyHLToDE
+ pop de
+ inc de
+ pop af
+ ld [de], a
+ ret
+
+SeelAnimationsTable: ; 0x2614f
+ dw SeelAnimationData1
+ dw SeelAnimationData2
+ dw SeelAnimationData3
+ dw SeelAnimationData4
+ dw SeelAnimationData5
+ dw SeelAnimationData6
+ dw SeelAnimationData7
+ dw SeelAnimationData8
+ dw SeelAnimationData9
+ dw SeelAnimationData10
+ dw SeelAnimationData11
+ dw SeelAnimationData12
+
+SeelAnimationData1:
+ db $1C, $00
+ db $1C, $01
+ db $00 ; terminator
+
+SeelAnimationData2:
+ db $0C, $03
+ db $08, $04
+ db $0C, $05
+ db $08, $04
+ db $00 ; terminator
+
+SeelAnimationData3:
+ db $04, $06
+ db $04, $07
+ db $05, $08
+ db $05, $09
+ db $06, $0A
+ db $04, $0B
+ db $08, $0C
+ db $00 ; terminator
+
+SeelAnimationData4:
+ db $08, $0C
+ db $04, $0B
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $0E
+ db $04, $0F
+ db $00 ; terminator
+
+SeelAnimationData5:
+ db $0C, $10
+ db $08, $11
+ db $0C, $12
+ db $08, $11
+ db $00 ; terminator
+
+SeelAnimationData6:
+ db $04, $13
+ db $04, $14
+ db $05, $08
+ db $05, $09
+ db $06, $0A
+ db $04, $0B
+ db $08, $0C
+ db $00 ; terminator
+
+SeelAnimationData7:
+ db $08, $0C
+ db $04, $0B
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $15
+ db $04, $16
+ db $00 ; terminator
+
+SeelAnimationData8:
+ db $04, $06
+ db $04, $07
+ db $06, $0A
+ db $04, $15
+ db $04, $16
+ db $00 ; terminator
+
+SeelAnimationData9:
+ db $04, $13
+ db $04, $14
+ db $06, $0A
+ db $04, $0E
+ db $04, $0F
+ db $00 ; terminator
+
+SeelAnimationData10:
+ db $10, $02
+ db $00 ; terminator
+
+SeelAnimationData11:
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $0E
+ db $04, $0F
+ db $00 ; terminator
+
+SeelAnimationData12:
+ db $06, $0D
+ db $10, $17
+ db $06, $0A
+ db $05, $09
+ db $05, $08
+ db $04, $15
+ db $04, $16
+ db $00 ; terminator
+
+Func_261f9: ; 0x261f9
+ ld a, $ff
+ ld [wd795], a
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelStageAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ dec de
+ dec de
+ dec de
+ call CopyHLToDE
+ ret
+
+Func_26212: ; 0x26212
+ ld a, [de]
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, SeelStageAnimations
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push de
+ dec de
+ dec de
+ dec de
+ call UpdateAnimation
+ pop de
+ ret nc
+ dec de
+ ld a, [de]
+ cp $a
+ ret nz
+ xor a
+ ld [de], a
+ ld [wd79c], a
+ ld [wd79e], a
+ ld a, a
+ ld [wd795], a
+ ret
+
+SeelStageAnimations:
+ dw SeelStageAnimationData1
+ dw SeelStageAnimationData1
+ dw SeelStageAnimationData2
+ dw SeelStageAnimationData3
+ dw SeelStageAnimationData4
+ dw SeelStageAnimationData5
+ dw SeelStageAnimationData6
+ dw SeelStageAnimationData7
+ dw SeelStageAnimationData8
+
+SeelStageAnimationData1:
+ db $02, $00
+ db $02, $01
+ db $02, $02
+ db $10, $00
+ db $04, $18
+ db $04, $00
+ db $04, $18
+ db $04, $00
+ db $04, $18
+ db $04, $00
+ db $00 ; terminator
+
+SeelStageAnimationData2:
+ db $02, $03
+ db $02, $04
+ db $02, $05
+ db $10, $03
+ db $04, $18
+ db $04, $03
+ db $04, $18
+ db $04, $03
+ db $04, $18
+ db $04, $03
+ db $00 ; terminator
+
+SeelStageAnimationData3:
+ db $02, $06
+ db $02, $07
+ db $02, $08
+ db $10, $06
+ db $04, $18
+ db $04, $06
+ db $04, $18
+ db $04, $06
+ db $04, $18
+ db $04, $06
+ db $00 ; terminator
+
+SeelStageAnimationData4:
+ db $02, $09
+ db $02, $0A
+ db $02, $0B
+ db $10, $09
+ db $04, $18
+ db $04, $09
+ db $04, $18
+ db $04, $09
+ db $04, $18
+ db $04, $09
+ db $00 ; terminator
+
+SeelStageAnimationData5:
+ db $02, $0C
+ db $02, $0D
+ db $02, $0E
+ db $10, $0C
+ db $04, $18
+ db $04, $0C
+ db $04, $18
+ db $04, $0C
+ db $04, $18
+ db $04, $0C
+ db $00 ; terminator
+
+SeelStageAnimationData6:
+ db $02, $0F
+ db $02, $10
+ db $02, $11
+ db $10, $0F
+ db $04, $18
+ db $04, $0F
+ db $04, $18
+ db $04, $0F
+ db $04, $18
+ db $04, $0F
+ db $00 ; terminator
+
+SeelStageAnimationData7:
+ db $02, $12
+ db $02, $13
+ db $02, $14
+ db $10, $12
+ db $04, $18
+ db $04, $12
+ db $04, $18
+ db $04, $12
+ db $04, $18
+ db $04, $12
+ db $00 ; terminator
+
+SeelStageAnimationData8:
+ db $02, $15
+ db $02, $16
+ db $02, $17
+ db $10, $15
+ db $04, $18
+ db $04, $15
+ db $04, $18
+ db $04, $15
+ db $04, $18
+ db $04, $15
+ db $00 ; terminator
+
+Func_262f4: ; 0x262f4
+ ld a, [wd793]
+ ld c, a
+ ld b, $0
+.asm_262fa
+ ld a, c
+ and a
+ jr z, .asm_26306
+ ld a, b
+ add $8
+ ld b, a
+ dec c
+ ld a, c
+ jr .asm_262fa
+
+.asm_26306
+ ld a, b
+ and a
+ jr z, .asm_2630c
+ sub $8
+.asm_2630c
+ ld [wd652], a
+ ld a, [wd792]
+ and a
+ jr z, .asm_2631b
+ ld b, a
+ ld a, [wd793]
+ inc a
+ sub b
+.asm_2631b
+ ld [wd651], a
+ ld a, [wd793]
+ cp $15
+ jr c, .asm_2632a
+ ld a, $14
+ ld [wd793], a
+.asm_2632a
+ push af
+ xor a
+ ld [wd650], a
+ pop af
+ sla a
+ ld c, a
+ ld b, $0
+ ld hl, TileDataPointers_2634a
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .asm_26340
+ ld hl, TileDataPointers_26764
+.asm_26340
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, Bank(TileDataPointers_2634a)
+ call Func_10aa
+ ret
+
+TileDataPointers_2634a:
+ dw TileData_26374
+ dw TileData_26377
+ dw TileData_2637a
+ dw TileData_2637d
+ dw TileData_26380
+ dw TileData_26383
+ dw TileData_26386
+ dw TileData_26389
+ dw TileData_2638c
+ dw TileData_2638f
+ dw TileData_26392
+ dw TileData_26395
+ dw TileData_26398
+ dw TileData_2639b
+ dw TileData_2639e
+ dw TileData_263a1
+ dw TileData_263a4
+ dw TileData_263a7
+ dw TileData_263aa
+ dw TileData_263ad
+ dw TileData_263b0
+
+TileData_26374: ; 0x26374
+ db $01
+ dw TileData_263b3
+
+TileData_26377: ; 0x26377
+ db $01
+ dw TileData_263e0
+
+TileData_2637a: ; 0x2637a
+ db $01
+ dw TileData_2640d
+
+TileData_2637d: ; 0x2637d
+ db $01
+ dw TileData_2643a
+
+TileData_26380: ; 0x26380
+ db $01
+ dw TileData_26467
+
+TileData_26383: ; 0x26383
+ db $01
+ dw TileData_26494
+
+TileData_26386: ; 0x26386
+ db $01
+ dw TileData_264c1
+
+TileData_26389: ; 0x26389
+ db $01
+ dw TileData_264ee
+
+TileData_2638c: ; 0x2638c
+ db $01
+ dw TileData_2651b
+
+TileData_2638f: ; 0x2638f
+ db $01
+ dw TileData_26548
+
+TileData_26392: ; 0x26392
+ db $01
+ dw TileData_26575
+
+TileData_26395: ; 0x26395
+ db $01
+ dw TileData_265a2
+
+TileData_26398: ; 0x26398
+ db $01
+ dw TileData_265cf
+
+TileData_2639b: ; 0x2639b
+ db $01
+ dw TileData_265fc
+
+TileData_2639e: ; 0x2639e
+ db $01
+ dw TileData_26629
+
+TileData_263a1: ; 0x263a1
+ db $01
+ dw TileData_26656
+
+TileData_263a4: ; 0x263a4
+ db $01
+ dw TileData_26683
+
+TileData_263a7: ; 0x263a7
+ db $01
+ dw TileData_266b0
+
+TileData_263aa: ; 0x263aa
+ db $01
+ dw TileData_266dd
+
+TileData_263ad: ; 0x263ad
+ db $01
+ dw TileData_2670a
+
+TileData_263b0: ; 0x263b0
+ db $01
+ dw TileData_26737
+
+TileData_263b3: ; 0x263b3
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $01, $30, $31
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_263e0: ; 0x263e0
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $30, $31
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2640d: ; 0x2640d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $31
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2643a: ; 0x2643a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26467: ; 0x26467
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26494: ; 0x26494
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_264c1: ; 0x264c1
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_264ee: ; 0x264ee
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2651b: ; 0x2651b
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26548: ; 0x26548
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26575: ; 0x26575
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_265a2: ; 0x265a2
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_265cf: ; 0x265cf
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $32, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_265fc: ; 0x265fc
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $32, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26629: ; 0x26629
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $32
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26656: ; 0x26656
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $32, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_26683: ; 0x26683
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $32, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_266b0: ; 0x266b0
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $33
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_266dd: ; 0x266dd
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $34, $04
+
+ db $00 ; terminator
+
+TileData_2670a: ; 0x2670a
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $3B, $04
+
+ db $00 ; terminator
+
+TileData_26737: ; 0x26737
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $38, $39, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $3A, $3A, $3A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $3A, $3A, $3A
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $3B, $38
+
+ db $00 ; terminator
+
+TileDataPointers_26764:
+ dw TileData_2678e
+ dw TileData_26791
+ dw TileData_26794
+ dw TileData_26797
+ dw TileData_2679a
+ dw TileData_2679d
+ dw TileData_267a0
+ dw TileData_267a3
+ dw TileData_267a6
+ dw TileData_267a9
+ dw TileData_267ac
+ dw TileData_267af
+ dw TileData_267b2
+ dw TileData_267b5
+ dw TileData_267b8
+ dw TileData_267bb
+ dw TileData_267be
+ dw TileData_267c1
+ dw TileData_267c4
+ dw TileData_267c7
+ dw TileData_267ca
+
+TileData_2678e: ; 0x2678e
+ db $01
+ dw TileData_267cd
+
+TileData_26791: ; 0x26791
+ db $01
+ dw TileData_267fa
+
+TileData_26794: ; 0x26794
+ db $01
+ dw TileData_26827
+
+TileData_26797: ; 0x26797
+ db $01
+ dw TileData_26854
+
+TileData_2679a: ; 0x2679a
+ db $01
+ dw TileData_26881
+
+TileData_2679d: ; 0x2679d
+ db $01
+ dw TileData_268ae
+
+TileData_267a0: ; 0x267a0
+ db $01
+ dw TileData_268db
+
+TileData_267a3: ; 0x267a3
+ db $01
+ dw TileData_26908
+
+TileData_267a6: ; 0x267a6
+ db $01
+ dw TileData_26935
+
+TileData_267a9: ; 0x267a9
+ db $01
+ dw TileData_26962
+
+TileData_267ac: ; 0x267ac
+ db $01
+ dw TileData_2698f
+
+TileData_267af: ; 0x267af
+ db $01
+ dw TileData_269bc
+
+TileData_267b2: ; 0x267b2
+ db $01
+ dw TileData_269e9
+
+TileData_267b5: ; 0x267b5
+ db $01
+ dw TileData_26a16
+
+TileData_267b8: ; 0x267b8
+ db $01
+ dw TileData_26a43
+
+TileData_267bb: ; 0x267bb
+ db $01
+ dw TileData_26a70
+
+TileData_267be: ; 0x267be
+ db $01
+ dw TileData_26a9d
+
+TileData_267c1: ; 0x267c1
+ db $01
+ dw TileData_26aca
+
+TileData_267c4: ; 0x267c4
+ db $01
+ dw TileData_26af7
+
+TileData_267c7: ; 0x267c7
+ db $01
+ dw TileData_26b24
+
+TileData_267ca: ; 0x267ca
+ db $01
+ dw TileData_26b51
+
+TileData_267cd: ; 0x267cd
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $FB, $18, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_267fa: ; 0x267fa
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $18, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26827: ; 0x26827
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $19
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26854: ; 0x26854
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26881: ; 0x26881
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_268ae: ; 0x268ae
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_268db: ; 0x268db
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26908: ; 0x26908
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26935: ; 0x26935
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26962: ; 0x26962
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_2698f: ; 0x2698f
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_269bc: ; 0x269bc
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_269e9: ; 0x269e9
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1A, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a16: ; 0x26a16
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1A, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a43: ; 0x26a43
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1A
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a70: ; 0x26a70
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1A, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26a9d: ; 0x26a9d
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1A, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26aca: ; 0x26aca
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $19
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26af7: ; 0x26af7
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $1D
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $18, $FB
+
+ db $00 ; terminator
+
+TileData_26b24: ; 0x26b24
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $1D
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $1E, $FB
+
+ db $00 ; terminator
+
+TileData_26b51: ; 0x26b51
+ dw LoadTileLists
+ db $14 ; total number of tiles
+
+ db $03 ; number of tiles
+ dw vBGMap
+ db $1B, $1C, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $3
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $6
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $9
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $C
+ db $1D, $1D, $1D
+
+ db $03 ; number of tiles
+ dw vBGMap + $F
+ db $1D, $1D, $1D
+
+ db $02 ; number of tiles
+ dw vBGMap + $12
+ db $1E, $1B
+
+ db $00 ; terminator
@@ -4994,57 +4994,6 @@ SubTileXPos_CollisionData7: ; 0x268e INCLUDE "data/sine_table.asm" INCLUDE "engine/pinball_game/object_collision/object_collision.asm" -Func_281c: ; 0x281c - ld a, [wCurrentStage] - call CallInFollowingTable -CallTable_2822: ; 0x2822 -; not collisions - ; STAGE_RED_FIELD_TOP - padded_dab Func_1460e - - ; STAGE_RED_FIELD_BOTTOM - padded_dab Func_14652 - - padded_dab DoNothing_1806d - - padded_dab Func_1806e - - ; STAGE_BLUE_FIELD_TOP - padded_dab Func_1c715 - - ; STAGE_BLUE_FIELD_BOTTOM - padded_dab Func_1c769 - - ; STAGE_GENGAR_BONUS - padded_dab Func_18377 - - ; STAGE_GENGAR_BONUS - padded_dab Func_18377 - - ; STAGE_MEWTWO_BONUS - padded_dab Func_19451 - - ; STAGE_MEWTWO_BONUS - padded_dab Func_19451 - - ; STAGE_MEOWTH_BONUS - padded_dab Func_2442a - - ; STAGE_MEOWTH_BONUS - padded_dab Func_2442a - - ; STAGE_DIGLETT_BONUS - padded_dab Func_19b88 - - ; STAGE_DIGLETT_BONUS - padded_dab Func_19b88 - - ; STAGE_SEEL_BONUS - padded_dab Func_25c5a - - ; STAGE_SEEL_BONUS - padded_dab Func_25c5a - Func_2862: ; 0x2862 ld a, [wd7be] and a @@ -1386,8736 +1386,7 @@ SECTION "bank5", ROMX, BANK[$5] INCLUDE "engine/pinball_game/load_stage_data/load_red_field.asm" INCLUDE "engine/pinball_game/object_collision/red_stage_object_collision.asm" - -Func_1460e: ; 0x1460e - call ResolveVoltorbCollision - call ResolveRedStageSpinnerCollision - call ResolveRedStagePinballUpgradeTriggersCollision - call HandleRedStageBallTypeUpgradeCounter - call Func_15270 - call ResolveRedStageBoardTriggerCollision - call ResolveRedStagePikachuCollision - call ResolveStaryuCollision - call ResolveBellsproutCollision - call ResolveDittoSlotCollision - call Func_161e0 - call Func_164e3 - call Func_146a9 - call Func_174ea - call Func_148cf - callba Func_30188 - ld a, $0 - callba Func_10000 - ret - -Func_14652: ; 0x14652 - call Func_14795 - call Func_15f86 - call ResolveDiglettCollision - call Func_14880 - call Func_14e10 - call Func_154a9 - call HandleRedStageBallTypeUpgradeCounter - call Func_151cb - call Func_1652d - call ResolveRedStagePikachuCollision - call Func_167ff - call Func_169a6 - call ResolveRedStageBonusMultiplierCollision - call Func_16279 - call Func_161af - call Func_164e3 - call Func_14733 - call Func_146a2 - call Func_174d0 - callba Func_30188 - ld a, $0 - callba Func_10000 - ret - -Func_146a2: ; 0x146a2 - call Func_146a9 - call nz, Func_14707 - ret - -Func_146a9: ; 0x146a9 - ld a, [wBallSaverTimerFrames] - ld hl, wBallSaverTimerSeconds - or [hl] - ret z - ld a, [wBallXPos + 1] - cp $9a - jr nc, .asm_146e8 - ld a, [wBallSaverTimerFrames] - dec a - ld [wBallSaverTimerFrames], a - bit 7, a - jr z, .asm_146e8 - ld a, 59 - ld [wBallSaverTimerFrames], a - ld a, [hl] - dec a - bit 7, a - jr nz, .asm_146cf - ld [hl], a -.asm_146cf - inc a - ld c, $0 - cp $2 - jr c, .asm_146e4 - ld c, $4 - cp $6 - jr c, .asm_146e4 - ld c, $10 - cp $b - jr c, .asm_146e4 - ld c, $ff -.asm_146e4 - ld a, c - ld [wd4a2], a -.asm_146e8 - ld a, [wd4a2] - ld c, $0 - and a - jr z, .asm_146fe - ld c, $1 - cp $ff - jr z, .asm_146fe - ld hl, hNumFramesDropped - and [hl] - jr z, .asm_146fe - ld c, $0 -.asm_146fe - ld a, [wBallSaverIconOn] - cp c - ld a, c - ld [wBallSaverIconOn], a - ret - -Func_14707: ; 0x14707 - ld a, [wBallSaverIconOn] - and a - jr nz, .asm_1471c - ld a, BANK(BgTileData_1172b) - ld hl, BgTileData_1172b - deCoord 8, 13, vBGMap - ld bc, $0004 - call LoadOrCopyVRAMData - ret - -.asm_1471c - ld a, BANK(BgTileData_1472f) - ld hl, BgTileData_1472f - deCoord 8, 13, vBGMap - ld bc, $0004 - call LoadOrCopyVRAMData - ret - -BgTileData_1172b: - db $AA, $AB, $AC, $AD - -BgTileData_1472f: - db $B4, $B5, $B6, $B7 - -Func_14733: ; 0x14733 - ld c, $0 - ld a, [wd49b] - and a - jr z, .asm_1473d - ld c, $1 -.asm_1473d - ld a, [wd4a9] - cp c - ld a, c - ld [wd4a9], a - ret z - ; fall through - -Func_14746: ; 0x14746 - ld c, $0 - ld a, [wd49b] - and a - jr z, .asm_14750 - ld c, $2 -.asm_14750 - ld b, $0 - ld hl, AgainTextTileDataRedField - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, BANK(AgainTextTileDataRedField) - call Func_10aa - ret - -AgainTextTileDataRedField: - dw AgainTextOffTileDataRedField - dw AgainTextOnTileDataRedField - -AgainTextOffTileDataRedField: - db 2 - dw AgainTextOffTileDataRedField1 - dw AgainTextOffTileDataRedField2 - -AgainTextOnTileDataRedField: - db 2 - dw AgainTextOnTileDataRedField1 - dw AgainTextOnTileDataRedField2 - -AgainTextOffTileDataRedField1: - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $38 - dw AgainTextOffGfx - db Bank(AgainTextOffGfx) - db $00 - -AgainTextOffTileDataRedField2: - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $3a - dw AgainTextOffGfx + $20 - db Bank(AgainTextOffGfx) - db $00 - -AgainTextOnTileDataRedField1: - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $38 - dw StageRedFieldBottomBaseGameBoyGfx + $380 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -AgainTextOnTileDataRedField2: - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $3a - dw StageRedFieldBottomBaseGameBoyGfx + $3a0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -Func_14795: ; 0x14795 - ld a, [wWildMonCollision] - and a - ret z - xor a - ld [wWildMonCollision], a - ld a, $1 - ld [wBallHitWildMon], a - lb de, $00, $06 - call PlaySoundEffect - ret - -ResolveDiglettCollision: ; 0x147aa - ld a, [wWhichDiglett] - and a - jp z, .asm_14834 - xor a - ld [wWhichDiglett], a - ld a, [wWhichDiglettId] - sub $1 - sla a - ld c, a - ld b, $0 - ld hl, wLeftMapMoveCounter - add hl, bc - ld a, [hl] - cp $3 - jr z, .asm_14834 - inc a - ld [hld], a - ld [hl], $50 - ld hl, wd4f7 - add hl, bc - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, c - and a - jr z, .asm_14807 - ld a, $6a - ld [wc7f0], a - ld a, $6b - ld [wc810], a - ld a, $5 - call Func_149d9 - ld a, [wRightMapMoveCounter] - add $4 - call Func_149f5 - ld a, $8 - callba Func_10000 - ld a, [wRightMapMoveCounter] - cp $3 - call z, Func_14920 - jr .asm_14830 - -.asm_14807 - ld a, $66 - ld [wc7e3], a - ld a, $67 - ld [wc803], a - ld a, $2 - call Func_149d9 - ld a, [wLeftMapMoveCounter] - call Func_149f5 - ld a, $7 - callba Func_10000 - ld a, [wLeftMapMoveCounter] - cp $3 - call z, Func_14947 -.asm_14830 - call Func_1496d - ret - -.asm_14834 - ld a, [wd4ef] - and a - jr z, .asm_14857 - dec a - ld [wd4ef], a - jr nz, .asm_14857 - ld a, [wLeftMapMoveCounter] - sub $3 - jr nz, .asm_1484d - ld [wLeftMapMoveCounter], a - call Func_149f5 -.asm_1484d - ld a, $64 - ld [wc7e3], a - ld a, $65 - ld [wc803], a -.asm_14857 - ld a, [wd4f1] - and a - jr z, .asm_1487c - dec a - ld [wd4f1], a - jr nz, .asm_1487c - ld a, [wRightMapMoveCounter] - sub $3 - jr nz, .asm_14872 - ld [wRightMapMoveCounter], a - add $4 - call Func_149f5 -.asm_14872 - ld a, $68 - ld [wc7f0], a - ld a, $69 - ld [wc810], a -.asm_1487c - call Func_14990 - ret - -Func_14880: ; 0x14880 - ld hl, wd4f7 - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_148a6 - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_148a6 - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wLeftMapMoveCounter] - and a - jr z, .asm_148a6 - cp $3 - jr z, .asm_148a6 - dec a - ld [wLeftMapMoveCounter], a - call Func_149f5 -.asm_148a6 - ld hl, wd4f9 - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_148ce - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_148ce - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wRightMapMoveCounter] - and a - jr z, .asm_148ce - cp $3 - jr z, .asm_148ce - dec a - ld [wRightMapMoveCounter], a - add $4 - call Func_149f5 -.asm_148ce - ret - -Func_148cf: ; 0x148cf - ld b, $0 - ld hl, wd4f8 - ld a, [hld] - or [hl] - jr z, .asm_148f8 - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_148f8 - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_148f8 - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wLeftMapMoveCounter] - and a - jr z, .asm_148f8 - cp $3 - jr z, .asm_148f8 - dec a - ld [wLeftMapMoveCounter], a -.asm_148f8 - ld hl, wd4fa - ld a, [hld] - or [hl] - jr z, .asm_1491f - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_1491f - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_1491f - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wRightMapMoveCounter] - and a - jr z, .asm_1491f - cp $3 - jr z, .asm_1491f - dec a - ld [wRightMapMoveCounter], a -.asm_1491f - ret - -Func_14920: ; 0x14920 - ld hl, wd62b - call Func_e4a - jr nc, .asm_14937 - ld c, $a - call Func_e55 - callba z, Func_30164 -.asm_14937 - ld a, $1 - ld [wd55a], a - callba StartMapMoveMode - ret - -Func_14947: ; 0x14947 - ld hl, wd62b - call Func_e4a - jr nc, .asm_1495e - ld c, $a - call Func_e55 - callba z, Func_30164 -.asm_1495e - xor a - ld [wd55a], a - callba StartMapMoveMode - ret - -Func_1496d: ; 0x1496d - ld a, $55 - ld [wd803], a - ld a, $4 - ld [wd804], a - ld a, $2 - ld [wd7eb], a - ld bc, FiveHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $0f - call PlaySoundEffect - ret - -Func_14990: ; 0x14990 - ld a, [wd4ef] - and a - jr nz, .asm_149b6 - ld a, [wLeftMapMoveDiglettAnimationCounter] - and a - jr z, .asm_149a2 - dec a - ld [wLeftMapMoveDiglettAnimationCounter], a - jr .asm_149b6 - -.asm_149a2 - call Func_1130 - ret nz - ld a, $14 - ld [wLeftMapMoveDiglettAnimationCounter], a - ld a, [wLeftMapMoveDiglettFrame] - xor $1 - ld [wLeftMapMoveDiglettFrame], a - call Func_149d9 -.asm_149b6 - ld a, [wd4f1] - and a - ret nz - ld a, [wRightMapMoveDiglettAnimationCounter] - and a - jr z, .asm_149c6 - dec a - ld [wRightMapMoveDiglettAnimationCounter], a - ret - -.asm_149c6 - call Func_1130 - ret nz - ld a, $14 - ld [wRightMapMoveDiglettAnimationCounter], a - ld a, [wRightMapMoveDiglettFrame] - xor $1 - ld [wRightMapMoveDiglettFrame], a - add $3 - ; fall through -Func_149d9: ; 0x149d9 - sla a - ld c, a - ld b, $0 - ld hl, TileListDataPointers_14a11 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_149e9 - ld hl, TileListDataPointers_14a83 -.asm_149e9 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, BANK(TileListDataPointers_14a11) - call Func_10aa - ret - -Func_149f5: ; 0x149f5 - sla a - ld c, a - ld b, $0 - ld hl, Data_14af5 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_14a05 - ld hl, TileListDataPointers_14c8d -.asm_14a05 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, BANK(Data_14af5) - call Func_10aa - ret - -TileListDataPointers_14a11: ; 0x14a11 - dw TileListData_14a1d - dw TileListData_14a20 - dw TileListData_14a23 - dw TileListData_14a26 - dw TileListData_14a29 - dw TileListData_14a2c - -TileListData_14a1d: ; 0x14a1d - db $01 - dw TileListData_14a2f - -TileListData_14a20: ; 0x14a20 - db $01 - dw TileListData_14a3d - -TileListData_14a23: ; 0x14a23 - db $01 - dw TileListData_14a4b - -TileListData_14a26: ; 0x14a26 - db $01 - dw TileListData_14a59 - -TileListData_14a29: ; 0x14a29 - db $01 - dw TileListData_14a67 - -TileListData_14a2c: ; 0x14a2c - db $01 - dw TileListData_14a75 - -TileListData_14a2f: ; 0x14a2f - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $a3 - db $4C, $4D - - db $02 ; number of tiles - dw vBGMap + $c3 - db $4E, $4F - - db $00 ; terminator - -TileListData_14a3d: ; 0x14a3d - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $a3 - db $50, $51 - - db $02 ; number of tiles - dw vBGMap + $c3 - db $52, $53 - - db $00 ; terminator - -TileListData_14a4b: ; 0x14a4b - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $a3 - db $54, $80 - - db $02 ; number of tiles - dw vBGMap + $c3 - db $55, $80 - - db $00 ; terminator - -TileListData_14a59: ; 0x14a59 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $af - db $56, $57 - - db $02 ; number of tiles - dw vBGMap + $cf - db $58, $59 - - db $00 ; terminator - -TileListData_14a67: ; 0x14a67 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $af - db $5a, $5b - - db $02 ; number of tiles - dw vBGMap + $cf - db $5c, $5d - - db $00 ; terminator - -TileListData_14a75: ; 0x14a75 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $af - db $80, $5e - - db $02 ; number of tiles - dw vBGMap + $cf - db $80, $5f - - db $00 ; terminator - -TileListDataPointers_14a83: - dw TileListData_14a8f - dw TileListData_14a92 - dw TileListData_14a95 - dw TileListData_14a98 - dw TileListData_14a9b - dw TileListData_14a9e - -TileListData_14a8f: ; 0x14a8f - db $01 - dw TileListData_14aa1 - -TileListData_14a92: ; 0x14a92 - db $01 - dw TileListData_14aaf - -TileListData_14a95: ; 0x14a95 - db $01 - dw TileListData_14abd - -TileListData_14a98: ; 0x14a98 - db $01 - dw TileListData_14acb - -TileListData_14a9b: ; 0x14a9b - db $01 - dw TileListData_14ad9 - -TileListData_14a9e: ; 0x14a9e - db $01 - dw TileListData_14ae7 - -TileListData_14aa1: ; 0x14aa1 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $a3 - db $54, $55 - - db $02 ; number of tiles - dw vBGMap + $c3 - db $56, $57 - - db $00 - -TileListData_14aaf: ; 0x14aaf - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $a3 - db $58, $59 - - db $02 ; number of tiles - dw vBGMap + $c3 - db $5A, $5B - - db $00 ; terminator - -TileListData_14abd: ; 0x14abd - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $a3 - db $5C, $80 - - db $02 ; number of tiles - dw vBGMap + $c3 - db $5D, $80 - - db $00 ; terminator - -TileListData_14acb: ; 0x14acb - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $af - db $55, $54 - - db $02 ; number of tiles - dw vBGMap + $cf - db $57, $56 - - db $00 ; terminator - -TileListData_14ad9: ; 0x14ad9 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $af - db $59, $58 - - db $02 ; number of tiles - dw vBGMap + $cf - db $5B, $5A - - db $00 ; terminator - -TileListData_14ae7: ; 0x14ae7 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $af - db $80, $5C - - db $02 ; number of tiles - dw vBGMap + $cf - db $80, $5D - - db $00 ; terminator - -Data_14af5: ; 0x14af5 - dw Data_14b05 - dw Data_14b0e - dw Data_14b17 - dw Data_14b20 - dw Data_14b29 - dw Data_14b32 - dw Data_14b3b - dw Data_14b44 - -Data_14b05: ; 0x14b05 - db $04 - dw Data_14b4d - dw Data_14b57 - dw Data_14b61 - dw Data_14b6b - -Data_14b0e: ; 0x14b0e - db $04 - dw Data_14b75 - dw Data_14b7f - dw Data_14b89 - dw Data_14b93 - -Data_14b17: ; 0x14b17 - db $04 - dw Data_14b9d - dw Data_14ba7 - dw Data_14bb1 - dw Data_14bbb - -Data_14b20: ; 0x14b20 - db $04 - dw Data_14bc5 - dw Data_14bcf - dw Data_14bd9 - dw Data_14be3 - -Data_14b29: ; 0x14b29 - db $04 - dw Data_14bed - dw Data_14bf7 - dw Data_14c01 - dw Data_14c0b - -Data_14b32: ; 0x14b32 - db $04 - dw Data_14c15 - dw Data_14c1f - dw Data_14c29 - dw Data_14c33 - -Data_14b3b: ; 0x14b3b - db $04 - dw Data_14c3d - dw Data_14c47 - dw Data_14c51 - dw Data_14c5b - -Data_14b44: ; 0x14b44 - db $04 - dw Data_14c65 - dw Data_14c6f - dw Data_14c79 - dw Data_14c83 - -Data_14b4d: ; 0x14b4d - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $26 - dw StageRedFieldBottomBaseGameBoyGfx + $a60 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14b57: ; 0x14b57 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $29 - dw StageRedFieldBottomBaseGameBoyGfx + $a90 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14b61: ; 0x14b61 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $2C - dw StageRedFieldBottomBaseGameBoyGfx + $ac0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14b6b: ; 0x14b6b - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $2F - dw StageRedFieldBottomBaseGameBoyGfx + $af0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14b75: ; 0x14b75 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $26 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $720 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14b7f: ; 0x14b7f - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $29 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $750 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14b89: ; 0x14b89 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $2C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $780 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14b93: ; 0x14b93 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $2F - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14b9d: ; 0x14b9d - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $26 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14ba7: ; 0x14ba7 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $29 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $7F0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14bb1: ; 0x14bb1 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $2C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $820 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14bbb: ; 0x14bbb - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $2F - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $850 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14bc5: ; 0x14bc5 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $26 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $860 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14bcf: ; 0x14bcf - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $29 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $890 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14bd9: ; 0x14bd9 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $2C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14be3: ; 0x14be3 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $2F - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $8F0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14bed: ; 0x14bed - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $30 - dw StageRedFieldBottomBaseGameBoyGfx + $B00 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14bf7: ; 0x14bf7 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $33 - dw StageRedFieldBottomBaseGameBoyGfx + $B30 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14c01: ; 0x14c01 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $36 - dw StageRedFieldBottomBaseGameBoyGfx + $B60 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14c0b: ; 0x14c0b - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $39 - dw StageRedFieldBottomBaseGameBoyGfx + $B90 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 ; terminator - -Data_14c15: ; 0x14c15 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $30 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $900 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c1f: ; 0x14c1f - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $33 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $930 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c29: ; 0x14c29 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $36 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $960 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c33: ; 0x14c33 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $39 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $990 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c3d: ; 0x14c3d - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $30 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c47: ; 0x14c47 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $33 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $9D0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c51: ; 0x14c51 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $36 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c5b: ; 0x14c5b - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $39 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A30 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c65: ; 0x14c65 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $30 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c6f: ; 0x14c6f - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $33 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $A70 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c79: ; 0x14c79 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $36 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -Data_14c83: ; 0x14c83 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $39 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AD0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileListDataPointers_14c8d: - dw Data_14c9d - dw Data_14ca0 - dw Data_14ca3 - dw Data_14ca6 - dw Data_14ca9 - dw Data_14cac - dw Data_14caf - dw Data_14cb2 - -Data_14c9d: ; 0x14c9d - db $01 - dw TileListData_14cb5 - -Data_14ca0: ; 0x14ca0 - db $01 - dw TileListData_14ccf - -Data_14ca3: ; 0x14ca3 - db $01 - dw TileListData_14ce9 - -Data_14ca6: ; 0x14ca6 - db $01 - dw TileListData_14d03 - -Data_14ca9: ; 0x14ca9 - db $01 - dw TileListData_14d1d - -Data_14cac: ; 0x14cac - db $01 - dw TileListData_14d37 - -Data_14caf: ; 0x14caf - db $01 - dw TileListData_14d51 - -Data_14cb2: ; 0x14cb2 - db $01 - dw TileListData_14d6b - -TileListData_14cb5: ; 0x14cb5 - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $80 - db $06, $07 - - db $03 ; number of tiles - dw vBGMap + $a0 - db $08, $09, $0A - - db $03 ; number of tiles - dw vBGMap + $c0 - db $0B, $0C, $0D - - db $02 ; number of tiles - dw vBGMap + $e0 - db $0E, $0F - - db $00 ; terminator - -TileListData_14ccf: ; 0x14ccf - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $80 - db $06, $07 - - db $03 ; number of tiles - dw vBGMap + $a0 - db $10, $11, $0A - - db $03 ; number of tiles - dw vBGMap + $c0 - db $12, $13, $0D - - db $02 ; number of tiles - dw vBGMap + $e0 - db $14, $15 - - db $00 ; terminator - -TileListData_14ce9: ; 0x14ce9 - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $80 - db $06, $07 - - db $03 ; number of tiles - dw vBGMap + $a0 - db $10, $16, $17 - - db $03 ; number of tiles - dw vBGMap + $c0 - db $12, $18, $19 - - db $02 ; number of tiles - dw vBGMap + $e0 - db $14, $15 - - db $00 ; terminator - -TileListData_14d03: ; 0x14d03 - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $80 - db $1A, $1B - - db $03 ; number of tiles - dw vBGMap + $a0 - db $1C, $1D, $17 - - db $03 ; number of tiles - dw vBGMap + $c0 - db $12, $18, $19 - - db $02 ; number of tiles - dw vBGMap + $e0 - db $14, $15 - - db $00 ; terminator - -TileListData_14d1d: ; 014d1d - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $92 - db $07, $06 - - db $03 ; number of tiles - dw vBGMap + $b1 - db $0A, $1E, $08 - - db $03 ; number of tiles - dw vBGMap + $d1 - db $22, $0C, $24 - - db $02 ; number of tiles - dw vBGMap + $f2 - db $0F, $0E - - db $00 ; terminator - -TileListData_14d37: ; 0x14d37 - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $92 - db $07, $06 - - db $03 ; number of tiles - dw vBGMap + $b1 - db $0A, $1F, $10 - - db $03 ; number of tiles - dw vBGMap + $d1 - db $22, $13, $25 - - db $02 ; number of tiles - dw vBGMap + $f2 - db $15, $14 - - db $00 ; terminator - -TileListData_14d51: ; 0x14d51 - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $92 - db $07, $06 - - db $03 ; number of tiles - dw vBGMap + $b1 - db $17, $20, $10 - - db $03 ; number of tiles - dw vBGMap + $d1 - db $23, $18, $25 - - db $02 ; number of tiles - dw vBGMap + $f2 - db $15, $14 - - db $00 ; terminator - -TileListData_14d6b: ; 0x14d6b - dw LoadTileLists - db $0A ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $92 - db $1B, $1A - - db $03 ; number of tiles - dw vBGMap + $b1 - db $17, $21, $1C - - db $03 ; number of tiles - dw vBGMap + $d1 - db $23, $18, $25 - - db $02 ; number of tiles - dw vBGMap + $f2 - db $15, $14 - - db $00 ; terminator - -ResolveVoltorbCollision: ; 0x14d85 - ld a, [wWhichVoltorb] - and a - jr z, .noVoltorbCollision - xor a - ld [wWhichVoltorb], a - call Func_14dc9 - ld a, $10 - ld [wd4d6], a - ld a, [wWhichVoltorbId] - sub $3 - ld [wd4d7], a - ld a, $4 - callba Func_10000 - ld bc, FiveHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ret - -.noVoltorbCollision - ld a, [wd4d6] - and a - ret z - dec a - ld [wd4d6], a - ret nz - ld a, $ff - ld [wd4d7], a - ret - -Func_14dc9: ; 0x14dc9 - ld a, $ff - ld [wd803], a - ld a, $3 - ld [wd804], a - ld hl, $0200 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - lb de, $00, $0e - call PlaySoundEffect - ret - -ResolveRedStageSpinnerCollision: ; 0x14dea - ld a, [wSpinnerCollision] - and a - jr z, Func_14e10 - xor a - ld [wSpinnerCollision], a - ld a, [wBallYVelocity] - ld c, a - ld a, [wBallYVelocity + 1] - ld b, a - ld a, c - ld [wd50b], a - ld a, b - ld [wd50c], a - ld a, $c - callba Func_10000 - ; fall through -Func_14e10: ; 0x14e10 - ld hl, wd50b - ld a, [hli] - or [hl] - ret z - ld a, [wd50b] - ld c, a - ld a, [wd50c] - ld b, a - bit 7, b - jr nz, .asm_14e2e - ld a, c - sub $7 - ld c, a - ld a, b - sbc $0 - ld b, a - jr nc, .asm_14e3b - jr .asm_14e38 - -.asm_14e2e - ld a, c - add $7 - ld c, a - ld a, b - adc $0 - ld b, a - jr nc, .asm_14e3b -.asm_14e38 - ld bc, $0000 -.asm_14e3b - ld a, c - ld [wd50b], a - ld a, b - ld [wd50c], a - ld hl, wd50b - ld a, [wd509] - add [hl] - ld [wd509], a - inc hl - ld a, [wd50a] - adc [hl] - bit 7, a - ld c, $0 - jr z, .asm_14e5e - add $18 - ld c, $1 - jr .asm_14e66 - -.asm_14e5e - cp $18 - jr c, .asm_14e66 - sub $18 - ld c, $1 -.asm_14e66 - ld [wd50a], a - ld a, c - and a - ret z - ld bc, TenPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld hl, wd62d - call Func_e4a - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - jr nz, .asm_14e8a - call Func_14ea7 - ret - -.asm_14e8a - inc a - ld [wPikachuSaverCharge], a - call Func_14ea7 - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - jr nz, .asm_14e9d - ld a, $64 - ld [wd51e], a -.asm_14e9d - ld a, [wCurrentStage] - bit 0, a - ret nz - call Func_14ece - ret - -Func_14ea7: ; 0x14ea7 - ld a, [wd51e] - and a - ret nz - ld a, [wPikachuSaverCharge] - ld c, a - ld b, $0 - ld hl, SoundEffects_14ebe - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - call PlaySoundEffect - ret - -SoundEffects_14ebe: - db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11 - -Func_14ece: ; 0x14ece - ld a, [wPikachuSaverCharge] - ld c, a - sla c - ld b, $0 - ld hl, TileDataPointers_14eeb - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_14ee1 - ld hl, TileDataPointers_1509b -.asm_14ee1 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, BANK(TileDataPointers_14eeb) - call Func_10aa - ret - -TileDataPointers_14eeb: - dw TileData_14f0b - dw TileData_14f10 - dw TileData_14f15 - dw TileData_14f1a - dw TileData_14f1f - dw TileData_14f24 - dw TileData_14f29 - dw TileData_14f2e - dw TileData_14f33 - dw TileData_14f38 - dw TileData_14f3d - dw TileData_14f42 - dw TileData_14f47 - dw TileData_14f4c - dw TileData_14f51 - dw TileData_14f56 - -TileData_14f0b: ; 0x14f0b - db $02 - dw TileData_14f5b - dw TileData_14f65 - -TileData_14f10: ; 0x14f10 - db $02 - dw TileData_14f6f - dw TileData_14f79 - -TileData_14f15: ; 0x14f15 - db $02 - dw TileData_14f83 - dw TileData_14f8d - -TileData_14f1a: ; 0x14f1a - db $02 - dw TileData_14f97 - dw TileData_14fa1 - -TileData_14f1f: ; 0x14f1f - db $02 - dw TileData_14fab - dw TileData_14fb5 - -TileData_14f24: ; 0x14f24 - db $02 - dw TileData_14fbf - dw TileData_14fc9 - -TileData_14f29: ; 0x14f29 - db $02 - dw TileData_14fd3 - dw TileData_14fdd - -TileData_14f2e: ; 0x14f2e - db $02 - dw TileData_14fe7 - dw TileData_14ff1 - -TileData_14f33: ; 0x14f33 - db $02 - dw TileData_14ffb - dw TileData_15005 - -TileData_14f38: ; 0x14f38 - db $02 - dw TileData_1500f - dw TileData_15019 - -TileData_14f3d: ; 0x14f3d - db $02 - dw TileData_15023 - dw TileData_1502d - -TileData_14f42: ; 0x14f42 - db $02 - dw TileData_15037 - dw TileData_15041 - -TileData_14f47: ; 0x14f47 - db $02 - dw TileData_1504b - dw TileData_15055 - -TileData_14f4c: ; 0x14f4c - db $02 - dw TileData_1505f - dw TileData_15069 - -TileData_14f51: ; 0x14f51 - db $02 - dw TileData_15073 - dw TileData_1507d - -TileData_14f56: ; 0x14f56 - db $02 - dw TileData_15087 - dw TileData_15091 - -TileData_14f5b: ; 0x14f5b - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldTopBaseGameBoyGfx + $cb0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 ; terminator - -TileData_14f65: ; 0x14f65 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldTopBaseGameBoyGfx + $cd0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 ; terminator - -TileData_14f6f: ; 0x14f6f - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $AE0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14f79: ; 0x14f79 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14f83: ; 0x14f83 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14f8d: ; 0x14f8d - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14f97: ; 0x14f97 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fa1: ; 0x14fa1 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $B80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fab: ; 0x14fab - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fb5: ; 0x14fb5 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BC0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fbf: ; 0x14fbf - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $BE0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fc9: ; 0x14fc9 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fd3: ; 0x14fd3 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fdd: ; 0x14fdd - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14fe7: ; 0x14fe7 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14ff1: ; 0x14ff1 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_14ffb: ; 0x14ffb - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15005: ; 0x15005 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CC0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1500f: ; 0x1500f - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $CE0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15019: ; 0x15019 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15023: ; 0x15023 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1502d: ; 0x1502d - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15037: ; 0x15037 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15041: ; 0x15041 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $D80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1504b: ; 0x1504b - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15055: ; 0x15055 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DC0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1505f: ; 0x1505f - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $DE0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15069: ; 0x15069 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15073: ; 0x15073 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1507d: ; 0x1507d - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15087: ; 0x15087 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $75 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_15091: ; 0x15091 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $77 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $E80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileDataPointers_1509b: - dw TileData_150bb - dw TileData_150be - dw TileData_150c1 - dw TileData_150c4 - dw TileData_150c7 - dw TileData_150ca - dw TileData_150cd - dw TileData_150d0 - dw TileData_150d3 - dw TileData_150d6 - dw TileData_150d9 - dw TileData_150dc - dw TileData_150df - dw TileData_150e2 - dw TileData_150e5 - dw TileData_150e8 - -TileData_150bb: ; 0x150bb - db $01 - dw TileData_150eb - -TileData_150be: ; 0x150be - db $01 - dw TileData_150f9 - -TileData_150c1: ; 0x150c1 - db $01 - dw TileData_15107 - -TileData_150c4: ; 0x150c4 - db $01 - dw TileData_15115 - -TileData_150c7: ; 0x150c7 - db $01 - dw TileData_15123 - -TileData_150ca: ; 0x150ca - db $01 - dw TileData_15131 - -TileData_150cd: ; 0x150cd - db $01 - dw TileData_1513f - -TileData_150d0: ; 0x150d0 - db $01 - dw TileData_1514d - -TileData_150d3: ; 0x150d3 - db $01 - dw TileData_1515b - -TileData_150d6: ; 0x150d6 - db $01 - dw TileData_15169 - -TileData_150d9: ; 0x150d9 - db $01 - dw TileData_15177 - -TileData_150dc: ; 0x150dc - db $01 - dw TileData_15185 - -TileData_150df: ; 0x150df - db $01 - dw TileData_15193 - -TileData_150e2: ; 0x150e2 - db $01 - dw TileData_151a1 - -TileData_150e5: ; 0x150e5 - db $01 - dw TileData_151af - -TileData_150e8: ; 0x150e8 - db $01 - dw TileData_151bd - -TileData_150eb: ; 0x150eb - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $5E, $5F - - db $00 ; terminator - -TileData_150f9: ; 0x150f9 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $60, $61 - - db $00 ; terminator - -TileData_15107: ; 0x15107 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $62, $63 - - db $00 ; terminator - -TileData_15115: ; 0x15115 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $64, $65 - - db $00 ; terminator - -TileData_15123: ; 0x15123 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $66, $67 - - db $00 ; terminator - -TileData_15131: ; 0x15131 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $68, $69 - - db $00 ; terminator - -TileData_1513f: ; 0x1513f - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $6A, $6B - - db $00 ; terminator - -TileData_1514d: ; 0x1514d - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $6C, $6D - - db $00 ; terminator - -TileData_1515b: ; 0x1515b - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $5C, $5D - - db $02 ; number of tiles - dw $992E - db $6E, $6F - - db $00 ; terminator - -TileData_15169: ; 0x15169 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $70, $71 - - db $02 ; number of tiles - dw $992E - db $6E, $6F - - db $00 ; terminator - -TileData_15177: ; 0x15177 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $72, $73 - - db $02 ; number of tiles - dw $992E - db $6E, $6F - - db $00 ; terminator - -TileData_15185: ; 0x15185 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $74, $75 - - db $02 ; number of tiles - dw $992E - db $6E, $6F - - db $00 ; terminator - -TileData_15193: ; 0x15193 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $76, $77 - - db $02 ; number of tiles - dw $992E - db $6E, $6F - - db $00 ; terminator - -TileData_151a1: ; 0x151a1 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $78, $79 - - db $02 ; number of tiles - dw $992E - db $6E, $6F - - db $00 ; terminator - -TileData_151af: ; 0x151af - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $7A, $7B - - db $02 ; number of tiles - dw $992E - db $6E, $6F - - db $00 ; terminator - -TileData_151bd: ; 0x151bd - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $990E - db $7C, $7D - - db $02 ; number of tiles - dw $992E - db $7E, $7F - - db $00 ; terminator - -Func_151cb: ; 0x151cb - ld a, [wWhichCAVELight] - and a - jr z, .asm_15229 - xor a - ld [wWhichCAVELight], a - ld a, [wd513] - and a - jr nz, .asm_15229 - ld a, [wWhichCAVELightId] - sub $a - ld c, a - ld b, $0 - ld hl, wd50f - add hl, bc - ld a, [hl] - ld [hl], $1 - and a - ret nz - ld bc, OneHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld hl, wd50f - ld a, [hli] - and [hl] - inc hl - and [hl] - inc hl - and [hl] - jr z, Func_asm_1522d - ld a, $1 - ld [wd513], a - ld a, $80 - ld [wd514], a - ld bc, FourHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $09 - call PlaySoundEffect - ld hl, wd62c - call Func_e4a - jr Func_asm_1522d - -.asm_15229 - call Func_15270 - ret z - ; fall through - -Func_asm_1522d: ; 0x1522d - ld hl, wd512 - ld b, $4 -.asm_15232 - ld a, [hld] - push hl - call Func_1523c - pop hl - dec b - jr nz, .asm_15232 - ret - -Func_1523c: ; 0x1523c - and a - jr z, .asm_1524e - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_15249 - ld hl, TileDataPointers_152dd - jr .asm_1525b - -.asm_15249 - ld hl, TileDataPointers_1531d - jr .asm_1525b - -.asm_1524e - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_15258 - ld hl, TileDataPointers_152e5 - jr .asm_1525b - -.asm_15258 - ld hl, TileDataPointers_15325 -.asm_1525b - push bc - dec b - sla b - ld e, b - ld d, $0 - add hl, de - ld c, [hl] - inc hl - ld b, [hl] - ld a, $5 - ld de, LoadTileLists - call Func_10c5 - pop bc - ret - -Func_15270: ; 0x15270 - ld a, [wd513] - and a - jr z, .asm_152a6 - ld a, [wd514] - dec a - ld [wd514], a - jr nz, .asm_1528d - ld [wd513], a - ld a, $1 - ld [wd608], a - ld a, $3 - ld [wd607], a - xor a -.asm_1528d - and $7 - ret nz - ld a, [wd514] - srl a - srl a - srl a - and $1 - ld hl, wd50f - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $1 - and a - ret - -.asm_152a6 - ld hl, wKeyConfigLeftFlipper - call IsKeyPressed - jr z, .asm_152c2 - ld hl, wd50f - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hl] - ld d, a - ld a, c - ld [hld], a - ld a, d - ld [hld], a - ld a, e - ld [hld], a - ld a, b - ld [hl], a - ret - -.asm_152c2 - ld hl, wKeyConfigRightFlipper - call IsKeyPressed - ret z - ld hl, wd50f - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hl] - ld d, a - ld a, e - ld [hld], a - ld a, b - ld [hld], a - ld a, c - ld [hld], a - ld a, d - ld [hl], a - ret - -TileDataPointers_152dd: - dw TileData_152ed - dw TileData_152f3 - dw TileData_152f9 - dw TileData_152ff - -TileDataPointers_152e5: - dw TileData_15305 - dw TileData_1530b - dw TileData_15311 - dw TileData_15317 - -TileData_152ed: ; 0x152ed - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $7d - - db $00 ; terminator - -TileData_152f3: ; 0x152f3 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $7d - - db $00 ; terminator - -TileData_152f9: ; 0x152f9 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $7f - - db $00 ; terminator - -TileData_152ff: ; 0x152ff - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $7f - - db $00 ; terminator - -TileData_15305: ; 0x15305 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $7c - - db $00 ; terminator - -TileData_1530b: ; 0x1530b - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $7c - - db $00 ; terminator - -TileData_15311: ; 0x15311 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $7e - - db $00 ; terminator - -TileData_15317: ; 0x15317 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $7e - - db $00 ; terminator - -TileDataPointers_1531d: - dw TileData_1532d - dw TileData_15333 - dw TileData_15339 - dw TileData_1533f - -TileDataPointers_15325: - dw TileData_15345 - dw TileData_1534b - dw TileData_15351 - dw TileData_15357 - -TileData_1532d: ; 0x1532d - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $27 - - db $00 ; terminator - -TileData_15333: ; 0x15333 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $29 - - db $00 ; terminator - -TileData_15339: ; 0x15339 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $7E - - db $00 ; terminator - -TileData_1533f: ; 0x1533f - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $7F - - db $00 ; terminator - -TileData_15345: ; 0x15345 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $26 - - db $00 ; terminator - -TileData_1534b: ; 0x1534b - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $28 - - db $00 ; terminator - -TileData_15351: ; 0x15351 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $7C - - db $00 ; terminator - -TileData_15357: ; 0x15357 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $7D - - db $00 ; terminator - -ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d - ld a, [wWhichPinballUpgradeTrigger] - and a - jp z, .asm_1544c - xor a - ld [wWhichPinballUpgradeTrigger], a - ld a, [wStageCollisionState] - bit 0, a - jp z, .asm_1544c - ld a, [wd5fc] - and a - jp nz, .asm_1544c - xor a - ld [wRightAlleyTrigger], a - ld [wLeftAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - call Func_159c9 - ld a, $b - callba Func_10000 - ld a, [wWhichPinballUpgradeTriggerId] - sub $e - ld c, a - ld b, $0 - ld hl, wd5f9 - add hl, bc - ld a, [hl] - ld [hl], $1 - and a - ret nz - ld bc, OneHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld hl, wd5f9 - ld a, [hli] - and [hl] - inc hl - and [hl] - jr nz, .asm_153c0 - lb de, $00, $09 - call PlaySoundEffect - jp Func_15450 - -.asm_153c0 - ld a, $1 - ld [wd5fc], a - ld a, $80 - ld [wd5fd], a - ; load approximately 1 minute of frames into wBallTypeCounter - ld a, $10 - ld [wBallTypeCounter], a - ld a, $e - ld [wBallTypeCounter + 1], a - ld bc, FourHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wBallType] - cp MASTER_BALL - jr z, .masterBall - lb de, $06, $3a - call PlaySoundEffect - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld de, FieldMultiplierText - ld hl, wd5cc - call LoadTextHeader - ld a, [wBallType] - ld c, a - ld b, $0 - ld hl, BallTypeProgressionRedField - add hl, bc - ld a, [hl] - ld [wBallType], a - add $30 - ld [wBottomMessageText + $12], a - jr .asm_15447 - -.masterBall - lb de, $0f, $4d - call PlaySoundEffect - ld bc, OneMillionPoints - callba AddBigBCD6FromQueue - ld bc, $0100 - ld de, $0000 - push bc - push de - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5d4 - ld de, DigitsText1to8 - call Func_32cc - pop de - pop bc - ld hl, wd5cc - ld de, FieldMultiplierSpecialBonusText - call LoadTextHeader -.asm_15447 - call TransitionPinballUpgrade - jr Func_15450 - -.asm_1544c - call Func_154a9 - ret z - -Func_15450 - ld a, [wStageCollisionState] - bit 0, a - ret z - ld hl, wd5fb - ld b, $3 -.asm_1545b - ld a, [hld] - push hl - call Func_15465 - pop hl - dec b - jr nz, .asm_1545b - ret - -Func_15465: ; 0x15465 - and a - jr z, .asm_15477 - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_15472 - ld hl, TileDataPointers_15511 - jr .asm_15484 - -.asm_15472 - ld hl, TileDataPointers_15543 - jr .asm_15484 - -.asm_15477 - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_15481 - ld hl, TileDataPointers_15517 - jr .asm_15484 - -.asm_15481 - ld hl, TileDataPointers_15549 -.asm_15484 - push bc - dec b - sla b - ld e, b - ld d, $0 - add hl, de - ld c, [hl] - inc hl - ld b, [hl] - ld a, $5 - ld de, LoadTileLists - call Func_10c5 - pop bc - ret - -Func_15499: ; 0x15499 - ld a, [hGameBoyColorFlag] - and a - ret nz - ld b, $3 -.asm_1549f - push hl - xor a - call Func_15465 - pop hl - dec b - jr nz, .asm_1549f - ret - -Func_154a9: ; 0x154a9 - ld a, [wd5fc] - and a - jr z, .asm_154d6 - ld a, [wd5fd] - dec a - ld [wd5fd], a - jr nz, .asm_154bb - ld [wd5fc], a -.asm_154bb - and $7 - jr nz, .asm_154d4 - ld a, [wd5fd] - srl a - srl a - srl a - and $1 - ld hl, wd5f9 - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $1 - and a - ret - -.asm_154d4 - xor a - ret - -.asm_154d6 - ld hl, wKeyConfigLeftFlipper - call IsKeyPressed - jr z, .asm_154ee - ld hl, wd5f9 - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hl] - ld e, a - ld a, c - ld [hld], a - ld a, e - ld [hld], a - ld a, b - ld [hl], a - ret - -.asm_154ee - ld hl, wKeyConfigRightFlipper - call IsKeyPressed - ret z - ld hl, wd5f9 - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hl] - ld e, a - ld a, b - ld [hld], a - ld a, c - ld [hld], a - ld a, e - ld [hl], a - ret - -BallTypeProgressionRedField: ; 0x15505 -; Determines the next upgrade for the Ball. - db GREAT_BALL ; POKE_BALL -> GREAT_BALL - db GREAT_BALL ; unused - db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL - db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL - db MASTER_BALL ; unused - db MASTER_BALL ; MASTER_BALL -> MASTER_BALL - -BallTypeDegradationRedField: ; 0x1550b -; Determines the previous upgrade for the Ball. - db POKE_BALL ; POKE_BALL -> POKE_BALL - db POKE_BALL ; unused - db POKE_BALL ; GREAT_BALL -> POKE_BALL - db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL - db ULTRA_BALL ; unused - db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL - -TileDataPointers_15511: - dw TileData_1551d - dw TileData_15523 - dw TileData_1552a - -TileDataPointers_15517: - dw TileData_15530 - dw TileData_15536 - dw TileData_1553d - -TileData_1551d: ; 0x1551d - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $E7 - db $ac - - db $00 ; terminator - -TileData_15523: ; 0x15523 - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $C9 - db $ad, $ae - - db $00 ; terminator - -TileData_1552a: ; 0x1552a - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $CC - db $af - - db $00 ; terminator - -TileData_15530: ; 0x15530 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $E7 - db $66 - - db $00 ; terminator - -TileData_15536: ; 0x15536 - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $C9 - db $68, $69 - - db $00 ; terminator - -TileData_1553d: ; 0x1553d - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $CC - db $6a - - db $00 ; terminator - -TileDataPointers_15543: - dw TileData_1554f - dw TileData_15555 - dw TileData_1555c - -TileDataPointers_15549: - dw TileData_15562 - dw TileData_15568 - dw TileData_1556F - -TileData_1554f: ; 0x1554f - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $e7 - db $3D - - db $00 ; terminator - -TileData_15555: ; 0x15555 - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $c9 - db $3F, $40 - - db $00 ; terminator - -TileData_1555c: ; 0x1555c - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $cc - db $41 - - db $00 ; terminator - -TileData_15562: ; 0x15562 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $e7 - db $37 - - db $00 ; terminator - -TileData_15568: ; 0x15568 - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $c9 - db $39, $3a - - db $00 ; terminator - -TileData_1556F: ; 0x1556F - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $cc - db $3B - - db $00 ; terminator - -HandleRedStageBallTypeUpgradeCounter: ; 0x15575 - ld a, [wCapturingMon] - and a - ret nz - ld hl, wBallTypeCounter - ld a, [hli] - ld c, a - ld b, [hl] - or b - ret z - dec bc - ld a, b - ld [hld], a - ld [hl], c - or c - ret nz - ; counter is now 0! Degrade the ball upgrade. - ld a, [wBallType] - ld c, a - ld b, $0 - ld hl, BallTypeDegradationRedField - add hl, bc - ld a, [hl] - ld [wBallType], a - and a - jr z, .pokeball - ; load approximately 1 minute of frames into wBallTypeCounter - ld a, $10 - ld [wBallTypeCounter], a - ld a, $e - ld [wBallTypeCounter + 1], a -.pokeball - call TransitionPinballUpgrade - ret - -TransitionPinballUpgrade: ; 0x155a7 - ld a, [wBallType] - ld c, a - sla c - ld b, $0 - ld hl, PinballUpgradeTransitionPointers - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(PinballUpgradeTransitionPointers) - call Func_10aa - ; fall through - -Func_155bb: ; 0x155bb - ld a, [hGameBoyColorFlag] - and a - ret z - ; gameboy color - ld a, [wBallType] - sla a - ld c, a - ld b, $0 - ld hl, Data_157f7 - add hl, bc - ld c, [hl] - inc hl - ld b, [hl] - ld a, BANK(Data_157f7) - ld de, LoadPalettes - call Func_10c5 - ret - -PinballUpgradeTransitionPointers: - dw TransitionToPokeBallPointers ; POKE_BALL - dw TransitionToPokeBallPointers ; POKE_BALL - dw TransitionToGreatBallPointers ; GREAT_BALL - dw TransitionToUltraBallPointers ; ULTRA_BALL - dw TransitionToUltraBallPointers ; ULTRA_BALL - dw TransitionToMasterBallPointers ; MASTER_BALL - -TransitionToPokeBallPointers: - db 11 - dw TransitionToPokeBall_TileData_1 - dw TransitionToPokeBall_TileData_2 - dw TransitionToPokeBall_TileData_3 - dw TransitionToPokeBall_TileData_4 - dw TransitionToPokeBall_TileData_5 - dw TransitionToPokeBall_TileData_6 - dw TransitionToPokeBall_TileData_7 - dw TransitionToPokeBall_TileData_8 - dw TransitionToPokeBall_TileData_9 - dw TransitionToPokeBall_TileData_10 - dw TransitionToPokeBall_TileData_11 - -TransitionToGreatBallPointers: - db 11 - dw TransitionToGreatBall_TileData_1 - dw TransitionToGreatBall_TileData_2 - dw TransitionToGreatBall_TileData_3 - dw TransitionToGreatBall_TileData_4 - dw TransitionToGreatBall_TileData_5 - dw TransitionToGreatBall_TileData_6 - dw TransitionToGreatBall_TileData_7 - dw TransitionToGreatBall_TileData_8 - dw TransitionToGreatBall_TileData_9 - dw TransitionToGreatBall_TileData_10 - dw TransitionToGreatBall_TileData_11 - -TransitionToUltraBallPointers: - db 11 - dw TransitionToUltraBall_TileData_1 - dw TransitionToUltraBall_TileData_2 - dw TransitionToUltraBall_TileData_3 - dw TransitionToUltraBall_TileData_4 - dw TransitionToUltraBall_TileData_5 - dw TransitionToUltraBall_TileData_6 - dw TransitionToUltraBall_TileData_7 - dw TransitionToUltraBall_TileData_8 - dw TransitionToUltraBall_TileData_9 - dw TransitionToUltraBall_TileData_10 - dw TransitionToUltraBall_TileData_11 - -TransitionToMasterBallPointers: - db 11 - dw TransitionToMasterBall_TileData_1 - dw TransitionToMasterBall_TileData_2 - dw TransitionToMasterBall_TileData_3 - dw TransitionToMasterBall_TileData_4 - dw TransitionToMasterBall_TileData_5 - dw TransitionToMasterBall_TileData_6 - dw TransitionToMasterBall_TileData_7 - dw TransitionToMasterBall_TileData_8 - dw TransitionToMasterBall_TileData_9 - dw TransitionToMasterBall_TileData_10 - dw TransitionToMasterBall_TileData_11 - -TransitionToPokeBall_TileData_1: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $40) - dw PinballPokeballGfx + $0 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_2: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $43) - dw PinballPokeballGfx + $30 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_3: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $46) - dw PinballPokeballGfx + $60 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_4: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $49) - dw PinballPokeballGfx + $90 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_5: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4c) - dw PinballPokeballGfx + $c0 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_6: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4f) - dw PinballPokeballGfx + $f0 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_7: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $52) - dw PinballPokeballGfx + $120 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_8: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $55) - dw PinballPokeballGfx + $150 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_9: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $58) - dw PinballPokeballGfx + $180 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_10: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $5b) - dw PinballPokeballGfx + $1b0 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToPokeBall_TileData_11: - dw Func_11d2 - db $20, $02 - dw (vTilesOB tile $5e) - dw PinballPokeballGfx + $1e0 - db Bank(PinballPokeballGfx) - db $00 - -TransitionToGreatBall_TileData_1: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $40) - dw PinballGreatballGfx + $0 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_2: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $43) - dw PinballGreatballGfx + $30 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_3: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $46) - dw PinballGreatballGfx + $60 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_4: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $49) - dw PinballGreatballGfx + $90 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_5: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4c) - dw PinballGreatballGfx + $c0 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_6: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4f) - dw PinballGreatballGfx + $f0 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_7: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $52) - dw PinballGreatballGfx + $120 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_8: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $55) - dw PinballGreatballGfx + $150 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_9: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $58) - dw PinballGreatballGfx + $180 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_10: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $5b) - dw PinballGreatballGfx + $1b0 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToGreatBall_TileData_11: - dw Func_11d2 - db $20, $02 - dw (vTilesOB tile $5e) - dw PinballGreatballGfx + $1e0 - db Bank(PinballGreatballGfx) - db $00 - -TransitionToUltraBall_TileData_1: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $40) - dw PinballUltraballGfx + $0 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_2: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $43) - dw PinballUltraballGfx + $30 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_3: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $46) - dw PinballUltraballGfx + $60 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_4: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $49) - dw PinballUltraballGfx + $90 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_5: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4c) - dw PinballUltraballGfx + $c0 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_6: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4f) - dw PinballUltraballGfx + $f0 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_7: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $52) - dw PinballUltraballGfx + $120 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_8: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $55) - dw PinballUltraballGfx + $150 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_9: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $58) - dw PinballUltraballGfx + $180 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_10: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $5b) - dw PinballUltraballGfx + $1b0 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToUltraBall_TileData_11: - dw Func_11d2 - db $20, $02 - dw (vTilesOB tile $5e) - dw PinballUltraballGfx + $1e0 - db Bank(PinballUltraballGfx) - db $00 - -TransitionToMasterBall_TileData_1: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $40) - dw PinballMasterballGfx + $0 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_2: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $43) - dw PinballMasterballGfx + $30 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_3: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $46) - dw PinballMasterballGfx + $60 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_4: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $49) - dw PinballMasterballGfx + $90 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_5: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4c) - dw PinballMasterballGfx + $c0 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_6: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $4f) - dw PinballMasterballGfx + $f0 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_7: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $52) - dw PinballMasterballGfx + $120 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_8: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $55) - dw PinballMasterballGfx + $150 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_9: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $58) - dw PinballMasterballGfx + $180 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_10: - dw Func_11d2 - db $30, $03 - dw (vTilesOB tile $5b) - dw PinballMasterballGfx + $1b0 - db Bank(PinballMasterballGfx) - db $00 - -TransitionToMasterBall_TileData_11: - dw Func_11d2 - db $20, $02 - dw (vTilesOB tile $5e) - dw PinballMasterballGfx + $1e0 - db Bank(PinballMasterballGfx) - db $00 - -Data_157f7: - dw Data_15803 - dw Data_15803 - dw Data_1580a - dw Data_15811 - dw Data_15811 - dw Data_15818 - -Data_15803: - db $08, $04, $40, $68, $51, $37, $00 -Data_1580a: - db $08, $04, $40, $70, $51, $37, $00 -Data_15811: - db $08, $04, $40, $78, $51, $37, $00 -Data_15818: - db $08, $04, $40, $80, $51, $37, $00 - -ResolveRedStageBoardTriggerCollision: ; 0x1581f - ld a, [wWhichBoardTrigger] - and a - ret z - xor a - ld [wWhichBoardTrigger], a - ld bc, FivePoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wWhichBoardTriggerId] - sub $11 - ld c, a - ld b, $0 - ld hl, wd521 - add hl, bc - ld [hl], $1 - ld a, [wd521] - and a - call nz, Func_1587c - ld a, [wd522] - and a - call nz, Func_158c0 - ld a, [wd523] - and a - call nz, Func_15904 - ld a, [wd524] - and a - call nz, HandleLeftAlleyTriggerRedField - ld a, [wd525] - and a - call nz, Func_15931 - ld a, [wd526] - and a - call nz, Func_15944 - ld a, [wd527] - and a - call nz, HandleRightAlleyTriggerRedField - ld a, [wd528] - and a - call nz, Func_15990 - ret - -Func_1587c: ; 0x1587c - xor a - ld [wd521], a - ld a, [wLeftAlleyTrigger] - and a - ret z - xor a - ld [wLeftAlleyTrigger], a - ld a, $1 - callba Func_10000 - ret c - ld a, [wLeftAlleyCount] - cp $3 - ret z - inc a - ld [wLeftAlleyCount], a - set 7, a - ld [wIndicatorStates], a - cp $83 - ret nz - ld a, [wStageCollisionState] - and $1 - or $6 - ld [wStageCollisionState], a - callba LoadStageCollisionAttributes - call Func_159f4 - ret - -Func_158c0: ; 0x158c0 - xor a - ld [wd522], a - ld a, [wLeftAlleyTrigger] - and a - ret z - xor a - ld [wLeftAlleyTrigger], a - ld a, $1 - callba Func_10000 - ret c - ld a, [wLeftAlleyCount] - cp $3 - ret z - inc a - ld [wLeftAlleyCount], a - set 7, a - ld [wIndicatorStates], a - cp $83 - ret nz - ld a, [wStageCollisionState] - and $1 - or $6 - ld [wStageCollisionState], a - callba LoadStageCollisionAttributes - call Func_159f4 - ret - -Func_15904: ; 0x15904 - xor a - ld [wd523], a - ld a, [wSecondaryLeftAlleyTrigger] - and a - ret z - xor a - ld [wSecondaryLeftAlleyTrigger], a - ld a, $3 - callba Func_10000 - ret - -HandleLeftAlleyTriggerRedField: ; 0x1591e -; Ball passed over the left alley trigger point in the Red Field. - xor a - ld [wd524], a - ld [wRightAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - ld a, $1 - ld [wLeftAlleyTrigger], a - call Func_159c9 - ret - -Func_15931: ; 0x15931 - xor a - ld [wd525], a - ld [wRightAlleyTrigger], a - ld [wLeftAlleyTrigger], a - ld a, $1 - ld [wSecondaryLeftAlleyTrigger], a - call Func_159c9 - ret - -Func_15944: ; 0x15944 - xor a - ld [wd526], a - ld a, [wRightAlleyTrigger] - and a - ret z - xor a - ld [wRightAlleyTrigger], a - ld a, $2 - callba Func_10000 - ret c - ld a, [wRightAlleyCount] - cp $3 - ret z - inc a - ld [wRightAlleyCount], a - cp $3 - jr z, .asm_1596e - set 7, a -.asm_1596e - ld [wIndicatorStates + 1], a - ld a, [wRightAlleyCount] - cp $2 - ret c - ld a, $80 - ld [wIndicatorStates + 3], a - ret - -HandleRightAlleyTriggerRedField: ; 0x1597d -; Ball passed over the right alley trigger point in the Red Field. - xor a - ld [wd527], a - ld [wLeftAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - ld a, $1 - ld [wRightAlleyTrigger], a - call Func_159c9 - ret - -Func_15990: ; 0x15990 - xor a - ld [wd528], a - ld a, [wRightAlleyTrigger] - and a - ret z - xor a - ld [wRightAlleyTrigger], a - ld a, $2 - callba Func_10000 - ret c - ld a, [wRightAlleyCount] - cp $3 - ret z - inc a - ld [wRightAlleyCount], a - cp $3 - jr z, .asm_159ba - set 7, a -.asm_159ba - ld [wIndicatorStates + 1], a - ld a, [wRightAlleyCount] - cp $2 - ret c - ld a, $80 - ld [wIndicatorStates + 3], a - ret - -Func_159c9: ; 0x159c9 - ld a, [wd7ad] - bit 7, a - ret nz - ld c, a - ld a, [wStageCollisionState] - and $1 - or c - ld [wStageCollisionState], a - ld a, $ff - ld [wd7ad], a - callba LoadStageCollisionAttributes - call Func_159f4 - ld a, $1 - ld [wd580], a - call Func_1404a - ret - -Func_159f4: ; 0x159f4 - ld a, [hLCDC] - bit 7, a - jr z, .asm_15a13 - ld a, [wd7f2] - and $fe - ld c, a - ld a, [wStageCollisionState] - and $fe - cp c - jr z, .asm_15a13 - add c - cp $2 - jr z, .asm_15a13 - lb de, $00, $00 - call PlaySoundEffect -.asm_15a13 - ld a, [wd7f2] - swap a - ld c, a - ld a, [wStageCollisionState] - sla a - or c - ld c, a - ld b, $0 - ld hl, TileDataPointers_15a3f - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_15a2d - ld hl, TileDataPointers_15d05 -.asm_15a2d - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_15a3f) - call Func_10aa - ld a, [wStageCollisionState] - ld [wd7f2], a - ret - -TileDataPointers_15a3f: - dw $0000 - dw TileData_15b71 - dw TileData_15b16 - dw TileData_15abf - dw TileData_15b23 - dw TileData_15adc - dw TileData_15b2a - dw TileData_15af3 - dw $0000 - dw $0000 - dw $0000 - dw TileData_15b16 - dw $0000 - dw TileData_15b23 - dw $0000 - dw TileData_15b2a - dw $0000 - dw $0000 - dw $0000 - dw TileData_15b71 - dw TileData_15b3d - dw $0000 - dw TileData_15b50 - dw $0000 - dw $0000 - dw $0000 - dw TileData_15b82 - dw $0000 - dw $0000 - dw TileData_15b3d - dw $0000 - dw TileData_15b50 - dw $0000 - dw $0000 - dw TileData_15b57 - dw $0000 - dw $0000 - dw TileData_15b71 - dw TileData_15b2a - dw $0000 - dw $0000 - dw $0000 - dw $0000 - dw TileData_15b57 - dw TileData_15b82 - dw $0000 - dw $0000 - dw TileData_15b2a - dw $0000 - dw $0000 - dw TileData_15b6a - dw $0000 - dw TileData_15b3d - dw $0000 - dw $0000 - dw TileData_15b71 - dw $0000 - dw $0000 - dw $0000 - dw TileData_15b6a - dw $0000 - dw TileData_15b3d - dw TileData_15b82 - dw $0000 - -TileData_15abf: ; 0x15abf - db $e - dw TileData_15b93 - dw TileData_15b9d - dw TileData_15ba7 - dw TileData_15bb1 - dw TileData_15bbb - dw TileData_15bc5 - dw TileData_15c0b - dw TileData_15c15 - dw TileData_15c1f - dw TileData_15c29 - dw TileData_15c33 - dw TileData_15c3d - dw TileData_15c47 - dw TileData_15c51 - -TileData_15adc: ; 0x15adc - db $0b - dw TileData_15c0b - dw TileData_15c15 - dw TileData_15c1f - dw TileData_15c29 - dw TileData_15c33 - dw TileData_15c3d - dw TileData_15c47 - dw TileData_15c51 - dw TileData_15ce7 - dw TileData_15cf1 - dw TileData_15cfb - -TileData_15af3: ; 0x15af3 - db $11 - dw TileData_15b93 - dw TileData_15b9d - dw TileData_15ba7 - dw TileData_15bb1 - dw TileData_15bbb - dw TileData_15bc5 - dw TileData_15c0b - dw TileData_15c15 - dw TileData_15c1f - dw TileData_15c29 - dw TileData_15c33 - dw TileData_15c3d - dw TileData_15c47 - dw TileData_15c51 - dw TileData_15cab - dw TileData_15cb5 - dw TileData_15cbf - -TileData_15b16: ; 0x15b16 - db $06 - dw TileData_15b93 - dw TileData_15b9d - dw TileData_15ba7 - dw TileData_15bb1 - dw TileData_15bbb - dw TileData_15bc5 - -TileData_15b23: ; 0x15b23 - db $03 - dw TileData_15ce7 - dw TileData_15cf1 - dw TileData_15cfb - -TileData_15b2a: ; 0x15b2a - db $09 - dw TileData_15b93 - dw TileData_15b9d - dw TileData_15ba7 - dw TileData_15bb1 - dw TileData_15bbb - dw TileData_15bc5 - dw TileData_15cab - dw TileData_15cb5 - dw TileData_15cbf - -TileData_15b3d: ; 0x15b3d - db $09 - dw TileData_15bcf - dw TileData_15bd9 - dw TileData_15be3 - dw TileData_15bed - dw TileData_15bf7 - dw TileData_15c01 - dw TileData_15ce7 - dw TileData_15cf1 - dw TileData_15cfb - -TileData_15b50: ; 0x15b50 - db $03 - dw TileData_15cab - dw TileData_15cb5 - dw TileData_15cbf - -TileData_15b57: ; 0x15b57 - db $09 - dw TileData_15b93 - dw TileData_15b9d - dw TileData_15ba7 - dw TileData_15bb1 - dw TileData_15bbb - dw TileData_15bc5 - dw TileData_15cc9 - dw TileData_15cd3 - dw TileData_15cdd - -TileData_15b6a: ; 0x15b6a - db $03 - dw TileData_15cc9 - dw TileData_15cd3 - dw TileData_15cdd - -TileData_15b71: ; 0x15b71 - db $08 - dw TileData_15c0b - dw TileData_15c15 - dw TileData_15c1f - dw TileData_15c29 - dw TileData_15c33 - dw TileData_15c3d - dw TileData_15c47 - dw TileData_15c51 - -TileData_15b82: ; 0x15b82 - db $08 - dw TileData_15c5b - dw TileData_15c65 - dw TileData_15c6f - dw TileData_15c79 - dw TileData_15c83 - dw TileData_15c8d - dw TileData_15c97 - dw TileData_15ca1 - -TileData_15b93: ; 0x15b93 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15b9d: ; 0x15b9d - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $30 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15ba7: ; 0x15ba7 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15bb1: ; 0x15bb1 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $90 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15bbb: ; 0x15bbb - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $50 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15bc5: ; 0x15bc5 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $53 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15bcf: ; 0x15bcf - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldTopBaseGameBoyGfx + $9a0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15bd9: ; 0x15bd9 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $47 - dw StageRedFieldTopBaseGameBoyGfx + $9d0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15be3: ; 0x15be3 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4A - dw StageRedFieldTopBaseGameBoyGfx + $a00 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15bed: ; 0x15bed - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4D - dw StageRedFieldTopBaseGameBoyGfx + $a30 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15bf7: ; 0x15bf7 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $50 - dw StageRedFieldTopBaseGameBoyGfx + $a60 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c01: ; 0x15c01 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $53 - dw StageRedFieldTopBaseGameBoyGfx + $a90 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c0b: ; 0x15c0b - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $56 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $120 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c15: ; 0x15c15 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $59 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $150 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c1f: ; 0x15c1f - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $180 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c29: ; 0x15c29 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5F - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c33: ; 0x15c33 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $62 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c3d: ; 0x15c3d - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $65 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $210 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c47: ; 0x15c47 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $66 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $620 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c51: ; 0x15c51 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $69 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $650 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15c5b: ; 0x15c5b - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $56 - dw StageRedFieldTopBaseGameBoyGfx + $ac0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c65: ; 0x15c65 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $59 - dw StageRedFieldTopBaseGameBoyGfx + $af0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c6f: ; 0x15c6f - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5C - dw StageRedFieldTopBaseGameBoyGfx + $b20 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c79: ; 0x15c79 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5F - dw StageRedFieldTopBaseGameBoyGfx + $b50 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c83: ; 0x15c83 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $62 - dw StageRedFieldTopBaseGameBoyGfx + $b80 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c8d: ; 0x15c8d - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $65 - dw StageRedFieldTopBaseGameBoyGfx + $bb0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15c97: ; 0x15c97 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $66 - dw StageRedFieldTopBaseGameBoyGfx + $bc0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15ca1: ; 0x15ca1 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $69 - dw StageRedFieldTopBaseGameBoyGfx + $bf0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15cab: ; 0x15cab - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15cb5: ; 0x15cb5 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $6F - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15cbf: ; 0x15cbf - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $72 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $310 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15cc9: ; 0x15cc9 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $6C - dw StageRedFieldTopBaseGameBoyGfx + $c20 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15cd3: ; 0x15cd3 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $6F - dw StageRedFieldTopBaseGameBoyGfx + $c50 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15cdd: ; 0x15cdd - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $72 - dw StageRedFieldTopBaseGameBoyGfx + $c80 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_15ce7: ; 0x15ce7 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $220 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15cf1: ; 0x15cf1 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $6F - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $250 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_15cfb: ; 0x15cfb - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $72 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $280 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileDataPointers_15d05: - dw $0000 - dw TileData_15db1 - dw TileData_15d96 - dw TileData_15d85 - dw TileData_15d99 - dw TileData_15d8a - dw TileData_15d9c - dw TileData_15d8f - dw $0000 - dw $0000 - dw $0000 - dw TileData_15d96 - dw $0000 - dw TileData_15d99 - dw $0000 - dw TileData_15d9c - dw $0000 - dw $0000 - dw $0000 - dw TileData_15db1 - dw TileData_15da1 - dw $0000 - dw TileData_15da6 - dw $0000 - dw $0000 - dw $0000 - dw TileData_15db4 - dw $0000 - dw $0000 - dw TileData_15da1 - dw $0000 - dw TileData_15da6 - dw $0000 - dw $0000 - dw TileData_15da9 - dw $0000 - dw $0000 - dw TileData_15db1 - dw TileData_15d9c - dw $0000 - dw $0000 - dw $0000 - dw $0000 - dw TileData_15da9 - dw TileData_15db4 - dw $0000 - dw $0000 - dw TileData_15d9c - dw $0000 - dw $0000 - dw TileData_15dae - dw $0000 - dw TileData_15da1 - dw $0000 - dw $0000 - dw TileData_15db1 - dw $0000 - dw $0000 - dw $0000 - dw TileData_15dae - dw $0000 - dw TileData_15da1 - dw TileData_15db4 - dw $0000 - -TileData_15d85: ; 0x15d85 - db $02 - dw TileData_15db7 - dw TileData_15df2 - -TileData_15d8a: ; 0x15d8a - db $02 - dw TileData_15df2 - dw TileData_15e82 - -TileData_15d8f: ; 0x15d8f - db $03 - dw TileData_15db7 - dw TileData_15df2 - dw TileData_15e50 - -TileData_15d96: ; 0x15d96 - db $01 - dw TileData_15db7 - -TileData_15d99: ; 0x15d99 - db $01 - dw TileData_15e82 - -TileData_15d9c: ; 0x15d9c - db $02 - dw TileData_15db7 - dw TileData_15e50 - -TileData_15da1: ; 0x15da1 - db $02 - dw TileData_15dd5 - dw TileData_15e82 - -TileData_15da6: ; 0x15da6 - db $01 - dw TileData_15e50 - -TileData_15da9: ; 0x15da9 - db $02 - dw TileData_15db7 - dw TileData_15e69 - -TileData_15dae: ; 0x15dae - db $01 - dw TileData_15e69 - -TileData_15db1: ; 0x15dab1 - db $01 - dw TileData_15df2 - -TileData_15db4: ; 0x15db4 - db $01 - dw TileData_15e21 - -TileData_15db7: ; 0x15db7 - dw Func_1198 - - db ($a << 1) - db $03 - dw vBGMap + $4c - - db ($40 << 1) - db $09 - dw vBGMap + $6c - - db (($32 << 1) | 1) - db $08 - dw vBGMap + $8d - - db (4 << 1) - dw vBGMap + $ae - - db (2 << 1) - dw vBGMap + $d0 - - db (2 << 1) - dw vBGMap + $f1 - - db (2 << 1) - dw vBGMap + $111 - - db (1 << 1) - dw vBGMap + $132 - - db $00 ; terminator - -TileData_15dd5: ; 0x15dd5 - dw Func_1198 - - db ($a << 1) - db $03 - dw vBGMap + $4c - - db (($28 << 1) | 1) - db $08 - dw vBGMap + $6c - - db ($4 << 1) - dw vBGMap + $8d - - db ($04 << 1) - dw vBGMap + $ae - - db ($02 << 1) - dw vBGMap + $d0 - - db ($02 << 1) - dw vBGMap + $f1 - - db ($02 << 1) - dw vBGMap + $111 - - db (1 << 1) - dw vBGMap + $132 - - db $00 ; terminator - -TileData_15df2: ; 0x15df2 - dw LoadTileLists - db $19 ; total number of tiles - - db $05 ; number of tiles - dw vBGMap + $a9 - db $1e, $1f, $20, $21, $22 - - db $07 - dw vBGMap + $c7 - db $23, $24, $39, $3a, $25, $3b, $26 - - db $08 ; number of tiles - dw vBGMap + $e6 - db $27, $37, $28, $29, $2a, $2b, $3c, $2c - - db $03 ; number of tiles - dw vBGMap + $106 - db $2d, $38, $2e - - db $01 ; number of tiles - dw vBGMap + $10d - db $2f - - db $01 ; number of tiles - dw vBGMap + $126 - db $30 - - db 00 ; terminator - -TileData_15e21: ; 0x15e21 - dw LoadTileLists - db $19 ; total number of tiles - - db $05 ; number of tiles - dw vBGMap + $a9 - db $0b, $0c, $0d, $0e, $0f - - db $07 - dw vBGMap + $c7 - db $10, $11, $33, $34, $12, $35, $13 - - db $08 ; number of tiles - dw vBGMap + $e6 - db $14, $31, $15, $16, $17, $18, $36, $19 - - db $03 ; number of tiles - dw vBGMap + $106 - db $1a, $32, $1b - - db $01 ; number of tiles - dw vBGMap + $10d - db $1c - - db $01 ; number of tiles - dw vBGMap + $126 - db $1d - - db 00 ; terminator - -TileData_15e50: ; 0x15e50 - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $100 - db $45, $46, $22 - - db $02 ; number of tiles - dw vBGMap + $120 - db $45, $46 - - db $02 ; number of tiles - dw vBGMap + $140 - db $45, $46 - - db $02 ; number of tiles - dw vBGMap + $160 - db $45, $46 - - db $00 ; terminator - -TileData_15e69: ; 0x15e69 - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $100 - db $43, $44, $22 - - db $02 ; number of tiles - dw vBGMap + $120 - db $45, $46 - - db $02 ; number of tiles - dw vBGMap + $140 - db $45, $46 - - db $02 ; number of tiles - dw vBGMap + $160 - db $45, $46 - - db $00 ; terminator - -TileData_15e82: ; 0x15e82 - dw Func_1198 - - db ((4 << 1) | 1) - db $07 - dw vBGMap + $100 - - db (($23 << 1) | 1) - db $04 - dw vBGMap + $120 - - db (2 << 1) - dw vBGMap + $140 - - db (2 << 1) - dw vBGMap + $160 - - db $00 ; terminator - -ResolveBellsproutCollision: ; 0x15e93 - ld a, [wBellsproutCollision] - and a - jr z, .asm_15eda - xor a - ld [wBellsproutCollision], a - ld bc, TenThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $05 - call PlaySoundEffect - ld hl, BellsproutAnimationData - ld de, wBellsproutAnimationFrameCounter - call CopyHLToDE - xor a - ld [wBallXVelocity], a - ld [wBallXVelocity + 1], a - ld [wBallYVelocity], a - ld [wBallYVelocity + 1], a - ld [wBallXPos], a - ld [wBallYPos], a - ld a, $7c - ld [wBallXPos + 1], a - ld a, $78 - ld [wBallYPos + 1], a - xor a - ld [wd549], a -.asm_15eda - ld hl, BellsproutAnimationData - ld de, wBellsproutAnimationFrameCounter - call UpdateAnimation - push af - ld a, [wBellsproutAnimationFrameCounter] - and a - jr nz, .asm_15ef8 - ld a, $19 - ld [wBellsproutAnimationFrameCounter], a - xor a - ld [wBellsproutAnimationFrame], a - ld a, $6 - ld [wBellsproutAnimationFrameIndex], a -.asm_15ef8 - pop af - ret nc - ld a, [wBellsproutAnimationFrameIndex] - cp $1 - jr nz, .asm_15f35 - xor a - ld [wd548], a - ld a, [wRightAlleyCount] - cp $2 - jr c, .noCatchEmMode - ld a, $8 - jr nz, .startCatchEmMode - xor a -.startCatchEmMode - ld [wRareMonsFlag], a - callba StartCatchEmMode -.noCatchEmMode - ld hl, wd62a - call Func_e4a - ret nc - ld c, $19 - call Func_e55 - callba z, Func_30164 - ret - -.asm_15f35 - ld a, [wBellsproutAnimationFrameIndex] - cp $4 - jr nz, .asm_15f42 - ld a, $1 - ld [wd548], a - ret - -.asm_15f42 - ld a, [wBellsproutAnimationFrameIndex] - cp $5 - ret nz - ld a, $1 - ld [wd549], a - xor a - ld [wBallXVelocity + 1], a - ld a, $2 - ld [wBallYVelocity + 1], a - lb de, $00, $06 - call PlaySoundEffect - ld a, $5 - callba Func_10000 - ret - -BellsproutAnimationData: ; 0x15f69 -; Each entry is [duration][OAM id] - db $08, $01 - db $06, $02 - db $20, $03 - db $06, $02 - db $08, $01 - db $01, $00 - db $29, $00 - db $28, $01 - db $2A, $00 - db $27, $01 - db $29, $00 - db $28, $01 - db $2B, $00 - db $28, $01 - db $00 ; terminator - -Func_15f86: ; 0x15f86 - ld a, [wWhichBumper] - and a - jr z, .asm_15f99 - call Func_5fb8 - call Func_15fa6 - xor a - ld [wWhichBumper], a - call Func_15fda -.asm_15f99 - ld a, [wd4da] - and a - ret z - dec a - ld [wd4da], a - call z, Func_5fb8 - ret - -Func_15fa6: ; 0x15fa6 - ld a, $10 - ld [wd4da], a - ld a, [wWhichBumperId] - sub $6 - ld [wd4db], a - sla a - inc a - jr asm_15fc0 - -Func_5fb8: ; 0x5fb8 - ld a, [wd4db] - cp $ff - ret z - sla a -asm_15fc0 - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_16010 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_15fd0 - ld hl, Data_16080 -.asm_15fd0 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_16010) - call Func_10aa - ret - -Func_15fda: ; 0x15fda - ld a, $ff - ld [wd803], a - ld a, $3 - ld [wd804], a - ld hl, $0200 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - ld a, [wWhichBumperId] - sub $6 - ld c, a - ld b, $0 - ld hl, CollisionAngleDeltas_1600e - add hl, bc - ld a, [wCollisionForceAngle] - add [hl] - ld [wCollisionForceAngle], a - lb de, $00, $0b - call PlaySoundEffect - ret - -CollisionAngleDeltas_1600e: - db -8, 8 - -TileDataPointers_16010: - dw TileData_16018 - dw TileData_1601b - dw TileData_1601e - dw TileData_16021 - -TileData_16018: ; 0x16018 - db $01 - dw TileData_16024 - -TileData_1601b: ; 0x1601b - db $01 - dw TileData_1603B - -TileData_1601e: ; 0x1601e - db $01 - dw TileData_16052 - -TileData_16021: ; 0x16021 - db $01 - dw TileData_16069 - -TileData_16024: ; 0x16024 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $60 - - db $02 ; number of tiles - dw vBGMap + $144 - db $61, $62 - - db $02 ; number of tiles - dw vBGMap + $164 - db $63, $64 - - db $02 ; number of tiles - dw vBGMap + $185 - db $65, $66 - - db $00 ; terminator - -TileData_1603B: ; 0x1603B - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $67 - - db $02 ; number of tiles - dw vBGMap + $144 - db $68, $69 - - db $02 ; number of tiles - dw vBGMap + $164 - db $6A, $6B - - db $02 ; number of tiles - dw vBGMap + $185 - db $6C, $6D - - db $00 ; terminator - -TileData_16052: ; 0x16052 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $6E - - db $02 ; number of tiles - dw vBGMap + $14E - db $6F, $70 - - db $02 ; number of tiles - dw vBGMap + $16E - db $71, $72 - - db $02 ; number of tiles - dw vBGMap + $18D - db $73, $74 - - db $00 ; terminator - -TileData_16069: ; 0x16069 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $75 - - db $02 ; number of tiles - dw vBGMap + $14E - db $76, $77 - - db $02 ; number of tiles - dw vBGMap + $16E - db $78, $79 - - db $02 ; number of tiles - dw vBGMap + $18D - db $7A, $7B - - db $00 ; terminator - -Data_16080: - dw Data_16088 - dw Data_1608b - dw Data_1608e - dw Data_16091 - -Data_16088: ; 0x16088 - db $01 - dw Data_16094 - -Data_1608b: ; 0x1608b - db $01 - dw Data_160ab - -Data_1608e: ; 0x1608e - db $01 - dw Data_160c2 - -Data_16091: ; 0x16091 - db $01 - dw Data_160d9 - -Data_16094: ; 0x16094 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $2A - - db $02 ; number of tiles - dw vBGMap + $144 - db $2B, $2C - - db $02 ; number of tiles - dw vBGMap + $164 - db $2D, $2E - - db $02 ; number of tiles - dw vBGMap + $185 - db $2F, $30 - - db $00 ; terminator - -Data_160ab: ; 0x160ab - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $31 - - db $02 ; number of tiles - dw vBGMap + $144 - db $32, $33 - - db $02 ; number of tiles - dw vBGMap + $164 - db $34, $35 - - db $02 ; number of tiles - dw vBGMap + $185 - db $36, $37 - - db $00 ; terminator - -Data_160c2: ; 0x160c2 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $2A - - db $02 ; number of tiles - dw vBGMap + $14E - db $2C, $2B - - db $02 ; number of tiles - dw vBGMap + $16E - db $2E, $2D - - db $02 ; number of tiles - dw vBGMap + $18D - db $30, $2F - - db $00 ; terminator - -Data_160d9: ; 0x160d9 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $31 - - db $02 ; number of tiles - dw vBGMap + $14E - db $33, $32 - - db $02 ; number of tiles - dw vBGMap + $16E - db $35, $34 - - db $02 ; number of tiles - dw vBGMap + $18D - db $37, $36 - - db $00 ; terminator - -ResolveDittoSlotCollision: ; 0x160f0 - ld a, [wDittoSlotCollision] - and a - jr z, .asm_16137 - xor a - ld [wDittoSlotCollision], a - ld bc, TenThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $21 - call PlaySoundEffect - xor a - ld hl, wBallXVelocity - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [wd549], a - ld [wBallXPos], a - ld [wBallYPos], a - ld a, $11 - ld [wBallXPos + 1], a - ld a, $23 - ld [wBallYPos + 1], a - ld a, $10 - ld [wd600], a - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a -.asm_16137 - ld a, [wd600] - and a - ret z - dec a - ld [wd600], a - cp $f - jr nz, .asm_1614f - callba LoadMiniBallGfx - ret - -.asm_1614f - cp $c - jr nz, .asm_1615e - callba Func_dd62 - ret - -.asm_1615e - cp $9 - jr nz, .asm_1616d - xor a - ld [wd548], a - ld [wBallSpin], a - ld [wBallRotation], a - ret - -.asm_1616d - cp $6 - jr nz, .asm_1618e - callba Func_10ab3 - ld a, $1 - ld [wd548], a - ld [wd549], a - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - ret - -.asm_1618e - cp $3 - jr nz, .asm_1619d - callba LoadMiniBallGfx - ret - -.asm_1619d - and a - ret nz - callba LoadBallGfx - ld a, $2 - ld [wBallYVelocity + 1], a - ret - -Func_161af: ; 0x161af - ld a, [wd604] - and a - ret z - ld a, [wBallYPos + 1] - sub $fe - cp $30 - ret nc - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, a - ld b, $0 - sla c - sla c - add hl, bc - jr asm_1620f - -Func_161e0: ; 0x161e0 - ld a, [wd604] - and a - ret z - ld a, [wBallYPos + 1] - sub $86 - cp $30 - ret nc - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, a - ld b, $0 - sla c - sla c - add hl, bc -asm_1620f: ; 0x1620f - ld bc, BallPhysicsData_f0000 - add hl, bc - ld de, wBallXVelocity - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - push bc - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - bit 7, b - jr z, .asm_1624e - ld a, c - cpl - ld c, a - ld a, b - cpl - ld b, a - inc bc -.asm_1624e - pop hl - bit 7, h - jr z, .asm_1625a - ld a, l - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl -.asm_1625a - add hl, bc - sla l - rl h - ld a, h - cp $2 - ret c - ld a, [wd804] - and a - ret nz - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - lb de, $00, $04 - call PlaySoundEffect - ret - -Func_16279: ; 0x16279 - ld a, [wSlotCollision] - and a - jr z, .asm_162ae - xor a - ld [wSlotCollision], a - ld a, [wd604] - and a - ret z - ld a, [wd603] - and a - jr nz, .asm_162ae - xor a - ld hl, wBallXVelocity - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [wd549], a - ld [wBallXPos], a - ld [wBallYPos], a - ld a, $50 - ld [wBallXPos + 1], a - ld a, $16 - ld [wBallYPos + 1], a - ld a, $13 - ld [wd603], a -.asm_162ae - ld a, [wd603] - and a - ret z - dec a - ld [wd603], a - ld a, $18 - ld [wd606], a - ld a, [wd603] - cp $12 - jr nz, .asm_162d4 - lb de, $00, $21 - call PlaySoundEffect - callba LoadMiniBallGfx - ret - -.asm_162d4 - cp $f - jr nz, .asm_162e3 - callba Func_dd62 - ret - -.asm_162e3 - cp $c - jr nz, .asm_162f2 - xor a - ld [wd548], a - ld [wBallSpin], a - ld [wBallRotation], a - ret - -.asm_162f2 - cp $9 - jr nz, .asm_162fa - call Func_16352 - ret - -.asm_162fa - cp $6 - jr nz, .asm_16317 - xor a - ld [wd604], a - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - callba LoadMiniBallGfx - ret - -.asm_16317 - cp $3 - jr nz, .asm_16330 - callba LoadBallGfx - ld a, $2 - ld [wBallYVelocity + 1], a - ld a, $80 - ld [wBallXVelocity], a - ret - -.asm_16330 - and a - ret nz - call Func_16425 - ld a, [wCatchEmOrEvolutionSlotRewardActive] - cp CATCHEM_MODE_SLOT_REWARD - ret nz - call GenRandom - and $8 - ld [wRareMonsFlag], a - callba StartCatchEmMode - xor a - ld [wCatchEmOrEvolutionSlotRewardActive], a - ret - -Func_16352: ; 0x16352 - xor a - ld [wIndicatorStates + 4], a - ld a, $d - callba Func_10000 - jr nc, .asm_1636d - ld a, $1 - ld [wd548], a - ld [wd549], a - ret - -.asm_1636d - ld a, [wd624] - cp $3 - jr nz, .asm_163b3 - ld a, [wd607] - and a - jr nz, .asm_163b3 -.asm_1637a - ld a, [wBonusStageSlotRewardActive] - and a - jr nz, .asm_16389 - xor a - ld [wd625], a - ld a, $40 - ld [wd626], a -.asm_16389 - xor a - ld [wBonusStageSlotRewardActive], a - ld a, $1 - ld [wd495], a - ld [wd4ae], a - ld a, [wd498] - ld c, a - ld b, $0 - ld hl, GoToBonusStageTextIds_RedField - add hl, bc - ld a, [hl] - ld [wd497], a - call Func_163f2 - xor a - ld [wd609], a - ld [wCatchEmOrEvolutionSlotRewardActive], a - ld a, $1e - ld [wd607], a - ret - -.asm_163b3 - callba Func_ed8e - xor a - ld [wd608], a - ld a, [wd61d] - cp $d - jr nc, .asm_1637a - ld a, $1 - ld [wd548], a - ld [wd549], a - ld a, [wCatchEmOrEvolutionSlotRewardActive] - cp EVOLUTION_MODE_SLOT_REWARD - ret nz - callba Func_10ab3 - ld a, [wd7ad] - ld c, a - ld a, [wStageCollisionState] - and $1 - or c - ld [wStageCollisionState], a - xor a - ld [wCatchEmOrEvolutionSlotRewardActive], a - ret - -Func_163f2: ; 0x163f2 - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5dc - ld a, [wd497] - ld de, GoToDiglettStageText - cp STAGE_DIGLETT_BONUS - jr z, .asm_1640f - ld de, GoToGengarStageText - cp STAGE_GENGAR_BONUS - jr z, .asm_1640f - ld de, GoToMewtwoStageText -.asm_1640f - call LoadTextHeader - ld de, $0000 - call PlaySong - rst AdvanceFrame - lb de, $3c, $23 - call PlaySoundEffect - ret - -GoToBonusStageTextIds_RedField: - db STAGE_GENGAR_BONUS - db STAGE_MEWTWO_BONUS - db STAGE_MEOWTH_BONUS - db STAGE_DIGLETT_BONUS - db STAGE_SEEL_BONUS - -Func_16425: ; 0x16425 - ld a, [wCurrentStage] - and $1 - sla a - ld c, a - ld a, [wd604] - add c - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1644d - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_16441 - ld hl, TileDataPointers_164a1 -.asm_16441 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_1644d) - call Func_10aa - ret - -TileDataPointers_1644d: - dw TileData_16455 - dw TileData_16458 - dw TileData_1645b - dw TileData_16460 - -TileData_16455: ; 0x16455 - db $01 - dw TileData_16465 - -TileData_16458: ; 0x16458 - db $01 - dw TileData_1646f - -TileData_1645b: ; 0x1645b - db $02 - dw TileData_16479 - dw TileData_16483 - -TileData_16460: ; 0x16460 - db $02 - dw TileData_1648D - dw TileData_16497 - -TileData_16465: ; 0x16465 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldTopBaseGameBoyGfx + $1c0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_1646f: ; 0x1646f - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16479: ; 0x16479 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $48 - dw StageRedFieldBottomBaseGameBoyGfx + $c80 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16483: ; 0x16483 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $4A - dw StageRedFieldBottomBaseGameBoyGfx + $CA0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1648D: ; 0x1648D - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $340 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16497: ; 0x16497 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $4A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $360 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileDataPointers_164a1: - dw TileData_164a9 - dw TileData_164ac - dw TileData_164af - dw TileData_164b2 - -TileData_164a9: ; 0x164a9 - db $01 - dw TileData_164b5 - -TileData_164ac: ; 0x164ac - db $01 - dw TileData_164be - -TileData_164af: ; 0x164af - db $01 - dw TileData_164c7 - -TileData_164b2: ; 0x164b2 - db $01 - dw TileData_164d5 - -TileData_164b5: ; 0x164b5 - dw LoadTileLists - db $02 - - db $02 - dw vBGMap + $229 - db $d4, $d5 - - db $00 - -TileData_164be: ; 0x164be - dw LoadTileLists - db $02 - - db $02 - - dw vBGMap + $229 - db $d6, $d7 - - db $00 - -TileData_164c7: ; 0x164c7 - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $9 - db $38, $39 - - db $02 - dw vBGMap + $29 - db $3a, $3b - - db $00 - -TileData_164d5: ; 0x164d5 - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $9 - db $3c, $3d - - db $02 - dw vBGMap + $29 - db $3e, $3f - - db $00 - -Func_164e3: ; 0x164e3 - ld a, [wd607] - and a - ret z - dec a - ld [wd607], a - ret nz - ld a, [wInSpecialMode] - and a - ret nz - ld a, [wd609] - and a - jr z, .asm_164ff - ld a, [wd498] - add $15 - jr .asm_16506 - -.asm_164ff - ld a, [wd608] - and a - ret z - ld a, $1a -.asm_16506 - ld hl, wCurrentStage - bit 0, [hl] - callba nz, Func_30256 - ld a, [wd604] - and a - ret nz - ld a, $1 - ld [wd604], a - ld a, $80 - ld [wIndicatorStates + 4], a - ld a, [wCurrentStage] - bit 0, a - call nz, Func_16425 - ret - -Func_1652d: ; 0x1652d - ld a, [wPinballLaunchAlley] - and a - ret z - xor a - ld [wPinballLaunchAlley], a - ld a, [wd4de] - and a - jr z, .asm_16566 - xor a - ld [wRightAlleyTrigger], a - ld [wLeftAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - ld hl, wBallXVelocity - ld [hli], a - ld [hl], a - ld [wBallSpin], a - ld [wBallRotation], a - ld a, $80 - ld [wBallYVelocity], a - ld a, $fa - ld [wBallYVelocity + 1], a - ld a, $1 - ld [wd549], a - lb de, $00, $0a - call PlaySoundEffect -.asm_16566 - ld a, $ff - ld [wPreviousTriggeredGameObject], a - ld a, [wd4de] - and a - ret nz - ld a, [wd4e0] - and a - jr nz, .asm_16582 - call Func_1658f - ld a, $1 - ld [wd4e0], a - ld [wd4de], a - ret - -.asm_16582 - ld hl, wKeyConfigBallStart - call IsKeyPressed - ret z - ld a, $1 - ld [wd4de], a - ret - -Func_1658f: ; 0x1658f - ld a, [hGameBoyColorFlag] - and a - callba nz, LoadGreyBillboardPaletteData -.showNextMap - ld a, [wInitialMapSelectionIndex] - inc a - cp $7 ; number of maps to choose from at the start of play - jr c, .gotMapId - xor a ; wrap around to 0 -.gotMapId - ld [wInitialMapSelectionIndex], a - ld c, a - ld b, $0 - ld hl, RedStageInitialMaps - add hl, bc - ld a, [hl] - ld [wCurrentMap], a - push af - lb de, $00, $48 - call PlaySoundEffect - pop af - add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers - callba LoadBillboardPicture - ld b, $20 ; number of frames to delay before the next map is shown -.waitOnCurrentMap - push bc - callba Func_eeee - ld hl, wKeyConfigBallStart - call IsKeyPressed - jr nz, .ballStartKeyPressed - pop bc - dec b - jr nz, .waitOnCurrentMap - jr .showNextMap - -.ballStartKeyPressed - pop bc - callba Func_30253 - ld bc, StartFromMapText - callba Func_3118f - ld a, [wCurrentMap] - ld [wd4e3], a - xor a - ld [wd4e2], a - ret - -RedStageInitialMaps: ; 0x16605 - db PALLET_TOWN - db VIRIDIAN_FOREST - db PEWTER_CITY - db CERULEAN_CITY - db VERMILION_SEASIDE - db ROCK_MOUNTAIN - db LAVENDER_TOWN - -ResolveRedStagePikachuCollision: ; 0x1660c - ld a, [wWhichPikachu] - and a - jr z, .asm_1667b - xor a - ld [wWhichPikachu], a - ld a, [wd51c] - and a - jr nz, .asm_1667b - ld a, [wPikachuSaverSlotRewardActive] - and a - jr nz, .asm_16634 - ld a, [wWhichPikachuId] - sub $1c - ld hl, wd518 - cp [hl] - jr nz, .asm_1667b - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - jr nz, .asm_16667 -.asm_16634 - ld hl, PikachuSaverAnimationDataBlueStage - ld de, wPikachuSaverAnimationFrameCounter - call CopyHLToDE - ld a, [wPikachuSaverSlotRewardActive] - and a - jr nz, .asm_16647 - xor a - ld [wPikachuSaverCharge], a -.asm_16647 - ld a, $1 - ld [wd51c], a - xor a - ld [wBallXVelocity], a - ld [wBallXVelocity + 1], a - ld [wBallYVelocity], a - ld [wBallYVelocity + 1], a - ld [wBallSpin], a - ld [wBallRotation], a - ld [wd549], a - call FillBottomMessageBufferWithBlackTile - jr .asm_1667b - -.asm_16667 - ld hl, PikachuSaverAnimation2DataBlueStage - ld de, wPikachuSaverAnimationFrameCounter - call CopyHLToDE - ld a, $2 - ld [wd51c], a - lb de, $00, $3b - call PlaySoundEffect -.asm_1667b - ld a, [wd51c] - and a - call z, Func_16766 - call Func_1669e - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - ret nz - ld a, [wd51e] - and a - ret z - dec a - ld [wd51e], a - cp $5a - ret nz - lb de, $0f, $22 - call PlaySoundEffect - ret - -Func_1669e: ; 0x1669e - ld a, [wd51c] - cp $1 - jr nz, .asm_16719 - ld hl, PikachuSaverAnimationDataBlueStage - ld de, wPikachuSaverAnimationFrameCounter - call UpdateAnimation - ret nc - ld a, [wPikachuSaverAnimationFrameIndex] - cp $1 - jr nz, .asm_166f7 - xor a - ld [wd85d], a - call Func_310a - rst AdvanceFrame - ld a, $1 - callba PlayPikachuSoundClip - ld a, $1 - ld [wd85d], a - ld a, $ff - ld [wd803], a - ld a, $60 - ld [wd804], a - ld hl, wd62e - call Func_e4a - jr nc, .asm_166f0 - ld c, $a - call Func_e55 - callba z, Func_30164 -.asm_166f0 - lb de, $16, $10 - call PlaySoundEffect - ret - -.asm_166f7 - ld a, [wPikachuSaverAnimationFrameIndex] - cp $11 - ret nz - ld a, $fc - ld [wBallYVelocity + 1], a - ld a, $1 - ld [wd549], a - ld bc, FiveThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - xor a - ld [wd51c], a - ret - -.asm_16719 - cp $2 - jr nz, .asm_16732 - ld hl, PikachuSaverAnimation2DataBlueStage - ld de, wPikachuSaverAnimationFrameCounter - call UpdateAnimation - ret nc - ld a, [wPikachuSaverAnimationFrameIndex] - cp $1 - ret nz - xor a - ld [wd51c], a - ret - -.asm_16732 - ld a, [hNumFramesDropped] - swap a - and $1 - ld [wPikachuSaverAnimationFrame], a - ret - -PikachuSaverAnimationDataBlueStage: ; 0x1673c -; Each entry is [duration][OAM id] - db $0C, $02 - db $05, $03 - db $05, $02 - db $05, $04 - db $05, $05 - db $05, $02 - db $06, $06 - db $06, $07 - db $06, $08 - db $06, $02 - db $06, $05 - db $06, $08 - db $06, $07 - db $06, $02 - db $06, $08 - db $06, $07 - db $06, $02 - db $01, $00 - db $00 - -PikachuSaverAnimation2DataBlueStage: ; 0x16761 -; Each entry is [duration][OAM id] - db $0C, $02 - db $01, $00 - db $00 - -Func_16766: ; 0x16766 - ld hl, wKeyConfigLeftFlipper - call IsKeyPressed2 - jr z, .asm_16774 - ld hl, wd518 - ld [hl], $0 - ret - -.asm_16774 - ld hl, wKeyConfigRightFlipper - call IsKeyPressed2 - ret z - ld hl, wd518 - ld [hl], $1 - ret - -ResolveStaryuCollision: ; 0x16781 - ld a, [wStaryuCollision] - and a - jr z, .asm_167bd - xor a - ld [wStaryuCollision], a - ld a, [wd503] - and a - jr nz, .asm_167c2 - ld bc, FiveThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wd502] - xor $1 - set 1, a - ld [wd502], a - ld a, $14 - ld [wd503], a - call Func_16859 - ld a, $6 - callba Func_10000 - ret - -.asm_167bd - ld a, [wd503] - and a - ret z -.asm_167c2 - dec a - ld [wd503], a - ret nz - ld a, [wd502] - res 1, a - ld [wd502], a - call Func_16859 - ld a, [wd502] - and $1 - ld c, a - ld a, [wStageCollisionState] - and $fe - or c - ld [wStageCollisionState], a - callba LoadStageCollisionAttributes - call Func_159f4 - lb de, $00, $07 - call PlaySoundEffect - ld a, [wStageCollisionState] - bit 0, a - jp nz, Func_15450 - jp Func_15499 - -Func_167ff: ; 0x167ff - ld a, [wStaryuCollision] - and a - jr z, .asm_16839 - xor a - ld [wStaryuCollision], a - ld a, [wd503] - and a - jr nz, .asm_1683e - ld bc, FiveThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wd502] - xor $1 - ld [wd502], a - ld a, $14 - ld [wd503], a - call Func_16878 - ld a, $6 - callba Func_10000 - ret - -.asm_16839 - ld a, [wd503] - and a - ret z -.asm_1683e - dec a - ld [wd503], a - ret nz - ld a, [wd502] - and $1 - ld c, a - ld a, [wStageCollisionState] - and $fe - or c - ld [wStageCollisionState], a - lb de, $00, $07 - call PlaySoundEffect - ret - -Func_16859: ; 0x16859 - ld a, [wd502] - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_16899 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1686c - ld hl, TileDataPointers_16910 -.asm_1686c - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_16899) - call Func_10aa - ret - -Func_16878: ; 0x16878 - ld a, [wd502] - and $1 - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1695a - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1688d - ld hl, TileDataPointers_16980 -.asm_1688d - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_1695a) - call Func_10aa - ret - -TileDataPointers_16899: - dw TileData_168a1 - dw TileData_168a8 - dw TileData_168af - dw TileData_168af - -TileData_168a1: ; 0x168a1 - db $03 - dw TileData_168b6 - dw TileData_168c0 - dw TileData_168ca - -TileData_168a8: ; 0x168a8 - db $03 - dw TileData_168d4 - dw TileData_168de - dw TileData_168e8 - -TileData_168af: ; 0x168af - db $03 - dw TileData_168f2 - dw TileData_168fc - dw TileData_16906 - -TileData_168b6: ; 0x168b6 - dw Func_11d2 - db $30, $03 - dw vTilesSH tile $50 - dw StageRedFieldTopBaseGameBoyGfx + $260 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_168c0: ; 0x168c0 - dw Func_11d2 - db $30, $03 - dw vTilesSH tile $53 - dw StageRedFieldTopBaseGameBoyGfx + $290 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_168ca: ; 0x168ca - dw Func_11d2 - db $10, $01 - dw vTilesSH tile $56 - dw StageRedFieldTopBaseGameBoyGfx + $2c0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_168d4: ; 0x168d4 - dw Func_11d2 - db $30, $03 - dw vTilesSH tile $52 - dw StageRedFieldTopBaseGameBoyGfx + $280 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_168de: ; 0x168de - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $55 - dw StageRedFieldTopBaseGameBoyGfx + $2b0 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileData_168e8: ; 0x168e8 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $50 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $EA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_168f2: ; 0x168f2 - dw Func_11d2 - db $30, $03 - dw vTilesSH tile $51 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_168fc: ; 0x168fc - dw Func_11d2 - db $30, $03 - dw vTilesSH tile $54 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1110 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16906: ; 0x16906 - dw Func_11d2 - db $10, $01 - dw vTilesSH tile $50 - dw StageRedFieldTopBaseGameBoyGfx + $260 - db Bank(StageRedFieldTopBaseGameBoyGfx) - db $00 - -TileDataPointers_16910: - dw TileData_16918 - dw TileData_1691b - dw TileData_1691e - dw TileData_1691e - -TileData_16918: ;0x16918 - db $01 - dw TileData_16921 - -TileData_1691b: ;0x1691b - db $01 - dw TileData_16934 - -TileData_1691e: ;0x1691e - db $01 - dw TileData_16947 - -TileData_16921: ; 0x16921 - dw LoadTileLists - db $06 - - db $03 - dw vBGMap + $1C6 - db $C3, $C4, $C5 - - db $02 - dw vBGMap + $1E7 - db $C6, $C7 - - db $01 - dw vBGMap + $207 - db $C8 - - db $00 - -TileData_16934: ; 0x16934 - dw LoadTileLists - db $06 - - db $03 - dw vBGMap + $1C6 - db $CD, $CE, $C5 - - db $02 - dw vBGMap + $1E7 - db $C6, $C7 - - db $01 - dw vBGMap + $207 - db $C8 - - db $00 - -TileData_16947: ; 0x16947 - dw LoadTileLists - db $06 - - db $03 - dw vBGMap + $1C6 - db $C3, $C4, $C9 - - db $02 - dw vBGMap + $1E7 - db $CA, $CB - - db $01 - dw vBGMap + $207 - db $CC - - db $00 - -TileDataPointers_1695a: - dw TileData_1695e - dw TileData_16961 - -TileData_1695e: ; 0x1695e - db $01 - dw TileData_16964 - -TileData_16961: ; 0x16961 - db $01 - dw TileData_16972 - -TileData_16964: ; 0x16964 - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $40 - db $BE, $BF - - db $02 - dw vBGMap + $60 - db $C0, $C1 - - db $00 - -TileData_16972: ; 0x16972 - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $40 - db $C2, $C3 - - db $02 - dw vBGMap + $60 - db $C4, $C5 - - db $00 - -TileDataPointers_16980: - dw TileData_16984 - dw TileData_16987 - -TileData_16984: ; 0x16984 - db $01 - dw TileData_1698a - -TileData_16987: ; 0x16987 - db $01 - dw TileData_16998 - -TileData_1698a: ; 0x1698a - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $40 - db $BC, $BD - - db $02 - dw vBGMap + $60 - db $BE, $BF - - db $00 - -TileData_16998: ; 0x16998 - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $40 - db $C0, $C1 - - db $02 - dw vBGMap + $60 - db $C2, $C3 - - db $00 - -Func_169a6: ; 0x169a6 - ld a, [hNumFramesDropped] - and $1f - ret nz - ld bc, $0000 -.asm_169ae - push bc - ld hl, wIndicatorStates - add hl, bc - bit 7, [hl] - jr z, .asm_169c5 - ld a, [hl] - res 7, a - ld hl, hNumFramesDropped - bit 5, [hl] - jr z, .asm_169c2 - inc a -.asm_169c2 - call Func_169cd -.asm_169c5 - pop bc - inc c - ld a, c - cp $5 - jr nz, .asm_169ae - ret - -Func_169cd: ; 0x169cd - push af - sla c - ld hl, TileDataPointers_169ed - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_169db - ld hl, TileDataPointers_16bef -.asm_169db - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - pop af - sla a - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_169ed) - call Func_10aa - ret - -TileDataPointers_169ed: - dw TileDataPointers_169f7 - dw TileDataPointers_16a01 - dw TileDataPointers_16a0b - dw TileDataPointers_16a0f - dw TileDataPointers_16a13 - -TileDataPointers_169f7: ; 0x169f7 - dw TileData_16a17 - dw TileData_16a1e - dw TileData_16a25 - dw TileData_16a2c - dw TileData_16a33 - -TileDataPointers_16a01: ; 0x16a01 - dw TileData_16a3a - dw TileData_16a41 - dw TileData_16a48 - dw TileData_16a4f - dw TileData_16a56 - -TileDataPointers_16a0b: ; 0x16a0b - dw TileData_16a5d - dw TileData_16a60 - -TileDataPointers_16a0f: ; 0x16a0f - dw TileData_16a63 - dw TileData_16a66 - -TileDataPointers_16a13: ; 0x16a13 - dw TileData_16a69 - dw TileData_16a6e - -TileData_16a17: ; 0x16a17 - db $03 - dw TileData_16a73 - dw TileData_16a7d - dw TileData_16a87 - -TileData_16a1e: ; 0x16a1e - db $03 - dw TileData_16a91 - dw TileData_16a9b - dw TileData_16aa5 - -TileData_16a25: ; 0x16a25 - db $03 - dw TileData_16aaf - dw TileData_16ab9 - dw TileData_16ac3 - -TileData_16a2c: ; 0x16a2c - db $03 - dw TileData_16acd - dw TileData_16ad7 - dw TileData_16ae1 - -TileData_16a33: ; 0x16a33 - db $03 - dw TileData_16aeb - dw TileData_16af5 - dw TileData_16aff - -TileData_16a3a: ; 0x16a3a - db $03 - dw TileData_16b09 - dw TileData_16b13 - dw TileData_16b1d - -TileData_16a41: ; 0x16a41 - db $03 - dw TileData_16b27 - dw TileData_16b31 - dw TileData_16b3b - -TileData_16a48: ; 0x16a48 - db $03 - dw TileData_16b45 - dw TileData_16b4f - dw TileData_16b59 - -TileData_16a4f: ; 0x16a4f - db $03 - dw TileData_16b63 - dw TileData_16b6d - dw TileData_16b77 - -TileData_16a56: ; 0x16a56 - db $03 - dw TileData_16b81 - dw TileData_16b8b - dw TileData_16b95 - -TileData_16a5d: ; 0x16a5d - db $01 - dw TileData_16b9f - -TileData_16a60: ; 0x16a60 - db $01 - dw TileData_16ba9 - -TileData_16a63: ; 0x16a63 - db $01 - dw TileData_16bb3 - -TileData_16a66: ; 0x16a66 - db $01 - dw TileData_16bbd - -TileData_16a69: ; 0x16a69 - db $02 - dw TileData_16bc7 - dw TileData_16bd1 - -TileData_16a6e: ; 0x16a6e - db $02 - dw TileData_16bdb - dw TileData_16be5 - -TileData_16a73: ; 0x16a73 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3A - dw StageRedFieldBottomBaseGameBoyGfx + $ba0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16a7d: ; 0x16a7d - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3D - dw StageRedFieldBottomBaseGameBoyGfx + $bd0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16a87: ; 0x16a87 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $40 - dw StageRedFieldBottomBaseGameBoyGfx + $c00 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16a91: ; 0x16a91 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $380 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16a9b: ; 0x16a9b - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16aa5: ; 0x16aa5 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $40 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16aaf: ; 0x16aaf - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $3F0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16ab9: ; 0x16ab9 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $420 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16ac3: ; 0x16ac3 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $40 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $450 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16acd: ; 0x16acd - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $460 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16ad7: ; 0x16ad7 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $490 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16ae1: ; 0x16ae1 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $40 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16aeb: ; 0x16aeb - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F30 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16af5: ; 0x16af5 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $3D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16aff: ; 0x16aff - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $40 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $F90 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b09: ; 0x16b09 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomBaseGameBoyGfx + $c10 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16b13: ; 0x16b13 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomBaseGameBoyGfx + $c40 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16b1d: ; 0x16b1d - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $47 - dw StageRedFieldBottomBaseGameBoyGfx + $c70 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16b27: ; 0x16b27 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $4D0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b31: ; 0x16b31 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $500 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b3b: ; 0x16b3b - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $530 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b45: ; 0x16b45 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $540 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b4f: ; 0x16b4f - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $570 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b59: ; 0x16b59 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b63: ; 0x16b63 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b6d: ; 0x16b6d - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $5E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b77: ; 0x16b77 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $610 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b81: ; 0x16b81 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1010 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b8b: ; 0x16b8b - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1040 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b95: ; 0x16b95 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1070 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16b9f: ; 0x16b9f - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $20 - dw StageRedFieldBottomBaseGameBoyGfx + $a00 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16ba9: ; 0x16ba9 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $20 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1080 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16bb3: ; 0x16bb3 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $23 - dw StageRedFieldBottomBaseGameBoyGfx + $a30 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16bbd: ; 0x16bbd - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $23 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $10B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16bc7: ; 0x16bc7 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1C - dw StageRedFieldBottomBaseGameBoyGfx + $9c0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16bd1: ; 0x16bd1 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1E - dw StageRedFieldBottomBaseGameBoyGfx + $9e0 - db Bank(StageRedFieldBottomBaseGameBoyGfx) - db $00 - -TileData_16bdb: ; 0x16bdb - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $6E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_16be5: ; 0x16be5 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $700 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileDataPointers_16bef: - dw TileDataPointers_16bf9 - dw TileDataPointers_16c03 - dw TileDataPointers_16c0d - dw TileDataPointers_16c11 - dw TileDataPointers_16c15 - -TileDataPointers_16bf9: ; 0x16bf9 - dw TileData_16c19 - dw TileData_16c1c - dw TileData_16c1f - dw TileData_16c22 - dw TileData_16c25 - -TileDataPointers_16c03: ; 0x16c03 - dw TileData_16c28 - dw TileData_16c2b - dw TileData_16c2e - dw TileData_16c31 - dw TileData_16c34 - -TileDataPointers_16c0d: ; 0x16c0d - dw TileData_16c37 - dw TileData_16c3a - -TileDataPointers_16c11: ; 0x16c11 - dw TileData_16c3d - dw TileData_16c40 - -TileDataPointers_16c15: ; 0x16c15 - dw TileData_16c43 - dw TileData_16c46 - -TileData_16c19: ; 0x16c19 - db $01 - dw TileData_16c49 - -TileData_16c1c: ; 0x16c1c - db $01 - dw TileData_16c63 - -TileData_16c1f: ; 0x16c1f - db $01 - dw TileData_16c7d - -TileData_16c22: ; 0x16c22 - db $01 - dw TileData_16c97 - -TileData_16c25: ; 0x16c25 - db $01 - dw TileData_16cb1 - -TileData_16c28: ; 0x16c28 - db $01 - dw TileData_16ccb - -TileData_16c2b: ; 0x16c2b - db $01 - dw TileData_16ce5 - -TileData_16c2e: ; 0x16c2e - db $01 - dw TileData_16cff - -TileData_16c31: ; 0x16c31 - db $01 - dw TileData_16d19 - -TileData_16c34: ; 0x16c34 - db $01 - dw TileData_16d33 - -TileData_16c37: ; 0x16c37 - db $01 - dw TileData_16d4d - -TileData_16c3a: ; 0x16c3a - db $01 - dw TileData_16d5a - -TileData_16c3d: ; 0x16c3d - db $01 - dw TileData_16d67 - -TileData_16c40: ; 0x16c40 - db $01 - dw TileData_16d74 - -TileData_16c43: ; 0x16c43 - db $01 - dw TileData_16d81 - -TileData_16c46: ; 0x16c46 - db $01 - dw TileData_16d8f - -TileData_16c49: ; 0x16c49 - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $23 - db $5E - - db $02 - dw vBGMap + $43 - db $5F, $60 - - db $02 - dw vBGMap + $64 - db $61, $62 - - db $01 - dw vBGMap + $85 - db $63 - - db $01 - dw vBGMap + $A5 - db $64 - - db $00 - -TileData_16c63: ; 0x16c63 - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $23 - db $65 - - db $02 - dw vBGMap + $43 - db $66, $67 - - db $02 - dw vBGMap + $64 - db $61, $62 - - db $01 - dw vBGMap + $85 - db $63 - - db $01 - dw vBGMap + $A5 - db $64 - - db $00 - -TileData_16c7d: ; 0x16c7d - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $23 - db $65 - - db $02 - dw vBGMap + $43 - db $66, $67 - - db $02 - dw vBGMap + $64 - db $68, $69 - - db $01 - dw vBGMap + $85 - db $63 - - db $01 - dw vBGMap + $A5 - db $64 - - db $00 - -TileData_16c97: ; 0x16c97 - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $23 - db $65 - - db $02 - dw vBGMap + $43 - db $66, $67 - - db $02 - dw vBGMap + $64 - db $68, $69 - - db $01 - dw vBGMap + $85 - db $6A - - db $01 - dw vBGMap + $A5 - db $6B - - db $00 - -TileData_16cb1: ; 0x16cb1 - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $23 - db $5E - - db $02 - dw vBGMap + $43 - db $5F, $60 - - db $02 - dw vBGMap + $64 - db $68, $69 - - db $01 - dw vBGMap + $85 - db $6A - - db $01 - dw vBGMap + $A5 - db $6B - - db $00 - -TileData_16ccb: ; 0x16ccb - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $30 - db $6C - - db $02 - dw vBGMap + $4F - db $6D, $6E - - db $02 - dw vBGMap + $6E - db $6F, $70 - - db $01 - dw vBGMap + $8E - db $71 - - db $01 - dw vBGMap + $AE - db $72 - - db $00 - -TileData_16ce5: ; 0x16ce5 - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $30 - db $73 - - db $02 - dw vBGMap + $4F - db $74, $75 - - db $02 - dw vBGMap + $6E - db $6F, $70 - - db $01 - dw vBGMap + $8E - db $71 - - db $01 - dw vBGMap + $AE - db $72 - - db $00 - -TileData_16cff: ; 0x16cff - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $30 - db $73 - - db $02 - dw vBGMap + $4F - db $74, $75 - - db $02 - dw vBGMap + $6E - db $76, $77 - - db $01 - dw vBGMap + $8E - db $71 - - db $01 - dw vBGMap + $AE - db $72 - - db $00 - -TileData_16d19: ; 0x16d19 - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $30 - db $73 - - db $02 - dw vBGMap + $4F - db $74, $75 - - db $02 - dw vBGMap + $6E - db $76, $77 - - db $01 - dw vBGMap + $8E - db $78 - - db $01 - dw vBGMap + $AE - db $79 - - db $00 - -TileData_16d33: ; 0x16d33 - dw LoadTileLists - db $07 - - db $01 - dw vBGMap + $30 - db $6C - - db $02 - dw vBGMap + $4F - db $6D, $6E - - db $02 - dw vBGMap + $6E - db $76, $77 - - db $01 - dw vBGMap + $8E - db $78 - - db $01 - dw vBGMap + $AE - db $79 - - db $00 - -TileData_16d4d: ; 0x16d4d - dw LoadTileLists - db $03 - - db $01 - dw vBGMap + $6 - db $48 - - db $02 - dw vBGMap + $26 - db $49, $4A - - db $00 - -TileData_16d5a: ; 0x16d5a - dw LoadTileLists - db $03 - - db $01 - dw vBGMap + $6 - db $4B - - db $02 - dw vBGMap + $26 - db $4C, $4D - - db $00 - -TileData_16d67: ; 0x16d67 - dw LoadTileLists - db $03 - - db $01 - dw vBGMap + $D - db $4E - - db $02 - dw vBGMap + $2C - db $4F, $50 - - db $00 - -TileData_16d74: ; 0x16d74 - dw LoadTileLists - db $03 - - db $01 - dw vBGMap + $D - db $51 - - db $02 - dw vBGMap + $2C - db $52, $53 - - db $00 - -TileData_16d81: ; 0x16d81 - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $49 - db $40, $41 - - db $02 - dw vBGMap + $69 - db $42, $43 - - db $00 - -TileData_16d8f: ; 0x16d8f - dw LoadTileLists - db $04 - - db $02 - dw vBGMap + $49 - db $44, $45 - - db $02 - dw vBGMap + $69 - db $46, $47 - - db $00 - -ResolveRedStageBonusMultiplierCollision: ; 016d9d - ld a, [wWhichBonusMultiplierRailing] - and a - jp z, Func_16e51 - xor a - ld [wWhichBonusMultiplierRailing], a - lb de, $00, $0d - call PlaySoundEffect - ld a, [wWhichBonusMultiplierRailingId] - sub $21 - jr nz, .asm_16ddc - ld a, $9 - callba Func_10000 - ld a, [wd610] - cp $3 - jr nz, .asm_16e35 - ld a, $1 - ld [wd610], a - ld a, $3 - ld [wd611], a - ld a, [wd60c] - set 7, a - ld [wd60c], a - jr .asm_16e35 - -.asm_16ddc - ld a, $a - callba Func_10000 - ld a, [wd611] - cp $3 - jr nz, .asm_16e35 - ld a, $1 - ld [wd610], a - ld a, $1 - ld [wd611], a - ld a, $80 - ld [wd612], a - ld a, [wd60d] - set 7, a - ld [wd60d], a - ld a, [wd482] - inc a - cp 100 - jr c, .asm_16e10 - ld a, 99 -.asm_16e10 - ld [wd482], a - jr nc, .asm_16e24 - ld c, $19 - call Func_e55 - callba z, Func_30164 -.asm_16e24 - ld a, [wd60c] - ld [wd614], a - ld a, [wd60d] - ld [wd615], a - ld a, $1 - ld [wd613], a -.asm_16e35 - ld bc, TenPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wd60c] - call Func_16f28 - ld a, [wd60d] - add $14 - call Func_16f28 - ret - -Func_16e51: ; 0x16e51 - call Func_16ef5 - ld a, [wd612] - and a - jr z, .asm_16e8f - dec a - ld [wd612], a - cp $70 - jr nz, .asm_16e6e - ld a, $2 - ld [wd610], a - ld a, $2 - ld [wd611], a - jr .asm_16e8f - -.asm_16e6e - and a - jr nz, .asm_16e8f - ld a, $3 - ld [wd610], a - xor a - ld [wd611], a - ld a, [wd482] - call Func_16f95 - ld a, [wd60c] - call Func_16f28 - ld a, [wd60d] - add $14 - call Func_16f28 - ret - -.asm_16e8f - ld a, [wd610] - cp $2 - jr c, .asm_16ec1 - cp $3 - ld a, [hNumFramesDropped] - jr c, .asm_16ea0 - srl a - srl a -.asm_16ea0 - ld b, a - and $3 - jr nz, .asm_16ec1 - bit 3, b - jr nz, .asm_16eb6 - ld a, [wd60c] - res 7, a - ld [wd60c], a - call Func_16f28 - jr .asm_16ec1 - -.asm_16eb6 - ld a, [wd60c] - set 7, a - ld [wd60c], a - call Func_16f28 -.asm_16ec1 - ld a, [wd611] - cp $2 - ret c - cp $3 - ld a, [hNumFramesDropped] - jr c, .asm_16ed1 - srl a - srl a -.asm_16ed1 - ld b, a - and $3 - ret nz - bit 3, b - jr nz, .asm_16ee7 - ld a, [wd60d] - res 7, a - ld [wd60d], a - add $14 - call Func_16f28 - ret - -.asm_16ee7 - ld a, [wd60d] - set 7, a - ld [wd60d], a - add $14 - call Func_16f28 - ret - -Func_16ef5: ; 0x16ef5 - ld a, [wd5ca] - and a - ret nz - ld a, [wd613] - and a - ret z - xor a - ld [wd613], a - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5cc - ld de, BonusMultiplierText - call LoadTextHeader - ld hl, wBottomMessageText + $12 - ld a, [wd614] - and $7f - jr z, .asm_16f1f - add $30 - ld [hli], a -.asm_16f1f - ld a, [wd615] - res 7, a - add $30 - ld [hl], a - ret - -Func_16f28: ; 0x16f28 - push af - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_16f33 - pop af - call Func_16f38 - ret - -.asm_16f33 - pop af - call Func_16f7b - ret - -Func_16f38: ; 0x16f38 - push af - res 7, a - ld hl, wd60e - cp $14 - jr c, .asm_16f47 - ld hl, wd60f - sub $a -.asm_16f47 - cp [hl] - jr z, .asm_16f5c - ld [hl], a - ld c, a - ld b, $0 - sla c - ld hl, TileDataPointers_16fc8 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_16fc8) - call Func_10aa -.asm_16f5c - pop af - ld bc, $0000 - bit 7, a - jr z, .asm_16f68 - res 7, a - set 1, c -.asm_16f68 - cp $14 - jr c, .asm_16f6e - set 2, c -.asm_16f6e - ld hl, Data_171e4 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(Data_171e4) - call Func_10aa - ret - -Func_16f7b: ; 0x16f7b - bit 7, a - jr z, .asm_16f83 - res 7, a - add $a -.asm_16f83 - ld c, a - ld b, $0 - sla c - ld hl, TileDataPointers_17228 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_17228) - call Func_10aa - ret - -Func_16f95: ; 0x16f95 - ld a, [wd482] - inc a - cp 100 - jr c, .asm_16f9f - ld a, 99 -.asm_16f9f - ld b, a - xor a - ld hl, Data_16fc1 - ld c, $7 -.asm_16fa6 - bit 0, b - jr z, .asm_16fac - add [hl] - daa -.asm_16fac - srl b - inc hl - dec c - jr nz, .asm_16fa6 - push af - swap a - and $f - ld [wd60c], a - pop af - and $f - ld [wd60d], a - ret - -Data_16fc1: -; BCD powers of 2 - db $01 - db $02 - db $04 - db $08 - db $16 - db $32 - db $64 - -TileDataPointers_16fc8: - dw TileData_16ff0 - dw TileData_16ff5 - dw TileData_16ffa - dw TileData_16fff - dw TileData_17004 - dw TileData_17009 - dw TileData_1700e - dw TileData_17013 - dw TileData_17018 - dw TileData_1701d - dw TileData_17022 - dw TileData_17027 - dw TileData_1702c - dw TileData_17031 - dw TileData_17036 - dw TileData_1703b - dw TileData_17040 - dw TileData_17045 - dw TileData_1704a - dw TileData_1704f - -TileData_16ff0: ; 0x16ff0 - db $02 - dw TileData_17054 - dw TileData_1705e - -TileData_16ff5: ; 0x16ff5 - db $02 - dw TileData_17068 - dw TileData_17072 - -TileData_16ffa: ; 0x16ffa - db $02 - dw TileData_1707c - dw TileData_17086 - -TileData_16fff: ; 0x16fff - db $02 - dw TileData_17090 - dw TileData_1709a - -TileData_17004: ; 0x17004 - db $02 - dw TileData_170a4 - dw TileData_170ae - -TileData_17009: ; 0x17009 - db $02 - dw TileData_170b8 - dw TileData_170c2 - -TileData_1700e: ; 0x1700e - db $02 - dw TileData_170cc - dw TileData_170d6 - -TileData_17013: ; 0x17013 - db $02 - dw TileData_170e0 - dw TileData_170ea - -TileData_17018: ; 0x17018 - db $02 - dw TileData_170f4 - dw TileData_170fe - -TileData_1701d: ; 0x1701d - db $02 - dw TileData_17108 - dw TileData_17112 - -TileData_17022: ; 0x17022 - db $02 - dw TileData_1711c - dw TileData_17126 - -TileData_17027: ; 0x17027 - db $02 - dw TileData_17130 - dw TileData_1713a - -TileData_1702c: ; 0x1702c - db $02 - dw TileData_17144 - dw TileData_1714e - -TileData_17031: ; 0x17031 - db $02 - dw TileData_17158 - dw TileData_17162 - -TileData_17036: ; 0x17036 - db $02 - dw TileData_1716c - dw TileData_17176 - -TileData_1703b: ; 0x1703b - db $02 - dw TileData_17180 - dw TileData_1718a - -TileData_17040: ; 0x17040 - db $02 - dw TileData_17194 - dw TileData_1719e - -TileData_17045: ; 0x17045 - db $02 - dw TileData_171a8 - dw TileData_171b2 - -TileData_1704a: ; 0x1704a - db $02 - dw TileData_171bc - dw TileData_171c6 - -TileData_1704f: ; 0x1704f - db $02 - dw TileData_171d0 - dw TileData_171da - -TileData_17054: ; 0x17054 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1280 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1705e: ; 0x1705e - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1140 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17068: ; 0x17068 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17072: ; 0x17072 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1160 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1707c: ; 0x1707c - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17086: ; 0x17086 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1180 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17090: ; 0x17090 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $12E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1709a: ; 0x1709a - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170a4: ; 0x170a4 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1300 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170ae: ; 0x170ae - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170b8: ; 0x170b8 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1320 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170c2: ; 0x170c2 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $11E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170cc: ; 0x170cc - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1340 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170d6: ; 0x170d6 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1200 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170e0: ; 0x170e0 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1360 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170ea: ; 0x170ea - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1220 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170f4: ; 0x170f4 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1380 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_170fe: ; 0x170fe - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1240 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17108: ; 0x17108 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $46 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17112: ; 0x17112 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $48 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1260 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1711c: ; 0x1711c - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1500 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17126: ; 0x17126 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17130: ; 0x17130 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1520 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1713a: ; 0x1713a - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $13E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17144: ; 0x17144 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1540 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1714e: ; 0x1714e - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1400 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17158: ; 0x17158 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1560 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17162: ; 0x17162 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1420 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1716c: ; 0x1716c - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1580 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17176: ; 0x17176 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1440 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17180: ; 0x17180 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1718a: ; 0x1718a - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1460 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_17194: ; 0x17194 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1719e: ; 0x1719e - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1480 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_171a8: ; 0x171a8 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $15E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_171b2: ; 0x171b2 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_171bc: ; 0x171bc - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1600 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_171c6: ; 0x171c6 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_171d0: ; 0x171d0 - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4a - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1620 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_171da: ; 0x171da - dw Func_11d2 - db $20, $02 - dw vTilesSH tile $4c - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $14E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -Data_171e4: - dw Data_171ec - dw Data_171ef - dw Data_171f2 - dw Data_171f5 - -Data_171ec: ; 0x171ec - db $01 - dw Data_171f8 - -Data_171ef: ; 0x171ef - db $01 - dw Data_17204 - -Data_171f2: ; 0x171f2 - db $01 - dw Data_17210 - -Data_171f5: ; 0x171f5 - db $01 - dw Data_1721c - -Data_171f8: ; 0x171f8 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $C6 - - db $01 - dw vBGMap + $24 - db $C7 - - db $00 - -Data_17204: ; 0x17204 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $C8 - - db $01 - dw vBGMap + $24 - db $C9 - - db $00 - -Data_17210: ; 0x17210 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $CA - - db $01 - dw vBGMap + $2F - db $CB - - db $00 - -Data_1721c: ; 0x1721c - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $CC - - db $01 - dw vBGMap + $2F - db $CD - - db $00 - -TileDataPointers_17228: - dw TileData_17278 - dw TileData_1727b - dw TileData_1727e - dw TileData_17281 - dw TileData_17284 - dw TileData_17287 - dw TileData_1728a - dw TileData_1728d - dw TileData_17290 - dw TileData_17293 - dw TileData_17296 - dw TileData_17299 - dw TileData_1729c - dw TileData_1729f - dw TileData_172a2 - dw TileData_172a5 - dw TileData_172a8 - dw TileData_172ab - dw TileData_172ae - dw TileData_172b1 - dw TileData_172b4 - dw TileData_172b7 - dw TileData_172ba - dw TileData_172bd - dw TileData_172c0 - dw TileData_172c3 - dw TileData_172c6 - dw TileData_172c9 - dw TileData_172cc - dw TileData_172cf - dw TileData_172d2 - dw TileData_172d5 - dw TileData_172d8 - dw TileData_172db - dw TileData_172de - dw TileData_172e1 - dw TileData_172e4 - dw TileData_172e7 - dw TileData_172ea - dw TileData_172ed - -TileData_17278: ; 0x17278 - db $01 - dw TileData_172f0 - -TileData_1727b: ; 0x1727b - db $01 - dw TileData_172fc - -TileData_1727e: ; 0x1727e - db $01 - dw TileData_17308 - -TileData_17281: ; 0x17281 - db $01 - dw TileData_17314 - -TileData_17284: ; 0x17284 - db $01 - dw TileData_17320 - -TileData_17287: ; 0x17287 - db $01 - dw TileData_1732c - -TileData_1728a: ; 0x1728a - db $01 - dw TileData_17338 - -TileData_1728d: ; 0x1728d - db $01 - dw TileData_17344 - -TileData_17290: ; 0x17290 - db $01 - dw TileData_17350 - -TileData_17293: ; 0x17293 - db $01 - dw TileData_1735c - -TileData_17296: ; 0x17296 - db $01 - dw TileData_17368 - -TileData_17299: ; 0x17299 - db $01 - dw TileData_17374 - -TileData_1729c: ; 0x1729c - db $01 - dw TileData_17380 - -TileData_1729f: ; 0x1729f - db $01 - dw TileData_1738c - -TileData_172a2: ; 0x172a2 - db $01 - dw TileData_17398 - -TileData_172a5: ; 0x172a5 - db $01 - dw TileData_173a4 - -TileData_172a8: ; 0x172a8 - db $01 - dw TileData_173b0 - -TileData_172ab: ; 0x172ab - db $01 - dw TileData_173bc - -TileData_172ae: ; 0x172ae - db $01 - dw TileData_173c8 - -TileData_172b1: ; 0x172b1 - db $01 - dw TileData_173d4 - -TileData_172b4: ; 0x172b4 - db $01 - dw TileData_173e0 - -TileData_172b7: ; 0x172b7 - db $01 - dw TileData_173ec - -TileData_172ba: ; 0x172ba - db $01 - dw TileData_173f8 - -TileData_172bd: ; 0x172bd - db $01 - dw TileData_17404 - -TileData_172c0: ; 0x172c0 - db $01 - dw TileData_17410 - -TileData_172c3: ; 0x172c3 - db $01 - dw TileData_1741c - -TileData_172c6: ; 0x172c6 - db $01 - dw TileData_17428 - -TileData_172c9: ; 0x172c9 - db $01 - dw TileData_17434 - -TileData_172cc: ; 0x172cc - db $01 - dw TileData_17440 - -TileData_172cf: ; 0x172cf - db $01 - dw TileData_1744c - -TileData_172d2: ; 0x172d2 - db $01 - dw TileData_17458 - -TileData_172d5: ; 0x172d5 - db $01 - dw TileData_17464 - -TileData_172d8: ; 0x172d8 - db $01 - dw TileData_17470 - -TileData_172db: ; 0x172db - db $01 - dw TileData_1747c - -TileData_172de: ; 0x172de - db $01 - dw TileData_17488 - -TileData_172e1: ; 0x172e1 - db $01 - dw TileData_17494 - -TileData_172e4: ; 0x172e4 - db $01 - dw TileData_174a0 - -TileData_172e7: ; 0x172e7 - db $01 - dw TileData_174ac - -TileData_172ea: ; 0x172ea - db $01 - dw TileData_174b8 - -TileData_172ed: ; 0x172ed - db $01 - dw TileData_174c4 - -TileData_172f0: ; 0x172f0 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $40 - - db $01 - dw vBGMap + $24 - db $41 - - db $00 - -TileData_172fc: ; 0x172fc - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $42 - - db $01 - dw vBGMap + $24 - db $43 - - db $00 - -TileData_17308: ; 0x17308 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $44 - - db $01 - dw vBGMap + $24 - db $45 - - db $00 - -TileData_17314: ; 0x17314 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $46 - - db $01 - dw vBGMap + $24 - db $47 - - db $00 - -TileData_17320: ; 0x17320 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $48 - - db $01 - dw vBGMap + $24 - db $49 - - db $00 - -TileData_1732c: ; 0x1732c - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $4A - - db $01 - dw vBGMap + $24 - db $4B - - db $00 - -TileData_17338: ; 0x17338 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $4C - - db $01 - dw vBGMap + $24 - db $4D - - db $00 - -TileData_17344: ; 0x17344 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $4E - - db $01 - dw vBGMap + $24 - db $4F - - db $00 - -TileData_17350: ; 0x17350 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $50 - - db $01 - dw vBGMap + $24 - db $51 - - db $00 - -TileData_1735c: ; 0x1735c - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $52 - - db $01 - dw vBGMap + $24 - db $53 - - db $00 - -TileData_17368: ; 0x17368 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $2C - - db $01 - dw vBGMap + $24 - db $2D - - db $00 - -TileData_17374: ; 0x17374 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $2E - - db $01 - dw vBGMap + $24 - db $2F - - db $00 - -TileData_17380: ; 0x17380 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $30 - - db $01 - dw vBGMap + $24 - db $31 - - db $00 - -TileData_1738c: ; 0x1738c - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $32 - - db $01 - dw vBGMap + $24 - db $33 - - db $00 - -TileData_17398: ; 0x17398 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $34 - - db $01 - dw vBGMap + $24 - db $35 - - db $00 - -TileData_173a4: ; 0x173a4 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $36 - - db $01 - dw vBGMap + $24 - db $37 - - db $00 - -TileData_173b0: ; 0x173b0 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $38 - - db $01 - dw vBGMap + $24 - db $39 - - db $00 - -TileData_173bc: ; 0x173bc - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $3A - - db $01 - dw vBGMap + $24 - db $3B - - db $00 - -TileData_173c8: ; 0x173c8 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $3C - - db $01 - dw vBGMap + $24 - db $3D - - db $00 - -TileData_173d4: ; 0x173d4 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $4 - db $3E - - db $01 - dw vBGMap + $24 - db $3F - - db $00 - -TileData_173e0: ; 0x173e0 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $68 - - db $01 - dw vBGMap + $2F - db $69 - - db $00 - -TileData_173ec: ; 0x173ec - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $6A - - db $01 - dw vBGMap + $2F - db $6B - - db $00 - -TileData_173f8: ; 0x173f8 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $6C - - db $01 - dw vBGMap + $2F - db $6D - - db $00 - -TileData_17404: ; 0x17404 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $6E - - db $01 - dw vBGMap + $2F - db $6F - - db $00 - -TileData_17410: ; 0x17410 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $70 - - db $01 - dw vBGMap + $2F - db $71 - - db $00 - -TileData_1741c: ; 0x1741c - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $72 - - db $01 - dw vBGMap + $2F - db $73 - - db $00 - -TileData_17428: ; 0x17428 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $74 - - db $01 - dw vBGMap + $2F - db $75 - - db $00 - -TileData_17434: ; 0x17434 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $76 - - db $01 - dw vBGMap + $2F - db $77 - - db $00 - -TileData_17440: ; 0x17440 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $78 - - db $01 - dw vBGMap + $2F - db $79 - - db $00 - -TileData_1744c: ; 0x1744c - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $7A - - db $01 - dw vBGMap + $2F - db $7B - - db $00 - -TileData_17458: ; 0x17458 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $54 - - db $01 - dw vBGMap + $2F - db $55 - - db $00 - -TileData_17464: ; 0x17464 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $56 - - db $01 - dw vBGMap + $2F - db $57 - - db $00 - -TileData_17470: ; 0x17470 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $58 - - db $01 - dw vBGMap + $2F - db $59 - - db $00 - -TileData_1747c: ; 0x1747c - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $5A - - db $01 - dw vBGMap + $2F - db $5B - - db $00 - -TileData_17488: ; 0x17488 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $5C - - db $01 - dw vBGMap + $2F - db $5D - - db $00 - -TileData_17494: ; 0x17494 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $5E - - db $01 - dw vBGMap + $2F - db $5F - - db $00 - -TileData_174a0: ; 0x174a0 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $60 - - db $01 - dw vBGMap + $2F - db $61 - - db $00 - -TileData_174ac: ; 0x174ac - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $62 - - db $01 - dw vBGMap + $2F - db $63 - - db $00 - -TileData_174b8: ; 0x174b8 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $64 - - db $01 - dw vBGMap + $2F - db $65 - - db $00 - -TileData_174c4: ; 0x174c4 - dw LoadTileLists - db $02 - - db $01 - dw vBGMap + $F - db $66 - - db $01 - dw vBGMap + $2F - db $67 - - db $00 - -Func_174d0: ; 0x174d0 - call Func_174ea - ret nc - ; fall through - -Func_174d4: ; 0x174d4 - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_17528 - add hl, bc - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, $5 - ld de, LoadTileLists - call Func_10c5 - ret - -Func_174ea: ; 0x174ea - ld a, [wd624] - ld hl, wd625 - cp [hl] - ret z - ld a, [wd626] - dec a - ld [wd626], a - jr nz, .asm_17514 - ld a, [wd625] - ld [wd624], a - cp $3 - jr c, .asm_1750f - ld a, $1 - ld [wd609], a - ld a, $3 - ld [wd607], a -.asm_1750f - ld a, [wd624] - scf - ret - -.asm_17514 - and $7 - ret nz - ld a, [wd626] - bit 3, a - jr nz, .asm_17523 - ld a, [wd624] - scf - ret - -.asm_17523 - ld a, [wd625] - scf - ret - -TileDataPointers_17528: - dw TileData_17530 - dw TileData_1753B - dw TileData_17546 - dw TileData_17551 - -TileData_17530: ; 0x17530 - db $06 ; total number of tiles - - db $06 ; number of tiles - dw $9907 - db $B0, $B1, $B0, $B1, $B0, $B1 - db $00 - -TileData_1753B: ; 0x1753B - db $06 ; total number of tiles - - db $06 ; number of tiles - dw $9907 - db $AE, $AF, $B0, $B1, $B0, $B1 - db $00 - -TileData_17546: ; 0x17546 - db $06 ; total number of tiles - - db $06 ; number of tiles - dw $9907 - db $AE, $AF, $AE, $AF, $B0, $B1 - db $00 - -TileData_17551: ; 0x17551 - db $06 ; total number of tiles - - db $06 ; number of tiles - dw $9907 - db $AE, $AF, $AE, $AF, $AE, $AF - db $00 - +INCLUDE "engine/pinball_game/object_collision/red_stage_resolve_collision.asm" INCLUDE "engine/pinball_game/draw_sprites/draw_red_field_sprites.asm" SECTION "bank6", ROMX, BANK[$6] @@ -10143,1452 +1414,7 @@ INCLUDE "engine/pinball_game/stage_init/init_gengar_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_gengar_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_gengar_bonus.asm" INCLUDE "engine/pinball_game/object_collision/gengar_bonus_object_collision.asm" - -Func_18377: ; 0x18377 - call Func_18464 - call Func_1860b - call Func_187b1 - call Func_18d34 - call Func_183b7 - callba Func_107f8 - ld a, [wd57e] - and a - ret z - xor a - ld [wd57e], a - ld a, $1 - ld [wd7be], a - call Func_2862 - callba StopTimer - ld a, [wd6a2] - cp $5 - ret nc - ld a, $1 - ld [wd6a8], a - ret - -Func_183b7: ; 0x183b7 - ld a, [wd653] - and a - ret nz - ld a, [wd4b4] - cp $8a - ret nc - ld a, $1 - ld [wStageCollisionState], a - ld [wd653], a - callba LoadStageCollisionAttributes - call Func_183db - call Func_18d91 - ret - -Func_183db: ; 0x183db - ld a, [wStageCollisionState] - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_183f8 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_183ee - ld hl, TileDataPointers_1842e -.asm_183ee - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, BANK(TileDataPointers_183f8) - call Func_10aa - ret - -TileDataPointers_183f8: - dw TileData_183fc - dw TileData_183ff - -TileData_183fc: ; 0x183fc - db $01 - dw TileData_18402 - -TileData_183ff: ; 0x183ff - db $01 - dw TileData_18418 - -TileData_18402: ; 0x18402 - dw LoadTileLists - db $06 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $113 - db $D4 - - db $02 ; number of tiles - dw vBGMap + $132 - db $D5, $D6 - - db $02 ; number of tiles - dw vBGMap + $152 - db $D9, $D7 - - db $01 ; number of tiles - dw vBGMap + $172 - db $D8 - - db $00 ; terminator - -TileData_18418: ; 0x18418 - dw LoadTileLists - db $06 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $113 - db $12 - - db $02 ; number of tiles - dw vBGMap + $132 - db $0C, $0D - - db $02 ; number of tiles - dw vBGMap + $152 - db $07, $08 - - db $01 ; number of tiles - dw vBGMap + $172 - db $03 - - db $00 ; terminator - -TileDataPointers_1842e: - dw TileData_18432 - dw TileData_18435 - -TileData_18432: ; 0x18432 - db $01 - dw TileData_18438 - -TileData_18435: ; 0x18435 - db $01 - dw TileData_1844e - -TileData_18438: ; 0x18438 - dw LoadTileLists - db $06 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $113 - db $D4 - - db $02 ; number of tiles - dw vBGMap + $132 - db $D5, $D6 - - db $02 ; number of tiles - dw vBGMap + $152 - db $D9, $D7 - - db $01 ; number of tiles - dw vBGMap + $172 - db $D8 - - db $00 ; terminator - -TileData_1844e: ; 0x1844e - dw LoadTileLists - db $06 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $113 - db $21 - - db $02 ; number of tiles - dw vBGMap + $132 - db $15, $16 - - db $02 ; number of tiles - dw vBGMap + $152 - db $0A, $0B - - db $01 ; number of tiles - dw vBGMap + $172 - db $03 - - db $00 ; terminator - -Func_18464: ; 0x18464 - ld a, [wd659] - and a - ret z - ld a, [wd657] - and a - jr z, .asm_184d5 - xor a - ld [wd657], a - ld a, [wd7be] - and a - jr nz, .asm_184d5 - ld a, [wd658] - sub $5 - ld c, a - sla a - sla a - sla a - add c - ld c, a - ld b, $0 - ld hl, wd65d - add hl, bc - ld d, h - ld e, l - ld a, [de] - and a - jr nz, .asm_184d5 - push de - dec de - dec de - dec de - ld hl, AnimationData_185e6 - call CopyHLToDE - pop de - ld a, $1 - ld [de], a - ld a, [wd67b] - inc a - ld [wd67b], a - ld bc, OneHundredThousandPoints - callba AddBigBCD6FromQueue - ld a, $33 - ld [wd803], a - ld a, $8 - ld [wd804], a - ld hl, $0100 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - lb de, $00, $2c - call PlaySoundEffect -.asm_184d5 - ld bc, $0830 - ld de, wd65d - ld hl, wd675 - call Func_1850c - ld bc, $5078 - ld de, wd666 - ld hl, wd677 - call Func_1850c - ld bc, $3050 - ld de, wd66f - ld hl, wd679 - call Func_1850c - ld de, wd65d - call Func_18562 - ld de, wd666 - call Func_18562 - ld de, wd66f - call Func_18562 - ret - -Func_1850c: ; 0x1850c - ld a, [de] - and a - ret nz - inc de - push hl - ld a, [hli] - push af - push bc - ld a, [hl] - inc a - and $1f - ld [hl], a - ld c, a - ld b, $0 - ld hl, GastlyData_18542 - add hl, bc - pop bc - pop af - and a - jr nz, .asm_18534 - ld a, [de] - add [hl] - ld [de], a - inc de - ld a, [de] - adc $0 - ld [de], a - pop hl - cp c - ret c - ld a, $1 - ld [hl], a - ret - -.asm_18534 - ld a, [de] - sub [hl] - ld [de], a - inc de - ld a, [de] - sbc $0 - ld [de], a - pop hl - cp b - ret nc - xor a - ld [hl], a - ret - -GastlyData_18542: ; 0x18542 -; Might be floating y offsets, not sure at the moment. - db $31, $32, $33, $34, $35, $36, $37, $36 - db $35, $34, $33, $32, $33, $34, $35, $36 - db $37, $38, $39, $3A, $3B, $3A, $39, $38 - db $37, $36, $35, $34, $33, $32, $31, $30 - -Func_18562: ; 0x18562 - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, AnimationDataPointers_185d9 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ret nc - ld a, [de] - dec de - and a - jr nz, .asm_1858a - ld a, [de] - cp $4 - ret nz - ld hl, AnimationData_185dd - dec de - dec de - call CopyHLToDE - ret - -.asm_1858a - cp $1 - ret nz - ld a, [de] - cp $12 - ret nz - ld a, [wd67b] - cp $a - jr nz, .asm_185b1 - ld a, $1 - ld [wd67e], a - ld [wd687], a - xor a - ld [wd659], a - ld [wd662], a - ld [wd66b], a - ld de, $0006 - call PlaySong - ret - -.asm_185b1 - ld c, a - ld a, [wd65d] - and a - jr nz, .asm_185b9 - inc c -.asm_185b9 - ld a, [wd666] - and a - jr nz, .asm_185c0 - inc c -.asm_185c0 - ld a, [wd66f] - and a - jr nz, .asm_185c7 - inc c -.asm_185c7 - ld a, c - cp $a - ret nc - ld hl, AnimationData_185dd - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - xor a - ld [de], a - ret - -AnimationDataPointers_185d9: - dw AnimationData_185dd - dw AnimationData_185e6 - -AnimationData_185dd: ; 0x185dd -; Each entry is [duration][OAM id] - db $0D, $01 - db $0D, $00 - db $0D, $02 - db $0D, $00 - db $00 ; terminator - -AnimationData_185e6: ; 0x185e6 -; Each entry is [duration][OAM id] - db $05, $03 - db $04, $03 - db $04, $04 - db $04, $03 - db $04, $04 - db $03, $03 - db $03, $04 - db $03, $03 - db $03, $04 - db $02, $03 - db $02, $04 - db $02, $03 - db $02, $04 - db $01, $03 - db $01, $04 - db $01, $03 - db $01, $04 - db $80, $04 - db $00 ; terminator - -Func_1860b: ; 0x1860b - ld a, [wd67e] - and a - ret z - ld a, [wd67c] - and a - jr z, .asm_1867c - xor a - ld [wd67c], a - ld a, [wd7be] - and a - jr nz, .asm_1867c - ld a, [wd67d] - sub $8 - ld c, a - sla a - sla a - sla a - add c - ld c, a - ld b, $0 - ld hl, wd682 - add hl, bc - ld d, h - ld e, l - ld a, [de] - and a - jr nz, .asm_1867c - push de - dec de - dec de - dec de - ld hl, AnimationData_1878a - call CopyHLToDE - pop de - ld a, $1 - ld [de], a - ld a, [wd695] - inc a - ld [wd695], a - ld bc, FiveHundredThousandPoints - callba AddBigBCD6FromQueue - ld a, $33 - ld [wd803], a - ld a, $8 - ld [wd804], a - ld hl, $0100 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - lb de, $00, $2d - call PlaySoundEffect -.asm_1867c - ld bc, $5078 - ld de, wd682 - ld hl, wd691 - call Func_186a1 - ld bc, $1038 - ld de, wd68b - ld hl, wd693 - call Func_186a1 - ld de, wd682 - call Func_186f7 - ld de, wd68b - call Func_186f7 - ret - -Func_186a1: ; 0x186a1 - ld a, [de] - and a - ret nz - inc de - push hl - ld a, [hli] - push af - push bc - ld a, [hl] - inc a - and $1f - ld [hl], a - ld c, a - ld b, $0 - ld hl, HaunterData_186d7 - add hl, bc - pop bc - pop af - and a - jr nz, .asm_186c9 - ld a, [de] - add [hl] - ld [de], a - inc de - ld a, [de] - adc $0 - ld [de], a - pop hl - cp c - ret c - ld a, $1 - ld [hl], a - ret - -.asm_186c9 - ld a, [de] - sub [hl] - ld [de], a - inc de - ld a, [de] - sbc $0 - ld [de], a - pop hl - cp b - ret nc - xor a - ld [hl], a - ret - -HaunterData_186d7: -; Might be floating y offsets, not sure at the moment. - db $31, $32, $33, $34, $35, $36, $37, $36 - db $35, $34, $33, $32, $33, $34, $35, $36 - db $37, $38, $39, $3A, $3B, $3A, $39, $38 - db $37, $36, $35, $34, $33, $32, $31, $30 - -Func_186f7: ; 0x186f7 - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, AnimationDataPointers_1877d - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ret nc - ld a, [de] - dec de - and a - jr nz, .asm_1871f - ld a, [de] - cp $4 - ret nz - ld hl, AnimationData_18781 - dec de - dec de - call CopyHLToDE - ret - -.asm_1871f - cp $1 - ret nz - ld a, [de] - cp $12 - jr nz, .asm_18761 - ld a, [wd695] - cp $a - jr nz, .asm_18740 - ld a, $1 - ld [wd656], a - call Func_18d72 - call Func_18d91 - ld de, $0000 - call PlaySong - ret - -.asm_18740 - ld c, a - ld a, [wd682] - and a - jr nz, .asm_18748 - inc c -.asm_18748 - ld a, [wd68b] - and a - jr nz, .asm_1874f - inc c -.asm_1874f - ld a, c - cp $a - ret nc - ld hl, AnimationData_18781 - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - xor a - ld [de], a - ret - -.asm_18761 - cp $13 - ret nz - ld a, [wd695] - cp $a - ret nz - ld a, $1 - ld [wd698], a - xor a - ld [wd67e], a - ld [wd687], a - ld de, GENGAR - call PlayCry - ret - -AnimationDataPointers_1877d: - dw AnimationData_18781 - dw AnimationData_1878a - -AnimationData_18781: -; Each entry is [duration][OAM id] - db $0D, $00 - db $0D, $01 - db $0D, $02 - db $0D, $03 - db $00 ; terminator - -AnimationData_1878a: -; Each entry is [duration][OAM id] - db $05, $04 - db $04, $04 - db $04, $05 - db $04, $04 - db $04, $05 - db $03, $04 - db $03, $05 - db $03, $04 - db $03, $05 - db $02, $04 - db $02, $05 - db $02, $04 - db $02, $05 - db $01, $04 - db $01, $05 - db $01, $04 - db $01, $05 - db $80, $05 - db $10, $05 - db $00 ; terminator - -Func_187b1: ; 0x187b1 - ld a, [wd698] - and a - ret z - ld a, [wd696] - and a - jp z, .asm_1885d - xor a - ld [wd696], a - ld a, [wd7be] - and a - jp nz, .asm_1885d - ld a, [wd697] - sub $a - ld c, a - sla a - sla a - sla a - add c - ld c, a - ld b, $0 - ld hl, wd69c - add hl, bc - ld d, h - ld e, l - ld a, [de] - and a - jp nz, .asm_1885d - push de - dec de - dec de - dec de - ld a, [wd6a2] - inc a - ld [wd6a2], a - cp $5 - jr nc, .asm_18804 - ld hl, AnimationData_18b2b - call CopyHLToDE - pop de - ld a, $2 - ld [de], a - lb de, $00, $37 - call PlaySoundEffect - jr .asm_18826 - -.asm_18804 - ld hl, AnimationData_18b32 - call CopyHLToDE - pop de - ld a, $3 - ld [de], a - ld a, $1 - ld [wd7be], a - call Func_2862 - callba StopTimer - ld de, $0000 - call PlaySong -.asm_18826 - ld bc, FiveMillionPoints - callba AddBigBCD6FromQueue - ld a, $33 - ld [wd803], a - ld a, $8 - ld [wd804], a - ld hl, $0200 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - ld a, [wGengarYPos] - add $0 - ld [wGengarYPos], a - ld a, [wGengarYPos + 1] - adc $ff - ld [wGengarYPos + 1], a -.asm_1885d - ld a, [wd69c] - cp $2 - jr nc, .asm_18869 - call Func_18876 - jr .asm_1886c - -.asm_18869 - call Func_188e1 -.asm_1886c - ld de, wd69c - call Func_189af - call Func_1894c - ret - -Func_18876: ; 0x18876 - ld a, [wd6a3] - cp $1 - jr z, .asm_1889b - cp $2 - jr z, .asm_1889b - ld a, [wGengarAnimationState] - cp $1 - jr z, .asm_1888c - cp $2 - jr nz, .asm_1889b -.asm_1888c - ld a, $1 - ld [wd6a4], a - ld a, $11 - ld [wd803], a - ld a, $8 - ld [wd804], a -.asm_1889b - ld a, [wGengarAnimationState] - ld hl, wd6a3 - cp [hl] - ret z - ld a, [wd69c] - and a - jr nz, .asm_188da - ld a, [wGengarYPos + 1] - add $80 - cp $a0 - jr nc, .asm_188da - ld a, [wGengarAnimationState] - and a - jr z, .asm_188ca - ld a, [wGengarYPos] - add $0 - ld [wGengarYPos], a - ld a, [wGengarYPos + 1] - adc $3 - ld [wGengarYPos + 1], a - jr .asm_188da - -.asm_188ca - ld a, [wGengarYPos] - add $0 - ld [wGengarYPos], a - ld a, [wGengarYPos + 1] - adc $1 - ld [wGengarYPos + 1], a -.asm_188da - ld a, [wGengarAnimationState] - ld [wd6a3], a - ret - -Func_188e1: ; 0x188e1 - ld a, [wd6a3] - cp $1 - jr z, .asm_18901 - cp $2 - jr z, .asm_18901 - ld a, [wGengarAnimationState] - cp $1 - jr z, .asm_188f7 - cp $2 - jr nz, .asm_18901 -.asm_188f7 - ld a, $1 - ld [wd803], a - ld a, $8 - ld [wd804], a -.asm_18901 - ld a, [wGengarAnimationState] - cp $6 - ret z - ld a, [wGengarAnimationState] - ld hl, wd6a3 - cp [hl] - ret z - ld a, [wd69c] - cp $3 - jr nz, .asm_1891d - ld a, [wd69b] - cp $9 - jr c, .asm_18945 -.asm_1891d - ld a, [wGengarAnimationState] - and a - jr z, .asm_18935 - ld a, [wGengarYPos] - add $0 - ld [wGengarYPos], a - ld a, [wGengarYPos + 1] - adc $fd - ld [wGengarYPos + 1], a - jr .asm_18945 - -.asm_18935 - ld a, [wGengarYPos] - add $0 - ld [wGengarYPos], a - ld a, [wGengarYPos + 1] - adc $ff - ld [wGengarYPos + 1], a -.asm_18945 - ld a, [wGengarAnimationState] - ld [wd6a3], a - ret - -Func_1894c: ; 0x1894c - ld a, [wd6a6] - and a - jr nz, .asm_1898f - ld a, [wd6a4] - and a - jr z, .asm_1898f - ld a, [wd6a5] - cp $3 - jr z, .asm_18980 - inc a - ld [wd6a5], a - ld a, [wd548] - ld hl, wd549 - and [hl] - jr z, .asm_18973 - ld a, [wd4b6] - inc a - ld [wd4b6], a -.asm_18973 - ld a, [wd7a0] - dec a - ld [wd7a0], a - ld a, $1 - ld [wUpperTiltPushing], a - ret - -.asm_18980 - lb de, $00, $2b - call PlaySoundEffect - ld a, $1 - ld [wd6a6], a - xor a - ld [wd6a4], a -.asm_1898f - xor a - ld [wUpperTiltPushing], a - ld a, [wd6a5] - and a - jr z, .asm_189a5 - dec a - ld [wd6a5], a - ld a, [wd7a0] - inc a - ld [wd7a0], a - ret - -.asm_189a5 - ld a, [wd6a4] - and a - ret nz - xor a - ld [wd6a6], a - ret - -Func_189af: ; 0x189af - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, AnimationDataPointers_18a57 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ret nc - ld a, [de] - dec de - and a - jr nz, .asm_189d7 - ld a, [de] - cp $4 - ret nz - ld hl, AnimationData_18a61 - dec de - dec de - call CopyHLToDE - ret - -.asm_189d7 - cp $1 - jr nz, .asm_189ed - ld a, [de] - cp $60 - ret nz - ld hl, AnimationData_18a61 - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - xor a - ld [de], a - ret - -.asm_189ed - cp $2 - jr nz, .asm_18a04 - ld a, [de] - cp $3 - ret nz - ld hl, AnimationData_18a6a - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - ld a, $1 - ld [de], a - ret - -.asm_18a04 - cp $3 - jr nz, .asm_18a3c - ld a, [de] - cp $1 - jr nz, .asm_18a14 - lb de, $00, $2e - call PlaySoundEffect - ret - -.asm_18a14 - cp $fe - ret nz - ld a, $1 - ld [wd6a8], a - ld a, $1 - ld [wd498], a - ld a, $1 - ld [wd49a], a - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5dc - ld de, GengarStageClearedText - call LoadTextHeader - lb de, $4b, $2a - call PlaySoundEffect - ret - -.asm_18a3c - cp $4 - ret nz - ld a, [de] - cp $2 - ret nz - ld hl, AnimationData_18a61 - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - xor a - ld [de], a - ld de, $0007 - call PlaySong - ret - -AnimationDataPointers_18a57: - dw AnimationData_18a61 - dw AnimationData_18a6a - dw AnimationData_18b2b - dw AnimationData_18b32 - dw AnimationData_18d2f - -AnimationData_18a61: -; Each entry is [duration][OAM id] - db $40, $01 - db $10, $00 - db $40, $02 - db $10, $00 - db $00 ; terminator - -AnimationData_18a6a: -; Each entry is [duration][OAM id] - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $01, $00 - db $01, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $01, $03 - db $01, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $01, $03 - db $01, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $01, $04 - db $01, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $00 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $04 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $02, $03 - db $01, $06 - db $00 ; terminator - -AnimationData_18b2b: -; Each entry is [duration][OAM id] - db $10, $05 - db $20, $01 - db $08, $00 - db $00 ; terminator - -AnimationData_18b32: -; Each entry is [duration][OAM id] - db $10, $05 - db $10, $00 - db $08, $03 - db $0C, $04 - db $0A, $03 - db $10, $00 - db $08, $03 - db $0C, $04 - db $0A, $03 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $00 - db $04, $06 - db $04, $00 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $00 - db $04, $06 - db $04, $00 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $01 - db $04, $06 - db $04, $00 - db $04, $06 - db $04, $00 - db $04, $06 - db $04, $02 - db $04, $06 - db $04, $02 - db $04, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $00 - db $03, $06 - db $03, $00 - db $03, $06 - db $03, $00 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $03, $01 - db $03, $06 - db $02, $01 - db $01, $00 - db $03, $06 - db $03, $00 - db $03, $06 - db $03, $00 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $03, $02 - db $03, $06 - db $02, $02 - db $02, $06 - db $02, $02 - db $02, $06 - db $02, $02 - db $02, $06 - db $02, $02 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $01 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $00 - db $02, $06 - db $02, $02 - db $02, $06 - db $02, $02 - db $02, $06 - db $02, $02 - db $02, $06 - db $02, $02 - db $02, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $02 - db $01, $06 - db $01, $00 - db $01, $06 - db $01, $00 - db $01, $06 - db $00 ; terminator - -AnimationData_18d2f: -; Each entry is [duration][OAM id] - db $40, $00 - db $40, $00 - db $00 ; terminator - -Func_18d34: ; 0x18d34 - ld a, [wWhichGravestone] - and a - jr z, .asm_18d71 - xor a - ld [wWhichGravestone], a - ld a, [wd7be] - and a - jr nz, .asm_18d71 - ld bc, OneHundredPoints - callba AddBigBCD6FromQueue - ld a, $ff - ld [wd803], a - ld a, $3 - ld [wd804], a - ld hl, $0100 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - ld de, $002f - call Func_4d8 -.asm_18d71 - ret +INCLUDE "engine/pinball_game/object_collision/gengar_bonus_resolve_collision.asm" Func_18d72: ; 0x18d72 ld a, [wd656] @@ -12033,1548 +1859,13 @@ INCLUDE "engine/pinball_game/stage_init/init_mewtwo_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_mewtwo_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_mewtwo_bonus.asm" INCLUDE "engine/pinball_game/object_collision/mewtwo_bonus_object_collision.asm" - -Func_19451: ; 0x19451 - call Func_19531 - call Func_19701 - call Func_1948b - callba Func_107f8 - ld a, [wd57e] - and a - ret z - xor a - ld [wd57e], a - ld a, $1 - ld [wd7be], a - call Func_2862 - callba StopTimer - ld a, [wd6b1] - cp $8 - ret nc - ld a, $1 - ld [wd6b3], a - ret - -Func_1948b: ; 0x1948b - ld a, [wd6a9] - and a - ret nz - ld a, [wd4b4] - cp $8a - ret nc - ld a, $1 - ld [wStageCollisionState], a - ld [wd6a9], a - callba LoadStageCollisionAttributes - call Func_194ac - ret - -Func_194ac: ; 0x194ac - ld a, [wStageCollisionState] - sla a - ld c, a - ld b, $0 - ld hl, Data_194c9 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_194bf - ld hl, Data_194fd -.asm_194bf - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(Data_194c9) - call Func_10aa - ret - -Data_194c9: - dw Data_194cd - dw Data_194d0 - -Data_194cd: ; 0x194cd - db 1 - dw Data_194d3 - -Data_194d0: ; 0x194d0 - db 1 - dw Data_194e8 - -Data_194d3: ; 0x194d3 - dw LoadTileLists - db $05 ; total number of tiles to load - - db $01 ; number of tiles - dw vBGMap + $113 - db $45 - - db $01 ; number of tiles - dw vBGMap + $133 - db $80 - - db $02 ; number of tiles - dw vBGMap + $152 - db $80, $09 - - db $01 ; number of tiles - dw vBGMap + $172 - db $12 - - db $00 ; terminator - -Data_194e8: ; 0x194e8 - dw LoadTileLists - db $05 ; total number of tiles to load - - db $01 ; number of tiles - dw vBGMap + $113 - db $46 - - db $01 ; number of tiles - dw vBGMap + $133 - db $47 - - db $02 ; number of tiles - dw vBGMap + $152 - db $48, $49 - - db $01 ; number of tiles - dw vBGMap + $172 - db $4A - - db $00 ; terminator - -Data_194fd: - dw Data_19501 - dw Data_19504 - -Data_19501: ; 0x19501 - db 1 - dw Data_19507 - -Data_19504: ; 0x19504 - db 1 - dw Data_1951c - -Data_19507: ; 0x19507 - dw LoadTileLists - db $05 ; total number of tiles to load - - db $01 ; number of tiles - dw vBGMap + $113 - db $45 - - db $01 ; number of tiles - dw vBGMap + $133 - db $80 - - db $02 ; number of tiles - dw vBGMap + $152 - db $80, $09 - - db $01 ; number of tiles - dw vBGMap + $172 - db $12 - - db $00 ; terminator - -Data_1951c: ; 0x1951c - dw LoadTileLists - db $05 ; total number of tiles to load - - db $01 ; number of tiles - dw vBGMap + $113 - db $46 - - db $01 ; number of tiles - dw vBGMap + $133 - db $47 - - db $02 ; number of tiles - dw vBGMap + $152 - db $48, $49 - - db $01 ; number of tiles - dw vBGMap + $172 - db $4A - - db $00 ; terminator - -Func_19531: ; 0x19531 - ld a, [wd6aa] - and a - jr z, .asm_195a2 - xor a - ld [wd6aa], a - ld a, [wd7be] - and a - jr nz, .asm_195a2 - ld a, [wd6af] - cp $2 - jr nc, .asm_195a2 - ld bc, FiveMillionPoints - callba AddBigBCD6FromQueue - ld a, [wd6b0] - inc a - cp $3 - jr nz, .asm_19565 - ld a, [wd6b1] - inc a - ld [wd6b1], a - xor a -.asm_19565 - ld [wd6b0], a - call ResetOrbitingBalls - ld a, [wd6b1] - cp $8 - jr z, .asm_19582 - ld a, $2 - ld de, wd6ae - call Func_19679 - lb de, $00, $39 - call PlaySoundEffect - jr .asm_195a2 - -.asm_19582 - ld a, $3 - ld de, wd6ae - call Func_19679 - ld a, $1 - ld [wd7be], a - call Func_2862 - callba StopTimer - ld de, $0000 - call PlaySong -.asm_195a2 - call Func_195ac - ld de, wd6af - call Func_195f5 - ret - -Func_195ac: ; 0x195ac - ld a, [wd6af] - and a - ret nz - ld hl, wd6bd - ld de, $0008 - ld b, $6 -.asm_195b9 - ld a, [hl] - cp $2b - jr nz, .asm_195ce - dec hl - dec hl - dec hl - ld a, [hl] - cp $2 - ret nz - ld a, $1 - ld de, wd6ae - call Func_19679 - ret - -.asm_195ce - add hl, de - dec b - jr nz, .asm_195b9 - ret - -Func_195d3: ; 0x195d3 - ld hl, wd6bd - ld de, $0008 - ld b, $6 -.asm_195db - ld a, [hl] - cp $18 - jr nz, .asm_195f0 - dec hl - dec hl - dec hl - ld a, [hl] - cp $2 - ret nz - ld d, h - ld e, l - dec de - ld a, $1 - call Func_19876 - ret - -.asm_195f0 - add hl, de - dec b - jr nz, .asm_195db - ret - -Func_195f5: ; 0x195f5 - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, Data_19691 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ret nc - ld a, [de] - rst JumpTable ; calls JumpToFuncInTable -CallTable_1960d: ; 0x1960d - dw Func_19615 - dw Func_1961e - dw Func_1962f - dw Func_19638 - -Func_19615: ; 0x19615 - dec de - ld a, [de] - cp $4 - ret nz - xor a - jp Func_19679 - -Func_1961e: ; 0x1961e - dec de - ld a, [de] - cp $c - jr nz, .asm_19628 - call Func_195d3 - ret - -.asm_19628 - cp $d - ret nz - xor a - jp Func_19679 - -Func_1962f: ; 0x1962f - dec de - ld a, [de] - cp $1 - ret nz - xor a - jp Func_19679 - -Func_19638: ; 0x19638 - dec de - ld a, [de] - cp $1 - jr nz, .asm_19645 - lb de, $00, $40 - call PlaySoundEffect - ret - -.asm_19645 - cp $20 - ret nz - ld a, $1 - ld [wd6b3], a - ld a, [wd499] - ld [wd498], a - ld a, [wNumMewtwoBonusCompletions] - cp $2 ; only counts up to 2. Gets reset to 0 when Mew is encountered in Catch 'Em Mode. - jr z, .asm_1965e - inc a - ld [wNumMewtwoBonusCompletions], a -.asm_1965e - ld a, $1 - ld [wd49a], a - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5dc -.asm_1966b - ld de, MewtwoStageClearedText - call LoadTextHeader - lb de, $4b, $2a - call PlaySoundEffect - ret - -Func_19679: ; 0x19679 - push af - sla a - ld c, a - ld b, $0 - ld hl, Data_19691 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - pop af - ld [de], a - ret - -Data_19691: - dw Data_19699 - dw Data_196a2 - dw Data_196bd - dw Data_196c0 - -Data_19699: ; 0x19699 - db $30, $00, $04, $05, $34, $04, $03, $05 - db $00 ; terminator - -Data_196a2: ; 0x196a2 - db $0A, $00, $06, $01, $05, $02, $05, $01, $04, $02, $04, $01, $04, $02, $03, $01 - db $03, $02, $03, $01, $03, $02, $04, $00, $40, $03 - db $00 ; terminator - -Data_196bd: ; 0x196bd - db $10, $06 - db $00 ; terminator - -Data_196c0: ; 0x196c0 - db $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07, $04, $06, $04, $07 - db $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07, $03, $06, $03, $07 - db $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07, $02, $06, $02, $07 - db $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07, $01, $06, $01, $07 - db $00 ; terminator - -Func_19701: ; 0x19701 - ld a, [wd6b4] - and a - jr z, .asm_19742 - xor a - ld [wd6b4], a - ld a, [wd7be] - and a - jr nz, .asm_19742 - ld a, [wd6b5] - sub $1 - sla a - sla a - sla a - ld c, a - ld b, $0 - ld hl, wd6ba - add hl, bc - ld d, h - ld e, l - ld a, [de] - and a - jr nz, .asm_19742 - dec de - ld a, $2 - call Func_19876 - ld bc, OneHundredThousandPoints - callba AddBigBCD6FromQueue - lb de, $00, $38 - call PlaySoundEffect -.asm_19742 - ld de, wd6bd - call SetOrbitingBallCoordinates - ld de, wd6c5 - call SetOrbitingBallCoordinates - ld de, wd6cd - call SetOrbitingBallCoordinates - ld de, wd6d5 - call SetOrbitingBallCoordinates - ld de, wd6dd - call SetOrbitingBallCoordinates - ld de, wd6e5 - call SetOrbitingBallCoordinates - ld de, wd6b6 - call UpdateOrbitingBallAnimation - ld de, wd6be - call UpdateOrbitingBallAnimation - ld de, wd6c6 - call UpdateOrbitingBallAnimation - ld de, wd6ce - call UpdateOrbitingBallAnimation - ld de, wd6d6 - call UpdateOrbitingBallAnimation - ld de, wd6de - call UpdateOrbitingBallAnimation - ret - -SetOrbitingBallCoordinates: ; 0x1978b -; Sets the x, y coordinates for one of the balls orbiting around Mewtwo - ld a, [de] - ld c, a - ld b, $0 - sla c - inc a - cp $48 ; num entries in MewtwoOrbitingBallsCoords - jr c, .looadCoords - xor a -.looadCoords - ld [de], a - ld hl, MewtwoOrbitingBallsCoords + 1 - add hl, bc - dec de - ld a, [hld] - ld [de], a - dec de - ld a, [hl] - ld [de], a - ret - -MewtwoOrbitingBallsCoords: -; x, y coordinates for balls that orbit around Mewtwo. - db $62, $08 - db $62, $0A - db $62, $0D - db $61, $0F - db $60, $11 - db $60, $13 - db $5F, $15 - db $5D, $17 - db $5C, $19 - db $5A, $1A - db $59, $1C - db $57, $1D - db $55, $1F - db $53, $20 - db $51, $20 - db $4F, $21 - db $4D, $22 - db $4A, $22 - db $48, $22 - db $46, $22 - db $43, $22 - db $41, $21 - db $3F, $20 - db $3D, $20 - db $3B, $1F - db $39, $1D - db $37, $1C - db $36, $1A - db $34, $19 - db $33, $17 - db $31, $15 - db $30, $13 - db $30, $11 - db $2F, $0F - db $2E, $0D - db $2E, $0A - db $2E, $08 - db $2E, $06 - db $2E, $03 - db $2F, $01 - db $30, $FF - db $30, $FD - db $31, $FB - db $33, $F9 - db $34, $F7 - db $36, $F6 - db $37, $F4 - db $39, $F3 - db $3B, $F1 - db $3D, $F0 - db $3F, $F0 - db $41, $EF - db $43, $EE - db $46, $EE - db $48, $EE - db $4A, $EE - db $4D, $EE - db $4F, $EF - db $51, $F0 - db $53, $F0 - db $55, $F1 - db $57, $F3 - db $59, $F4 - db $5A, $F6 - db $5C, $F7 - db $5D, $F9 - db $5F, $FB - db $60, $FD - db $60, $FF - db $61, $01 - db $62, $03 - db $62, $06 - -UpdateOrbitingBallAnimation: ; 0x19833 -; Updates the animation for one of the balls orbiting around Mewtwo. - ld a, [de] - and a - ret z - inc de - inc de - inc de - inc de - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, OrbitingBallAnimations - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ret nc - ld a, [de] - rst JumpTable ; calls JumpToFuncInTable -CallTable_19852: ; 0x19852 - dw Func_1985a - dw Func_19863 - dw Func_1986c - dw Func_1986d - -Func_1985a: ; 0x1985a - dec de - ld a, [de] - cp $6 - ret nz - xor a - jp Func_19876 - -Func_19863: ; 0x19863 - dec de - ld a, [de] - cp $7 - ret nz - xor a - jp Func_19876 - -Func_1986c: ; 0x1986c - ret - -Func_1986d: ; 0x1986d - dec de - ld a, [de] - cp $1 - ret nz - xor a - jp Func_19876 - -Func_19876: ; 0x19876 - push af - sla a - ld c, a - ld b, $0 - ld hl, OrbitingBallAnimations - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - pop af - ld [de], a - ret - -ResetOrbitingBalls: ; 0x1988e - ld a, [wd6b1] - sla a - sla a - sla a - ld c, a - ld b, $0 - ld hl, OrbitingBallsStartCoordsIndices - add hl, bc - ld de, wd6bd - ld b, $6 -.asm_198a3 - ld a, [hli] - push bc - push de - push hl - bit 7, a - jr nz, .asm_198b7 - ld [de], a - dec de - dec de - dec de - dec de - ld a, $3 - call Func_19876 - jr .asm_198c0 - -.asm_198b7 - dec de - dec de - dec de - dec de - dec de - dec de - dec de - xor a - ld [de], a -.asm_198c0 - pop hl - pop de - pop bc - ld a, e - add $8 - ld e, a - jr nc, .asm_198ca - inc d -.asm_198ca - dec b - jr nz, .asm_198a3 - ret - -OrbitingBallsStartCoordsIndices: -; When Mewtwo is hit, the orbs briefly disappear. When they reappear, -; this table determines which entry in the MewtwoOrbitingBallsCoords table -; each orb will start at. -; Last two bytes in each row are unused - db $00, $0C, $18, $24, $30, $3C, $FF, $FF ; All 6 orbs are up - db $00, $0E, $1D, $2B, $3A, $FF, $FF, $FF ; 5 orbs are up - db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 4 orbs - db $00, $12, $24, $36, $FF, $FF, $FF, $FF ; 3 orbs - db $00, $18, $30, $FF, $FF, $FF, $FF, $FF ; 2 orbs - db $00, $24, $FF, $FF, $FF, $FF, $FF, $FF ; 1 orb - db $00, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; 0 orbs - db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused - db $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF ; unused - -OrbitingBallAnimations: - dw OrbitingBallAnimation1 - dw OrbitingBallAnimation2 - dw OrbitingBallAnimation3 - dw OrbitingBallAnimation4 - -OrbitingBallAnimation1: ; 0x1991e -; Each entry is [duration][OAM id] - db $0A, $00 - db $08, $01 - db $08, $02 - db $0A, $03 - db $08, $02 - db $08, $01 - db $00 ; terminator - -OrbitingBallAnimation2: ; 0x1992b -; Each entry is [duration][OAM id] - db $05, $04 - db $06, $05 - db $06, $06 - db $07, $07 - db $07, $08 - db $08, $09 - db $08, $0A - db $00 ; terminator - -OrbitingBallAnimation3: ; 0x1993a -; Each entry is [duration][OAM id] - db $05, $0A - db $05, $09 - db $04, $08 - db $04, $07 - db $03, $06 - db $03, $05 - db $02, $04 - db $80, $0B - db $00 ; terminator - -OrbitingBallAnimation4: ; 0x1994b -; Each entry is [duration][OAM id] - db $0C, $0B - db $00 ; terminator - +INCLUDE "engine/pinball_game/object_collision/mewtwo_bonus_resolve_collision.asm" INCLUDE "engine/pinball_game/draw_sprites/draw_mewtwo_bonus_sprites.asm" INCLUDE "engine/pinball_game/stage_init/init_diglett_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_diglett_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_diglett_bonus.asm" INCLUDE "engine/pinball_game/object_collision/diglett_bonus_object_collision.asm" - -Func_19b88: ; 0x19b88 - call Func_19c52 - call Func_1aad4 - call Func_19b92 - ret - -Func_19b92: ; 0x19b92 - ld a, [wd73a] - and a - ret nz - ld a, [wd4b4] - cp $8a - ret nc - ld a, $1 - ld [wStageCollisionState], a - ld [wd73a], a - xor a - ld [wc853], a - ld [wc873], a - ld [wc893], a - ld a, $5 - ld [wc872], a - ld a, $7 - ld [wc892], a - call Func_19bbd - ret - -Func_19bbd: ; 0x19bbd - ld a, [wStageCollisionState] - sla a - ld c, a - ld b, $0 - ld hl, Data_19bda - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_19bd0 - ld hl, Data_19c16 -.asm_19bd0 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(Data_19bda) - call Func_10aa - ret - -Data_19bda: - dw Data_19bde - dw Data_19be1 - -Data_19bde: ; 0x19bde - dbw $1, TileListData_19be4 - -Data_19be1: ; 0x19be1 - dbw $1, TileListData_19bfd - -TileListData_19be4: ; 0x19be4 - dw LoadTileLists - db $09 - db $02 - dw vBGMap + $113 - db $4E, $4F - db $02 - dw vBGMap + $133 - db $80, $4D - db $03 - dw vBGMap + $152 - db $80, $4B, $4C - db $02 - dw vBGMap + $172 - db $49, $4A - db $00 ; terminator - -TileListData_19bfd: ; 0x19bfd - dw LoadTileLists - db $09 - db $02 - dw vBGMap + $113 - db $1D, $FB - db $02 - dw vBGMap + $133 - db $1B, $FA - db $03 - dw vBGMap + $152 - db $18, $19, $FB - db $02 - dw vBGMap + $172 - db $14, $15 - db $00 ; terminator - -Data_19c16: - dw Data_19c1a - dw Data_19c1d - -Data_19c1a: ; 0x19c1a - dbw $1, Data_19c20 - -Data_19c1d: ; 0x19c1d - dbw $1, Data_19c39 - -Data_19c20: ; 0x19c20 - dw LoadTileLists - db $09 - db $02 - dw vBGMap + $113 - db $4E, $4F - db $02 - dw vBGMap + $133 - db $80, $4D - db $03 - dw vBGMap + $152 - db $80, $4B, $4C - db $02 - dw vBGMap + $172 - db $49, $4A - db $00 ; terminator - -Data_19c39: ; 0x19c39 - dw LoadTileLists - db $09 - db $02 - dw vBGMap + $113 - db $1D, $FB - db $02 - dw vBGMap + $133 - db $1B, $FA - db $03 - dw vBGMap + $152 - db $18, $19, $FB - db $02 - dw vBGMap + $172 - db $14, $15 - db $00 ; terminator - -Func_19c52: ; 0x19c52 - ld a, [wd73b] - and a - jr z, .asm_19cc8 - xor a - ld [wd73b], a - ld bc, OneHundredThousandPoints - callba AddBigBCD6FromQueue - lb de, $00, $35 - call PlaySoundEffect - ld hl, $0100 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - ld a, [wd73c] - sub $1 - ld c, a - ld b, $0 - ld hl, wDiglettStates - add hl, bc - ld a, [hl] - cp $6 - jr nc, .asm_19cc8 - ld a, $8 - ld [hl], a - call Func_19da8 - call Func_19df0 - ld hl, wDiglettStates - ld bc, NUM_DIGLETTS << 8 - xor a -.asm_19ca0 - ld a, [hli] - and a - jr z, .asm_19ca8 - cp $6 - jr c, .asm_19ca9 -.asm_19ca8 - inc c -.asm_19ca9 - dec b - jr nz, .asm_19ca0 - ld a, c - cp NUM_DIGLETTS - jr nz, .asm_19cc8 - ld hl, AnimationData_1ac75 - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld a, $1 - ld [wDugrioState], a - call Func_1ac2c - ld de, $0002 - call PlaySong -.asm_19cc8 - call Func_19cdd - ld a, [wd765] - and a - ret nz - ld a, $1 - ld [wd765], a - ld a, [wDugrioState] - and a - call nz, Func_1ac2c - ret - -Func_19cdd: ; 0x19cdd - ld a, [wDiglettsInitializedFlag] - and a - jr nz, .alreadyInitializedDigletts - ld a, [wDiglettInitDelayCounter] - add DIGLETT_INITIALIZE_DELAY - ld [wDiglettInitDelayCounter], a - ret nc - ld hl, DiglettInitializeOrder - ld a, [wCurrentDiglett] - ld c, a - ld b, $0 - add hl, bc - ld b, $1 -.asm_19cf8 - push bc - ld a, [hli] - bit 7, a - jr z, .asm_19d02 - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [hli] -.asm_19d02 - push hl - ld c, a - ld b, $0 - ld hl, wDiglettStates - add hl, bc - ld a, [hl] - and a - jr z, .asm_19d29 - dec a - jr nz, .asm_19d21 - ; pick a random starting state for the diglett that isn't the "hiding" state - call GenRandom - and $3 - add $2 - ld [hl], a - call Func_19da8 - call Func_19dcd - jr .asm_19d29 - -.asm_19d21 - and $3 - add $2 - ld [hl], a - call Func_19da8 -.asm_19d29 - pop hl - pop bc - dec b - jr nz, .asm_19cf8 - ld hl, wDiglettsInitializedFlag - ld a, [wCurrentDiglett] - add $1 - cp NUM_DIGLETTS - jr c, .notDoneInitializingDigletts - set 0, [hl] - sub NUM_DIGLETTS -.notDoneInitializingDigletts - ld [wCurrentDiglett], a - ret - -.alreadyInitializedDigletts - ld hl, DiglettUpdateOrder - ld a, [wCurrentDiglett] - ld c, a - ld b, $0 - add hl, bc - ld b, $4 ; update 4 digletts -.updateDiglettLoop - push bc - ld a, [hli] - bit 7, a - jr z, .asm_19d58 - ld a, [hli] - ld h, [hl] - ld l, a - ld a, [hli] -.asm_19d58 - push hl - ld c, a - ld b, $0 - ld hl, wDiglettStates - add hl, bc - ld a, [hl] - and a - jr z, .asm_19d8f - dec a - jr nz, .asm_19d77 - call GenRandom - and $3 - add $2 - ld [hl], a - call Func_19da8 - call Func_19dcd - jr .asm_19d8f - -.asm_19d77 - cp $5 - jr c, .incrementDiglettState - ld [hl], a - jr nz, .asm_19d8f - xor a - ld [hl], a - ld a, $1 - call Func_19da8 - jr .asm_19d8f - -.incrementDiglettState - and $3 - add $2 - ld [hl], a - call Func_19da8 -.asm_19d8f - pop hl - pop bc - dec b - jr nz, .updateDiglettLoop - ld hl, wDiglettsInitializedFlag - ld a, [wCurrentDiglett] - add $4 - cp NUM_DIGLETTS - jr c, .asm_19da4 - set 0, [hl] - sub NUM_DIGLETTS -.asm_19da4 - ld [wCurrentDiglett], a - ret - -Func_19da8: ; 0x19da8 -; input: a = diglett state -; c = diglett index - cp $6 - jr c, .asm_19dae - ld a, $6 ; "getting hit" state -.asm_19dae - push bc - ld b, a - sla c - ld a, c - sla c - add c - add b ; a = (index * 6) + state - dec a - ld c, a - ld b, $0 ; bc = (index * 6) + state - 1 - sla c - rl b ; bc = 2 * ((index * 6) + state - 1) - ld hl, DiglettTileDataPointers - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(DiglettTileDataPointers) - call Func_10aa - pop bc - ret - -Func_19dcd: ; 0x19dcd - sla c - ld a, c - sla c - add c - ld c, a - ld b, $0 - ld hl, Data_19e13 - add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - ld a, e - add $1f - ld e, a - jr nc, .asm_19dea - inc d -.asm_19dea - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - ret - -Func_19df0: ; 0x19df0 - sla c - ld a, c - sla c - add c - ld c, a - ld b, $0 - ld hl, Data_19e13 - add hl, bc - ld a, [hli] - ld e, a - ld a, [hli] - ld d, a - ld a, $2 - ld [de], a - inc de - ld [de], a - ld a, e - add $1f - ld e, a - jr nc, .asm_19e0d - inc d -.asm_19e0d - ld a, $2 - ld [de], a - inc de - ld [de], a - ret - -Data_19e13: - dw wc7a1 - db $19, $19, $1A, $1B - - dw wc7e1 - db $1C, $1C, $1D, $1E - - dw wc821 - db $1F, $1F, $20, $21 - - dw wc7c3 - db $22, $22, $23, $24 - - dw wc803 - db $25, $25, $26, $27 - - dw wc843 - db $28, $28, $29, $2A - - dw wc7a5 - db $2B, $2B, $2C, $2D - - dw wc7e5 - db $2E, $2E, $2F, $30 - - dw wc825 - db $31, $31, $32, $33 - - dw wc865 - db $34, $34, $35, $36 - - dw wc7c7 - db $37, $37, $38, $39 - - dw wc807 - db $3A, $3A, $3B, $3C - - dw wc847 - db $3D, $3D, $3E, $3F - - dw wc887 - db $40, $40, $41, $42 - - dw wc7e9 - db $43, $43, $44, $45 - - dw wc829 - db $46, $46, $47, $48 - - dw wc869 - db $49, $49, $4A, $4B - - dw wc7cb - db $19, $19, $1A, $1B - - dw wc80b - db $1C, $1C, $1D, $1E - - dw wc84b - db $1F, $1F, $20, $21 - - dw wc88b - db $22, $22, $23, $24 - - dw wc7ad - db $25, $25, $26, $27 - - dw wc7ed - db $28, $28, $29, $2A - - dw wc82d - db $2B, $2B, $2C, $2D - - dw wc86d - db $2E, $2E, $2F, $30 - - dw wc7cf - db $31, $31, $32, $33 - - dw wc80f - db $34, $34, $35, $36 - - dw wc84f - db $37, $37, $38, $39 - - dw wc7b1 - db $3A, $3A, $3B, $3C - - dw wc7f1 - db $3D, $3D, $3E, $3F - - dw wc831 - db $40, $40, $41, $42 - - ; unused pointers? - dw DiglettInitializeOrder - dw DiglettUpdateOrder - -INCLUDE "data/diglett_stage/diglett_stage_animation_data.asm" - -Func_1aad4: ; 0x1aad4 - ld a, [wd75f] - and a - jr z, .asm_1ab2c - xor a - ld [wd75f], a - ld a, [wDugrioState] - bit 0, a - jr z, .asm_1ab2c - cp $7 - jr z, .asm_1ab2c - inc a - ld [wDugrioState], a - sla a - ld c, a - ld b, $0 - ld hl, AnimationDataPointers_1ac62 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld bc, FiveMillionPoints - callba AddBigBCD6FromQueue - lb de, $00, $36 - call PlaySoundEffect - ld a, $33 - ld [wd803], a - ld a, $8 - ld [wd804], a - ld hl, $0200 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a -.asm_1ab2c - call Func_1ab30 - ret - -Func_1ab30: ; 0x1ab30 - ld a, [wDugrioState] - sla a - ld c, a - ld b, $0 - ld hl, AnimationDataPointers_1ac62 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld de, wDugtrioAnimationFrameCounter - call UpdateAnimation - ret nc - ld a, [wDugrioState] - and a - ret z - cp $1 - jr nz, .asm_1ab64 - ld a, [wDugtrioAnimationFrameIndex] - cp $3 - ret nz - ld hl, AnimationData_1ac75 - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld a, $1 - ld [wDugrioState], a - ret - -.asm_1ab64 - cp $2 - jr nz, .asm_1ab7d - ld a, [wDugtrioAnimationFrameIndex] - cp $1 - ret nz - ld hl, AnimationData_1ac7f - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld a, $3 - ld [wDugrioState], a - ret - -.asm_1ab7d - cp $3 - jr nz, .asm_1ab96 - ld a, [wDugtrioAnimationFrameIndex] - cp $3 - ret nz - ld hl, AnimationData_1ac7f - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld a, $3 - ld [wDugrioState], a - ret - -.asm_1ab96 - cp $4 - jr nz, .asm_1abaf - ld a, [wDugtrioAnimationFrameIndex] - cp $1 - ret nz - ld hl, AnimationData_1ac89 - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld a, $5 - ld [wDugrioState], a - ret - -.asm_1abaf - cp $5 - jr nz, .asm_1abc8 - ld a, [wDugtrioAnimationFrameIndex] - cp $3 - ret nz - ld hl, AnimationData_1ac89 - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld a, $5 - ld [wDugrioState], a - ret - -.asm_1abc8 - cp $6 - jr nz, .asm_1abe1 - ld a, [wDugtrioAnimationFrameIndex] - cp $1 - ret nz - ld hl, AnimationData_1ac93 - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - ld a, $7 - ld [wDugrioState], a - ret - -.asm_1abe1 - cp $7 - ret nz - ld a, [wDugtrioAnimationFrameIndex] - cp $1 - jr nz, .asm_1abf2 - ld de, $0000 - call PlaySong - ret - -.asm_1abf2 - cp $2 - ret nz - ld hl, AnimationData_1ac72 - ld de, wDugtrioAnimationFrameCounter - call CopyHLToDE - xor a - ld [wDugrioState], a - ld [wd498], a - ld a, $1 - ld [wd49a], a - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5dc - ld de, DiglettStageClearedText - call LoadTextHeader - lb de, $4b, $2a - call PlaySoundEffect - ld a, $1 - ld [wd7be], a - call Func_2862 - ld hl, Data_1ac56 - jr asm_1ac2f - -Func_1ac2c: ; 0x1ac2c - ld hl, Data_1ac4a -asm_1ac2f: - ld de, wc768 - ld b, $3 -.asm_1ac34 - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - inc de - ld a, [hli] - ld [de], a - ld a, e - add $1d - ld e, a - jr nc, .asm_1ac46 - inc d -.asm_1ac46 - dec b - jr nz, .asm_1ac34 - ret - -Data_1ac4a: - db $00, $00, $00, $00 - db $14, $14, $14, $14 - db $15, $16, $17, $18 - -Data_1ac56: - db $50, $02, $02, $51 - db $02, $02, $02, $02 - db $02, $02, $02, $02 - -AnimationDataPointers_1ac62: ; 0x1ac62 - dw AnimationData_1ac72 - dw AnimationData_1ac75 - dw AnimationData_1ac7c - dw AnimationData_1ac7f - dw AnimationData_1ac86 - dw AnimationData_1ac89 - dw AnimationData_1ac90 - dw AnimationData_1ac93 - -AnimationData_1ac72: ; 0x1ac72 -; Each entry is [duration][OAM id] - db $01, $0C - db $00 ; terminator - -AnimationData_1ac75: ; 0x1ac75 -; Each entry is [duration][OAM id] - db $0E, $00 - db $0E, $01 - db $0E, $02 - db $00 ; terminator - -AnimationData_1ac7c: ; 0x1ac7c -; Each entry is [duration][OAM id] - db $0D, $03 - db $00 ; terminator - -AnimationData_1ac7f: ; 0x1ac7f -; Each entry is [duration][OAM id] - db $0E, $04 - db $0E, $05 - db $0E, $06 - db $00 - -AnimationData_1ac86: ; 0x1ac86 -; Each entry is [duration][OAM id] - db $0D, $07 - db $00 ; terminator - -AnimationData_1ac89: ; 0x1ac89 -; Each entry is [duration][OAM id] - db $0E, $08 - db $0E, $09 - db $0E, $0A - db $00 - -AnimationData_1ac90: ; 0x1ac90 -; Each entry is [duration][OAM id] - db $0D, $0B - db $00 ; terminator - -AnimationData_1ac93: ; 0x1ac93 -; Each entry is [duration][OAM id] - db $01, $0D - db $40, $0D - db $00 ; terminator - +INCLUDE "engine/pinball_game/object_collision/diglett_bonus_resolve_collision.asm" INCLUDE "engine/pinball_game/draw_sprites/draw_diglett_bonus_sprites.asm" SECTION "bank7", ROMX, BANK[$7] @@ -13583,8075 +1874,7 @@ INCLUDE "engine/pinball_game/stage_init/init_blue_field.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_blue_field.asm" INCLUDE "engine/pinball_game/load_stage_data/load_blue_field.asm" INCLUDE "engine/pinball_game/object_collision/blue_stage_object_collision.asm" - -Func_1c715: ; 0x1c715 - call ResolveShellderCollision - call ResolveBlueStageSpinnerCollision - call ResolveBlueStagePinballUpgradeTriggersCollision - call HandleBlueStageBallTypeUpgradeCounter - call Func_1e66a - call ResolveBlueStageBoardTriggerCollision - call ResolveBlueStagePikachuCollision - call ResolveSlowpokeCollision - call ResolveCloysterCollision - call Func_1ea3b - call ResolvePsyduckPoliwagCollision - call ResolveBlueStageForceFieldCollision - call Func_1e9c0 - call Func_1c8b6 - call Func_1f18a - callba Func_146a9 - call Func_1f27b - call Func_1df15 - callba Func_30188 - ld a, $0 - callba Func_10000 - ret - -Func_1c769: ; 0x1c769 - call Func_1ca4a - call Func_1ce40 - call ResolvePsyduckPoliwagCollision - call Func_1ca85 - call Func_1e4b8 - call HandleBlueStageBallTypeUpgradeCounter - call Func_1e5c5 - call Func_1c7d7 - call ResolveBlueStagePikachuCollision - call Func_1ead4 - call ResolveBlueStageBonusMultiplierCollision - call Func_1e757 - call Func_1e9c0 - call Func_1ea0a - call Func_1c8b6 - callba Func_14733 - callba Func_146a2 - call Func_1f261 - call Func_1de93 - callba Func_30188 - ld a, $0 - callba Func_10000 - ret - -Func_1c7c7: ; 0x1c7c7 - ld a, $0 - ld [wStageCollisionState], a - callba LoadStageCollisionAttributes - ret - -Func_1c7d7: ; 0x1c7d7 - ld a, [wPinballLaunchAlley] - and a - ret z - xor a - ld [wPinballLaunchAlley], a - ld a, [wd4de] - and a - jr z, .asm_1c810 - xor a - ld [wRightAlleyTrigger], a - ld [wLeftAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - ld hl, wBallXVelocity - ld [hli], a - ld [hl], a - ld [wBallSpin], a - ld [wBallRotation], a - ld a, $71 - ld [wBallYVelocity], a - ld a, $fa - ld [wBallYVelocity + 1], a - ld a, $1 - ld [wd549], a - lb de, $00, $0a - call PlaySoundEffect -.asm_1c810 - ld a, $ff - ld [wPreviousTriggeredGameObject], a - ld a, [wd4de] - and a - ret nz - ld a, [wd4e0] - and a - jr nz, .asm_1c82c - call Func_1c839 - ld a, $1 - ld [wd4e0], a - ld [wd4de], a - ret - -.asm_1c82c - ld hl, wKeyConfigBallStart - call IsKeyPressed - ret z - ld a, $1 - ld [wd4de], a - ret - -Func_1c839: ; 0x1c839 - ld a, [hGameBoyColorFlag] - and a - callba nz, LoadGreyBillboardPaletteData -.showNextMap - ld a, [wInitialMapSelectionIndex] - inc a - cp $7 ; number of maps to choose from at the start of play - jr c, .gotMapId - xor a ; wrap around to 0 -.gotMapId - ld [wInitialMapSelectionIndex], a - ld c, a - ld b, $0 - ld hl, BlueStageInitialMaps - add hl, bc - ld a, [hl] - ld [wCurrentMap], a - push af - lb de, $00, $48 - call PlaySoundEffect - pop af - add (PalletTownPic_Pointer - BillboardPicturePointers) / 3 ; map billboard pictures start at the $29th entry in BillboardPicturePointers - callba LoadBillboardPicture - ld b, $20 ; number of frames to delay before the next map is shown -.waitOnCurrentMap - push bc - callba Func_eeee - ld hl, wKeyConfigBallStart - call IsKeyPressed - jr nz, .ballStartKeyPressed - pop bc - dec b - jr nz, .waitOnCurrentMap - jr .showNextMap - -.ballStartKeyPressed - pop bc - callba Func_30253 - ld bc, StartFromMapText - callba Func_3118f - ld a, [wCurrentMap] - ld [wd4e3], a - xor a - ld [wd4e2], a - ret - -BlueStageInitialMaps: ; 0x1c8af - db VIRIDIAN_CITY - db VIRIDIAN_FOREST - db MT_MOON - db CERULEAN_CITY - db VERMILION_STREETS - db ROCK_MOUNTAIN - db CELADON_CITY - -Func_1c8b6: ; 0x1c8b6 - ld a, [wd64c] - inc a - cp $3c - jr z, .asm_1c8c2 - ld [wd64c], a - ret - -.asm_1c8c2 - xor a - ld [wd64c], a - ld hl, wd64d - inc [hl] - ld a, [hl] - cp $5 - ret nz - ld a, [wd644] - and a - jr nz, .asm_1c8e1 - ld a, [wd643] - and a - jr nz, .asm_1c8e5 - ld a, [wRightAlleyCount] - cp $2 - jr nc, .asm_1c8e5 -.asm_1c8e1 - xor a - ld [wd64b], a -.asm_1c8e5 - ld a, [wd644] - and a - jr nz, .asm_1c8f8 - ld a, [wd643] - and a - jr nz, .asm_1c8fc - ld a, [wLeftAlleyCount] - cp $3 - jr z, .asm_1c8fc -.asm_1c8f8 - xor a - ld [wd64b], a -.asm_1c8fc - xor a - ld [wd64d], a - xor a - ld [wd64a], a - ld [wd649], a - ld [wd648], a - ld a, [wBlueStageForceFieldDirection] - cp $1 ; right direction - jr z, .asm_1c97f - cp $3 ; left direction - jr z, .asm_1c97f -.asm_1c915 - ld a, [wd644] - cp $0 - jr z, .asm_1c925 - ld a, [wd55a] - cp $0 - jr nz, .asm_1c933 - jr .asm_1c947 - -.asm_1c925 - ld a, [wd643] - cp $0 - jr nz, .asm_1c933 - ld a, [wRightAlleyCount] - cp $2 - jr c, .asm_1c947 -.asm_1c933 - ld a, [wd64b] - cp $1 - jr z, .asm_1c947 - ld a, $1 ; right direction - ld [wBlueStageForceFieldDirection], a - ld [wd64b], a - ld [wd640], a - jr .asm_1c99e - -.asm_1c947 - ld a, [wd644] - cp $0 - jr z, .asm_1c955 - ld a, [wd55a] - cp $0 - jr z, .asm_1c969 -.asm_1c955 - ld a, [wd643] - cp $0 - jr nz, .asm_1c969 - ld a, [wLeftAlleyCount] - cp $3 - jr nz, .asm_1c97f - ld a, [wInSpecialMode] - and a - jr nz, .asm_1c97f -.asm_1c969 - ld a, [wd64b] - cp $3 - jr z, .asm_1c915 - ld a, $3 ; left direction - ld [wBlueStageForceFieldDirection], a - ld [wd64b], a - ld a, $1 - ld [wd640], a - jr .asm_1c99e - -.asm_1c97f - ld a, [wd641] - and a - jr nz, .asm_1c993 - xor a - ld [wBlueStageForceFieldDirection], a - ld a, $1 - ld [wd640], a - ld [wd64a], a - jr .asm_1c99e - -.asm_1c993 - ld a, $2 ; down direction - ld [wBlueStageForceFieldDirection], a - ld a, $1 - ld [wd640], a - ret - -.asm_1c99e - ld a, [wBlueStageForceFieldDirection] - cp $0 ; up direction - jr nz, .asm_1c9ac - ld a, $1 - ld [wd64a], a - jr .asm_1c9c0 - -.asm_1c9ac - cp $1 - jr nz, .asm_1c9b7 - ld a, $1 - ld [wd649], a - jr .asm_1c9c0 - -.asm_1c9b7 - cp $3 - jr nz, .asm_1c9c0 - ld a, $1 - ld [wd648], a -.asm_1c9c0 - ret - -ResolveShellderCollision: ; 0x1c9c1 - ld a, [wWhichShellder] - and a - jr z, .noCollision - xor a - ld [wWhichShellder], a - call Func_1ca29 - ld a, [wd641] - and a - jr nz, .asm_1c9f2 - ld a, $1 - ld [wd641], a - ld a, [wBlueStageForceFieldDirection] - cp $0 ; up direction - jr nz, .asm_1c9f2 - ld a, $2 ; down direction - ld [wBlueStageForceFieldDirection], a - ld a, $1 - ld [wd640], a - ld a, $3 - ld [wd64c], a - ld [wd64d], a -.asm_1c9f2 - ld a, $10 - ld [wd4d6], a - ld a, [wWhichShellderId] - sub $3 - ld [wd4d7], a - ld a, $4 - callba Func_10000 - ld bc, FiveHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ret - -.noCollision - ld a, [wd4d6] - and a - ret z - dec a - ld [wd4d6], a - ret nz - ld a, $ff - ld [wd4d7], a - ret - -Func_1ca29: ; 0x1ca29 - ld a, $ff - ld [wd803], a - ld a, $3 - ld [wd804], a - ld hl, $0200 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - lb de, $00, $0e - call PlaySoundEffect - ret - -Func_1ca4a: ; 1ca4a - ld a, [wWildMonCollision] - and a - ret z - xor a - ld [wWildMonCollision], a - ld a, $1 - ld [wBallHitWildMon], a - lb de, $00, $06 - call PlaySoundEffect - ret - -ResolveBlueStageSpinnerCollision: ; 0x1ca5f - ld a, [wSpinnerCollision] - and a - jr z, Func_1ca85 - xor a - ld [wSpinnerCollision], a - ld a, [wBallYVelocity] - ld c, a - ld a, [wBallYVelocity + 1] - ld b, a - ld a, c - ld [wd50b], a - ld a, b - ld [wd50c], a - ld a, $c - callba Func_10000 - ; fall through - -Func_1ca85: ; 0x1ca85 - ld hl, wd50b - ld a, [hli] - or [hl] - ret z - ld a, [wd50b] - ld c, a - ld a, [wd50c] - ld b, a - bit 7, b - jr nz, .asm_1caa3 - ld a, c - sub $7 - ld c, a - ld a, b - sbc $0 - ld b, a - jr nc, .asm_1cab0 - jr .asm_1caad - -.asm_1caa3 - ld a, c - add $7 - ld c, a - ld a, b - adc $0 - ld b, a - jr nc, .asm_1cab0 -.asm_1caad - ld bc, $0000 -.asm_1cab0 - ld a, c - ld [wd50b], a - ld a, b - ld [wd50c], a - ld hl, wd50b - ld a, [wd509] - add [hl] - ld [wd509], a - inc hl - ld a, [wd50a] - adc [hl] - bit 7, a - ld c, $0 - jr z, .asm_1cad3 - add $18 - ld c, $1 - jr .asm_1cadb - -.asm_1cad3 - cp $18 - jr c, .asm_1cadb - sub $18 - ld c, $1 -.asm_1cadb - ld [wd50a], a - ld a, c - and a - ret z - ld bc, TenPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld hl, wd62d - call Func_e4a - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - jr nz, .asm_1caff - call Func_1cb1c - ret - -.asm_1caff - inc a - ld [wPikachuSaverCharge], a - call Func_1cb1c - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - jr nz, .asm_1cb12 - ld a, $64 - ld [wd51e], a -.asm_1cb12 - ld a, [wCurrentStage] - bit 0, a - ret nz - call Func_1cb43 - ret - -Func_1cb1c: ; 0x1cb1c - ld a, [wd51e] - and a - ret nz - ld a, [wPikachuSaverCharge] - ld c, a - ld b, $0 - ld hl, SoundEffectIds_1cb33 - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - call PlaySoundEffect - ret - -SoundEffectIds_1cb33: - db $12, $13, $14, $15, $16, $17, $18, $19, $1A, $1B, $1C, $1D, $1E, $1F, $20, $11 - -Func_1cb43: ; 0x1cb43 - ld a, [wPikachuSaverCharge] - ld c, a - sla c - ld b, $0 - ld hl, TileDataPointers_1cb60 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1cb56 - ld hl, TileDataPointers_1cd10 -.asm_1cb56 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_1cb60) - call Func_10aa - ret - -TileDataPointers_1cb60: - dw TileData_1cb80 - dw TileData_1cb85 - dw TileData_1cb8a - dw TileData_1cb8f - dw TileData_1cb94 - dw TileData_1cb99 - dw TileData_1cb9e - dw TileData_1cba3 - dw TileData_1cba8 - dw TileData_1cbad - dw TileData_1cbb2 - dw TileData_1cbb7 - dw TileData_1cbbc - dw TileData_1cbc1 - dw TileData_1cbc6 - dw TileData_1cbcb - -TileData_1cb80: ; 0x1cb80 - db $02 - dw TileData_1cbd0 - dw TileData_1cbda - -TileData_1cb85: ; 0x1cb85 - db $02 - dw TileData_1cbe4 - dw TileData_1cbee - -TileData_1cb8a: ; 0x1cb8a - db $02 - dw TileData_1cbf8 - dw TileData_1cc02 - -TileData_1cb8f: ; 0x1cb8f - db $02 - dw TileData_1cc0c - dw TileData_1cc16 - -TileData_1cb94: ; 0x1cb94 - db $02 - dw TileData_1cc20 - dw TileData_1cc2a - -TileData_1cb99: ; 0x1cb99 - db $02 - dw TileData_1cc34 - dw TileData_1cc3e - -TileData_1cb9e: ; 0x1cb9e - db $02 - dw TileData_1cc48 - dw TileData_1cc52 - -TileData_1cba3: ; 0x1cba3 - db $02 - dw TileData_1cc5c - dw TileData_1cc66 - -TileData_1cba8: ; 0x1cba8 - db $02 - dw TileData_1cc70 - dw TileData_1cc7a - -TileData_1cbad: ; 0x1cbad - db $02 - dw TileData_1cc84 - dw TileData_1cc8e - -TileData_1cbb2: ; 0x1cbb2 - db $02 - dw TileData_1cc98 - dw TileData_1cca2 - -TileData_1cbb7: ; 0x1cbb7 - db $02 - dw TileData_1ccac - dw TileData_1ccb6 - -TileData_1cbbc: ; 0x1cbbc - db $02 - dw TileData_1ccc0 - dw TileData_1ccca - -TileData_1cbc1: ; 0x1cbc1 - db $02 - dw TileData_1ccd4 - dw TileData_1ccde - -TileData_1cbc6: ; 0x1cbc6 - db $02 - dw TileData_1cce8 - dw TileData_1ccf2 - -TileData_1cbcb: ; 0x1cbcb - db $02 - dw TileData_1ccfc - dw TileData_1cd06 - -TileData_1cbd0: ; 0xcbd0 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageBlueFieldTopBaseGameBoyGfx + $c20 - db Bank(StageBlueFieldTopBaseGameBoyGfx) - db $00 ; terminator - -TileData_1cbda: ; 0xcbda - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageBlueFieldTopBaseGameBoyGfx + $c40 - db Bank(StageBlueFieldTopBaseGameBoyGfx) - db $00 ; terminator - -TileData_1cbe4: ; 0xcbe4 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1800 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cbee: ; 0xcbee - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1820 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cbf8: ; 0xcbf8 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1840 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc02: ; 0xcc02 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1860 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc0c: ; 0xcc0c - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1880 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc16: ; 0xcc16 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc20: ; 0xcc20 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc2a: ; 0xcc2a - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $18E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc34: ; 0xcc34 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1900 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc3e: ; 0xcc3e - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1920 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc48: ; 0xcc48 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1940 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc52: ; 0xcc52 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1960 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc5c: ; 0xcc5c - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1980 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc66: ; 0xcc66 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc70: ; 0xcc70 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc7a: ; 0xcc7a - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $19E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc84: ; 0xcc84 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc8e: ; 0xcc8e - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cc98: ; 0xcc98 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cca2: ; 0xcca2 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccac: ; 0xccac - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1A80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccb6: ; 0xccb6 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccc0: ; 0xccc0 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AC0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccca: ; 0xccca - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1AE0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccd4: ; 0xccd4 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccde: ; 0xccde - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cce8: ; 0xcce8 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccf2: ; 0xccf2 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1ccfc: ; 0xccfc - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6C - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1B80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileData_1cd06: ; 0xcd06 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $6E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 ; terminator - -TileDataPointers_1cd10: - dw TileData_1cd30 - dw TileData_1cd33 - dw TileData_1cd36 - dw TileData_1cd39 - dw TileData_1cd3c - dw TileData_1cd3f - dw TileData_1cd42 - dw TileData_1cd45 - dw TileData_1cd48 - dw TileData_1cd4b - dw TileData_1cd4e - dw TileData_1cd51 - dw TileData_1cd54 - dw TileData_1cd57 - dw TileData_1cd5a - dw TileData_1cd5d - -TileData_1cd30: ; 0x1cd30 - db $01 - dw TileData_1cd60 - -TileData_1cd33: ; 0x1cd33 - db $01 - dw TileData_1cd6e - -TileData_1cd36: ; 0x1cd36 - db $01 - dw TileData_1cd7c - -TileData_1cd39: ; 0x1cd39 - db $01 - dw TileData_1cd8a - -TileData_1cd3c: ; 0x1cd3c - db $01 - dw TileData_1cd98 - -TileData_1cd3f: ; 0x1cd3f - db $01 - dw TileData_1cda6 - -TileData_1cd42: ; 0x1cd42 - db $01 - dw TileData_1cdb4 - -TileData_1cd45: ; 0x1cd45 - db $01 - dw TileData_1cdc2 - -TileData_1cd48: ; 0x1cd48 - db $01 - dw TileData_1cdd0 - -TileData_1cd4b: ; 0x1cd4b - db $01 - dw TileData_1cdde - -TileData_1cd4e: ; 0x1cd4e - db $01 - dw TileData_1cdec - -TileData_1cd51: ; 0x1cd51 - db $01 - dw TileData_1cdfa - -TileData_1cd54: ; 0x1cd54 - db $01 - dw TileData_1ce08 - -TileData_1cd57: ; 0x1cd57 - db $01 - dw TileData_1ce16 - -TileData_1cd5a: ; 0x1cd5a - db $01 - dw TileData_1ce24 - -TileData_1cd5d: ; 0x1cd5d - db $01 - dw TileData_1ce32 - -TileData_1cd60: ; 0x1cd60 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $4A, $4B - - db $00 ; terminator - -TileData_1cd6e: ; 0x1cd6e - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $4C, $4D - - db $00 ; terminator - -TileData_1cd7c: ; 0x1cd7c - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $4E, $4F - - db $00 ; terminator - -TileData_1cd8a: ; 0x1cd8a - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $50, $51 - - db $00 ; terminator - -TileData_1cd98: ; 0x1cd98 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $52, $53 - - db $00 ; terminator - -TileData_1cda6: ; 0x1cda6 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $54, $55 - - db $00 ; terminator - -TileData_1cdb4: ; 0x1cdb4 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $56, $57 - - db $00 ; terminator - -TileData_1cdc2: ; 0x1cdc2 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1cdd0: ; 0x1cdd0 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $48, $49 - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1cdde: ; 0x1cdde - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $5C, $5D - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1cdec: ; 0x1cdec - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $5E, $5F - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1cdfa: ; 0x1cdfa - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $60, $61 - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1ce08: ; 0x1ce08 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $62, $63 - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1ce16: ; 0x1ce16 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $64, $65 - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1ce24: ; 0x1ce24 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $66, $67 - - db $02 ; number of tiles - dw vBGMap + $163 - db $58, $59 - - db $00 ; terminator - -TileData_1ce32: ; 0x1ce32 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $143 - db $68, $69 - - db $02 ; number of tiles - dw vBGMap + $163 - db $6A, $6B - - db $00 ; terminator - -Func_1ce40: ; 1ce40 - ld a, [wWhichBumper] - and a - jr z, .asm_1ce53 - call Func_1ce72 - call Func_1ce60 - xor a - ld [wWhichBumper], a - call Func_1ce94 -.asm_1ce53 - ld a, [wd4da] - and a - ret z - dec a - ld [wd4da], a - call z, Func_1ce72 - ret - -Func_1ce60: ; 0x1ce60 - ld a, $10 - ld [wd4da], a - ld a, [wWhichBumperId] - sub $1 - ld [wd4db], a - sla a - inc a - jr asm_1ce7a - -Func_1ce72: ; 1ce72 - ld a, [wd4db] - cp $ff - ret z - sla a -asm_1ce7a: ; 0x1ce7a - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1ceca - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1ce8a - ld hl, TileDataPointers_1cf3a -.asm_1ce8a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_1ceca) - call Func_10aa - ret - -Func_1ce94: ; 0x1ce94 - ld a, $ff - ld [wd803], a - ld a, $3 - ld [wd804], a - ld hl, $0200 - ld a, l - ld [wFlipperYForce], a - ld a, h - ld [wFlipperYForce + 1], a - ld a, $80 - ld [wFlipperCollision], a - ld a, [wWhichBumperId] - sub $1 - ld c, a - ld b, $0 - ld hl, Data_1cec8 - add hl, bc - ld a, [wCollisionForceAngle] - add [hl] - ld [wCollisionForceAngle], a - lb de, $00, $0b - call PlaySoundEffect - ret - -Data_1cec8: - db -8, 8 - -TileDataPointers_1ceca: - dw TileData_1ced2 - dw TileData_1ced5 - dw TileData_1ced8 - dw TileData_1cedb - -TileData_1ced2: ; 0x1ced2 - db $01 - dw TileData_1cede - -TileData_1ced5: ; 0x1ced5 - db $01 - dw TileData_1cef5 - -TileData_1ced8: ; 0x1ced8 - db $01 - dw TileData_1cf0c - -TileData_1cedb: ; 0x1cedb - db $01 - dw TileData_1cf23 - -TileData_1cede: ; 0x1cede - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $61 - - db $02 ; number of tiles - dw vBGMap + $144 - db $62, $63 - - db $02 ; number of tiles - dw vBGMap + $164 - db $64, $65 - - db $02 ; number of tiles - dw vBGMap + $185 - db $66, $67 - - db $00 ; number of tiles - -TileData_1cef5: ; 0x1cef5 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $68 - - db $02 ; number of tiles - dw vBGMap + $144 - db $69, $6A - - db $02 ; number of tiles - dw vBGMap + $164 - db $6B, $6C - - db $02 ; number of tiles - dw vBGMap + $185 - db $6D, $6E - - db $00 ; number of tiles - -TileData_1cf0c: ; 0x1cf0c - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $6F - - db $02 ; number of tiles - dw vBGMap + $14E - db $70, $71 - - db $02 ; number of tiles - dw vBGMap + $16E - db $72, $73 - - db $02 ; number of tiles - dw vBGMap + $18D - db $74, $75 - - db $00 ; number of tiles - -TileData_1cf23: ; 0x1cf23 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $76 - - db $02 ; number of tiles - dw vBGMap + $14E - db $77, $78 - - db $02 ; number of tiles - dw vBGMap + $16E - db $79, $7A - - db $02 ; number of tiles - dw vBGMap + $18D - db $7B, $7C - - db $00 ; number of tiles - -TileDataPointers_1cf3a: - dw TileData_1cf42 - dw TileData_1cf45 - dw TileData_1cf48 - dw TileData_1cf4b - -TileData_1cf42: ; 0x1cf42 - db $01 - dw TileData_1cf4e - -TileData_1cf45: ; 0x1cf45 - db $01 - dw TileData_1cf65 - -TileData_1cf48: ; 0x1cf48 - db $01 - dw TileData_1cf7c - -TileData_1cf4b: ; 0x1cf4b - db $01 - dw TileData_1cf93 - -TileData_1cf4e: ; 0x1cf4e - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $39 - - db $02 ; number of tiles - dw vBGMap + $144 - db $3A, $3B - - db $02 ; number of tiles - dw vBGMap + $164 - db $3C, $3D - - db $02 ; number of tiles - dw vBGMap + $185 - db $3E, $3F - - db $00 ; terminator - -TileData_1cf65: ; 0x1cf65 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $124 - db $40 - - db $02 ; number of tiles - dw vBGMap + $144 - db $41, $42 - - db $02 ; number of tiles - dw vBGMap + $164 - db $43, $44 - - db $02 ; number of tiles - dw vBGMap + $185 - db $45, $46 - - db $00 ; terminator - -TileData_1cf7c: ; 0x1cf7c - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $39 - - db $02 ; number of tiles - dw vBGMap + $14E - db $3B, $3A - - db $02 ; number of tiles - dw vBGMap + $16E - db $3D, $3C - - db $02 ; number of tiles - dw vBGMap + $18D - db $3F, $3E - - db $00 ; terminator - -TileData_1cf93: ; 0x1cf93 - dw LoadTileLists - db $07 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $12F - db $40 - - db $02 ; number of tiles - dw vBGMap + $14E - db $42, $41 - - db $02 ; number of tiles - dw vBGMap + $16E - db $44, $43 - - db $02 ; number of tiles - dw vBGMap + $18D - db $46, $45 - - db $00 ; terminator - -ResolveBlueStageBoardTriggerCollision: ; 0x1cfaa - ld a, [wWhichBoardTrigger] - and a - ret z - xor a - ld [wWhichBoardTrigger], a - ld bc, FivePoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wStageCollisionState] - cp $0 - jr nz, .asm_1cfe5 - ld a, $1 - ld [wStageCollisionState], a - callba LoadStageCollisionAttributes - ld a, $1 - ld [wd580], a - callba Func_1404a -.asm_1cfe5 - ld a, [wWhichBoardTriggerId] - sub $7 - ld c, a - ld b, $0 - ld hl, wd521 - add hl, bc - ld [hl], $1 - ld a, [wd521] - and a - call nz, Func_1d010 - ld a, [wd522] - and a - call nz, Func_1d047 - ld a, [wd523] - and a - call nz, HandleLeftAlleyTriggerBlueField - ld a, [wd524] - and a - call nz, HandleRightAlleyTriggerBlueField - ret - -Func_1d010: ; 0x1d010 - xor a - ld [wd521], a - ld a, [wLeftAlleyTrigger] - and a - ret z - xor a - ld [wLeftAlleyTrigger], a - ld a, $1 - callba Func_10000 - ret c - ld a, [wLeftAlleyCount] - cp $3 - ret z - inc a - ld [wLeftAlleyCount], a - cp $3 - jr z, .asm_1d03e - set 7, a - ld [wIndicatorStates], a - ret - -.asm_1d03e - ld [wIndicatorStates], a - ld a, $80 - ld [wIndicatorStates + 2], a - ret - -Func_1d047: ; 0x1d047 - xor a - ld [wd522], a - ld a, [wRightAlleyTrigger] - and a - ret z - xor a - ld [wRightAlleyTrigger], a - ld a, $2 - callba Func_10000 - ret c - ld a, [wRightAlleyCount] - cp $3 - ret z - inc a - ld [wRightAlleyCount], a - cp $3 - jr z, .asm_1d071 - set 7, a -.asm_1d071 - ld [wIndicatorStates + 1], a - ld a, [wRightAlleyCount] - cp $2 - ret c - ld a, $80 - ld [wIndicatorStates + 3], a - ret - -HandleLeftAlleyTriggerBlueField: ; 0x1d080 -; Ball passed over the left alley trigger point in the Blue Field. - xor a - ld [wd523], a - ld [wRightAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - ld a, $1 - ld [wLeftAlleyTrigger], a - ret c - ret - -HandleRightAlleyTriggerBlueField: ; 0x1d091 -; Ball passed over the right alley trigger point in the Blue Field. - xor a - ld [wd524], a - ld [wLeftAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - ld a, $1 - ld [wRightAlleyTrigger], a - ret - -ResolveBlueStagePikachuCollision: ; 0x1d0a1 - ld a, [wWhichPikachu] - and a - jr z, .asm_1d110 - xor a - ld [wWhichPikachu], a - ld a, [wd51c] - and a - jr nz, .asm_1d110 - ld a, [wPikachuSaverSlotRewardActive] - and a - jr nz, .asm_1d0c9 - ld a, [wWhichPikachuId] - sub $d - ld hl, wd518 - cp [hl] - jr nz, .asm_1d110 - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - jr nz, .asm_1d0fc -.asm_1d0c9 - ld hl, PikachuSaverAnimationDataRedStage - ld de, wPikachuSaverAnimationFrameCounter - call CopyHLToDE - ld a, [wPikachuSaverSlotRewardActive] - and a - jr nz, .asm_1d0dc - xor a - ld [wPikachuSaverCharge], a -.asm_1d0dc - ld a, $1 - ld [wd51c], a - xor a - ld [wBallXVelocity], a - ld [wBallXVelocity + 1], a - ld [wBallYVelocity], a - ld [wBallYVelocity + 1], a - ld [wBallSpin], a - ld [wBallRotation], a - ld [wd549], a - call FillBottomMessageBufferWithBlackTile - jr .asm_1d110 - -.asm_1d0fc - ld hl, PikachuSaverAnimation2DataRedStage - ld de, wPikachuSaverAnimationFrameCounter - call CopyHLToDE - ld a, $2 - ld [wd51c], a - lb de, $00, $3b - call PlaySoundEffect -.asm_1d110 - ld a, [wd51c] - and a - call z, Func_1d1fb - call Func_1d133 - ld a, [wPikachuSaverCharge] - cp MAX_PIKACHU_SAVER_CHARGE - ret nz - ld a, [wd51e] - and a - ret z - dec a - ld [wd51e], a - cp $5a - ret nz - lb de, $0f, $22 - call PlaySoundEffect - ret - -Func_1d133: ; 0x1d133 - ld a, [wd51c] - cp $1 - jr nz, .asm_1d1ae - ld hl, PikachuSaverAnimationDataRedStage - ld de, wPikachuSaverAnimationFrameCounter - call UpdateAnimation - ret nc - ld a, [wPikachuSaverAnimationFrameIndex] - cp $1 - jr nz, .asm_1d18c - xor a - ld [wd85d], a - call Func_310a - rst AdvanceFrame - ld a, $1 - callba PlayPikachuSoundClip - ld a, $1 - ld [wd85d], a - ld a, $ff - ld [wd803], a - ld a, $60 - ld [wd804], a - ld hl, wd62e - call Func_e4a - jr nc, .asm_1d185 - ld c, $a - call Func_e55 - callba z, Func_30164 -.asm_1d185 - lb de, $16, $10 - call PlaySoundEffect - ret - -.asm_1d18c - ld a, [wPikachuSaverAnimationFrameIndex] - cp $11 - ret nz - ld a, $fc - ld [wBallYVelocity + 1], a - ld a, $1 - ld [wd549], a - ld bc, FiveThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - xor a - ld [wd51c], a - ret - -.asm_1d1ae - cp $2 - jr nz, .asm_1d1c7 - ld hl, PikachuSaverAnimation2DataRedStage - ld de, wPikachuSaverAnimationFrameCounter - call UpdateAnimation - ret nc - ld a, [wPikachuSaverAnimationFrameIndex] - cp $1 - ret nz - xor a - ld [wd51c], a - ret - -.asm_1d1c7 - ld a, [hNumFramesDropped] - swap a - and $1 - ld [wPikachuSaverAnimationFrame], a - ret - -PikachuSaverAnimationDataRedStage: ; 0x1d1d1 -; Each entry is [duration][OAM id] - db $0C, $02 - db $05, $03 - db $05, $02 - db $05, $04 - db $05, $05 - db $05, $02 - db $06, $06 - db $06, $07 - db $06, $08 - db $06, $02 - db $06, $05 - db $06, $08 - db $06, $07 - db $06, $02 - db $06, $08 - db $06, $07 - db $06, $02 - db $01, $00 - db $00 - -PikachuSaverAnimation2DataRedStage: ; 0x1d1f6 -; Each entry is [duration][OAM id] - db $0C, $02 - db $01, $00 - db $00 - -Func_1d1fb: ; 0x1d1fb - ld hl, wKeyConfigLeftFlipper - call IsKeyPressed2 - jr z, .asm_1d209 - ld hl, wd518 - ld [hl], $0 - ret - -.asm_1d209 - ld hl, wKeyConfigRightFlipper - call IsKeyPressed2 - ret z - ld hl, wd518 - ld [hl], $1 - ret - -ResolveSlowpokeCollision: ; 0x1d216 - ld a, [wSlowpokeCollision] - and a - jr z, .asm_1d253 - xor a - ld [wSlowpokeCollision], a - ld bc, TenThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $05 - call PlaySoundEffect - ld hl, SlowpokeCollisionAnimationData ; 0x1d312 - ld de, wd632 - call CopyHLToDE - xor a - ld [wBallXVelocity], a - ld [wBallXVelocity + 1], a - ld [wBallYVelocity], a - ld [wBallYVelocity + 1], a - ld [wBallXPos], a - ld [wBallYPos], a - xor a - ld [wd549], a -.asm_1d253 - ld hl, SlowpokeCollisionAnimationData ; 0x1d312 - ld de, wd632 - call UpdateAnimation - push af - ld a, [wd632] - and a - jr nz, .asm_1d271 - ld a, $19 - ld [wd632], a - xor a - ld [wd633], a - ld a, $6 - ld [wd634], a -.asm_1d271 - pop af - ret nc - ld a, [wd634] - cp $1 - jr nz, .asm_1d2b6 - xor a - ld [wd548], a - ld a, [wLeftAlleyCount] - cp $3 - jr nz, .asm_1d299 - callba Func_10ab3 - ld a, [wd643] - and a - ret z - ld a, $1 - ld [wd642], a -.asm_1d299 - ld hl, wd63a - call Func_e4a - ld hl, wd62a - call Func_e4a - ret nc - ld c, $19 - call Func_e55 - callba z, Func_30164 - ret - -.asm_1d2b6 - ld a, [wd634] - cp $4 - jr nz, .asm_1d2c3 - ld a, $1 - ld [wd548], a - ret - -.asm_1d2c3 - ld a, [wd634] - cp $5 - ret nz - ld a, $1 - ld [wd549], a - ld a, $b0 - ld [wBallXVelocity], a - ld a, $0 - ld [wBallXVelocity + 1], a - xor a - ld [wBallYVelocity], a - ld [wBallYVelocity + 1], a - lb de, $00, $06 - call PlaySoundEffect - ld a, [wd642] - cp $0 - jr nz, .asm_1d2f8 - ld a, $f - callba Func_10000 -.asm_1d2f8 - xor a - ld [wd642], a - ld [wd64c], a - ld [wd64d], a - ld a, $1 - ld [wd641], a - ld a, $2 ; down direction - ld [wBlueStageForceFieldDirection], a - ld a, $1 - ld [wd640], a - ret - -SlowpokeCollisionAnimationData: ; 0x1d312 -; Each entry is [OAM id][duration] - db $08, $01 - db $06, $02 - db $06, $02 - db $08, $01 - db $01, $00 - db $29, $00 - db $28, $01 - db $2A, $00 - db $27, $01 - db $29, $00 - db $28, $01 - db $2B, $00 - db $28, $01 - db $00 - -ResolveCloysterCollision: ; 0x1d32d - ld a, [wCloysterCollision] - and a - jr z, .asm_1d36a - xor a - ld [wCloysterCollision], a - ld bc, TenThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $05 - call PlaySoundEffect - ld hl, CloysterCollisionAnimationData - ld de, wd637 - call CopyHLToDE - xor a - ld [wBallXVelocity], a - ld [wBallXVelocity + 1], a - ld [wBallYVelocity], a - ld [wBallYVelocity + 1], a - ld [wBallXPos], a - ld [wBallYPos], a - xor a - ld [wd549], a -.asm_1d36a - ld hl, CloysterCollisionAnimationData - ld de, wd637 - call UpdateAnimation - push af - ld a, [wd637] - and a - jr nz, .asm_1d388 - ld a, $19 - ld [wd637], a - xor a - ld [wd638], a - ld a, $6 - ld [wd639], a -.asm_1d388 - pop af - ret nc - ld a, [wd639] - cp $1 - jr nz, .asm_1d3cb - xor a - ld [wd548], a - ld a, [wRightAlleyCount] - cp $2 - jr c, .noCatchEmMode - ld a, $8 - jr nz, .asm_1d3a1 - xor a -.asm_1d3a1 - ld [wRareMonsFlag], a - callba StartCatchEmMode -.noCatchEmMode - ld hl, wd63b - call Func_e4a - ld hl, wd62a - call Func_e4a - ret nc - ld c, $19 - call Func_e55 - callba z, Func_30164 - ret - -.asm_1d3cb - ld a, [wd639] - cp $4 - jr nz, .asm_1d3d8 - ld a, $1 - ld [wd548], a - ret - -.asm_1d3d8 - ld a, [wd639] - cp $5 - ret nz - ld a, $1 - ld [wd549], a - ld a, $4f - ld [wBallXVelocity], a - ld a, $ff - ld [wBallXVelocity + 1], a - xor a - ld [wBallYVelocity], a - ld [wBallYVelocity + 1], a - lb de, $00, $06 - call PlaySoundEffect - ld a, $e - callba Func_10000 - xor a - ld [wd64c], a - ld [wd64d], a - ld a, $1 - ld [wd641], a - ld a, $2 ; down direction - ld [wBlueStageForceFieldDirection], a - ld a, $1 - ld [wd640], a - ret - -CloysterCollisionAnimationData: ; 0x1d41d -; Each entry is [OAM id][duration] - db $08, $01 - db $06, $02 - db $06, $02 - db $08, $01 - db $01, $00 - db $29, $00 - db $28, $01 - db $2A, $00 - db $27, $01 - db $29, $00 - db $28, $01 - db $2B, $00 - db $28, $01 - db 00 ; terminator - -ResolveBlueStageBonusMultiplierCollision: ; 0x1d438 - call Func_1d692 - ld a, [wWhichBonusMultiplierRailing] - and a - jp z, Func_1d51b - xor a - ld [wWhichBonusMultiplierRailing], a - lb de, $00, $0d - call PlaySoundEffect - ld a, [wWhichBonusMultiplierRailingId] - sub $f - jr nz, .asm_1d48e - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1d45c - ld a, $1f - jr .asm_1d45e - -.asm_1d45c - ld a, $29 -.asm_1d45e - call Func_1d5f2 - ld a, $3c - ld [wd647], a - ld a, $9 - callba Func_10000 - ld a, [wd610] - cp $3 - jp nz, asm_1d4fa - ld a, $1 - ld [wd610], a - ld a, $3 - ld [wd611], a - ld a, [wd60c] - set 7, a - ld [wd60c], a - jr asm_1d4fa - -.asm_1d48e - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1d497 - ld a, $21 - jr .asm_1d499 - -.asm_1d497 - ld a, $2b -.asm_1d499 - call Func_1d5f2 - ld a, $1e - ld [wd647], a - ld a, $a - callba Func_10000 - ld a, [wd611] - cp $3 - jr nz, asm_1d4fa - ld a, $1 - ld [wd610], a - ld a, $1 - ld [wd611], a - ld a, $80 - ld [wd612], a - ld a, [wd60d] - set 7, a - ld [wd60d], a - ld a, [wd482] - inc a - cp 100 - jr c, .asm_1d4d5 - ld a, 99 -.asm_1d4d5 - ld [wd482], a - jr nc, .asm_1d4e9 - ld c, $19 - call Func_e55 - callba z, Func_30164 -.asm_1d4e9 - ld a, [wd60c] - ld [wd614], a - ld a, [wd60d] - ld [wd615], a - ld a, $1 - ld [wd613], a -asm_1d4fa: ; 0x1d4fa - ld bc, TenPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wd60c] - call Func_1d5f2 - ld a, [wd60d] - add $14 - call Func_1d5f2 - ld a, $3c - ld [wd647], a - ret - -Func_1d51b: ; 0x1d51b - call Func_1d5bf - ld a, [wd612] - and a - jr z, .asm_1d559 - dec a - ld [wd612], a - cp $70 - jr nz, .asm_1d538 - ld a, $2 - ld [wd610], a - ld a, $2 - ld [wd611], a - jr .asm_1d559 - -.asm_1d538 - and a - jr nz, .asm_1d559 - ld a, $3 - ld [wd610], a - xor a - ld [wd611], a - ld a, [wd482] - call Func_1d65f - ld a, [wd60c] - call Func_1d5f2 - ld a, [wd60d] - add $14 - call Func_1d5f2 - ret - -.asm_1d559 - ld a, [wd610] - cp $2 - jr c, .asm_1d58b - cp $3 - ld a, [hNumFramesDropped] - jr c, .asm_1d56a - srl a - srl a -.asm_1d56a - ld b, a - and $3 - jr nz, .asm_1d58b - bit 3, b - jr nz, .asm_1d580 - ld a, [wd60c] - res 7, a - ld [wd60c], a - call Func_1d5f2 - jr .asm_1d58b - -.asm_1d580 - ld a, [wd60c] - set 7, a - ld [wd60c], a - call Func_1d5f2 -.asm_1d58b - ld a, [wd611] - cp $2 - ret c - cp $3 - ld a, [hNumFramesDropped] - jr c, .asm_1d59b - srl a - srl a -.asm_1d59b - ld b, a - and $3 - ret nz - bit 3, b - jr nz, .asm_1d5b1 - ld a, [wd60d] - res 7, a - ld [wd60d], a - add $14 - call Func_1d5f2 - ret - -.asm_1d5b1 - ld a, [wd60d] - set 7, a - ld [wd60d], a - add $14 - call Func_1d5f2 - ret - -Func_1d5bf: ; 0x1d5bf - ld a, [wd5ca] - and a - ret nz - ld a, [wd613] - and a - ret z - xor a - ld [wd613], a - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5cc - ld de, BonusMultiplierText - call LoadTextHeader - ld hl, wBottomMessageText + $12 - ld a, [wd614] - and $7f - jr z, .asm_1d5e9 - add $30 - ld [hli], a -.asm_1d5e9 - ld a, [wd615] - res 7, a - add $30 - ld [hl], a - ret - -Func_1d5f2: ; 0x1d5f2 - push af - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1d5fd - pop af - call Func_1d602 - ret - -.asm_1d5fd - pop af - call Func_1d645 - ret - -Func_1d602: ; 0x1d602 - push af - res 7, a - ld hl, wd60e - cp $14 - jr c, .asm_1d611 - ld hl, wd60f - sub $a -.asm_1d611 - cp [hl] - jr z, .asm_1d626 - ld [hl], a - ld c, a - ld b, $0 - sla c - ld hl, TileDataPointers_1d6be - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_1d6be) - call Func_10aa -.asm_1d626 - pop af - ld bc, $0000 - bit 7, a - jr z, .asm_1d632 - res 7, a - set 1, c -.asm_1d632 - cp $14 - jr c, .asm_1d638 - set 2, c -.asm_1d638 - ld hl, TileDataPointers_1d946 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_1d946) - call Func_10aa - ret - -Func_1d645: ; 0x1d645 - bit 7, a - jr z, .asm_1d64d - res 7, a - add $a -.asm_1d64d - ld c, a - ld b, $0 - sla c - ld hl, TileDataPointers_1d97a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_1d97a) - call Func_10aa - ret - -Func_1d65f: ; 0x1d65f - ld a, [wd482] - inc a - cp $64 - jr c, .asm_1d669 - ld a, $63 -.asm_1d669 - ld b, a - xor a - ld hl, Data_1d68b - ld c, $7 -.asm_1d670 - bit 0, b - jr z, .asm_1d676 - add [hl] - daa -.asm_1d676 - srl b - inc hl - dec c - jr nz, .asm_1d670 - push af - swap a - and $f - ld [wd60c], a - pop af - and $f - ld [wd60d], a - ret - -Data_1d68b: -; BCD powers of 2 - db $01, $02, $04, $08, $16, $32, $64 - -Func_1d692: ; 0x1d692 - ld a, [wd647] - cp $1 - jr z, .asm_1d69e - dec a - ld [wd647], a - ret - -.asm_1d69e - ld a, $0 - ld [wd647], a - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1d6b3 - ld a, $1e - call Func_1d5f2 - ld a, $20 - call Func_1d5f2 - ret - -.asm_1d6b3 - ld a, $2a - call Func_1d5f2 - ld a, $28 - call Func_1d5f2 - ret - -TileDataPointers_1d6be: - dw TileData_1d6ee - dw TileData_1d6f3 - dw TileData_1d6f8 - dw TileData_1d6fd - dw TileData_1d702 - dw TileData_1d707 - dw TileData_1d70c - dw TileData_1d711 - dw TileData_1d716 - dw TileData_1d71b - dw TileData_1d720 - dw TileData_1d725 - dw TileData_1d72a - dw TileData_1d72f - dw TileData_1d734 - dw TileData_1d739 - dw TileData_1d73e - dw TileData_1d743 - dw TileData_1d748 - dw TileData_1d74d - dw TileData_1d752 - dw TileData_1d757 - dw TileData_1d75c - dw TileData_1d761 - -TileData_1d6ee: ; 0x1d6ee - db $02 - dw TileData_1d766 - dw TileData_1d770 - -TileData_1d6f3: ; 0x1d6f3 - db $02 - dw TileData_1d77a - dw TileData_1d784 - -TileData_1d6f8: ; 0x1d6f8 - db $02 - dw TileData_1d78e - dw TileData_1d798 - -TileData_1d6fd: ; 0x1d6fd - db $02 - dw TileData_1d7a2 - dw TileData_1d7AC - -TileData_1d702: ; 0x1d702 - db $02 - dw TileData_1d7b6 - dw TileData_1d7C0 - -TileData_1d707: ; 0x1d707 - db $02 - dw TileData_1d7ca - dw TileData_1d7D4 - -TileData_1d70c: ; 0x1d70c - db $02 - dw TileData_1d7de - dw TileData_1d7E8 - -TileData_1d711: ; 0x1d711 - db $02 - dw TileData_1d7f2 - dw TileData_1d7FC - -TileData_1d716: ; 0x1d716 - db $02 - dw TileData_1d806 - dw TileData_1d810 - -TileData_1d71b: ; 0x1d71b - db $02 - dw TileData_1d81a - dw TileData_1d824 - -TileData_1d720: ; 0x1d720 - db $02 - dw TileData_1d82e - dw TileData_1d838 - -TileData_1d725: ; 0x1d725 - db $02 - dw TileData_1d842 - dw TileData_1d84C - -TileData_1d72a: ; 0x1d72a - db $02 - dw TileData_1d856 - dw TileData_1d860 - -TileData_1d72f: ; 0x1d72f - db $02 - dw TileData_1d86a - dw TileData_1d874 - -TileData_1d734: ; 0x1d734 - db $02 - dw TileData_1d87e - dw TileData_1d888 - -TileData_1d739: ; 0x1d739 - db $02 - dw TileData_1d892 - dw TileData_1d89C - -TileData_1d73e: ; 0x1d73e - db $02 - dw TileData_1d8a6 - dw TileData_1d8B0 - -TileData_1d743: ; 0x1d743 - db $02 - dw TileData_1d8ba - dw TileData_1d8C4 - -TileData_1d748: ; 0x1d748 - db $02 - dw TileData_1d8ce - dw TileData_1d8D8 - -TileData_1d74d: ; 0x1d74d - db $02 - dw TileData_1d8e2 - dw TileData_1d8EC - -TileData_1d752: ; 0x1d752 - db $02 - dw TileData_1d8f6 - dw TileData_1d900 - -TileData_1d757: ; 0x1d757 - db $02 - dw TileData_1d90a - dw TileData_1d914 - -TileData_1d75c: ; 0x1d75c - db $02 - dw TileData_1d91e - dw TileData_1d928 - -TileData_1d761: ; 0x1d761 - db $02 - dw TileData_1d932 - dw TileData_1d93C - -TileData_1d766: ; 0x1d766 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d770: ; 0x1d770 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cc0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d77a: ; 0x1d77a - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d70 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d784: ; 0x1d784 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cd0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d78e: ; 0x1d78e - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d798: ; 0x1d798 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ce0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7a2: ; 0x1d7a2 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d90 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7AC: ; 0x1d7AC - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1cf0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7b6: ; 0x1d7b6 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1da0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7C0: ; 0x1d7C0 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7ca: ; 0x1d7ca - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1db0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7D4: ; 0x1d7D4 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d10 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7de: ; 0x1d7de - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dc0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7E8: ; 0x1d7E8 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7f2: ; 0x1d7f2 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1dd0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d7FC: ; 0x1d7FC - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d30 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d806: ; 0x1d806 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1de0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d810: ; 0x1d810 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d81a: ; 0x1d81a - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $27 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1df0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d824: ; 0x1d824 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7D - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1d50 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d82e: ; 0x1d82e - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ea0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d838: ; 0x1d838 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d842: ; 0x1d842 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1eb0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d84C: ; 0x1d84C - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e10 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d856: ; 0x1d856 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ec0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d860: ; 0x1d860 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d86a: ; 0x1d86a - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ed0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d874: ; 0x1d874 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e30 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d87e: ; 0x1d87e - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ee0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d888: ; 0x1d888 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d892: ; 0x1d892 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1ef0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d89C: ; 0x1d89C - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e50 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8a6: ; 0x1d8a6 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8B0: ; 0x1d8B0 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8ba: ; 0x1d8ba - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f10 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8C4: ; 0x1d8C4 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e70 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8ce: ; 0x1d8ce - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8D8: ; 0x1d8D8 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8e2: ; 0x1d8e2 - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $28 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1f30 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8EC: ; 0x1d8EC - dw Func_11d2 - db $10, $01 - dw vTilesBG tile $7E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1e90 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1d8f6: ; 0x1d8f6 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $29 - dw StageBlueFieldBottomBaseGameBoyGfx + $A90 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1d900: ; 0x1d900 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $2C - dw StageBlueFieldBottomBaseGameBoyGfx + $AC0 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1d90a: ; 0x1d90a - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $29 - dw StageBlueFieldBottomBaseGameBoyGfx + $AE0 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1d914: ; 0x1d914 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $2C - dw StageBlueFieldBottomBaseGameBoyGfx + $B10 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1d91e: ; 0x1d91e - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $33 - dw StageBlueFieldBottomBaseGameBoyGfx + $B30 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1d928: ; 0x1d928 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $36 - dw StageBlueFieldBottomBaseGameBoyGfx + $B60 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1d932: ; 0x1d932 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $33 - dw StageBlueFieldBottomBaseGameBoyGfx + $B80 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1d93C: ; 0x1d93C - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $36 - dw StageBlueFieldBottomBaseGameBoyGfx + $BB0 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileDataPointers_1d946: - dw TileData_1d94e - dw TileData_1d951 - dw TileData_1d954 - dw TileData_1d957 - -TileData_1d94e: ; 0x1d94e - db $01 - dw TileData_1d95a - -TileData_1d951: ; 0x1d951 - db $01 - dw TileData_1d962 - -TileData_1d954: ; 0x1d954 - db $01 - dw TileData_1d96a - -TileData_1d957: ; 0x1d957 - db $01 - dw TileData_1d972 - -TileData_1d95a: ; 0x1d95a - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $27 - - db $00 ; terminator - -TileData_1d962: ; 0x1d962 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $7D - - db $00 ; terminator - -TileData_1d96a: ; 0x1d96a - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $28 - - db $00 ; terminator - -TileData_1d972: ; 0x1d972 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $7E - - db $00 ; terminator - -TileDataPointers_1d97a: - dw TileData_1d9d2 - dw TileData_1d9d5 - dw TileData_1d9d8 - dw TileData_1d9db - dw TileData_1d9de - dw TileData_1d9e1 - dw TileData_1d9e4 - dw TileData_1d9e7 - dw TileData_1d9ea - dw TileData_1d9ed - dw TileData_1d9f0 - dw TileData_1d9f3 - dw TileData_1d9f6 - dw TileData_1d9f9 - dw TileData_1d9fc - dw TileData_1d9ff - dw TileData_1da02 - dw TileData_1da05 - dw TileData_1da08 - dw TileData_1da0b - dw TileData_1da0e - dw TileData_1da11 - dw TileData_1da14 - dw TileData_1da17 - dw TileData_1da1a - dw TileData_1da1d - dw TileData_1da20 - dw TileData_1da23 - dw TileData_1da26 - dw TileData_1da29 - dw TileData_1da2c - dw TileData_1da2f - dw TileData_1da32 - dw TileData_1da35 - dw TileData_1da38 - dw TileData_1da3b - dw TileData_1da3e - dw TileData_1da41 - dw TileData_1da44 - dw TileData_1da47 - dw TileData_1da4a - dw TileData_1da4d - dw TileData_1da50 - dw TileData_1da53 - -TileData_1d9d2: ; 0x1d9d2 - db $01 - dw TileData_1da56 - -TileData_1d9d5: ; 0x1d9d5 - db $01 - dw TileData_1da5e - -TileData_1d9d8: ; 0x1d9d8 - db $01 - dw TileData_1da66 - -TileData_1d9db: ; 0x1d9db - db $01 - dw TileData_1da6e - -TileData_1d9de: ; 0x1d9de - db $01 - dw TileData_1da76 - -TileData_1d9e1: ; 0x1d9e1 - db $01 - dw TileData_1da7e - -TileData_1d9e4: ; 0x1d9e4 - db $01 - dw TileData_1da86 - -TileData_1d9e7: ; 0x1d9e7 - db $01 - dw TileData_1da8e - -TileData_1d9ea: ; 0x1d9ea - db $01 - dw TileData_1da96 - -TileData_1d9ed: ; 0x1d9ed - db $01 - dw TileData_1da9e - -TileData_1d9f0: ; 0x1d9f0 - db $01 - dw TileData_1daa6 - -TileData_1d9f3: ; 0x1d9f3 - db $01 - dw TileData_1daae - -TileData_1d9f6: ; 0x1d9f6 - db $01 - dw TileData_1dab6 - -TileData_1d9f9: ; 0x1d9f9 - db $01 - dw TileData_1dabe - -TileData_1d9fc: ; 0x1d9fc - db $01 - dw TileData_1dac6 - -TileData_1d9ff: ; 0x1d9ff - db $01 - dw TileData_1dace - -TileData_1da02: ; 0x1da02 - db $01 - dw TileData_1dad6 - -TileData_1da05: ; 0x1da05 - db $01 - dw TileData_1dade - -TileData_1da08: ; 0x1da08 - db $01 - dw TileData_1dae6 - -TileData_1da0b: ; 0x1da0b - db $01 - dw TileData_1daee - -TileData_1da0e: ; 0x1da0e - db $01 - dw TileData_1daf6 - -TileData_1da11: ; 0x1da11 - db $01 - dw TileData_1dafe - -TileData_1da14: ; 0x1da14 - db $01 - dw TileData_1db06 - -TileData_1da17: ; 0x1da17 - db $01 - dw TileData_1db0e - -TileData_1da1a: ; 0x1da1a - db $01 - dw TileData_1db16 - -TileData_1da1d: ; 0x1da1d - db $01 - dw TileData_1db1e - -TileData_1da20: ; 0x1da20 - db $01 - dw TileData_1db26 - -TileData_1da23: ; 0x1da23 - db $01 - dw TileData_1db2e - -TileData_1da26: ; 0x1da26 - db $01 - dw TileData_1db36 - -TileData_1da29: ; 0x1da29 - db $01 - dw TileData_1db3e - -TileData_1da2c: ; 0x1da2c - db $01 - dw TileData_1db46 - -TileData_1da2f: ; 0x1da2f - db $01 - dw TileData_1db4e - -TileData_1da32: ; 0x1da32 - db $01 - dw TileData_1db56 - -TileData_1da35: ; 0x1da35 - db $01 - dw TileData_1db5e - -TileData_1da38: ; 0x1da38 - db $01 - dw TileData_1db66 - -TileData_1da3b: ; 0x1da3b - db $01 - dw TileData_1db6e - -TileData_1da3e: ; 0x1da3e - db $01 - dw TileData_1db76 - -TileData_1da41: ; 0x1da41 - db $01 - dw TileData_1db7e - -TileData_1da44: ; 0x1da44 - db $01 - dw TileData_1db86 - -TileData_1da47: ; 0x1da47 - db $01 - dw TileData_1db8e - -TileData_1da4a: ; 0x1da4a - db $01 - dw TileData_1db96 - -TileData_1da4d: ; 0x1da4d - db $01 - dw TileData_1dba5 - -TileData_1da50: ; 0x1da50 - db $01 - dw TileData_1dbb4 - -TileData_1da53: ; 0x1da53 - db $01 - dw TileData_1dbc3 - -TileData_1da56: ; 0x1da56 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $62 - - db $00 ; terminator - -TileData_1da5e: ; 0x1da5e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $63 - - db $00 ; terminator - -TileData_1da66: ; 0x1da66 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $64 - - db $00 ; terminator - -TileData_1da6e: ; 0x1da6e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $65 - - db $00 ; terminator - -TileData_1da76: ; 0x1da76 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $66 - - db $00 ; terminator - -TileData_1da7e: ; 0x1da7e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $67 - - db $00 ; terminator - -TileData_1da86: ; 0x1da86 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $68 - - db $00 ; terminator - -TileData_1da8e: ; 0x1da8e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $69 - - db $00 ; terminator - -TileData_1da96: ; 0x1da96 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $6A - - db $00 ; terminator - -TileData_1da9e: ; 0x1da9e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $6B - - db $00 ; terminator - -TileData_1daa6: ; 0x1daa6 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $58 - - db $00 ; terminator - -TileData_1daae: ; 0x1daae - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $59 - - db $00 ; terminator - -TileData_1dab6: ; 0x1dab6 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $5A - - db $00 ; terminator - -TileData_1dabe: ; 0x1dabe - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $5B - - db $00 ; terminator - -TileData_1dac6: ; 0x1dac6 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $5C - - db $00 ; terminator - -TileData_1dace: ; 0x1dace - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $5D - - db $00 ; terminator - -TileData_1dad6: ; 0x1dad6 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $5E - - db $00 ; terminator - -TileData_1dade: ; 0x1dade - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $5F - - db $00 ; terminator - -TileData_1dae6: ; 0x1dae6 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $60 - - db $00 ; terminator - -TileData_1daee: ; 0x1daee - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $4 - db $61 - - db $00 ; terminator - -TileData_1daf6: ; 0x1daf6 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $76 - - db $00 ; terminator - -TileData_1dafe: ; 0x1dafe - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $77 - - db $00 ; terminator - -TileData_1db06: ; 0x1db06 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $78 - - db $00 ; terminator - -TileData_1db0e: ; 0x1db0e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $79 - - db $00 ; terminator - -TileData_1db16: ; 0x1db16 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $7A - - db $00 ; terminator - -TileData_1db1e: ; 0x1db1e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $7B - - db $00 ; terminator - -TileData_1db26: ; 0x1db26 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $7C - - db $00 ; terminator - -TileData_1db2e: ; 0x1db2e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $7D - - db $00 ; terminator - -TileData_1db36: ; 0x1db36 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $7E - - db $00 ; terminator - -TileData_1db3e: ; 0x1db3e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $7F - - db $00 ; terminator - -TileData_1db46: ; 0x1db46 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $6C - - db $00 ; terminator - -TileData_1db4e: ; 0x1db4e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $6D - - db $00 ; terminator - -TileData_1db56: ; 0x1db56 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $6E - - db $00 ; terminator - -TileData_1db5e: ; 0x1db5e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $6F - - db $00 ; terminator - -TileData_1db66: ; 0x1db66 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $70 - - db $00 ; terminator - -TileData_1db6e: ; 0x1db6e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $71 - - db $00 ; terminator - -TileData_1db76: ; 0x1db76 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $72 - - db $00 ; terminator - -TileData_1db7e: ; 0x1db7e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $73 - - db $00 ; terminator - -TileData_1db86: ; 0x1db86 - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $74 - - db $00 ; terminator - -TileData_1db8e: ; 0x1db8e - dw LoadTileLists - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $F - db $75 - - db $00 ; terminator - -TileData_1db96: ; 0x1db96 - dw LoadTileLists - db $05 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $24 - db $25, $26, $27 - - db $02 ; number of tiles - dw vBGMap + $44 - db $28, $29 - - db $00 ; terminator - -TileData_1dba5: ; 0x1dba5 - dw LoadTileLists - db $05 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $24 - db $2A, $2B, $2C - - db $02 ; number of tiles - dw vBGMap + $44 - db $2D, $2E - - db $00 ; terminator - -TileData_1dbb4: ; 0x1dbb4 - dw LoadTileLists - db $05 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $2D - db $27, $26, $2F - - db $02 ; number of tiles - dw vBGMap + $4E - db $29, $28 - - db $00 ; terminator - -TileData_1dbc3: ; 0x1dbc3 - dw LoadTileLists - db $05 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $2D - db $2C, $2B, $30 - - db $02 ; number of tiles - dw vBGMap + $4E - db $2E, $2D - - db $00 ; terminator - -ResolvePsyduckPoliwagCollision: ; 0x1dbd2 - ld a, [wWhichPsyduckPoliwag] - and a - jp z, Func_1dc8e - cp $2 - jr z, .asm_1dc33 - xor a - ld [wWhichPsyduckPoliwag], a - ld hl, wLeftMapMoveCounter - ld a, [hl] - cp $3 - jp z, Func_1dc8e - inc a - ld [hl], a - ld hl, wd4f7 - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wCurrentStage] - bit 0, a - jr z, .asm_1dc06 - ld a, $54 - ld [wc7e3], a - ld a, $55 - ld [wc803], a -.asm_1dc06 - ld a, $1 - call Func_1de4b - ld a, [wLeftMapMoveCounter] - call Func_1de6f - ld a, [wLeftMapMoveCounter] - cp $3 - ld a, $7 - callba Func_10000 - ld a, $2 - ld [wd646], a - ld a, $78 - ld [wLeftMapMoveDiglettAnimationCounter], a - ld a, $14 - ld [wLeftMapMoveDiglettFrame], a - jr .asm_1dc8a - -.asm_1dc33 - xor a - ld [wWhichPsyduckPoliwag], a - ld hl, wRightMapMoveCounter - ld a, [hl] - cp $3 - jp z, Func_1dc8e - inc a - ld [hl], a - ld hl, wd4f9 - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wCurrentStage] - bit 0, a - jr z, .asm_1dc5c - ld a, $52 - ld [wc7f0], a - ld a, $53 - ld [wc810], a -.asm_1dc5c - ld a, $3 - call Func_1de4b - ld a, [wRightMapMoveCounter] - cp $3 - ld a, $8 - callba Func_10000 - ld a, [wRightMapMoveCounter] - cp $3 - ccf - call z, Func_1ddf4 - ld a, $2 - ld [wd645], a - ld a, $28 - ld [wRightMapMoveDiglettAnimationCounter], a - ld a, $78 - ld [wRightMapMoveDiglettFrame], a -.asm_1dc8a - call Func_1de22 - ret - -Func_1dc8e: ; 0x1dc8e - call Func_1dc95 - call Func_1dd2e - ret - -Func_1dc95: ; 0x1dc95 - ld a, [wd646] - cp $0 - ret z - ld a, [wLeftMapMoveDiglettAnimationCounter] - and a - jr z, .asm_1dceb - dec a - ld [wLeftMapMoveDiglettAnimationCounter], a - ld a, [wd644] - and a - ret nz - ld a, [wLeftMapMoveDiglettFrame] - cp $1 - jr z, .asm_1dcb9 - cp $0 - ret z - dec a - ld [wLeftMapMoveDiglettFrame], a - ret - -.asm_1dcb9 - ld a, [wd646] - cp $2 - ret nz - call Func_1130 - ret nz - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1dcd7 - ld a, [wLeftMapMoveCounter] - cp $0 - jr z, .asm_1dcd4 - ld b, $7 - add b - jr .asm_1dcd9 - -.asm_1dcd4 - xor a - jr .asm_1dcd9 - -.asm_1dcd7 - ld a, $8 -.asm_1dcd9 - call Func_1de6f - ld a, [wLeftMapMoveCounter] - cp $3 - ccf - call z, Func_1ddc7 - ld a, $1 - ld [wd646], a - ret - -.asm_1dceb - ld a, [wd646] - cp $1 - ret nz - ld a, [wLeftMapMoveDiglettAnimationCounter] - and a - ret nz - ld a, $0 - call Func_1de4b - ld a, [wCurrentStage] - bit 0, a - jr z, .asm_1dd0c - ld a, $5e - ld [wc7e3], a - ld a, $5f - ld [wc803], a -.asm_1dd0c - ld a, $0 - ld [wd646], a - ld a, [wLeftMapMoveCounter] - sub $3 - ret nz - ld a, [wLeftMapMoveCounter] - sub $3 - ld [wLeftMapMoveCounter], a - call Func_1de6f - ld a, $0 - call Func_1de4b - ld a, $0 - ld [wd646], a - ret - -; XXX - ret - -Func_1dd2e: ; 0x1dd2e - ld a, [wd645] - cp $0 - ret z - cp $1 - jr z, .asm_1dd53 - cp $3 - jr z, .asm_1dd69 - ld a, [wRightMapMoveDiglettAnimationCounter] - cp $0 - jr z, .asm_1dd48 - dec a - ld [wRightMapMoveDiglettAnimationCounter], a - ret - -.asm_1dd48 - ld a, $2 - call Func_1de4b - ld a, $1 - ld [wd645], a - ret - -.asm_1dd53 - ld a, [wRightMapMoveCounter] - add $4 - call Func_1de6f - ld a, [wRightMapMoveCounter] - add $3 - call Func_1de4b - ld a, $3 - ld [wd645], a - ret - -.asm_1dd69 - ld a, [wRightMapMoveDiglettFrame] - and a - jr z, .asm_1dd74 - dec a - ld [wRightMapMoveDiglettFrame], a - ret - -.asm_1dd74 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1dd89 - ld a, [wRightMapMoveCounter] - cp $0 - jr z, .asm_1dd85 - ld b, $a - add b - jr .asm_1dd8b - -.asm_1dd85 - ld a, $4 - jr .asm_1dd8b - -.asm_1dd89 - ld a, $9 -.asm_1dd8b - call Func_1de6f - ld a, $2 - call Func_1de4b - ld a, [wCurrentStage] - bit 0, a - jr z, .asm_1dda9 - ld a, $24 - ld [wc7f0], a - ld a, $25 - ld [wc810], a - ld a, $0 - ld [wd645], a -.asm_1dda9 - ld a, [wRightMapMoveCounter] - sub $3 - ret nz - ld a, [wRightMapMoveCounter] - sub $3 - ld [wRightMapMoveCounter], a - ld a, $4 - call Func_1de6f - ld a, $2 - call Func_1de4b - ld a, $0 - ld [wd645], a - ret - -Func_1ddc7: ; 0x1ddc7 - ld hl, wd63d - call Func_e4a - ld hl, wd62b - call Func_e4a - jr nc, .asm_1dde4 - ld c, $a - call Func_e55 - callba z, Func_30164 -.asm_1dde4 - xor a - ld [wd55a], a - callba StartMapMoveMode - scf - ret - -Func_1ddf4: ; 0x1ddf4 - ld hl, wd63c - call Func_e4a - ld hl, wd62b - call Func_e4a - jr nc, .asm_1de11 - ld c, $a - call Func_e55 - callba z, Func_30164 -.asm_1de11 - ld a, $1 - ld [wd55a], a - callba StartMapMoveMode - scf - ret - -Func_1de22: ; 0x1de22 - ld a, [wCurrentStage] - bit 0, a - ret z - ld a, $55 - ld [wd803], a - ld a, $4 - ld [wd804], a - ld a, $2 - ld [wd7eb], a - ld bc, FiveHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $0f - call PlaySoundEffect - ret - -Func_1de4b: ; 0x1de4b - ld b, a - ld a, [wCurrentStage] - bit 0, a - ret z - ld a, b - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1df66 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1de63 - ld hl, TileDataPointers_1e00f -.asm_1de63 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_1df66) - call Func_10aa - ret - -Func_1de6f: ; 0x1de6f - ld b, a - ld a, [wCurrentStage] - bit 0, a - ret z - ld a, b - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1e0a4 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1de87 - ld hl, TileDataPointers_1e1d6 -.asm_1de87 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_1e0a4) - call Func_10aa - ret - -Func_1de93: ; 0x1de93 - ld hl, wd4f7 - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_1ded2 - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_1ded2 - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wLeftMapMoveCounter] - and a - jr z, .asm_1ded2 - cp $3 - jr z, .asm_1ded2 - dec a - ld [wLeftMapMoveCounter], a - call Func_1de6f - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1decd - ld a, [wLeftMapMoveCounter] - cp $0 - jr z, .asm_1deca - ld b, $7 - add b - jr .asm_1decf - -.asm_1deca - xor a - jr .asm_1decf - -.asm_1decd - ld a, $8 -.asm_1decf - call Func_1de6f -.asm_1ded2 - ld hl, wd4f9 - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_1df14 - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_1df14 - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wRightMapMoveCounter] - and a - jr z, .asm_1df14 - cp $3 - jr z, .asm_1df14 - dec a - ld [wRightMapMoveCounter], a - add $4 - call Func_1de6f - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1df0f - ld a, [wRightMapMoveCounter] - cp $0 - jr z, .asm_1df0b - ld b, $a - add b - jr .asm_1df11 - -.asm_1df0b - ld a, $4 - jr .asm_1df11 - -.asm_1df0f - ld a, $9 -.asm_1df11 - call Func_1de6f -.asm_1df14 - ret - -Func_1df15: ; 0x1df15 - ld b, $0 - ld hl, wd4f8 - ld a, [hld] - or [hl] - jr z, .asm_1df3e - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_1df3e - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_1df3e - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wLeftMapMoveCounter] - and a - jr z, .asm_1df3e - cp $3 - jr z, .asm_1df3e - dec a - ld [wLeftMapMoveCounter], a -.asm_1df3e - ld hl, wd4fa - ld a, [hld] - or [hl] - jr z, .asm_1df65 - dec [hl] - ld a, [hli] - cp $ff - jr nz, .asm_1df65 - dec [hl] - ld a, [hld] - cp $ff - jr nz, .asm_1df65 - ld a, $e0 - ld [hli], a - ld a, $1 - ld [hl], a - ld a, [wRightMapMoveCounter] - and a - jr z, .asm_1df65 - cp $3 - jr z, .asm_1df65 - dec a - ld [wRightMapMoveCounter], a -.asm_1df65 - ret - -TileDataPointers_1df66: - dw TileData_1df74 - dw TileData_1df77 - dw TileData_1df7a - dw TileData_1df7f - dw TileData_1df84 - dw TileData_1df89 - dw TileData_1df8e - -TileData_1df74: ; 0x1df74 - db $01 - dw TileData_1df93 - -TileData_1df77: ; 0x1df77 - db $01 - dw TileData_1df9f - -TileData_1df7a: ; 0x1df7a - db $02 - dw TileData_1dfab - dw TileData_1dfb5 - -TileData_1df7f: ; 0x1df7f - db $02 - dw TileData_1dfbf - dw TileData_1dfc9 - -TileData_1df84: ; 0x1df84 - db $02 - dw TileData_1dfd3 - dw TileData_1dfdd - -TileData_1df89: ; 0x1df89 - db $02 - dw TileData_1dfe7 - dw TileData_1dff1 - -TileData_1df8e: ; 0x1df8e - db $02 - dw TileData_1dffb - dw TileData_1e005 - -TileData_1df93: ; 0x1df93 - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $A3 - db $4A - - db $01 ; number of tiles - dw vBGMap + $C3 - db $4B - - db $00 ; terminator - -TileData_1df9f: ; 0x1df9f - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $A3 - db $4C - - db $01 ; number of tiles - dw vBGMap + $C3 - db $4D - - db $00 ; terminator - -TileData_1dfab: ; 0x1dfab - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4E - dw StageBlueFieldBottomBaseGameBoyGfx + $CE0 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1dfb5: ; 0x1dfb5 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $51 - dw StageBlueFieldBottomBaseGameBoyGfx + $D10 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1dfbf: ; 0x1dfbf - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4E - dw StageBlueFieldBottomBaseGameBoyGfx + $D30 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1dfc9: ; 0x1dfc9 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $51 - dw StageBlueFieldBottomBaseGameBoyGfx + $D60 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1dfd3: ; 0x1dfd3 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1dfdd: ; 0x1dfdd - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $51 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $20E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1dfe7: ; 0x1dfe7 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2100 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1dff1: ; 0x1dff1 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $51 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2130 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1dffb: ; 0x1dffb - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $4E - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2150 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e005: ; 0x1e005 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $51 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2180 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileDataPointers_1e00f: - dw TileData_1e01d - dw TileData_1e020 - dw TileData_1e023 - dw TileData_1e026 - dw TileData_1e029 - dw TileData_1e02c - dw TileData_1e02f - -TileData_1e01d: ; 0x1e01d - db $01 - dw TileData_1e032 - -TileData_1e020: ; 0x1e020 - db $01 - dw TileData_1e03e - -TileData_1e023: ; 0x1e023 - db $01 - dw TileData_1e04a - -TileData_1e026: ; 0x1e026 - db $01 - dw TileData_1e05c - -TileData_1e029: ; 0x1e029 - db $01 - dw TileData_1e06e - -TileData_1e02c: ; 0x1e02c - db $01 - dw TileData_1e080 - -TileData_1e02f: ; 0x1e02f - db $01 - dw TileData_1e092 - -TileData_1e032: ; 0x1e032 - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $A3 - db $35 - - db $01 ; number of tiles - dw vBGMap + $C3 - db $36 - - db $00 ; terminator - -TileData_1e03e: ; 0x1e03e - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $A3 - db $37 - - db $01 ; number of tiles - dw vBGMap + $C3 - db $38 - - db $00 ; terminator - -TileData_1e04a: ; 0x1e04a - dw LoadTileLists - db $05 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $90 - db $4F - - db $02 ; number of tiles - dw vBGMap + $AF - db $50, $51 - - db $02 ; number of tiles - dw vBGMap + $CF - db $52, $53 - - db $00 ; terminator - -TileData_1e05c: ; 0x1e05c - dw LoadTileLists - db $05 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $90 - db $54 - - db $02 ; number of tiles - dw vBGMap + $AF - db $55, $56 - - db $02 ; number of tiles - dw vBGMap + $CF - db $57, $58 - - db $00 ; terminator - -TileData_1e06e: ; 0x1e06e - dw LoadTileLists - db $05 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $90 - db $59 - - db $02 ; number of tiles - dw vBGMap + $AF - db $5A, $5B - - db $02 ; number of tiles - dw vBGMap + $CF - db $5C, $5D - - db $00 ; terminator - -TileData_1e080: ; 0x1e080 - dw LoadTileLists - db $05 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $90 - db $59 - - db $02 ; number of tiles - dw vBGMap + $AF - db $5A, $5E - - db $02 ; number of tiles - dw vBGMap + $CF - db $5C, $5F - - db $00 ; terminator - -TileData_1e092: ; 0x1e092 - dw LoadTileLists - db $05 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $90 - db $60 - - db $02 ; number of tiles - dw vBGMap + $AF - db $61, $62 - - db $02 ; number of tiles - dw vBGMap + $CF - db $63, $64 - - db $00 ; terminator - -TileDataPointers_1e0a4: - dw TileData_1e0b8 - dw TileData_1e0bf - dw TileData_1e0c6 - dw TileData_1e0cd - dw TileData_1e0d4 - dw TileData_1e0d9 - dw TileData_1e0de - dw TileData_1e0e3 - dw TileData_1e0e8 - dw TileData_1e0ed - -TileData_1e0b8: ; 0x1e0b8 - db $03 - dw TileData_1e0f0 - dw TileData_1e0fa - dw TileData_1e104 - -TileData_1e0bf: ; 0x1e0bf - db $03 - dw TileData_1e10e - dw TileData_1e118 - dw TileData_1e122 - -TileData_1e0c6: ; 0x1e0c6 - db $03 - dw TileData_1e12c - dw TileData_1e136 - dw TileData_1e140 - -TileData_1e0cd: ; 0x1e0cd - db $03 - dw TileData_1e14a - dw TileData_1e154 - dw TileData_1e15e - -TileData_1e0d4: ; 0x1e0d4 - db $02 - dw TileData_1e168 - dw TileData_1e172 - -TileData_1e0d9: ; 0x1e0d9 - db $02 - dw TileData_1e17c - dw TileData_1e186 - -TileData_1e0de: ; 0x1e0de - db $02 - dw TileData_1e190 - dw TileData_1e19a - -TileData_1e0e3: ; 0x1e0e3 - db $02 - dw TileData_1e1a4 - dw TileData_1e1ae - -TileData_1e0e8: ; 0x1e0e8 - db $02 - dw TileData_1e1b8 - dw TileData_1e1c2 - -TileData_1e0ed: ; 0x1e0ed - db $01 - dw TileData_1e1cc - -TileData_1e0f0: ; 0x1e0f0 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageBlueFieldBottomBaseGameBoyGfx + $C10 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e0fa: ; 0x1e0fa - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageBlueFieldBottomBaseGameBoyGfx + $C40 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e104: ; 0x1e104 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $47 - dw StageBlueFieldBottomBaseGameBoyGfx + $C70 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e10e: ; 0x1e10e - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FC0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e118: ; 0x1e118 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e122: ; 0x1e122 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e12c: ; 0x1e12c - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1FF0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e136: ; 0x1e136 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e140: ; 0x1e140 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e14a: ; 0x1e14a - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $41 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2020 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e154: ; 0x1e154 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2050 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e15e: ; 0x1e15e - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $47 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2080 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e168: ; 0x1e168 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $58 - dw StageBlueFieldBottomBaseGameBoyGfx + $D80 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e172: ; 0x1e172 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5A - dw StageBlueFieldBottomBaseGameBoyGfx + $DA0 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e17c: ; 0x1e17c - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $58 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e186: ; 0x1e186 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21E0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e190: ; 0x1e190 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $58 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21A0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e19a: ; 0x1e19a - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2210 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e1a4: ; 0x1e1a4 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $58 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $21C0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e1ae: ; 0x1e1ae - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $5A - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2240 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e1b8: ; 0x1e1b8 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $44 - dw StageBlueFieldBottomBaseGameBoyGfx + $C40 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e1c2: ; 0x1e1c2 - dw Func_11d2 - db $30, $03 - dw vTilesBG tile $47 - dw StageBlueFieldBottomBaseGameBoyGfx + $C70 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e1cc: ; 0x1e1cc - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $58 - dw StageBlueFieldBottomBaseGameBoyGfx + $D80 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileDataPointers_1e1d6: - dw TileData_1e1f2 - dw TileData_1e1f5 - dw TileData_1e1f8 - dw TileData_1e1fb - dw TileData_1e1fe - dw TileData_1e201 - dw TileData_1e204 - dw TileData_1e207 - dw TileData_1e20a - dw TileData_1e20d - dw TileData_1e210 - dw TileData_1e213 - dw TileData_1e216 - dw TileData_1e219 - -TileData_1e1f2: ; 0x1e1f2 - db $01 - dw TileData_1e21c - -TileData_1e1f5: ; 0x1e1f5 - db $01 - dw TileData_1e238 - -TileData_1e1f8: ; 0x1e1f8 - db $01 - dw TileData_1e254 - -TileData_1e1fb: ; 0x1e1fb - db $01 - dw TileData_1e270 - -TileData_1e1fe: ; 0x1e1fe - db $01 - dw TileData_1e28c - -TileData_1e201: ; 0x1e201 - db $01 - dw TileData_1e2a2 - -TileData_1e204: ; 0x1e204 - db $01 - dw TileData_1e2b8 - -TileData_1e207: ; 0x1e207 - db $01 - dw TileData_1e2ce - -TileData_1e20a: ; 0x1e20a - db $01 - dw TileData_1e2e4 - -TileData_1e20d: ; 0x1e20d - db $01 - dw TileData_1e2fa - -TileData_1e210: ; 0x1e210 - db $01 - dw TileData_1e310 - -TileData_1e213: ; 0x1e213 - db $01 - dw TileData_1e326 - -TileData_1e216: ; 0x1e216 - db $01 - dw TileData_1e336 - -TileData_1e219: ; 0x1e219 - db $01 - dw TileData_1e346 - -TileData_1e21c: ; 0x1e21c - dw LoadTileLists - db $0C ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $60 - db $36, $37, $38 - - db $03 ; number of tiles - dw vBGMap + $80 - db $39, $3A, $3B - - db $03 ; number of tiles - dw vBGMap + $A0 - db $4C, $4D, $4E - - db $03 ; number of tiles - dw vBGMap + $C0 - db $4F, $50, $51 - - db $00 ; terminator - -TileData_1e238: ; 0x1e238 - dw LoadTileLists - db $0C ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $60 - db $3C, $37, $38 - - db $03 ; number of tiles - dw vBGMap + $80 - db $3D, $3E, $3B - - db $03 ; number of tiles - dw vBGMap + $A0 - db $52, $53, $54 - - db $03 ; number of tiles - dw vBGMap + $C0 - db $55, $56, $57 - - db $00 ; terminator - -TileData_1e254: ; 0x1e254 - dw LoadTileLists - db $0C ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $60 - db $40, $41, $38 - - db $03 ; number of tiles - dw vBGMap + $80 - db $42, $43, $3B - - db $03 ; number of tiles - dw vBGMap + $A0 - db $52, $53, $54 - - db $03 ; number of tiles - dw vBGMap + $C0 - db $55, $56, $57 - - db $00 ; terminator - -TileData_1e270: ; 0x1e270 - dw LoadTileLists - db $0C ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $60 - db $36, $46, $47 - - db $03 ; number of tiles - dw vBGMap + $80 - db $48, $49, $4A - - db $03 ; number of tiles - dw vBGMap + $A0 - db $52, $53, $54 - - db $03 ; number of tiles - dw vBGMap + $C0 - db $55, $56, $57 - - db $00 ; terminator - -TileData_1e28c: ; 0x1e28c - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $91 - db $4D, $65, $4E - - db $03 ; number of tiles - dw vBGMap + $B1 - db $66, $67, $68 - - db $03 ; number of tiles - dw vBGMap + $D1 - db $69, $6A, $6B - - db $00 ; terminator - -TileData_1e2a2: ; 0x1e2a2 - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $91 - db $4D, $6C, $4E - - db $03 ; number of tiles - dw vBGMap + $B1 - db $6D, $6E, $68 - - db $03 ; number of tiles - dw vBGMap + $D1 - db $6F, $70, $6B - - db $00 ; terminator - -TileData_1e2b8: ; 0x1e2b8 - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $91 - db $4D, $6C, $4E - - db $03 ; number of tiles - dw vBGMap + $B1 - db $66, $72, $68 - - db $03 ; number of tiles - dw vBGMap + $D1 - db $69, $73, $6B - - db $00 ; terminator - -TileData_1e2ce: ; 0x1e2ce - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $91 - db $4D, $75, $4E - - db $03 ; number of tiles - dw vBGMap + $B1 - db $66, $76, $77 - - db $03 ; number of tiles - dw vBGMap + $D1 - db $69, $78, $79 - - db $00 ; terminator - -TileData_1e2e4: ; 0x1e2e4 - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $80 - db $3F, $3A, $3B - - db $03 ; number of tiles - dw vBGMap + $A0 - db $4C, $4D, $4E - - db $03 ; number of tiles - dw vBGMap + $C0 - db $4F, $50, $51 - - db $00 ; terminator - -TileData_1e2fa: ; 0x1e2fa - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $80 - db $44, $45, $3B - - db $03 ; number of tiles - dw vBGMap + $A0 - db $4C, $4D, $4E - - db $03 ; number of tiles - dw vBGMap + $C0 - db $4F, $50, $51 - - db $00 ; terminator - -TileData_1e310: ; 0x1e310 - dw LoadTileLists - db $09 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $80 - db $39, $4B, $4A - - db $03 ; number of tiles - dw vBGMap + $A0 - db $4C, $4D, $4E - - db $03 ; number of tiles - dw vBGMap + $C0 - db $4F, $50, $51 - - db $00 ; terminator - -TileData_1e326: ; 0x1e326 - dw LoadTileLists - db $06 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $91 - db $4D, $65, $4E - - db $03 ; number of tiles - dw vBGMap + $B1 - db $6D, $71, $68 - - db $00 ; terminator - -TileData_1e336: ; 0x1e336 - dw LoadTileLists - db $06 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $91 - db $4D, $65, $4E - - db $03 ; number of tiles - dw vBGMap + $B1 - db $66, $74, $68 - - db $00 ; terminator - -TileData_1e346: ; 0x1e346 - dw LoadTileLists - db $06 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap + $91 - db $4D, $65, $4E - - db $03 ; number of tiles - dw vBGMap + $B1 - db $66, $67, $77 - - db $00 ; terminator - -ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356 - ld a, [wWhichPinballUpgradeTrigger] - and a - jp z, Func_1e471 - xor a - ld [wWhichPinballUpgradeTrigger], a - ld a, [wStageCollisionState] - cp $0 - jr nz, .asm_1e386 - ld a, $1 - ld [wStageCollisionState], a - callba LoadStageCollisionAttributes - ld a, $1 - ld [wd580], a - callba Func_1404a -.asm_1e386 - ld a, [wStageCollisionState] - bit 0, a - jp z, Func_1e471 - ld a, [wd5fc] - and a - jp nz, Func_1e471 - xor a - ld [wRightAlleyTrigger], a - ld [wLeftAlleyTrigger], a - ld [wSecondaryLeftAlleyTrigger], a - ld a, $b - callba Func_10000 - ld a, [wWhichPinballUpgradeTriggerId] - sub $13 - ld c, a - ld b, $0 - ld hl, wd5f9 - add hl, bc - ld a, [hl] - ld [hl], $1 - and a - jr z, .asm_1e3bf - ld [hl], $0 -.asm_1e3bf - ld bc, OneHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld hl, wd5f9 - ld a, [hli] - and [hl] - inc hl - and [hl] - jr nz, .asm_1e3de - lb de, $00, $09 - call PlaySoundEffect - jp asm_1e475 - -.asm_1e3de - ld a, $1 - ld [wd5fc], a - ld a, $80 - ld [wd5fd], a - ; load approximately 1 minute of frames into wBallTypeCounter - ld a, $10 - ld [wBallTypeCounter], a - ld a, $e - ld [wBallTypeCounter + 1], a - ld bc, FourHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld a, [wBallType] - cp MASTER_BALL - jr z, .masterBall - lb de, $06, $3a - call PlaySoundEffect - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5cc - ld de, FieldMultiplierText - call LoadTextHeader - ld a, [wBallType] - ld c, a - ld b, $0 - ld hl, BallTypeProgression2BlueField - add hl, bc - ld a, [hl] - ld [wBallType], a - add $30 - ld [wBottomMessageText + $12], a - jr .asm_1e465 - -.masterBall - lb de, $0f, $4d - call PlaySoundEffect - ld bc, OneMillionPoints - callba AddBigBCD6FromQueue - ld bc, $0100 - ld de, $0000 - push bc - push de - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5d4 - ld de, DigitsText1to8 - call Func_32cc - pop de - pop bc - ld hl, wd5cc - ld de, FieldMultiplierSpecialBonusText - call LoadTextHeader -.asm_1e465 - callba TransitionPinballUpgrade - jr asm_1e475 - -Func_1e471: ; 0x1e471 - call Func_1e4b8 - ret z -asm_1e475: ; 0x1e475 - ld hl, wd5fb - ld b, $3 -.asm_1e47a - ld a, [hld] - push hl - call Func_1e484 - pop hl - dec b - jr nz, .asm_1e47a - ret - -Func_1e484: ; 0x1e484 - and a - jr z, .asm_1e496 - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1e491 - ld hl, TileDataPointers_1e520 - jr .asm_1e4a3 - -.asm_1e491 - ld hl, TileDataPointers_1e556 - jr .asm_1e4a3 - -.asm_1e496 - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1e4a0 - ld hl, TileDataPointers_1e526 - jr .asm_1e4a3 - -.asm_1e4a0 - ld hl, TileDataPointers_1e55c -.asm_1e4a3 - push bc - dec b - sla b - ld e, b - ld d, $0 - add hl, de - ld c, [hl] - inc hl - ld b, [hl] - ld a, $7 - ld de, LoadTileLists - call Func_10c5 - pop bc - ret - -Func_1e4b8: ; 0x1e4b8 - ld a, [wd5fc] - and a - jr z, .asm_1e4e5 - ld a, [wd5fd] - dec a - ld [wd5fd], a - jr nz, .asm_1e4ca - ld [wd5fc], a -.asm_1e4ca - and $7 - jr nz, .asm_1e4e3 - ld a, [wd5fd] - srl a - srl a - srl a - and $1 - ld hl, wd5f9 - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $1 - and a - ret - -.asm_1e4e3 - xor a - ret - -.asm_1e4e5 - ld hl, wKeyConfigLeftFlipper - call IsKeyPressed - jr z, .leftFlipperKeyIsPressed - ; left flipper key is pressed - ld hl, wd5f9 - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hl] - ld e, a - ld a, c - ld [hld], a - ld a, e - ld [hld], a - ld a, b - ld [hl], a - ret - -.leftFlipperKeyIsPressed - ld hl, wKeyConfigRightFlipper - call IsKeyPressed - ret z - ; right flipper key is pressed - ld hl, wd5f9 - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hl] - ld e, a - ld a, b - ld [hld], a - ld a, c - ld [hld], a - ld a, e - ld [hl], a - ret - -BallTypeProgression2BlueField: ; 0x1e514 -; Determines the next upgrade for the Ball. - db GREAT_BALL ; POKE_BALL -> GREAT_BALL - db GREAT_BALL ; unused - db ULTRA_BALL ; GREAT_BALL -> ULTRA_BALL - db MASTER_BALL ; ULTRA_BALL -> MASTER_BALL - db MASTER_BALL ; unused - db MASTER_BALL ; MASTER_BALL -> MASTER_BALL - -BallTypeDegradation2BlueField: ; 0x1e51a -; Determines the previous upgrade for the Ball. - db POKE_BALL ; POKE_BALL -> POKE_BALL - db POKE_BALL ; unused - db POKE_BALL ; GREAT_BALL -> POKE_BALL - db GREAT_BALL ; ULTRA_BALL -> GREAT_BALL - db ULTRA_BALL ; unused - db ULTRA_BALL ; MASTER_BALL -> GREAT_BALL - -TileDataPointers_1e520: - dw TileData_1e52c - dw TileData_1e533 - dw TileData_1e53a - -TileDataPointers_1e526: - dw TileData_1e541 - dw TileData_1e548 - dw TileData_1e54f - -TileData_1e52c: ; 0x1e52c - db $02, $02 - dw vBGMap + $86 - db $66, $67 - db $00 - -TileData_1e533: ; 0x1e533 - db $02, $02 - dw vBGMap + $69 - db $66, $67 - db $00 - -TileData_1e53a: ; 0x1e53a - db $02, $02 - dw vBGMap + $8C - db $66, $67 - db $00 - -TileData_1e541: ; 0x1e541 - db $02, $02 - dw vBGMap + $86 - db $64, $65 - db $00 - -TileData_1e548: ; 0x1e548 - db $02, $02 - dw vBGMap + $69 - db $64, $65 - db $00 - -TileData_1e54f: ; 0x1e54f - db $02, $02 - dw vBGMap + $8C - db $64, $65 - db $00 - -TileDataPointers_1e556: - dw TileData_1e562 - dw TileData_1e569 - dw TileData_1e570 - -TileDataPointers_1e55c: - dw TileData_1e577 - dw TileData_1e57e - dw TileData_1e585 - -TileData_1e562: ; 0x1e562 - db $02, $02 - dw vBGMap + $86 - db $43, $43 - db $00 - -TileData_1e569: ; 0x1e569 - db $02, $02 - dw vBGMap + $69 - db $43, $43 - db $00 - -TileData_1e570: ; 0x1e570 - db $02, $02 - dw vBGMap + $8C - db $43, $43 - db $00 - -TileData_1e577: ; 0x1e577 - db $02, $02 - dw vBGMap + $86 - db $42, $42 - db $00 - -TileData_1e57e: ; 0x1e57e - db $02, $02 - dw vBGMap + $69 - db $42, $42 - db $00 - -TileData_1e585: ; 0x1e585 - db $02, $02 - dw vBGMap + $8C - db $42, $42 - db $00 - -HandleBlueStageBallTypeUpgradeCounter: ; 0x1e58c - ld a, [wCapturingMon] - and a - ret nz - ; check if counter is at 0 - ld hl, wBallTypeCounter - ld a, [hli] - ld c, a - ld b, [hl] - or b - ret z - dec bc - ld a, b - ld [hld], a - ld [hl], c - or c - ret nz - ; counter is now 0! Degrade the ball upgrade. - ld a, [wBallType] - ld c, a - ld b, $0 - ld hl, BallTypeDegradation2BlueField - add hl, bc - ld a, [hl] - ld [wBallType], a - and a - jr z, .pokeball - ; load approximately 1 minute of frames into wBallTypeCounter - ld a, $10 - ld [wBallTypeCounter], a - ld a, $e - ld [wBallTypeCounter + 1], a -.pokeball - callba TransitionPinballUpgrade - ret - -Func_1e5c5: ; 0x1e5c5 - ld a, [wWhichCAVELight] - and a - jr z, .asm_1e623 - xor a - ld [wWhichCAVELight], a - ld a, [wd513] - and a - jr nz, .asm_1e623 - ld a, [wWhichCAVELightId] - sub $16 - ld c, a - ld b, $0 - ld hl, wd50f - add hl, bc - ld a, [hl] - ld [hl], $1 - and a - ret nz - ld bc, OneHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld hl, wd50f - ld a, [hli] - and [hl] - inc hl - and [hl] - inc hl - and [hl] - jr z, Func_1e627 - ld a, $1 - ld [wd513], a - ld a, $80 - ld [wd514], a - ld bc, FourHundredPoints - callba AddBigBCD6FromQueueWithBallMultiplier - lb de, $00, $09 - call PlaySoundEffect - ld hl, wd62c - call Func_e4a - jr Func_1e627 - -.asm_1e623 - call Func_1e66a - ret z - ; fall through - -Func_1e627: ; 0x1e627 - ld hl, wd512 - ld b, $4 -.asm_1e62c - ld a, [hld] - push hl - call Func_1e636 - pop hl - dec b - jr nz, .asm_1e62c - ret - -Func_1e636: ; 0x1e636 - and a - jr z, .asm_1e648 - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1e643 - ld hl, TileDataPointers_1e6d7 - jr .asm_1e655 - -.asm_1e643 - ld hl, TileDataPointers_1e717 - jr .asm_1e655 - -.asm_1e648 - ld a, [hGameBoyColorFlag] - and a - jr nz, .asm_1e652 - ld hl, TileDataPointers_1e6df - jr .asm_1e655 - -.asm_1e652 - ld hl, TileDataPointers_1e71f -.asm_1e655 - push bc - dec b - sla b - ld e, b - ld d, $0 - add hl, de - ld c, [hl] - inc hl - ld b, [hl] - ld a, $7 - ld de, LoadTileLists - call Func_10c5 - pop bc - ret - -Func_1e66a: ; 0x1e66a - ld a, [wd513] - and a - jr z, .asm_1e6a0 - ld a, [wd514] - dec a - ld [wd514], a - jr nz, .asm_1e687 - ld [wd513], a - ld a, $1 - ld [wd608], a - ld a, $3 - ld [wd607], a - xor a -.asm_1e687 - and $7 - ret nz - ld a, [wd514] - srl a - srl a - srl a - and $1 - ld hl, wd50f - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld a, $1 - and a - ret - -.asm_1e6a0 - ld hl, wKeyConfigLeftFlipper - call IsKeyPressed - jr z, .asm_1e6bc - ld hl, wd50f - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hl] - ld d, a - ld a, c - ld [hld], a - ld a, d - ld [hld], a - ld a, e - ld [hld], a - ld a, b - ld [hl], a - ret - -.asm_1e6bc - ld hl, wKeyConfigRightFlipper - call IsKeyPressed - ret z - ld hl, wd50f - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, [hli] - ld e, a - ld a, [hl] - ld d, a - ld a, e - ld [hld], a - ld a, b - ld [hld], a - ld a, c - ld [hld], a - ld a, d - ld [hl], a - ret - -TileDataPointers_1e6d7: - dw TileData_1e6e7 - dw TileData_1e6ed - dw TileData_1e6f3 - dw TileData_1e6f9 - -TileDataPointers_1e6df: - dw TileData_1e6ff - dw TileData_1e705 - dw TileData_1e70b - dw TileData_1e711 - -TileData_1e6e7: ; 0x1e6e7 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $5E - - db $00 ; terminator - -TileData_1e6ed: ; 0x1e6ed - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $5E - - db $00 ; terminator - -TileData_1e6f3: ; 0x1e6f3 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $60 - - db $00 ; terminator - -TileData_1e6f9: ; 0x1e6f9 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $60 - - db $00 ; terminator - -TileData_1e6ff: ; 0x1e6ff - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $5D - - db $00 ; terminator - -TileData_1e705: ; 0x1e705 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $5D - - db $00 ; terminator - -TileData_1e70b: ; 0x1e70b - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $5F - - db $00 ; terminator - -TileData_1e711: ; 0x1e711 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $5F - - db $00 ; terminator - -TileDataPointers_1e717: - dw TileData_1e727 - dw TileData_1e72d - dw TileData_1e733 - dw TileData_1e739 - -TileDataPointers_1e71f: - dw TileData_1e73f - dw TileData_1e745 - dw TileData_1e74b - dw TileData_1e751 - -TileData_1e727: ; 0x1e727 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $49 - - db $00 ; terminator - -TileData_1e72d: ; 0x1e72d - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $4A - - db $00 ; terminator - -TileData_1e733: ; 0x1e733 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $4B - - db $00 ; terminator - -TileData_1e739: ; 0x1e739 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $4C - - db $00 ; terminator - -TileData_1e73f: ; 0x1e73f - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $121 - db $47 - - db $00 ; terminator - -TileData_1e745: ; 0x1e745 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $123 - db $48 - - db $00 ; terminator - -TileData_1e74b: ; 0x1e74b - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $130 - db $7A - - db $00 ; terminator - -TileData_1e751: ; 0x1e751 - db $01 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $132 - db $7B - - db $00 ; terminator - -Func_1e757: ; 0x1e757 - ld a, [wSlotCollision] - and a - jr z, .asm_1e78c - xor a - ld [wSlotCollision], a - ld a, [wd604] - and a - ret z - ld a, [wd603] - and a - jr nz, .asm_1e78c - xor a - ld hl, wBallXVelocity - ld [hli], a - ld [hli], a - ld [hli], a - ld [hli], a - ld [wd549], a - ld [wBallXPos], a - ld [wBallYPos], a - ld a, $50 - ld [wBallXPos + 1], a - ld a, $16 - ld [wBallYPos + 1], a - ld a, $13 - ld [wd603], a -.asm_1e78c - ld a, [wd603] - and a - ret z - dec a - ld [wd603], a - ld a, $18 - ld [wd606], a - ld a, [wd603] - cp $12 - jr nz, .asm_1e7b2 - lb de, $00, $21 - call PlaySoundEffect - callba LoadMiniBallGfx - ret - -.asm_1e7b2 - cp $f - jr nz, .asm_1e7c1 - callba Func_dd62 - ret - -.asm_1e7c1 - cp $c - jr nz, .asm_1e7d0 - xor a - ld [wd548], a - ld [wBallSpin], a - ld [wBallRotation], a - ret - -.asm_1e7d0 - cp $9 - jr nz, .asm_1e7d8 - call Func_1e830 - ret - -.asm_1e7d8 - cp $6 - jr nz, .asm_1e7f5 - xor a - ld [wd604], a - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - callba LoadMiniBallGfx - ret - -.asm_1e7f5 - cp $3 - jr nz, .asm_1e80e - callba LoadBallGfx - ld a, $2 - ld [wBallYVelocity + 1], a - ld a, $80 - ld [wBallXVelocity], a - ret - -.asm_1e80e - and a - ret nz - call Func_1e8f6 - ld a, [wCatchEmOrEvolutionSlotRewardActive] - cp CATCHEM_MODE_SLOT_REWARD - ret nz - call GenRandom - and $8 - ld [wRareMonsFlag], a - callba StartCatchEmMode - xor a - ld [wCatchEmOrEvolutionSlotRewardActive], a - ret - -Func_1e830: ; 0x1e830 - xor a - ld [wIndicatorStates + 4], a - ld a, $d - callba Func_10000 - jr nc, .asm_1e84b - ld a, $1 - ld [wd548], a - ld [wd549], a - ret - -.asm_1e84b - ld a, [wd624] - cp $3 - jr nz, .asm_1e891 - ld a, [wd607] - and a - jr nz, .asm_1e891 -.asm_1e858 - ld a, [wBonusStageSlotRewardActive] - and a - jr nz, .asm_1e867 - xor a - ld [wd625], a - ld a, $40 - ld [wd626], a -.asm_1e867 - xor a - ld [wBonusStageSlotRewardActive], a - ld a, $1 - ld [wd495], a - ld [wd4ae], a - ld a, [wd498] - ld c, a - ld b, $0 - ld hl, GoToBonusStageTextIds_BlueField - add hl, bc - ld a, [hl] - ld [wd497], a - call Func_1e8c3 - xor a - ld [wd609], a - ld [wCatchEmOrEvolutionSlotRewardActive], a - ld a, $1e - ld [wd607], a - ret - -.asm_1e891 - callba Func_ed8e - xor a - ld [wd608], a - ld a, [wd61d] - cp $d - jr nc, .asm_1e858 - ld a, $1 - ld [wd548], a - ld [wd549], a - ld a, [wCatchEmOrEvolutionSlotRewardActive] - cp EVOLUTION_MODE_SLOT_REWARD - ret nz - callba Func_10ab3 - xor a - ld [wCatchEmOrEvolutionSlotRewardActive], a - ret - -Func_1e8c3: ; 0x1e8c3 - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5dc - ld a, [wd497] - ld de, GoToMeowthStageText - cp STAGE_MEOWTH_BONUS - jr z, .loadText - ld de, GoToSeelStageText - cp STAGE_SEEL_BONUS - jr z, .loadText - ld de, GoToMewtwoStageText -.loadText - call LoadTextHeader - ld de, $0000 - call PlaySong - rst AdvanceFrame - lb de, $3c, $23 - call PlaySoundEffect - ret - -GoToBonusStageTextIds_BlueField: - db STAGE_GENGAR_BONUS - db STAGE_MEWTWO_BONUS - db STAGE_MEOWTH_BONUS - db STAGE_DIGLETT_BONUS - db STAGE_SEEL_BONUS - -Func_1e8f6: ; 0x1e8f6 - ld a, [wCurrentStage] - and $1 - sla a - ld c, a - ld a, [wd604] - add c - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1e91e - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1e912 - ld hl, TileDataPointers_1e970 -.asm_1e912 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_1e91e) - call Func_10aa - ret - -TileDataPointers_1e91e: - dw TileData_1e926 - dw TileData_1e929 - dw TileData_1e92c - dw TileData_1e931 - -TileData_1e926: ; 0x1e926 - db $01 - dw TileData_1e936 - -TileData_1e929: ; 0x1e929 - db $01 - dw TileData_1e93f - -TileData_1e92c: ; 0x1e92c - db $02 - dw TileData_1e948 - dw TileData_1e952 - -TileData_1e931: ; 0x1e931 - db $02 - dw TileData_1e95c - dw TileData_1e966 - -TileData_1e936: ; 0x1e936 - dw LoadTileLists - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $229 - db $EE, $EF - - db $00 ; terminator - -TileData_1e93f: ; 0x1e93f - dw LoadTileLists - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $229 - db $F0, $F1 - - db $00 ; terminator - -TileData_1e948: ; 0x1e948 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1F - dw StageBlueFieldBottomBaseGameBoyGfx + $9F0 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e952: ; 0x1e952 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $21 - dw StageBlueFieldBottomBaseGameBoyGfx + $A10 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1e95c: ; 0x1e95c - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1F - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BC0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e966: ; 0x1e966 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $21 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1BE0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileDataPointers_1e970: - dw TileData_1e978 - dw TileData_1e97d - dw TileData_1e980 - dw TileData_1e983 - -TileData_1e978: ; 0x1e978 - db $02 - dw TileData_1e986 - dw TileData_1e98F - -TileData_1e97d: ; 0x1e97d - db $01 - dw TileData_1e99b - -TileData_1e980: ; 0x1e980 - db $01 - dw TileData_1e9a4 - -TileData_1e983: ; 0x1e983 - db $01 - dw TileData_1e9b2 - -TileData_1e986: ; 0x1e986 - dw LoadTileLists - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $229 - db $F0, $F1 - - db $00 ; terminator - -TileData_1e98F: ; 0x1e98F - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $224 - db $D8 - - db $01 ; number of tiles - dw vBGMap + $22f - db $EC - - db $00 ; terminator - -TileData_1e99b: ; 0x1e99b - dw LoadTileLists - db $02 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $229 - db $F2, $F3 - - db $00 ; terminator - -TileData_1e9a4: ; 0x1e9a4 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw $9809 - db $15, $16 - - db $02 ; terminator - dw vBGMap + $29 - db $17, $18 - - db $00 ; terminator - -TileData_1e9b2: ; 0x1e9b2 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $9 - db $19, $1A - - db $02 ; terminator - dw vBGMap + $29 - db $1B, $1C - - db $00 ; terminator - -Func_1e9c0: ; 0x1e9c0 - ld a, [wd607] - and a - ret z - dec a - ld [wd607], a - ret nz - ld a, [wInSpecialMode] - and a - ret nz - ld a, [wd609] - and a - jr z, .asm_1e9dc - ld a, [wd498] - add $15 - jr .asm_1e9e3 - -.asm_1e9dc - ld a, [wd608] - and a - ret z - ld a, $1a -.asm_1e9e3 - ld hl, wCurrentStage - bit 0, [hl] - callba nz, Func_30256 - ld a, [wd604] - and a - ret nz - ld a, $1 - ld [wd604], a - ld a, $80 - ld [wIndicatorStates + 4], a - ld a, [wCurrentStage] - bit 0, a - call nz, Func_1e8f6 - ret - -Func_1ea0a: ; 0x1ea0a - ld a, [wd604] - and a - ret z - ld a, [wBallYPos + 1] - sub $fe - cp $30 - ret nc - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, a - ld b, $0 - sla c - sla c - add hl, bc - jr asm_1ea6a - -Func_1ea3b: ; 0x1ea3b - ld a, [wd604] - and a - ret z - ld a, [wBallYPos + 1] - sub $86 - cp $30 - ret nc - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, a - ld b, $0 - sla c - sla c - add hl, bc - ; fall through - -asm_1ea6a: ; 0x1ea6a - ld bc, BallPhysicsData_f0000 - add hl, bc - ld de, wBallXVelocity - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - push bc - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_f0000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - bit 7, b - jr z, .asm_1eaa9 - ld a, c - cpl - ld c, a - ld a, b - cpl - ld b, a - inc bc -.asm_1eaa9 - pop hl - bit 7, h - jr z, .asm_1eab5 - ld a, l - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl -.asm_1eab5 - add hl, bc - sla l - rl h - ld a, h - cp $2 - ret c - ld a, [wd804] - and a - ret nz - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - lb de, $00, $04 - call PlaySoundEffect - ret - -Func_1ead4: ; 0x1ead4 - ld a, [hNumFramesDropped] - and $f - ret nz - ld bc, $0000 -.asm_1eadc - push bc - ld hl, wIndicatorStates - add hl, bc - ld a, [hl] - cp $1 - jr z, .asm_1eaf8 - bit 7, [hl] - jr z, .asm_1eaf8 - ld a, [hl] - res 7, a - ld hl, hNumFramesDropped - bit 4, [hl] - jr z, .asm_1eaf5 - inc a -.asm_1eaf5 - call Func_1eb41 -.asm_1eaf8 - pop bc - inc c - ld a, c - cp $2 - jr nz, .asm_1eadc - ld a, [hNumFramesDropped] - and $f - ret nz - ld a, [wCurrentStage] - bit 0, a - ret z - ld bc, $0002 -.asm_1eb0d - push bc - ld hl, wIndicatorStates - add hl, bc - ld a, [hl] - cp $1 - jr z, .asm_1eb29 - bit 7, [hl] - jr z, .asm_1eb29 - ld a, [hl] - res 7, a - ld hl, hNumFramesDropped - bit 4, [hl] - jr z, .asm_1eb2b - inc a - inc a - jr .asm_1eb2b - -.asm_1eb29 - ld a, $0 -.asm_1eb2b - push af - ld hl, wd648 - add hl, bc - dec hl - dec hl - ld a, [hl] - ld d, a - pop af - add d - call Func_1eb41 - pop bc - inc c - ld a, c - cp $5 - jr nz, .asm_1eb0d - ret - -Func_1eb41: ; 0x1eb41 - push af - sla c - ld hl, TileDataPointers_1eb61 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1eb4f - ld hl, TileDataPointers_1ed51 -.asm_1eb4f - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - pop af - sla a - ld c, a - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_1eb61) - call Func_10aa - ret - -TileDataPointers_1eb61: - dw TileDataPointers_1eb6b - dw TileDataPointers_1eb75 - dw TileDataPointers_1eb7f - dw TileDataPointers_1eb87 - dw TileDataPointers_1eb8f - -TileDataPointers_1eb6b: ; 0x1eb6b - dw TileData_1eb97 - dw TileData_1eb9a - dw TileData_1eb9d - dw TileData_1eba0 - dw TileData_1eba3 - -TileDataPointers_1eb75: ; 0x1eb75 - dw TileData_1eba6 - dw TileData_1eba9 - dw TileData_1ebac - dw TileData_1ebaf - dw TileData_1ebb2 - -TileDataPointers_1eb7f: ; 0x1eb7f - dw TileData_1ebb5 - dw TileData_1ebb8 - dw TileData_1ebbb - dw TileData_1ebbe - -TileDataPointers_1eb87: ; 0x1eb87 - dw TileData_1ebc1 - dw TileData_1ebc6 - dw TileData_1ebcb - dw TileData_1ebd0 - -TileDataPointers_1eb8f: ; 0x1eb8f - dw TileData_1ebd5 - dw TileData_1ebda - dw TileData_1ebdf - dw TileData_1ebe4 - -TileData_1eb97: ; 0x1eb97 - db $01 - dw TileData_1ebe9 - -TileData_1eb9a: ; 0x1eb9a - db $01 - dw TileData_1ebf9 - -TileData_1eb9d: ; 0x1eb9d - db $01 - dw TileData_1ec09 - -TileData_1eba0: ; 0x1eba0 - db $01 - dw TileData_1ec19 - -TileData_1eba3: ; 0x1eba3 - db $01 - dw TileData_1ec29 - -TileData_1eba6: ; 0x1eba6 - db $01 - dw TileData_1ec39 - -TileData_1eba9: ; 0x1eba9 - db $01 - dw TileData_1ec49 - -TileData_1ebac: ; 0x1ebac - db $01 - dw TileData_1ec59 - -TileData_1ebaf: ; 0x1ebaf - db $01 - dw TileData_1ec69 - -TileData_1ebb2: ; 0x1ebb2 - db $01 - dw TileData_1ec79 - -TileData_1ebb5: ; 0x1ebb5 - db $01 - dw TileData_1ec89 - -TileData_1ebb8: ; 0x1ebb8 - db $01 - dw TileData_1ec93 - -TileData_1ebbb: ; 0x1ebbb - db $01 - dw TileData_1ec9d - -TileData_1ebbe: ; 0x1ebbe - db $01 - dw TileData_1eca7 - -TileData_1ebc1: ; 0x1ebc1 - db $02 - dw TileData_1ecb1 - dw TileData_1ecbb - -TileData_1ebc6: ; 0x1ebc6 - db $02 - dw TileData_1ecc5 - dw TileData_1eccf - -TileData_1ebcb: ; 0x1ebcb - db $02 - dw TileData_1ecd9 - dw TileData_1ece3 - -TileData_1ebd0: ; 0x1ebd0 - db $02 - dw TileData_1eced - dw TileData_1ecf7 - -TileData_1ebd5: ; 0x1ebd5 - db $02 - dw TileData_1ed01 - dw TileData_1ed0b - -TileData_1ebda: ; 0x1ebda - db $02 - dw TileData_1ed15 - dw TileData_1ed1f - -TileData_1ebdf: ; 0x1ebdf - db $02 - dw TileData_1ed01 - dw TileData_1ed0b - -TileData_1ebe4: ; 0x1ebe4 - db $02 - dw TileData_1ed15 - dw TileData_1ed1f - -TileData_1ebe9: ; 0x1ebe9 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $3D - - db $01 ; number of tiles - dw vBGMap + $84 - db $17 - - db $01 ; number of tiles - dw vBGMap + $A5 - db $3D - - db $00 ; terminator - -TileData_1ebf9: ; 0x1ebf9 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $3E - - db $01 ; number of tiles - dw vBGMap + $84 - db $17 - - db $01 ; number of tiles - dw vBGMap + $A5 - db $3D - - db $00 ; terminator - -TileData_1ec09: ; 0x1ec09 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $3E - - db $01 ; number of tiles - dw vBGMap + $84 - db $18 - - db $01 ; number of tiles - dw vBGMap + $A5 - db $3D - - db $00 ; terminator - -TileData_1ec19: ; 0x1ec19 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $3E - - db $01 ; number of tiles - dw vBGMap + $84 - db $18 - - db $01 ; number of tiles - dw vBGMap + $A5 - db $3E - - db $00 ; terminator - -TileData_1ec29: ; 0x1ec29 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $3D - - db $01 ; number of tiles - dw vBGMap + $84 - db $18 - - db $01 ; number of tiles - dw vBGMap + $A5 - db $3D - - db $00 ; terminator - -TileData_1ec39: ; 0x1ec39 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $3F - - db $01 ; number of tiles - dw vBGMap + $8F - db $1D - - db $01 ; number of tiles - dw vBGMap + $AE - db $3F - - db $00 ; terminator - -TileData_1ec49: ; 0x1ec49 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $40 - - db $01 ; number of tiles - dw vBGMap + $8F - db $1D - - db $01 ; number of tiles - dw vBGMap + $AE - db $3F - - db $00 ; terminator - -TileData_1ec59: ; 0x1ec59 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $40 - - db $01 ; number of tiles - dw vBGMap + $8F - db $1E - - db $01 ; number of tiles - dw vBGMap + $AE - db $3F - - db $00 ; terminator - -TileData_1ec69: ; 0x1ec69 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $40 - - db $01 ; number of tiles - dw vBGMap + $8F - db $1E - - db $01 ; number of tiles - dw vBGMap + $AE - db $40 - - db $00 ; terminator - -TileData_1ec79: ; 0x1ec79 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $40 - - db $01 ; number of tiles - dw vBGMap + $8F - db $1D - - db $01 ; number of tiles - dw vBGMap + $AE - db $40 - - db $00 ; terminator - -TileData_1ec89: ; 0x1ec89 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $15 - dw StageBlueFieldBottomBaseGameBoyGfx + $950 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1ec93: ; 0x1ec93 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $15 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ec9d: ; 0x1ec9d - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $15 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1eca7: ; 0x1eca7 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $15 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1F80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ecb1: ; 0x1ecb1 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $19 - dw StageBlueFieldBottomBaseGameBoyGfx + $990 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1ecbb: ; 0x1ecbb - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1B - dw StageBlueFieldBottomBaseGameBoyGfx + $9B0 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1ecc5: ; 0x1ecc5 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $19 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2270 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1eccf: ; 0x1eccf - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1B - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2290 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ecd9: ; 0x1ecd9 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $19 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22B0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ece3: ; 0x1ece3 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1B - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22D0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1eced: ; 0x1eced - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $19 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $22F0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ecf7: ; 0x1ecf7 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $1B - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $2310 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ed01: ; 0x1ed01 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $23 - dw StageBlueFieldBottomBaseGameBoyGfx + $A30 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1ed0b: ; 0x1ed0b - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $25 - dw StageBlueFieldBottomBaseGameBoyGfx + $A50 - db Bank(StageBlueFieldBottomBaseGameBoyGfx) - db $00 - -TileData_1ed15: ; 0x1ed15 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $23 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C00 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ed1f: ; 0x1ed1f - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $25 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C20 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ed29: ; 0x1ed29 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $23 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C40 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ed33: ; 0x1ed33 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $25 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C60 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1e3d: ; 0x1e3d - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $23 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1C80 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileData_1ed47: ; 0x1ed47 - dw Func_11d2 - db $20, $02 - dw vTilesBG tile $25 - dw StageRedFieldBottomIndicatorsGfx_Gameboy + $1CA0 - db Bank(StageRedFieldBottomIndicatorsGfx_Gameboy) - db $00 - -TileDataPointers_1ed51: ; 0x1ed51 - dw TileDataPointers_1ed5b - dw TileDataPointers_1ed65 - dw TileDataPointers_1ed6f - dw TileDataPointers_1ed77 - dw TileDataPointers_1ed7f - -TileDataPointers_1ed5b: ; 0x1ed5b - dw TileData_1ed87 - dw TileData_1ed8a - dw TileData_1ed8d - dw TileData_1ed90 - dw TileData_1ed93 - -TileDataPointers_1ed65: ; 0x1ed65 - dw TileData_1ed96 - dw TileData_1ed99 - dw TileData_1ed9c - dw TileData_1ed9f - dw TileData_1eda2 - -TileDataPointers_1ed6f: ; 0x1ed6f - dw TileData_1eda5 - dw TileData_1eda8 - dw TileData_1edab - dw TileData_1edae - -TileDataPointers_1ed77: ; 0x1ed77 - dw TileData_1edb1 - dw TileData_1edb4 - dw TileData_1edb7 - dw TileData_1edba - -TileDataPointers_1ed7f: ; 0x1ed7f - dw TileData_1edbd - dw TileData_1edc0 - dw TileData_1edc3 - dw TileData_1edc6 - -TileData_1ed87: ; 0x1ed87 - db $01 - dw TileData_1edc9 - -TileData_1ed8a: ; 0x1ed8a - db $01 - dw TileData_1edd9 - -TileData_1ed8d: ; 0x1ed8d - db $01 - dw TileData_1ede9 - -TileData_1ed90: ; 0x1ed90 - db $01 - dw TileData_1edf9 - -TileData_1ed93: ; 0x1ed93 - db $01 - dw TileData_1ee09 - -TileData_1ed96: ; 0x1ed96 - db $01 - dw TileData_1ee19 - -TileData_1ed99: ; 0x1ed99 - db $01 - dw TileData_1ee29 - -TileData_1ed9c: ; 0x1ed9c - db $01 - dw TileData_1ee39 - -TileData_1ed9f: ; 0x1ed9f - db $01 - dw TileData_1ee49 - -TileData_1eda2: ; 0x1eda2 - db $01 - dw TileData_1ee59 - -TileData_1eda5: ; 0x1eda5 - db $01 - dw TileData_1ee69 - -TileData_1eda8: ; 0x1eda8 - db $01 - dw TileData_1ee75 - -TileData_1edab: ; 0x1edab - db $01 - dw TileData_1ee81 - -TileData_1edae: ; 0x1edae - db $01 - dw TileData_1ee8d - -TileData_1edb1: ; 0x1edb1 - db $01 - dw TileData_1ee99 - -TileData_1edb4: ; 0x1edb4 - db $01 - dw TileData_1eea7 - -TileData_1edb7: ; 0x1edb7 - db $01 - dw TileData_1eeb5 - -TileData_1edba: ; 0x1edba - db $01 - dw TileData_1eec3 - -TileData_1edbd: ; 0x1edbd - db $01 - dw TileData_1eed1 - -TileData_1edc0: ; 0x1edc0 - db $01 - dw TileData_1eedf - -TileData_1edc3: ; 0x1edc3 - db $01 - dw TileData_1eeed - -TileData_1edc6: ; 0x1edc6 - db $01 - dw TileData_1eefb - -TileData_1edc9: ; 0x1edc9 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $31 - - db $01 ; number of tiles - dw vBGMap + $84 - db $0D - - db $01 ; number of tiles - dw vBGMap + $A5 - db $7C - - db $00 ; terminator - -TileData_1edd9: ; 0x1edd9 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $32 - - db $01 ; number of tiles - dw vBGMap + $84 - db $0D - - db $01 ; number of tiles - dw vBGMap + $A5 - db $7C - - db $00 ; terminator - -TileData_1ede9: ; 0x1ede9 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $32 - - db $01 ; number of tiles - dw vBGMap + $84 - db $0E - - db $01 ; number of tiles - dw vBGMap + $A5 - db $7C - - db $00 ; terminator - -TileData_1edf9: ; 0x1edf9 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $32 - - db $01 ; number of tiles - dw vBGMap + $84 - db $0E - - db $01 ; number of tiles - dw vBGMap + $A5 - db $7D - - db $00 ; terminator - -TileData_1ee09: ; 0x1ee09 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $64 - db $31 - - db $01 ; number of tiles - dw vBGMap + $84 - db $0E - - db $01 ; number of tiles - dw vBGMap + $A5 - db $7C - - db $00 ; terminator - -TileData_1ee19: ; 0x1ee19 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $33 - - db $01 ; number of tiles - dw vBGMap + $8F - db $0F - - db $01 ; number of tiles - dw vBGMap + $AE - db $7E - - db $00 ; terminator - -TileData_1ee29: ; 0x1ee29 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $34 - - db $01 ; number of tiles - dw vBGMap + $8F - db $0F - - db $01 ; number of tiles - dw vBGMap + $AE - db $7E - - db $00 ; terminator - -TileData_1ee39: ; 0x1ee39 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $34 - - db $01 ; number of tiles - dw vBGMap + $8F - db $10 - - db $01 ; number of tiles - dw vBGMap + $AE - db $7E - - db $00 ; terminator - -TileData_1ee49: ; 0x1ee49 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $34 - - db $01 ; number of tiles - dw vBGMap + $8F - db $10 - - db $01 ; number of tiles - dw vBGMap + $AE - db $7F - - db $00 ; terminator - -TileData_1ee59: ; 0x1ee59 - dw LoadTileLists - db $03 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $6F - db $33 - - db $01 ; number of tiles - dw vBGMap + $8F - db $10 - - db $01 ; number of tiles - dw vBGMap + $AE - db $7E - - db $00 ; terminator - -TileData_1ee69: ; 0x1ee69 - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $48 - db $05 - - db $01 ; number of tiles - dw vBGMap + $68 - db $06 - - db $00 ; terminator - -TileData_1ee75: ; 0x1ee75 - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $48 - db $07 - - db $01 ; number of tiles - dw vBGMap + $68 - db $08 - - db $00 ; terminator - -TileData_1ee81: ; 0x1ee81 - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $48 - db $09 - - db $01 ; number of tiles - dw vBGMap + $68 - db $0A - - db $00 ; terminator - -TileData_1ee8d: ; 0x1ee8d - dw LoadTileLists - db $02 ; total number of tiles - - db $01 ; number of tiles - dw vBGMap + $48 - db $0B - - db $01 ; number of tiles - dw vBGMap + $68 - db $0C - - db $00 ; terminator - -TileData_1ee99: ; 0x1ee99 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $4B - db $26, $27 - - db $02 ; number of tiles - dw vBGMap + $6B - db $28, $29 - - db $00 ; terminator - -TileData_1eea7: ; 0x1eea7 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $4B - db $2A, $2B - - db $02 ; number of tiles - dw vBGMap + $6B - db $2C, $2D - - db $00 ; terminator - -TileData_1eeb5: ; 0x1eeb5 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $4B - db $2E, $2F - - db $02 ; number of tiles - dw vBGMap + $6B - db $30, $31 - - db $00 ; terminator - -TileData_1eec3: ; 0x1eec3 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $4B - db $32, $33 - - db $02 ; number of tiles - dw vBGMap + $6B - db $34, $35 - - db $00 ; terminator - -TileData_1eed1: ; 0x1eed1 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $49 - db $16, $17 - - db $02 ; number of tiles - dw vBGMap + $69 - db $18, $19 - - db $00 ; terminator - -TileData_1eedf: ; 0x1eedf - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $49 - db $1A, $1B - - db $02 ; number of tiles - dw vBGMap + $69 - db $1C, $1D - - db $00 ; terminator - -TileData_1eeed: ; 0x1eeed - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $49 - db $1E, $1F - - db $02 ; number of tiles - dw vBGMap + $69 - db $20, $21 - - db $00 ; terminator - -TileData_1eefb: ; 0x1eefb - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $49 - db $22, $23 - - db $02 ; number of tiles - dw vBGMap + $69 - db $24, $25 - - db $00 ; terminator - -ResolveBlueStageForceFieldCollision: ; 0x1ef09 - ld a, [wBlueStageForceFieldDirection] - cp $0 ; up direction - jp z, Func_1ef20 - cp $1 ; right direction - jp z, Func_1ef4d - cp $2 ; down direction - jp z, Func_1ef7e - cp $3 ; left direction - jp z, Func_1efae - ; fall through - ; default to upward forcefield - -Func_1ef20: ; 0x1ef20 - ld a, [wBallYPos + 1] - sub $60 - cp $30 - ret nc - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, a - ld b, $0 - sla c - sla c - add hl, bc - jp Func_1efdc - -Func_1ef4d: ; 0x1ef4d - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, a - ld a, $30 - sub c - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallYPos + 1] - sub $60 - cp $30 - ret nc - ld c, a - ld b, $0 - sla c - sla c - add hl, bc - jp Func_1efdc - -Func_1ef7e: ; 0x1ef7e - ld a, [wBallYPos + 1] - sub $60 - cp $30 - ret nc - ld c, a - ld a, $30 - sub c - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, a - ld b, $0 - sla c - sla c - add hl, bc - jr Func_1efdc - -Func_1efae: ; 0x1efae - ld a, [wBallXPos + 1] - sub $38 - cp $30 - ret nc - ld c, $0 - ld b, a - ld h, b - ld l, c - srl b - rr c - srl b - rr c - srl h - rr l - add hl, bc - ld a, [wBallYPos + 1] - sub $60 - cp $30 - ret nc - ld c, a - ld a, $30 - sub c - ld c, a - ld b, $0 - sla c - sla c - add hl, bc - ; fall through -Func_1efdc: ; 0x1efdc - ld a, [wBlueStageForceFieldDirection] - cp $0 ; up direction - jp z, Func_1eff3 - cp $1 ; right direction - jp z, Func_1f0be - cp $2 ; down direction - jp z, Func_1f057 - cp $3 ; left direction - jp z, Func_1f124 - ; fall through - ; default to upward forcefield - -Func_1eff3: ; 0x1eff3 - ld bc, BallPhysicsData_ec000 - add hl, bc - ld de, wBallXVelocity - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - push bc - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - bit 7, b - jr z, .asm_1f032 - ld a, c - cpl - ld c, a - ld a, b - cpl - ld b, a - inc bc -.asm_1f032 - pop hl - bit 7, h - jr z, .asm_1f03e - ld a, l - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl -.asm_1f03e - add hl, bc - sla l - rl h - ld a, h - cp $2 - ret c - ld a, [wd804] - and a - ret nz - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - ret - -Func_1f057: ; 0x1f057 - ld bc, BallPhysicsData_ec000 - add hl, bc - ld de, wBallXVelocity - bit 2, l - ret nz - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - push bc - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - sub c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - sbc b - ld [de], a - inc de - inc hl - bit 7, b - jr z, .asm_1f099 - ld a, c - cpl - ld c, a - ld a, b - cpl - ld b, a - inc bc -.asm_1f099 - pop hl - bit 7, h - jr z, .asm_1f0a5 - ld a, l - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl -.asm_1f0a5 - add hl, bc - sla l - rl h - ld a, h - cp $2 - ret c - ld a, [wd804] - and a - ret nz - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - ret - -Func_1f0be: ; 0x1f0be - ld bc, BallPhysicsData_ec000 - add hl, bc - ld de, wBallYVelocity - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc hl - push bc - dec de - dec de - dec de - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - sub c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - sbc b - ld [de], a - inc de - inc hl - bit 7, b - jr z, .asm_1f0ff - ld a, c - cpl - ld c, a - ld a, b - cpl - ld b, a - inc bc -.asm_1f0ff - pop hl - bit 7, h - jr z, .asm_1f10b - ld a, l - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl -.asm_1f10b - add hl, bc - sla l - rl h - ld a, h - cp $2 - ret c - ld a, [wd804] - and a - ret nz - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - ret - -Func_1f124: ; 0x1f124 - ld bc, BallPhysicsData_ec000 - add hl, bc - ld de, wBallYVelocity - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - sub c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - sbc b - ld [de], a - inc hl - push bc - dec de - dec de - dec de - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld c, a - ld a, [de] - add c - ld [de], a - inc de - inc hl - ld a, BANK(BallPhysicsData_ec000) - call ReadByteFromBank - ld b, a - ld a, [de] - adc b - ld [de], a - inc de - inc hl - bit 7, b - jr z, .asm_1f165 - ld a, c - cpl - ld c, a - ld a, b - cpl - ld b, a - inc bc -.asm_1f165 - pop hl - bit 7, h - jr z, .asm_1f171 - ld a, l - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl -.asm_1f171 - add hl, bc - sla l - rl h - ld a, h - cp $2 - ret c - ld a, [wd804] - and a - ret nz - ld a, $5 - ld [wd803], a - ld a, $8 - ld [wd804], a - ret - -Func_1f18a: ; 0x1f18a - ld a, [wd640] - cp $0 - jr z, .asm_1f1b4 - ld a, [wBlueStageForceFieldDirection] - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1f1b5 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_1f1a4 - ld hl, TileDataPointers_1f201 -.asm_1f1a4 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - or h - ret z - ld a, Bank(TileDataPointers_1f1b5) - call Func_10aa - ld a, $0 - ld [wd640], a -.asm_1f1b4 - ret - -TileDataPointers_1f1b5: - dw TileData_1f1bd - dw TileData_1f1c0 - dw TileData_1f1c3 - dw TileData_1f1c6 - -TileData_1f1bd: ; 0x1f1bd - db $01 - dw TileData_1f1c9 - -TileData_1f1c0: ; 0x1f1c0 - db $01 - dw TileData_1f1d7 - -TileData_1f1c3: ; 0x1f1c3 - db $01 - dw TileData_1f1e5 - -TileData_1f1c6: ; 0x1f1c6 - db $01 - dw TileData_1f1f3 - -TileData_1f1c9: ; 0x1f1c9 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $189 - db $70, $71 - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $72, $73 - - db $00 ; terminator - -TileData_1f1d7: ; 0x1f1d7 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $189 - db $74, $75 - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $76, $77 - - db $00 ; terminator - -TileData_1f1e5: ; 0x1f1e5 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $189 - db $78, $79 - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $7A, $7B - - db $00 ; terminator - -TileData_1f1f3: ; 0x1f1f3 - dw LoadTileLists - db $04 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $189 - db $7C, $7D - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $7E, $7F - - db $00 ; terminator - -TileDataPointers_1f201: - dw TileData_1f209 - dw TileData_1f20c - dw TileData_1f20f - dw TileData_1f212 - -TileData_1f209: ; 0x1f209 - db $01 - dw TileData_1f215 - -TileData_1f20c: ; 0x1f20c - db $01 - dw TileData_1f228 - -TileData_1f20f: ; 0x1f20f - db $01 - dw TileData_1f23b - -TileData_1f212: ; 0x1f212 - db $01 - dw TileData_1f24e - -TileData_1f215: ; 0x1f215 - dw LoadTileLists - db $06 ; total number of tiles - - db $02 ; number of otiles - dw vBGMap + $189 - db $6C, $6D - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $6E, $6F - - db $02 - dw vBGMap + $1c9 - db $70, $71 - - db $00 ; terminator - -TileData_1f228: ; 0x1f228 - dw LoadTileLists - db $06 ; total number of tiles - - db $02 ; number of otiles - dw vBGMap + $189 - db $72, $80 - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $73, $74 - - db $02 - dw vBGMap + $1c9 - db $75, $80 - - db $00 ; terminator - -TileData_1f23b: ; 0x1f23b - dw LoadTileLists - db $06 ; total number of tiles - - db $02 ; number of otiles - dw vBGMap + $189 - db $76, $77 - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $78, $79 - - db $02 - dw vBGMap + $1c9 - db $7A, $7B - - db $00 ; terminator - -TileData_1f24e: ; 0x1f24e - dw LoadTileLists - db $06 ; total number of tiles - - db $02 ; number of otiles - dw vBGMap + $189 - db $80, $7C - - db $02 ; number of tiles - dw vBGMap + $1a9 - db $7D, $7E - - db $02 - dw vBGMap + $1c9 - db $80, $7F - - db $00 ; terminator - -Func_1f261: ; 0x1f261 - call Func_1f27b - ret nc - ; fall through - -Func_1f265: ; 0x1f265 - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_1f2b9 - add hl, bc - ld a, [hli] - ld c, a - ld a, [hli] - ld b, a - ld a, $7 - ld de, LoadTileLists - call Func_10c5 - ret - -Func_1f27b: ; 0x1f27b - ld a, [wd624] - ld hl, wd625 - cp [hl] - ret z - ld a, [wd626] - dec a - ld [wd626], a - jr nz, .asm_1f2a5 - ld a, [wd625] - ld [wd624], a - cp $3 - jr c, .asm_1f2a0 - ld a, $1 - ld [wd609], a - ld a, $3 - ld [wd607], a -.asm_1f2a0 - ld a, [wd624] - scf - ret - -.asm_1f2a5 - and $7 - ret nz - ld a, [wd626] - bit 3, a - jr nz, .asm_1f2b4 - ld a, [wd624] - scf - ret - -.asm_1f2b4 - ld a, [wd625] - scf - ret - -TileDataPointers_1f2b9: - dw TileData_1f2c1 - dw TileData_1f2cc - dw TileData_1f2d7 - dw TileData_1f2e2 - -TileData_1f2c1: ; 0x1f2c1 - db $06 ; total number of tiles - - db $06 ; number of tiles - dw vBGMap + $107 - db $B0, $B1, $B0, $B1, $B0, $B1 - - db $00 ; terminator - -TileData_1f2cc: ; 0x1f2cc - db $06 ; total number of tiles - - db $06 ; number of tiles - dw vBGMap + $107 - db $AE, $AF, $B0, $B1, $B0, $B1 - - db $00 ; terminator - -TileData_1f2d7: ; 0x1f2d7 - db $06 ; total number of tiles - - db $06 ; number of tiles - dw vBGMap + $107 - db $AE, $AF, $AE, $AF, $B0, $B1 - - db $00 ; terminator - -TileData_1f2e2: ; 0x1f2e2 - db $06 ; total number of tiles - - db $06 ; number of tiles - dw vBGMap + $107 - db $AE, $AF, $AE, $AF, $AE, $AF - - db $00 ; terminator +INCLUDE "engine/pinball_game/object_collision/blue_stage_resolve_collision.asm" Func_1f2ed: ; 0x1f2ed xor a @@ -23925,6201 +4148,13 @@ Func_24405: ; 0x24405 and a ret -Func_2442a: ; 0x2442a - ld a, [wd710] - jr nz, .asm_2443f - ld a, [wMeowthStageBonusCounter] - dec a - dec a - cp $fe - jr z, .asm_24447 - cp $ff - jr z, .asm_24447 - ld [wd79a], a -.asm_2443f - ld de, wd79a - call Func_24f00 - jr .asm_2444b - -.asm_24447 - xor a - ld [wd79a], a -.asm_2444b - call Func_244f5 - call Func_245ab - call Func_248ac - call Func_24d07 - ld a, [wMeowthStageScore] - cp $14 - jr c, .asm_24498 - ld a, [wd712] - cp $2 - jr nc, .asm_24498 - ld a, [wd498] - cp $4 - ret z - ld a, $4 - ld [wd712], a - ld [wd498], a - ld a, $96 - ld [wd739], a - ld de, $0000 - call PlaySong - ld a, $1 - ld [wd49a], a - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5dc - ld de, MeowthStageClearedText - call LoadTextHeader - lb de, $4b, $2a - call PlaySoundEffect -.asm_24498 - ld a, [wd712] - cp $4 - jr nz, .asm_244b0 - ld a, [wSFXTimer] - and a - jr nz, .asm_244b0 - ld de, $0004 - call PlaySong - ld a, $5 - ld [wd712], a -.asm_244b0 - ld a, [wd712] - cp $4 - jr z, .asm_244c1 - callba Func_107f8 -.asm_244c1 - ld a, [wd57e] - and a - ret z - xor a - ld [wd57e], a - ld a, $1 - ld [wd7be], a - call Func_2862 - callba StopTimer - ld a, $1 - ld [wd713], a - ld a, $1 - ld [wd712], a - ld hl, MeowthAnimationData5 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $4 - ld [wd6ec], a - ret - -Func_244f5: ; 0x244f5 - ld a, [wd6e6] - and a - ret nz - ld a, [wd4b4] - cp $8a - ret nc - ld a, $1 - ld [wStageCollisionState], a - ld [wd6e6], a - callba LoadStageCollisionAttributes - call Func_24516 - ret - -Func_24516: ; 0x24516 - ld a, [wStageCollisionState] - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_24533 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_24529 - ld hl, TileDataPointers_2456f -.asm_24529 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_24533) - call Func_10aa - ret - -TileDataPointers_24533: ; 0x24533 - dw TileData_24537 - dw TileData_2453a - -TileData_24537: ; 0x24537 - db $01 - dw TileData_2453D - -TileData_2453a: ; 0x2453a - db $01 - dw TileData_24556 - -TileData_2453D: ; 0x2453D - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $01, $02 - - db $02 ; number of tiles - dw vBGMap + $133 - db $FF, $00 - - db $03 ; number of tiles - dw vBGMap + $152 - db $80, $FD, $FE - - db $02 ; number of tiles - dw vBGMap + $172 - db $F6, $FA - - db $00 ; terminator - -TileData_24556: ; 0x24556 - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $E9, $E5 - - db $02 ; number of tiles - dw vBGMap + $133 - db $E7, $E3 - - db $03 ; number of tiles - dw vBGMap + $152 - db $12, $13, $E4 - - db $02 ; number of tiles - dw vBGMap + $172 - db $10, $11 - - db $00 ; terminator - -TileDataPointers_2456f: ; 0x2456f - dw TileData_24573 - dw TileData_24576 - -TileData_24573: ; 0x - db $01 - dw TileData_24579 - -TileData_24576: ; 0x - db $01 - dw TileData_24592 - -TileData_24579: ; 0x24579 - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $F6, $F5 - - db $02 ; number of tiles - dw vBGMap + $133 - db $F4, $F3 - - db $03 ; number of tiles - dw vBGMap + $152 - db $80, $F1, $F2 - - db $02 ; number of tiles - dw vBGMap + $172 - db $EA, $EE - - db $00 ; terminator - -TileData_24592: ; 0x24592 - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $E5, $E3 - - db $02 ; number of tiles - dw vBGMap + $133 - db $E4, $E2 - - db $03 ; number of tiles - dw vBGMap + $152 - db $F0, $EF, $E3 - - db $02 ; number of tiles - dw vBGMap + $172 - db $ED, $EC - - db $00 ; terminator - -Func_245ab: ; 0x245ab - ld a, [wd6e7] - and a - jr z, .asm_24621 - cp $2 - jr z, .asm_24621 - ld a, $1 - ld [wd6f3], a - ld a, [wMeowthYPosition] - cp $20 - jr z, .asm_245c7 - cp $10 - jr z, .asm_245cc - jr .asm_245cf - -.asm_245c7 - call Func_247d9 - jr .asm_245cf - -.asm_245cc - call Func_24c28 -.asm_245cf - xor a - ld [wd6e7], a - ld [wd6f3], a - ld a, $ff - ld [wd803], a - ld a, $3 - ld [wd804], a - lb de, $00, $33 - call PlaySoundEffect - ld bc, OneThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - xor a - ld [wMeowthStageBonusCounter], a - ld a, [wd6ec] - cp $2 - jr nc, .asm_24621 - and a - jr nz, .asm_24611 - ld hl, MeowthAnimationData3 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $2 - ld [wd6ec], a - jr .asm_24651 - -.asm_24611 - ld hl, MeowthAnimationData4 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $3 - ld [wd6ec], a - jr .asm_24651 - -.asm_24621 - ld a, [wd713] - and a - jr z, .asm_2462e - ld a, $4 - ld [wd6ec], a - jr .asm_24651 - -.asm_2462e - ld a, [wd6ec] - cp $2 - jr nc, .asm_24651 - ld a, [wd70b] - cp $3 - jr nz, .asm_24651 - ld a, [wd70c] - cp $3 - jr nz, .asm_24651 - ld hl, MeowthAnimationData5 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $4 - ld [wd6ec], a -.asm_24651 - ld a, [wd6ec] - cp $2 - call c, Func_24709 - call Func_2465d - ret - -Func_2465d: ; 0x2465d - ld a, [wd6ec] - sla a - ld c, a - ld b, $0 - ld hl, MewothAnimationDataTable ; 0x246e2 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld de, wMeowthAnimationFrameCounter - call UpdateAnimation - ret nc - ld a, [wd6ec] - and a - jr nz, .asm_24689 - ld a, [wMeowthAnimationFrameIndex] - cp $4 - ret nz - ld hl, MeowthAnimationData1 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ret - -.asm_24689 - cp $1 - jr nz, .asm_2469d - ld a, [wMeowthAnimationFrameIndex] - cp $4 - ret nz - ld hl, MeowthAnimationData2 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ret - -.asm_2469d - cp $2 - jr nz, .asm_246b5 - ld a, [wMeowthAnimationFrameIndex] - cp $1 - ret nz - ld hl, MeowthAnimationData1 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - xor a - ld [wd6ec], a - ret - -.asm_246b5 - cp $3 - jr nz, .asm_246ce - ld a, [wMeowthAnimationFrameIndex] - cp $1 - ret nz - ld hl, MeowthAnimationData2 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $1 - ld [wd6ec], a - ret - -.asm_246ce - cp $4 - jr nz, .asm_24689 - ld a, [wMeowthAnimationFrameIndex] - cp $2 - ret nz - ld hl, MeowthAnimationData5 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ret - -MewothAnimationDataTable: ; 0x246e2 - dw MeowthAnimationData1 - dw MeowthAnimationData2 - dw MeowthAnimationData3 - dw MeowthAnimationData4 - dw MeowthAnimationData5 - -MeowthAnimationData1: ; 0x246ec -; Each entry is [OAM id][duration] - db $10, $00 - db $0B, $01 - db $10, $02 - db $0C, $01 - db $00 ; terminator - -MeowthAnimationData2: ; 0x246f5 -; Each entry is [OAM id][duration] - db $10, $04 - db $0B, $05 - db $10, $06 - db $0C, $05 - db $00 ; terminator - -MeowthAnimationData3: ; 0x246fe -; Each entry is [OAM id][duration] - db $16, $03 - db $00 ; terminator - -MeowthAnimationData4: ; 0x24701 -; Each entry is [OAM id][duration] - db $16, $07 - db $00 ; terminator - -MeowthAnimationData5: ; 0x24704 - db $17, $08 - db $17, $09 - db $00 ; terminator - -Func_24709: ; 0x24709 - ld a, [wMeowthXPosition] - ld hl, wMeowthXMovement - add [hl] - ld [wMeowthXPosition], a - ld hl, wMeowthYMovement - ld a, [hl] - and a - jr z, .asm_24730 - bit 7, [hl] - ld a, [wMeowthYPosition] - jr nz, .asm_24724 - inc a - jr .asm_24725 - -.asm_24724 - dec a -.asm_24725 - cp $21 - jr z, .asm_24730 - cp $f - jr z, .asm_24730 - ld [wMeowthYPosition], a -.asm_24730 - call Func_24737 - call Func_2476d - ret - -Func_24737: ; 0x24737 - ld a, [wMeowthXPosition] - cp $8 - jr nc, .asm_24742 - ld a, $1 - jr .asm_2475a - -.asm_24742 - cp $78 - jr c, .asm_2474a - ld a, $ff - jr .asm_2475a - -.asm_2474a - ld a, [hNumFramesDropped] - and $3f - ret nz - call GenRandom - bit 7, a - ld a, $1 - jr z, .asm_2475a - ld a, $ff -.asm_2475a - ld [wMeowthXMovement], a - bit 7, a - ld a, $1 - jr z, .asm_24764 - xor a -.asm_24764 - ld [wd6ec], a - ld a, $2 - ld [wMeowthAnimationFrameCounter], a - ret - -Func_2476d: ; 0x2476d - ld a, [wMeowthYMovement] - and a - jr z, .asm_247ab - cp $1 - jr z, .asm_24791 - ld a, [wMeowthYPosition] - cp $10 - jr nz, .asm_2478d - ld a, [wd6e7] - cp $2 - jr nz, .asm_2478a - ld a, $1 - ld [wd6e7], a -.asm_2478a - xor a - jr .asm_247c9 - -.asm_2478d - ld a, $ff - jr .asm_247c9 - -.asm_24791 - ld a, [wMeowthYPosition] - cp $20 - jr nz, .asm_247a7 - ld a, [wd6e7] - cp $2 - jr nz, .asm_247a4 - ld a, $1 - ld [wd6e7], a -.asm_247a4 - xor a - jr .asm_247c9 - -.asm_247a7 - ld a, $1 - jr .asm_247c9 - -.asm_247ab - ld a, [wd70b] - cp $3 - jr z, .asm_247cd - ld a, [wd70c] - cp $3 - jr z, .asm_247d3 - ld a, [hNumFramesDropped] - and $3f - ret nz - call GenRandom - bit 0, a - ld a, $1 - jr z, .asm_247c9 - ld a, $ff -.asm_247c9 - ld [wMeowthYMovement], a - ret - -.asm_247cd - ld a, $ff - ld [wMeowthYMovement], a - ret - -.asm_247d3 - ld a, $1 - ld [wMeowthYMovement], a - ret - -Func_247d9: ; 0x247d9 - ld a, [wd6f3] - and a - ret z - ld a, [wd71a] - cp $c8 - jr nz, .asm_24823 - ld a, [wMeowthXPosition] - add $8 - ld [wd71a], a - ld a, [wMeowthYPosition] - add $fb - ld [wd727], a - ld a, $1 - ld [wd717], a - xor a - ld [wd6f3], a - ld [wd714], a - ld [wd6f5], a - ld [wd6f8], a - ld [wd6fb], a - ld a, [wMeowthXPosition] - add $14 - ld b, a - ld a, [wd4b4] - cp b - jr nc, .asm_2481d - ld a, $0 - ld [wd72a], a - jr .asm_24822 - -.asm_2481d - ld a, $1 - ld [wd72a], a -.asm_24822 - ret - -.asm_24823 - ld a, [wd71b] - cp $c8 - jr nz, .asm_24868 - ld a, [wMeowthXPosition] - add $8 - ld [wd71b], a - ld a, [wMeowthYPosition] - add $fb - ld [wd728], a - ld a, $1 - ld [wd718], a - xor a - ld [wd6f3], a - ld [wd715], a - ld [wd6f6], a - ld [wd6f9], a - ld [wd6fc], a - ld a, [wMeowthXPosition] - add $14 - ld b, a - ld a, [wd4b4] - cp b - jr nc, .asm_24862 - ld a, $0 - ld [wd72b], a - jr .asm_24867 - -.asm_24862 - ld a, $1 - ld [wd72b], a -.asm_24867 - ret - -.asm_24868 - ld a, [wd71c] - cp $c8 - ret nz - ld a, [wMeowthXPosition] - add $8 - ld [wd71c], a - ld a, [wMeowthYPosition] - add $fb - ld [wd729], a - ld a, $1 - ld [wd719], a - xor a - ld [wd6f3], a - ld [wd716], a - ld [wd6f7], a - ld [wd6fa], a - ld [wd6fd], a - ld a, [wMeowthXPosition] - add $14 - ld b, a - ld a, [wd4b4] - cp b - jr nc, .asm_248a6 - ld a, $0 - ld [wd72c], a - jr .asm_248ab - -.asm_248a6 - ld a, $1 - ld [wd72c], a -.asm_248ab - ret - -Func_248ac: ; 0x248ac - ld a, [wd717] - cp $1 - jr nz, .asm_248d3 - ld a, [wd714] - cp $a - jr z, .asm_248c4 - ld a, $0 - ld [wd6f4], a - call Func_24a30 - jr .asm_248d3 - -.asm_248c4 - ld hl, wd70b - inc [hl] - ld a, $2 - ld [wd717], a - lb de, $00, $34 - call PlaySoundEffect -.asm_248d3 - ld a, [wd718] - cp $1 - jr nz, .asm_248fa - ld a, [wd715] - cp $a - jr z, .asm_248eb - ld a, $1 - ld [wd6f4], a - call Func_24a30 - jr .asm_248fa - -.asm_248eb - ld hl, wd70b - inc [hl] - ld a, $2 - ld [wd718], a - lb de, $00, $34 - call PlaySoundEffect -.asm_248fa - ld a, [wd719] - cp $1 - jr nz, .asm_24921 - ld a, [wd716] - cp $a - jr z, .asm_24912 - ld a, $2 - ld [wd6f4], a - call Func_24a30 - jr .asm_24921 - -.asm_24912 - ld hl, wd70b - inc [hl] - ld a, $2 - ld [wd719], a - lb de, $00, $34 - call PlaySoundEffect -.asm_24921 - ld a, [wd717] - cp $2 - jr nz, .asm_2492c - ld hl, wd714 - inc [hl] -.asm_2492c - ld a, [wd718] - cp $2 - jr nz, .asm_24937 - ld hl, wd715 - inc [hl] -.asm_24937 - ld a, [wd719] - cp $2 - jr nz, .asm_24942 - ld hl, wd716 - inc [hl] -.asm_24942 - ld a, [wd717] - cp $3 - jr nz, .asm_24968 - ld a, [wd71a] - ld b, a - ld a, [wd727] - ld c, a - ld hl, wd714 - inc [hl] - ld a, [hl] - cp $2 - jr nz, .asm_2495f - call Func_24e7f - jr .asm_24968 - -.asm_2495f - cp $a - jr nz, .asm_24968 - ld a, $4 - ld [wd717], a -.asm_24968 - ld a, [wd718] - cp $3 - jr nz, .asm_2498e - ld a, [wd71b] - ld b, a - ld a, [wd728] - ld c, a - ld hl, wd715 - inc [hl] - ld a, [hl] - cp $2 - jr nz, .asm_24985 - call Func_24e7f - jr .asm_2498e - -.asm_24985 - cp $a - jr nz, .asm_2498e - ld a, $4 - ld [wd718], a -.asm_2498e - ld a, [wd719] - cp $3 - jr nz, .asm_249b4 - ld a, [wd71c] - ld b, a - ld a, [wd729] - ld c, a - ld hl, wd716 - inc [hl] - ld a, [hl] - cp $2 - jr nz, .asm_249ab - call Func_24e7f - jr .asm_249b4 - -.asm_249ab - cp $a - jr nz, .asm_249b4 - ld a, $4 - ld [wd719], a -.asm_249b4 - ld a, [wd717] - cp $4 - jr nz, .asm_249d0 - ld a, $c8 - ld [wd71a], a - ld [wd727], a - xor a - ld [wd717], a - ld hl, wd70b - dec [hl] - ld a, [hl] - cp $2 - jr z, .asm_24a06 -.asm_249d0 - ld a, [wd718] - cp $4 - jr nz, .asm_249ec - ld a, $c8 - ld [wd71b], a - ld [wd728], a - xor a - ld [wd718], a - ld hl, wd70b - dec [hl] - ld a, [hl] - cp $2 - jr z, .asm_24a06 -.asm_249ec - ld a, [wd719] - cp $4 - ret nz - ld a, $c8 - ld [wd71c], a - ld [wd729], a - xor a - ld [wd719], a - ld hl, wd70b - dec [hl] - ld a, [hl] - cp $2 - ret nz -.asm_24a06 - ld a, [wd713] - and a - ret nz - ld a, [wMeowthXMovement] - cp $ff - jr z, .asm_24a21 - ld hl, MeowthAnimationData2 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $1 - ld [wd6ec], a - ret - -.asm_24a21 - ld hl, MeowthAnimationData1 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $0 - ld [wd6ec], a - ret - -Func_24a30: ; 0x24a30 - ld a, [wd6f4] - ld c, a - ld b, $0 - ld hl, wd6f8 - add hl, bc - ld a, [hl] - and a - jr z, .asm_24a42 - call Func_24b41 - ret - -.asm_24a42 - ld a, [wd6f4] - ld c, a - ld b, $0 - ld hl, wd6f5 - add hl, bc - ld a, [hl] - bit 2, a - jr z, .asm_24a5e - bit 1, a - jr nz, .asm_24a5e - bit 0, a - jr nz, .asm_24a5e - ld hl, wd714 - add hl, bc - inc [hl] -.asm_24a5e - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld hl, Data_24af1 - ld e, a - ld d, $0 - add hl, de - ld hl, wd72a - add hl, bc - ld a, [hl] - and a - jr nz, .asm_24a97 -.asm_24a72 - ld hl, wd72a - add hl, bc - ld [hl], $0 - ld hl, wd71a - add hl, bc - ld a, [hl] - push af - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - ld hl, Data_24af1 - add hl, de - pop af - add [hl] - cp $8e - jr nc, .asm_24a97 - ld hl, wd71a - add hl, bc - ld [hl], a - jr .asm_24abf - -.asm_24a97 - ld hl, wd72a - add hl, bc - ld [hl], $1 - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - ld hl, Data_24af1 - add hl, de - ld a, [hl] - ld d, a - ld a, $ff - sub d - inc a - ld d, a - ld hl, wd71a - add hl, bc - ld a, [hl] - add d - cp $5 - jr c, .asm_24a72 - ld hl, wd71a - add hl, bc - ld [hl], a -.asm_24abf - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - ld hl, Data_24af1 - add hl, de - inc hl - ld a, [hl] - ld d, a - ld hl, wd727 - add hl, bc - ld a, [hl] - add d - ld hl, wd727 - add hl, bc - ld [hl], a - ld hl, wd6f5 - add hl, bc - inc [hl] - inc [hl] - ld a, [hl] - cp $46 - jr nz, .asm_24af0 - ld a, c - cp $9 - jr c, .asm_24aed - call Func_2438f - ret - -.asm_24aed - call Func_24319 -.asm_24af0 - ret - -Data_24af1: -; These are offsets for something in the Meowth stage - db 2, -4 - db 2, -4 - db 2, -4 - db 2, 0 - db 2, -2 - db 2, 0 - db 2, -2 - db 2, 0 - db 2, -2 - db 2, 0 - db 2, -2 - db 2, 0 - db 2, 0 - db 2, 0 - db 2, 0 - db 2, 2 - db 2, 2 - db 2, 2 - db 2, 2 - db 2, 2 - db 2, 3 - db 2, 4 - db 2, 4 - db 2, 4 - db 2, 4 - db 2, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 1, 4 - db 0, 0 - db 0, 0 - db 0, 0 - db 0, 0 - -Func_24b41: ; 0x24b41 - ld a, [wd6f4] - ld b, $0 - ld c, a - ld hl, wd6f5 - add hl, bc - ld a, [hl] - cp $14 - jp nc, Func_24bf6 - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld hl, Data_24c0a - ld e, a - ld d, $0 - add hl, de - ld hl, wd72a - add hl, bc - ld a, [hl] - and a - jr nz, .asm_24b8a -.asm_24b65 - ld hl, wd72a - add hl, bc - ld [hl], $0 - ld hl, wd71a - add hl, bc - ld a, [hl] - push af - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - ld hl, Data_24c0a - add hl, de - pop af - add [hl] - cp $90 - jr nc, .asm_24b8a - ld hl, wd71a - add hl, bc - ld [hl], a - jr .asm_24bb2 - -.asm_24b8a - ld hl, wd72a - add hl, bc - ld [hl], $1 - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - ld hl, Data_24c0a - add hl, de - ld a, [hl] - ld d, a - ld a, $ff - sub d - inc a - ld d, a - ld hl, wd71a - add hl, bc - ld a, [hl] - add d - cp $6 - jr c, .asm_24b65 - ld hl, wd71a - add hl, bc - ld [hl], a -.asm_24bb2 - ld hl, wd6f5 - add hl, bc - ld a, [hl] - ld e, a - ld d, $0 - ld hl, Data_24c0a - add hl, de - inc hl - ld a, [hl] - ld d, a - ld hl, wd727 - add hl, bc - ld a, [hl] - add d - ld hl, wd727 - add hl, bc - ld [hl], a - ld hl, wd6f5 - add hl, bc - inc [hl] - inc [hl] - ld a, [hl] - cp $12 - jr nz, .asm_24bf4 - ld a, c - cp $9 - jr c, .asm_24be1 - call Func_2438f - jr .asm_24be4 - -.asm_24be1 - call Func_24319 -.asm_24be4 - ld a, [wd6f4] - ld b, $0 - ld c, a - ld hl, wd6f8 - add hl, bc - ld a, [hl] - and a - jr nz, .asm_24bf4 - ld [hl], $1 -.asm_24bf4 - scf - ret - -Func_24bf6: ; 0x24bf6 - ld a, [wd6f4] - ld b, $0 - ld c, a - ld hl, wd6f8 - add hl, bc - ld [hl], $0 - ld hl, wd714 - add hl, bc - ld [hl], $a - ccf - ret - -Data_24c0a: -; These are offsets for something in the Meowth stage - db 2, -2 - db 2, -1 - db 2, -1 - db 2, 0 - db 2, 0 - db 2, 0 - db 2, 1 - db 2, 1 - db 2, 2 - db 2, 4 - db 1, 4 - db 0, 0 - db 0, 0 - db 0, 0 - db 0, 0 - -Func_24c28: ; 0x24c28 - ld a, [wd6f3] - and a - ret z - ld a, [wd724] - cp $c8 - jr nz, .asm_24c76 - ld a, [wMeowthXPosition] - add $8 - ld [wd724], a - ld a, [wMeowthYPosition] - add $fb - ld [wd731], a - ld a, $1 - ld [wd721], a - ld hl, wd70c - inc [hl] - xor a - ld [wd6f3], a - ld [wd71e], a - ld [wd6ff], a - ld [wd702], a - ld [wd705], a - ld a, [wMeowthXPosition] - add $14 - ld b, a - ld a, [wd4b4] - cp b - jr nc, .asm_24c70 - ld a, $0 - ld [wd734], a - jr .asm_24c75 - -.asm_24c70 - ld a, $1 - ld [wd734], a -.asm_24c75 - ret - -.asm_24c76 - ld a, [wd725] - cp $c8 - jr nz, .asm_24cbf - ld a, [wMeowthXPosition] - add $8 - ld [wd725], a - ld a, [wMeowthYPosition] - add $fb - ld [wd732], a - ld a, $1 - ld [wd722], a - ld hl, wd70c - inc [hl] - xor a - ld [wd6f3], a - ld [wd71f], a - ld [wd700], a - ld [wd703], a - ld [wd706], a - ld a, [wd6f7] - add $14 - ld b, a - ld a, [wd4b4] - cp b - jr nc, .asm_24cb9 - ld a, $0 - ld [wd735], a - jr .asm_24cbe - -.asm_24cb9 - ld a, $1 - ld [wd735], a -.asm_24cbe - ret - -.asm_24cbf - ld a, [wd726] - cp $c8 - ret nz - ld a, [wMeowthXPosition] - add $8 - ld [wd726], a - ld a, [wMeowthYPosition] - add $fb - ld [wd733], a - ld a, $1 - ld [wd723], a - ld hl, wd70c - inc [hl] - xor a - ld [wd6f3], a - ld [wd720], a - ld [wd701], a - ld [wd704], a - ld [wd707], a - ld a, [wMeowthXPosition] - add $14 - ld b, a - ld a, [wd4b4] - cp b - jr nc, .asm_24d01 - ld a, $0 - ld [wd736], a - jr .asm_24d06 - -.asm_24d01 - ld a, $1 - ld [wd736], a -.asm_24d06 - ret - -Func_24d07: ; 0x24d07 - ld a, [wd721] - cp $1 - jr nz, .asm_24d2a - ld a, [wd71e] - cp $a - jr z, .asm_24d1f - ld a, $a - ld [wd6f4], a - call Func_24a30 - jr .asm_24d2a - -.asm_24d1f - ld a, $2 - ld [wd721], a - lb de, $00, $34 - call PlaySoundEffect -.asm_24d2a - ld a, [wd722] - cp $1 - jr nz, .asm_24d4d - ld a, [wd71f] - cp $a - jr z, .asm_24d42 - ld a, $b - ld [wd6f4], a - call Func_24a30 - jr .asm_24d4d - -.asm_24d42 - ld a, $2 - ld [wd722], a - lb de, $00, $34 - call PlaySoundEffect -.asm_24d4d - ld a, [wd723] - cp $1 - jr nz, .asm_24d70 - ld a, [wd720] - cp $a - jr z, .asm_24d65 - ld a, $c - ld [wd6f4], a - call Func_24a30 - jr .asm_24d70 - -.asm_24d65 - ld a, $2 - ld [wd723], a - lb de, $00, $34 - call PlaySoundEffect -.asm_24d70 - ld a, [wd721] - cp $2 - jr nz, .asm_24d7b - ld hl, wd71e - inc [hl] -.asm_24d7b - ld a, [wd722] - cp $2 - jr nz, .asm_24d86 - ld hl, wd71f - inc [hl] -.asm_24d86 - ld a, [wd723] - cp $2 - jr nz, .asm_24d91 - ld hl, wd720 - inc [hl] -.asm_24d91 - ld a, [wd721] - cp $3 - jr nz, .asm_24db7 - ld a, [wd724] - ld b, a - ld a, [wd731] - ld c, a - ld hl, wd71e - inc [hl] - ld a, [hl] - cp $2 - jr nz, .asm_24dae - call Func_24e7f - jr .asm_24db7 - -.asm_24dae - cp $a - jr nz, .asm_24db7 - ld a, $4 - ld [wd721], a -.asm_24db7 - ld a, [wd722] - cp $3 - jr nz, .asm_24ddd - ld a, [wd725] - ld b, a - ld a, [wd732] - ld c, a - ld hl, wd71f - inc [hl] - ld a, [hl] - cp $2 - jr nz, .asm_24dd4 - call Func_24e7f - jr .asm_24ddd - -.asm_24dd4 - cp $a - jr nz, .asm_24ddd - ld a, $4 - ld [wd722], a -.asm_24ddd - ld a, [wd723] - cp $3 - jr nz, .asm_24e03 - ld a, [wd726] - ld b, a - ld a, [wd733] - ld c, a - ld hl, wd720 - inc [hl] - ld a, [hl] - cp $2 - jr nz, .asm_24dfa - call Func_24e7f - jr .asm_24e03 - -.asm_24dfa - cp $a - jr nz, .asm_24e03 - ld a, $4 - ld [wd723], a -.asm_24e03 - ld a, [wd721] - cp $4 - jr nz, .asm_24e1f - ld a, $c8 - ld [wd724], a - ld [wd731], a - xor a - ld [wd721], a - ld hl, wd70c - dec [hl] - ld a, [hl] - cp $2 - jr z, .asm_24e55 -.asm_24e1f - ld a, [wd722] - cp $4 - jr nz, .asm_24e3b - ld a, $c8 - ld [wd725], a - ld [wd732], a - xor a - ld [wd722], a - ld hl, wd70c - dec [hl] - ld a, [hl] - cp $2 - jr z, .asm_24e55 -.asm_24e3b - ld a, [wd723] - cp $4 - ret nz - ld a, $c8 - ld [wd726], a - ld [wd733], a - xor a - ld [wd723], a - ld hl, wd70c - dec [hl] - ld a, [hl] - cp $2 - ret nz -.asm_24e55 - ld a, [wd713] - and a - ret nz - ld a, [wMeowthXMovement] - cp $ff - jr z, .asm_24e70 - ld hl, MeowthAnimationData2 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $1 - ld [wd6ec], a - ret - -.asm_24e70 - ld hl, MeowthAnimationData1 - ld de, wMeowthAnimationFrameCounter - call CopyHLToDE - ld a, $0 - ld [wd6ec], a - ret - -Func_24e7f: ; 0x24e7f - ld a, b - ld [wd79c], a - ld a, c - ld [wd79e], a - ld hl, wMeowthStageBonusCounter - inc [hl] - ld a, [hl] - cp $7 ; maximum bonus - jr nz, .asm_24e92 - xor a - ld [hl], a -.asm_24e92 - ld a, $ff - ld [wd803], a - ld a, $3 - ld [wd804], a - lb de, $00, $32 - call PlaySoundEffect - ld a, [wMeowthStageBonusCounter] - dec a -.asm_24ea6 - push af - ld bc, OneHundredThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - ld hl, wMeowthStageScore - inc [hl] - pop af - and a - jr z, .asm_24ebf - dec a - jr .asm_24ea6 - -.asm_24ebf - ld a, [wMeowthStageBonusCounter] - dec a - dec a - cp $fe - jr z, .asm_24ed7 - cp $ff - jr z, .asm_24ed7 - ld [wd79a], a - ld de, wd79a - call Func_24ee7 - jr .asm_24ede - -.asm_24ed7 - xor a - ld [wd79a], a - ld [wd795], a -.asm_24ede - ld a, $1 - ld [wd64e], a - call Func_24fa3 - ret - -Func_24ee7: ; 0x24ee7 - ld a, $ff - ld [wd795], a - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, MeowthStageAnimationDataTable - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - dec de - dec de - dec de - call CopyHLToDE - ret - -Func_24f00: ; 0x24f00 - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, MeowthStageAnimationDataTable - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ld a, $1 - ld [wd710], a - ret nc - dec de - ld a, [de] - cp $a - ret nz - xor a - ld [de], a - ld [wd79c], a - ld [wd79e], a - ld [wd795], a - xor a - ld [wd710], a - ret - -MeowthStageAnimationDataTable: ; 0x24f30 - dw MeowthStageAnimationData1 - dw MeowthStageAnimationData2 - dw MeowthStageAnimationData3 - dw MeowthStageAnimationData4 - dw MeowthStageAnimationData5 - -MeowthStageAnimationData1: ; 0x24f3a -; Each entry is [OAM id][duration] - db $02, $00 - db $02, $01 - db $02, $02 - db $10, $00 - db $04, $0F - db $04, $00 - db $04, $0F - db $04, $00 - db $04, $0F - db $04, $00 - db $00 ; terminator - -MeowthStageAnimationData2: ; 0x24f4f -; Each entry is [OAM id][duration] - db $02, $03 - db $02, $04 - db $02, $05 - db $10, $03 - db $04, $0F - db $04, $03 - db $04, $0F - db $04, $03 - db $04, $0F - db $04, $03 - db $00 ; terminator - -MeowthStageAnimationData3: ; 0x24f64 -; Each entry is [OAM id][duration] - db $02, $06 - db $02, $07 - db $02, $08 - db $10, $06 - db $04, $0F - db $04, $06 - db $04, $0F - db $04, $06 - db $04, $0F - db $04, $06 - db $00 ; terminator - -MeowthStageAnimationData4: ; 0x24f79 -; Each entry is [OAM id][duration] - db $02, $09 - db $02, $0A - db $02, $0B - db $10, $09 - db $04, $0F - db $04, $09 - db $04, $0F - db $04, $09 - db $04, $0F - db $04, $09 - db $00 ; terminator - -MeowthStageAnimationData5: ; 0x24f8e -; Each entry is [OAM id][duration] - db $02, $0C - db $02, $0D - db $02, $0E - db $10, $0C - db $04, $0F - db $04, $0C - db $04, $0F - db $04, $0C - db $04, $0F - db $04, $0C - db $00 ; terminator - -Func_24fa3: ; 0x24fa3 - ld a, [wMeowthStageScore] - ld c, a - ld b, $0 -.asm_24fa9 - ld a, c - and a - jr z, .asm_24fb5 - ld a, b - add $8 - ld b, a - dec c - ld a, c - jr .asm_24fa9 - -.asm_24fb5 - ld a, b - and a - jr z, .asm_24fbb - sub $8 -.asm_24fbb - ld [wd652], a - ld a, [wMeowthStageBonusCounter] - and a - jr z, .asm_24fca - ld b, a - ld a, [wMeowthStageScore] - inc a - sub b -.asm_24fca - ld [wd651], a - ld a, $0 - ld [wd64e], a - ld a, [wMeowthStageScore] - and a - ret z - cp $15 - jr c, .asm_24fe2 - ld a, $14 - ld [wMeowthStageScore], a - jr .asm_24fed - -.asm_24fe2 - push af - xor a - ld [wd650], a - ld a, $1 - ld [wd64e], a - pop af -.asm_24fed - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_25007 - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_24ffd - ld hl, TileDataPointers_25421 -.asm_24ffd - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_25007) - call Func_10aa - ret - -TileDataPointers_25007: - dw TileData_25031 - dw TileData_25034 - dw TileData_25037 - dw TileData_2503a - dw TileData_2503d - dw TileData_25040 - dw TileData_25043 - dw TileData_25046 - dw TileData_25049 - dw TileData_2504c - dw TileData_2504f - dw TileData_25052 - dw TileData_25055 - dw TileData_25058 - dw TileData_2505b - dw TileData_2505e - dw TileData_25061 - dw TileData_25064 - dw TileData_25067 - dw TileData_2506a - dw TileData_2506d - -TileData_25031: ; 0x25031 - db $01 - dw TileData_25070 - -TileData_25034: ; 0x25034 - db $01 - dw TileData_2509d - -TileData_25037: ; 0x25037 - db $01 - dw TileData_250ca - -TileData_2503a: ; 0x2503a - db $01 - dw TileData_250f7 - -TileData_2503d: ; 0x2503d - db $01 - dw TileData_25124 - -TileData_25040: ; 0x25040 - db $01 - dw TileData_25151 - -TileData_25043: ; 0x25043 - db $01 - dw TileData_2517e - -TileData_25046: ; 0x25046 - db $01 - dw TileData_251ab - -TileData_25049: ; 0x25049 - db $01 - dw TileData_251d8 - -TileData_2504c: ; 0x2504c - db $01 - dw TileData_25205 - -TileData_2504f: ; 0x2504f - db $01 - dw TileData_25232 - -TileData_25052: ; 0x25052 - db $01 - dw TileData_2525f - -TileData_25055: ; 0x25055 - db $01 - dw TileData_2528c - -TileData_25058: ; 0x25058 - db $01 - dw TileData_252b9 - -TileData_2505b: ; 0x2505b - db $01 - dw TileData_252e6 - -TileData_2505e: ; 0x2505e - db $01 - dw TileData_25313 - -TileData_25061: ; 0x25061 - db $01 - dw TileData_25340 - -TileData_25064: ; 0x25064 - db $01 - dw TileData_2536d - -TileData_25067: ; 0x25067 - db $01 - dw TileData_2539a - -TileData_2506a: ; 0x2506a - db $01 - dw TileData_253c7 - -TileData_2506d: ; 0x2506d - db $01 - dw TileData_253f4 - -TileData_25070: ; 0x25070 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $E4, $0C, $0D - - db $03 ; number of tiles - dw vBGMap + $3 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $6 - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_2509d: ; 0x2509d - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $0C, $0D - - db $03 ; number of tiles - dw vBGMap + $3 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $6 - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_250ca: ; 0x250ca - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $0D - - db $03 ; number of tiles - dw vBGMap + $3 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $6 - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_250f7: ; 0x250f7 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $6 - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_25124: ; 0x25124 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $6 - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_25151: ; 0x25151 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $0E - - db $03 ; number of tiles - dw vBGMap + $6 - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_2517e: ; 0x2517e - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_251ab: ; 0x251ab - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_251d8: ; 0x251d8 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $0D - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_25205: ; 0x25205 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $0E, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_25232: ; 0x25232 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $0D, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_2525f: ; 0x2525f - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $0E - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_2528c: ; 0x2528c - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $0D, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_252b9: ; 0x252b9 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_252e6: ; 0x252e6 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $16, $0D - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_25313: ; 0x25313 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $F - db $0E, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_25340: ; 0x25340 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $F - db $16, $0D, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_2536d: ; 0x2536d - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $F - db $16, $16, $0E - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_2539a: ; 0x2539a - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $F - db $16, $16, $16 - - db $02 - dw vBGMap + $12 - db $0F, $E4 - - db $00 ; terminator - -TileData_253c7: ; 0x253c7 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $F - db $16, $16, $16 - - db $02 - dw vBGMap + $12 - db $17, $E4 - - db $00 ; terminator - -TileData_253f4: ; 0x253f4 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $14, $15, $16 - - db $03 ; number of tiles - dw vBGMap + $3 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $6 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $9 - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $C - db $16, $16, $16 - - db $03 ; number of tiles - dw vBGMap + $F - db $16, $16, $16 - - db $02 - dw vBGMap + $12 - db $17, $18 - - db $00 ; terminator - -TileDataPointers_25421: ; 0x25421 - dw TileData_2544b - dw TileData_2544e - dw TileData_25451 - dw TileData_25454 - dw TileData_25457 - dw TileData_2545a - dw TileData_2545d - dw TileData_25460 - dw TileData_25463 - dw TileData_25466 - dw TileData_25469 - dw TileData_2546c - dw TileData_2546f - dw TileData_25472 - dw TileData_25475 - dw TileData_25478 - dw TileData_2547b - dw TileData_2547e - dw TileData_25481 - dw TileData_25484 - dw TileData_25487 - -TileData_2544b: ; 0x2544b - db $01 - dw TileData_2548a - -TileData_2544e: ; 0x2544e - db $01 - dw TileData_254b7 - -TileData_25451: ; 0x25451 - db $01 - dw TileData_254e4 - -TileData_25454: ; 0x25454 - db $01 - dw TileData_25511 - -TileData_25457: ; 0x25457 - db $01 - dw TileData_2553e - -TileData_2545a: ; 0x2545a - db $01 - dw TileData_2556b - -TileData_2545d: ; 0x2545d - db $01 - dw TileData_25598 - -TileData_25460: ; 0x25460 - db $01 - dw TileData_255c5 - -TileData_25463: ; 0x25463 - db $01 - dw TileData_255f2 - -TileData_25466: ; 0x25466 - db $01 - dw TileData_2561f - -TileData_25469: ; 0x25469 - db $01 - dw TileData_2564c - -TileData_2546c: ; 0x2546c - db $01 - dw TileData_25679 - -TileData_2546f: ; 0x2546f - db $01 - dw TileData_256a6 - -TileData_25472: ; 0x25472 - db $01 - dw TileData_256d3 - -TileData_25475: ; 0x25475 - db $01 - dw TileData_25700 - -TileData_25478: ; 0x25478 - db $01 - dw TileData_2572d - -TileData_2547b: ; 0x2547b - db $01 - dw TileData_2575a - -TileData_2547e: ; 0x2547e - db $01 - dw TileData_25787 - -TileData_25481: ; 0x25481 - db $01 - dw TileData_257b4 - -TileData_25484: ; 0x25484 - db $01 - dw TileData_257e1 - -TileData_25487: ; 0x25487 - db $01 - dw TileData_2580e - -TileData_2548a: ; 0x2548a - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $E3, $FD, $FE - - db $03 ; number of tiles - dw vBGMap + $3 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $6 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_254b7: ; 0x254b7 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $FD, $FE - - db $03 ; number of tiles - dw vBGMap + $3 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $6 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_254e4: ; 0x254e4 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $FE - - db $03 ; number of tiles - dw vBGMap + $3 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $6 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_25511: ; 0x25511 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $6 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_2553e: ; 0x2553e - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $6 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_2556b: ; 0x2556b - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $FE - - db $03 ; number of tiles - dw vBGMap + $6 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_25598: ; 0x25598 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_255c5: ; 0x255c5 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_255f2: ; 0x255f2 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $FE - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_2561f: ; 0x2561f - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_2564c: ; 0x2564c - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_25679: ; 0x25679 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $FE - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_256a6: ; 0x256a6 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $FE, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_256d3: ; 0x256d3 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $FE, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_25700: ; 0x25700 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $00, $FE - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_2572d: ; 0x2572d - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $F - db $FE, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_2575a: ; 0x2575a - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $F - db $00, $FE, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_25787: ; 0x25787 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $F - db $00, $00, $FE - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_257b4: ; 0x257b4 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $F - db $00, $00, $00 - - db $02 ; number of tiles - dw vBGMap + $12 - db $FD, $E3 - - db $00 ; terminator - -TileData_257e1: ; 0x257e1 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $F - db $00, $00, $00 - - db $02 ; number of tiles - dw vBGMap + $12 - db $02, $E3 - - db $00 ; terminator - -TileData_2580e: ; 0x2580e - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FF, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $3 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $6 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $9 - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $C - db $00, $00, $00 - - db $03 ; number of tiles - dw vBGMap + $F - db $00, $00, $00 - - db $02 ; number of tiles - dw vBGMap + $12 - db $02, $03 - - db $00 ; terminator - +INCLUDE "engine/pinball_game/object_collision/meowth_bonus_resolve_collision.asm" INCLUDE "engine/pinball_game/draw_sprites/draw_meowth_bonus_sprites.asm" INCLUDE "engine/pinball_game/stage_init/init_seel_bonus.asm" INCLUDE "engine/pinball_game/ball_init/ball_init_seel_bonus.asm" INCLUDE "engine/pinball_game/load_stage_data/load_seel_bonus.asm" INCLUDE "engine/pinball_game/object_collision/seel_bonus_object_collision.asm" - -Func_25c5a: ; 0x25c5a - call Func_25da3 - call Func_25ced - ld a, [wd793] - cp $14 - jr c, .asm_25c98 - ld a, [wd794] - cp $2 - jr nc, .asm_25c98 - ld a, $1 - ld [wd498], a - ld de, $0000 - call PlaySong - ld a, $1 - ld [wd49a], a - call FillBottomMessageBufferWithBlackTile - call Func_30db - ld hl, wd5dc - ld de, SeelStageClearedText - call LoadTextHeader - ld a, $2 - ld [wd794], a - lb de, $4b, $2a - call PlaySoundEffect -.asm_25c98 - ld a, [wd794] - cp $2 - jr nz, .asm_25cb0 - ld a, [wSFXTimer] - and a - jr nz, .asm_25cb0 - ld de, $0003 - call PlaySong - ld a, $5 - ld [wd794], a -.asm_25cb0 - ld a, [wd794] - cp $2 - jr z, .asm_25cc1 - callba Func_107f8 -.asm_25cc1 - ld a, [wd57e] - and a - ret z - xor a - ld [wd57e], a - ld a, $1 - ld [wd7be], a - call Func_2862 - callba StopTimer - ld a, $3 - ld [wd791], a - ld a, [wd794] - cp $5 - ret z - ld a, $1 - ld [wd794], a - ret - -Func_25ced: ; 0x25ced - ld a, [wd766] - and a - ret nz - ld a, [wd4b4] - cp $8a - ret nc - ld a, $1 - ld [wStageCollisionState], a - ld [wd766], a - callba LoadStageCollisionAttributes - call Func_25d0e - ret - -Func_25d0e: ; 0x25d0e - ld a, [wStageCollisionState] - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_25d2b - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_25d21 - ld hl, TileDataPointers_25d67 -.asm_25d21 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_25d2b) - call Func_10aa - ret - -TileDataPointers_25d2b: - dw TileData_25d2f - dw TileData_25d32 - -TileData_25d2f: ; 0x25d2f - db $01 - dw TileData_25d35 - -TileData_25d32: ; 0x25d32 - db $01 - dw TileData_25d4e - -TileData_25d35: ; 0x25d35 - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $1F, $20 - - db $02 ; number of tiles - dw vBGMap + $133 - db $1D, $1E - - db $03 ; number of tiles - dw vBGMap + $152 - db $80, $1B, $1C - - db $02 ; number of tiles - dw vBGMap + $172 - db $17, $18 - - db $00 ; terminator - -TileData_25d4e: ; 0x25d4e - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $24, $F9 - - db $02 ; number of tiles - dw vBGMap + $133 - db $22, $04 - - db $03 ; number of tiles - dw vBGMap + $152 - db $36, $37, $FE - - db $02 ; number of tiles - dw vBGMap + $172 - db $35, $F9 - - db $00 ; terminator - -TileDataPointers_25d67: - dw TileData_25d6b - dw TileData_25d6e - -TileData_25d6b: ; 0x25d6b - db $01 - dw TileData_25d71 - -TileData_25d6e: ; 0x25d6e - db $01 - dw TileData_25d8a - -TileData_25d71: ; 0x25d71 - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $11, $10 - - db $02 ; number of tiles - dw vBGMap + $133 - db $0E, $0D - - db $03 ; number of tiles - dw vBGMap + $152 - db $80, $0B, $0A - - db $02 - dw vBGMap + $172 - db $07, $06 - - db $00 ; terminator - -TileData_25d8a: ; 0x25d8a - dw LoadTileLists - db $09 ; total number of tiles - - db $02 ; number of tiles - dw vBGMap + $113 - db $0F, $F4 - - db $02 ; number of tiles - dw vBGMap + $133 - db $0C, $FB - - db $03 ; number of tiles - dw vBGMap + $152 - db $09, $08, $F8 - - db $02 - dw vBGMap + $172 - db $04, $F4 - - db $00 ; terminator - -Func_25da3: ; 0x25da3 - ld a, [wd767] - and a - jp z, .asm_25e38 - xor a - ld [wd767], a - ld a, [wd768] - sla a - ld c, a - sla a - sla a - add c - ld c, a - ld b, $0 - ld hl, wd76c - add hl, bc - ld d, h - ld e, l - ld a, $9 - ld [de], a - dec de - dec de - dec de - push bc - ld hl, SeelAnimationData10 - call CopyHLToDE - pop bc - ld hl, wd76e - add hl, bc - ld a, [hl] - ld [wd79c], a - ld hl, wd770 - add hl, bc - ld a, [hl] - add $8 - ld [wd79e], a - ld a, [wd792] - cp $9 - jr nz, .asm_25df1 - ld a, $0 - ld [wd792], a - ld [wd79a], a -.asm_25df1 - ld a, [wd792] - dec a - cp $ff - jr z, .asm_25e04 - ld [wd79a], a - ld de, wd79a - call Func_261f9 - jr .asm_25e07 - -.asm_25e04 - ld [wd79a], a -.asm_25e07 - ld a, $33 - ld [wd803], a - ld a, $8 - ld [wd804], a - lb de, $00, $30 - call PlaySoundEffect - call Func_25e85 - ld hl, wd792 - inc [hl] - ld a, [wd793] - cp $14 - ret nc - ld hl, wd793 - inc [hl] - ld a, [wd792] - dec a - ld b, a - ld a, [hl] - add b - ld [hl], a - ld a, $1 - ld [wd64e], a - call Func_262f4 -.asm_25e38 - ld de, wd76c ; I think these three calls are one for each Seel swimming around - call Func_25f47 - ld de, wd776 - call Func_25f47 - ld de, wd780 - call Func_25f47 - ld a, [wd792] - dec a - cp $ff - jr z, .asm_25e5d - ld [wd79a], a - ld de, wd79a - call Func_26212 - jr .asm_25e60 - -.asm_25e5d - ld [wd79a], a -.asm_25e60 - ld bc, $087a ; again, probably one call for each Seel swimming around - ld de, wd76d - ld hl, wd772 - call Func_25ec5 - ld bc, $087a - ld de, wd777 - ld hl, wd77c - call Func_25ec5 - ld bc, $087a - ld de, wd781 - ld hl, wd786 - call Func_25ec5 - ret - -Func_25e85: ; 0x25e85 - ld a, [wd792] - inc a - ld d, $1 - ld e, a - ld a, $1 -.asm_25e8e - cp e - jr z, .asm_25e96 - sla d - inc a - jr .asm_25e8e - -.asm_25e96 - push de - ld a, d - cp $32 - jr nc, .asm_25ead - ld bc, OneHundredThousandPoints - callba AddBigBCD6FromQueueWithBallMultiplier - pop de - dec d - jr .asm_25ebf - -.asm_25ead - ld bc, FiveMillionPoints - callba AddBigBCD6FromQueueWithBallMultiplier - pop de - ld a, d - sub $32 - ld d, a -.asm_25ebf - ld a, d - cp $0 - jr nz, .asm_25e96 - ret - -Func_25ec5: ; 0x25ec5 - dec de - ld a, [de] - cp $1 - jr z, .asm_25ece - cp $4 - ret nz -.asm_25ece - inc de - push hl - ld a, [hld] - push af - push bc - ld a, [hl] - and $f - ld c, a - ld b, $0 - ld hl, SeelSwimmingYOffsets - add hl, bc - pop bc - pop af - and a - jr nz, .asm_25f05 - ld a, [de] - add [hl] - ld [de], a - inc de - ld a, [de] - adc $0 - ld [de], a - pop hl - cp c - ret c - ld a, $1 - ld [hl], a - dec hl - dec hl - dec hl - dec hl - dec hl - dec hl - ld a, $7 - ld [hl], a - dec hl - dec hl - dec hl - ld d, h - ld e, l - ld hl, SeelAnimationData8 - call CopyHLToDE - ret - -.asm_25f05 - ld a, [de] - sub [hl] - ld [de], a - inc de - ld a, [de] - sbc $0 - ld [de], a - pop hl - cp b - ret nc - xor a - ld [hl], a - dec hl - dec hl - dec hl - dec hl - dec hl - dec hl - ld a, $8 - ld [hl], a - dec hl - dec hl - dec hl - ld d, h - ld e, l - ld hl, SeelAnimationData9 - call CopyHLToDE - ret - -SeelSwimmingYOffsets: - db $31, $32, $33, $34, $35, $36, $37, $36, $35, $34, $33, $32, $33, $34, $35, $36 - db $37, $38, $39, $3A, $3B, $3A, $39, $38, $37, $36, $35, $34, $33, $32, $31, $30 - -Func_25f47: ; 0x25f47 - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, SeelAnimationsTable - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ret nc - ld a, [de] - rst JumpTable ; calls JumpToFuncInTable -CallTable_25f5f: ; 0x25f5f - dw Func_25f77 - dw Func_25fbe - dw Func_25ff3 - dw Func_2602a - dw Func_2604c - dw Func_2607f - dw Func_260b6 - dw Func_260d8 - dw Func_260e2 - dw Func_260ec - dw Func_26109 - dw Func_26120 - -Func_25f77: ; 0x25f77 - dec de - ld a, [de] - cp $2 - ret nz - push de - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - dec a - ld [de], a - ld a, $3 - jr z, .asm_25f8f - pop de - xor a - jp Func_26137 - -.asm_25f8f - ld hl, wd792 - ld [hl], $0 - call GenRandom - bit 7, a - jr z, .asm_25fa2 - inc de - ld a, $1 - ld [de], a - dec de - jr .asm_25fa7 - -.asm_25fa2 - inc de - ld a, $0 - ld [de], a - dec de -.asm_25fa7 - inc de - ld a, [de] - and a - jr z, .asm_25fb0 - ld a, $6 - jr .asm_25fb2 - -.asm_25fb0 - ld a, $3 -.asm_25fb2 - push af - lb de, $00, $31 - call PlaySoundEffect - pop af - pop de - jp Func_26137 - -Func_25fbe: ; 0x25fbe - dec de - ld a, [de] - cp $4 - ret nz - push de - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - dec a - ld [de], a - jr z, .asm_25fd5 - pop de - ld a, $1 - jp Func_26137 - -.asm_25fd5 - ld a, [wd791] - cp $0 - jr z, .asm_25fe9 - ld a, $2 - ld [de], a - pop de - ld a, $4 - ld [de], a - ld a, $1 - jp Func_26137 - ret ; unused instruction - -.asm_25fe9 - ld hl, wd791 - inc [hl] - pop de - ld a, $2 - jp Func_26137 - -Func_25ff3: ; 0x25ff3 - dec de - ld a, [de] - cp $7 - ret nz - xor a - call Func_26137 - inc de - inc de - inc de - inc de - inc de - ld a, [wd792] - cp $6 - jr nc, .asm_26020 - cp $2 - jr nc, .asm_26016 - ld a, $3 - ld [de], a - lb de, $00, $31 - call PlaySoundEffect - ret - -.asm_26016 - ld a, $2 - ld [de], a - lb de, $00, $31 - call PlaySoundEffect - ret - -.asm_26020 - ld a, $1 - ld [de], a - lb de, $00, $31 - call PlaySoundEffect - ret - -Func_2602a: ; 0x2602a - dec de - ld a, [de] - cp $9 - ret nz - ld a, $1 - call Func_26137 - inc de - inc de - inc de - inc de - inc de - call GenRandom - bit 7, a - jr z, .asm_26044 - ld a, $3 - jr .asm_26046 - -.asm_26044 - ld a, $5 -.asm_26046 - ld [de], a - ld hl, wd791 - dec [hl] - ret - -Func_2604c: ; 0x2604c - dec de - ld a, [de] - cp $4 - ret nz - push de - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - dec a - ld [de], a - jr z, .asm_26063 - pop de - ld a, $4 - jp Func_26137 - -.asm_26063 - ld a, [wd791] - cp $0 - jr z, .asm_26075 - ld a, $2 - ld [de], a - pop de - ld a, $4 - ld [de], a - jp Func_26137 - ret ; unused instruction - -.asm_26075 - ld hl, wd791 - inc [hl] - pop de - ld a, $5 - jp Func_26137 - -Func_2607f: ; 0x2607f - dec de - ld a, [de] - cp $7 - ret nz - xor a - call Func_26137 - inc de - inc de - inc de - inc de - inc de - ld a, [wd792] - cp $6 - jr nc, .asm_260ac - cp $2 - jr nc, .asm_260a2 - ld a, $3 - ld [de], a - lb de, $00, $31 - call PlaySoundEffect - ret - -.asm_260a2 - ld a, $2 - ld [de], a - lb de, $00, $31 - call PlaySoundEffect - ret - -.asm_260ac - ld a, $1 - ld [de], a - lb de, $00, $31 - call PlaySoundEffect - ret - -Func_260b6: ; 0x260b6 - dec de - ld a, [de] - cp $9 - ret nz - ld a, $4 - call Func_26137 - inc de - inc de - inc de - inc de - inc de - call GenRandom - bit 7, a - jr z, .asm_260d0 - ld a, $3 - jr .asm_260d2 - -.asm_260d0 - ld a, $5 -.asm_260d2 - ld [de], a - ld hl, wd791 - dec [hl] - ret - -Func_260d8: ; 0x260d8 - dec de - ld a, [de] - cp $5 - ret nz - ld a, $4 - jp Func_26137 - -Func_260e2: ; 0x260e2 - dec de - ld a, [de] - cp $5 - ret nz - ld a, $1 - jp Func_26137 - -Func_260ec: ; 0x260ec - dec de - ld a, [de] - cp $1 - ret nz - push de - inc de - inc de - inc de - inc de - inc de - inc de - inc de - ld a, [de] - and a - jr z, .asm_26103 - pop de - ld a, $b - jp Func_26137 - -.asm_26103 - pop de - ld a, $a - jp Func_26137 - -Func_26109: ; 0x26109 - dec de - ld a, [de] - cp $7 - ret nz - ld a, $1 - call Func_26137 - inc de - inc de - inc de - inc de - inc de - ld a, $5 - ld [de], a - ld hl, wd791 - dec [hl] - ret - -Func_26120: ; 0x26120 - dec de - ld a, [de] - cp $7 - ret nz - ld a, $4 - call Func_26137 - inc de - inc de - inc de - inc de - inc de - ld a, $5 - ld [de], a - ld hl, wd791 - dec [hl] - ret - -Func_26137: ; 0x26137 - push af - sla a - ld c, a - ld b, $0 - ld hl, SeelAnimationsTable - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - call CopyHLToDE - pop de - inc de - pop af - ld [de], a - ret - -SeelAnimationsTable: ; 0x2614f - dw SeelAnimationData1 - dw SeelAnimationData2 - dw SeelAnimationData3 - dw SeelAnimationData4 - dw SeelAnimationData5 - dw SeelAnimationData6 - dw SeelAnimationData7 - dw SeelAnimationData8 - dw SeelAnimationData9 - dw SeelAnimationData10 - dw SeelAnimationData11 - dw SeelAnimationData12 - -SeelAnimationData1: - db $1C, $00 - db $1C, $01 - db $00 ; terminator - -SeelAnimationData2: - db $0C, $03 - db $08, $04 - db $0C, $05 - db $08, $04 - db $00 ; terminator - -SeelAnimationData3: - db $04, $06 - db $04, $07 - db $05, $08 - db $05, $09 - db $06, $0A - db $04, $0B - db $08, $0C - db $00 ; terminator - -SeelAnimationData4: - db $08, $0C - db $04, $0B - db $06, $0D - db $10, $17 - db $06, $0A - db $05, $09 - db $05, $08 - db $04, $0E - db $04, $0F - db $00 ; terminator - -SeelAnimationData5: - db $0C, $10 - db $08, $11 - db $0C, $12 - db $08, $11 - db $00 ; terminator - -SeelAnimationData6: - db $04, $13 - db $04, $14 - db $05, $08 - db $05, $09 - db $06, $0A - db $04, $0B - db $08, $0C - db $00 ; terminator - -SeelAnimationData7: - db $08, $0C - db $04, $0B - db $06, $0D - db $10, $17 - db $06, $0A - db $05, $09 - db $05, $08 - db $04, $15 - db $04, $16 - db $00 ; terminator - -SeelAnimationData8: - db $04, $06 - db $04, $07 - db $06, $0A - db $04, $15 - db $04, $16 - db $00 ; terminator - -SeelAnimationData9: - db $04, $13 - db $04, $14 - db $06, $0A - db $04, $0E - db $04, $0F - db $00 ; terminator - -SeelAnimationData10: - db $10, $02 - db $00 ; terminator - -SeelAnimationData11: - db $06, $0D - db $10, $17 - db $06, $0A - db $05, $09 - db $05, $08 - db $04, $0E - db $04, $0F - db $00 ; terminator - -SeelAnimationData12: - db $06, $0D - db $10, $17 - db $06, $0A - db $05, $09 - db $05, $08 - db $04, $15 - db $04, $16 - db $00 ; terminator - -Func_261f9: ; 0x261f9 - ld a, $ff - ld [wd795], a - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, SeelStageAnimations - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - dec de - dec de - dec de - call CopyHLToDE - ret - -Func_26212: ; 0x26212 - ld a, [de] - sla a - ld c, a - ld b, $0 - ld hl, SeelStageAnimations - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - push de - dec de - dec de - dec de - call UpdateAnimation - pop de - ret nc - dec de - ld a, [de] - cp $a - ret nz - xor a - ld [de], a - ld [wd79c], a - ld [wd79e], a - ld a, a - ld [wd795], a - ret - -SeelStageAnimations: - dw SeelStageAnimationData1 - dw SeelStageAnimationData1 - dw SeelStageAnimationData2 - dw SeelStageAnimationData3 - dw SeelStageAnimationData4 - dw SeelStageAnimationData5 - dw SeelStageAnimationData6 - dw SeelStageAnimationData7 - dw SeelStageAnimationData8 - -SeelStageAnimationData1: - db $02, $00 - db $02, $01 - db $02, $02 - db $10, $00 - db $04, $18 - db $04, $00 - db $04, $18 - db $04, $00 - db $04, $18 - db $04, $00 - db $00 ; terminator - -SeelStageAnimationData2: - db $02, $03 - db $02, $04 - db $02, $05 - db $10, $03 - db $04, $18 - db $04, $03 - db $04, $18 - db $04, $03 - db $04, $18 - db $04, $03 - db $00 ; terminator - -SeelStageAnimationData3: - db $02, $06 - db $02, $07 - db $02, $08 - db $10, $06 - db $04, $18 - db $04, $06 - db $04, $18 - db $04, $06 - db $04, $18 - db $04, $06 - db $00 ; terminator - -SeelStageAnimationData4: - db $02, $09 - db $02, $0A - db $02, $0B - db $10, $09 - db $04, $18 - db $04, $09 - db $04, $18 - db $04, $09 - db $04, $18 - db $04, $09 - db $00 ; terminator - -SeelStageAnimationData5: - db $02, $0C - db $02, $0D - db $02, $0E - db $10, $0C - db $04, $18 - db $04, $0C - db $04, $18 - db $04, $0C - db $04, $18 - db $04, $0C - db $00 ; terminator - -SeelStageAnimationData6: - db $02, $0F - db $02, $10 - db $02, $11 - db $10, $0F - db $04, $18 - db $04, $0F - db $04, $18 - db $04, $0F - db $04, $18 - db $04, $0F - db $00 ; terminator - -SeelStageAnimationData7: - db $02, $12 - db $02, $13 - db $02, $14 - db $10, $12 - db $04, $18 - db $04, $12 - db $04, $18 - db $04, $12 - db $04, $18 - db $04, $12 - db $00 ; terminator - -SeelStageAnimationData8: - db $02, $15 - db $02, $16 - db $02, $17 - db $10, $15 - db $04, $18 - db $04, $15 - db $04, $18 - db $04, $15 - db $04, $18 - db $04, $15 - db $00 ; terminator - -Func_262f4: ; 0x262f4 - ld a, [wd793] - ld c, a - ld b, $0 -.asm_262fa - ld a, c - and a - jr z, .asm_26306 - ld a, b - add $8 - ld b, a - dec c - ld a, c - jr .asm_262fa - -.asm_26306 - ld a, b - and a - jr z, .asm_2630c - sub $8 -.asm_2630c - ld [wd652], a - ld a, [wd792] - and a - jr z, .asm_2631b - ld b, a - ld a, [wd793] - inc a - sub b -.asm_2631b - ld [wd651], a - ld a, [wd793] - cp $15 - jr c, .asm_2632a - ld a, $14 - ld [wd793], a -.asm_2632a - push af - xor a - ld [wd650], a - pop af - sla a - ld c, a - ld b, $0 - ld hl, TileDataPointers_2634a - ld a, [hGameBoyColorFlag] - and a - jr z, .asm_26340 - ld hl, TileDataPointers_26764 -.asm_26340 - add hl, bc - ld a, [hli] - ld h, [hl] - ld l, a - ld a, Bank(TileDataPointers_2634a) - call Func_10aa - ret - -TileDataPointers_2634a: - dw TileData_26374 - dw TileData_26377 - dw TileData_2637a - dw TileData_2637d - dw TileData_26380 - dw TileData_26383 - dw TileData_26386 - dw TileData_26389 - dw TileData_2638c - dw TileData_2638f - dw TileData_26392 - dw TileData_26395 - dw TileData_26398 - dw TileData_2639b - dw TileData_2639e - dw TileData_263a1 - dw TileData_263a4 - dw TileData_263a7 - dw TileData_263aa - dw TileData_263ad - dw TileData_263b0 - -TileData_26374: ; 0x26374 - db $01 - dw TileData_263b3 - -TileData_26377: ; 0x26377 - db $01 - dw TileData_263e0 - -TileData_2637a: ; 0x2637a - db $01 - dw TileData_2640d - -TileData_2637d: ; 0x2637d - db $01 - dw TileData_2643a - -TileData_26380: ; 0x26380 - db $01 - dw TileData_26467 - -TileData_26383: ; 0x26383 - db $01 - dw TileData_26494 - -TileData_26386: ; 0x26386 - db $01 - dw TileData_264c1 - -TileData_26389: ; 0x26389 - db $01 - dw TileData_264ee - -TileData_2638c: ; 0x2638c - db $01 - dw TileData_2651b - -TileData_2638f: ; 0x2638f - db $01 - dw TileData_26548 - -TileData_26392: ; 0x26392 - db $01 - dw TileData_26575 - -TileData_26395: ; 0x26395 - db $01 - dw TileData_265a2 - -TileData_26398: ; 0x26398 - db $01 - dw TileData_265cf - -TileData_2639b: ; 0x2639b - db $01 - dw TileData_265fc - -TileData_2639e: ; 0x2639e - db $01 - dw TileData_26629 - -TileData_263a1: ; 0x263a1 - db $01 - dw TileData_26656 - -TileData_263a4: ; 0x263a4 - db $01 - dw TileData_26683 - -TileData_263a7: ; 0x263a7 - db $01 - dw TileData_266b0 - -TileData_263aa: ; 0x263aa - db $01 - dw TileData_266dd - -TileData_263ad: ; 0x263ad - db $01 - dw TileData_2670a - -TileData_263b0: ; 0x263b0 - db $01 - dw TileData_26737 - -TileData_263b3: ; 0x263b3 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $01, $30, $31 - - db $03 ; number of tiles - dw vBGMap + $3 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $6 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_263e0: ; 0x263e0 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $30, $31 - - db $03 ; number of tiles - dw vBGMap + $3 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $6 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_2640d: ; 0x2640d - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $31 - - db $03 ; number of tiles - dw vBGMap + $3 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $6 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_2643a: ; 0x2643a - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $6 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_26467: ; 0x26467 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $6 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_26494: ; 0x26494 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $32 - - db $03 ; number of tiles - dw vBGMap + $6 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_264c1: ; 0x264c1 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_264ee: ; 0x264ee - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_2651b: ; 0x2651b - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $32 - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_26548: ; 0x26548 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_26575: ; 0x26575 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_265a2: ; 0x265a2 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $32 - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_265cf: ; 0x265cf - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $32, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_265fc: ; 0x265fc - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $32, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_26629: ; 0x26629 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $3A, $32 - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_26656: ; 0x26656 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $F - db $32, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_26683: ; 0x26683 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $F - db $3A, $32, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_266b0: ; 0x266b0 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $F - db $3A, $3A, $33 - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_266dd: ; 0x266dd - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $F - db $3A, $3A, $3A - - db $02 ; number of tiles - dw vBGMap + $12 - db $34, $04 - - db $00 ; terminator - -TileData_2670a: ; 0x2670a - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $F - db $3A, $3A, $3A - - db $02 ; number of tiles - dw vBGMap + $12 - db $3B, $04 - - db $00 ; terminator - -TileData_26737: ; 0x26737 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $38, $39, $3A - - db $03 ; number of tiles - dw vBGMap + $3 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $6 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $9 - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $C - db $3A, $3A, $3A - - db $03 ; number of tiles - dw vBGMap + $F - db $3A, $3A, $3A - - db $02 ; number of tiles - dw vBGMap + $12 - db $3B, $38 - - db $00 ; terminator - -TileDataPointers_26764: - dw TileData_2678e - dw TileData_26791 - dw TileData_26794 - dw TileData_26797 - dw TileData_2679a - dw TileData_2679d - dw TileData_267a0 - dw TileData_267a3 - dw TileData_267a6 - dw TileData_267a9 - dw TileData_267ac - dw TileData_267af - dw TileData_267b2 - dw TileData_267b5 - dw TileData_267b8 - dw TileData_267bb - dw TileData_267be - dw TileData_267c1 - dw TileData_267c4 - dw TileData_267c7 - dw TileData_267ca - -TileData_2678e: ; 0x2678e - db $01 - dw TileData_267cd - -TileData_26791: ; 0x26791 - db $01 - dw TileData_267fa - -TileData_26794: ; 0x26794 - db $01 - dw TileData_26827 - -TileData_26797: ; 0x26797 - db $01 - dw TileData_26854 - -TileData_2679a: ; 0x2679a - db $01 - dw TileData_26881 - -TileData_2679d: ; 0x2679d - db $01 - dw TileData_268ae - -TileData_267a0: ; 0x267a0 - db $01 - dw TileData_268db - -TileData_267a3: ; 0x267a3 - db $01 - dw TileData_26908 - -TileData_267a6: ; 0x267a6 - db $01 - dw TileData_26935 - -TileData_267a9: ; 0x267a9 - db $01 - dw TileData_26962 - -TileData_267ac: ; 0x267ac - db $01 - dw TileData_2698f - -TileData_267af: ; 0x267af - db $01 - dw TileData_269bc - -TileData_267b2: ; 0x267b2 - db $01 - dw TileData_269e9 - -TileData_267b5: ; 0x267b5 - db $01 - dw TileData_26a16 - -TileData_267b8: ; 0x267b8 - db $01 - dw TileData_26a43 - -TileData_267bb: ; 0x267bb - db $01 - dw TileData_26a70 - -TileData_267be: ; 0x267be - db $01 - dw TileData_26a9d - -TileData_267c1: ; 0x267c1 - db $01 - dw TileData_26aca - -TileData_267c4: ; 0x267c4 - db $01 - dw TileData_26af7 - -TileData_267c7: ; 0x267c7 - db $01 - dw TileData_26b24 - -TileData_267ca: ; 0x267ca - db $01 - dw TileData_26b51 - -TileData_267cd: ; 0x267cd - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $FB, $18, $19 - - db $03 ; number of tiles - dw vBGMap + $3 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $6 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_267fa: ; 0x267fa - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $18, $19 - - db $03 ; number of tiles - dw vBGMap + $3 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $6 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26827: ; 0x26827 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $19 - - db $03 ; number of tiles - dw vBGMap + $3 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $6 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26854: ; 0x26854 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $6 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26881: ; 0x26881 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $6 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_268ae: ; 0x268ae - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1A - - db $03 ; number of tiles - dw vBGMap + $6 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_268db: ; 0x268db - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26908: ; 0x26908 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26935: ; 0x26935 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1A - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26962: ; 0x26962 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_2698f: ; 0x2698f - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_269bc: ; 0x269bc - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1A - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_269e9: ; 0x269e9 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1A, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26a16: ; 0x26a16 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1A, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26a43: ; 0x26a43 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1D, $1A - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26a70: ; 0x26a70 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $F - db $1A, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26a9d: ; 0x26a9d - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $F - db $1D, $1A, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26aca: ; 0x26aca - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $F - db $1D, $1D, $19 - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26af7: ; 0x26af7 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $F - db $1D, $1D, $1D - - db $02 ; number of tiles - dw vBGMap + $12 - db $18, $FB - - db $00 ; terminator - -TileData_26b24: ; 0x26b24 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $F - db $1D, $1D, $1D - - db $02 ; number of tiles - dw vBGMap + $12 - db $1E, $FB - - db $00 ; terminator - -TileData_26b51: ; 0x26b51 - dw LoadTileLists - db $14 ; total number of tiles - - db $03 ; number of tiles - dw vBGMap - db $1B, $1C, $1D - - db $03 ; number of tiles - dw vBGMap + $3 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $6 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $9 - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $C - db $1D, $1D, $1D - - db $03 ; number of tiles - dw vBGMap + $F - db $1D, $1D, $1D - - db $02 ; number of tiles - dw vBGMap + $12 - db $1E, $1B - - db $00 ; terminator - +INCLUDE "engine/pinball_game/object_collision/seel_bonus_resolve_collision.asm" INCLUDE "engine/pinball_game/draw_sprites/draw_seel_bonus_sprites.asm" SECTION "banka", ROMX, BANK[$a] |