mirror of
https://github.com/pret/pokepinball.git
synced 2026-10-01 21:56:35 -05:00
Move Slot routines and rewards into own file
This commit is contained in:
@@ -1 +1,4 @@
|
||||
MAX_PIKACHU_SAVER_CHARGE EQU 15
|
||||
|
||||
CATCHEM_MODE_SLOT_REWARD EQU 1
|
||||
EVOLUTION_MODE_SLOT_REWARD EQU 2
|
||||
|
||||
73
engine/pinball_game/billboard.asm
Executable file
73
engine/pinball_game/billboard.asm
Executable file
@@ -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
|
||||
602
engine/pinball_game/slot.asm
Executable file
602
engine/pinball_game/slot.asm
Executable file
@@ -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
|
||||
712
main.asm
712
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
|
||||
|
||||
7
wram.asm
7
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
|
||||
|
||||
Reference in New Issue
Block a user