summaryrefslogtreecommitdiff
path: root/engine/bcd.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/bcd.asm')
-rw-r--r--engine/bcd.asm62
1 files changed, 33 insertions, 29 deletions
diff --git a/engine/bcd.asm b/engine/bcd.asm
index 2d0b43df..d84e504b 100644
--- a/engine/bcd.asm
+++ b/engine/bcd.asm
@@ -1,14 +1,17 @@
+; divide hMoney by hDivideBCDDivisor
+; return output in hDivideBCDQuotient (same as hDivideBCDDivisor)
+; used only to halve player money upon losing a fight
DivideBCDPredef::
DivideBCDPredef2::
-DivideBCDPredef3::
+DivideBCDPredef3:: ; only used function
DivideBCDPredef4::
call GetPredefRegisters
DivideBCD::
xor a
ld [hDivideBCDBuffer], a
- ld [hDivideBCDBuffer+1], a
- ld [hDivideBCDBuffer+2], a
+ ld [hDivideBCDBuffer + 1], a
+ ld [hDivideBCDBuffer + 2], a
ld d, $1
.mulBy10Loop
; multiply the divisor by 10 until the leading digit is nonzero
@@ -21,25 +24,26 @@ DivideBCD::
swap a
and $f0
ld b, a
- ld a, [hDivideBCDDivisor+1]
+ ld a, [hDivideBCDDivisor + 1]
swap a
- ld [hDivideBCDDivisor+1], a
+ ld [hDivideBCDDivisor + 1], a
and $f
or b
ld [hDivideBCDDivisor], a
- ld a, [hDivideBCDDivisor+1]
+ ld a, [hDivideBCDDivisor + 1]
and $f0
ld b, a
- ld a, [hDivideBCDDivisor+2]
+ ld a, [hDivideBCDDivisor + 2]
swap a
- ld [hDivideBCDDivisor+2], a
+ ld [hDivideBCDDivisor + 2], a
and $f
or b
- ld [hDivideBCDDivisor+1], a
- ld a, [hDivideBCDDivisor+2]
+ ld [hDivideBCDDivisor + 1], a
+ ld a, [hDivideBCDDivisor + 2]
and $f0
- ld [hDivideBCDDivisor+2], a
+ ld [hDivideBCDDivisor + 2], a
jr .mulBy10Loop
+
.next
push de
push de
@@ -67,16 +71,16 @@ DivideBCD::
ld a, b
swap a
and $f0
- ld [hDivideBCDBuffer+1], a
+ ld [hDivideBCDBuffer + 1], a
dec d
jr z, .next2
push de
call DivideBCD_divDivisorBy10
call DivideBCD_getNextDigit
pop de
- ld a, [hDivideBCDBuffer+1]
+ ld a, [hDivideBCDBuffer + 1]
or b
- ld [hDivideBCDBuffer+1], a
+ ld [hDivideBCDBuffer + 1], a
dec d
jr z, .next2
push de
@@ -86,23 +90,23 @@ DivideBCD::
ld a, b
swap a
and $f0
- ld [hDivideBCDBuffer+2], a
+ ld [hDivideBCDBuffer + 2], a
dec d
jr z, .next2
push de
call DivideBCD_divDivisorBy10
call DivideBCD_getNextDigit
pop de
- ld a, [hDivideBCDBuffer+2]
+ ld a, [hDivideBCDBuffer + 2]
or b
- ld [hDivideBCDBuffer+2], a
+ ld [hDivideBCDBuffer + 2], a
.next2
ld a, [hDivideBCDBuffer]
ld [hDivideBCDQuotient], a ; the same memory location as hDivideBCDDivisor
- ld a, [hDivideBCDBuffer+1]
- ld [hDivideBCDQuotient+1], a
- ld a, [hDivideBCDBuffer+2]
- ld [hDivideBCDQuotient+2], a
+ ld a, [hDivideBCDBuffer + 1]
+ ld [hDivideBCDQuotient + 1], a
+ ld a, [hDivideBCDBuffer + 2]
+ ld [hDivideBCDQuotient + 2], a
pop de
ld a, $6
sub d
@@ -117,17 +121,17 @@ DivideBCD::
ret
DivideBCD_divDivisorBy10:
- ld a, [hDivideBCDDivisor+2]
+ ld a, [hDivideBCDDivisor + 2]
swap a
and $f
ld b, a
- ld a, [hDivideBCDDivisor+1]
+ ld a, [hDivideBCDDivisor + 1]
swap a
- ld [hDivideBCDDivisor+1], a
+ ld [hDivideBCDDivisor + 1], a
and $f0
or b
- ld [hDivideBCDDivisor+2], a
- ld a, [hDivideBCDDivisor+1]
+ ld [hDivideBCDDivisor + 2], a
+ ld a, [hDivideBCDDivisor + 1]
and $f
ld b, a
ld a, [hDivideBCDDivisor]
@@ -135,7 +139,7 @@ DivideBCD_divDivisorBy10:
ld [hDivideBCDDivisor], a
and $f0
or b
- ld [hDivideBCDDivisor+1], a
+ ld [hDivideBCDDivisor + 1], a
ld a, [hDivideBCDDivisor]
and $f
ld [hDivideBCDDivisor], a
@@ -151,8 +155,8 @@ DivideBCD_getNextDigit:
pop bc
ret c
inc b
- ld de, hMoney+2 ; since SubBCD works starting from the least significant digit
- ld hl, hDivideBCDDivisor+2
+ ld de, hMoney + 2 ; since SubBCD works starting from the least significant digit
+ ld hl, hDivideBCDDivisor + 2
push bc
call SubBCD
pop bc