diff options
author | Rangi <35663410+Rangi42@users.noreply.github.com> | 2018-08-25 22:23:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-25 22:23:45 -0400 |
commit | 3eacab563d0e1ab5557c2443556a7a5e58d14cad (patch) | |
tree | 3d747166409fdc94f0fd1aa760693a7ee5bd2156 /engine/math | |
parent | 89681d231611938a791f4256e602c88c2f9aa3e1 (diff) | |
parent | b2adcd6d6ff91efc764a6ecc65147be7b9cda9e8 (diff) |
Merge pull request #555 from Rangi42/ldh
Use real labels for HRAM instead of constants, and the ldh instruction
Diffstat (limited to 'engine/math')
-rw-r--r-- | engine/math/math.asm | 158 | ||||
-rw-r--r-- | engine/math/print_num.asm | 116 |
2 files changed, 137 insertions, 137 deletions
diff --git a/engine/math/math.asm b/engine/math/math.asm index c2e5f70a3..18aa042ed 100644 --- a/engine/math/math.asm +++ b/engine/math/math.asm @@ -4,41 +4,41 @@ _Multiply:: ld b, a xor a - ld [hProduct], a - ld [hMathBuffer + 1], a - ld [hMathBuffer + 2], a - ld [hMathBuffer + 3], a - ld [hMathBuffer + 4], a + ldh [hProduct], a + ldh [hMathBuffer + 1], a + ldh [hMathBuffer + 2], a + ldh [hMathBuffer + 3], a + ldh [hMathBuffer + 4], a .loop - ld a, [hMultiplier] + ldh a, [hMultiplier] srl a - ld [hMultiplier], a + ldh [hMultiplier], a jr nc, .next - ld a, [hMathBuffer + 4] + ldh a, [hMathBuffer + 4] ld c, a - ld a, [hMultiplicand + 2] + ldh a, [hMultiplicand + 2] add c - ld [hMathBuffer + 4], a + ldh [hMathBuffer + 4], a - ld a, [hMathBuffer + 3] + ldh a, [hMathBuffer + 3] ld c, a - ld a, [hMultiplicand + 1] + ldh a, [hMultiplicand + 1] adc c - ld [hMathBuffer + 3], a + ldh [hMathBuffer + 3], a - ld a, [hMathBuffer + 2] + ldh a, [hMathBuffer + 2] ld c, a - ld a, [hMultiplicand + 0] + ldh a, [hMultiplicand + 0] adc c - ld [hMathBuffer + 2], a + ldh [hMathBuffer + 2], a - ld a, [hMathBuffer + 1] + ldh a, [hMathBuffer + 1] ld c, a - ld a, [hProduct] + ldh a, [hProduct] adc c - ld [hMathBuffer + 1], a + ldh [hMathBuffer + 1], a .next dec b @@ -46,71 +46,71 @@ _Multiply:: ; hMultiplicand <<= 1 - ld a, [hMultiplicand + 2] + ldh a, [hMultiplicand + 2] add a - ld [hMultiplicand + 2], a + ldh [hMultiplicand + 2], a - ld a, [hMultiplicand + 1] + ldh a, [hMultiplicand + 1] rla - ld [hMultiplicand + 1], a + ldh [hMultiplicand + 1], a - ld a, [hMultiplicand + 0] + ldh a, [hMultiplicand + 0] rla - ld [hMultiplicand + 0], a + ldh [hMultiplicand + 0], a - ld a, [hProduct] + ldh a, [hProduct] rla - ld [hProduct], a + ldh [hProduct], a jr .loop .done - ld a, [hMathBuffer + 4] - ld [hProduct + 3], a + ldh a, [hMathBuffer + 4] + ldh [hProduct + 3], a - ld a, [hMathBuffer + 3] - ld [hProduct + 2], a + ldh a, [hMathBuffer + 3] + ldh [hProduct + 2], a - ld a, [hMathBuffer + 2] - ld [hProduct + 1], a + ldh a, [hMathBuffer + 2] + ldh [hProduct + 1], a - ld a, [hMathBuffer + 1] - ld [hProduct + 0], a + ldh a, [hMathBuffer + 1] + ldh [hProduct + 0], a ret _Divide:: xor a - ld [hMathBuffer + 0], a - ld [hMathBuffer + 1], a - ld [hMathBuffer + 2], a - ld [hMathBuffer + 3], a - ld [hMathBuffer + 4], a + ldh [hMathBuffer + 0], a + ldh [hMathBuffer + 1], a + ldh [hMathBuffer + 2], a + ldh [hMathBuffer + 3], a + ldh [hMathBuffer + 4], a ld a, 9 ld e, a .loop - ld a, [hMathBuffer + 0] + ldh a, [hMathBuffer + 0] ld c, a - ld a, [hDividend + 1] + ldh a, [hDividend + 1] sub c ld d, a - ld a, [hDivisor] + ldh a, [hDivisor] ld c, a - ld a, [hDividend + 0] + ldh a, [hDividend + 0] sbc c jr c, .next - ld [hDividend + 0], a + ldh [hDividend + 0], a ld a, d - ld [hDividend + 1], a + ldh [hDividend + 1], a - ld a, [hMathBuffer + 4] + ldh a, [hMathBuffer + 4] inc a - ld [hMathBuffer + 4], a + ldh [hMathBuffer + 4], a jr .loop @@ -119,39 +119,39 @@ _Divide:: cp 1 jr z, .done - ld a, [hMathBuffer + 4] + ldh a, [hMathBuffer + 4] add a - ld [hMathBuffer + 4], a + ldh [hMathBuffer + 4], a - ld a, [hMathBuffer + 3] + ldh a, [hMathBuffer + 3] rla - ld [hMathBuffer + 3], a + ldh [hMathBuffer + 3], a - ld a, [hMathBuffer + 2] + ldh a, [hMathBuffer + 2] rla - ld [hMathBuffer + 2], a + ldh [hMathBuffer + 2], a - ld a, [hMathBuffer + 1] + ldh a, [hMathBuffer + 1] rla - ld [hMathBuffer + 1], a + ldh [hMathBuffer + 1], a dec e jr nz, .next2 ld e, 8 - ld a, [hMathBuffer + 0] - ld [hDivisor], a + ldh a, [hMathBuffer + 0] + ldh [hDivisor], a xor a - ld [hMathBuffer + 0], a + ldh [hMathBuffer + 0], a - ld a, [hDividend + 1] - ld [hDividend + 0], a + ldh a, [hDividend + 1] + ldh [hDividend + 0], a - ld a, [hDividend + 2] - ld [hDividend + 1], a + ldh a, [hDividend + 2] + ldh [hDividend + 1], a - ld a, [hDividend + 3] - ld [hDividend + 2], a + ldh a, [hDividend + 3] + ldh [hDividend + 2], a .next2 ld a, e @@ -160,30 +160,30 @@ _Divide:: dec b .okay - ld a, [hDivisor] + ldh a, [hDivisor] srl a - ld [hDivisor], a + ldh [hDivisor], a - ld a, [hMathBuffer + 0] + ldh a, [hMathBuffer + 0] rr a - ld [hMathBuffer + 0], a + ldh [hMathBuffer + 0], a jr .loop .done - ld a, [hDividend + 1] - ld [hDivisor], a + ldh a, [hDividend + 1] + ldh [hDivisor], a - ld a, [hMathBuffer + 4] - ld [hDividend + 3], a + ldh a, [hMathBuffer + 4] + ldh [hDividend + 3], a - ld a, [hMathBuffer + 3] - ld [hDividend + 2], a + ldh a, [hMathBuffer + 3] + ldh [hDividend + 2], a - ld a, [hMathBuffer + 2] - ld [hDividend + 1], a + ldh a, [hMathBuffer + 2] + ldh [hDividend + 1], a - ld a, [hMathBuffer + 1] - ld [hDividend + 0], a + ldh a, [hMathBuffer + 1] + ldh [hDividend + 0], a ret diff --git a/engine/math/print_num.asm b/engine/math/print_num.asm index c8899be6c..fce3c9027 100644 --- a/engine/math/print_num.asm +++ b/engine/math/print_num.asm @@ -23,9 +23,9 @@ _PrintNum:: .main xor a - ld [hPrintNum1], a - ld [hPrintNum2], a - ld [hPrintNum3], a + ldh [hPrintNumBuffer + 0], a + ldh [hPrintNumBuffer + 1], a + ldh [hPrintNumBuffer + 2], a ld a, b and $f cp 1 @@ -35,26 +35,26 @@ _PrintNum:: ; maximum 3 bytes .long ld a, [de] - ld [hPrintNum2], a + ldh [hPrintNumBuffer + 1], a inc de ld a, [de] - ld [hPrintNum3], a + ldh [hPrintNumBuffer + 2], a inc de ld a, [de] - ld [hPrintNum4], a + ldh [hPrintNumBuffer + 3], a jr .start .word ld a, [de] - ld [hPrintNum3], a + ldh [hPrintNumBuffer + 2], a inc de ld a, [de] - ld [hPrintNum4], a + ldh [hPrintNumBuffer + 3], a jr .start .byte ld a, [de] - ld [hPrintNum4], a + ldh [hPrintNumBuffer + 3], a .start push de @@ -81,51 +81,51 @@ _PrintNum:: .seven ld a, HIGH(1000000 >> 8) - ld [hPrintNum5], a + ldh [hPrintNumBuffer + 4], a ld a, HIGH(1000000) ; mid - ld [hPrintNum6], a + ldh [hPrintNumBuffer + 5], a ld a, LOW(1000000) - ld [hPrintNum7], a + ldh [hPrintNumBuffer + 6], a call .PrintDigit call .AdvancePointer .six ld a, HIGH(100000 >> 8) - ld [hPrintNum5], a + ldh [hPrintNumBuffer + 4], a ld a, HIGH(100000) ; mid - ld [hPrintNum6], a + ldh [hPrintNumBuffer + 5], a ld a, LOW(100000) - ld [hPrintNum7], a + ldh [hPrintNumBuffer + 6], a call .PrintDigit call .AdvancePointer .five xor a ; HIGH(10000 >> 8) - ld [hPrintNum5], a + ldh [hPrintNumBuffer + 4], a ld a, HIGH(10000) ; mid - ld [hPrintNum6], a + ldh [hPrintNumBuffer + 5], a ld a, LOW(10000) - ld [hPrintNum7], a + ldh [hPrintNumBuffer + 6], a call .PrintDigit call .AdvancePointer .four xor a ; HIGH(1000 >> 8) - ld [hPrintNum5], a + ldh [hPrintNumBuffer + 4], a ld a, HIGH(1000) ; mid - ld [hPrintNum6], a + ldh [hPrintNumBuffer + 5], a ld a, LOW(1000) - ld [hPrintNum7], a + ldh [hPrintNumBuffer + 6], a call .PrintDigit call .AdvancePointer .three xor a ; HIGH(100 >> 8) - ld [hPrintNum5], a + ldh [hPrintNumBuffer + 4], a xor a ; HIGH(100) ; mid - ld [hPrintNum6], a + ldh [hPrintNumBuffer + 5], a ld a, LOW(100) - ld [hPrintNum7], a + ldh [hPrintNumBuffer + 6], a call .PrintDigit call .AdvancePointer @@ -133,11 +133,11 @@ _PrintNum:: dec e jr nz, .two_skip ld a, "0" - ld [hPrintNum1], a + ldh [hPrintNumBuffer + 0], a .two_skip ld c, 0 - ld a, [hPrintNum4] + ldh a, [hPrintNumBuffer + 3] .mod_10 cp 10 jr c, .modded_10 @@ -147,7 +147,7 @@ _PrintNum:: .modded_10 ld b, a - ld a, [hPrintNum1] + ldh a, [hPrintNumBuffer + 0] or c jr nz, .money call .PrintLeadingZero @@ -160,7 +160,7 @@ _PrintNum:: add c ld [hl], a pop af - ld [hPrintNum1], a + ldh [hPrintNumBuffer + 0], a inc e dec e jr nz, .money_leading_zero @@ -180,7 +180,7 @@ _PrintNum:: .PrintYen: push af - ld a, [hPrintNum1] + ldh a, [hPrintNumBuffer + 0] and a jr nz, .stop bit 5, d @@ -197,68 +197,68 @@ _PrintNum:: dec e jr nz, .ok ld a, "0" - ld [hPrintNum1], a + ldh [hPrintNumBuffer + 0], a .ok ld c, 0 .loop - ld a, [hPrintNum5] + ldh a, [hPrintNumBuffer + 4] ld b, a - ld a, [hPrintNum2] - ld [hPrintNum8], a + ldh a, [hPrintNumBuffer + 1] + ldh [hPrintNumBuffer + 7], a cp b jr c, .skip1 sub b - ld [hPrintNum2], a - ld a, [hPrintNum6] + ldh [hPrintNumBuffer + 1], a + ldh a, [hPrintNumBuffer + 5] ld b, a - ld a, [hPrintNum3] - ld [hPrintNum9], a + ldh a, [hPrintNumBuffer + 2] + ldh [hPrintNumBuffer + 8], a cp b jr nc, .skip2 - ld a, [hPrintNum2] + ldh a, [hPrintNumBuffer + 1] or 0 jr z, .skip3 dec a - ld [hPrintNum2], a - ld a, [hPrintNum3] + ldh [hPrintNumBuffer + 1], a + ldh a, [hPrintNumBuffer + 2] .skip2 sub b - ld [hPrintNum3], a - ld a, [hPrintNum7] + ldh [hPrintNumBuffer + 2], a + ldh a, [hPrintNumBuffer + 6] ld b, a - ld a, [hPrintNum4] - ld [hPrintNum10], a + ldh a, [hPrintNumBuffer + 3] + ldh [hPrintNumBuffer + 9], a cp b jr nc, .skip4 - ld a, [hPrintNum3] + ldh a, [hPrintNumBuffer + 2] and a jr nz, .skip5 - ld a, [hPrintNum2] + ldh a, [hPrintNumBuffer + 1] and a jr z, .skip6 dec a - ld [hPrintNum2], a + ldh [hPrintNumBuffer + 1], a xor a .skip5 dec a - ld [hPrintNum3], a - ld a, [hPrintNum4] + ldh [hPrintNumBuffer + 2], a + ldh a, [hPrintNumBuffer + 3] .skip4 sub b - ld [hPrintNum4], a + ldh [hPrintNumBuffer + 3], a inc c jr .loop .skip6 - ld a, [hPrintNum9] - ld [hPrintNum3], a + ldh a, [hPrintNumBuffer + 8] + ldh [hPrintNumBuffer + 2], a .skip3 - ld a, [hPrintNum8] - ld [hPrintNum2], a + ldh a, [hPrintNumBuffer + 7] + ldh [hPrintNumBuffer + 1], a .skip1 - ld a, [hPrintNum1] + ldh a, [hPrintNumBuffer + 0] or c jr z, .PrintLeadingZero - ld a, [hPrintNum1] + ldh a, [hPrintNumBuffer + 0] and a jr nz, .done bit 5, d @@ -270,7 +270,7 @@ _PrintNum:: ld a, "0" add c ld [hl], a - ld [hPrintNum1], a + ldh [hPrintNumBuffer + 0], a inc e dec e ret nz @@ -292,7 +292,7 @@ _PrintNum:: jr nz, .inc bit 6, d ; left alignment or right alignment? jr z, .inc - ld a, [hPrintNum1] + ldh a, [hPrintNumBuffer + 0] and a ret z .inc |