summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluckytyphlosion <alan.rj.huang@gmail.com>2015-07-07 17:36:28 -0400
committerluckytyphlosion <alan.rj.huang@gmail.com>2015-07-07 17:36:28 -0400
commit4274e105f6739a92788f9b1fdba55526d7614f8a (patch)
tree0f0bda1c77a384b4255e724122ac3f6bf0af7202
parent9c9fb882c70650b82f4e684d12a5f5cf03d18ae6 (diff)
Bank3d addresses and fixes.
Also documentation of new super rod code and slight more documentation of multiply_divide.asm
-rwxr-xr-xdata/super_rod.asm133
-rw-r--r--engine/bank3d/main.asm43
-rw-r--r--engine/battle/get_trainer_name.asm10
-rwxr-xr-xengine/give_pokemon.asm26
-rwxr-xr-xengine/items/items.asm2
-rwxr-xr-xengine/multiply_divide.asm196
-rwxr-xr-xengine/predefs.asm8
-rw-r--r--hram.asm5
8 files changed, 178 insertions, 245 deletions
diff --git a/data/super_rod.asm b/data/super_rod.asm
index 2b0646fc..cacb8ffd 100755
--- a/data/super_rod.asm
+++ b/data/super_rod.asm
@@ -1,100 +1,33 @@
-; super rod data
-; format: map, pointer to fishing group
-SuperRodData: ; e919 (3:6919)
- dbw PALLET_TOWN, FishingGroup1
- dbw VIRIDIAN_CITY, FishingGroup1
- dbw CERULEAN_CITY, FishingGroup3
- dbw VERMILION_CITY, FishingGroup4
- dbw CELADON_CITY, FishingGroup5
- dbw FUCHSIA_CITY, FishingGroup10
- dbw CINNABAR_ISLAND, FishingGroup8
- dbw ROUTE_4, FishingGroup3
- dbw ROUTE_6, FishingGroup4
- dbw ROUTE_10, FishingGroup5
- dbw ROUTE_11, FishingGroup4
- dbw ROUTE_12, FishingGroup7
- dbw ROUTE_13, FishingGroup7
- dbw ROUTE_17, FishingGroup7
- dbw ROUTE_18, FishingGroup7
- dbw ROUTE_19, FishingGroup8
- dbw ROUTE_20, FishingGroup8
- dbw ROUTE_21, FishingGroup8
- dbw ROUTE_22, FishingGroup2
- dbw ROUTE_23, FishingGroup9
- dbw ROUTE_24, FishingGroup3
- dbw ROUTE_25, FishingGroup3
- dbw CERULEAN_GYM, FishingGroup3
- dbw VERMILION_DOCK, FishingGroup4
- dbw SEAFOAM_ISLANDS_4, FishingGroup8
- dbw SEAFOAM_ISLANDS_5, FishingGroup8
- dbw SAFARI_ZONE_EAST, FishingGroup6
- dbw SAFARI_ZONE_NORTH, FishingGroup6
- dbw SAFARI_ZONE_WEST, FishingGroup6
- dbw SAFARI_ZONE_CENTER, FishingGroup6
- dbw UNKNOWN_DUNGEON_2, FishingGroup9
- dbw UNKNOWN_DUNGEON_3, FishingGroup9
- dbw UNKNOWN_DUNGEON_1, FishingGroup9
- db $FF
-
-; fishing groups
-; number of monsters, followed by level/monster pairs
-FishingGroup1: ; e97d (3:697d)
- db 2
- db 15,TENTACOOL
- db 15,POLIWAG
-
-FishingGroup2: ; e982 (3:6982)
- db 2
- db 15,GOLDEEN
- db 15,POLIWAG
-
-FishingGroup3: ; e987 (3:6987)
- db 3
- db 15,PSYDUCK
- db 15,GOLDEEN
- db 15,KRABBY
-
-FishingGroup4: ; e98e (3:698e)
- db 2
- db 15,KRABBY
- db 15,SHELLDER
-
-FishingGroup5: ; e993 (3:6993)
- db 2
- db 23,POLIWHIRL
- db 15,SLOWPOKE
-
-FishingGroup6: ; e998 (3:6998)
- db 4
- db 15,DRATINI
- db 15,KRABBY
- db 15,PSYDUCK
- db 15,SLOWPOKE
-
-FishingGroup7: ; e9a1 (3:69a1)
- db 4
- db 5,TENTACOOL
- db 15,KRABBY
- db 15,GOLDEEN
- db 15,MAGIKARP
-
-FishingGroup8: ; e9aa (3:69aa)
- db 4
- db 15,STARYU
- db 15,HORSEA
- db 15,SHELLDER
- db 15,GOLDEEN
-
-FishingGroup9: ; e9b3 (3:69b3)
- db 4
- db 23,SLOWBRO
- db 23,SEAKING
- db 23,KINGLER
- db 23,SEADRA
-
-FishingGroup10: ; e9bc (3:69bc)
- db 4
- db 23,SEAKING
- db 15,KRABBY
- db 15,GOLDEEN
- db 15,MAGIKARP
+FishingSlots:: ; f5eda (3d:5eda)
+ db PALLET_TOWN,STARYU,10,TENTACOOL,10,STARYU,5,TENTACOOL,20
+ db VIRIDIAN_CITY,POLIWAG,5,POLIWAG,10,POLIWAG,15,POLIWAG,10
+ db CERULEAN_CITY,GOLDEEN,25,GOLDEEN,30,SEAKING,30,SEAKING,40
+ db VERMILION_CITY,TENTACOOL,15,TENTACOOL,20,TENTACOOL,10,HORSEA,5
+ db CELADON_CITY,GOLDEEN,5,GOLDEEN,10,GOLDEEN,15,GOLDEEN,20
+ db FUCHSIA_CITY,MAGIKARP,5,MAGIKARP,10,MAGIKARP,15,GYARADOS,15
+ db CINNABAR_ISLAND,STARYU,15,TENTACOOL,15,STARYU,10,TENTACOOL,30
+ db ROUTE_4,GOLDEEN,20,GOLDEEN,25,GOLDEEN,30,SEAKING,30
+ db ROUTE_6,GOLDEEN,5,GOLDEEN,10,GOLDEEN,15,GOLDEEN,20
+ db ROUTE_24,GOLDEEN,20,GOLDEEN,25,GOLDEEN,30,SEAKING,30
+ db ROUTE_25,KRABBY,10,KRABBY,15,KINGLER,15,KINGLER,25
+ db ROUTE_10,KRABBY,15,KRABBY,20,HORSEA,10,KINGLER,25
+ db ROUTE_11,TENTACOOL,15,TENTACOOL,20,TENTACOOL,10,HORSEA,5
+ db ROUTE_12,HORSEA,20,HORSEA,25,SEADRA,25,SEADRA,35
+ db ROUTE_13,HORSEA,15,HORSEA,20,TENTACOOL,10,SEADRA,20
+ db ROUTE_17,TENTACOOL,5,TENTACOOL,15,SHELLDER,25,SHELLDER,35
+ db ROUTE_18,TENTACOOL,15,SHELLDER,20,SHELLDER,30,SHELLDER,40
+ db ROUTE_19,TENTACOOL,15,STARYU,20,TENTACOOL,30,TENTACRUEL,30
+ db ROUTE_20,TENTACOOL,20,TENTACRUEL,20,STARYU,30,TENTACRUEL,40
+ db ROUTE_21,TENTACOOL,15,STARYU,20,TENTACOOL,30,TENTACRUEL,30
+ db ROUTE_22,POLIWAG,5,POLIWAG,10,POLIWAG,15,POLIWHIRL,15
+ db ROUTE_23,POLIWAG,25,POLIWAG,30,POLIWHIRL,30,POLIWHIRL,40
+ db VERMILION_DOCK,TENTACOOL,10,TENTACOOL,15,STARYU,15,SHELLDER,10
+ db SAFARI_ZONE_CENTER,MAGIKARP,5,MAGIKARP,10,DRATINI,10,DRAGONAIR,15
+ db SAFARI_ZONE_EAST,MAGIKARP,5,MAGIKARP,10,MAGIKARP,15,DRATINI,15
+ db SAFARI_ZONE_NORTH,MAGIKARP,5,MAGIKARP,10,MAGIKARP,15,DRATINI,15
+ db SAFARI_ZONE_WEST,MAGIKARP,5,MAGIKARP,10,MAGIKARP,15,DRATINI,15
+ db SEAFOAM_ISLANDS_4,KRABBY,25,STARYU,20,KINGLER,35,STARYU,40
+ db SEAFOAM_ISLANDS_5,KRABBY,25,STARYU,20,KINGLER,35,STARYU,40
+ db UNKNOWN_DUNGEON_2,GOLDEEN,25,SEAKING,35,SEAKING,45,SEAKING,55
+ db UNKNOWN_DUNGEON_3,GOLDEEN,30,SEAKING,40,SEAKING,50,SEAKING,60
+ db $ff \ No newline at end of file
diff --git a/engine/bank3d/main.asm b/engine/bank3d/main.asm
index 56aa260e..b1d9d2a7 100644
--- a/engine/bank3d/main.asm
+++ b/engine/bank3d/main.asm
@@ -165,35 +165,35 @@ Func_f453f:: ; f453f (3d:453f)
ret
Func_f4578:: ; f4578 (3d:4578)
- hlCoord 1,1
+ hlCoord 2,1
ld de,Pointer_f45f9
ld bc,7 << 8 | 16 ; 16x7 (xy)
call CopyScreenArea
ret
Func_f4585:: ; f4585 (3d:4585)
- hlCoord 5,3
+ hlCoord 6,4
ld de,Pointer_f4673
ld bc,4 << 8 | 7 ; 7x4 (xy)
call CopyScreenArea
- hlCoord 8,7
+ hlCoord 9,8
ld [hl],$64
inc hl
ld [hl],$65
ret
Func_f459a:: ; f459a (3d:459a)
- hlCoord 3,7
+ hlCoord 4,8
ld de,Pointer_f468f
ld bc,9 << 8 | 12 ; 12x9 (xy)
call CopyScreenArea
- hlCoord 15,9
+ hlCoord 16,10
ld [hl],$96
- hlCoord 15,10
+ hlCoord 16,11
ld [hl],$9d
- hlCoord 15,11
+ hlCoord 16,12
ld [hl],$a7
- hlCoord 15,12
+ hlCoord 16,13
ld [hl],$b1
ld hl,Pointer_f45c7
ld de,wOAMBuffer
@@ -201,7 +201,7 @@ Func_f459a:: ; f459a (3d:459a)
call CopyData
ret
-Pointer_f45c7:: ; f45c7 (3d:45c7)
+Pointer_f45c7: ; f45c7 (3d:45c7)
db $60,$40,$f1,$22
db $60,$48,$f0,$22
db $68,$40,$f3,$22
@@ -229,7 +229,7 @@ CopyScreenArea:: ; f45e7 (3d:45e7)
jr nz,CopyScreenArea
ret
-Pointer_f45f9:: ; f45f9 (3d:45f9)
+Pointer_f45f9: ; f45f9 (3d:45f9)
; 16x7 (xy)
db $f4,$f4,$f4,$f4,$f4,$f4,$49,$f4,$72,$30,$f4,$f4,$f4,$f4,$f4,$f4
db $fd,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0a,$0b,$f4,$0d,$0e,$0f
@@ -601,14 +601,14 @@ RemoveItemFromInventory_: ; f5be1 (3d:5be1)
ret
TrainerInfoTextBoxTileGraphics: INCBIN "gfx/trainer_info.2bpp"
-BlankLeaderNames: INCBIN "gfx/blank_leader_names.2bpp"
-CircleTile: INCBIN "gfx/circle_tile.2bpp"
-BadgeNumbersTileGraphics: INCBIN "gfx/badge_numbers.2bpp"
+BlankLeaderNames: INCBIN "gfx/blank_leader_names.2bpp"
+CircleTile: INCBIN "gfx/circle_tile.2bpp"
+BadgeNumbersTileGraphics: INCBIN "gfx/badge_numbers.2bpp"
-Func_f5ea4:: ; f5ea4 (3d:f5ea4)
+Func_f5ea4:: ; f5ea4 (3d:5ea4)
ld a,[W_CURMAP]
ld c,a
- ld hl,Pointer_f5eda
+ ld hl,FishingSlots
.loop
ld a,[hli]
cp $ff
@@ -619,12 +619,13 @@ Func_f5ea4:: ; f5ea4 (3d:f5ea4)
add hl,de
jr .loop
.found
- call Func_f5ec1
+ call GenerateRandomFishingEncounter
+ ret
.notfound
ld de,$0
ret
-Func_f5ec1:: ; f5ec1 (3d:5ec1)
+GenerateRandomFishingEncounter: ; f5ec1 (3d:5ec1)
call Random
cp $66
jr c,.asm_f5ed6
@@ -644,13 +645,7 @@ Func_f5ec1:: ; f5ec1 (3d:5ec1)
ld d,[hl]
ret
-Pointer_f5eda:: ; f5eda (3d:f5eda)
- db PALLET_TOWN,$1b,$a,$18,$a,$1b,$5,$18,$14
- db VIRIDIAN_CITY,$47,$5,$47,$a,$47,$f,$47,$a
- db CERULEAN_CITY,$9d,$19,$9d,$1e,$9e,$1e,$9e,$28
- ; ... rest of data TBA
-
-SECTION "temp_f5ff2" ROMX[$5ff2],BANK[$3c]
+INCLUDE "data/super_rod.asm"
INCLUDE "engine/bank3d/bank3d_battle.asm"
INCLUDE "engine/items/tm_prices.asm"
diff --git a/engine/battle/get_trainer_name.asm b/engine/battle/get_trainer_name.asm
index 961f25cf..d32b80b9 100644
--- a/engine/battle/get_trainer_name.asm
+++ b/engine/battle/get_trainer_name.asm
@@ -1,16 +1,16 @@
-GetTrainerName_: ; 13a58 (4:7a58)
+GetTrainerName_: ; f67a5 (3d:67a5)
ld hl, W_GRASSRATE
ld a, [wLinkState]
and a
- jr nz, .rival
+ jr nz, .foundName
ld hl, W_RIVALNAME
ld a, [W_TRAINERCLASS]
cp SONY1
- jr z, .rival
+ jr z, .foundName
cp SONY2
- jr z, .rival
+ jr z, .foundName
cp SONY3
- jr z, .rival
+ jr z, .foundName
ld [wd0b5], a
ld a, TRAINER_NAME
ld [wNameListType], a
diff --git a/engine/give_pokemon.asm b/engine/give_pokemon.asm
index 8610d06a..a74c756f 100755
--- a/engine/give_pokemon.asm
+++ b/engine/give_pokemon.asm
@@ -1,13 +1,13 @@
-_GivePokemon: ; 4fda5 (13:7da5)
+_GivePokemon: ; f66fa (3d:66fa)
call EnableAutoTextBoxDrawing
xor a
ld [wccd3], a
ld a, [wPartyCount] ; wPartyCount
cp PARTY_LENGTH
- jr c, .asm_4fe01
+ jr c, .partyNotFull
ld a, [W_NUMINBOX] ; wda80
cp MONS_PER_BOX
- jr nc, .asm_4fdf9
+ jr nc, .boxFull
xor a
ld [W_ENEMYBATTSTATUS3], a ; W_ENEMYBATTSTATUS3
ld a, [wcf91]
@@ -19,27 +19,27 @@ _GivePokemon: ; 4fda5 (13:7da5)
ld a, [wd5a0]
and $7f
cp 9
- jr c, .asm_4fdec
+ jr c, .boxEightorLesser ; do not adjust box number to a 2 digit number
sub 9
ld [hl], "1"
inc hl
add "0"
- jr .asm_4fdee
-.asm_4fdec
+ jr .continue
+.boxEightOrLesser
add "1"
-.asm_4fdee
+.continue
ld [hli], a
ld [hl], "@"
ld hl, SetToBoxText
call PrintText
scf
ret
-.asm_4fdf9
+.boxFull
ld hl, BoxIsFullText
call PrintText
and a
ret
-.asm_4fe01
+.partyNotFull
call SetPokedexOwnedFlag
call AddPartyMon
ld a, $1
@@ -48,7 +48,7 @@ _GivePokemon: ; 4fda5 (13:7da5)
scf
ret
-SetPokedexOwnedFlag: ; 4fe11 (13:7e11)
+SetPokedexOwnedFlag: ; f676c (3d:676c)
ld a, [wcf91]
push af
ld [wd11e], a
@@ -68,15 +68,15 @@ SetPokedexOwnedFlag: ; 4fe11 (13:7e11)
UnknownTerminator_f6794: ; f6794 (3d:6794)
db "@"
-GotMonText: ; 4fe39 (13:7e39)
+GotMonText: ; f6795 (3d:6795)
TX_FAR _GotMonText
db $0b
db "@"
-SetToBoxText: ; 4fe3f (13:7e3f)
+SetToBoxText: ; f679b (3d:679b)
TX_FAR _SetToBoxText
db "@"
-BoxIsFullText: ; 4fe44 (13:7e44)
+BoxIsFullText: ; f67a0 (3d:67a0)
TX_FAR _BoxIsFullText
db "@"
diff --git a/engine/items/items.asm b/engine/items/items.asm
index c6f098dc..7d939ae6 100755
--- a/engine/items/items.asm
+++ b/engine/items/items.asm
@@ -2814,7 +2814,7 @@ ReadSuperRodData: ; e8ea (3:68ea)
ld e, $1 ; $1 if there's a bite
ret
-INCLUDE "data/super_rod.asm"
+;INCLUDE "data/super_rod.asm"
; reloads map view and processes sprite data
; for items that cause the overworld to be displayed
diff --git a/engine/multiply_divide.asm b/engine/multiply_divide.asm
index 4aa5fa26..3b2ea21e 100755
--- a/engine/multiply_divide.asm
+++ b/engine/multiply_divide.asm
@@ -1,143 +1,143 @@
-_Multiply: ; 37d41 (d:7d41)
+_Multiply: ; f660e (3d:660e)
ld a, $8
ld b, a
xor a
- ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
- ld [$ff9b], a
- ld [H_SAVEDNUMTOPRINT], a ; $ff9c
- ld [$ff9d], a
- ld [$ff9e], a
-.asm_37d4f
- ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
+ ld [H_PRODUCT], a ; $ff95
+ ld [H_MULTIPLYBUFFER], a ; $ff9b
+ ld [H_MULTIPLYBUFFER+1], a ; $ff9c
+ ld [H_MULTIPLYBUFFER+2], a ; $ff9d
+ ld [H_MULTIPLYBUFFER+3], a ; $ff9e
+.multiplyLoop
+ ld a, [H_MULTIPLIER] ; $ff99
srl a
- ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
- jr nc, .asm_37d77
- ld a, [$ff9e]
+ ld [H_MULTIPLIER], a ; $ff99
+ jr nc, .smallMultiplier ; less than $80
+; code to possibly multiply the multiplicand by 2 and divide the multiplier by 2?
+ ld a, [H_MULTIPLYBUFFER+3]
ld c, a
- ld a, [$ff98]
+ ld a, [H_MULTIPLICAND+2]
add c
- ld [$ff9e], a
- ld a, [$ff9d]
+ ld [H_MULTIPLYBUFFER+3], a
+ ld a, [H_MULTIPLYBUFFER+2]
ld c, a
- ld a, [$ff97]
+ ld a, [H_MULTIPLICAND+1]
adc c
- ld [$ff9d], a
- ld a, [H_SAVEDNUMTOPRINT] ; $ff9c
+ ld [H_MULTIPLYBUFFER+2], a
+ ld a, [H_MULTIPLYBUFFER+1] ; $ff9c
ld c, a
- ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND)
+ ld a, [H_MULTIPLICAND] ; $ff96
adc c
- ld [H_SAVEDNUMTOPRINT], a ; $ff9c
- ld a, [$ff9b]
+ ld [H_MULTIPLYDBUFFER+1], a ; $ff9c
+ ld a, [H_MULTIPLYBUFFER]
ld c, a
- ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
+ ld a, [H_PRODUCT] ; $ff95
adc c
- ld [$ff9b], a
-.asm_37d77
+ ld [H_MULTIPLYBUFFER], a
+.smallMultiplier
dec b
- jr z, .asm_37d94
- ld a, [$ff98]
+ jr z, .done
+ ld a, [H_MULTIPLICAND]
sla a
- ld [$ff98], a
- ld a, [$ff97]
+ ld [H_MULTIPLICAND+2], a
+ ld a, [H_MULTIPLICAND+1]
rl a
- ld [$ff97], a
- ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND)
+ ld [H_MULTIPLICAND+1], a
+ ld a, [H_MULTIPLICAND] ; $ff96
rl a
- ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
- ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
+ ld [H_MULTIPLICAND], a ; $ff96
+ ld a, [H_PRODUCT] ; $ff95
rl a
- ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
- jr .asm_37d4f
-.asm_37d94
- ld a, [$ff9e]
- ld [$ff98], a
- ld a, [$ff9d]
- ld [$ff97], a
- ld a, [H_SAVEDNUMTOPRINT] ; $ff9c
- ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
- ld a, [$ff9b]
- ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
+ ld [H_PRODUCT], a ; $ff95
+ jr .multiplyLoop
+.done
+ ld a, [H_MULTIPLYBUFFER+3]
+ ld [H_PRODUCT+3], a
+ ld a, [H_MULTIPLYBUFFER+2]
+ ld [H_PRODUCT+2], a
+ ld a, [H_MULTIPLYBUFFER+1] ; $ff9c
+ ld [H_PRODUCT+1], a ; $ff96
+ ld [H_PRODUCT], a ; $ff95
ret
-_Divide: ; 37da5 (d:7da5)
+_Divide: ; f6672 (3d:6672)
xor a
- ld [$ff9a], a
- ld [$ff9b], a
- ld [H_SAVEDNUMTOPRINT], a ; $ff9c
- ld [$ff9d], a
- ld [$ff9e], a
+ ld [H_DIVIDEBUFFER], a ; ff9a
+ ld [H_DIVIDEBUFFER+1], a ; ff9b
+ ld [H_DIVIDEBUFFER+2], a ; ff9c
+ ld [H_DIVIDEBUFFER+3], a ; ff9d
+ ld [H_DIVIDEBUFFER+4], a ; ff9e
ld a, $9
ld e, a
-.asm_37db3
- ld a, [$ff9a]
+.asm_f6680
+ ld a, [H_DIVIDEBUFFER]
ld c, a
- ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND)
+ ld a, [H_DIVIDEND+1] ; $ff96
sub c
ld d, a
- ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
+ ld a, [H_DIVISOR] ; $ff99
ld c, a
- ld a, [H_DIVIDEND] ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
+ ld a, [H_DIVIDEND] ; $ff95
sbc c
- jr c, .asm_37dce
- ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
+ jr c, .asm_f669b
+ ld [H_DIVIDEND], a ; $ff95
ld a, d
- ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
- ld a, [$ff9e]
+ ld [H_DIVIDEND+1], a ; $ff96
+ ld a, [H_DIVIDEBUFFER+4]
inc a
- ld [$ff9e], a
- jr .asm_37db3
-.asm_37dce
+ ld [H_DIVIDEBUFFER+4], a
+ jr .asm_f6680
+.asm_f669b
ld a, b
cp $1
- jr z, .asm_37e18
- ld a, [$ff9e]
+ jr z, .done
+ ld a, [H_DIVIDEBUFFER+4]
sla a
- ld [$ff9e], a
- ld a, [$ff9d]
+ ld [H_DIVIDEBUFFER+4], a
+ ld a, [H_DIVIDEBUFFER+3]
rl a
- ld [$ff9d], a
- ld a, [H_SAVEDNUMTOPRINT] ; $ff9c
+ ld [H_DIVIDEBUFFER+3], a
+ ld a, [H_DIVIDEBUFFER+2] ; $ff9c
rl a
- ld [H_SAVEDNUMTOPRINT], a ; $ff9c
- ld a, [$ff9b]
+ ld [H_DIVIDEBUFFER+2], a ; $ff9c
+ ld a, [H_DIVIDEBUFFER+1]
rl a
- ld [$ff9b], a
+ ld [H_DIVIDEBUFFER+1], a
dec e
- jr nz, .asm_37e04
+ jr nz, .asm_f66d1
ld a, $8
ld e, a
- ld a, [$ff9a]
- ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
+ ld a, [H_DIVIDEBUFFER]
+ ld [H_DIVISOR], a ; $ff99
xor a
- ld [$ff9a], a
- ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND)
- ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
- ld a, [$ff97]
- ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
- ld a, [$ff98]
- ld [$ff97], a
-.asm_37e04
+ ld [H_DIVIDEBUFFER], a
+ ld a, [H_DIVIDEND+1] ; $ff96
+ ld [H_DIVIDEND], a ; $ff95
+ ld a, [H_DIVIDEND+2]
+ ld [H_DIVIDEND+1], a ; $ff96
+ ld a, [H_DIVIDEND+3]
+ ld [H_DIVIDEND+2], a
+.asm_f66d1
ld a, e
cp $1
- jr nz, .asm_37e0a
+ jr nz, .asm_f66d7
dec b
-.asm_37e0a
- ld a, [H_REMAINDER] ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
+.asm_f66d7
+ ld a, [H_DIVIDEND+4] ; $ff99
srl a
- ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
- ld a, [$ff9a]
+ ld [H_REMAINDER], a ; $ff99
+ ld a, [H_DIVIDEBUFFER]
rr a
- ld [$ff9a], a
- jr .asm_37db3
-.asm_37e18
- ld a, [H_NUMTOPRINT] ; $ff96 (aliases: H_MULTIPLICAND)
- ld [H_REMAINDER], a ; $ff99 (aliases: H_DIVISOR, H_MULTIPLIER, H_POWEROFTEN)
- ld a, [$ff9e]
- ld [$ff98], a
- ld a, [$ff9d]
- ld [$ff97], a
- ld a, [H_SAVEDNUMTOPRINT] ; $ff9c
- ld [H_NUMTOPRINT], a ; $ff96 (aliases: H_MULTIPLICAND)
- ld a, [$ff9b]
- ld [H_DIVIDEND], a ; $ff95 (aliases: H_PRODUCT, H_PASTLEADINGZEROES, H_QUOTIENT)
+ ld [H_DIVIDEBUFFER], a
+ jr .asm_f6680
+.done
+ ld a, [H_DIVIDEND+1] ; $ff96
+ ld [H_REMAINDER], a ; $ff99
+ ld a, [H_DIVIDEBUFFER+4]
+ ld [H_QUOTIENT+3], a
+ ld a, [H_DIVIDEBUFFER+3]
+ ld [H_QUOTIENT+2], a
+ ld a, [H_DIVIDEBUFFER+2] ; $ff9c
+ ld [H_QUOTIENT+1], a ; $ff96
+ ld a, [H_DIVIDEBUFFER+1]
+ ld [H_QUOTIENT], a ; $ff95
ret
diff --git a/engine/predefs.asm b/engine/predefs.asm
index f6ecf018..30099dfe 100755
--- a/engine/predefs.asm
+++ b/engine/predefs.asm
@@ -1,4 +1,4 @@
-GetPredefPointer:
+GetPredefPointer: ; f67ed (3d:67ed)
; Store the contents of the register
; pairs (hl, de, bc) at wPredefRegisters.
; Then put the bank and address of predef
@@ -27,10 +27,10 @@ GetPredefPointer:
add a
add e
ld e,a
- jr nc,.next
+ jr nc,.nocarry
inc d
-.next
+.nocarry
add hl,de
ld d,h
ld e,l
@@ -49,7 +49,7 @@ GetPredefPointer:
ret
-PredefPointers:: ; 4fe79 (13:7e79)
+PredefPointers:: ; f681d (3d:681d)
; these are pointers to ASM routines.
; they appear to be used in overworld map scripts.
add_predef DrawPlayerHUDAndHPBar
diff --git a/hram.asm b/hram.asm
index 0054c218..c5e848ef 100644
--- a/hram.asm
+++ b/hram.asm
@@ -38,12 +38,17 @@ H_DIVISOR EQU $FF99 ; 1 byte
H_QUOTIENT EQU $FF95 ; 4 bytes
H_REMAINDER EQU $FF99 ; 1 byte
+H_DIVIDEBUFFER EQU $FF9A
+
+H_MULTIPLYBUFFER EQU $FF9B
+
; PrintNumber (big endian).
H_PASTLEADINGZEROES EQU $FF95 ; last char printed
H_NUMTOPRINT EQU $FF96 ; 3 bytes
H_POWEROFTEN EQU $FF99 ; 3 bytes
H_SAVEDNUMTOPRINT EQU $FF9C ; 3 bytes
+
hSerialReceivedNewData EQU $FFA9
; $01 = using external clock