diff options
Diffstat (limited to 'engine/bcd.asm')
-rw-r--r-- | engine/bcd.asm | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/engine/bcd.asm b/engine/bcd.asm index a5322702..204c2e40 100644 --- a/engine/bcd.asm +++ b/engine/bcd.asm @@ -1,22 +1,22 @@ ; divide hMoney by hDivideBCDDivisor ; return output in hDivideBCDQuotient (same as hDivideBCDDivisor) ; used only to halve player money upon losing a fight -DivideBCDPredef:: ; f5a4 (3:75a4) +DivideBCDPredef:: DivideBCDPredef2:: DivideBCDPredef3:: ; only used function DivideBCDPredef4:: call GetPredefRegisters -DivideBCD:: ; f5a8 (3:75a8) +DivideBCD:: xor a ld [hDivideBCDBuffer], a ld [hDivideBCDBuffer + 1], a ld [hDivideBCDBuffer + 2], a ld d, $1 -.asm_f5b0 +.loop1 ld a, [hDivideBCDDivisor] and $f0 - jr nz, .asm_f5e1 + jr nz, .go inc d ld a, [hDivideBCDDivisor] swap a @@ -40,8 +40,9 @@ DivideBCD:: ; f5a8 (3:75a8) ld a, [hDivideBCDDivisor + 2] and $f0 ld [hDivideBCDDivisor + 2], a - jr .asm_f5b0 -.asm_f5e1 + jr .loop1 + +.go push de push de call DivideBCD_f686 @@ -51,7 +52,7 @@ DivideBCD:: ; f5a8 (3:75a8) and $f0 ld [hDivideBCDBuffer], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -60,7 +61,7 @@ DivideBCD:: ; f5a8 (3:75a8) or b ld [hDivideBCDBuffer], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -70,7 +71,7 @@ DivideBCD:: ; f5a8 (3:75a8) and $f0 ld [hDivideBCDBuffer + 1], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -79,7 +80,7 @@ DivideBCD:: ; f5a8 (3:75a8) or b ld [hDivideBCDBuffer + 1], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -89,7 +90,7 @@ DivideBCD:: ; f5a8 (3:75a8) and $f0 ld [hDivideBCDBuffer + 2], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -97,7 +98,7 @@ DivideBCD:: ; f5a8 (3:75a8) ld a, [hDivideBCDBuffer + 2] or b ld [hDivideBCDBuffer + 2], a -.asm_f642 +.skip ld a, [hDivideBCDBuffer] ld [hDivideBCDQuotient], a ld a, [hDivideBCDBuffer + 1] @@ -109,15 +110,15 @@ DivideBCD:: ; f5a8 (3:75a8) sub d and a ret z -.asm_f654 +.loop2 push af call DivideBCD_f65d pop af dec a - jr nz, .asm_f654 + jr nz, .loop2 ret -DivideBCD_f65d: ; f65d (3:765d) +DivideBCD_f65d: ld a, [hDivideBCDDivisor + 2] swap a and $f @@ -142,7 +143,7 @@ DivideBCD_f65d: ; f65d (3:765d) ld [hDivideBCDDivisor], a ret -DivideBCD_f686: ; f686 (3:7686) +DivideBCD_f686: ld bc, $3 .asm_f689 ld de, hMoney @@ -160,10 +161,10 @@ DivideBCD_f686: ; f686 (3:7686) jr .asm_f689 -AddBCDPredef:: ; f6a3 (3:76a3) +AddBCDPredef:: call GetPredefRegisters -AddBCD:: ; f6a6 (3:76a6) +AddBCD:: and a ld b, c .add @@ -187,10 +188,10 @@ AddBCD:: ; f6a6 (3:76a6) ret -SubBCDPredef:: ; f6bc (3:76bc) +SubBCDPredef:: call GetPredefRegisters -SubBCD:: ; f6bf (3:76bf) +SubBCD:: and a ld b, c .sub @@ -212,4 +213,4 @@ SubBCD:: ; f6bf (3:76bf) jr nz, .fill scf .done - ret
\ No newline at end of file + ret |