diff options
20 files changed, 1310 insertions, 1260 deletions
diff --git a/constants/pinball_game_constants.asm b/constants/pinball_game_constants.asm index aad6e43..fb7152d 100644 --- a/constants/pinball_game_constants.asm +++ b/constants/pinball_game_constants.asm @@ -13,4 +13,5 @@ NUM_MEWTWO_COMPLETIONS_FOR_MEW EQU 2 MAX_BONUS_MULTIPLIER EQU 99
MAX_BONUS_MULTIPLIER_FIELD_EVENTS EQU 11
-MAP_MOVE_FRAMES_COUNTER EQU 480 ; 8 seconds until the map move counter decrease by 1
+MAP_MOVE_FRAMES_COUNTER EQU 480 ; 8 seconds until the map move counter decrease by 1
+PINBALL_UPGRADE_FRAMES_COUNTER EQU 3600 ; ~1 minute until the pinball type degrades one stage. (e.g. Great Ball -> Pokeball)
diff --git a/data/queued_tiledata/ball_upgrade.asm b/data/queued_tiledata/ball_upgrade.asm new file mode 100755 index 0000000..89ba1fc --- /dev/null +++ b/data/queued_tiledata/ball_upgrade.asm @@ -0,0 +1,455 @@ +PinballUpgradeTransition_TileDataPointers:
+ 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
+
+PinballUpgradeTransitionPalettes:
+ dw TransitionToPokeBall_PaletteData
+ dw TransitionToPokeBall_PaletteData
+ dw TransitionToGreatBall_PaletteData
+ dw TransitionToUltraBall_PaletteData
+ dw TransitionToUltraBall_PaletteData
+ dw TransitionToMasterBall_PaletteData
+
+TransitionToPokeBall_PaletteData:
+ db $08
+ db $04 ; number of colors
+ db $40
+ dw PokeBallObjPalette
+ db Bank(PokeBallObjPalette)
+ db $00 ; terminator
+
+TransitionToGreatBall_PaletteData:
+ db $08
+ db $04 ; number of colors
+ db $40
+ dw GreatBallObjPalette
+ db Bank(GreatBallObjPalette)
+ db $00 ; terminator
+
+TransitionToUltraBall_PaletteData:
+ db $08
+ db $04 ; number of colors
+ db $40
+ dw UltraBallObjPalette
+ db Bank(UltraBallObjPalette)
+ db $00 ; terminator
+
+TransitionToMasterBall_PaletteData:
+ db $08
+ db $04 ; number of colors
+ db $40
+ dw MasterBallObjPalette
+ db Bank(MasterBallObjPalette)
+ db $00 ; terminator
diff --git a/data/queued_tiledata/blue_field/ball_upgrade_triggers.asm b/data/queued_tiledata/blue_field/ball_upgrade_triggers.asm new file mode 100755 index 0000000..8a94024 --- /dev/null +++ b/data/queued_tiledata/blue_field/ball_upgrade_triggers.asm @@ -0,0 +1,91 @@ +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
diff --git a/data/queued_tiledata/blue_field/cave_lights.asm b/data/queued_tiledata/blue_field/cave_lights.asm new file mode 100755 index 0000000..183c42c --- /dev/null +++ b/data/queued_tiledata/blue_field/cave_lights.asm @@ -0,0 +1,167 @@ +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
diff --git a/data/queued_tiledata/red_field/ball_upgrade_triggers.asm b/data/queued_tiledata/red_field/ball_upgrade_triggers.asm new file mode 100755 index 0000000..8a0076b --- /dev/null +++ b/data/queued_tiledata/red_field/ball_upgrade_triggers.asm @@ -0,0 +1,127 @@ +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
diff --git a/data/queued_tiledata/red_field/cave_lights.asm b/data/queued_tiledata/red_field/cave_lights.asm new file mode 100755 index 0000000..20c09f3 --- /dev/null +++ b/data/queued_tiledata/red_field/cave_lights.asm @@ -0,0 +1,167 @@ +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
diff --git a/engine/pinball_game/ball_init/ball_init_blue_field.asm b/engine/pinball_game/ball_init/ball_init_blue_field.asm index ce27573..e2303c8 100644 --- a/engine/pinball_game/ball_init/ball_init_blue_field.asm +++ b/engine/pinball_game/ball_init/ball_init_blue_field.asm @@ -25,14 +25,14 @@ InitBallBlueField: ; 0x1c08d ld [wPikachuSaverSlotRewardActive], a
ld [wd51e], a
ld [wPikachuSaverCharge], a
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [wLeftMapMoveCounter], a
ld [wRightMapMoveCounter], a
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld [hli], a
ld [hli], a
ld [hli], a
diff --git a/engine/pinball_game/ball_init/ball_init_red_field.asm b/engine/pinball_game/ball_init/ball_init_red_field.asm index a9a8a1a..cb48865 100644 --- a/engine/pinball_game/ball_init/ball_init_red_field.asm +++ b/engine/pinball_game/ball_init/ball_init_red_field.asm @@ -34,14 +34,14 @@ InitBallRedField: ; 0x3007d ld [wPikachuSaverSlotRewardActive], a
ld [wPikachuSaverCharge], a
ld [wd51e], a
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld [hli], a
ld [hli], a
ld [hli], a
ld [hli], a
ld [wLeftMapMoveCounter], a
ld [wRightMapMoveCounter], a
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld [hli], a
ld [hli], a
ld [hli], a
diff --git a/engine/pinball_game/ball_saver/ball_saver_20.asm b/engine/pinball_game/ball_saver/ball_saver_20.asm index db4c55b..78dd4ff 100644 --- a/engine/pinball_game/ball_saver/ball_saver_20.asm +++ b/engine/pinball_game/ball_saver/ball_saver_20.asm @@ -2,7 +2,7 @@ Start20SecondSaverTimer: ; 0xdbba ld a, $1
ld [wBallSaverIconOn], a
ld a, $ff
- ld [wd4a2], a
+ ld [wBallSaverFlashRate], a
ld a, 59
ld [wBallSaverTimerFrames], a
ld a, 20
diff --git a/engine/pinball_game/ball_saver/ball_saver_30.asm b/engine/pinball_game/ball_saver/ball_saver_30.asm index be1dda9..8df9643 100644 --- a/engine/pinball_game/ball_saver/ball_saver_30.asm +++ b/engine/pinball_game/ball_saver/ball_saver_30.asm @@ -2,7 +2,7 @@ Start30SecondSaverTimer: ; 0xef35 ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
- ld [wd4a2], a
+ ld [wBallSaverFlashRate], a
ld a, 59
ld [wBallSaverTimerFrames], a
ld a, 30
diff --git a/engine/pinball_game/ball_saver/ball_saver_60.asm b/engine/pinball_game/ball_saver/ball_saver_60.asm index 9b6b5ef..e26934f 100644 --- a/engine/pinball_game/ball_saver/ball_saver_60.asm +++ b/engine/pinball_game/ball_saver/ball_saver_60.asm @@ -2,7 +2,7 @@ Start60SecondSaverTimer: ; 0xef4f ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
- ld [wd4a2], a
+ ld [wBallSaverFlashRate], a
ld a, 59
ld [wBallSaverTimerFrames], a
ld a, 60
diff --git a/engine/pinball_game/ball_saver/ball_saver_90.asm b/engine/pinball_game/ball_saver/ball_saver_90.asm index 7acda2c..6f5dc25 100644 --- a/engine/pinball_game/ball_saver/ball_saver_90.asm +++ b/engine/pinball_game/ball_saver/ball_saver_90.asm @@ -2,7 +2,7 @@ Start90SecondSaverTimer: ; 0xef69 ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
- ld [wd4a2], a
+ ld [wBallSaverFlashRate], a
ld a, 59
ld [wBallSaverTimerFrames], a
ld a, 90
diff --git a/engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm b/engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm index 2d1dbdd..5e308d8 100644 --- a/engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm +++ b/engine/pinball_game/ball_saver/ball_saver_catchem_mode.asm @@ -8,7 +8,7 @@ InitBallSaverForCatchEmMode: ; 0xdbd4 ld a, $0
ld [wBallSaverIconOn], a
ld a, $ff
- ld [wd4a2], a
+ ld [wBallSaverFlashRate], a
ld a, 59
ld [wBallSaverTimerFrames], a
ld a, 60
@@ -43,9 +43,9 @@ RestoreBallSaverAfterCatchEmMode: ; 0xdc00 ld c, $ff
.asm_dc34
ld a, c
- ld [wd4a2], a
+ ld [wBallSaverFlashRate], a
ld a, [wCurrentStage]
bit 0, a
ret z
- callba Func_14707
+ callba DrawBallSaverIcon
ret
diff --git a/engine/pinball_game/load_stage_data/load_blue_field.asm b/engine/pinball_game/load_stage_data/load_blue_field.asm index 7d5c888..67dd0f2 100644 --- a/engine/pinball_game/load_stage_data/load_blue_field.asm +++ b/engine/pinball_game/load_stage_data/load_blue_field.asm @@ -1,5 +1,5 @@ _LoadStageDataBlueFieldTop: ; 0x1c165
- call asm_1e475
+ call LoadPinballUpgradeTriggersGraphics_BlueField
call UpdateSpinnerChargeGraphics_BlueField
call Func_1c3ee
call Func_1e8f6
@@ -15,12 +15,12 @@ _LoadStageDataBlueFieldBottom: ; 0x1c191 call Func_1c1db
call Func_1c4b6
call Func_1c2cb
- call Func_1e627
+ call LoadCAVELightsGraphics_BlueField
call Func_1c43c
call Func_1c305
call Func_1c3ee
callba Func_14746
- callba Func_14707
+ callba DrawBallSaverIcon
call Func_1c235
call Func_1c21e
call Func_1e8f6
diff --git a/engine/pinball_game/load_stage_data/load_red_field.asm b/engine/pinball_game/load_stage_data/load_red_field.asm index 1e40057..c194aa6 100644 --- a/engine/pinball_game/load_stage_data/load_red_field.asm +++ b/engine/pinball_game/load_stage_data/load_red_field.asm @@ -1,7 +1,7 @@ _LoadStageDataRedFieldTop: ; 0x14000
call Func_14091
call Func_159f4
- call Func_15450
+ call LoadPinballUpgradeTriggersGraphics_RedField
call Func_16859
call UpdateSpinnerChargeGraphics_RedField
call Func_14234
@@ -14,12 +14,12 @@ _LoadStageDataRedFieldBottom: ; 0x1401c call Func_14091
call Func_14377
call Func_14135
- call Func_asm_1522d
+ call LoadCAVELightsGraphics_RedField
call Func_14282
call Func_1414b
call Func_14234
call Func_14746
- call Func_14707
+ call DrawBallSaverIcon
call Func_140f9
call Func_16878
call Func_140e2
diff --git a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm index 9941acb..fe31309 100644 --- a/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/blue_stage_resolve_collision.asm @@ -1,9 +1,9 @@ ResolveBlueFieldTopGameObjectCollisions: ; 0x1c715
call ResolveShellderCollision
call ResolveBlueStageSpinnerCollision
- call ResolveBlueStagePinballUpgradeTriggersCollision
- call HandleBlueStageBallTypeUpgradeCounter
- call Func_1e66a
+ call ResolveBallUpgradeTriggersCollision_BlueField
+ call UpdateBallTypeUpgradeCounter_BlueField
+ call UpdateCAVELightsBlinking_BlueField
call ResolveBlueStageBoardTriggerCollision
call ResolveBlueStagePikachuCollision
call ResolveSlowpokeCollision
@@ -14,7 +14,7 @@ ResolveBlueFieldTopGameObjectCollisions: ; 0x1c715 call Func_1e9c0
call UpdateForceFieldDirection
call Func_1f18a
- callba Func_146a9
+ callba UpdateBallSaverState
call Func_1f27b
call UpdateMapMoveCounters_BlueFieldTop
callba HandleExtraBall
@@ -27,9 +27,9 @@ ResolveBlueFieldBottomGameObjectCollisions: ; 0x1c769 call ResolveBlueStageBumperCollision
call ResolvePsyduckPoliwagCollision
call UpdateBlueStageSpinner
- call Func_1e4b8
- call HandleBlueStageBallTypeUpgradeCounter
- call Func_1e5c5
+ call UpdatePinballUpgradeBlinkingAnimation_BlueField
+ call UpdateBallTypeUpgradeCounter_BlueField
+ call ResolveCAVELightCollision_BlueField
call ResolveBlueStagePinballLaunchCollision
call ResolveBlueStagePikachuCollision
call Func_1ead4
@@ -39,7 +39,7 @@ ResolveBlueFieldBottomGameObjectCollisions: ; 0x1c769 call Func_1ea0a
call UpdateForceFieldDirection
callba Func_14733
- callba Func_146a2
+ callba UpdateBallSaver
call Func_1f261
call UpdateMapMoveCounters_BlueFieldBottom
callba HandleExtraBall
@@ -2010,10 +2010,10 @@ UpdateMapMoveCounters_BlueFieldTop: ; 0x1df15 INCLUDE "data/queued_tiledata/blue_field/poliwag_psyduck.asm"
-ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356
+ResolveBallUpgradeTriggersCollision_BlueField: ; 0x1e356
ld a, [wWhichPinballUpgradeTrigger]
and a
- jp z, Func_1e471
+ jp z, UpdatePinballUpgradeTriggers
xor a
ld [wWhichPinballUpgradeTrigger], a
ld a, [wStageCollisionState]
@@ -2028,10 +2028,10 @@ ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356 .asm_1e386
ld a, [wStageCollisionState]
bit 0, a
- jp z, Func_1e471
- ld a, [wd5fc]
+ jp z, UpdatePinballUpgradeTriggers
+ ld a, [wBallUpgradeTriggersBlinking]
and a
- jp nz, Func_1e471
+ jp nz, UpdatePinballUpgradeTriggers
xor a
ld [wRightAlleyTrigger], a
ld [wLeftAlleyTrigger], a
@@ -2042,35 +2042,35 @@ ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356 sub $13
ld c, a
ld b, $0
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
add hl, bc
ld a, [hl]
ld [hl], $1
and a
- jr z, .asm_1e3bf
+ jr z, .toggled
ld [hl], $0
-.asm_1e3bf
+.toggled
ld bc, OneHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld a, [hli]
and [hl]
inc hl
and [hl]
- jr nz, .asm_1e3de
+ jr nz, .allTriggersOn
lb de, $00, $09
call PlaySoundEffect
- jp asm_1e475
+ jp LoadPinballUpgradeTriggersGraphics_BlueField
-.asm_1e3de
+.allTriggersOn
ld a, $1
- ld [wd5fc], a
+ ld [wBallUpgradeTriggersBlinking], a
ld a, $80
- ld [wd5fd], a
+ ld [wBallUpgradeTriggersBlinkingFramesRemaining], a
; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER & $ff
ld [wBallTypeCounter], a
- ld a, $e
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER >> 8
ld [wBallTypeCounter + 1], a
ld bc, FourHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
@@ -2093,7 +2093,7 @@ ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356 ld [wBallType], a
add $30
ld [wBottomMessageText + $12], a
- jr .asm_1e465
+ jr .done
.masterBall
lb de, $0f, $4d
@@ -2114,48 +2114,52 @@ ResolveBlueStagePinballUpgradeTriggersCollision: ; 0x1e356 ld hl, wScrollingText1
ld de, FieldMultiplierSpecialBonusText
call LoadScrollingText
-.asm_1e465
+.done
callba TransitionPinballUpgrade
- jr asm_1e475
+ jr LoadPinballUpgradeTriggersGraphics_BlueField
-Func_1e471: ; 0x1e471
- call Func_1e4b8
+UpdatePinballUpgradeTriggers: ; 0x1e471
+ call UpdatePinballUpgradeBlinkingAnimation_BlueField
ret z
-asm_1e475: ; 0x1e475
- ld hl, wd5fb
+ ; fall through
+LoadPinballUpgradeTriggersGraphics_BlueField: ; 0x1e475
+; Loads the on or off graphics for each of the 3 pinball upgrade trigger dots, depending on their current toggle state.
+ ld hl, wBallUpgradeTriggerStates + 2
ld b, $3
-.asm_1e47a
+.loop
ld a, [hld]
push hl
- call Func_1e484
+ call LoadPinballUpgradeTriggerGraphics_BlueField
pop hl
dec b
- jr nz, .asm_1e47a
+ jr nz, .loop
ret
-Func_1e484: ; 0x1e484
+LoadPinballUpgradeTriggerGraphics_BlueField: ; 0x1e484
+; Loads the on or off graphics for one of the 3 pinball upgrade trigger dots, depending on its current toggle state.
+; Input: a = toggle state
and a
- jr z, .asm_1e496
+ jr z, .toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_1e491
+ jr nz, .toggledOnGameboy
ld hl, TileDataPointers_1e520
- jr .asm_1e4a3
+ jr .load
-.asm_1e491
+.toggledOnGameboy
ld hl, TileDataPointers_1e556
- jr .asm_1e4a3
+ jr .load
-.asm_1e496
+.toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_1e4a0
+ jr nz, .toggledOffGameboy
ld hl, TileDataPointers_1e526
- jr .asm_1e4a3
+ jr .load
-.asm_1e4a0
+.toggledOffGameboy
ld hl, TileDataPointers_1e55c
-.asm_1e4a3
+.load
push bc
dec b
sla b
@@ -2171,24 +2175,27 @@ Func_1e484: ; 0x1e484 pop bc
ret
-Func_1e4b8: ; 0x1e4b8
- ld a, [wd5fc]
+UpdatePinballUpgradeBlinkingAnimation_BlueField: ; 0x1e4b8
+; Controls the brief blinking animation of the 3 upgrade triggers after successfully
+; upgrading the pinball.
+ ld a, [wBallUpgradeTriggersBlinking]
and a
- jr z, .asm_1e4e5
- ld a, [wd5fd]
+ jr z, .notBlinking
+ ld a, [wBallUpgradeTriggersBlinkingFramesRemaining]
dec a
- ld [wd5fd], a
- jr nz, .asm_1e4ca
- ld [wd5fc], a
-.asm_1e4ca
+ ld [wBallUpgradeTriggersBlinkingFramesRemaining], a
+ jr nz, .stillBlinking
+ ld [wBallUpgradeTriggersBlinking], a
+.stillBlinking
and $7
- jr nz, .asm_1e4e3
- ld a, [wd5fd]
+ jr nz, .dontFlipState
+ ; Blink the triggers on or off
+ ld a, [wBallUpgradeTriggersBlinkingFramesRemaining]
srl a
srl a
srl a
and $1
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld [hli], a
ld [hli], a
ld [hl], a
@@ -2196,16 +2203,16 @@ Func_1e4b8: ; 0x1e4b8 and a
ret
-.asm_1e4e3
+.dontFlipState
xor a
ret
-.asm_1e4e5
+.notBlinking
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
- jr z, .leftFlipperKeyIsPressed
+ jr z, .checkRightFlipperKeyPress
; left flipper key is pressed
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -2220,12 +2227,12 @@ Func_1e4b8: ; 0x1e4b8 ld [hl], a
ret
-.leftFlipperKeyIsPressed
+.checkRightFlipperKeyPress
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
; right flipper key is pressed
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -2258,99 +2265,9 @@ BallTypeDegradation2BlueField: ; 0x1e51a 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
+INCLUDE "data/queued_tiledata/blue_field/ball_upgrade_triggers.asm"
-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
+UpdateBallTypeUpgradeCounter_BlueField: ; 0x1e58c
ld a, [wCapturingMon]
and a
ret nz
@@ -2367,7 +2284,7 @@ HandleBlueStageBallTypeUpgradeCounter: ; 0x1e58c ld [hl], c
or c
ret nz
- ; counter is now 0! Degrade the ball upgrade.
+ ; counter is now 0! Degrade the ball upgrade type.
ld a, [wBallType]
ld c, a
ld b, $0
@@ -2378,28 +2295,28 @@ HandleBlueStageBallTypeUpgradeCounter: ; 0x1e58c and a
jr z, .pokeball
; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER & $ff
ld [wBallTypeCounter], a
- ld a, $e
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER >> 8
ld [wBallTypeCounter + 1], a
.pokeball
callba TransitionPinballUpgrade
ret
-Func_1e5c5: ; 0x1e5c5
+ResolveCAVELightCollision_BlueField: ; 0x1e5c5
ld a, [wWhichCAVELight]
and a
- jr z, .asm_1e623
+ jr z, .noCollision
xor a
ld [wWhichCAVELight], a
- ld a, [wd513]
+ ld a, [wCAVELightsBlinking]
and a
- jr nz, .asm_1e623
+ jr nz, .noCollision
ld a, [wWhichCAVELightId]
sub $16
ld c, a
ld b, $0
- ld hl, wd50f
+ ld hl, wCAVELightStates
add hl, bc
ld a, [hl]
ld [hl], $1
@@ -2407,66 +2324,69 @@ Func_1e5c5: ; 0x1e5c5 ret nz
ld bc, OneHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld a, [hli]
and [hl]
inc hl
and [hl]
inc hl
and [hl]
- jr z, Func_1e627
+ jr z, LoadCAVELightsGraphics_BlueField
ld a, $1
- ld [wd513], a
+ ld [wCAVELightsBlinking], a
ld a, $80
- ld [wd514], a
+ ld [wCAVELightsBlinkingFramesRemaining], a
ld bc, FourHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
lb de, $00, $09
call PlaySoundEffect
ld hl, wNumCAVECompletions
call Increment_Max100
- jr Func_1e627
+ jr LoadCAVELightsGraphics_BlueField
-.asm_1e623
- call Func_1e66a
+.noCollision
+ call UpdateCAVELightsBlinking_BlueField
ret z
; fall through
-Func_1e627: ; 0x1e627
- ld hl, wd512
+LoadCAVELightsGraphics_BlueField: ; 0x1e627
+; Loads the graphics for each of the 4 CAVE lights, depending on what their current toggled state is.
+ ld hl, wCAVELightStates + 3
ld b, $4
-.asm_1e62c
+.loop
ld a, [hld]
push hl
- call Func_1e636
+ call LoadCAVELightGraphics_BlueField
pop hl
dec b
- jr nz, .asm_1e62c
+ jr nz, .loop
ret
-Func_1e636: ; 0x1e636
+LoadCAVELightGraphics_BlueField: ; 0x1e636
+; Loads a graphics for single CAVE light.
+; Input: a = toggle state for CAVE light
and a
- jr z, .asm_1e648
+ jr z, .toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_1e643
+ jr nz, .toggledOnGameboy
ld hl, TileDataPointers_1e6d7
- jr .asm_1e655
+ jr .load
-.asm_1e643
+.toggledOnGameboy
ld hl, TileDataPointers_1e717
- jr .asm_1e655
+ jr .load
-.asm_1e648
+.toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_1e652
+ jr nz, .toggledOffGameboy
ld hl, TileDataPointers_1e6df
- jr .asm_1e655
+ jr .load
-.asm_1e652
+.toggledOffGameboy
ld hl, TileDataPointers_1e71f
-.asm_1e655
+.load
push bc
dec b
sla b
@@ -2482,15 +2402,15 @@ Func_1e636: ; 0x1e636 pop bc
ret
-Func_1e66a: ; 0x1e66a
- ld a, [wd513]
+UpdateCAVELightsBlinking_BlueField: ; 0x1e66a
+ ld a, [wCAVELightsBlinking]
and a
- jr z, .asm_1e6a0
- ld a, [wd514]
+ jr z, .notBlinking
+ ld a, [wCAVELightsBlinkingFramesRemaining]
dec a
- ld [wd514], a
+ ld [wCAVELightsBlinkingFramesRemaining], a
jr nz, .asm_1e687
- ld [wd513], a
+ ld [wCAVELightsBlinking], a
ld a, $1
ld [wd608], a
ld a, $3
@@ -2499,12 +2419,12 @@ Func_1e66a: ; 0x1e66a .asm_1e687
and $7
ret nz
- ld a, [wd514]
+ ld a, [wCAVELightsBlinkingFramesRemaining]
srl a
srl a
srl a
and $1
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld [hli], a
ld [hli], a
ld [hli], a
@@ -2513,11 +2433,11 @@ Func_1e66a: ; 0x1e66a and a
ret
-.asm_1e6a0
+.notBlinking
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
- jr z, .asm_1e6bc
- ld hl, wd50f
+ jr z, .checkRightFlipperKeyPress
+ ld hl, wCAVELightStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -2536,11 +2456,11 @@ Func_1e66a: ; 0x1e66a ld [hl], a
ret
-.asm_1e6bc
+.checkRightFlipperKeyPress
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -2559,173 +2479,7 @@ Func_1e66a: ; 0x1e66a 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
+INCLUDE "data/queued_tiledata/blue_field/cave_lights.asm"
Func_1e757: ; 0x1e757
ld a, [wSlotCollision]
diff --git a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm index 80dd824..f8c7a6f 100644 --- a/engine/pinball_game/object_collision/red_stage_resolve_collision.asm +++ b/engine/pinball_game/object_collision/red_stage_resolve_collision.asm @@ -3,9 +3,9 @@ ResolveRedFieldTopGameObjectCollisions: ; 0x1460e
call ResolveVoltorbCollision
call ResolveRedStageSpinnerCollision
- call ResolveRedStagePinballUpgradeTriggersCollision
- call HandleRedStageBallTypeUpgradeCounter
- call Func_15270
+ call ResolveBallUpgradeTriggersCollision_RedField
+ call UpdateBallTypeUpgradeCounter_RedField
+ call UpdateCAVELightsBlinking_RedField
call ResolveRedStageBoardTriggerCollision
call ResolveRedStagePikachuCollision
call ResolveStaryuCollision
@@ -13,7 +13,7 @@ ResolveRedFieldTopGameObjectCollisions: ; 0x1460e call ResolveDittoSlotCollision
call Func_161e0
call Func_164e3
- call Func_146a9
+ call UpdateBallSaverState
call Func_174ea
call UpdateMapMoveCounters_RedFieldTop
callba HandleExtraBall
@@ -27,9 +27,9 @@ ResolveRedFieldBottomGameObjectCollisions: ; 0x14652 call ResolveDiglettCollision
call UpdateMapMoveCounters_RedFieldBottom
call UpdateRedStageSpinner
- call Func_154a9
- call HandleRedStageBallTypeUpgradeCounter
- call Func_151cb
+ call UpdatePinballUpgradeBlinkingAnimation_RedField
+ call UpdateBallTypeUpgradeCounter_RedField
+ call ResolveCAVELightCollision_RedField
call ResolveRedStagePinballLaunchCollision
call ResolveRedStagePikachuCollision
call Func_167ff
@@ -39,39 +39,39 @@ ResolveRedFieldBottomGameObjectCollisions: ; 0x14652 call Func_161af
call Func_164e3
call Func_14733
- call Func_146a2
+ call UpdateBallSaver
call Func_174d0
callba HandleExtraBall
ld a, $0
callba Func_10000
ret
-Func_146a2: ; 0x146a2
- call Func_146a9
- call nz, Func_14707
+UpdateBallSaver: ; 0x146a2
+ call UpdateBallSaverState
+ call nz, DrawBallSaverIcon ;redraw icon if its state changed
ret
-Func_146a9: ; 0x146a9
+UpdateBallSaverState: ; 0x146a9
ld a, [wBallSaverTimerFrames]
ld hl, wBallSaverTimerSeconds
- or [hl] ;if both the number of frames and number of seconds left is 0, skip
+ or [hl] ;skip if timer ran out
ret z
ld a, [wBallXPos + 1]
- cp 154 ;if high? Byte of ball X pos is >= 154, jump ahead
- jr nc, .asm_146e8
+ cp 154 ;if high? Byte of ball X pos is >= 154, don't update timers
+ jr nc, .SkipSecondsOrFramesUpdate
ld a, [wBallSaverTimerFrames]
dec a
ld [wBallSaverTimerFrames], a
bit 7, a
- jr z, .asm_146e8
- ld a, 59
+ jr z, .SkipSecondsOrFramesUpdate
+ ld a, 59 ;if frames underflowed, set to 59 and decrement second
ld [wBallSaverTimerFrames], a
ld a, [hl]
dec a
bit 7, a
- jr nz, .asm_146cf
+ jr nz, .DontClampSeconds ;if seconds would underflow, keep it at 0
ld [hl], a
-.asm_146cf
+.DontClampSeconds
inc a
ld c, $0
cp $2
@@ -85,9 +85,9 @@ Func_146a9: ; 0x146a9 ld c, $ff
.asm_146e4
ld a, c
- ld [wd4a2], a
-.asm_146e8
- ld a, [wd4a2]
+ ld [wBallSaverFlashRate], a
+.SkipSecondsOrFramesUpdate
+ ld a, [wBallSaverFlashRate]
ld c, $0
and a
jr z, .asm_146fe
@@ -96,19 +96,19 @@ Func_146a9: ; 0x146a9 jr z, .asm_146fe
ld hl, hNumFramesDropped
and [hl]
- jr z, .asm_146fe
+ jr z, .asm_146fe ; hNumFramesDropped used as timer for flashing
ld c, $0
.asm_146fe
ld a, [wBallSaverIconOn]
- cp c
+ cp c ;did the icon state change ?
ld a, c
ld [wBallSaverIconOn], a
ret
-Func_14707: ; 0x14707
+DrawBallSaverIcon: ; 0x14707
ld a, [wBallSaverIconOn]
and a
- jr nz, .asm_1471c
+ jr nz, .DrawIconOn
ld a, BANK(BgTileData_1172b)
ld hl, BgTileData_1172b
deCoord 8, 13, vBGMap
@@ -116,7 +116,7 @@ Func_14707: ; 0x14707 call LoadOrCopyVRAMData
ret
-.asm_1471c
+.DrawIconOn
ld a, BANK(BgTileData_1472f)
ld hl, BgTileData_1472f
deCoord 8, 13, vBGMap
@@ -124,10 +124,10 @@ Func_14707: ; 0x14707 call LoadOrCopyVRAMData
ret
-BgTileData_1172b:
+BgTileData_1172b: ;BallSaverIconOffSprite
db $AA, $AB, $AC, $AD
-BgTileData_1472f:
+BgTileData_1472f: ;BallSaverIconOnSprite
db $B4, $B5, $B6, $B7
Func_14733: ; 0x14733
@@ -739,20 +739,20 @@ UpdateSpinnerChargeGraphics_RedField: ; 0x14ece INCLUDE "data/queued_tiledata/red_field/spinner.asm"
-Func_151cb: ; 0x151cb
+ResolveCAVELightCollision_RedField: ; 0x151cb
ld a, [wWhichCAVELight]
and a
jr z, .asm_15229
xor a
ld [wWhichCAVELight], a
- ld a, [wd513]
+ ld a, [wCAVELightsBlinking]
and a
jr nz, .asm_15229
ld a, [wWhichCAVELightId]
sub $a
ld c, a
ld b, $0
- ld hl, wd50f
+ ld hl, wCAVELightStates
add hl, bc
ld a, [hl]
ld [hl], $1
@@ -760,66 +760,69 @@ Func_151cb: ; 0x151cb ret nz
ld bc, OneHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld a, [hli]
and [hl]
inc hl
and [hl]
inc hl
and [hl]
- jr z, Func_asm_1522d
+ jr z, LoadCAVELightsGraphics_RedField
ld a, $1
- ld [wd513], a
+ ld [wCAVELightsBlinking], a
ld a, $80
- ld [wd514], a
+ ld [wCAVELightsBlinkingFramesRemaining], a
ld bc, FourHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
lb de, $00, $09
call PlaySoundEffect
ld hl, wNumCAVECompletions
call Increment_Max100
- jr Func_asm_1522d
+ jr LoadCAVELightsGraphics_RedField
.asm_15229
- call Func_15270
+ call UpdateCAVELightsBlinking_RedField
ret z
; fall through
-Func_asm_1522d: ; 0x1522d
- ld hl, wd512
+LoadCAVELightsGraphics_RedField: ; 0x1522d
+; Loads the graphics for each of the 4 CAVE lights, depending on what their current toggled state is.
+ ld hl, wCAVELightStates + 3
ld b, $4
-.asm_15232
+.loop
ld a, [hld]
push hl
- call Func_1523c
+ call LoadCAVELightGraphics_RedField
pop hl
dec b
- jr nz, .asm_15232
+ jr nz, .loop
ret
-Func_1523c: ; 0x1523c
+LoadCAVELightGraphics_RedField: ; 0x1523c
+; Loads a graphics for single CAVE light.
+; Input: a = toggle state for CAVE light
and a
- jr z, .asm_1524e
+ jr z, .toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_15249
+ jr nz, .toggledOnGameboy
ld hl, TileDataPointers_152dd
- jr .asm_1525b
+ jr .load
-.asm_15249
+.toggledOnGameboy
ld hl, TileDataPointers_1531d
- jr .asm_1525b
+ jr .load
-.asm_1524e
+.toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_15258
+ jr nz, .toggledOffGameboy
ld hl, TileDataPointers_152e5
- jr .asm_1525b
+ jr .load
-.asm_15258
+.toggledOffGameboy
ld hl, TileDataPointers_15325
-.asm_1525b
+.load
push bc
dec b
sla b
@@ -835,15 +838,15 @@ Func_1523c: ; 0x1523c pop bc
ret
-Func_15270: ; 0x15270
- ld a, [wd513]
+UpdateCAVELightsBlinking_RedField: ; 0x15270
+ ld a, [wCAVELightsBlinking]
and a
- jr z, .asm_152a6
- ld a, [wd514]
+ jr z, .notBlinking
+ ld a, [wCAVELightsBlinkingFramesRemaining]
dec a
- ld [wd514], a
+ ld [wCAVELightsBlinkingFramesRemaining], a
jr nz, .asm_1528d
- ld [wd513], a
+ ld [wCAVELightsBlinking], a
ld a, $1
ld [wd608], a
ld a, $3
@@ -852,12 +855,12 @@ Func_15270: ; 0x15270 .asm_1528d
and $7
ret nz
- ld a, [wd514]
+ ld a, [wCAVELightsBlinkingFramesRemaining]
srl a
srl a
srl a
and $1
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld [hli], a
ld [hli], a
ld [hli], a
@@ -866,11 +869,11 @@ Func_15270: ; 0x15270 and a
ret
-.asm_152a6
+.notBlinking
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
- jr z, .asm_152c2
- ld hl, wd50f
+ jr z, .checkRightFlipperKeyPress
+ ld hl, wCAVELightStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -889,11 +892,11 @@ Func_15270: ; 0x15270 ld [hl], a
ret
-.asm_152c2
+.checkRightFlipperKeyPress
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
- ld hl, wd50f
+ ld hl, wCAVELightStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -912,186 +915,20 @@ Func_15270: ; 0x15270 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
+INCLUDE "data/queued_tiledata/red_field/cave_lights.asm"
-ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d
+ResolveBallUpgradeTriggersCollision_RedField: ; 0x1535d
ld a, [wWhichPinballUpgradeTrigger]
and a
- jp z, .asm_1544c
+ jp z, .updatePinballUpgradeTriggersAnimation
xor a
ld [wWhichPinballUpgradeTrigger], a
ld a, [wStageCollisionState]
bit 0, a
- jp z, .asm_1544c
- ld a, [wd5fc]
+ jp z, .updatePinballUpgradeTriggersAnimation
+ ld a, [wBallUpgradeTriggersBlinking]
and a
- jp nz, .asm_1544c
+ jp nz, .updatePinballUpgradeTriggersAnimation
xor a
ld [wRightAlleyTrigger], a
ld [wLeftAlleyTrigger], a
@@ -1103,7 +940,7 @@ ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d sub $e
ld c, a
ld b, $0
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
add hl, bc
ld a, [hl]
ld [hl], $1
@@ -1111,25 +948,25 @@ ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d ret nz
ld bc, OneHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld a, [hli]
and [hl]
inc hl
and [hl]
- jr nz, .asm_153c0
+ jr nz, .allTriggersOn
lb de, $00, $09
call PlaySoundEffect
- jp Func_15450
+ jp LoadPinballUpgradeTriggersGraphics_RedField
-.asm_153c0
+.allTriggersOn
ld a, $1
- ld [wd5fc], a
+ ld [wBallUpgradeTriggersBlinking], a
ld a, $80
- ld [wd5fd], a
+ ld [wBallUpgradeTriggersBlinkingFramesRemaining], a
; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER & $ff
ld [wBallTypeCounter], a
- ld a, $e
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER >> 8
ld [wBallTypeCounter + 1], a
ld bc, FourHundredPoints
callba AddBigBCD6FromQueueWithBallMultiplier
@@ -1152,7 +989,7 @@ ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d ld [wBallType], a
add $30
ld [wBottomMessageText + $12], a
- jr .asm_15447
+ jr .done
.masterBall
lb de, $0f, $4d
@@ -1173,52 +1010,55 @@ ResolveRedStagePinballUpgradeTriggersCollision: ; 0x1535d ld hl, wScrollingText1
ld de, FieldMultiplierSpecialBonusText
call LoadScrollingText
-.asm_15447
+.done
call TransitionPinballUpgrade
- jr Func_15450
+ jr LoadPinballUpgradeTriggersGraphics_RedField
-.asm_1544c
- call Func_154a9
+.updatePinballUpgradeTriggersAnimation
+ call UpdatePinballUpgradeBlinkingAnimation_RedField
ret z
-Func_15450
+LoadPinballUpgradeTriggersGraphics_RedField
+; Loads the on or off graphics for each of the 3 pinball upgrade trigger dots, depending on their current toggle state.
ld a, [wStageCollisionState]
bit 0, a
ret z
- ld hl, wd5fb
+ ld hl, wBallUpgradeTriggerStates + 2
ld b, $3
-.asm_1545b
+.loop
ld a, [hld]
push hl
- call Func_15465
+ call LoadPinballUpgradeTriggerGraphics_RedField
pop hl
dec b
- jr nz, .asm_1545b
+ jr nz, .loop
ret
-Func_15465: ; 0x15465
+LoadPinballUpgradeTriggerGraphics_RedField: ; 0x15465
+; Loads the on or off graphics for one of the 3 pinball upgrade trigger dots, depending on its current toggle state.
+; Input: a = toggle state
and a
- jr z, .asm_15477
+ jr z, .toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_15472
+ jr nz, .toggledOnGameboy
ld hl, TileDataPointers_15511
- jr .asm_15484
+ jr .load
-.asm_15472
+.toggledOnGameboy
ld hl, TileDataPointers_15543
- jr .asm_15484
+ jr .load
-.asm_15477
+.toggledOff
ld a, [hGameBoyColorFlag]
and a
- jr nz, .asm_15481
+ jr nz, .toggledOffGameboy
ld hl, TileDataPointers_15517
- jr .asm_15484
+ jr .load
-.asm_15481
+.toggledOffGameboy
ld hl, TileDataPointers_15549
-.asm_15484
+.load
push bc
dec b
sla b
@@ -1234,38 +1074,39 @@ Func_15465: ; 0x15465 pop bc
ret
-Func_15499: ; 0x15499
+LoadDisabledPinballUpgradeTriggerGraphics_RedField: ; 0x15499
ld a, [hGameBoyColorFlag]
and a
ret nz
ld b, $3
-.asm_1549f
+.loop
push hl
xor a
- call Func_15465
+ call LoadPinballUpgradeTriggerGraphics_RedField
pop hl
dec b
- jr nz, .asm_1549f
+ jr nz, .loop
ret
-Func_154a9: ; 0x154a9
- ld a, [wd5fc]
+UpdatePinballUpgradeBlinkingAnimation_RedField: ; 0x154a9
+ ld a, [wBallUpgradeTriggersBlinking]
and a
- jr z, .asm_154d6
- ld a, [wd5fd]
+ jr z, .notBlinking
+ ld a, [wBallUpgradeTriggersBlinkingFramesRemaining]
dec a
- ld [wd5fd], a
- jr nz, .asm_154bb
- ld [wd5fc], a
-.asm_154bb
+ ld [wBallUpgradeTriggersBlinkingFramesRemaining], a
+ jr nz, .stillBlinking
+ ld [wBallUpgradeTriggersBlinking], a
+.stillBlinking
and $7
- jr nz, .asm_154d4
- ld a, [wd5fd]
+ jr nz, .dontFlipState
+ ; Blink the triggers on or off
+ ld a, [wBallUpgradeTriggersBlinkingFramesRemaining]
srl a
srl a
srl a
and $1
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld [hli], a
ld [hli], a
ld [hl], a
@@ -1273,15 +1114,15 @@ Func_154a9: ; 0x154a9 and a
ret
-.asm_154d4
+.dontFlipState
xor a
ret
-.asm_154d6
+.notBlinking
ld hl, wKeyConfigLeftFlipper
call IsKeyPressed
- jr z, .asm_154ee
- ld hl, wd5f9
+ jr z, .checkRightFlipperKeyPress
+ ld hl, wBallUpgradeTriggerStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -1296,11 +1137,11 @@ Func_154a9: ; 0x154a9 ld [hl], a
ret
-.asm_154ee
+.checkRightFlipperKeyPress
ld hl, wKeyConfigRightFlipper
call IsKeyPressed
ret z
- ld hl, wd5f9
+ ld hl, wBallUpgradeTriggerStates
ld a, [hli]
ld c, a
ld a, [hli]
@@ -1333,135 +1174,9 @@ BallTypeDegradationRedField: ; 0x1550b 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
+INCLUDE "data/queued_tiledata/red_field/ball_upgrade_triggers.asm"
-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
+UpdateBallTypeUpgradeCounter_RedField: ; 0x15575
ld a, [wCapturingMon]
and a
ret nz
@@ -1488,9 +1203,9 @@ HandleRedStageBallTypeUpgradeCounter: ; 0x15575 and a
jr z, .pokeball
; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER & $ff
ld [wBallTypeCounter], a
- ld a, $e
+ ld a, PINBALL_UPGRADE_FRAMES_COUNTER >> 8
ld [wBallTypeCounter + 1], a
.pokeball
call TransitionPinballUpgrade
@@ -1501,16 +1216,16 @@ TransitionPinballUpgrade: ; 0x155a7 ld c, a
sla c
ld b, $0
- ld hl, PinballUpgradeTransitionPointers
+ ld hl, PinballUpgradeTransition_TileDataPointers
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, Bank(PinballUpgradeTransitionPointers)
+ ld a, Bank(PinballUpgradeTransition_TileDataPointers)
call Func_10aa
; fall through
-Func_155bb: ; 0x155bb
+TransitionPinballUpgradePalette: ; 0x155bb
ld a, [hGameBoyColorFlag]
and a
ret z
@@ -1519,448 +1234,17 @@ Func_155bb: ; 0x155bb sla a
ld c, a
ld b, $0
- ld hl, Data_157f7
+ ld hl, PinballUpgradeTransitionPalettes
add hl, bc
ld c, [hl]
inc hl
ld b, [hl]
- ld a, BANK(Data_157f7)
+ ld a, BANK(PinballUpgradeTransitionPalettes)
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
+INCLUDE "data/queued_tiledata/ball_upgrade.asm"
ResolveRedStageBoardTriggerCollision: ; 0x1581f
ld a, [wWhichBoardTrigger]
@@ -4181,8 +3465,8 @@ ResolveStaryuCollision: ; 0x16781 call PlaySoundEffect
ld a, [wStageCollisionState]
bit 0, a
- jp nz, Func_15450
- jp Func_15499
+ jp nz, LoadPinballUpgradeTriggersGraphics_RedField
+ jp LoadDisabledPinballUpgradeTriggerGraphics_RedField
Func_167ff: ; 0x167ff
ld a, [wStaryuCollision]
diff --git a/engine/pinball_game/slot.asm b/engine/pinball_game/slot.asm index 5acb4b1..268e118 100644 --- a/engine/pinball_game/slot.asm +++ b/engine/pinball_game/slot.asm @@ -403,7 +403,7 @@ SlotRewardUpgradeBall: ; 0xf040 ld de, FieldMultiplierSpecialBonusText
call LoadScrollingText
.asm_f0b0
- callba Func_155bb
+ callba TransitionPinballUpgradePalette
ret
BallTypeProgressionBlueField: ; 0xf0bb
diff --git a/home/text.asm b/home/text.asm index cf5145c..b9bcea2 100644 --- a/home/text.asm +++ b/home/text.asm @@ -52,11 +52,11 @@ Func_310a: ; 0x310a LoadMonNameIntoBottomMessageBufferList: ; 0x3125 increases address to load into by 64 ld b, $1 - jr JumpToPlaceText + jr PlaceText PlaceTextLow: ; 0x3129 disables special loads PlaceTextLow ld b, $0 -JumpToPlaceText: ; 0x312b loads e chars of text text into de +PlaceText: ; 0x312b loads e chars of text text into de ld a, [wd805] and a jp nz, UnusedPlaceString ;unused alternate place string @@ -197,7 +197,7 @@ wd49f:: ; 0xd49f wBallSaverIconOn:: ; 0xd4a1 ds $1 -wd4a2:: ; 0xd4a2 +wBallSaverFlashRate:: ; 0xd4a2 ds $1 wBallSaverTimerFrames:: ; 0xd4a3 @@ -469,16 +469,18 @@ wWhichCAVELight:: ; 0xd50d wWhichCAVELightId:: ; 0xd50e ds $1 -wd50f:: ; 0xd50f - ds $3 - -wd512:: ; 0xd512 - ds $1 +wCAVELightStates:: ; 0xd50f +; Marks each of the 4 CAVE lights as On (1) or Off (0). +; When all four are On, it will do a blinking animation, and then open the Slot bonus. + ds $4 -wd513:: ; 0xd513 +wCAVELightsBlinking:: ; 0xd513 +; Set to 1 when the 4 CAVE lights are blinking for a couple seconds after successfully +; lighting up all 4. Set to 0, otherwise. ds $1 -wd514:: ; 0xd514 +wCAVELightsBlinkingFramesRemaining:: ; 0xd514 +; Holds the number of frames remaining in the 4 CAVE lights' blinking animation. ds $1 wWhichPikachu:: ; 0xd515 @@ -782,16 +784,18 @@ wWhichPinballUpgradeTrigger:: ; 0xd5f7 wWhichPinballUpgradeTriggerId:: ; 0xd5f8 ds $1 -wd5f9:: ; 0xd5f9 - ds $2 - -wd5fb:: ; 0xd5fb - ds $1 +wBallUpgradeTriggerStates:: ; 0xd5f9 +; Marks each of the 3 ball upgrade triggers as On (1) or Off (0). +; When all three are On, it upgrades the pinball field multiplier. (e.g. Pokeball -> Great Ball) + ds $3 -wd5fc:: ; 0xd5fc +wBallUpgradeTriggersBlinking:: ; 0xd5fc +; Set to 1 when the 3 ball upgrade triggers are blinking for a couple seconds after successfully +; lighting up all 3. Set to 0, otherwise. ds $1 -wd5fd:: ; 0xd5fd +wBallUpgradeTriggersBlinkingFramesRemaining:: ; 0xd5fd +; Holds the number of frames remaining in the ball upgrade blinking animation. ds $1 wDittoSlotCollision:: ; 0xd5fe |