diff options
-rw-r--r-- | common/math.asm | 76 | ||||
-rw-r--r-- | main.asm | 76 |
2 files changed, 77 insertions, 75 deletions
diff --git a/common/math.asm b/common/math.asm new file mode 100644 index 000000000..87a00c412 --- /dev/null +++ b/common/math.asm @@ -0,0 +1,76 @@ +SimpleMultiply: ; 3105 +; Return a * c. + and a + ret z + + push bc + ld b, a + xor a +.loop + add c + dec b + jr nz, .loop + pop bc + ret +; 3110 + + +SimpleDivide: ; 3110 +; Divide a by c. Return quotient b and remainder a. + ld b, 0 +.loop + inc b + sub c + jr nc, .loop + dec b + add c + ret +; 3119 + + +Multiply: ; 3119 +; Multiply hMultiplicand (3 bytes) by hMultiplier. Result in hProduct. +; All values are big endian. + push hl + push bc + + callab _Multiply + + pop bc + pop hl + ret +; 3124 + + +Divide: ; 3124 +; Divide hDividend length b (max 4 bytes) by hDivisor. Result in hQuotient. +; All values are big endian. + push hl + push de + push bc + ld a, [hROMBank] + push af + ld a, BANK(_Divide) + rst Bankswitch + + call _Divide + + pop af + rst Bankswitch + pop bc + pop de + pop hl + ret +; 3136 + + +SubtractSigned: ; 3136 +; Return a - b, sign in carry. + sub b + ret nc + cpl + add 1 + scf + ret +; 313d + @@ -861,81 +861,7 @@ AddNTimes: ; 0x30fe ; 0x3105 -SimpleMultiply: ; 3105 -; Return a * c. - and a - ret z - - push bc - ld b, a - xor a -.loop - add c - dec b - jr nz, .loop - pop bc - ret -; 3110 - - -SimpleDivide: ; 3110 -; Divide a by c. Return quotient b and remainder a. - ld b, 0 -.loop - inc b - sub c - jr nc, .loop - dec b - add c - ret -; 3119 - - -Multiply: ; 3119 -; Multiply hMultiplicand (3 bytes) by hMultiplier. Result in hProduct. -; All values are big endian. - push hl - push bc - - callab _Multiply - - pop bc - pop hl - ret -; 3124 - - -Divide: ; 3124 -; Divide hDividend length b (max 4 bytes) by hDivisor. Result in hQuotient. -; All values are big endian. - push hl - push de - push bc - ld a, [hROMBank] - push af - ld a, BANK(_Divide) - rst Bankswitch - - call _Divide - - pop af - rst Bankswitch - pop bc - pop de - pop hl - ret -; 3136 - - -SubtractSigned: ; 3136 -; Return a - b, sign in carry. - sub b - ret nc - cpl - add 1 - scf - ret -; 313d +INCLUDE "common/math.asm" PrintLetterDelay: ; 313d |