From 91d99e45f4bdaa657fd67352b9d10881df410b0e Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Sat, 21 Oct 2023 20:53:54 +0200 Subject: [PATCH] LDH where possible. --- DMGTRIS.GB | Bin 32768 -> 32768 bytes src/field.asm | 47 ++++++++++++++++++++--------------------- src/level.asm | 2 +- src/memory.asm | 4 ++-- src/rng.asm | 8 +++---- src/state_gameplay.asm | 12 +++++------ 6 files changed, 36 insertions(+), 37 deletions(-) diff --git a/DMGTRIS.GB b/DMGTRIS.GB index f763ea1d60df7d941fd7c0e84bdeccac390219c9..a1ef998f7ddcc4ea0c9178b40f672d837e10ba10 100644 GIT binary patch delta 4610 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 delta 4673 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 JaU^J;`(OKPAL;-A diff --git a/src/field.asm b/src/field.asm index cc26cc7..d08be9f 100644 --- a/src/field.asm +++ b/src/field.asm @@ -667,10 +667,10 @@ FieldProcess:: ; Check if we're about to hold. - ld a, [hSelectState] + ldh a, [hSelectState] cp a, 1 jr nz, :+ - ld a, [hHoldSpent] + ldh a, [hHoldSpent] cp a, $FF ret nz @@ -746,14 +746,14 @@ FieldProcess:: ; We check rotation first. ; Want rotate CCW? .wantrotccw - ld a, [hSwapAB] + ldh a, [hSwapAB] cp a, 0 jr z, .ldb1 .lda1 - ld a, [hAState] + ldh a, [hAState] jr .cp1 .ldb1 - ld a, [hBState] + ldh a, [hBState] .cp1 cp a, 1 jr nz, .wantrotcw @@ -766,14 +766,14 @@ FieldProcess:: ; Want rotate CW? .wantrotcw - ld a, [hSwapAB] + ldh a, [hSwapAB] cp a, 0 jr z, .lda2 .ldb2 - ld a, [hBState] + ldh a, [hBState] jr .cp2 .lda2 - ld a, [hAState] + ldh a, [hAState] .cp2 cp a, 1 jp nz, .norot @@ -1101,7 +1101,7 @@ GetTileShade: jp z, .max2 ret .max30 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 4 ret c cp a, 8 @@ -1118,7 +1118,7 @@ GetTileShade: jp c, .s1 jp .s0 .max25 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 3 ret c cp a, 6 @@ -1135,7 +1135,7 @@ GetTileShade: jp c, .s1 jp .s0 .max20 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 2 ret c cp a, 5 @@ -1152,7 +1152,7 @@ GetTileShade: jp c, .s1 jp .s0 .max18 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 2 ret c cp a, 4 @@ -1169,7 +1169,7 @@ GetTileShade: jp c, .s1 jp .s0 .max16 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 2 ret c cp a, 4 @@ -1186,7 +1186,7 @@ GetTileShade: jp c, .s1 jp .s0 .max14 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 2 ret c cp a, 4 @@ -1203,7 +1203,7 @@ GetTileShade: jp c, .s1 jp .s0 .max12 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 1 ret c cp a, 3 @@ -1220,7 +1220,7 @@ GetTileShade: jp c, .s1 jp .s0 .max10 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 1 ret c cp a, 2 @@ -1237,7 +1237,7 @@ GetTileShade: jr c, .s1 jr .s0 .max8 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 1 ret c cp a, 2 @@ -1254,7 +1254,7 @@ GetTileShade: jr c, .s1 jr .s0 .max6 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 1 ret c cp a, 2 @@ -1267,14 +1267,13 @@ GetTileShade: jr c, .s1 jr .s0 .max4 - ld a, [hCurrentLockDelayRemaining] + ldh a, [hCurrentLockDelayRemaining] cp a, 1 ret c cp a, 2 jr c, .s4 jr .s0 .max2 - ld a, [hCurrentLockDelayRemaining] jr .s4 .s0 ldh a, [hCurrentPiece] @@ -1495,7 +1494,7 @@ FindClearedLines: MarkClear: - ld a, [hClearedLines] + ldh a, [hClearedLines] cp a, $FF ret z ld hl, wField+(24*10) @@ -1508,7 +1507,7 @@ MarkClear: ld d, TILE_CLEARING call UnsafeMemSet - ld a, [hClearedLines+1] + ldh a, [hClearedLines+1] cp a, $FF ret z ld hl, wField+(24*10) @@ -1521,7 +1520,7 @@ MarkClear: ld d, TILE_CLEARING call UnsafeMemSet - ld a, [hClearedLines+2] + ldh a, [hClearedLines+2] cp a, $FF ret z ld hl, wField+(24*10) @@ -1534,7 +1533,7 @@ MarkClear: ld d, TILE_CLEARING call UnsafeMemSet - ld a, [hClearedLines+3] + ldh a, [hClearedLines+3] cp a, $FF ret z ld hl, wField+(24*10) diff --git a/src/level.asm b/src/level.asm index 56c2b48..cc8c561 100644 --- a/src/level.asm +++ b/src/level.asm @@ -263,7 +263,7 @@ LevelUp:: .leveljinglemaybe ldh a, [hPrevHundreds] ld b, a - ld a, [hCLevel+1] + ldh a, [hCLevel+1] cp a, b jr z, .checkspeedup ld a, SFX_LEVEL_UP diff --git a/src/memory.asm b/src/memory.asm index fe9c8da..0892b49 100644 --- a/src/memory.asm +++ b/src/memory.asm @@ -26,7 +26,7 @@ SECTION "Memory Functions", ROM0 ; Copies data from de to hl, bc bytes UnsafeMemCopy:: ld a, [de] - ld [hli], a + ld [hl+], a inc de dec bc ld a, b @@ -39,7 +39,7 @@ UnsafeMemCopy:: SafeMemCopy:: wait_vram ld a, [de] - ld [hli], a + ld [hl+], a inc de dec bc ld a, b diff --git a/src/rng.asm b/src/rng.asm index 662eb4a..2bac82d 100644 --- a/src/rng.asm +++ b/src/rng.asm @@ -49,11 +49,11 @@ RNGInit:: ; Initialize the next history. ld a, PIECE_Z - ld [hPieceHistory], a - ld [hPieceHistory+1], a + ldh [hPieceHistory], a + ldh [hPieceHistory+1], a ld a, PIECE_S - ld [hPieceHistory+2], a - ld [hPieceHistory+3], a + ldh [hPieceHistory+2], a + ldh [hPieceHistory+3], a ; Get the first piece and make sure it's not Z, S or O. : call NextPiece diff --git a/src/state_gameplay.asm b/src/state_gameplay.asm index 18bae79..82cbcd0 100644 --- a/src/state_gameplay.asm +++ b/src/state_gameplay.asm @@ -110,7 +110,7 @@ SwitchToGameplay:: GamePlayEventLoopHandler:: ; What mode are we in? - ld a, [hMode] + ldh a, [hMode] cp MODE_LEADY jr z, leadyMode cp MODE_GO @@ -230,11 +230,11 @@ fetchPieceMode: call SFXEnqueue .checkIRSB - ld a, [hSwapAB] + ldh a, [hSwapAB] cp a, 0 jr z, .ldb2 .lda2 - ld a, [hAState] + ldh a, [hAState] cp a, 0 jr z, .checkJingle ld a, $FF @@ -253,7 +253,7 @@ fetchPieceMode: call SFXEnqueue .checkJingle - ld a, [hSkipJingle] + ldh a, [hSkipJingle] cp a, 0 jr nz, .skipJingle .playNextJingle @@ -292,10 +292,10 @@ pieceInMotionMode: : call FieldProcess ; Do we hold? - ld a, [hSelectState] + ldh a, [hSelectState] cp a, 1 jr nz, :+ - ld a, [hHoldSpent] + ldh a, [hHoldSpent] cp a, $FF jr z, :+ ; Reset position and rotation.