This is an informed attempt at reorganizing the engine/ directory by creating categorized subdirectories, in order to make it easier to navigate and find things. The directories created are as follows: * engine/game: Contains all "minigames", things like the unown puzzle and slot machine. * engine/gfx: Contains all handling of graphics. From loading palettes to playing animations. * engine/link: Contains all multiplayer functionality. * engine/menu: Contains all generic/misc. menus and menu code. Other, more specialized menus are in their own subdirectories (pokedex, pokegear, party menu, etc). * engine/overworld: Contains all handling of the overworld. From loading and connecting maps to wild encounters and the scripting engine. * engine/pokegear: In the same vein as engine/pokedex, except it could use some more splitting up. * engine/pokemon: Contains everything related to manipulating pokemon data. From the pokemon storage system to evolution and mail. * engine/printer: Contains everything related to printing things as well as the printer communication. * engine/title: Contains intro sequences, title screens and credits.
197 lines
2.4 KiB
NASM
Executable File
197 lines
2.4 KiB
NASM
Executable File
_Multiply:: ; 66de
|
|
|
|
; hMultiplier is one byte.
|
|
ld a, 8
|
|
ld b, a
|
|
|
|
xor a
|
|
ld [hProduct], a
|
|
ld [hMathBuffer + 1], a
|
|
ld [hMathBuffer + 2], a
|
|
ld [hMathBuffer + 3], a
|
|
ld [hMathBuffer + 4], a
|
|
|
|
|
|
.loop
|
|
ld a, [hMultiplier]
|
|
srl a
|
|
ld [hMultiplier], a
|
|
jr nc, .next
|
|
|
|
ld a, [hMathBuffer + 4]
|
|
ld c, a
|
|
ld a, [hMultiplicand + 2]
|
|
add c
|
|
ld [hMathBuffer + 4], a
|
|
|
|
ld a, [hMathBuffer + 3]
|
|
ld c, a
|
|
ld a, [hMultiplicand + 1]
|
|
adc c
|
|
ld [hMathBuffer + 3], a
|
|
|
|
ld a, [hMathBuffer + 2]
|
|
ld c, a
|
|
ld a, [hMultiplicand + 0]
|
|
adc c
|
|
ld [hMathBuffer + 2], a
|
|
|
|
ld a, [hMathBuffer + 1]
|
|
ld c, a
|
|
ld a, [hProduct]
|
|
adc c
|
|
ld [hMathBuffer + 1], a
|
|
|
|
.next
|
|
dec b
|
|
jr z, .done
|
|
|
|
|
|
; hMultiplicand <<= 1
|
|
|
|
ld a, [hMultiplicand + 2]
|
|
add a
|
|
ld [hMultiplicand + 2], a
|
|
|
|
ld a, [hMultiplicand + 1]
|
|
rla
|
|
ld [hMultiplicand + 1], a
|
|
|
|
ld a, [hMultiplicand + 0]
|
|
rla
|
|
ld [hMultiplicand + 0], a
|
|
|
|
ld a, [hProduct]
|
|
rla
|
|
ld [hProduct], a
|
|
|
|
jr .loop
|
|
|
|
|
|
.done
|
|
ld a, [hMathBuffer + 4]
|
|
ld [hProduct + 3], a
|
|
|
|
ld a, [hMathBuffer + 3]
|
|
ld [hProduct + 2], a
|
|
|
|
ld a, [hMathBuffer + 2]
|
|
ld [hProduct + 1], a
|
|
|
|
ld a, [hMathBuffer + 1]
|
|
ld [hProduct + 0], a
|
|
|
|
ret
|
|
; 673e
|
|
|
|
|
|
_Divide:: ; 673e
|
|
xor a
|
|
ld [hMathBuffer + 0], a
|
|
ld [hMathBuffer + 1], a
|
|
ld [hMathBuffer + 2], a
|
|
ld [hMathBuffer + 3], a
|
|
ld [hMathBuffer + 4], a
|
|
|
|
ld a, 9
|
|
ld e, a
|
|
|
|
.loop
|
|
ld a, [hMathBuffer + 0]
|
|
ld c, a
|
|
ld a, [hDividend + 1]
|
|
sub c
|
|
ld d, a
|
|
|
|
ld a, [hDivisor]
|
|
ld c, a
|
|
ld a, [hDividend + 0]
|
|
sbc c
|
|
jr c, .next
|
|
|
|
ld [hDividend + 0], a
|
|
|
|
ld a, d
|
|
ld [hDividend + 1], a
|
|
|
|
ld a, [hMathBuffer + 4]
|
|
inc a
|
|
ld [hMathBuffer + 4], a
|
|
|
|
jr .loop
|
|
|
|
.next
|
|
ld a, b
|
|
cp 1
|
|
jr z, .done
|
|
|
|
ld a, [hMathBuffer + 4]
|
|
add a
|
|
ld [hMathBuffer + 4], a
|
|
|
|
ld a, [hMathBuffer + 3]
|
|
rla
|
|
ld [hMathBuffer + 3], a
|
|
|
|
ld a, [hMathBuffer + 2]
|
|
rla
|
|
ld [hMathBuffer + 2], a
|
|
|
|
ld a, [hMathBuffer + 1]
|
|
rla
|
|
ld [hMathBuffer + 1], a
|
|
|
|
dec e
|
|
jr nz, .next2
|
|
|
|
ld e, 8
|
|
ld a, [hMathBuffer + 0]
|
|
ld [hDivisor], a
|
|
xor a
|
|
ld [hMathBuffer + 0], a
|
|
|
|
ld a, [hDividend + 1]
|
|
ld [hDividend + 0], a
|
|
|
|
ld a, [hDividend + 2]
|
|
ld [hDividend + 1], a
|
|
|
|
ld a, [hDividend + 3]
|
|
ld [hDividend + 2], a
|
|
|
|
.next2
|
|
ld a, e
|
|
cp 1
|
|
jr nz, .okay
|
|
dec b
|
|
|
|
.okay
|
|
ld a, [hDivisor]
|
|
srl a
|
|
ld [hDivisor], a
|
|
|
|
ld a, [hMathBuffer + 0]
|
|
rr a
|
|
ld [hMathBuffer + 0], a
|
|
|
|
jr .loop
|
|
|
|
.done
|
|
ld a, [hDividend + 1]
|
|
ld [hDivisor], a
|
|
|
|
ld a, [hMathBuffer + 4]
|
|
ld [hDividend + 3], a
|
|
|
|
ld a, [hMathBuffer + 3]
|
|
ld [hDividend + 2], a
|
|
|
|
ld a, [hMathBuffer + 2]
|
|
ld [hDividend + 1], a
|
|
|
|
ld a, [hMathBuffer + 1]
|
|
ld [hDividend + 0], a
|
|
|
|
ret
|
|
; 67c1
|