More constants and documentation in slot machines

This commit is contained in:
xCrystal 2017-12-28 19:38:15 +01:00
parent 731311cb15
commit d6507e3882
4 changed files with 287 additions and 165 deletions

View File

@ -6371,13 +6371,13 @@ LoadEnemyMon: ; 3e8eb
jr c, .GenerateDVs ; try again jr c, .GenerateDVs ; try again
.Magikarp: .Magikarp:
; These filters are untranslated ; These filters are untranslated.
; They expect at wMagikarpLength a 2-byte value in mm, ; They expect at wMagikarpLength a 2-byte value in mm,
; but the value is at ft and in (one byte each) ; but the value is in feet and inches (one byte each).
; The first filter is supposed to make very large Magikarp even rarer, ; The first filter is supposed to make very large Magikarp even rarer,
; by targeting those 1600 mm or larger. ; by targeting those 1600 mm or larger.
; After the conversion to feet, they are unable to target any, ; After the conversion to feet, it is unable to target any,
; as the largest possible Magikarp is 5'3'', which reads as 1283. ; as the largest possible Magikarp is 5'3'', which reads as 1283.
ld a, [TempEnemyMonSpecies] ld a, [TempEnemyMonSpecies]
cp MAGIKARP cp MAGIKARP

View File

@ -1,3 +1,4 @@
SLOTS_NOBIAS EQU -1
SLOTS_NOMATCH EQU -1 SLOTS_NOMATCH EQU -1
SLOTS_SEVEN EQU $00 SLOTS_SEVEN EQU $00
SLOTS_POKEBALL EQU $04 SLOTS_POKEBALL EQU $04
@ -7,6 +8,57 @@ SLOTS_SQUIRTLE EQU $10
SLOTS_STARYU EQU $14 SLOTS_STARYU EQU $14
REEL_SIZE EQU 15 REEL_SIZE EQU 15
; SlotsJumptable constants
const_def
const SLOTS_INIT
const SLOTS_BET_AND_START
const SLOTS_WAIT_START
const SLOTS_WAIT_REEL1
const SLOTS_WAIT_STOP_REEL1
const SLOTS_WAIT_REEL2
const SLOTS_WAIT_STOP_REEL2
const SLOTS_WAIT_REEL3
const SLOTS_WAIT_STOP_REEL3
const SLOTS_NEXT_09
const SLOTS_NEXT_0a
const SLOTS_NEXT_0b
const SLOTS_FLASH_IF_WIN
const SLOTS_FLASH_SCREEN
const SLOTS_GIVE_EARNED_COINS
const SLOTS_PAYOUT_TEXT_AND_ANIM
const SLOTS_PAYOUT_ANIM
const SLOTS_RESTART_OF_QUIT
const SLOTS_QUIT
SLOTS_END_LOOP_F EQU 7
; ReelActionJumptable constants
const_def
const REEL_ACTION_DO_NOTHING
const REEL_ACTION_STOP_REEL_IGNORE_JOYPAD
const REEL_ACTION_QUADRUPLE_RATE
const REEL_ACTION_DOUBLE_RATE
const REEL_ACTION_NORMAL_RATE
const REEL_ACTION_HALF_RATE
const REEL_ACTION_QUARTER_RATE
const REEL_ACTION_STOP_REEL1
const REEL_ACTION_STOP_REEL2
const REEL_ACTION_STOP_REEL3
const REEL_ACTION_SET_UP_REEL2_SKIP_TO_7
const REEL_ACTION_WAIT_REEL2_SKIP_TO_7
const REEL_ACTION_FAST_SPIN_REEL2_UNTIL_LINED_UP_7S
const REEL_ACTION_UNUSED
const REEL_ACTION_CHECK_DROP_REEL
const REEL_ACTION_WAIT_DROP_REEL
const REEL_ACTION_START_SLOW_ADVANCE_REEL3
const REEL_ACTION_WAIT_SLOW_ADVANCE_REEL3
const REEL_ACTION_INIT_GOLEM
const REEL_ACTION_WAIT_GOLEM
const REEL_ACTION_END_GOLEM
const REEL_ACTION_INIT_CHANSEY
const REEL_ACTION_WAIT_CHANSEY
const REEL_ACTION_WAIT_EGG
const REEL_ACTION_DROP_REEL
_SlotMachine: _SlotMachine:
ld hl, Options ld hl, Options
set NO_TEXT_SCROLL, [hl] set NO_TEXT_SCROLL, [hl]
@ -23,7 +75,7 @@ _SlotMachine:
farcall TrainerRankings_EndSlotsWinStreak farcall TrainerRankings_EndSlotsWinStreak
ld hl, Options ld hl, Options
res NO_TEXT_SCROLL, [hl] res NO_TEXT_SCROLL, [hl]
ld hl, rLCDC ; $ff40 ld hl, rLCDC
res 2, [hl] res 2, [hl]
ret ret
@ -68,11 +120,11 @@ _SlotMachine:
ld bc, SCREEN_WIDTH * 12 ld bc, SCREEN_WIDTH * 12
call CopyBytes call CopyBytes
ld hl, rLCDC ; $ff40 ld hl, rLCDC
set 2, [hl] set 2, [hl]
call EnableLCD call EnableLCD
ld hl, wSlots ; Alias: wTrademons ld hl, wSlots
ld bc, wSlotsEnd - wSlots ; Alias: wTrademonsEnd ld bc, wSlotsEnd - wSlots
xor a xor a
call ByteFill call ByteFill
call InitReelTiles call InitReelTiles
@ -81,19 +133,19 @@ _SlotMachine:
ld hl, wSpriteAnimDict ld hl, wSpriteAnimDict
ld [hli], a ld [hli], a
ld [hl], $40 ld [hl], $40
xor a xor a ; SLOTS_INIT
ld [wJumptableIndex], a ld [wJumptableIndex], a
ld a, SLOTS_NOMATCH ld a, SLOTS_NOBIAS
ld [wSlotBias], a ld [wSlotBias], a
ld de, MUSIC_GAME_CORNER ld de, MUSIC_GAME_CORNER
call PlayMusic call PlayMusic
xor a xor a
ld [wd002], a ld [wKeepSevenBiasChance], a ; 87.5% chance
call Random call Random
and %00101010 and %00101010
ret nz ret nz
ld a, $1 ld a, 1
ld [wd002], a ld [wKeepSevenBiasChance], a ; 12.5% chance
ret ret
Slots_GetPals: ; 9279b (24:679b) Slots_GetPals: ; 9279b (24:679b)
@ -110,7 +162,7 @@ Slots_GetPals: ; 9279b (24:679b)
SlotsLoop: ; 927af (24:67af) SlotsLoop: ; 927af (24:67af)
ld a, [wJumptableIndex] ld a, [wJumptableIndex]
bit 7, a bit SLOTS_END_LOOP_F, a
jr nz, .stop jr nz, .stop
call SlotsJumptable call SlotsJumptable
call Slots_SpinReels call Slots_SpinReels
@ -244,14 +296,14 @@ Slots_Init: ; 9287e (24:687e)
xor a xor a
ld [wFirstTwoReelsMatching], a ld [wFirstTwoReelsMatching], a
ld [wFirstTwoReelsMatchingSevens], a ld [wFirstTwoReelsMatchingSevens], a
ld a, -1 ld a, SLOTS_NOMATCH
ld [wSlotMatched], a ld [wSlotMatched], a
ret ret
Slots_BetAndStart: ; 9288e (24:688e) Slots_BetAndStart: ; 9288e (24:688e)
call Slots_AskBet call Slots_AskBet
jr nc, .proceed jr nc, .proceed
ld a, 18 ld a, SLOTS_QUIT
ld [wJumptableIndex], a ld [wJumptableIndex], a
ret ret
@ -260,22 +312,22 @@ Slots_BetAndStart: ; 9288e (24:688e)
call Slots_IlluminateBetLights call Slots_IlluminateBetLights
call Slots_InitBias call Slots_InitBias
ld a, 32 ld a, 32
ld [wcf64], a ld [wSlotsDelay], a
ld a, 4 ld a, REEL_ACTION_NORMAL_RATE
ld [wReel1ReelAction], a ld [wReel1ReelAction], a
ld [wReel2ReelAction], a ld [wReel2ReelAction], a
ld [wReel3ReelAction], a ld [wReel3ReelAction], a
ld a, $4 ld a, 4
ld [wReel1Slot09], a ld [wReel1ManipCounter], a
ld [wReel2Slot09], a ld [wReel2ManipCounter], a
ld [wReel3Slot09], a ld [wReel3ManipCounter], a
call WaitSFX call WaitSFX
ld a, SFX_SLOT_MACHINE_START ld a, SFX_SLOT_MACHINE_START
call Slots_PlaySFX call Slots_PlaySFX
ret ret
Slots_WaitStart: ; 928c6 (24:68c6) Slots_WaitStart: ; 928c6 (24:68c6)
ld hl, wcf64 ld hl, wSlotsDelay
ld a, [hl] ld a, [hl]
and a and a
jr z, .proceed jr z, .proceed
@ -289,7 +341,7 @@ Slots_WaitStart: ; 928c6 (24:68c6)
ret ret
Slots_WaitReel1: ; 928d6 (24:68d6) Slots_WaitReel1: ; 928d6 (24:68d6)
ld hl, hJoypadSum ; $ffa5 ld hl, hJoypadSum
ld a, [hl] ld a, [hl]
and A_BUTTON and A_BUTTON
ret z ret z
@ -298,7 +350,7 @@ Slots_WaitReel1: ; 928d6 (24:68d6)
ld [wReel1ReelAction], a ld [wReel1ReelAction], a
Slots_WaitStopReel1: ; 928e6 (24:68e6) Slots_WaitStopReel1: ; 928e6 (24:68e6)
ld a, [wReel1ReelAction] ld a, [wReel1ReelAction]
cp $0 cp REEL_ACTION_DO_NOTHING
ret nz ret nz
ld a, SFX_STOP_SLOT ld a, SFX_STOP_SLOT
call Slots_PlaySFX call Slots_PlaySFX
@ -309,7 +361,7 @@ Slots_WaitStopReel1: ; 928e6 (24:68e6)
xor a xor a
ld [hJoypadSum], a ld [hJoypadSum], a
Slots_WaitReel2: ; 92900 (24:6900) Slots_WaitReel2: ; 92900 (24:6900)
ld hl, hJoypadSum ; $ffa5 ld hl, hJoypadSum
ld a, [hl] ld a, [hl]
and A_BUTTON and A_BUTTON
ret z ret z
@ -318,7 +370,7 @@ Slots_WaitReel2: ; 92900 (24:6900)
ld [wReel2ReelAction], a ld [wReel2ReelAction], a
Slots_WaitStopReel2: ; 92910 (24:6910) Slots_WaitStopReel2: ; 92910 (24:6910)
ld a, [wReel2ReelAction] ld a, [wReel2ReelAction]
cp $0 cp REEL_ACTION_DO_NOTHING
ret nz ret nz
ld a, SFX_STOP_SLOT ld a, SFX_STOP_SLOT
call Slots_PlaySFX call Slots_PlaySFX
@ -329,7 +381,7 @@ Slots_WaitStopReel2: ; 92910 (24:6910)
xor a xor a
ld [hJoypadSum], a ld [hJoypadSum], a
Slots_WaitReel3: ; 9292a (24:692a) Slots_WaitReel3: ; 9292a (24:692a)
ld hl, hJoypadSum ; $ffa5 ld hl, hJoypadSum
ld a, [hl] ld a, [hl]
and A_BUTTON and A_BUTTON
ret z ret z
@ -338,7 +390,7 @@ Slots_WaitReel3: ; 9292a (24:692a)
ld [wReel3ReelAction], a ld [wReel3ReelAction], a
Slots_WaitStopReel3: ; 9293a (24:693a) Slots_WaitStopReel3: ; 9293a (24:693a)
ld a, [wReel3ReelAction] ld a, [wReel3ReelAction]
cp $0 cp REEL_ACTION_DO_NOTHING
ret nz ret nz
ld a, SFX_STOP_SLOT ld a, SFX_STOP_SLOT
call Slots_PlaySFX call Slots_PlaySFX
@ -352,7 +404,7 @@ Slots_WaitStopReel3: ; 9293a (24:693a)
Slots_FlashIfWin: ; 92955 (24:6955) Slots_FlashIfWin: ; 92955 (24:6955)
ld a, [wSlotMatched] ld a, [wSlotMatched]
cp -1 cp SLOTS_NOMATCH
jr nz, .GotIt jr nz, .GotIt
call Slots_Next call Slots_Next
call Slots_Next call Slots_Next
@ -361,9 +413,9 @@ Slots_FlashIfWin: ; 92955 (24:6955)
.GotIt: .GotIt:
call Slots_Next call Slots_Next
ld a, 16 ld a, 16
ld [wcf64], a ld [wSlotsDelay], a
Slots_FlashScreen: ; 9296b (24:696b) Slots_FlashScreen: ; 9296b (24:696b)
ld hl, wcf64 ld hl, wSlotsDelay
ld a, [hl] ld a, [hl]
and a and a
jr z, .done jr z, .done
@ -391,7 +443,7 @@ Slots_GiveEarnedCoins: ; 92987 (24:6987)
call DmgToCgbBGPals call DmgToCgbBGPals
call SlotGetPayout call SlotGetPayout
xor a xor a
ld [wcf64], a ld [wSlotsDelay], a
call Slots_Next call Slots_Next
ret ret
@ -399,7 +451,7 @@ Slots_PayoutTextAndAnim: ; 9299e (24:699e)
call SlotPayoutText call SlotPayoutText
call Slots_Next call Slots_Next
Slots_PayoutAnim: ; 929a4 (24:69a4) Slots_PayoutAnim: ; 929a4 (24:69a4)
ld hl, wcf64 ld hl, wSlotsDelay
ld a, [hl] ld a, [hl]
inc [hl] inc [hl]
and $1 and $1
@ -425,7 +477,7 @@ Slots_PayoutAnim: ; 929a4 (24:69a4)
ld [hl], e ld [hl], e
dec hl dec hl
ld [hl], d ld [hl], d
ld a, [wcf64] ld a, [wSlotsDelay]
and $7 and $7
ret z ; ret nz would be more appropriate ret z ; ret nz would be more appropriate
ld de, SFX_GET_COIN_FROM_SLOTS ld de, SFX_GET_COIN_FROM_SLOTS
@ -441,18 +493,18 @@ Slots_RestartOrQuit: ; 929d9 (24:69d9)
call WaitPressAorB_BlinkCursor call WaitPressAorB_BlinkCursor
call Slots_AskPlayAgain call Slots_AskPlayAgain
jr c, .exit_slots jr c, .exit_slots
ld a, 0 ld a, SLOTS_INIT
ld [wJumptableIndex], a ld [wJumptableIndex], a
ret ret
.exit_slots .exit_slots
ld a, 18 ld a, SLOTS_QUIT
ld [wJumptableIndex], a ld [wJumptableIndex], a
ret ret
Slots_Quit: ; 929f0 (24:69f0) Slots_Quit: ; 929f0 (24:69f0)
ld hl, wJumptableIndex ld hl, wJumptableIndex
set 7, [hl] set SLOTS_END_LOOP_F, [hl]
ret ret
Slots_LoadReelState: ; 929f6 (24:69f6) Slots_LoadReelState: ; 929f6 (24:69f6)
@ -504,17 +556,25 @@ Slots_GetCurrentReelState: ; 92a12 (24:6a12)
ret ret
Slots_StopReel1: ; 92a2b (24:6a2b) Slots_StopReel1: ; 92a2b (24:6a2b)
ld a, $7 ; Always set the REEL_ACTION_STOP_REEL1 action.
ld a, REEL_ACTION_STOP_REEL1
ret ret
Slots_StopReel2: ; 92a2e (24:6a2e) Slots_StopReel2: ; 92a2e (24:6a2e)
; As long as, the following three meet, there's a 31.25% chance
; to set action REEL_ACTION_SET_UP_REEL2_SKIP_TO_7:
; - Bet is >= 2 coins
; - There's a 7 symbol visible in reel #1
; - Current spin isn't biased or is biased towards SEVEN
; In any other case, REEL_ACTION_STOP_REEL2 is set.
ld a, [wSlotBet] ld a, [wSlotBet]
cp $2 cp $2
jr c, .dont_jump jr c, .dont_jump
ld a, [wSlotBias] ld a, [wSlotBias]
and a and a
jr z, .skip jr z, .skip
cp SLOTS_NOMATCH cp SLOTS_NOBIAS
jr nz, .dont_jump jr nz, .dont_jump
.skip .skip
call .CheckReel1ForASeven call .CheckReel1ForASeven
@ -522,11 +582,11 @@ Slots_StopReel2: ; 92a2e (24:6a2e)
call Random call Random
cp $50 ; 32% cp $50 ; 32%
jr nc, .dont_jump jr nc, .dont_jump
ld a, $a ld a, REEL_ACTION_SET_UP_REEL2_SKIP_TO_7
ret ret
.dont_jump .dont_jump
ld a, $8 ld a, REEL_ACTION_STOP_REEL2
ret ret
.CheckReel1ForASeven: ; 92a51 (24:6a51) .CheckReel1ForASeven: ; 92a51 (24:6a51)
@ -541,6 +601,21 @@ Slots_StopReel2: ; 92a2e (24:6a2e)
ret ret
Slots_StopReel3: ; 92a60 (24:6a60) Slots_StopReel3: ; 92a60 (24:6a60)
; If no matching SEVEN symbols in reels #1 and #2:
; - REEL_ACTION_STOP_REEL3, 100%
; If matching SEVEN symbols and NO bias to SEVEN:
; - REEL_ACTION_STOP_REEL3, 37.5%
; - REEL_ACTION_START_SLOW_ADVANCE_REEL3, 31.3%
; - REEL_ACTION_INIT_GOLEM, 31.3%
; - REEL_ACTION_INIT_CHANSEY, 0%
; If matching SEVEN symbols and bias to SEVEN:
; - REEL_ACTION_STOP_REEL3, 29.7%
; - REEL_ACTION_START_SLOW_ADVANCE_REEL3, 23.4%
; - REEL_ACTION_INIT_GOLEM, 23.4%
; - REEL_ACTION_INIT_CHANSEY, 23.4%
ld a, [wFirstTwoReelsMatching] ld a, [wFirstTwoReelsMatching]
and a and a
jr z, .stop jr z, .stop
@ -557,7 +632,7 @@ Slots_StopReel3: ; 92a60 (24:6a60)
jr nc, .slow_advance jr nc, .slow_advance
cp 60 cp 60
jr nc, .golem jr nc, .golem
ld a, $15 ld a, REEL_ACTION_INIT_CHANSEY
ret ret
.biased .biased
@ -567,15 +642,15 @@ Slots_StopReel3: ; 92a60 (24:6a60)
cp 80 cp 80
jr nc, .slow_advance jr nc, .slow_advance
.golem .golem
ld a, $12 ld a, REEL_ACTION_INIT_GOLEM
ret ret
.slow_advance .slow_advance
ld a, $10 ld a, REEL_ACTION_START_SLOW_ADVANCE_REEL3
ret ret
.stop .stop
ld a, $9 ld a, REEL_ACTION_STOP_REEL3
ret ret
InitReelTiles: ; 92a98 (24:6a98) InitReelTiles: ; 92a98 (24:6a98)
@ -637,13 +712,13 @@ InitReelTiles: ; 92a98 (24:6a98)
.OAM: ; 92af9 (24:6af9) .OAM: ; 92af9 (24:6af9)
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], REEL_ACTION_DO_NOTHING
ld hl, wReel1Position - wReel1 ld hl, wReel1Position - wReel1
add hl, bc add hl, bc
ld [hl], REEL_SIZE - 1 ld [hl], REEL_SIZE - 1
ld hl, wReel1SpinDistance - wReel1 ld hl, wReel1SpinDistance - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], REEL_ACTION_DO_NOTHING
call UpdateReelPositionAndOAM call UpdateReelPositionAndOAM
ret ret
@ -662,7 +737,7 @@ Slots_SpinReels: ; 92b0f (24:6b0f)
ld a, [hl] ld a, [hl]
and $f and $f
jr nz, .skip jr nz, .skip
call Function92bd4 call ReelActionJumptable
.skip .skip
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
@ -786,12 +861,12 @@ Function92bbe: ; 92bbe
db 0, 1, 2, 3, 4, 5 db 0, 1, 2, 3, 4, 5
; 92bd4 ; 92bd4
Function92bd4: ; 92bd4 (24:6bd4) ReelActionJumptable: ; 92bd4 (24:6bd4)
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
ld e, [hl] ld e, [hl]
ld d, 0 ld d, 0
ld hl, .dw ld hl, .Jumptable
add hl, de add hl, de
add hl, de add hl, de
ld a, [hli] ld a, [hli]
@ -801,10 +876,9 @@ Function92bd4: ; 92bd4 (24:6bd4)
; 92be4 (24:6be4) ; 92be4 (24:6be4)
.dw ; 92be4 .Jumptable: ; 92be4
dw ReelAction_DoNothing ; 00 dw ReelAction_DoNothing ; 00
dw Slots_StopReelIgnoreJoypad ; 01 dw ReelAction_StopReelIgnoreJoypad ; 01
dw ReelAction_QuadrupleRate ; 02 dw ReelAction_QuadrupleRate ; 02
dw ReelAction_DoubleRate ; 03 dw ReelAction_DoubleRate ; 03
dw ReelAction_NormalRate ; 04 dw ReelAction_NormalRate ; 04
@ -816,7 +890,7 @@ Function92bd4: ; 92bd4 (24:6bd4)
dw ReelAction_SetUpReel2SkipTo7 ; 0a dw ReelAction_SetUpReel2SkipTo7 ; 0a
dw ReelAction_WaitReel2SkipTo7 ; 0b dw ReelAction_WaitReel2SkipTo7 ; 0b
dw ReelAction_FastSpinReel2UntilLinedUp7s ; 0c dw ReelAction_FastSpinReel2UntilLinedUp7s ; 0c
dw ReelAction_BoringReelDrops ; 0d dw ReelAction_Unused ; 0d
dw ReelAction_CheckDropReel ; 0e dw ReelAction_CheckDropReel ; 0e
dw ReelAction_WaitDropReel ; 0f dw ReelAction_WaitDropReel ; 0f
dw ReelAction_StartSlowAdvanceReel3 ; 10 dw ReelAction_StartSlowAdvanceReel3 ; 10
@ -824,7 +898,7 @@ Function92bd4: ; 92bd4 (24:6bd4)
dw ReelAction_InitGolem ; 12 dw ReelAction_InitGolem ; 12
dw ReelAction_WaitGolem ; 13 dw ReelAction_WaitGolem ; 13
dw ReelAction_EndGolem ; 14 dw ReelAction_EndGolem ; 14
dw Slots_InitChansey ; 15 dw ReelAction_InitChansey ; 15
dw ReelAction_WaitChansey ; 16 dw ReelAction_WaitChansey ; 16
dw ReelAction_WaitEgg ; 17 dw ReelAction_WaitEgg ; 17
dw ReelAction_DropReel ; 18 dw ReelAction_DropReel ; 18
@ -838,7 +912,7 @@ ReelAction_DoNothing: ; 92c16
ReelAction_QuadrupleRate: ; 92c17 ReelAction_QuadrupleRate: ; 92c17
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $10 ld [hl], 16
ret ret
; 92c1e ; 92c1e
@ -846,7 +920,7 @@ ReelAction_QuadrupleRate: ; 92c17
ReelAction_DoubleRate: ; 92c1e ReelAction_DoubleRate: ; 92c1e
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $8 ld [hl], 8
ret ret
; 92c25 ; 92c25
@ -854,7 +928,7 @@ ReelAction_DoubleRate: ; 92c1e
ReelAction_NormalRate: ; 92c25 ReelAction_NormalRate: ; 92c25
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $4 ld [hl], 4
ret ret
; 92c2c ; 92c2c
@ -862,7 +936,7 @@ ReelAction_NormalRate: ; 92c25
ReelAction_HalfRate: ; 92c2c ReelAction_HalfRate: ; 92c2c
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $2 ld [hl], 2
ret ret
; 92c33 ; 92c33
@ -870,7 +944,7 @@ ReelAction_HalfRate: ; 92c2c
ReelAction_QuarterRate: ; 92c33 ReelAction_QuarterRate: ; 92c33
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $1 ld [hl], 1
ret ret
; 92c3a ; 92c3a
@ -878,15 +952,15 @@ ReelAction_QuarterRate: ; 92c33
Slots_StopReel: ; 92c3a Slots_StopReel: ; 92c3a
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], 0
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
ld [hl], $1 ld [hl], REEL_ACTION_STOP_REEL_IGNORE_JOYPAD
ld hl, wReel1Slot0f - wReel1 ld hl, wReel1StopDelay - wReel1
add hl, bc add hl, bc
ld [hl], $3 ld [hl], 3
Slots_StopReelIgnoreJoypad: ; 92c4c ReelAction_StopReelIgnoreJoypad: ; 92c4c
ld hl, wReel1Slot0f - wReel1 ld hl, wReel1StopDelay - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -897,17 +971,22 @@ Slots_StopReelIgnoreJoypad: ; 92c4c
.EndReel: .EndReel:
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
ld a, $0 ld a, REEL_ACTION_DO_NOTHING
ld [hl], a ld [hl], a
ret ret
; 92c5e ; 92c5e
ReelAction_StopReel1: ; 92c5e ReelAction_StopReel1: ; 92c5e
; If no bias: don't manipulate reel.
; If bias: manipulate reel up to wReel1ManipCounter (i.e. 4) times,
; stoping early if the biased symbol shows up anywhere in reel #1,
; even if the current bet won't allow lining it up.
ld a, [wSlotBias] ld a, [wSlotBias]
cp SLOTS_NOMATCH cp SLOTS_NOBIAS
jr z, .NoBias jr z, .NoBias
ld hl, wReel1Slot09 - wReel1 ld hl, wReel1ManipCounter - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -938,6 +1017,11 @@ ReelAction_StopReel1: ; 92c5e
; 92c86 ; 92c86
ReelAction_StopReel2: ; 92c86 ReelAction_StopReel2: ; 92c86
; If no bias: don't manipulate reel.
; If bias: manipulate reel up to wReel2ManipCounter (i.e. 4) times,
; stoping early if the biased symbol is lined up in the first two
; reels, according to the lines that the current bet allows.
call Slots_CheckMatchedFirstTwoReels call Slots_CheckMatchedFirstTwoReels
jr nc, .nope jr nc, .nope
ld a, [wSlotBuildingMatch] ld a, [wSlotBuildingMatch]
@ -946,9 +1030,9 @@ ReelAction_StopReel2: ; 92c86
jr z, .NoBias jr z, .NoBias
.nope .nope
ld a, [wSlotBias] ld a, [wSlotBias]
cp SLOTS_NOMATCH cp SLOTS_NOBIAS
jr z, .NoBias jr z, .NoBias
ld hl, wReel1Slot09 - wReel1 ld hl, wReel1ManipCounter - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -963,12 +1047,16 @@ ReelAction_StopReel2: ; 92c86
; 92ca9 ; 92ca9
ReelAction_StopReel3: ; 92ca9 ReelAction_StopReel3: ; 92ca9
; Manipulate the reel up to wReel3ManipCounter (i.e. 4) times,
; stopping early if the bias symbol is lined up for a win.
; If not biased to any symbols, stop as soon as nothing is lined up.
call Slots_CheckMatchedAllThreeReels call Slots_CheckMatchedAllThreeReels
jr nc, .NoMatch jr nc, .NoMatch
ld hl, wSlotBias ld hl, wSlotBias
cp [hl] cp [hl]
jr z, .NoBias jr z, .NoBias
ld hl, wReel1Slot09 - wReel1 ld hl, wReel1ManipCounter - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -978,9 +1066,9 @@ ReelAction_StopReel3: ; 92ca9
.NoMatch: .NoMatch:
ld a, [wSlotBias] ld a, [wSlotBias]
cp SLOTS_NOMATCH cp SLOTS_NOBIAS
jr z, .NoBias jr z, .NoBias
ld hl, wReel1Slot09 - wReel1 ld hl, wReel1ManipCounter - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -995,6 +1083,11 @@ ReelAction_StopReel3: ; 92ca9
; 92cd2 ; 92cd2
ReelAction_SetUpReel2SkipTo7: ; 92cd2 ReelAction_SetUpReel2SkipTo7: ; 92cd2
; Unique reel 2 action (see Slots_StopReel2)
; Ensures that 7 symbols become lined up in the first two reels,
; but more often than not, this is only a way to get our hopes up, as
; it makes exciting reel #3 modes with no success hope more common.
call Slots_CheckMatchedFirstTwoReels call Slots_CheckMatchedFirstTwoReels
jr nc, .no_match jr nc, .no_match
ld a, [wFirstTwoReelsMatchingSevens] ld a, [wFirstTwoReelsMatchingSevens]
@ -1008,19 +1101,19 @@ ReelAction_SetUpReel2SkipTo7: ; 92cd2
call Slots_PlaySFX call Slots_PlaySFX
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_WAIT_REEL2_SKIP_TO_7
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld [hl], $20 ld [hl], 32
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], 0
ret ret
; 92cf8 ; 92cf8
ReelAction_WaitReel2SkipTo7: ; 92cf8 ReelAction_WaitReel2SkipTo7: ; 92cf8
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -1033,10 +1126,10 @@ ReelAction_WaitReel2SkipTo7: ; 92cf8
call Slots_PlaySFX call Slots_PlaySFX
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_FAST_SPIN_REEL2_UNTIL_LINED_UP_7S
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $8 ld [hl], 8
ret ret
; 92d13 ; 92d13
@ -1053,6 +1146,14 @@ ReelAction_FastSpinReel2UntilLinedUp7s: ; 92d13
; 92d20 ; 92d20
ReelAction_InitGolem: ; 92d20 ReelAction_InitGolem: ; 92d20
; Ensures SEVENs are lined up if there's bias to SEVEN.
; Ensures nothing is lined up if there's no bias symbols.
; No other bias symbols are compatible with this mode.
; This is achieved by throwing Golem until the desired result
; is produced. The amount of Golem thrown can be anywhere from
; 1 to 14 for SEVEN bias, and 4-8 for no bias.
call Slots_CheckMatchedAllThreeReels call Slots_CheckMatchedAllThreeReels
ret c ret c
ld a, SFX_STOP_SLOT ld a, SFX_STOP_SLOT
@ -1060,10 +1161,10 @@ ReelAction_InitGolem: ; 92d20
call Slots_WaitSFX call Slots_WaitSFX
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_WAIT_GOLEM
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], 0
call Function92fc0 call Function92fc0
push bc push bc
push af push af
@ -1076,9 +1177,9 @@ ReelAction_InitGolem: ; 92d20
ld [hl], a ld [hl], a
pop bc pop bc
xor a xor a
ld [wcf64], a ld [wSlotsDelay], a
ReelAction_WaitGolem: ; 92d4f ReelAction_WaitGolem: ; 92d4f
ld a, [wcf64] ld a, [wSlotsDelay]
cp 2 cp 2
jr z, .two jr z, .two
cp 1 cp 1
@ -1093,28 +1194,33 @@ ReelAction_WaitGolem: ; 92d4f
.one .one
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_END_GOLEM
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $8 ld [hl], 8
ret ret
; 92d6e ; 92d6e
ReelAction_EndGolem: ; 92d6e ReelAction_EndGolem: ; 92d6e
xor a xor a
ld [wcf64], a ld [wSlotsDelay], a
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
dec [hl] dec [hl] ; REEL_ACTION_WAIT_GOLEM
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], 0
ret ret
; 92d7e ; 92d7e
Slots_InitChansey: ; 92d7e ReelAction_InitChansey: ; 92d7e
; Ensures the lining up of SEVEN symbols, but this mode is only possible
; when there is bias to SEVEN symbols (and even then, it's still rare).
; Chansey releases and egg and reel #3 is made to advance 17 slots very
; quickly as many times as necessary for the match to SEVENs to show up.
call Slots_CheckMatchedAllThreeReels call Slots_CheckMatchedAllThreeReels
ret c ret c
ld a, SFX_STOP_SLOT ld a, SFX_STOP_SLOT
@ -1122,45 +1228,45 @@ Slots_InitChansey: ; 92d7e
call Slots_WaitSFX call Slots_WaitSFX
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_WAIT_CHANSEY
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], 0
push bc push bc
depixel 12, 0 depixel 12, 0
ld a, SPRITE_ANIM_INDEX_SLOTS_CHANSEY ld a, SPRITE_ANIM_INDEX_SLOTS_CHANSEY
call _InitSpriteAnimStruct call _InitSpriteAnimStruct
pop bc pop bc
xor a xor a
ld [wcf64], a ld [wSlotsDelay], a
ret ret
; 92da4 ; 92da4
ReelAction_WaitChansey: ; 92da4 ReelAction_WaitChansey: ; 92da4
ld a, [wcf64] ld a, [wSlotsDelay]
and a and a
ret z ret z
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_WAIT_EGG
ld a, $2 ld a, 2
ld [wcf64], a ld [wSlotsDelay], a
ReelAction_WaitEgg: ; 92db3 ReelAction_WaitEgg: ; 92db3
ld a, [wcf64] ld a, [wSlotsDelay]
cp $4 cp $4
ret c ret c
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_DROP_REEL
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $10 ld [hl], 16
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld [hl], $11 ld [hl], 17
ReelAction_DropReel: ; 92dca ReelAction_DropReel: ; 92dca
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -1173,26 +1279,26 @@ ReelAction_DropReel: ; 92dca
jr nc, .EggAgain jr nc, .EggAgain
and a and a
jr nz, .EggAgain jr nz, .EggAgain
ld a, $5 ld a, 5
ld [wcf64], a ld [wSlotsDelay], a
call Slots_StopReel call Slots_StopReel
ret ret
.EggAgain: .EggAgain:
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], 0
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
dec [hl] dec [hl]
dec [hl] dec [hl] ; REEL_ACTION_WAIT_CHANSEY
ld a, $1 ld a, 1
ld [wcf64], a ld [wSlotsDelay], a
ret ret
; 92df7 ; 92df7
ReelAction_BoringReelDrops: ; 92df7 ReelAction_Unused: ; 92df7
call Slots_CheckMatchedAllThreeReels call Slots_CheckMatchedAllThreeReels
ret c ret c
ld a, SFX_STOP_SLOT ld a, SFX_STOP_SLOT
@ -1200,13 +1306,13 @@ ReelAction_BoringReelDrops: ; 92df7
call Slots_WaitSFX call Slots_WaitSFX
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_CHECK_DROP_REEL
call Function92fc0 call Function92fc0
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld [hl], a ld [hl], a
ReelAction_CheckDropReel: ; 92e10 ReelAction_CheckDropReel: ; 92e10
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -1219,13 +1325,13 @@ ReelAction_CheckDropReel: ; 92e10
dec [hl] dec [hl]
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_WAIT_DROP_REEL
ld hl, wReel1Slot0b - wReel1 ld hl, wReel1Slot0b - wReel1
add hl, bc add hl, bc
ld [hl], $20 ld [hl], 32
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $0 ld [hl], 0
ReelAction_WaitDropReel: ; 92e31 ReelAction_WaitDropReel: ; 92e31
ld hl, wReel1Slot0b - wReel1 ld hl, wReel1Slot0b - wReel1
add hl, bc add hl, bc
@ -1241,12 +1347,19 @@ ReelAction_WaitDropReel: ; 92e31
dec [hl] dec [hl]
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $8 ; 2x ld [hl], 8
ret ret
; 92e47 ; 92e47
ReelAction_StartSlowAdvanceReel3: ; 92e47 ReelAction_StartSlowAdvanceReel3: ; 92e47
; Ensures SEVENs are lined up if there's bias to SEVEN.
; Ensures nothing is lined up if there's no bias symbols.
; No other bias symbols are compatible with this mode.
; This is achieved by slowly advancing the reel a full round,
; plus any necessary slot until the desired result is produced.
call Slots_CheckMatchedAllThreeReels call Slots_CheckMatchedAllThreeReels
ret c ret c
ld a, SFX_STOP_SLOT ld a, SFX_STOP_SLOT
@ -1254,15 +1367,15 @@ ReelAction_StartSlowAdvanceReel3: ; 92e47
call Slots_WaitSFX call Slots_WaitSFX
ld hl, wReel1SpinRate - wReel1 ld hl, wReel1SpinRate - wReel1
add hl, bc add hl, bc
ld [hl], $1 ld [hl], 1
ld hl, wReel1ReelAction - wReel1 ld hl, wReel1ReelAction - wReel1
add hl, bc add hl, bc
inc [hl] inc [hl] ; REEL_ACTION_WAIT_SLOW_ADVANCE_REEL3
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld [hl], $10 ld [hl], 16
ReelAction_WaitSlowAdvanceReel3: ; 92e64 ReelAction_WaitSlowAdvanceReel3: ; 92e64
ld hl, wReel1Slot0a - wReel1 ld hl, wReel1ManipDelay - wReel1
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
and a and a
@ -1396,18 +1509,18 @@ Slots_CheckMatchedFirstTwoReels: ; 92e94
ld [wSlotBuildingMatch], a ld [wSlotBuildingMatch], a
and a and a
jr nz, .matching_sevens jr nz, .matching_sevens
ld a, $1 ld a, 1
ld [wFirstTwoReelsMatchingSevens], a ld [wFirstTwoReelsMatchingSevens], a
.matching_sevens .matching_sevens
ld a, $1 ld a, 1
ld [wFirstTwoReelsMatching], a ld [wFirstTwoReelsMatching], a
ret ret
; 92f1d ; 92f1d
Slots_CheckMatchedAllThreeReels: ; 92f1d Slots_CheckMatchedAllThreeReels: ; 92f1d
ld a, $ff ld a, SLOTS_NOMATCH
ld [wSlotMatched], a ld [wSlotMatched], a
call Slots_GetCurrentReelState call Slots_GetCurrentReelState
call Slots_CopyReelState call Slots_CopyReelState
@ -1427,7 +1540,7 @@ Slots_CheckMatchedAllThreeReels: ; 92f1d
.return .return
ld a, [wSlotMatched] ld a, [wSlotMatched]
cp $ff cp SLOTS_NOMATCH
jr nz, .matched_nontrivial jr nz, .matched_nontrivial
and a and a
ret ret
@ -1629,7 +1742,7 @@ Slots_InitBias: ; 93002 (24:7002)
db $14, SLOTS_SQUIRTLE ; 5/128 db $14, SLOTS_SQUIRTLE ; 5/128
db $28, SLOTS_PIKACHU ; 5/64 db $28, SLOTS_PIKACHU ; 5/64
db $30, SLOTS_CHERRY ; 1/32 db $30, SLOTS_CHERRY ; 1/32
db $ff, SLOTS_NOMATCH ; everything else db $ff, SLOTS_NOBIAS ; everything else
; 93031 ; 93031
.Lucky: ; 93031 .Lucky: ; 93031
@ -1639,7 +1752,7 @@ Slots_InitBias: ; 93002 (24:7002)
db $10, SLOTS_SQUIRTLE ; 1/32 db $10, SLOTS_SQUIRTLE ; 1/32
db $1e, SLOTS_PIKACHU ; 7/128 db $1e, SLOTS_PIKACHU ; 7/128
db $50, SLOTS_CHERRY ; 25/128 db $50, SLOTS_CHERRY ; 25/128
db $ff, SLOTS_NOMATCH ; everything else db $ff, SLOTS_NOBIAS ; everything else
; 9303f ; 9303f
Slots_IlluminateBetLights: ; 9303f (24:703f) Slots_IlluminateBetLights: ; 9303f (24:703f)
@ -1800,7 +1913,7 @@ Slots_AskPlayAgain: ; 930e9 (24:70e9)
SlotGetPayout: ; 93124 (24:7124) SlotGetPayout: ; 93124 (24:7124)
ld a, [wSlotMatched] ld a, [wSlotMatched]
cp -1 cp SLOTS_NOMATCH
jr z, .no_win jr z, .no_win
srl a srl a
ld e, a ld e, a
@ -1833,7 +1946,7 @@ SlotGetPayout: ; 93124 (24:7124)
SlotPayoutText: ; 93158 (24:7158) SlotPayoutText: ; 93158 (24:7158)
ld a, [wSlotMatched] ld a, [wSlotMatched]
cp -1 cp SLOTS_NOMATCH
jr nz, .MatchedSomething jr nz, .MatchedSomething
ld hl, .Text_Darn ld hl, .Text_Darn
call PrintText call PrintText
@ -1912,21 +2025,26 @@ endr
ld a, SFX_2ND_PLACE ld a, SFX_2ND_PLACE
call Slots_PlaySFX call Slots_PlaySFX
call WaitSFX call WaitSFX
ld a, [wd002]
; Oddly, the rarest mode (wKeepSevenBiasChance = 1) is the one with
; the worse odds to favor seven symbol streaks (12.5% vs 25%).
; it's possible that either the wKeepSevenBiasChance initialization
; or this code was intended to lead to flipped percentages.
ld a, [wKeepSevenBiasChance]
and a and a
jr nz, .asm_931ff jr nz, .lowerSevenStreakOdds
call Random call Random
and $14 and %0010100
ret z ret z ; 25% chance to stick with seven symbol bias
ld a, $ff ld a, SLOTS_NOBIAS
ld [wSlotBias], a ld [wSlotBias], a
ret ret
.asm_931ff .lowerSevenStreakOdds
call Random call Random
and $1c and %0011100
ret z ret z ; 12.5% chance to stick with seven symbol bias
ld a, $ff ld a, SLOTS_NOBIAS
ld [wSlotBias], a ld [wSlotBias], a
ret ret
@ -1974,8 +2092,8 @@ SlotMachine_AnimateGolem: ; 9321d (24:721d)
ld a, [hl] ld a, [hl]
and a and a
jr nz, .retain jr nz, .retain
ld a, $2 ld a, 2
ld [wcf64], a ld [wSlotsDelay], a
ld hl, SPRITEANIMSTRUCT_INDEX ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc add hl, bc
ld [hl], $0 ld [hl], $0
@ -2016,8 +2134,8 @@ SlotMachine_AnimateGolem: ; 9321d (24:721d)
ld hl, SPRITEANIMSTRUCT_0D ld hl, SPRITEANIMSTRUCT_0D
add hl, bc add hl, bc
ld [hl], $2 ld [hl], $2
ld a, $1 ld a, 1
ld [wcf64], a ld [wSlotsDelay], a
ld a, SFX_PLACE_PUZZLE_PIECE_DOWN ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
call Slots_PlaySFX call Slots_PlaySFX
ret ret
@ -2086,11 +2204,11 @@ Slots_AnimateChansey: ; 932ac (24:72ac)
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
add hl, bc add hl, bc
inc [hl] inc [hl]
ld a, $1 ld a, 1
ld [wcf64], a ld [wSlotsDelay], a
.one ; 932e0 (24:72e0) .one ; 932e0 (24:72e0)
ld a, [wcf64] ld a, [wSlotsDelay]
cp $2 cp $2
jr z, .retain jr z, .retain
cp $5 cp $5

View File

@ -275,13 +275,13 @@ slot_reel: MACRO
\1SpinRate:: db \1SpinRate:: db
\1OAMAddr:: dw \1OAMAddr:: dw
\1XCoord:: db \1XCoord:: db
\1Slot09:: ds 1 \1ManipCounter:: db
\1Slot0a:: ds 1 \1ManipDelay:: db
\1Slot0b:: ds 1 \1Slot0b:: ds 1
\1Slot0c:: ds 1 \1Slot0c:: ds 1
\1Slot0d:: ds 1 \1Slot0d:: ds 1
\1Slot0e:: ds 1 \1Slot0e:: ds 1
\1Slot0f:: ds 1 \1StopDelay:: db
endm endm
object_struct: MACRO object_struct: MACRO

View File

@ -1320,6 +1320,7 @@ NEXTU ; cf64
; miscellaneous ; miscellaneous
wNrOfBeatenBattleTowerTrainers:: wNrOfBeatenBattleTowerTrainers::
wMomBankDigitCursorPosition:: wMomBankDigitCursorPosition::
wSlotsDelay::
db db
wCurrPocket:: wCurrPocket::
wPrinterQueueLength:: wPrinterQueueLength::
@ -1637,6 +1638,9 @@ StartFlypoint:: db
EndFlypoint:: db EndFlypoint:: db
NEXTU ; d002 NEXTU ; d002
wKeepSevenBiasChance::
; used in the slots to handle the favoring of 7 symbol streaks
; unidentified ; unidentified
wd002:: db wd002:: db
wd003:: db wd003:: db