pokecrystal-board/home/math.asm
mid-kid 43eff93861 Small home/ reorganization
Time to move everything out of home.asm:
- InexplicablyEmptyFunction was moved to home/map.asm
- The wDebugFlags functions and xor_a brothers were moved to
  home/flag.asm because they're all flag-related.
- ret_2f3e was moved into home/region.asm
- The register alias sisters were moved to a new file called home/call_regs.asm
- IsInArray and SkipNames were joined by AddNTimes from home/math.asm
  into home/array.asm, as they're all used to index arrays.
- CallPointerAt was moved into home/print_text.asm because given the
  contents of that file it doesn't feel very out of place (that file
  isn't very aptly named...)
- CountSetBits was moved into home/pokedex_flags.asm because it's unique
  use is counting the amount of seen/caught mon in the podedex. GetWeekday
  was pulled into this by proximity.

Other changes were also made:
- PushLYOverrides was moved from home/sprite_anims.asm to
  home/battle.asm, because it's almost exclusively used for battle
  animations, with the lone exception being the Magnet Train.
- home/copy.asm was renamed to home/gfx.asm, as it's all gfx-related
- home/copy2.asm was renamed to home/copy.asm, now it's the only file
  called copy.
- SetHPPal and GetHPPal were moved from home/hp_pals.asm to
  home/tilemap.asm, as they're attrmap related, like many functions in
  that file are.
- home/rtc.asm was renamed to home/time_palettes.asm, as it had very
  little to do with the RTC at all, all RTC functions being in home/time.asm
- home/handshake.asm was renamed to home/printer.asm.
- home/mon_data_2.asm was renamed to home/mon_party.asm.
2020-02-22 00:23:47 +01:00

59 lines
697 B
NASM

SimpleMultiply::
; 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
SimpleDivide::
; 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
Multiply::
; Multiply hMultiplicand (3 bytes) by hMultiplier. Result in hProduct.
; All values are big endian.
push hl
push bc
callfar _Multiply
pop bc
pop hl
ret
Divide::
; Divide hDividend length b (max 4 bytes) by hDivisor. Result in hQuotient.
; All values are big endian.
push hl
push de
push bc
homecall _Divide
pop bc
pop de
pop hl
ret
SubtractSigned::
; Return a - b, sign in carry.
sub b
ret nc
cpl
add 1
scf
ret