diff options
author | luckytyphlosion <alan.rj.huang@gmail.com> | 2015-07-07 17:36:28 -0400 |
---|---|---|
committer | luckytyphlosion <alan.rj.huang@gmail.com> | 2015-07-07 17:36:28 -0400 |
commit | 4274e105f6739a92788f9b1fdba55526d7614f8a (patch) | |
tree | 0f0bda1c77a384b4255e724122ac3f6bf0af7202 | |
parent | 9c9fb882c70650b82f4e684d12a5f5cf03d18ae6 (diff) |
Bank3d addresses and fixes.
Also documentation of new super rod code and slight more documentation
of multiply_divide.asm
-rwxr-xr-x | data/super_rod.asm | 133 | ||||
-rw-r--r-- | engine/bank3d/main.asm | 43 | ||||
-rw-r--r-- | engine/battle/get_trainer_name.asm | 10 | ||||
-rwxr-xr-x | engine/give_pokemon.asm | 26 | ||||
-rwxr-xr-x | engine/items/items.asm | 2 | ||||
-rwxr-xr-x | engine/multiply_divide.asm | 196 | ||||
-rwxr-xr-x | engine/predefs.asm | 8 | ||||
-rw-r--r-- | hram.asm | 5 |
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 @@ -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 |