pokecrystal-board/engine/slot_machine.asm
Ben10do e6ea1889fb
Replace ‘jp [hl]’ with ‘jp hl’
The former is arguably misleading (as you don’t access the memory location in hl to retrieve the jump location), and is consequently deprecated in newer versions of rgbds.

This fix silences these deprecation warnings.
2017-06-09 22:01:10 +01:00

2228 lines
33 KiB
NASM
Executable File

SLOTS_NOMATCH EQU -1
SLOTS_SEVEN EQU $00
SLOTS_POKEBALL EQU $04
SLOTS_CHERRY EQU $08
SLOTS_PIKACHU EQU $0c
SLOTS_SQUIRTLE EQU $10
SLOTS_STARYU EQU $14
REEL_SIZE EQU 15
_SlotMachine:
ld hl, Options
set NO_TEXT_SCROLL, [hl]
call .InitGFX
call DelayFrame
.loop
call SlotsLoop
jr nc, .loop
call WaitSFX
ld de, SFX_QUIT_SLOTS
call PlaySFX
call WaitSFX
call ClearBGPalettes
callba TrainerRankings_EndSlotsWinStreak
ld hl, Options
res NO_TEXT_SCROLL, [hl]
ld hl, rLCDC ; $ff40
res 2, [hl]
ret
.InitGFX: ; 926f7 (24:66f7)
call ClearBGPalettes
call ClearTileMap
call ClearSprites
ld de, MUSIC_NONE
call PlayMusic
call DelayFrame
call DisableLCD
hlbgcoord 0, 0
ld bc, VBGMap1 - VBGMap0
ld a, " "
call ByteFill
ld b, SCGB_SLOT_MACHINE
call GetSGBLayout
callab ClearSpriteAnims
ld hl, wSlots
ld bc, wSlotsDataEnd - wSlots
xor a
call ByteFill
ld hl, Slots2LZ
ld de, VTiles0 tile $00
call Decompress
ld hl, Slots3LZ
ld de, VTiles0 tile $40
call Decompress
ld hl, Slots1LZ
ld de, VTiles2 tile $00
call Decompress
ld hl, Slots2LZ
ld de, VTiles2 tile $25
call Decompress
ld hl, SlotsTilemap
decoord 0, 0
ld bc, SCREEN_WIDTH * 12
call CopyBytes
ld hl, rLCDC ; $ff40
set 2, [hl]
call EnableLCD
ld hl, wSlots ; Alias: wTrademons
ld bc, wSlotsEnd - wSlots ; Alias: wTrademonsEnd
xor a
call ByteFill
call InitReelTiles
call Slots_GetPals
ld a, $7
ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], $40
xor a
ld [wJumptableIndex], a
ld a, SLOTS_NOMATCH
ld [wSlotBias], a
ld de, MUSIC_GAME_CORNER
call PlayMusic
xor a
ld [wd002], a
call Random
and %00101010
ret nz
ld a, $1
ld [wd002], a
ret
Slots_GetPals: ; 9279b (24:679b)
ld a, %11100100
call DmgToCgbBGPals
lb de, %11100100, %11100100
ld a, [hCGB]
and a
jr nz, .cgb
lb de, %11000000, %11100100
.cgb
call DmgToCgbObjPals
ret
SlotsLoop: ; 927af (24:67af)
ld a, [wJumptableIndex]
bit 7, a
jr nz, .stop
call SlotsJumptable
call Slots_SpinReels
xor a
ld [wCurrSpriteOAMAddr], a
callab DoNextFrameForFirst16Sprites
call .PrintCoinsAndPayout
call .DummyFunc
call DelayFrame
and a
ret
.stop
scf
ret
.DummyFunc: ; 927d3 (24:67d3)
; dummied out
ret
ld a, [wReel1ReelAction]
and a
ret nz
ld a, [wReel2ReelAction]
and a
ret nz
ld a, [wFirstTwoReelsMatchingSevens]
and a
jr nz, .matching_sevens
ld a, %11100100
call DmgToCgbBGPals
ret
.matching_sevens
ld a, [TextDelayFrames]
and $7
ret nz
ld a, [rBGP]
xor %00001100
call DmgToCgbBGPals
ret
; 927f8
.PrintCoinsAndPayout: ; 927f8 (24:67f8)
hlcoord 5, 1
ld de, Coins
lb bc, PRINTNUM_LEADINGZEROS | 2, 4
call PrintNum
hlcoord 11, 1
ld de, wPayout
lb bc, PRINTNUM_LEADINGZEROS | 2, 4
call PrintNum
ret
; 92811 (24:6811)
Function92811: ; 92811
; unreferenced - debug function?
ld a, [wSlotBias]
add 0
daa
ld e, a
and $f
add "0"
hlcoord 1, 0
ld [hl], a
ld a, e
swap a
and $f
add "0"
hlcoord 0, 0
ld [hl], a
ret
; 9282c
Function9282c: ; 9282c
; unreferenced
; animate OAM tiles?
ld hl, wcf66
ld a, [hl]
inc [hl]
and $7
ret nz
ld hl, Sprites + 16 * 4 + 2
ld c, 40 - 16
.loop
ld a, [hl]
xor $20
ld [hli], a
inc hl
inc hl
inc hl
dec c
jr nz, .loop
ret
; 92844
SlotsJumptable: ; 92844 (24:6844)
jumptable .Jumptable, wJumptableIndex
.Jumptable:
dw Slots_Init ; 00
dw Slots_BetAndStart ; 01
dw Slots_WaitStart ; 02
dw Slots_WaitReel1 ; 03
dw Slots_WaitStopReel1 ; 04
dw Slots_WaitReel2 ; 05
dw Slots_WaitStopReel2 ; 06
dw Slots_WaitReel3 ; 07
dw Slots_WaitStopReel3 ; 08
dw Slots_Next ; 09
dw Slots_Next ; 0a
dw Slots_Next ; 0b
dw Slots_FlashIfWin ; 0c
dw Slots_FlashScreen ; 0d
dw Slots_GiveEarnedCoins ; 0e
dw Slots_PayoutTextAndAnim ; 0f
dw Slots_PayoutAnim ; 10
dw Slots_RestartOrQuit ; 11
dw Slots_Quit ; 12
Slots_Next: ; 92879 (24:6879)
ld hl, wJumptableIndex
inc [hl]
ret
Slots_Init: ; 9287e (24:687e)
call Slots_Next
xor a
ld [wFirstTwoReelsMatching], a
ld [wFirstTwoReelsMatchingSevens], a
ld a, -1
ld [wSlotMatched], a
ret
Slots_BetAndStart: ; 9288e (24:688e)
call Slots_AskBet
jr nc, .proceed
ld a, 18
ld [wJumptableIndex], a
ret
.proceed
call Slots_Next
call Slots_IlluminateBetLights
call Slots_InitBias
ld a, 32
ld [wcf64], a
ld a, 4
ld [wReel1ReelAction], a
ld [wReel2ReelAction], a
ld [wReel3ReelAction], a
ld a, $4
ld [wReel1Slot09], a
ld [wReel2Slot09], a
ld [wReel3Slot09], a
call WaitSFX
ld a, SFX_SLOT_MACHINE_START
call Slots_PlaySFX
ret
Slots_WaitStart: ; 928c6 (24:68c6)
ld hl, wcf64
ld a, [hl]
and a
jr z, .proceed
dec [hl]
ret
.proceed
call Slots_Next
xor a
ld [hJoypadSum], a
ret
Slots_WaitReel1: ; 928d6 (24:68d6)
ld hl, hJoypadSum ; $ffa5
ld a, [hl]
and A_BUTTON
ret z
call Slots_Next
call Slots_StopReel1
ld [wReel1ReelAction], a
Slots_WaitStopReel1: ; 928e6 (24:68e6)
ld a, [wReel1ReelAction]
cp $0
ret nz
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
ld bc, wReel1
ld de, wReel1Stopped
call Slots_LoadReelState
call Slots_Next
xor a
ld [hJoypadSum], a
Slots_WaitReel2: ; 92900 (24:6900)
ld hl, hJoypadSum ; $ffa5
ld a, [hl]
and A_BUTTON
ret z
call Slots_Next
call Slots_StopReel2
ld [wReel2ReelAction], a
Slots_WaitStopReel2: ; 92910 (24:6910)
ld a, [wReel2ReelAction]
cp $0
ret nz
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
ld bc, wReel2
ld de, wReel2Stopped
call Slots_LoadReelState
call Slots_Next
xor a
ld [hJoypadSum], a
Slots_WaitReel3: ; 9292a (24:692a)
ld hl, hJoypadSum ; $ffa5
ld a, [hl]
and A_BUTTON
ret z
call Slots_Next
call Slots_StopReel3
ld [wReel3ReelAction], a
Slots_WaitStopReel3: ; 9293a (24:693a)
ld a, [wReel3ReelAction]
cp $0
ret nz
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
ld bc, wReel3
ld de, wReel3Stopped
call Slots_LoadReelState
call Slots_Next
xor a
ld [hJoypadSum], a
ret
Slots_FlashIfWin: ; 92955 (24:6955)
ld a, [wSlotMatched]
cp -1
jr nz, .GotIt
call Slots_Next
call Slots_Next
ret
.GotIt:
call Slots_Next
ld a, 16
ld [wcf64], a
Slots_FlashScreen: ; 9296b (24:696b)
ld hl, wcf64
ld a, [hl]
and a
jr z, .done
dec [hl]
srl a
ret z
ld a, [rOBP0]
xor $ff
ld e, a
ld d, a
call DmgToCgbObjPals
ret
.done
call Slots_GetPals
call Slots_Next
ret
Slots_GiveEarnedCoins: ; 92987 (24:6987)
xor a
ld [wFirstTwoReelsMatching], a
ld [wFirstTwoReelsMatchingSevens], a
ld a, %11100100
call DmgToCgbBGPals
call SlotGetPayout
xor a
ld [wcf64], a
call Slots_Next
ret
Slots_PayoutTextAndAnim: ; 9299e (24:699e)
call SlotPayoutText
call Slots_Next
Slots_PayoutAnim: ; 929a4 (24:69a4)
ld hl, wcf64
ld a, [hl]
inc [hl]
and $1
ret z
ld hl, wPayout
ld a, [hli]
ld d, a
or [hl]
jr z, .done
ld e, [hl]
dec de
ld [hl], e
dec hl
ld [hl], d
ld hl, Coins
ld d, [hl]
inc hl
ld e, [hl]
call Slot_CheckCoinCaseFull
jr c, .okay
inc de
.okay
ld [hl], e
dec hl
ld [hl], d
ld a, [wcf64]
and $7
ret z ; ret nz would be more appropriate
ld de, SFX_GET_COIN_FROM_SLOTS
call PlaySFX
ret
.done
call Slots_Next
ret
Slots_RestartOrQuit: ; 929d9 (24:69d9)
call Slots_DeilluminateBetLights
call WaitPressAorB_BlinkCursor
call Slots_AskPlayAgain
jr c, .exit_slots
ld a, 0
ld [wJumptableIndex], a
ret
.exit_slots
ld a, 18
ld [wJumptableIndex], a
ret
Slots_Quit: ; 929f0 (24:69f0)
ld hl, wJumptableIndex
set 7, [hl]
ret
Slots_LoadReelState: ; 929f6 (24:69f6)
push de
call Slots_GetCurrentReelState
pop de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
ret
Slot_CheckCoinCaseFull: ; 92a04 (24:6a04)
ld a, d
cp 9999 / $100
jr c, .not_full
ld a, e
cp 9999 % $100
jr c, .not_full
scf
ret
.not_full
and a
ret
Slots_GetCurrentReelState: ; 92a12 (24:6a12)
ld hl, wReel1Position - wReel1
add hl, bc
ld a, [hl]
and a
jr nz, .okay
ld a, $f
.okay
dec a
and $f
ld e, a
ld d, $0
ld hl, wReel1TilemapAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
add hl, de
ret
Slots_StopReel1: ; 92a2b (24:6a2b)
ld a, $7
ret
Slots_StopReel2: ; 92a2e (24:6a2e)
ld a, [wSlotBet]
cp $2
jr c, .dont_jump
ld a, [wSlotBias]
and a
jr z, .skip
cp SLOTS_NOMATCH
jr nz, .dont_jump
.skip
call .CheckReel1ForASeven
jr nz, .dont_jump
call Random
cp $50 ; 32%
jr nc, .dont_jump
ld a, $a
ret
.dont_jump
ld a, $8
ret
.CheckReel1ForASeven: ; 92a51 (24:6a51)
ld a, [wReel1Stopped]
and a
ret z
ld a, [wReel1Stopped + 1]
and a
ret z
ld a, [wReel1Stopped + 2]
and a
ret
Slots_StopReel3: ; 92a60 (24:6a60)
ld a, [wFirstTwoReelsMatching]
and a
jr z, .stop
ld a, [wFirstTwoReelsMatchingSevens]
and a
jr z, .stop
ld a, [wSlotBias]
and a
jr nz, .biased
call Random
cp 180
jr nc, .stop
cp 120
jr nc, .slow_advance
cp 60
jr nc, .golem
ld a, $15
ret
.biased
call Random
cp 160
jr nc, .stop
cp 80
jr nc, .slow_advance
.golem
ld a, $12
ret
.slow_advance
ld a, $10
ret
.stop
ld a, $9
ret
InitReelTiles: ; 92a98 (24:6a98)
ld bc, wReel1
ld hl, wReel1OAMAddr - wReel1
add hl, bc
ld de, Sprites + 16 * 4
ld [hl], e
inc hl
ld [hl], d
ld hl, wReel1TilemapAddr - wReel1
add hl, bc
ld de, Reel1Tilemap
ld [hl], e
inc hl
ld [hl], d
ld hl, wReel1XCoord - wReel1
add hl, bc
ld [hl], 6 * 8
call .OAM
ld bc, wReel2
ld hl, wReel1OAMAddr - wReel1
add hl, bc
ld de, Sprites + 24 * 4
ld [hl], e
inc hl
ld [hl], d
ld hl, wReel1TilemapAddr - wReel1
add hl, bc
ld de, Reel2Tilemap
ld [hl], e
inc hl
ld [hl], d
ld hl, wReel1XCoord - wReel1
add hl, bc
ld [hl], 10 * 8
call .OAM
ld bc, wReel3
ld hl, wReel1OAMAddr - wReel1
add hl, bc
ld de, Sprites + 32 * 4
ld [hl], e
inc hl
ld [hl], d
ld hl, wReel1TilemapAddr - wReel1
add hl, bc
ld de, Reel3Tilemap
ld [hl], e
inc hl
ld [hl], d
ld hl, wReel1XCoord - wReel1
add hl, bc
ld [hl], 14 * 8
call .OAM
ret
.OAM: ; 92af9 (24:6af9)
ld hl, wReel1ReelAction - wReel1
add hl, bc
ld [hl], $0
ld hl, wReel1Position - wReel1
add hl, bc
ld [hl], REEL_SIZE - 1
ld hl, wReel1SpinDistance - wReel1
add hl, bc
ld [hl], $0
call UpdateReelPositionAndOAM
ret
Slots_SpinReels: ; 92b0f (24:6b0f)
ld bc, wReel1
call .SpinReel
ld bc, wReel2
call .SpinReel
ld bc, wReel3
call .SpinReel
ret
.SpinReel: ; 92b22 (24:6b22)
ld hl, wReel1SpinDistance - wReel1
add hl, bc
ld a, [hl]
and $f
jr nz, .skip
call Function92bd4
.skip
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld a, [hl]
and a
ret z
ld d, a
ld hl, wReel1SpinDistance - wReel1
add hl, bc
add [hl]
ld [hl], a
and $f
jr z, UpdateReelPositionAndOAM
ld hl, wReel1OAMAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld e, $8
.loop
ld a, [hl]
add d
ld [hli], a
inc hl
inc hl
inc hl
dec e
jr nz, .loop
ret
UpdateReelPositionAndOAM: ; 92b53 (24:6b53)
ld hl, wReel1XCoord - wReel1
add hl, bc
ld a, [hl]
ld [wCurrReelXCoord], a
ld a, 10 * 8
ld [wCurrReelYCoord], a
ld hl, wReel1Position - wReel1
add hl, bc
ld e, [hl]
ld d, 0
ld hl, wReel1TilemapAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
add hl, de
ld e, l
ld d, h
call .LoadOAM
ld hl, wReel1Position - wReel1
add hl, bc
ld a, [hl]
inc a
and $f
cp REEL_SIZE
jr nz, .load
xor a
.load
ld [hl], a
ret
.LoadOAM: ; 92b83 (24:6b83)
ld hl, wReel1OAMAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
.loop
ld a, [wCurrReelYCoord]
ld [hli], a
ld a, [wCurrReelXCoord]
ld [hli], a
ld a, [de]
ld [hli], a
srl a
srl a
set 7, a
ld [hli], a
ld a, [wCurrReelYCoord]
ld [hli], a
ld a, [wCurrReelXCoord]
add 1 * 8
ld [hli], a
ld a, [de]
inc a
inc a
ld [hli], a
srl a
srl a
set 7, a
ld [hli], a
inc de
ld a, [wCurrReelYCoord]
sub 2 * 8
ld [wCurrReelYCoord], a
cp 2 * 8
jr nz, .loop
ret
; 92bbe (24:6bbe)
Function92bbe: ; 92bbe
push hl
srl a
srl a
add Unknown_92bce % $100
ld l, a
ld a, 0
adc Unknown_92bce / $100
ld h, a
ld a, [hl]
pop hl
ret
; 92bce
Unknown_92bce: ; 92bce
db 0, 1, 2, 3, 4, 5
; 92bd4
Function92bd4: ; 92bd4 (24:6bd4)
ld hl, wReel1ReelAction - wReel1
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .dw
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
; 92be4 (24:6be4)
.dw ; 92be4
dw ReelAction_DoNothing ; 00
dw Slots_StopReelIgnoreJoypad ; 01
dw ReelAction_QuadrupleRate ; 02
dw ReelAction_DoubleRate ; 03
dw ReelAction_NormalRate ; 04
dw ReelAction_HalfRate ; 05
dw ReelAction_QuarterRate ; 06
dw ReelAction_StopReel1 ; 07
dw ReelAction_StopReel2 ; 08
dw ReelAction_StopReel3 ; 09
dw ReelAction_SetUpReel2SkipTo7 ; 0a
dw ReelAction_WaitReel2SkipTo7 ; 0b
dw ReelAction_FastSpinReel2UntilLinedUp7s ; 0c
dw ReelAction_BoringReelDrops ; 0d
dw ReelAction_CheckDropReel ; 0e
dw ReelAction_WaitDropReel ; 0f
dw ReelAction_StartSlowAdvanceReel3 ; 10
dw ReelAction_WaitSlowAdvanceReel3 ; 11
dw ReelAction_InitGolem ; 12
dw ReelAction_WaitGolem ; 13
dw ReelAction_EndGolem ; 14
dw Slots_InitChansey ; 15
dw ReelAction_WaitChansey ; 16
dw ReelAction_WaitEgg ; 17
dw ReelAction_DropReel ; 18
; 92c16
ReelAction_DoNothing: ; 92c16
ret
; 92c17
ReelAction_QuadrupleRate: ; 92c17
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $10
ret
; 92c1e
ReelAction_DoubleRate: ; 92c1e
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $8
ret
; 92c25
ReelAction_NormalRate: ; 92c25
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $4
ret
; 92c2c
ReelAction_HalfRate: ; 92c2c
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $2
ret
; 92c33
ReelAction_QuarterRate: ; 92c33
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $1
ret
; 92c3a
Slots_StopReel: ; 92c3a
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
ld hl, wReel1ReelAction - wReel1
add hl, bc
ld [hl], $1
ld hl, wReel1Slot0f - wReel1
add hl, bc
ld [hl], $3
Slots_StopReelIgnoreJoypad: ; 92c4c
ld hl, wReel1Slot0f - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .EndReel
dec [hl]
ret
.EndReel:
ld hl, wReel1ReelAction - wReel1
add hl, bc
ld a, $0
ld [hl], a
ret
; 92c5e
ReelAction_StopReel1: ; 92c5e
ld a, [wSlotBias]
cp SLOTS_NOMATCH
jr z, .NoBias
ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .NoBias
dec [hl]
call .CheckForBias
ret nz
.NoBias:
call Slots_StopReel
ret
; 92c76
.CheckForBias: ; 92c76
call Slots_GetCurrentReelState
ld a, [wSlotBias]
ld e, a
ld a, [hli]
cp e
ret z
ld a, [hli]
cp e
ret z
ld a, [hl]
cp e
ret
; 92c86
ReelAction_StopReel2: ; 92c86
call Slots_CheckMatchedFirstTwoReels
jr nc, .nope
ld a, [wSlotBuildingMatch]
ld hl, wSlotBias
cp [hl]
jr z, .NoBias
.nope
ld a, [wSlotBias]
cp SLOTS_NOMATCH
jr z, .NoBias
ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .NoBias
dec [hl]
ret
.NoBias:
call Slots_StopReel
ret
; 92ca9
ReelAction_StopReel3: ; 92ca9
call Slots_CheckMatchedAllThreeReels
jr nc, .NoMatch
ld hl, wSlotBias
cp [hl]
jr z, .NoBias
ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
ret z
dec [hl]
ret
.NoMatch:
ld a, [wSlotBias]
cp SLOTS_NOMATCH
jr z, .NoBias
ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .NoBias
dec [hl]
ret
.NoBias:
call Slots_StopReel
ret
; 92cd2
ReelAction_SetUpReel2SkipTo7: ; 92cd2
call Slots_CheckMatchedFirstTwoReels
jr nc, .no_match
ld a, [wFirstTwoReelsMatchingSevens]
and a
jr z, .no_match
call Slots_StopReel
ret
.no_match
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], $20
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
ret
; 92cf8
ReelAction_WaitReel2SkipTo7: ; 92cf8
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .asm_92d02
dec [hl]
ret
.asm_92d02
ld a, SFX_THROW_BALL
call Slots_PlaySFX
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $8
ret
; 92d13
ReelAction_FastSpinReel2UntilLinedUp7s: ; 92d13
call Slots_CheckMatchedFirstTwoReels
ret nc
ld a, [wFirstTwoReelsMatchingSevens]
and a
ret z
call Slots_StopReel
ret
; 92d20
ReelAction_InitGolem: ; 92d20
call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
call Slots_WaitSFX
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
call Function92fc0
push bc
push af
depixel 12, 13
ld a, SPRITE_ANIM_INDEX_SLOT_GOLEM
call _InitSpriteAnimStruct
ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
pop af
ld [hl], a
pop bc
xor a
ld [wcf64], a
ReelAction_WaitGolem: ; 92d4f
ld a, [wcf64]
cp 2
jr z, .two
cp 1
jr z, .one
ret
.two
call Slots_CheckMatchedAllThreeReels
call Slots_StopReel
ret
.one
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $8
ret
; 92d6e
ReelAction_EndGolem: ; 92d6e
xor a
ld [wcf64], a
ld hl, wReel1ReelAction - wReel1
add hl, bc
dec [hl]
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
ret
; 92d7e
Slots_InitChansey: ; 92d7e
call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
call Slots_WaitSFX
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
push bc
depixel 12, 0
ld a, SPRITE_ANIM_INDEX_SLOTS_CHANSEY
call _InitSpriteAnimStruct
pop bc
xor a
ld [wcf64], a
ret
; 92da4
ReelAction_WaitChansey: ; 92da4
ld a, [wcf64]
and a
ret z
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld a, $2
ld [wcf64], a
ReelAction_WaitEgg: ; 92db3
ld a, [wcf64]
cp $4
ret c
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $10
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], $11
ReelAction_DropReel: ; 92dca
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .check_match
dec [hl]
ret
.check_match
call Slots_CheckMatchedAllThreeReels
jr nc, .EggAgain
and a
jr nz, .EggAgain
ld a, $5
ld [wcf64], a
call Slots_StopReel
ret
.EggAgain:
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
ld hl, wReel1ReelAction - wReel1
add hl, bc
dec [hl]
dec [hl]
ld a, $1
ld [wcf64], a
ret
; 92df7
ReelAction_BoringReelDrops: ; 92df7
call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
call Slots_WaitSFX
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
call Function92fc0
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], a
ReelAction_CheckDropReel: ; 92e10
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
jr nz, .spin
call Slots_CheckMatchedAllThreeReels
call Slots_StopReel
ret
.spin
dec [hl]
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1Slot0b - wReel1
add hl, bc
ld [hl], $20
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
ReelAction_WaitDropReel: ; 92e31
ld hl, wReel1Slot0b - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .DropReel
dec [hl]
ret
.DropReel:
ld hl, wReel1ReelAction - wReel1
add hl, bc
dec [hl]
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $8 ; 2x
ret
; 92e47
ReelAction_StartSlowAdvanceReel3: ; 92e47
call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
call Slots_PlaySFX
call Slots_WaitSFX
ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $1
ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], $10
ReelAction_WaitSlowAdvanceReel3: ; 92e64
ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
jr z, .check1
dec [hl]
.play_sfx
ld a, SFX_GOT_SAFARI_BALLS
call Slots_PlaySFX
ret
.check1
ld a, [wSlotBias]
and a
jr nz, .check2
call Slots_CheckMatchedAllThreeReels
jr nc, .play_sfx
and a
jr nz, .play_sfx
call Slots_StopReel
call WaitSFX
ret
.check2
call Slots_CheckMatchedAllThreeReels
jr c, .play_sfx
call Slots_StopReel
call WaitSFX
ret
; 92e94
Slots_CheckMatchedFirstTwoReels: ; 92e94
xor a
ld [wFirstTwoReelsMatching], a
ld [wFirstTwoReelsMatchingSevens], a
call Slots_GetCurrentReelState
call Slots_CopyReelState
ld a, [wSlotBet]
and 3
ld e, a
ld d, 0
ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld de, .return
push de
jp hl
.return
ld a, [wFirstTwoReelsMatching]
and a
ret z
scf
ret
; 92ebd
.Jumptable: ; 92ebd
dw .zero
dw .one
dw .two
dw .three
; 92ec5
.three ; 92ec5
call .CheckUpwardsDiag
call .CheckDownwardsDiag
.two ; 92ecb
call .CheckBottomRow
call .CheckTopRow
.one ; 92ed1
call .CheckMiddleRow
.zero ; 92ed4
ret
; 92ed5
.CheckBottomRow: ; 92ed5
ld hl, wCurrReelStopped
ld a, [wReel1Stopped]
cp [hl]
call z, .StoreResult
ret
; 92ee0
.CheckUpwardsDiag: ; 92ee0
ld hl, wCurrReelStopped + 1
ld a, [wReel1Stopped]
cp [hl]
call z, .StoreResult
ret
; 92eeb
.CheckMiddleRow: ; 92eeb
ld hl, wCurrReelStopped + 1
ld a, [wReel1Stopped + 1]
cp [hl]
call z, .StoreResult
ret
; 92ef6
.CheckDownwardsDiag: ; 92ef6
ld hl, wCurrReelStopped + 1
ld a, [wReel1Stopped + 2]
cp [hl]
call z, .StoreResult
ret
; 92f01
.CheckTopRow: ; 92f01
ld hl, wCurrReelStopped + 2
ld a, [wReel1Stopped + 2]
cp [hl]
call z, .StoreResult
ret
; 92f0c
.StoreResult: ; 92f0c
ld [wSlotBuildingMatch], a
and a
jr nz, .matching_sevens
ld a, $1
ld [wFirstTwoReelsMatchingSevens], a
.matching_sevens
ld a, $1
ld [wFirstTwoReelsMatching], a
ret
; 92f1d
Slots_CheckMatchedAllThreeReels: ; 92f1d
ld a, $ff
ld [wSlotMatched], a
call Slots_GetCurrentReelState
call Slots_CopyReelState
ld a, [wSlotBet]
and 3
ld e, a
ld d, 0
ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ld de, .return
push de
jp hl
.return
ld a, [wSlotMatched]
cp $ff
jr nz, .matched_nontrivial
and a
ret
.matched_nontrivial
scf
ret
; 92f48
.Jumptable: ; 92f48
dw .zero
dw .one
dw .two
dw .three
; 92f50
.three ; 92f50
call .CheckUpwardsDiag
call .CheckDownwardsDiag
.two ; 92f56
call .CheckBottomRow
call .CheckTopRow
.one ; 92f5c
call .CheckMiddleRow
.zero ; 92f5f
ret
; 92f60
.CheckBottomRow: ; 92f60
ld hl, wCurrReelStopped
ld a, [wReel1Stopped]
cp [hl]
ret nz
ld hl, wReel2Stopped
cp [hl]
call z, .StoreResult
ret
; 92f70
.CheckUpwardsDiag: ; 92f70
ld hl, wCurrReelStopped + 2
ld a, [wReel1Stopped]
cp [hl]
ret nz
ld hl, wReel2Stopped + 1
cp [hl]
call z, .StoreResult
ret
; 92f80
.CheckMiddleRow: ; 92f80
ld hl, wCurrReelStopped + 1
ld a, [wReel1Stopped + 1]
cp [hl]
ret nz
ld hl, wReel2Stopped + 1
cp [hl]
call z, .StoreResult
ret
; 92f90
.CheckDownwardsDiag: ; 92f90
ld hl, wCurrReelStopped
ld a, [wReel1Stopped + 2]
cp [hl]
ret nz
ld hl, wReel2Stopped + 1
cp [hl]
call z, .StoreResult
ret
; 92fa0
.CheckTopRow: ; 92fa0
ld hl, wCurrReelStopped + 2
ld a, [wReel1Stopped + 2]
cp [hl]
ret nz
ld hl, wReel2Stopped + 2
cp [hl]
call z, .StoreResult
ret
; 92fb0
.StoreResult: ; 92fb0
ld [wSlotMatched], a
ret
; 92fb4
Slots_CopyReelState: ; 92fb4
ld de, wCurrReelStopped
ld a, [hli]
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
ld a, [hl]
ld [de], a
ret
; 92fc0
Function92fc0: ; 92fc0
ld hl, wReel1Position - wReel1
add hl, bc
ld a, [hl]
push af
push hl
call .Check7Bias
pop hl
pop af
ld [hl], a
ld a, e
ret
; 92fcf
.Check7Bias: ; 92fcf
ld a, [wSlotBias]
and a
jr nz, .not_biased_to_seven
ld e, $0
.loop1
ld hl, wReel1Position - wReel1
add hl, bc
inc [hl]
inc e
push de
call Slots_CheckMatchedAllThreeReels
pop de
jr nc, .loop1
and a
jr nz, .loop1
ret
.not_biased_to_seven
call Random
and $7
cp $4 ; ((50 percent) & 7) + 1
jr c, .not_biased_to_seven
ld e, a
.loop2
ld a, e
inc e
ld hl, wReel1Position - wReel1
add hl, bc
add [hl]
ld [hl], a
push de
call Slots_CheckMatchedAllThreeReels
pop de
jr c, .loop2
ret
; 93002
Slots_InitBias: ; 93002 (24:7002)
ld a, [wSlotBias]
and a
ret z
ld hl, .Normal
ld a, [ScriptVar]
and a
jr z, .okay
ld hl, .Lucky
.okay
call Random
ld c, a
.loop
ld a, [hli]
cp c
jr nc, .done
inc hl
jr .loop
.done
ld a, [hl]
ld [wSlotBias], a
ret
; 93023 (24:7023)
.Normal: ; 93023
db $01, SLOTS_SEVEN ; 1/256
db $03, SLOTS_POKEBALL ; 1/128
db $0a, SLOTS_STARYU ; 7/256
db $14, SLOTS_SQUIRTLE ; 5/128
db $28, SLOTS_PIKACHU ; 5/64
db $30, SLOTS_CHERRY ; 1/32
db $ff, SLOTS_NOMATCH ; everything else
; 93031
.Lucky: ; 93031
db $02, SLOTS_SEVEN ; 1/128
db $03, SLOTS_POKEBALL ; 1/256
db $08, SLOTS_STARYU ; 5/256
db $10, SLOTS_SQUIRTLE ; 1/32
db $1e, SLOTS_PIKACHU ; 7/128
db $50, SLOTS_CHERRY ; 25/128
db $ff, SLOTS_NOMATCH ; everything else
; 9303f
Slots_IlluminateBetLights: ; 9303f (24:703f)
ld b, $14 ; turned on
ld a, [wSlotBet]
dec a
jr z, Slots_Lights1OnOff
dec a
jr z, Slots_Lights2OnOff
jr Slots_Lights3OnOff
Slots_DeilluminateBetLights: ; 9304c (24:704c)
ld b, $23 ; turned off
Slots_Lights3OnOff: ; 9304e (24:704e)
hlcoord 3, 2
call Slots_TurnLightsOnOrOff
hlcoord 3, 10
call Slots_TurnLightsOnOrOff
Slots_Lights2OnOff: ; 9305a (24:705a)
hlcoord 3, 4
call Slots_TurnLightsOnOrOff
hlcoord 3, 8
call Slots_TurnLightsOnOrOff
Slots_Lights1OnOff: ; 93066 (24:7066)
hlcoord 3, 6
Slots_TurnLightsOnOrOff: ; 93069 (24:7069)
ld a, b
ld [hl], a
ld de, SCREEN_WIDTH / 2 + 3
add hl, de
ld [hl], a
ld de, SCREEN_WIDTH / 2 - 3
add hl, de
inc a
ld [hl], a
ld de, SCREEN_WIDTH / 2 + 3
add hl, de
ld [hl], a
ret
Slots_AskBet: ; 9307c (24:707c)
.loop
ld hl, .Text_BetHowManyCoins
call PrintText
ld hl, .MenuDataHeader
call LoadMenuDataHeader
call VerticalMenu
call CloseWindow
ret c
ld a, [wMenuCursorY]
ld b, a
ld a, 4
sub b
ld [wSlotBet], a
ld hl, Coins
ld c, a
ld a, [hli]
and a
jr nz, .Start
ld a, [hl]
cp c
jr nc, .Start
ld hl, .Text_NotEnoughCoins
call PrintText
jr .loop
.Start:
ld hl, Coins + 1
ld a, [hl]
sub c
ld [hld], a
jr nc, .ok
dec [hl]
.ok
call WaitSFX
ld de, SFX_PAY_DAY
call PlaySFX
ld hl, .Text_Start
call PrintText
and a
ret
; 930c7 (24:70c7)
.Text_BetHowManyCoins: ; 0x930c7
; Bet how many coins?
text_jump UnknownText_0x1c5049
db "@"
; 0x930cc
.Text_Start: ; 0x930cc
; Start!
text_jump UnknownText_0x1c505e
db "@"
; 0x930d1
.Text_NotEnoughCoins: ; 0x930d1
; Not enough coins.
text_jump UnknownText_0x1c5066
db "@"
; 0x930d6
.MenuDataHeader: ; 0x930d6
db $40 ; flags
db 10, 14 ; start coords
db 17, 19 ; end coords
dw .MenuData2
db 1 ; default option
; 0x930de
.MenuData2: ; 0x930de
db $80 ; flags
db 3 ; items
db " 3@"
db " 2@"
db " 1@"
; 0x930e9
Slots_AskPlayAgain: ; 930e9 (24:70e9)
ld hl, Coins
ld a, [hli]
or [hl]
jr nz, .you_have_coins
ld hl, .Text_OutOfCoins
call PrintText
ld c, 60
call DelayFrames
jr .exit_slots
.you_have_coins
ld hl, .Text_PlayAgain
call PrintText
call LoadMenuTextBox
lb bc, 14, 12
call PlaceYesNoBox
ld a, [wMenuCursorY]
dec a
call CloseWindow
and a
jr nz, .exit_slots
and a
ret
.exit_slots
scf
ret
; 9311a (24:711a)
.Text_OutOfCoins: ; 9311a
text_jump UnknownText_0x1c5079
db "@"
.Text_PlayAgain: ; 9311f
text_jump UnknownText_0x1c5092
db "@"
SlotGetPayout: ; 93124 (24:7124)
ld a, [wSlotMatched]
cp -1
jr z, .no_win
srl a
ld e, a
ld d, 0
ld hl, .PayoutTable
add hl, de
ld a, [hli]
ld [wPayout + 1], a
ld e, a
ld a, [hl]
ld [wPayout], a
ld d, a
callba TrainerRankings_AddToSlotsPayouts
ret
.PayoutTable:
dw 300
dw 50
dw 6
dw 8
dw 10
dw 15
.no_win
ld hl, wPayout
xor a
ld [hli], a
ld [hl], a
ret
SlotPayoutText: ; 93158 (24:7158)
ld a, [wSlotMatched]
cp -1
jr nz, .MatchedSomething
ld hl, .Text_Darn
call PrintText
callba TrainerRankings_EndSlotsWinStreak
ret
.MatchedSomething:
srl a
ld e, a
ld d, 0
ld hl, .PayoutStrings
add hl, de
add hl, de
add hl, de
ld de, StringBuffer2
ld bc, 4
call CopyBytes
ld a, [hli]
ld h, [hl]
ld l, a
ld de, .return
push de
jp hl
.return
ld hl, .Text_PrintPayout
call PrintText
callba TrainerRankings_AddToSlotsWinStreak
ret
; 93195 (24:7195)
.PayoutStrings: ; 93195
dbw "300@", .LinedUpSevens
dbw "50@@", .LinedUpPokeballs
dbw "6@@@", .LinedUpMonOrCherry
dbw "8@@@", .LinedUpMonOrCherry
dbw "10@@", .LinedUpMonOrCherry
dbw "15@@", .LinedUpMonOrCherry
; 931b9
.Text_PrintPayout: ; 0x931b9
start_asm
ld a, [wSlotMatched]
add $25
ldcoord_a 2, 13
inc a
ldcoord_a 2, 14
inc a
ldcoord_a 3, 13
inc a
ldcoord_a 3, 14
hlcoord 18, 17
ld [hl], "▼"
ld hl, .Text_LinedUpWonCoins
rept 4
inc bc
endr
ret
; 931db
.Text_LinedUpWonCoins: ; 0x931db
; lined up! Won @ coins!
text_jump UnknownText_0x1c509f
db "@"
; 0x931e0
.Text_Darn: ; 0x931e0
; Darn!
text_jump UnknownText_0x1c50bb
db "@"
; 0x931e5
.LinedUpSevens: ; 931e5
ld a, SFX_2ND_PLACE
call Slots_PlaySFX
call WaitSFX
ld a, [wd002]
and a
jr nz, .asm_931ff
call Random
and $14
ret z
ld a, $ff
ld [wSlotBias], a
ret
.asm_931ff
call Random
and $1c
ret z
ld a, $ff
ld [wSlotBias], a
ret
; 9320b
.LinedUpPokeballs: ; 9320b
ld a, SFX_3RD_PLACE
call Slots_PlaySFX
call WaitSFX
ret
; 93214
.LinedUpMonOrCherry: ; 93214
ld a, SFX_PRESENT
call Slots_PlaySFX
call WaitSFX
ret
; 9321d
SlotMachine_AnimateGolem: ; 9321d (24:721d)
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.Jumptable: ; 9322d (24:722d)
dw .init
dw .fall
dw .roll
.init ; 93233 (24:7233)
ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld a, [hl]
and a
jr nz, .retain
ld a, $2
ld [wcf64], a
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
.retain
dec [hl]
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $30
ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], $0
.fall ; 93259 (24:7259)
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $20
jr c, .play_sound
dec [hl]
ld e, a
ld d, 14 * 8
callba BattleAnim_Sine_e
ld a, e
ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ret
.play_sound
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $2
ld a, $1
ld [wcf64], a
ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
call Slots_PlaySFX
ret
.roll ; 93289 (24:7289)
ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld a, [hl]
inc [hl]
inc [hl]
cp 9 * 8
jr nc, .restart
and $3
ret nz
ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
xor $ff
inc a
ld [hl], a
ld [hSCY], a
ret
.restart
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
xor a
ld [hl], a
ld [hSCY], a
ret
Slots_AnimateChansey: ; 932ac (24:72ac)
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .Jumptable
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
.Jumptable: ; 932bc (24:72bc)
dw .walk
dw .one
dw .two
.walk ; 932c2 (24:72c2)
ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
inc [hl]
cp 13 * 8
jr z, .limit
and $f
ret nz
ld de, SFX_JUMP_OVER_LEDGE
call PlaySFX
ret
.limit
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld a, $1
ld [wcf64], a
.one ; 932e0 (24:72e0)
ld a, [wcf64]
cp $2
jr z, .retain
cp $5
ret nz
ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
.retain
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
inc [hl]
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $8
.two ; 932fc (24:72fc)
ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
jr z, .spawn_egg
dec [hl]
ret
.spawn_egg
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc
dec [hl]
push bc
depixel 12, 13, 0, 4
ld a, SPRITE_ANIM_INDEX_SLOTS_EGG
call _InitSpriteAnimStruct
pop bc
ret
; 93316 (24:7316)
Slots_WaitSFX: ; 93316
push bc
ld c, 16
call DelayFrames
pop bc
ret
; 9331e
Slots_PlaySFX: ; 9331e (24:731e)
push de
ld e, a
ld d, 0
call PlaySFX
pop de
ret
; 93327 (24:7327)
; The first three positions are repeated to
; avoid needing to check indices when copying.
Reel1Tilemap: ; 93327
db SLOTS_SEVEN ; 0
db SLOTS_CHERRY ; 1
db SLOTS_STARYU ; 2
db SLOTS_PIKACHU ; 3
db SLOTS_SQUIRTLE ; 4
db SLOTS_SEVEN ; 5
db SLOTS_CHERRY ; 6
db SLOTS_STARYU ; 7
db SLOTS_PIKACHU ; 8
db SLOTS_SQUIRTLE ; 9
db SLOTS_POKEBALL ; 10
db SLOTS_CHERRY ; 11
db SLOTS_STARYU ; 12
db SLOTS_PIKACHU ; 13
db SLOTS_SQUIRTLE ; 14
db SLOTS_SEVEN ; 0
db SLOTS_CHERRY ; 1
db SLOTS_STARYU ; 2
Reel2Tilemap: ; 93339
db SLOTS_SEVEN ; 0
db SLOTS_PIKACHU ; 1
db SLOTS_CHERRY ; 2
db SLOTS_SQUIRTLE ; 3
db SLOTS_STARYU ; 4
db SLOTS_POKEBALL ; 5
db SLOTS_PIKACHU ; 6
db SLOTS_CHERRY ; 7
db SLOTS_SQUIRTLE ; 8
db SLOTS_STARYU ; 9
db SLOTS_POKEBALL ; 10
db SLOTS_PIKACHU ; 11
db SLOTS_CHERRY ; 12
db SLOTS_SQUIRTLE ; 13
db SLOTS_STARYU ; 14
db SLOTS_SEVEN ; 0
db SLOTS_PIKACHU ; 1
db SLOTS_CHERRY ; 2
Reel3Tilemap: ; 9334b
db SLOTS_SEVEN ; 0
db SLOTS_PIKACHU ; 1
db SLOTS_CHERRY ; 2
db SLOTS_SQUIRTLE ; 3
db SLOTS_STARYU ; 4
db SLOTS_PIKACHU ; 5
db SLOTS_CHERRY ; 6
db SLOTS_SQUIRTLE ; 7
db SLOTS_STARYU ; 8
db SLOTS_PIKACHU ; 9
db SLOTS_POKEBALL ; 10
db SLOTS_CHERRY ; 11
db SLOTS_SQUIRTLE ; 12
db SLOTS_STARYU ; 13
db SLOTS_PIKACHU ; 14
db SLOTS_SEVEN ; 0
db SLOTS_PIKACHU ; 1
db SLOTS_CHERRY ; 2
; 9335d
SlotsTilemap: ; 9335d
INCBIN "gfx/slots.tilemap"
; 9344d
Slots1LZ: ; 9344d
INCBIN "gfx/slots_1.2bpp.lz"
; 935cd
Slots2LZ: ; 935cd
INCBIN "gfx/slots_2.2bpp.lz"
; 9382d
Slots3LZ: ; 9382d
INCBIN "gfx/slots_3.2bpp.lz"
; 93a3d