From d4b1c6463e02144133515a48a2c93f2ca8da2269 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Sat, 21 Oct 2023 19:14:22 +0200 Subject: [PATCH] Fix IRS related issue. --- src/state_gameplay.asm | 45 ++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/src/state_gameplay.asm b/src/state_gameplay.asm index 53669c3..2bf9778 100644 --- a/src/state_gameplay.asm +++ b/src/state_gameplay.asm @@ -190,7 +190,7 @@ fetchPieceMode: ; Check if IHS is requested. ; Apply the hold if so. .checkIHS - ld a, [hSelectState] + ldh a, [hSelectState] cp a, 0 jr z, .checkIRSA call DoHold @@ -200,14 +200,18 @@ fetchPieceMode: ; Check if IRS is requested. ; Apply the rotation if so. .checkIRSA - ld a, [hSwapAB] + ldh a, [hSwapAB] cp a, 0 jr z, .lda1 .ldb1 - ld a, [hBState] + ldh a, [hBState] + ld a, $FF + ldh [hBState], a jr .cp1 .lda1 - ld a, [hAState] + ldh a, [hAState] + ld a, $FF + ldh [hAState], a .cp1 cp a, 0 jr z, .checkIRSB @@ -222,9 +226,13 @@ fetchPieceMode: jr z, .ldb2 .lda2 ld a, [hAState] + ld a, $FF + ldh [hAState], a jr .cp2 .ldb2 - ld a, [hBState] + ldh a, [hBState] + ld a, $FF + ldh [hBState], a .cp2 cp a, 0 jr z, .checkJingle @@ -254,12 +262,7 @@ spawnPieceMode: ld a, MODE_PRE_GAME_OVER ld [wMode], a jp drawStaticInfo - - ; If you IRS at the exact time the piece spawns, you can get double IRS, we fix this by always saying A and B were held for a long time. -: ld a, $FF - ldh [hAState], a - ldh [hBState], a - ld a, MODE_PIECE_IN_MOTION +: ld a, MODE_PIECE_IN_MOTION ld [wMode], a @@ -468,14 +471,18 @@ DoHold: ; Check if IRS is requested. ; Apply the rotation if so. .checkIRSHA - ld a, [hSwapAB] + ldh a, [hSwapAB] cp a, 0 jr z, .lda3 .ldb3 - ld a, [hBState] + ldh a, [hBState] + ld a, $FF + ldh [hBState], a jr .cp3 .lda3 - ld a, [hAState] + ldh a, [hAState] + ld a, $FF + ldh [hAState], a .cp3 cp a, 0 jr z, .checkIRSHB @@ -485,14 +492,18 @@ DoHold: call SFXEnqueue .checkIRSHB - ld a, [hSwapAB] + ldh a, [hSwapAB] cp a, 0 jr z, .ldb4 .lda4 - ld a, [hAState] + ldh a, [hAState] + ld a, $FF + ldh [hAState], a jr .cp4 .ldb4 - ld a, [hBState] + ldh a, [hBState] + ld a, $FF + ldh [hBState], a .cp4 cp a, 0 jr z, .noRotation