diff options
Diffstat (limited to 'engine/math/multiply_divide.asm')
-rwxr-xr-x | engine/math/multiply_divide.asm | 158 |
1 files changed, 79 insertions, 79 deletions
diff --git a/engine/math/multiply_divide.asm b/engine/math/multiply_divide.asm index 8bbc20a1..2fcda158 100755 --- a/engine/math/multiply_divide.asm +++ b/engine/math/multiply_divide.asm @@ -2,142 +2,142 @@ _Multiply:: ld a, $8 ld b, a xor a - ld [hProduct], a - ld [hMultiplyBuffer], a - ld [hMultiplyBuffer+1], a - ld [hMultiplyBuffer+2], a - ld [hMultiplyBuffer+3], a + ldh [hProduct], a + ldh [hMultiplyBuffer], a + ldh [hMultiplyBuffer+1], a + ldh [hMultiplyBuffer+2], a + ldh [hMultiplyBuffer+3], a .loop - ld a, [hMultiplier] + ldh a, [hMultiplier] srl a - ld [hMultiplier], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh [hMultiplier], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) jr nc, .smallMultiplier - ld a, [hMultiplyBuffer+3] + ldh a, [hMultiplyBuffer+3] ld c, a - ld a, [hMultiplicand+2] + ldh a, [hMultiplicand+2] add c - ld [hMultiplyBuffer+3], a - ld a, [hMultiplyBuffer+2] + ldh [hMultiplyBuffer+3], a + ldh a, [hMultiplyBuffer+2] ld c, a - ld a, [hMultiplicand+1] + ldh a, [hMultiplicand+1] adc c - ld [hMultiplyBuffer+2], a - ld a, [hMultiplyBuffer+1] + ldh [hMultiplyBuffer+2], a + ldh a, [hMultiplyBuffer+1] ld c, a - ld a, [hMultiplicand] ; (aliases: hMultiplicand) + ldh a, [hMultiplicand] ; (aliases: hMultiplicand) adc c - ld [hMultiplyBuffer+1], a - ld a, [hMultiplyBuffer] + ldh [hMultiplyBuffer+1], a + ldh a, [hMultiplyBuffer] ld c, a - ld a, [hProduct] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hProduct] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) adc c - ld [hMultiplyBuffer], a + ldh [hMultiplyBuffer], a .smallMultiplier dec b jr z, .done - ld a, [hMultiplicand+2] + ldh a, [hMultiplicand+2] sla a - ld [hMultiplicand+2], a - ld a, [hMultiplicand+1] + ldh [hMultiplicand+2], a + ldh a, [hMultiplicand+1] rl a - ld [hMultiplicand+1], a - ld a, [hMultiplicand] + ldh [hMultiplicand+1], a + ldh a, [hMultiplicand] rl a - ld [hMultiplicand], a - ld a, [hProduct] + ldh [hMultiplicand], a + ldh a, [hProduct] rl a - ld [hProduct], a + ldh [hProduct], a jr .loop .done - ld a, [hMultiplyBuffer+3] - ld [hProduct+3], a - ld a, [hMultiplyBuffer+2] - ld [hProduct+2], a - ld a, [hMultiplyBuffer+1] - ld [hProduct+1], a - ld a, [hMultiplyBuffer] - ld [hProduct], a + ldh a, [hMultiplyBuffer+3] + ldh [hProduct+3], a + ldh a, [hMultiplyBuffer+2] + ldh [hProduct+2], a + ldh a, [hMultiplyBuffer+1] + ldh [hProduct+1], a + ldh a, [hMultiplyBuffer] + ldh [hProduct], a ret _Divide:: xor a - ld [hDivideBuffer], a - ld [hDivideBuffer+1], a - ld [hDivideBuffer+2], a - ld [hDivideBuffer+3], a - ld [hDivideBuffer+4], a + ldh [hDivideBuffer], a + ldh [hDivideBuffer+1], a + ldh [hDivideBuffer+2], a + ldh [hDivideBuffer+3], a + ldh [hDivideBuffer+4], a ld a, $9 ld e, a .asm_37db3 - ld a, [hDivideBuffer] + ldh a, [hDivideBuffer] ld c, a - ld a, [hDividend+1] ; (aliases: hMultiplicand) + ldh a, [hDividend+1] ; (aliases: hMultiplicand) sub c ld d, a - ld a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) ld c, a - ld a, [hDividend] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hDividend] ; (aliases: hProduct, hPastLeadingZeros, hQuotient) sbc c jr c, .asm_37dce - ld [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) ld a, d - ld [hDividend+1], a ; (aliases: hMultiplicand) - ld a, [hDivideBuffer+4] + ldh [hDividend+1], a ; (aliases: hMultiplicand) + ldh a, [hDivideBuffer+4] inc a - ld [hDivideBuffer+4], a + ldh [hDivideBuffer+4], a jr .asm_37db3 .asm_37dce ld a, b cp $1 jr z, .asm_37e18 - ld a, [hDivideBuffer+4] + ldh a, [hDivideBuffer+4] sla a - ld [hDivideBuffer+4], a - ld a, [hDivideBuffer+3] + ldh [hDivideBuffer+4], a + ldh a, [hDivideBuffer+3] rl a - ld [hDivideBuffer+3], a - ld a, [hDivideBuffer+2] + ldh [hDivideBuffer+3], a + ldh a, [hDivideBuffer+2] rl a - ld [hDivideBuffer+2], a - ld a, [hDivideBuffer+1] + ldh [hDivideBuffer+2], a + ldh a, [hDivideBuffer+1] rl a - ld [hDivideBuffer+1], a + ldh [hDivideBuffer+1], a dec e jr nz, .asm_37e04 ld a, $8 ld e, a - ld a, [hDivideBuffer] - ld [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivideBuffer] + ldh [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) xor a - ld [hDivideBuffer], a - ld a, [hDividend+1] ; (aliases: hMultiplicand) - ld [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) - ld a, [hDividend+2] - ld [hDividend+1], a ; (aliases: hMultiplicand) - ld a, [hDividend+3] - ld [hDividend+2], a + ldh [hDivideBuffer], a + ldh a, [hDividend+1] ; (aliases: hMultiplicand) + ldh [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hDividend+2] + ldh [hDividend+1], a ; (aliases: hMultiplicand) + ldh a, [hDividend+3] + ldh [hDividend+2], a .asm_37e04 ld a, e cp $1 jr nz, .asm_37e0a dec b .asm_37e0a - ld a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivisor] ; (aliases: hDivisor, hMultiplier, hPowerOf10) srl a - ld [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) - ld a, [hDivideBuffer] + ldh [hDivisor], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivideBuffer] rr a - ld [hDivideBuffer], a + ldh [hDivideBuffer], a jr .asm_37db3 .asm_37e18 - ld a, [hDividend+1] ; (aliases: hMultiplicand) - ld [hRemainder], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) - ld a, [hDivideBuffer+4] - ld [hQuotient+3], a - ld a, [hDivideBuffer+3] - ld [hQuotient+2], a - ld a, [hDivideBuffer+2] - ld [hQuotient+1], a ; (aliases: hMultiplicand) - ld a, [hDivideBuffer+1] - ld [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) + ldh a, [hDividend+1] ; (aliases: hMultiplicand) + ldh [hRemainder], a ; (aliases: hDivisor, hMultiplier, hPowerOf10) + ldh a, [hDivideBuffer+4] + ldh [hQuotient+3], a + ldh a, [hDivideBuffer+3] + ldh [hQuotient+2], a + ldh a, [hDivideBuffer+2] + ldh [hQuotient+1], a ; (aliases: hMultiplicand) + ldh a, [hDivideBuffer+1] + ldh [hDividend], a ; (aliases: hProduct, hPastLeadingZeros, hQuotient) ret |