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 /engine | |
parent | 9c9fb882c70650b82f4e684d12a5f5cf03d18ae6 (diff) |
Bank3d addresses and fixes.
Also documentation of new super rod code and slight more documentation
of multiply_divide.asm
Diffstat (limited to 'engine')
-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 |
6 files changed, 140 insertions, 145 deletions
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 |