Use labels instead of constants for HRAM
Use explicit ldh instruction to access HRAM locations, don't rely on optimizing ld
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user