From b89536a4600ae9b534539b52cfdd353d3afe697c Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Sat, 28 Oct 2023 15:32:42 +0200 Subject: [PATCH] Lenient IRS. --- bin/DMGTRIS.GBC | Bin 65536 -> 65536 bytes bin/DMGTRIS.pocket | Bin 65536 -> 65536 bytes src/field.asm | 62 ++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index b2b3407d4172b6c9dbe6c59edc85a01c5ff44b0c..d0fe4801c3fe4c3fd50f857c8dad7f029186a6e9 100644 GIT binary patch delta 2691 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 J|FZ4P{{Z;s-uwUn diff --git a/src/field.asm b/src/field.asm index db30d20..dc63a97 100644 --- a/src/field.asm +++ b/src/field.asm @@ -582,13 +582,69 @@ TrySpawnPiece:: cp a, $FF ret z - ; Otherwise check the rotation, and if it's not zero, try to reset it. + ; Otherwise, try in this order: 0, 1, 3, 2 ldh a, [hCurrentPieceRotationState] + ldh [hWantRotation], a + + ; Try rotation state 0. +.try0 cp a, 0 + jr z, .try1 + xor a, a + ldh [hCurrentPieceRotationState], a + call SetPieceDataOffset + ldh a, [hCurrentPieceY] + ld b, a + ldh a, [hCurrentPieceX] + call XYToSFieldPtr + ld d, h + ld e, l + call GetPieceDataFast + call CanPieceFitFast + cp a, $FF ret z - ; Reset the rotation. - xor a, a + ; Try rotation state 1. +.try1 + ldh a, [hWantRotation] + cp a, 1 + jr z, .try3 + ld a, 1 + ldh [hCurrentPieceRotationState], a + call SetPieceDataOffset + ldh a, [hCurrentPieceY] + ld b, a + ldh a, [hCurrentPieceX] + call XYToSFieldPtr + ld d, h + ld e, l + call GetPieceDataFast + call CanPieceFitFast + cp a, $FF + ret z + + ; Try rotation state 3. +.try3 + ldh a, [hWantRotation] + cp a, 3 + jr z, .try2 + ld a, 3 + ldh [hCurrentPieceRotationState], a + call SetPieceDataOffset + ldh a, [hCurrentPieceY] + ld b, a + ldh a, [hCurrentPieceX] + call XYToSFieldPtr + ld d, h + ld e, l + call GetPieceDataFast + call CanPieceFitFast + cp a, $FF + ret z + + ; Try rotation state 2. +.try2 + ld a, 2 ldh [hCurrentPieceRotationState], a call SetPieceDataOffset ldh a, [hCurrentPieceY]