summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xconstants/pinball_game_constants.asm3
-rwxr-xr-xengine/pinball_game/billboard.asm73
-rwxr-xr-xengine/pinball_game/slot.asm602
-rwxr-xr-xmain.asm712
-rwxr-xr-xwram.asm7
5 files changed, 702 insertions, 695 deletions
diff --git a/constants/pinball_game_constants.asm b/constants/pinball_game_constants.asm
index e52a41f..e16b2c3 100755
--- a/constants/pinball_game_constants.asm
+++ b/constants/pinball_game_constants.asm
@@ -1 +1,4 @@
MAX_PIKACHU_SAVER_CHARGE EQU 15
+
+CATCHEM_MODE_SLOT_REWARD EQU 1
+EVOLUTION_MODE_SLOT_REWARD EQU 2
diff --git a/engine/pinball_game/billboard.asm b/engine/pinball_game/billboard.asm
new file mode 100755
index 0000000..33975b7
--- /dev/null
+++ b/engine/pinball_game/billboard.asm
@@ -0,0 +1,73 @@
+LoadBillboardPicture: ; 0xf178
+; Loads a billboard picture's tiles into VRAM
+; input: a = billboard picture id
+ push hl
+ ld c, a
+ ld b, $0
+ sla c
+ add c ; a has been multplied by 3 becuase entires in BillboardPicturePointers are 3 bytes long
+ ld c, a
+ ld hl, BillboardPicturePointers
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld h, b
+ ld l, c
+ ld de, vTilesSH tile $10 ; destination address to copy the tiles
+ ld bc, $180 ; billboard pictures are $180 bytes
+ call LoadVRAMData ; loads the tiles into VRAM
+ pop hl
+ ret
+
+LoadBillboardOffPicture: ; 0xf196
+; Loads the dimly-lit "off" version of a billboard picture into VRAM
+; Input: a = billboard picture id
+ push hl
+ ld c, a
+ ld b, $0
+ sla c
+ add c
+ ld c, a
+ ld hl, BillboardPicturePointers
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld h, b
+ ld l, c
+ ld bc, $0180 ; get the address of the "off" version of the picture
+ add hl, bc
+ ld de, vTilesSH tile $10
+ ld bc, $0180
+ call LoadVRAMData
+ pop hl
+ ret
+
+INCLUDE "data/billboard/billboard_pic_pointers.asm"
+
+LoadGreyBillboardPaletteData: ; 0xf269
+ ld a, [hGameBoyColorFlag]
+ and a
+ jr z, .loadPaletteMap
+ ld a, BANK(StageRedFieldBottomBGPalette5) ; also used in blue stage
+ ld hl, StageRedFieldBottomBGPalette5
+ ld de, $0030
+ ld bc, $0008
+ call Func_7dc
+.loadPaletteMap
+ ld a, BANK(GreyBillboardPaletteMap)
+ ld de, GreyBillboardPaletteMap
+ hlCoord 7, 4, vBGMap
+ call LoadBillboardPaletteMap
+ ret
+
+GreyBillboardPaletteMap:
+ db $06, $06, $06, $06, $06, $06
+ db $06, $06, $06, $06, $06, $06
+ db $06, $06, $06, $06, $06, $06
+ db $06, $06, $06, $06, $06, $06
diff --git a/engine/pinball_game/slot.asm b/engine/pinball_game/slot.asm
new file mode 100755
index 0000000..f9628f2
--- /dev/null
+++ b/engine/pinball_game/slot.asm
@@ -0,0 +1,602 @@
+Func_ed8e: ; 0xed8e
+ xor a
+ ld [wd803], a
+ ld [wd804], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ld a, [wNumPartyMons]
+ ld [wd620], a
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeMultipliers
+ add hl, bc
+ ld a, [hl]
+ ld [wd621], a
+.asm_edac
+ xor a
+ ld [hJoypadState], a
+ ld [hNewlyPressedButtons], a
+ ld [hPressedButtons], a
+ call HandleTilts
+ ld a, [wCurrentStage]
+ bit 0, a
+ ld [hFarCallTempA], a
+ ld a, $3
+ ld hl, HandleFlippers
+ call nz, BankSwitch
+ callba DrawSpritesForStage
+ call Func_33e3
+ call CleanOAMBuffer
+ rst AdvanceFrame
+ ld a, [wd7af]
+ and a
+ jr nz, .asm_edac
+ ld a, [wd7b3]
+ and a
+ jr nz, .asm_edac
+ ld a, [hGameBoyColorFlag]
+ and a
+ call nz, LoadGreyBillboardPaletteData
+ call GenRandom
+ and $f0
+ ld [wd61a], a
+ xor a
+ ld [wd61b], a
+ ld [wd61e], a
+.asm_6df7
+ ld a, [wd61a]
+ ld c, a
+ ld b, $0
+ ld hl, Data_f339
+ add hl, bc
+ ld a, [wd619]
+ add [hl]
+ ld c, a
+ ld hl, Data_f439
+ add hl, bc
+ ld a, [hli]
+ bit 7, a
+ jr nz, .asm_ee56
+ call Func_eef9
+ ld [wd61d], a
+ push af
+ lb de, $00, $09
+ call PlaySoundEffect
+ pop af
+ call LoadBillboardOffPicture
+ ld a, [wd61b]
+ cp $a
+ jr nc, .asm_ee29
+ ld a, $a
+.asm_ee29
+ ld b, a
+.asm_ee2a
+ push bc
+ call Func_eeee
+ ld a, [wd61e]
+ and a
+ jr nz, .asm_ee47
+ call Func_ef1e
+ jr z, .asm_ee47
+ ld [wd61e], a
+ ld a, $32
+ ld [wd61b], a
+ lb de, $07, $28
+ call PlaySoundEffect
+.asm_ee47
+ pop bc
+ dec b
+ jr nz, .asm_ee2a
+ ld a, [wd61b]
+ inc a
+ ld [wd61b], a
+ cp $3c
+ jr z, .asm_ee69
+.asm_ee56
+ ld a, [wd61a]
+ and $f0
+ ld b, a
+ ld a, [wd61a]
+ inc a
+ and $f
+ or b
+ ld [wd61a], a
+ jp .asm_6df7
+
+.asm_ee69
+ ld a, [wd61d]
+ cp $5
+ jr nz, .asm_ee78
+ lb de, $0c, $42
+ call PlaySoundEffect
+ jr .asm_ee7e
+
+.asm_ee78
+ lb de, $0c, $43
+ call PlaySoundEffect
+.asm_ee7e
+ ld b, $28
+.asm_ee80
+ push bc
+ rst AdvanceFrame
+ pop bc
+ call Func_ef1e
+ jr nz, .asm_ee8b
+ dec b
+ jr nz, .asm_ee80
+.asm_ee8b
+ ld a, [hGameBoyColorFlag]
+ and a
+ ld a, [wd61d]
+ call nz, Func_f2a0
+ ld b, $80
+.asm_ee96
+ push bc
+ ld a, b
+ and $f
+ jr nz, .asm_eeae
+ bit 4, b
+ jr z, .asm_eea8
+ ld a, [wd61d]
+ call LoadBillboardPicture
+ jr .asm_eeae
+
+.asm_eea8
+ ld a, [wd61d]
+ call LoadBillboardOffPicture
+.asm_eeae
+ rst AdvanceFrame
+ pop bc
+ call Func_ef1e
+ jr nz, .asm_eeb8
+ dec b
+ jr nz, .asm_ee96
+.asm_eeb8
+ ld a, [wd619]
+ add $a
+ cp $fa
+ jr nz, .asm_eec3
+ ld a, $64
+.asm_eec3
+ ld [wd619], a
+ ld a, [wd61d]
+ rst JumpTable ; calls JumpToFuncInTable
+SlotRewards_CallTable: ; 0xeeca
+ dw Start30SecondSaverTimer
+ dw Start60SecondSaverTimer
+ dw Start90SecondSaverTimer
+ dw SlotRewardPikachuSaver
+ dw SlotRewardBonusMultiplier
+ dw SlotRewardSmallPoints
+ dw SlotRewardBigPoints
+ dw SlotRewardCatchEmMode
+ dw SlotRewardEvolutionMode
+ dw SlotRewardUpgradeBall
+ dw SlotRewardUpgradeBall
+ dw SlotRewardUpgradeBall
+ dw SlotBonusMultiplier
+ dw SlotRewardGoToBonusStage
+ dw SlotRewardGoToBonusStage
+ dw SlotRewardGoToBonusStage
+ dw SlotRewardGoToBonusStage
+ dw SlotRewardGoToBonusStage
+
+Func_eeee: ; 0xeeee
+ push bc
+ ld bc, $0200
+.asm_eef2
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_eef2
+ pop bc
+ ret
+
+Func_eef9: ; 0xeef9
+ cp $8
+ jr nz, .asm_ef09
+ ld a, [wd620]
+ and a
+ jr nz, .asm_ef06
+ ld a, $7
+ ret
+
+.asm_ef06
+ ld a, $8
+ ret
+
+.asm_ef09
+ cp $9
+ jr nz, .asm_ef14
+ push hl
+ ld hl, wd621
+ add [hl]
+ pop hl
+ ret
+
+.asm_ef14
+ cp $d
+ ret nz
+ push hl
+ ld hl, wd498
+ add [hl]
+ pop hl
+ ret
+
+Func_ef1e: ; 0xef1e
+ push bc
+ ld hl, wKeyConfigRightFlipper
+ call IsKeyPressed
+ jr nz, .asm_ef2d
+ ld hl, wKeyConfigLeftFlipper
+ call IsKeyPressed
+.asm_ef2d
+ pop bc
+ ret
+
+BallTypeMultipliers: ; 0xef2f
+; Score multiplier for each ball type.
+ db $00 ; POKE_BALL
+ db $00
+ db $01 ; GREAT_BALL
+ db $02 ; ULTRA_BALL
+ db $02
+ db $02 ; MASTER_BALL
+
+INCLUDE "engine/pinball_game/ball_saver/ball_saver_30.asm"
+INCLUDE "engine/pinball_game/ball_saver/ball_saver_60.asm"
+INCLUDE "engine/pinball_game/ball_saver/ball_saver_90.asm"
+
+SlotRewardPikachuSaver: ; 0xef83
+ ld a, $1
+ ld [wPikachuSaverSlotRewardActive], a
+ ld a, MAX_PIKACHU_SAVER_CHARGE
+ ld [wPikachuSaverCharge], a
+ xor a
+ ld [wd85d], a
+ call Func_310a
+ rst AdvanceFrame
+ ld a, $0
+ callba PlayPikachuSoundClip
+ ld a, $1
+ ld [wd85d], a
+ ret
+
+SlotRewardBonusMultiplier: ; 0xefa7
+ callba Func_30164
+ ret
+
+SlotRewardSmallPoints: ; 0xefb2
+ ld a, $8
+ call Func_a21
+ ld [wCurSlotBonus], a
+ ld b, $80
+.asm_efbc
+ push bc
+ ld a, b
+ and $f
+ jr nz, .asm_efd8
+ bit 4, b
+ jr z, .asm_efd0
+ ld a, [wCurSlotBonus]
+ add (SmallReward100PointsOnPic_Pointer - BillboardPicturePointers) / 3
+ call LoadBillboardPicture
+ jr .asm_efd8
+
+.asm_efd0
+ ld a, [wCurSlotBonus]
+ add (SmallReward100PointsOnPic_Pointer - BillboardPicturePointers) / 3
+ call LoadBillboardOffPicture
+.asm_efd8
+ rst AdvanceFrame
+ pop bc
+ ld a, [hNewlyPressedButtons]
+ and FLIPPERS
+ jr nz, .asm_efe3
+ dec b
+ jr nz, .asm_efbc
+.asm_efe3
+ ld a, [wCurSlotBonus]
+ inc a
+ swap a
+ ld e, a
+ ld d, $0
+ ld bc, $0000
+ call AddBCDEToCurBufferValue
+ ret
+
+SlotRewardBigPoints: ; 0xeff3
+ ld a, $8
+ call Func_a21
+ ld [wCurSlotBonus], a
+ ld b, $80
+.asm_effd
+ push bc
+ ld a, b
+ and $f
+ jr nz, .asm_f019
+ bit 4, b
+ jr z, .asm_f011
+ ld a, [wCurSlotBonus]
+ add (BigReward1000000PointsOnPic_Pointer - BillboardPicturePointers) / 3
+ call LoadBillboardPicture
+ jr .asm_f019
+
+.asm_f011
+ ld a, [wCurSlotBonus]
+ add (BigReward1000000PointsOnPic_Pointer - BillboardPicturePointers) / 3
+ call LoadBillboardOffPicture
+.asm_f019
+ rst AdvanceFrame
+ pop bc
+ ld a, [hNewlyPressedButtons]
+ and FLIPPERS
+ jr nz, .asm_f024
+ dec b
+ jr nz, .asm_effd
+.asm_f024
+ ld a, [wCurSlotBonus]
+ inc a
+ swap a
+ ld c, a
+ ld b, $0
+ ld de, $0000
+ call AddBCDEToCurBufferValue
+ ret
+
+SlotRewardCatchEmMode: ; 0xf034
+ ld a, CATCHEM_MODE_SLOT_REWARD
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+SlotRewardEvolutionMode: ; 0xf03a
+ ld a, EVOLUTION_MODE_SLOT_REWARD
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
+ ret
+
+SlotRewardUpgradeBall: ; 0xf040
+ ; load approximately 1 minute of frames into wBallTypeCounter
+ ld a, $10
+ ld [wBallTypeCounter], a
+ ld a, $e
+ ld [wBallTypeCounter + 1], a
+ 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
+ ; upgrade ball type
+ ld a, [wBallType]
+ ld c, a
+ ld b, $0
+ ld hl, BallTypeProgressionBlueField
+ add hl, bc
+ ld a, [hl]
+ ld [wBallType], a
+ add $30
+ ld [wBottomMessageText + $12], a
+ jr .asm_f0b0
+
+.masterBall
+ lb de, $0f, $4d
+ call PlaySoundEffect
+ ld bc, OneMillionPoints
+ callba AddBigBCD6FromQueue
+ ld bc, $100
+ 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_f0b0
+ callba Func_155bb
+ ret
+
+BallTypeProgressionBlueField: ; 0xf0bb
+; 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
+
+SlotBonusMultiplier: ; 0xf0c1
+ ld a, $4
+ call Func_a21
+ ld [wCurSlotBonus], a
+ ld b, $80
+.asm_f0cb
+ push bc
+ ld a, b
+ and $f
+ jr nz, .asm_f0e7
+ bit 4, b
+ jr z, .asm_f0df
+ ld a, [wCurSlotBonus]
+ add (BonusMultiplierX1OnPic_Pointer - BillboardPicturePointers) / 3
+ call LoadBillboardPicture
+ jr .asm_f0e7
+
+.asm_f0df
+ ld a, [wCurSlotBonus]
+ add (BonusMultiplierX1OnPic_Pointer - BillboardPicturePointers) / 3
+ call LoadBillboardOffPicture
+.asm_f0e7
+ rst AdvanceFrame
+ pop bc
+ ld a, [hNewlyPressedButtons]
+ and FLIPPERS
+ jr nz, .asm_f0f2
+ dec b
+ jr nz, .asm_f0cb
+.asm_f0f2
+ ld a, $3
+ ld [wd610], a
+ xor a
+ ld [wd611], a
+ ld [wd612], a
+ ld a, [wd482]
+ call .DivideBy25
+ ld b, c
+ ld a, [wCurSlotBonus]
+ inc a
+ ld hl, wd482
+ add [hl]
+ cp 100
+ jr c, .asm_f113
+ ld a, 99
+.asm_f113
+ ld [hl], a
+ call .DivideBy25
+ ld a, c
+ cp b
+ callba nz, Func_30164
+ callba Func_16f95
+ ld a, [wd60c]
+ callba Func_f154 ; no need for BankSwitch here...
+ ld a, [wd60d]
+ add $14
+ callba Func_f154 ; no need for BankSwitch here...
+ ret
+
+.DivideBy25: ; 0xf14a
+ ld c, $0
+.div_25
+ cp 25
+ ret c
+ sub 25
+ inc c
+ jr .div_25
+
+Func_f154: ; 0xf154
+ ld a, [wCurrentStage]
+ call CallInFollowingTable
+CallTable_f15a: ; 0xf15a
+ padded_dab Func_16f28
+ padded_dab Func_16f28
+ padded_dab Func_16f28
+ padded_dab Func_16f28
+ padded_dab Func_1d5f2
+ padded_dab Func_1d5f2
+
+SlotRewardGoToBonusStage: ; 0xf172
+ ld a, $1
+ ld [wBonusStageSlotRewardActive], a
+ ret
+
+INCLUDE "engine/pinball_game/billboard.asm"
+
+Func_f2a0: ; 0xf2a0
+ push hl
+ ld c, a
+ ld b, $0
+ sla c
+ add c
+ ld c, a
+ ld hl, PaletteDataPointerTable_f2be
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld h, b
+ ld l, c
+ ld de, $0030
+ ld bc, $0010
+ call Func_7dc
+ pop hl
+ ret
+
+PaletteDataPointerTable_f2be: ; 0xf2be
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
+ dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
+ dwb PaletteData_dcc10, Bank(PaletteData_dcc10)
+ dwb PaletteData_dcc18, Bank(PaletteData_dcc18)
+ dwb PaletteData_dcc20, Bank(PaletteData_dcc20)
+ dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
+ dwb PaletteData_dcc28, Bank(PaletteData_dcc28)
+ dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
+ dwb PaletteData_dcc30, Bank(PaletteData_dcc30)
+ dwb PaletteData_dcc38, Bank(PaletteData_dcc38)
+ dwb PaletteData_dcc40, Bank(PaletteData_dcc40)
+ dwb PaletteData_dcc48, Bank(PaletteData_dcc48)
+ dwb PaletteData_dcc50, Bank(PaletteData_dcc50)
+ dwb PaletteData_dcc58, Bank(PaletteData_dcc58)
+ dwb PaletteData_dcc60, Bank(PaletteData_dcc60)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+ dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
+
+Data_f339: ; 0xf339
+ db $02, $06, $00, $08, $04, $02, $06, $08, $04, $00, $06, $02, $04, $08, $00, $02
+ db $06, $02, $04, $08, $00, $06, $04, $08, $02, $00, $06, $08, $02, $00, $06, $08
+ db $02, $04, $00, $08, $06, $04, $00, $02, $06, $04, $00, $08, $06, $04, $02, $08
+ db $00, $08, $02, $04, $00, $08, $06, $02, $04, $00, $06, $08, $04, $00, $06, $02
+ db $00, $08, $02, $04, $00, $08, $06, $04, $02, $08, $00, $06, $02, $08, $00, $06
+ db $02, $00, $06, $04, $02, $00, $06, $08, $02, $04, $00, $06, $08, $04, $02, $06
+ db $00, $02, $08, $04, $00, $02, $06, $04, $08, $02, $06, $00, $04, $08, $06, $02
+ db $04, $08, $06, $02, $00, $08, $04, $06, $00, $02, $04, $06, $00, $02, $04, $08
+ db $02, $00, $04, $06, $02, $00, $08, $04, $02, $00, $06, $04, $08, $00, $06, $04
+ db $04, $00, $02, $08, $04, $06, $00, $08, $02, $04, $06, $08, $00, $04, $06, $02
+ db $06, $08, $04, $02, $06, $00, $08, $02, $04, $00, $06, $02, $08, $04, $06, $02
+ db $04, $06, $02, $00, $08, $04, $06, $00, $08, $02, $06, $00, $08, $02, $04, $00
+ db $02, $00, $06, $04, $02, $08, $06, $00, $04, $08, $02, $00, $04, $06, $08, $00
+ db $08, $06, $04, $00, $08, $06, $02, $00, $08, $06, $04, $00, $08, $06, $04, $02
+ db $02, $00, $06, $04, $08, $02, $00, $04, $08, $02, $00, $04, $06, $02, $08, $00
+ db $04, $06, $08, $02, $00, $06, $04, $08, $02, $06, $00, $08, $04, $06, $02, $08
+
+Data_f439: ; 0xf439
+ db $05, $19, $0C, $4C, $00, $4C, $03, $4C, $FF, $00, $05, $19, $0C, $4C, $00, $4C
+ db $07, $4C, $FF, $00, $05, $19, $0C, $44, $00, $44, $03, $44, $06, $16, $05, $19
+ db $0C, $4C, $00, $4C, $08, $4C, $FF, $00, $01, $4C, $06, $66, $0D, $4C, $FF, $00
+ db $FF, $00, $05, $19, $0C, $4C, $00, $4C, $03, $4C, $FF, $00, $05, $19, $0C, $4C
+ db $00, $4C, $07, $4C, $FF, $00, $05, $19, $0C, $44, $00, $44, $03, $44, $06, $16
+ db $05, $19, $0C, $4C, $00, $4C, $08, $4C, $FF, $00, $01, $3F, $06, $3F, $0D, $3F
+ db $09, $3F, $FF, $00, $05, $11, $0C, $4F, $00, $4F, $03, $4F, $FF, $00, $05, $11
+ db $0C, $4F, $01, $4F, $07, $4F, $FF, $00, $05, $11, $0C, $44, $00, $44, $03, $44
+ db $06, $1E, $05, $11, $0C, $4F, $01, $4F, $08, $4F, $FF, $00, $02, $66, $06, $4C
+ db $0D, $4C, $FF, $00, $FF, $00, $05, $0A, $0C, $51, $00, $51, $03, $51, $FF, $00
+ db $05, $0A, $0C, $51, $01, $51, $07, $51, $FF, $00, $05, $0A, $0C, $44, $00, $44
+ db $03, $44, $06, $26, $05, $0A, $0C, $51, $01, $51, $08, $51, $FF, $00, $01, $3F
+ db $06, $3F, $0D, $3F, $09, $3F, $FF, $00, $05, $0A, $0C, $51, $00, $51, $03, $51
+ db $FF, $00, $05, $0A, $0C, $51, $01, $51, $07, $51, $FF, $00, $05, $0A, $0C, $44
+ db $00, $44, $03, $44, $06, $26, $05, $0A, $0C, $51, $01, $51, $08, $51, $FF, $00
+ db $01, $26, $06, $26, $0D, $26, $04, $8C, $FF, $00
diff --git a/main.asm b/main.asm
index 2b0889c..95ffcca 100755
--- a/main.asm
+++ b/main.asm
@@ -179,681 +179,7 @@ INCLUDE "engine/pinball_game/ball_loss/ball_loss_seel_bonus.asm"
INCLUDE "engine/pinball_game/flippers.asm"
INCLUDE "engine/pinball_game/stage_collision_attributes.asm"
INCLUDE "engine/pinball_game/vertical_screen_transition.asm"
-
-Func_ed8e: ; 0xed8e
- xor a
- ld [wd803], a
- ld [wd804], a
- ld [wd622], a
- ld a, [wNumPartyMons]
- ld [wd620], a
- ld a, [wBallType]
- ld c, a
- ld b, $0
- ld hl, BallTypeMultipliers
- add hl, bc
- ld a, [hl]
- ld [wd621], a
-.asm_edac
- xor a
- ld [hJoypadState], a
- ld [hNewlyPressedButtons], a
- ld [hPressedButtons], a
- call HandleTilts
- ld a, [wCurrentStage]
- bit 0, a
- ld [hFarCallTempA], a
- ld a, $3
- ld hl, HandleFlippers
- call nz, BankSwitch
- callba DrawSpritesForStage
- call Func_33e3
- call CleanOAMBuffer
- rst AdvanceFrame
- ld a, [wd7af]
- and a
- jr nz, .asm_edac
- ld a, [wd7b3]
- and a
- jr nz, .asm_edac
- ld a, [hGameBoyColorFlag]
- and a
- call nz, LoadGreyBillboardPaletteData
- call GenRandom
- and $f0
- ld [wd61a], a
- xor a
- ld [wd61b], a
- ld [wd61e], a
-.asm_6df7
- ld a, [wd61a]
- ld c, a
- ld b, $0
- ld hl, Data_f339
- add hl, bc
- ld a, [wd619]
- add [hl]
- ld c, a
- ld hl, Data_f439
- add hl, bc
- ld a, [hli]
- bit 7, a
- jr nz, .asm_ee56
- call Func_eef9
- ld [wd61d], a
- push af
- lb de, $00, $09
- call PlaySoundEffect
- pop af
- call LoadBillboardOffPicture
- ld a, [wd61b]
- cp $a
- jr nc, .asm_ee29
- ld a, $a
-.asm_ee29
- ld b, a
-.asm_ee2a
- push bc
- call Func_eeee
- ld a, [wd61e]
- and a
- jr nz, .asm_ee47
- call Func_ef1e
- jr z, .asm_ee47
- ld [wd61e], a
- ld a, $32
- ld [wd61b], a
- lb de, $07, $28
- call PlaySoundEffect
-.asm_ee47
- pop bc
- dec b
- jr nz, .asm_ee2a
- ld a, [wd61b]
- inc a
- ld [wd61b], a
- cp $3c
- jr z, .asm_ee69
-.asm_ee56
- ld a, [wd61a]
- and $f0
- ld b, a
- ld a, [wd61a]
- inc a
- and $f
- or b
- ld [wd61a], a
- jp .asm_6df7
-
-.asm_ee69
- ld a, [wd61d]
- cp $5
- jr nz, .asm_ee78
- lb de, $0c, $42
- call PlaySoundEffect
- jr .asm_ee7e
-
-.asm_ee78
- lb de, $0c, $43
- call PlaySoundEffect
-.asm_ee7e
- ld b, $28
-.asm_ee80
- push bc
- rst AdvanceFrame
- pop bc
- call Func_ef1e
- jr nz, .asm_ee8b
- dec b
- jr nz, .asm_ee80
-.asm_ee8b
- ld a, [hGameBoyColorFlag]
- and a
- ld a, [wd61d]
- call nz, Func_f2a0
- ld b, $80
-.asm_ee96
- push bc
- ld a, b
- and $f
- jr nz, .asm_eeae
- bit 4, b
- jr z, .asm_eea8
- ld a, [wd61d]
- call LoadBillboardPicture
- jr .asm_eeae
-
-.asm_eea8
- ld a, [wd61d]
- call LoadBillboardOffPicture
-.asm_eeae
- rst AdvanceFrame
- pop bc
- call Func_ef1e
- jr nz, .asm_eeb8
- dec b
- jr nz, .asm_ee96
-.asm_eeb8
- ld a, [wd619]
- add $a
- cp $fa
- jr nz, .asm_eec3
- ld a, $64
-.asm_eec3
- ld [wd619], a
- ld a, [wd61d]
- rst JumpTable ; calls JumpToFuncInTable
-SlotRewards_CallTable: ; 0xeeca
- dw Start30SecondSaverTimer
- dw Start60SecondSaverTimer
- dw Start90SecondSaverTimer
- dw SlotRewardPikachuSaver
- dw Func_efa7
- dw Func_efb2
- dw Func_eff3
- dw Func_f034
- dw Func_f03a
- dw UpgradeBallBlueField
- dw UpgradeBallBlueField
- dw UpgradeBallBlueField
- dw SlotBonusMultiplier
- dw Func_f172
- dw Func_f172
- dw Func_f172
- dw Func_f172
- dw Func_f172
-
-Func_eeee: ; 0xeeee
- push bc
- ld bc, $0200
-.asm_eef2
- dec bc
- ld a, b
- or c
- jr nz, .asm_eef2
- pop bc
- ret
-
-Func_eef9: ; 0xeef9
- cp $8
- jr nz, .asm_ef09
- ld a, [wd620]
- and a
- jr nz, .asm_ef06
- ld a, $7
- ret
-
-.asm_ef06
- ld a, $8
- ret
-
-.asm_ef09
- cp $9
- jr nz, .asm_ef14
- push hl
- ld hl, wd621
- add [hl]
- pop hl
- ret
-
-.asm_ef14
- cp $d
- ret nz
- push hl
- ld hl, wd498
- add [hl]
- pop hl
- ret
-
-Func_ef1e: ; 0xef1e
- push bc
- ld hl, wKeyConfigRightFlipper
- call IsKeyPressed
- jr nz, .asm_ef2d
- ld hl, wKeyConfigLeftFlipper
- call IsKeyPressed
-.asm_ef2d
- pop bc
- ret
-
-BallTypeMultipliers: ; 0xef2f
-; Score multiplier for each ball type.
- db $00 ; POKE_BALL
- db $00
- db $01 ; GREAT_BALL
- db $02 ; ULTRA_BALL
- db $02
- db $02 ; MASTER_BALL
-
-INCLUDE "engine/pinball_game/ball_saver/ball_saver_30.asm"
-INCLUDE "engine/pinball_game/ball_saver/ball_saver_60.asm"
-INCLUDE "engine/pinball_game/ball_saver/ball_saver_90.asm"
-
-SlotRewardPikachuSaver: ; 0xef83
- ld a, $1
- ld [wPikachuSaverSlotRewardActive], a
- ld a, MAX_PIKACHU_SAVER_CHARGE
- ld [wPikachuSaverCharge], a
- xor a
- ld [wd85d], a
- call Func_310a
- rst AdvanceFrame
- ld a, $0
- callba PlayPikachuSoundClip
- ld a, $1
- ld [wd85d], a
- ret
-
-Func_efa7: ; 0xefa7
- callba Func_30164
- ret
-
-Func_efb2: ; 0xefb2
- ld a, $8
- call Func_a21
- ld [wCurSlotBonus], a
- ld b, $80
-.asm_efbc
- push bc
- ld a, b
- and $f
- jr nz, .asm_efd8
- bit 4, b
- jr z, .asm_efd0
- ld a, [wCurSlotBonus]
- add (SmallReward100PointsOnPic_Pointer - BillboardPicturePointers) / 3
- call LoadBillboardPicture
- jr .asm_efd8
-
-.asm_efd0
- ld a, [wCurSlotBonus]
- add (SmallReward100PointsOnPic_Pointer - BillboardPicturePointers) / 3
- call LoadBillboardOffPicture
-.asm_efd8
- rst AdvanceFrame
- pop bc
- ld a, [hNewlyPressedButtons]
- and FLIPPERS
- jr nz, .asm_efe3
- dec b
- jr nz, .asm_efbc
-.asm_efe3
- ld a, [wCurSlotBonus]
- inc a
- swap a
- ld e, a
- ld d, $0
- ld bc, $0000
- call AddBCDEToCurBufferValue
- ret
-
-Func_eff3: ; 0xeff3
- ld a, $8
- call Func_a21
- ld [wCurSlotBonus], a
- ld b, $80
-.asm_effd
- push bc
- ld a, b
- and $f
- jr nz, .asm_f019
- bit 4, b
- jr z, .asm_f011
- ld a, [wCurSlotBonus]
- add (BigReward1000000PointsOnPic_Pointer - BillboardPicturePointers) / 3
- call LoadBillboardPicture
- jr .asm_f019
-
-.asm_f011
- ld a, [wCurSlotBonus]
- add (BigReward1000000PointsOnPic_Pointer - BillboardPicturePointers) / 3
- call LoadBillboardOffPicture
-.asm_f019
- rst AdvanceFrame
- pop bc
- ld a, [hNewlyPressedButtons]
- and FLIPPERS
- jr nz, .asm_f024
- dec b
- jr nz, .asm_effd
-.asm_f024
- ld a, [wCurSlotBonus]
- inc a
- swap a
- ld c, a
- ld b, $0
- ld de, $0000
- call AddBCDEToCurBufferValue
- ret
-
-Func_f034: ; 0xf034
- ld a, $1
- ld [wd622], a
- ret
-
-Func_f03a: ; 0xf03a
- ld a, $2
- ld [wd622], a
- ret
-
-UpgradeBallBlueField: ; 0xf040
- ; load approximately 1 minute of frames into wBallTypeCounter
- ld a, $10
- ld [wBallTypeCounter], a
- ld a, $e
- ld [wBallTypeCounter + 1], a
- 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
- ; upgrade ball type
- ld a, [wBallType]
- ld c, a
- ld b, $0
- ld hl, BallTypeProgressionBlueField
- add hl, bc
- ld a, [hl]
- ld [wBallType], a
- add $30
- ld [wBottomMessageText + $12], a
- jr .asm_f0b0
-
-.masterBall
- lb de, $0f, $4d
- call PlaySoundEffect
- ld bc, OneMillionPoints
- callba AddBigBCD6FromQueue
- ld bc, $100
- 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_f0b0
- callba Func_155bb
- ret
-
-BallTypeProgressionBlueField: ; 0xf0bb
-; 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
-
-SlotBonusMultiplier: ; 0xf0c1
- ld a, $4
- call Func_a21
- ld [wCurSlotBonus], a
- ld b, $80
-.asm_f0cb
- push bc
- ld a, b
- and $f
- jr nz, .asm_f0e7
- bit 4, b
- jr z, .asm_f0df
- ld a, [wCurSlotBonus]
- add (BonusMultiplierX1OnPic_Pointer - BillboardPicturePointers) / 3
- call LoadBillboardPicture
- jr .asm_f0e7
-
-.asm_f0df
- ld a, [wCurSlotBonus]
- add (BonusMultiplierX1OnPic_Pointer - BillboardPicturePointers) / 3
- call LoadBillboardOffPicture
-.asm_f0e7
- rst AdvanceFrame
- pop bc
- ld a, [hNewlyPressedButtons]
- and FLIPPERS
- jr nz, .asm_f0f2
- dec b
- jr nz, .asm_f0cb
-.asm_f0f2
- ld a, $3
- ld [wd610], a
- xor a
- ld [wd611], a
- ld [wd612], a
- ld a, [wd482]
- call .DivideBy25
- ld b, c
- ld a, [wCurSlotBonus]
- inc a
- ld hl, wd482
- add [hl]
- cp 100
- jr c, .asm_f113
- ld a, 99
-.asm_f113
- ld [hl], a
- call .DivideBy25
- ld a, c
- cp b
- callba nz, Func_30164
- callba Func_16f95
- ld a, [wd60c]
- callba Func_f154 ; no need for BankSwitch here...
- ld a, [wd60d]
- add $14
- callba Func_f154 ; no need for BankSwitch here...
- ret
-
-.DivideBy25: ; 0xf14a
- ld c, $0
-.div_25
- cp 25
- ret c
- sub 25
- inc c
- jr .div_25
-
-Func_f154: ; 0xf154
- ld a, [wCurrentStage]
- call CallInFollowingTable
-CallTable_f15a: ; 0xf15a
- padded_dab Func_16f28
- padded_dab Func_16f28
- padded_dab Func_16f28
- padded_dab Func_16f28
- padded_dab Func_1d5f2
- padded_dab Func_1d5f2
-
-Func_f172: ; 0xf172
- ld a, $1
- ld [wd623], a
- ret
-
-LoadBillboardPicture: ; 0xf178
-; Loads a billboard picture's tiles into VRAM
-; input: a = billboard picture id
- push hl
- ld c, a
- ld b, $0
- sla c
- add c ; a has been multplied by 3 becuase entires in BillboardPicturePointers are 3 bytes long
- ld c, a
- ld hl, BillboardPicturePointers
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld h, b
- ld l, c
- ld de, vTilesSH tile $10 ; destination address to copy the tiles
- ld bc, $180 ; billboard pictures are $180 bytes
- call LoadVRAMData ; loads the tiles into VRAM
- pop hl
- ret
-
-LoadBillboardOffPicture: ; 0xf196
-; Loads the dimly-lit "off" version of a billboard picture into VRAM
-; Input: a = billboard picture id
- push hl
- ld c, a
- ld b, $0
- sla c
- add c
- ld c, a
- ld hl, BillboardPicturePointers
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld h, b
- ld l, c
- ld bc, $0180 ; get the address of the "off" version of the picture
- add hl, bc
- ld de, vTilesSH tile $10
- ld bc, $0180
- call LoadVRAMData
- pop hl
- ret
-
-INCLUDE "data/billboard/billboard_pic_pointers.asm"
-
-LoadGreyBillboardPaletteData: ; 0xf269
- ld a, [hGameBoyColorFlag]
- and a
- jr z, .loadPaletteMap
- ld a, BANK(StageRedFieldBottomBGPalette5) ; also used in blue stage
- ld hl, StageRedFieldBottomBGPalette5
- ld de, $0030
- ld bc, $0008
- call Func_7dc
-.loadPaletteMap
- ld a, BANK(GreyBillboardPaletteMap)
- ld de, GreyBillboardPaletteMap
- hlCoord 7, 4, vBGMap
- call LoadBillboardPaletteMap
- ret
-
-GreyBillboardPaletteMap:
- db $06, $06, $06, $06, $06, $06
- db $06, $06, $06, $06, $06, $06
- db $06, $06, $06, $06, $06, $06
- db $06, $06, $06, $06, $06, $06
-
-Func_f2a0: ; 0xf2a0
- push hl
- ld c, a
- ld b, $0
- sla c
- add c
- ld c, a
- ld hl, PaletteDataPointerTable_f2be
- add hl, bc
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hl]
- ld h, b
- ld l, c
- ld de, $0030
- ld bc, $0010
- call Func_7dc
- pop hl
- ret
-
-PaletteDataPointerTable_f2be: ; 0xf2be
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
- dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
- dwb PaletteData_dcc10, Bank(PaletteData_dcc10)
- dwb PaletteData_dcc18, Bank(PaletteData_dcc18)
- dwb PaletteData_dcc20, Bank(PaletteData_dcc20)
- dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
- dwb PaletteData_dcc28, Bank(PaletteData_dcc28)
- dwb PaletteData_dcc08, Bank(PaletteData_dcc08)
- dwb PaletteData_dcc30, Bank(PaletteData_dcc30)
- dwb PaletteData_dcc38, Bank(PaletteData_dcc38)
- dwb PaletteData_dcc40, Bank(PaletteData_dcc40)
- dwb PaletteData_dcc48, Bank(PaletteData_dcc48)
- dwb PaletteData_dcc50, Bank(PaletteData_dcc50)
- dwb PaletteData_dcc58, Bank(PaletteData_dcc58)
- dwb PaletteData_dcc60, Bank(PaletteData_dcc60)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
- dwb PaletteData_dcc00, Bank(PaletteData_dcc00)
-
-Data_f339: ; 0xf339
- db $02, $06, $00, $08, $04, $02, $06, $08, $04, $00, $06, $02, $04, $08, $00, $02
- db $06, $02, $04, $08, $00, $06, $04, $08, $02, $00, $06, $08, $02, $00, $06, $08
- db $02, $04, $00, $08, $06, $04, $00, $02, $06, $04, $00, $08, $06, $04, $02, $08
- db $00, $08, $02, $04, $00, $08, $06, $02, $04, $00, $06, $08, $04, $00, $06, $02
- db $00, $08, $02, $04, $00, $08, $06, $04, $02, $08, $00, $06, $02, $08, $00, $06
- db $02, $00, $06, $04, $02, $00, $06, $08, $02, $04, $00, $06, $08, $04, $02, $06
- db $00, $02, $08, $04, $00, $02, $06, $04, $08, $02, $06, $00, $04, $08, $06, $02
- db $04, $08, $06, $02, $00, $08, $04, $06, $00, $02, $04, $06, $00, $02, $04, $08
- db $02, $00, $04, $06, $02, $00, $08, $04, $02, $00, $06, $04, $08, $00, $06, $04
- db $04, $00, $02, $08, $04, $06, $00, $08, $02, $04, $06, $08, $00, $04, $06, $02
- db $06, $08, $04, $02, $06, $00, $08, $02, $04, $00, $06, $02, $08, $04, $06, $02
- db $04, $06, $02, $00, $08, $04, $06, $00, $08, $02, $06, $00, $08, $02, $04, $00
- db $02, $00, $06, $04, $02, $08, $06, $00, $04, $08, $02, $00, $04, $06, $08, $00
- db $08, $06, $04, $00, $08, $06, $02, $00, $08, $06, $04, $00, $08, $06, $04, $02
- db $02, $00, $06, $04, $08, $02, $00, $04, $08, $02, $00, $04, $06, $02, $08, $00
- db $04, $06, $08, $02, $00, $06, $04, $08, $02, $06, $00, $08, $04, $06, $02, $08
-
-Data_f439: ; 0xf439
- db $05, $19, $0C, $4C, $00, $4C, $03, $4C, $FF, $00, $05, $19, $0C, $4C, $00, $4C
- db $07, $4C, $FF, $00, $05, $19, $0C, $44, $00, $44, $03, $44, $06, $16, $05, $19
- db $0C, $4C, $00, $4C, $08, $4C, $FF, $00, $01, $4C, $06, $66, $0D, $4C, $FF, $00
- db $FF, $00, $05, $19, $0C, $4C, $00, $4C, $03, $4C, $FF, $00, $05, $19, $0C, $4C
- db $00, $4C, $07, $4C, $FF, $00, $05, $19, $0C, $44, $00, $44, $03, $44, $06, $16
- db $05, $19, $0C, $4C, $00, $4C, $08, $4C, $FF, $00, $01, $3F, $06, $3F, $0D, $3F
- db $09, $3F, $FF, $00, $05, $11, $0C, $4F, $00, $4F, $03, $4F, $FF, $00, $05, $11
- db $0C, $4F, $01, $4F, $07, $4F, $FF, $00, $05, $11, $0C, $44, $00, $44, $03, $44
- db $06, $1E, $05, $11, $0C, $4F, $01, $4F, $08, $4F, $FF, $00, $02, $66, $06, $4C
- db $0D, $4C, $FF, $00, $FF, $00, $05, $0A, $0C, $51, $00, $51, $03, $51, $FF, $00
- db $05, $0A, $0C, $51, $01, $51, $07, $51, $FF, $00, $05, $0A, $0C, $44, $00, $44
- db $03, $44, $06, $26, $05, $0A, $0C, $51, $01, $51, $08, $51, $FF, $00, $01, $3F
- db $06, $3F, $0D, $3F, $09, $3F, $FF, $00, $05, $0A, $0C, $51, $00, $51, $03, $51
- db $FF, $00, $05, $0A, $0C, $51, $01, $51, $07, $51, $FF, $00, $05, $0A, $0C, $44
- db $00, $44, $03, $44, $06, $26, $05, $0A, $0C, $51, $01, $51, $08, $51, $FF, $00
- db $01, $26, $06, $26, $0D, $26, $04, $8C, $FF, $00
+INCLUDE "engine/pinball_game/slot.asm"
Func_f533: ; 0xf533
call FillBottomMessageBufferWithBlackTile
@@ -9445,15 +8771,15 @@ Func_16279: ; 0x16279
and a
ret nz
call Func_16425
- ld a, [wd622]
- cp $1
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp CATCHEM_MODE_SLOT_REWARD
ret nz
call GenRandom
and $8
ld [wRareMonsFlag], a
callba StartCatchEmMode
xor a
- ld [wd622], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
ret
Func_16352: ; 0x16352
@@ -9475,7 +8801,7 @@ Func_16352: ; 0x16352
and a
jr nz, .asm_163b3
.asm_1637a
- ld a, [wd623]
+ ld a, [wBonusStageSlotRewardActive]
and a
jr nz, .asm_16389
xor a
@@ -9484,7 +8810,7 @@ Func_16352: ; 0x16352
ld [wd626], a
.asm_16389
xor a
- ld [wd623], a
+ ld [wBonusStageSlotRewardActive], a
ld a, $1
ld [wd495], a
ld [wd4ae], a
@@ -9498,7 +8824,7 @@ Func_16352: ; 0x16352
call Func_163f2
xor a
ld [wd609], a
- ld [wd622], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
ld a, $1e
ld [wd607], a
ret
@@ -9513,8 +8839,8 @@ Func_16352: ; 0x16352
ld a, $1
ld [wd548], a
ld [wd549], a
- ld a, [wd622]
- cp $2
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp EVOLUTION_MODE_SLOT_REWARD
ret nz
callba Func_10ab3
ld a, [wd7ad]
@@ -9524,7 +8850,7 @@ Func_16352: ; 0x16352
or c
ld [wStageCollisionState], a
xor a
- ld [wd622], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
ret
Func_163f2: ; 0x163f2
@@ -22863,15 +22189,15 @@ Func_1e757: ; 0x1e757
and a
ret nz
call Func_1e8f6
- ld a, [wd622]
- cp $1
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp CATCHEM_MODE_SLOT_REWARD
ret nz
call GenRandom
and $8
ld [wRareMonsFlag], a
callba StartCatchEmMode
xor a
- ld [wd622], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
ret
Func_1e830: ; 0x1e830
@@ -22893,7 +22219,7 @@ Func_1e830: ; 0x1e830
and a
jr nz, .asm_1e891
.asm_1e858
- ld a, [wd623]
+ ld a, [wBonusStageSlotRewardActive]
and a
jr nz, .asm_1e867
xor a
@@ -22902,7 +22228,7 @@ Func_1e830: ; 0x1e830
ld [wd626], a
.asm_1e867
xor a
- ld [wd623], a
+ ld [wBonusStageSlotRewardActive], a
ld a, $1
ld [wd495], a
ld [wd4ae], a
@@ -22916,7 +22242,7 @@ Func_1e830: ; 0x1e830
call Func_1e8c3
xor a
ld [wd609], a
- ld [wd622], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
ld a, $1e
ld [wd607], a
ret
@@ -22931,12 +22257,12 @@ Func_1e830: ; 0x1e830
ld a, $1
ld [wd548], a
ld [wd549], a
- ld a, [wd622]
- cp $2
+ ld a, [wCatchEmOrEvolutionSlotRewardActive]
+ cp EVOLUTION_MODE_SLOT_REWARD
ret nz
callba Func_10ab3
xor a
- ld [wd622], a
+ ld [wCatchEmOrEvolutionSlotRewardActive], a
ret
Func_1e8c3: ; 0x1e8c3
diff --git a/wram.asm b/wram.asm
index ec8e644..a277ebc 100755
--- a/wram.asm
+++ b/wram.asm
@@ -1020,10 +1020,13 @@ wd620:: ; 0xd620
wd621:: ; 0xd621
ds $1
-wd622:: ; 0xd622
+wCatchEmOrEvolutionSlotRewardActive:: ; 0xd622
+; Set to 1 if the "Start Catch 'Em Mode" Slot Reward is received.
+; Set to 2 if the "Start Evolution Mode" Slot Reward is received.
ds $1
-wd623:: ; 0xd623
+wBonusStageSlotRewardActive:: ; 0xd623
+; Set to 1 when the "Go To Bonus" Slot Reward is received.
ds $1
wd624:: ; 0xd624