diff options
Diffstat (limited to 'engine')
182 files changed, 5295 insertions, 5715 deletions
diff --git a/engine/HoF_room_pc.asm b/engine/HoF_room_pc.asm index 51575a9d..4a811116 100755 --- a/engine/HoF_room_pc.asm +++ b/engine/HoF_room_pc.asm @@ -39,18 +39,18 @@ HallOfFamePC: jp Credits FadeInCreditsText: - ld a, $1 + ld a, 1 ld [H_AUTOBGTRANSFERENABLED], a ld hl, HoFGBPalettes ld b, 4 -.asm_f0f91 +.loop ld a, [hli] ld [rBGP], a call UpdateGBCPal_BGP ld c, 5 call DelayFrames dec b - jr nz, .asm_f0f91 + jr nz, .loop ret HoFGBPalettes: @@ -76,7 +76,7 @@ DisplayCreditsMon: call LoadScreenTilesFromBuffer2DisableBGTransfer ld hl, vBGMap0 call CreditsCopyTileMapToVRAM - ld a, %11111100 + ld a, %11111100 ; make the mon a black silhouette ld [rBGP], a call UpdateGBCPal_BGP ld hl, rLCDC @@ -100,14 +100,13 @@ DisplayCreditsMon: ret ScrollCreditsMonLeft: -.asm_f0fff ld a, b ld [hSCX], a add 8 ld b, a call DelayFrame dec c - jr nz, .asm_f0fff + jr nz, ScrollCreditsMonLeft ret GetNextCreditsMon: @@ -129,10 +128,10 @@ INCLUDE "data/credit_mons.asm" CreditsCopyTileMapToVRAM: ld a, l - ld [$ffbc], a + ld [H_AUTOBGTRANSFERDEST], a ld a, h - ld [$ffbd], a - ld a, $1 + ld [H_AUTOBGTRANSFERDEST + 1], a + ld a, 1 ld [H_AUTOBGTRANSFERENABLED], a jp Delay3 @@ -154,24 +153,24 @@ CreditsLoadFont: ret ZeroMemory: -.asm_f1071 +; zero bc bytes at hl ld [hl], 0 inc hl inc hl dec bc ld a, b or c - jr nz, .asm_f1071 + jr nz, ZeroMemory ret FillFourRowsWithBlack: - ld bc, 4 * SCREEN_WIDTH + ld bc, SCREEN_WIDTH * 4 ld a, $7e jp FillMemory FillMiddleOfScreenWithWhite: coord hl, 0, 4 - ld bc, 10 * SCREEN_WIDTH + ld bc, SCREEN_WIDTH * 10 ld a, " " jp FillMemory @@ -193,19 +192,19 @@ FillHalfOfScreenWithWhite: ld b, 10 ld c, 10 ld a, " " -.asm_f10a6 +.loop push bc push hl -.asm_f10a8 +.innerLoop ld [hli], a dec c - jr nz, .asm_f10a8 + jr nz, .innerLoop pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b - jr nz, .asm_f10a6 + jr nz, .loop ret Credits: ; Roll credits @@ -287,7 +286,7 @@ ShowTheEndGFX: call PlaceString jp FadeInCreditsText -TheEndTextString: ; 74229 (1d:4229) +TheEndTextString: ; "T H E E N D" db $60, " ", $62, " ", $64, " ", $64, " ", $66, " ", $68, "@" db $61, " ", $63, " ", $65, " ", $65, " ", $67, " ", $69, "@" @@ -322,4 +321,3 @@ INCLUDE "text/credits_text.asm" TheEndGfx: ; 7473e (1d:473e) (7473f on blue) INCBIN "gfx/theend.interleave.2bpp" TheEndGfxEnd: - diff --git a/engine/add_party_mon.asm b/engine/add_party_mon.asm index b20913dd..1aa6bd16 100644 --- a/engine/add_party_mon.asm +++ b/engine/add_party_mon.asm @@ -1,4 +1,4 @@ -_AddPartyMon: ; f161 (3:7161) +_AddPartyMon: ; Adds a new mon to the player's or enemy's party. ; [wMonDataLocation] is used in an unusual way in this function. ; If the lower nybble is 0, the mon is added to the player's party, else the enemy's. @@ -251,10 +251,10 @@ _AddPartyMon: ; f161 (3:7161) scf ret -LoadMovePPs: ; f2f9 (3:72f9) +LoadMovePPs: call GetPredefRegisters ; fallthrough -AddPartyMon_WriteMovePP: ; f2fc (3:72fc) +AddPartyMon_WriteMovePP: ld b, NUM_MOVES .pploop ld a, [hli] ; read move ID @@ -283,7 +283,7 @@ AddPartyMon_WriteMovePP: ; f2fc (3:72fc) ; adds enemy mon [wcf91] (at position [wWhichPokemon] in enemy list) to own party ; used in the cable club trade center -_AddEnemyMonToPlayerParty: ; f323 (3:7323) +_AddEnemyMonToPlayerParty: ld hl, wPartyCount ld a, [hl] cp PARTY_LENGTH @@ -342,4 +342,4 @@ _AddEnemyMonToPlayerParty: ; f323 (3:7323) ld hl, wPokedexSeen call FlagAction ; add to seen pokemon and a - ret ; return success
\ No newline at end of file + ret ; return success diff --git a/engine/animated_objects_3e.asm b/engine/animated_objects_3e.asm index 9d21ff8b..63a94350 100755 --- a/engine/animated_objects_3e.asm +++ b/engine/animated_objects_3e.asm @@ -1,4 +1,4 @@ -ClearObjectAnimationBuffers: ; fbb5a (3e:7b5a) +ClearObjectAnimationBuffers: ld hl, wAnimatedObjectsData ld bc, wAnimatedObjectsDataEnd - wAnimatedObjectsData xor a diff --git a/engine/bank3c.asm b/engine/bank3c.asm index 1f3c967f..7ae059e7 100644 --- a/engine/bank3c.asm +++ b/engine/bank3c.asm @@ -1,7 +1,7 @@ INCLUDE "engine/pikachu_pcm.asm" INCLUDE "engine/overworld/advance_player_sprite.asm" -ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274) +ResetStatusAndHalveMoneyOnBlackout: ; Reset player status on blackout. xor a ld [wd435], a @@ -50,31 +50,31 @@ ResetStatusAndHalveMoneyOnBlackout:: ; f0274 (3c:4274) ld [wJoyIgnore], a predef_jump HealParty -Func_f02da:: ; f02da (3c:42da) +SetMapSpecificScriptFlagsOnMapReload: ld a, [wCurMap] cp VERMILION_GYM ; ??? new thing about verm gym? - jr z, .asm_f02ee + jr z, .verm_gym ld c, a - ld hl, Pointer_f02fa -.asm_f02e5 + ld hl, .MapList +.search_loop ld a, [hli] cp c - jr z, .asm_f02f4 + jr z, .in_list cp a, $ff - jr nz, .asm_f02e5 + jr nz, .search_loop ret -.asm_f02ee +.verm_gym ld hl, wCurrentMapScriptFlags set 6, [hl] ret -.asm_f02f4 +.in_list ld hl, wCurrentMapScriptFlags set 5, [hl] ret -Pointer_f02fa:: ; f02fa (3c:42fa) +.MapList ; f02fa (3c:42fa) db SILPH_CO_2F db SILPH_CO_3F db SILPH_CO_4F @@ -102,18 +102,18 @@ Pointer_f02fa:: ; f02fa (3c:42fa) db AGATHAS_ROOM db $ff -BeachHouse_GFX:: ; f0314 (3c:4314) +BeachHouse_GFX: INCBIN "gfx/tilesets/beachhouse.2bpp" -BeachHouse_Block:: ; f0914 (3c:4914) +BeachHouse_Block: INCBIN "gfx/blocksets/beachhouse.bst" -Func_f0a54:: ; f0a54 (3c:4a54) +Func_f0a54: ret -Func_f0a55:: ; f0a55 (3c:4a55) +LoadUnusedBluesHouseMissableObjectData: ; referenced in an unused function - ld hl, Pointer_f0a76 ; 3c:4a76 + ld hl, .MissableObjectsMaps .loop ld a, [hli] cp a, $ff @@ -121,13 +121,13 @@ Func_f0a55:: ; f0a55 (3c:4a55) ld b, a ld a, [wCurMap] cp b - jr z, .asm_f0a68 + jr z, .found inc hl inc hl inc hl jr .loop -.asm_f0a68 +.found ld a, [hli] ld c, a ld b, 0 @@ -138,16 +138,16 @@ Func_f0a55:: ; f0a55 (3c:4a55) call CopyData ret -Pointer_f0a76:: ; f0a76 (3c:4a76) - dbbw BLUES_HOUSE, Pointer_f0a7bEnd - Pointer_f0a7b, Pointer_f0a7b +.MissableObjectsMaps: + dbbw BLUES_HOUSE, .End - .Start, .Start db $ff -Pointer_f0a7b: +.Start: db 1, HS_DAISY_SITTING_COPY db 2, HS_DAISY_WALKING_COPY db 3, HS_TOWN_MAP_COPY db $ff -Pointer_f0a7bEnd: +.End: TryApplyPikachuMovementData: ; f0a82 ld a, [wd472] @@ -177,13 +177,13 @@ TryApplyPikachuMovementData: ; f0a82 callab RefreshPikachuFollow ret -Pic_f0abf: ; f0abf (3c:4abf) +Pic_f0abf: INCBIN "gfx/pikachu/unknown_f0abf.pic" -GFX_f0b64: ; f0b64 (3c:4b64) +GFX_f0b64: INCBIN "gfx/pikachu/unknown_f0b64.2bpp" -Pic_f0cf4: ; f0cf4 (3c:4cf4) +Pic_f0cf4: INCBIN "gfx/pikachu/unknown_f0cf4.pic" -GFX_f0d82: ; f0d82 (3c:4d82) +GFX_f0d82: INCBIN "gfx/pikachu/unknown_f0d82.2bpp" PokecenterChanseyText: @@ -209,46 +209,19 @@ INCLUDE "scripts/oakslab2.asm" INCLUDE "scripts/school2.asm" INCLUDE "scripts/museum1f2.asm" INCLUDE "scripts/pewterpokecenter2.asm" - -Func_f1e22: - ld hl, PikachuMovementData_f1e2b - ld b, SPRITE_FACING_RIGHT - call TryApplyPikachuMovementData - ret - -PikachuMovementData_f1e2b: - db $00 - db $1d - db $1f - db $38 - db $3f - +INCLUDE "scripts/pokemontower2_2.asm" INCLUDE "scripts/celadonmart3_2.asm" INCLUDE "scripts/celadonmansion1_2.asm" INCLUDE "scripts/celadonmansion3_2.asm" - -Func_f1f23: - ld hl, PikachuMovementData_f1f2c - ld b, SPRITE_FACING_DOWN - call TryApplyPikachuMovementData - ret - -PikachuMovementData_f1f2c: - db $00 - db $20 - db $1e - db $35 - db $3f - +INCLUDE "scripts/celadongamecorner2.asm" INCLUDE "scripts/celadondiner2.asm" INCLUDE "scripts/safarizoneentrance2.asm" INCLUDE "scripts/cinnabargym3.asm" - INCLUDE "scripts/mtmoonpokecenter2.asm" INCLUDE "data/mapHeaders/beach_house.asm" INCLUDE "scripts/beach_house.asm" -BeachHouseBlockdata: ; f2388 (3c:6388) +BeachHouseBlockdata: INCBIN "maps/beach_house.blk" INCLUDE "data/mapObjects/beach_house.asm" @@ -259,111 +232,4 @@ INCLUDE "scripts/ssanne9_2.asm" INCLUDE "scripts/silphco11_2.asm" INCLUDE "engine/overworld/hidden_objects.asm" - -Func_f2cd0: - ld d, 0 - ld hl, Jumptable_f2ce1 - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - call JumpToAddress - ld e, a - ld d, 0 - ret - -Jumptable_f2ce1: - dw Func_f2ceb - dw Func_f2ceb - dw Func_f2cee - dw Func_f2cf4 - dw Func_f2d06 - -Func_f2ceb: - ld a, 0 - ret - -Func_f2cee: - call Random - and $1 - ret - -Func_f2cf4: ; should return to a, instead returns to b - call Random - swap a - cp 1 * $ff / 3 - ld b, 0 - ret c - cp 2 * $ff / 3 - ld b, 1 - ret c - ld b, 2 - ret - -Func_f2d06: - call Random - and $3 - ret - -Func_f2d0c: - ld hl, GymTrashCans3c - ld a, [wGymTrashCanIndex] - ld c, a - ld b, 0 - ld a, 9 - call AddNTimes - call AddNTimes ; ???? - ld a, [hli] - ld [hGymTrashCanRandNumMask], a - ld e, a - push hl - call Func_f2cd0 - pop hl - add hl, de - add hl, de - ld a, [hli] - ld [wSecondLockTrashCanIndex], a - ld a, [hl] - ld [wSecondLockTrashCanIndex + 1], a - ret - -GymTrashCans3c: ; f2d31 (3c:6d31) -; First byte: number of trashcan entries -; Following four byte pairs: indices for the second trash can. -; BUG: Rows that have 3 trashcan entries are sampled incorrectly. -; The sampling occurs by taking a random number and seeing which -; third of the range 0-255 the number falls in. However, it returns -; that value to the wrong register, so the result is never used. -; Instead of using an offset in [0,1,2], the offset is instead -; in the full range 0-255. This results in truly random behavior. - db 4 - db 1,3, 3,1, 1,-1, 3,-1 - db 3 - db 0,2, 2,4, 4,0, -1,-1 - db 4 - db 1,5, 5,1, 1,-1, 5,-1 - db 3 - db 0,4, 4,6, 6,0, -1,-1 - db 4 - db 1,3, 3,1, 5,5, 7,7 - db 3 - db 2,4, 4,8, 8,2, -1,-1 - db 3 - db 3,7, 7,9, 9,3, -1,-1 - db 4 - db 4,8, 6,10, 8,4, 10,6 - db 3 - db 5,7, 7,11, 11,5, -1,-1 - db 3 - db 6,10, 10,12, 12,6, -1,-1 - db 4 - db 7,9, 9,7, 11,13, 13,11 - db 3 - db 8,10, 10,14, 14,8, -1,-1 - db 4 - db 9,13, 13,9, 9,-1, 13,-1 - db 3 - db 10,12, 12,14, 14,10, -1,-1 - db 4 - db 11,13, 13,11, 11,-1, 13,-1 +INCLUDE "engine/vermilion_gym_trash_cans.asm" diff --git a/engine/bank3d.asm b/engine/bank3d.asm index fbf816b6..6efff351 100644 --- a/engine/bank3d.asm +++ b/engine/bank3d.asm @@ -3,7 +3,7 @@ INCLUDE "engine/battle/link_battle_versus_text.asm" INCLUDE "engine/battle/unused_stats_functions.asm" INCLUDE "engine/battle/scroll_draw_trainer_pic.asm" -StarterPikachuBattleEntranceAnimation: ; f429f (3d:429f) +StarterPikachuBattleEntranceAnimation: coord hl, 0, 5 ld c, 0 .loop1 @@ -29,7 +29,7 @@ StarterPikachuBattleEntranceAnimation: ; f429f (3d:429f) inc hl jr .loop1 -.PlaceColumn: ; f42c2 (3d:f42c2) +.PlaceColumn: push hl push de push bc @@ -53,7 +53,7 @@ StarterPikachuBattleEntranceAnimation: ; f429f (3d:429f) INCLUDE "engine/battle/decrement_pp.asm" -ModifyPikachuHappiness:: ; f430a (3d:430a) +ModifyPikachuHappiness:: ld a, d cp PIKAHAPPY_GYMLEADER jr z, .checkanywhereinparty @@ -142,7 +142,7 @@ ModifyPikachuHappiness:: ; f430a (3d:430a) .done ret -HappinessChangeTable: ; f4385 (3d:4385) +HappinessChangeTable: ; Increase db 5, 3, 2 ; Gained a level db 5, 3, 2 ; HP restore @@ -157,7 +157,7 @@ HappinessChangeTable: ; f4385 (3d:4385) db -5, -5, -10 ; Unknown (d = 10) db -10, -10, -20 ; Unknown (d = 11) -PikachuMoods: ; f43a6 (3d:43a6) +PikachuMoods: ; Increase db $8a ; Gained a level db $83 ; HP restore @@ -176,7 +176,7 @@ RedPicBack: INCBIN "pic/trainer/redb.pic" OldManPic: INCBIN "pic/trainer/oldman.pic" ProfOakPicBack: INCBIN "pic/ytrainer/prof.oakb.pic" -LoadYellowTitleScreenGFX: ; f453f (3d:453f) +LoadYellowTitleScreenGFX: ld hl, PokemonLogoGraphics ld de, vChars2 ld bc, 115 * $10 @@ -199,14 +199,14 @@ LoadYellowTitleScreenGFX: ; f453f (3d:453f) call FarCopyData ret -TitleScreen_PlacePokemonLogo: ; f4578 (3d:4578) +TitleScreen_PlacePokemonLogo: coord hl, 2, 1 ld de, TitleScreenPokemonLogoTilemap lb bc, 7, 16 call Bank3D_CopyBox ret -TitleScreen_PlacePikaSpeechBubble: ; f4585 (3d:4585) +TitleScreen_PlacePikaSpeechBubble: coord hl, 6, 4 ld de, TitleScreenPikaBubbleTilemap lb bc, 4, 7 @@ -217,7 +217,7 @@ TitleScreen_PlacePikaSpeechBubble: ; f4585 (3d:4585) ld [hl], $65 ret -TitleScreen_PlacePikachu: ; f459a (3d:459a) +TitleScreen_PlacePikachu: coord hl, 4, 8 ld de, TitleScreenPikachuTilemap lb bc, 9, 12 @@ -236,7 +236,7 @@ TitleScreen_PlacePikachu: ; f459a (3d:459a) call CopyData ret -TitleScreenPikachuEyesOAMData: ; f45c7 (3d:45c7) +TitleScreenPikachuEyesOAMData: db $60, $40, $f1, $22 db $60, $48, $f0, $22 db $68, $40, $f3, $22 @@ -246,7 +246,7 @@ TitleScreenPikachuEyesOAMData: ; f45c7 (3d:45c7) db $68, $60, $f2, $02 db $68, $68, $f3, $02 -Bank3D_CopyBox: ; f45e7 (3d:45e7) +Bank3D_CopyBox: ; copy cxb (xy) screen area from de to hl .row push bc @@ -265,7 +265,7 @@ Bank3D_CopyBox: ; f45e7 (3d:45e7) jr nz, .row ret -TitleScreenPokemonLogoTilemap: ; f45f9 (3d:45f9) +TitleScreenPokemonLogoTilemap: ; 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 @@ -275,18 +275,18 @@ TitleScreenPokemonLogoTilemap: ; f45f9 (3d:45f9) db $f4, $41, $42, $43, $44, $45, $46, $47, $48, $f4, $4a, $4b, $4c, $4d, $4e, $4f db $f4, $6a, $6b, $6c, $6d, $f4, $f4, $f4, $f4, $f4, $f4, $6e, $6f, $70, $71, $f4 -Pointer_f4669: ; f4669 (3d:4669) +Pointer_f4669: ; Unreferenced db $47, $48, $49, $4a, $4b, $4c, $4d, $4e, $4f, $5f -TitleScreenPikaBubbleTilemap: ; f4673 (3d:4673) +TitleScreenPikaBubbleTilemap: ; 7x4 (xy) db $24, $25, $66, $67, $68, $69, $2a db $50, $51, $52, $53, $54, $55, $56 db $57, $58, $59, $5a, $5b, $5c, $5d db $6d, $5e, $5f, $60, $61, $62, $63 -TitleScreenPikachuTilemap: ; f468f (3d:468f) +TitleScreenPikachuTilemap: ; 12x9 (xy) db $80, $81, $82, $83, $00, $00, $00, $00, $84, $85, $86, $87 db $88, $89, $8a, $8b, $8c, $8d, $8d, $8e, $8f, $8a, $90, $91 @@ -306,11 +306,11 @@ YellowLogoGraphicsEnd: INCLUDE "engine/menu/link_menu.asm" -HandleMenuInputDouble: ; f5a40 (3d:5a40) +HandleMenuInputDouble: xor a ld [wPartyMenuAnimMonEnabled], a -HandleMenuInputPokemonSelectionDouble: ; f5a44 (3d:5a44) +HandleMenuInputPokemonSelectionDouble: ld a, [H_DOWNARROWBLINKCNT1] push af ld a, [H_DOWNARROWBLINKCNT2] @@ -380,7 +380,7 @@ HandleMenuInputPokemonSelectionDouble: ; f5a44 (3d:5a44) ld a, [hJoy5] ret -.UpdateCursorTile: ; f5ab0 (3d:5ab0) +.UpdateCursorTile: ld a, [wTopMenuItemY] and a jr z, .asm_f5ac0 @@ -436,7 +436,7 @@ HandleMenuInputPokemonSelectionDouble: ; f5a44 (3d:5a44) ld [wLastMenuItem], a ret -PrintStrengthTxt: ; f5b06 (3d:5b06) +PrintStrengthTxt: ld hl, wd728 set 0, [hl] ld hl, Text_f5b17 @@ -444,7 +444,7 @@ PrintStrengthTxt: ; f5b06 (3d:5b06) ld hl, Text_f5b28 jp PrintText -Text_f5b17: ; f5b17 (3d:5b17) +Text_f5b17: TX_FAR _UsedStrengthText ; 2d:417e TX_ASM ld a, [wcf91] @@ -452,11 +452,11 @@ Text_f5b17: ; f5b17 (3d:5b17) call Delay3 jp TextScriptEnd -Text_f5b28: ; f5b28 (3d:5b28) +Text_f5b28: TX_FAR _CanMoveBouldersText ; 2d:4193 db "@" -IsSurfingAllowed: ; f5b2d (3d:5b2d) +IsSurfingAllowed: ; Returns whether surfing is allowed in bit 1 of wd728. ; Surfing isn't allowed on the Cycling Road or in the lowest level of the ; Seafoam Islands before the current has been slowed with boulders. @@ -483,19 +483,19 @@ IsSurfingAllowed: ; f5b2d (3d:5b2d) ld hl, CyclingIsFunText jp PrintText -CoordsData_f5b64: ; f5b64 (3d:5b64) +CoordsData_f5b64: db 11, 07 db $ff -CurrentTooFastText: ; f5b67 (3d:5b67) +CurrentTooFastText: TX_FAR _CurrentTooFastText ; 2d:41ab db "@" -CyclingIsFunText: ; f5b6c (3d:5b6c) +CyclingIsFunText: TX_FAR _CyclingIsFunText ; 2d:41ca db "@" -AddItemToInventory_: ; f5b70 (3d:5b70) +AddItemToInventory_: ld a, [wItemQuantity] ; a = item quantity push af push bc @@ -589,7 +589,7 @@ AddItemToInventory_: ; f5b70 (3d:5b70) ; hl = address of inventory (either wNumBagItems or wNumBoxItems) ; [wWhichPokemon] = index (within the inventory) of the item to remove ; [wItemQuantity] = quantity to remove -RemoveItemFromInventory_: ; f5be1 (3d:5be1) +RemoveItemFromInventory_: push hl inc hl ld a, [wWhichPokemon] ; index (within the inventory) of the item being removed @@ -647,7 +647,7 @@ BlankLeaderNames: INCBIN "gfx/blank_leader_names.2bpp" CircleTile: INCBIN "gfx/circle_tile.2bpp" BadgeNumbersTileGraphics: INCBIN "gfx/badge_numbers.2bpp" -ReadSuperRodData: ; f5ea4 (3d:5ea4) +ReadSuperRodData: ld a, [wCurMap] ld c, a ld hl, FishingSlots @@ -667,7 +667,7 @@ ReadSuperRodData: ; f5ea4 (3d:5ea4) ld de, $0 ret -GenerateRandomFishingEncounter: ; f5ec1 (3d:5ec1) +GenerateRandomFishingEncounter: call Random cp $66 jr c, .asm_f5ed6 @@ -694,4 +694,4 @@ INCLUDE "engine/multiply_divide.asm" INCLUDE "engine/give_pokemon.asm" INCLUDE "engine/battle/get_trainer_name.asm" INCLUDE "engine/random.asm" -INCLUDE "engine/predefs.asm"
\ No newline at end of file +INCLUDE "engine/predefs.asm" diff --git a/engine/battle/animations.asm b/engine/battle/animations.asm index 4f7cd2c8..bfbaa180 100755 --- a/engine/battle/animations.asm +++ b/engine/battle/animations.asm @@ -1,53 +1,53 @@ ; Draws a "frame block". Frame blocks are blocks of tiles that are put ; together to form frames in battle animations. -DrawFrameBlock: ; 78000 (1e:4000) - ld l,c - ld h,b - ld a,[hli] - ld [wNumFBTiles],a - ld a,[wFBDestAddr + 1] - ld e,a - ld a,[wFBDestAddr] - ld d,a +DrawFrameBlock: + ld l, c + ld h, b + ld a, [hli] + ld [wNumFBTiles], a + ld a, [wFBDestAddr + 1] + ld e, a + ld a, [wFBDestAddr] + ld d, a xor a - ld [wFBTileCounter],a ; loop counter + ld [wFBTileCounter], a ; loop counter .loop - ld a,[wFBTileCounter] + ld a, [wFBTileCounter] inc a - ld [wFBTileCounter],a + ld [wFBTileCounter], a ld a, $2 ld [wdef5], a - ld a,[wSubAnimTransform] + ld a, [wSubAnimTransform] dec a - jr z,.flipHorizontalAndVertical ; 1 + jr z, .flipHorizontalAndVertical ; 1 dec a - jp z,.flipHorizontalTranslateDown ; 2 + jp z, .flipHorizontalTranslateDown ; 2 dec a - jr z,.flipBaseCoords ; 3 + jr z, .flipBaseCoords ; 3 .noTransformation - ld a,[wBaseCoordY] + ld a, [wBaseCoordY] add [hl] - ld [de],a ; store Y + ld [de], a ; store Y inc hl inc de - ld a,[wBaseCoordX] + ld a, [wBaseCoordX] jr .finishCopying .flipBaseCoords - ld a,[wBaseCoordY] - ld b,a - ld a,136 + ld a, [wBaseCoordY] + ld b, a + ld a, 136 sub b ; flip Y base coordinate add [hl] ; Y offset - ld [de],a ; store Y + ld [de], a ; store Y inc hl inc de - ld a,[wBaseCoordX] - ld b,a - ld a,168 + ld a, [wBaseCoordX] + ld b, a + ld a, 168 sub b ; flip X base coordinate .finishCopying ; finish copying values to OAM (when [wSubAnimTransform] not 1 or 2) add [hl] ; X offset - ld [de],a ; store X + ld [de], a ; store X cp 88 jr c, .asm_78056 ld a, [wdef5] @@ -56,32 +56,32 @@ DrawFrameBlock: ; 78000 (1e:4000) .asm_78056 inc hl inc de - ld a,[hli] - add a,$31 ; base tile ID for battle animations - ld [de],a ; store tile ID + ld a, [hli] + add a, $31 ; base tile ID for battle animations + ld [de], a ; store tile ID inc de - ld a,[hli] + ld a, [hli] ld b, a ld a, [wdef5] or b - ld [de],a ; store flags + ld [de], a ; store flags inc de jp .nextTile .flipHorizontalAndVertical - ld a,[wBaseCoordY] + ld a, [wBaseCoordY] add [hl] ; Y offset - ld b,a - ld a,136 + ld b, a + ld a, 136 sub b ; flip Y coordinate - ld [de],a ; store Y + ld [de], a ; store Y inc hl inc de - ld a,[wBaseCoordX] + ld a, [wBaseCoordX] add [hl] ; X offset - ld b,a - ld a,168 + ld b, a + ld a, 168 sub b ; flip X coordinate - ld [de],a ; store X + ld [de], a ; store X cp 88 jr c, .asm_78087 ld a, [wdef5] @@ -90,41 +90,41 @@ DrawFrameBlock: ; 78000 (1e:4000) .asm_78087 inc hl inc de - ld a,[hli] - add a,$31 ; base tile ID for battle animations - ld [de],a ; store tile ID + ld a, [hli] + add a, $31 ; base tile ID for battle animations + ld [de], a ; store tile ID inc de ; toggle horizontal and vertical flip - ld a,[hli] ; flags + ld a, [hli] ; flags and a - ld b,OAM_VFLIP | OAM_HFLIP - jr z,.storeFlags1 - cp a,OAM_HFLIP - ld b,OAM_VFLIP - jr z,.storeFlags1 - cp a,OAM_VFLIP - ld b,OAM_HFLIP - jr z,.storeFlags1 - ld b,0 + ld b, OAM_VFLIP | OAM_HFLIP + jr z, .storeFlags1 + cp a, OAM_HFLIP + ld b, OAM_VFLIP + jr z, .storeFlags1 + cp a, OAM_VFLIP + ld b, OAM_HFLIP + jr z, .storeFlags1 + ld b, 0 .storeFlags1 ld a, [wdef5] or b - ld [de],a + ld [de], a inc de jp .nextTile .flipHorizontalTranslateDown - ld a,[wBaseCoordY] + ld a, [wBaseCoordY] add [hl] - add a,40 ; translate Y coordinate downwards - ld [de],a ; store Y + add a, 40 ; translate Y coordinate downwards + ld [de], a ; store Y inc hl inc de - ld a,[wBaseCoordX] + ld a, [wBaseCoordX] add [hl] - ld b,a - ld a,168 + ld b, a + ld a, 168 sub b ; flip X coordinate - ld [de],a ; store X + ld [de], a ; store X cp 88 jr c, .asm_780c8 ld a, [wdef5] @@ -133,97 +133,97 @@ DrawFrameBlock: ; 78000 (1e:4000) .asm_780c8 inc hl inc de - ld a,[hli] - add a,$31 ; base tile ID for battle animations - ld [de],a ; store tile ID + ld a, [hli] + add a, $31 ; base tile ID for battle animations + ld [de], a ; store tile ID inc de - ld a,[hli] - bit 5,a ; is horizontal flip enabled? - jr nz,.disableHorizontalFlip + ld a, [hli] + bit 5, a ; is horizontal flip enabled? + jr nz, .disableHorizontalFlip .enableHorizontalFlip - set 5,a + set 5, a jr .storeFlags2 .disableHorizontalFlip - res 5,a + res 5, a .storeFlags2 ld b, a ld a, [wdef5] or b - ld [de],a + ld [de], a inc de .nextTile - ld a,[wFBTileCounter] - ld c,a - ld a,[wNumFBTiles] + ld a, [wFBTileCounter] + ld c, a + ld a, [wNumFBTiles] cp c - jp nz,.loop ; go back up if there are more tiles to draw + jp nz, .loop ; go back up if there are more tiles to draw .afterDrawingTiles - ld a,[wFBMode] - cp a,2 - jr z,.advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer - ld a,[wSubAnimFrameDelay] - ld c,a + ld a, [wFBMode] + cp a, 2 + jr z, .advanceFrameBlockDestAddr; skip delay and don't clean OAM buffer + ld a, [wSubAnimFrameDelay] + ld c, a call DelayFrames - ld a,[wFBMode] - cp a,3 - jr z,.advanceFrameBlockDestAddr ; skip cleaning OAM buffer - cp a,4 - jr z,.done ; skip cleaning OAM buffer and don't advance the frame block destination address - ld a,[wAnimationID] - cp a,GROWL - jr z,.resetFrameBlockDestAddr + ld a, [wFBMode] + cp a, 3 + jr z, .advanceFrameBlockDestAddr ; skip cleaning OAM buffer + cp a, 4 + jr z, .done ; skip cleaning OAM buffer and don't advance the frame block destination address + ld a, [wAnimationID] + cp a, GROWL + jr z, .resetFrameBlockDestAddr call AnimationCleanOAM .resetFrameBlockDestAddr - ld hl,wOAMBuffer ; OAM buffer - ld a,l - ld [wFBDestAddr + 1],a - ld a,h - ld [wFBDestAddr],a ; set destination address to beginning of OAM buffer + ld hl, wOAMBuffer ; OAM buffer + ld a, l + ld [wFBDestAddr + 1], a + ld a, h + ld [wFBDestAddr], a ; set destination address to beginning of OAM buffer ret .advanceFrameBlockDestAddr - ld a,e - ld [wFBDestAddr + 1],a - ld a,d - ld [wFBDestAddr],a + ld a, e + ld [wFBDestAddr + 1], a + ld a, d + ld [wFBDestAddr], a .done ret -PlayAnimation: ; 78124 (1e:4124) +PlayAnimation: xor a - ld [$FF8B],a ; it looks like nothing reads this - ld [wSubAnimTransform],a - ld a,[wAnimationID] ; get animation number + ld [$FF8B], a ; it looks like nothing reads this + ld [wSubAnimTransform], a + ld a, [wAnimationID] ; get animation number dec a - ld l,a - ld h,0 - add hl,hl - ld de,AttackAnimationPointers ; animation command stream pointers - add hl,de - ld a,[hli] - ld h,[hl] - ld l,a + ld l, a + ld h, 0 + add hl, hl + ld de, AttackAnimationPointers ; animation command stream pointers + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a .animationLoop - ld a,[hli] - cp a,$FF - jr z,.AnimationOver - cp a,$C0 ; is this subanimation or a special effect? - jr c,.playSubanimation + ld a, [hli] + cp a, $FF + jr z, .AnimationOver + cp a, $C0 ; is this subanimation or a special effect? + jr c, .playSubanimation .doSpecialEffect - ld c,a - ld de,SpecialEffectPointers + ld c, a + ld de, SpecialEffectPointers .searchSpecialEffectTableLoop - ld a,[de] + ld a, [de] cp c - jr z,.foundMatch + jr z, .foundMatch inc de inc de inc de jr .searchSpecialEffectTableLoop .foundMatch - ld a,[hli] - cp a,$FF ; is there a sound to play? - jr z,.skipPlayingSound - ld [wAnimSoundID],a ; store sound + ld a, [hli] + cp a, $FF ; is there a sound to play? + jr z, .skipPlayingSound + ld [wAnimSoundID], a ; store sound push hl push de call GetMoveSound @@ -233,51 +233,51 @@ PlayAnimation: ; 78124 (1e:4124) .skipPlayingSound push hl inc de - ld a,[de] - ld l,a + ld a, [de] + ld l, a inc de - ld a,[de] - ld h,a - ld de,.nextAnimationCommand + ld a, [de] + ld h, a + ld de, .nextAnimationCommand push de jp [hl] ; jump to special effect function .playSubanimation - ld c,a - and a,%00111111 - ld [wSubAnimFrameDelay],a + ld c, a + and a, %00111111 + ld [wSubAnimFrameDelay], a xor a sla c rla sla c rla - ld [wWhichBattleAnimTileset],a - ld a,[hli] ; sound - ld [wAnimSoundID],a ; store sound - ld a,[hli] ; subanimation ID - ld c,l - ld b,h - ld l,a - ld h,0 - add hl,hl - ld de,SubanimationPointers - add hl,de - ld a,l - ld [wSubAnimAddrPtr],a - ld a,h - ld [wSubAnimAddrPtr + 1],a - ld l,c - ld h,b + ld [wWhichBattleAnimTileset], a + ld a, [hli] ; sound + ld [wAnimSoundID], a ; store sound + ld a, [hli] ; subanimation ID + ld c, l + ld b, h + ld l, a + ld h, 0 + add hl, hl + ld de, SubanimationPointers + add hl, de + ld a, l + ld [wSubAnimAddrPtr], a + ld a, h + ld [wSubAnimAddrPtr + 1], a + ld l, c + ld h, b push hl - ld a,[rOBP0] + ld a, [rOBP0] push af - ld a,[wAnimPalette] - ld [rOBP0],a + ld a, [wAnimPalette] + ld [rOBP0], a call UpdateGBCPal_OBP0 call LoadAnimationTileset call LoadSubanimation call PlaySubanimation pop af - ld [rOBP0],a + ld [rOBP0], a call UpdateGBCPal_OBP0 .nextAnimationCommand pop hl @@ -285,23 +285,23 @@ PlayAnimation: ; 78124 (1e:4124) .AnimationOver ; 417B ret -LoadSubanimation: ; 781b5 (1e:41b5) - ld a,[wSubAnimAddrPtr + 1] - ld h,a - ld a,[wSubAnimAddrPtr] - ld l,a - ld a,[hli] - ld e,a - ld a,[hl] - ld d,a ; de = address of subanimation - ld a,[de] - ld b,a - and a,31 - ld [wSubAnimCounter],a ; number of frame blocks - ld a,b - and a,%11100000 - cp a,5 << 5 ; is subanimation type 5? - jr nz,.isNotType5 +LoadSubanimation: + ld a, [wSubAnimAddrPtr + 1] + ld h, a + ld a, [wSubAnimAddrPtr] + ld l, a + ld a, [hli] + ld e, a + ld a, [hl] + ld d, a ; de = address of subanimation + ld a, [de] + ld b, a + and a, 31 + ld [wSubAnimCounter], a ; number of frame blocks + ld a, b + and a, %11100000 + cp a, 5 << 5 ; is subanimation type 5? + jr nz, .isNotType5 .isType5 call GetSubanimationTransform2 jr .saveTransformation @@ -311,35 +311,35 @@ LoadSubanimation: ; 781b5 (1e:41b5) ; place the upper 3 bits of a into bits 0-2 of a before storing srl a swap a - ld [wSubAnimTransform],a - cp a,4 ; is the animation reversed? - ld hl,0 - jr nz,.storeSubentryAddr + ld [wSubAnimTransform], a + cp a, 4 ; is the animation reversed? + ld hl, 0 + jr nz, .storeSubentryAddr ; if the animation is reversed, then place the initial subentry address at the end of the list of subentries - ld a,[wSubAnimCounter] + ld a, [wSubAnimCounter] dec a - ld bc,3 + ld bc, 3 .loop - add hl,bc + add hl, bc dec a - jr nz,.loop + jr nz, .loop .storeSubentryAddr inc de - add hl,de - ld a,l - ld [wSubAnimSubEntryAddr],a - ld a,h - ld [wSubAnimSubEntryAddr + 1],a + add hl, de + ld a, l + ld [wSubAnimSubEntryAddr], a + ld a, h + ld [wSubAnimSubEntryAddr + 1], a ret ; called if the subanimation type is not 5 ; sets the transform to 0 (i.e. no transform) if it's the player's turn ; sets the transform to the subanimation type if it's the enemy's turn -GetSubanimationTransform1: ; 781fb (1e:41fb) - ld b,a - ld a,[H_WHOSETURN] +GetSubanimationTransform1: + ld b, a + ld a, [H_WHOSETURN] and a - ld a,b + ld a, b ret nz xor a ret @@ -347,36 +347,36 @@ GetSubanimationTransform1: ; 781fb (1e:41fb) ; called if the subanimation type is 5 ; sets the transform to 2 (i.e. horizontal and vertical flip) if it's the player's turn ; sets the transform to 0 (i.e. no transform) if it's the enemy's turn -GetSubanimationTransform2: ; 78203 (1e:4203) - ld a,[H_WHOSETURN] +GetSubanimationTransform2: + ld a, [H_WHOSETURN] and a - ld a,2 << 5 + ld a, 2 << 5 ret z xor a ret ; loads tile patterns for battle animations -LoadAnimationTileset: ; 7820b (1e:420b) - ld a,[wWhichBattleAnimTileset] +LoadAnimationTileset: + ld a, [wWhichBattleAnimTileset] add a add a - ld hl,AnimationTilesetPointers - ld e,a - ld d,0 - add hl,de - ld a,[hli] - ld [wTempTilesetNumTiles],a ; number of tiles - ld a,[hli] - ld e,a - ld a,[hl] - ld d,a ; de = address of tileset - ld hl,vSprites + $310 + ld hl, AnimationTilesetPointers + ld e, a + ld d, 0 + add hl, de + ld a, [hli] + ld [wTempTilesetNumTiles], a ; number of tiles + ld a, [hli] + ld e, a + ld a, [hl] + ld d, a ; de = address of tileset + ld hl, vSprites + $310 ld b, BANK(AnimationTileset1) ; ROM bank - ld a,[wTempTilesetNumTiles] - ld c,a ; number of tiles + ld a, [wTempTilesetNumTiles] + ld c, a ; number of tiles jp CopyVideoData ; load tileset -AnimationTilesetPointers: ; 7822b (1e:422b) +AnimationTilesetPointers: db 79 ; number of tiles dw AnimationTileset1 db $FF @@ -389,28 +389,28 @@ AnimationTilesetPointers: ; 7822b (1e:422b) dw AnimationTileset1 db $FF -AnimationTileset1: ; 78237 (1e:4237) +AnimationTileset1: INCBIN "gfx/attack_anim_1.2bpp" -AnimationTileset2: ; 78757 (1e:4757) +AnimationTileset2: INCBIN "gfx/attack_anim_2.2bpp" -SlotMachineTiles2: ; 78bde (1e:4c17) +SlotMachineTiles2: INCBIN "gfx/slotmachine2.2bpp" -MoveAnimation: ; 78d97 (1e:4d97) +MoveAnimation: push hl push de push bc push af call WaitForSoundToFinish call SetAnimationPalette - ld a,[wAnimationID] + ld a, [wAnimationID] and a jr z, .animationFinished ; if throwing a Poké Ball, skip the regular animation code - cp a,TOSS_ANIM + cp a, TOSS_ANIM jr nz, .moveAnimation ld de, .animationFinished push de @@ -418,72 +418,72 @@ MoveAnimation: ; 78d97 (1e:4d97) .moveAnimation ; check if battle animations are disabled in the options - ld a,[wOptions] - bit 7,a + ld a, [wOptions] + bit 7, a jr nz, .animationsDisabled call ShareMoveAnimations call PlayAnimation jr .next4 .animationsDisabled - ld c,30 + ld c, 30 call DelayFrames .next4 call PlayApplyingAttackAnimation ; shake the screen or flash the pic in and out (to show damage) .animationFinished call WaitForSoundToFinish xor a - ld [wSubAnimSubEntryAddr],a - ld [wUnusedD09B],a - ld [wSubAnimTransform],a + ld [wSubAnimSubEntryAddr], a + ld [wUnusedD09B], a + ld [wSubAnimTransform], a dec a - ld [wAnimSoundID],a + ld [wAnimSoundID], a pop af pop bc pop de pop hl ret -ShareMoveAnimations: ; 78ddf (1e:4ddf) +ShareMoveAnimations: ; some moves just reuse animations from status conditions - ld a,[H_WHOSETURN] + ld a, [H_WHOSETURN] and a ret z ; opponent’s turn - ld a,[wAnimationID] + ld a, [wAnimationID] - cp a,AMNESIA - ld b,CONF_ANIM + cp a, AMNESIA + ld b, CONF_ANIM jr z, .replaceAnim - cp a,REST - ld b,SLP_ANIM + cp a, REST + ld b, SLP_ANIM ret nz .replaceAnim - ld a,b - ld [wAnimationID],a + ld a, b + ld [wAnimationID], a ret -PlayApplyingAttackAnimation: ; 78df6 (1e:4df6) +PlayApplyingAttackAnimation: ; Generic animation that shows after the move's individual animation ; Different animation depending on whether the move has an additional effect and on whose turn it is - ld a,[wAnimationType] + ld a, [wAnimationType] and a ret z dec a add a - ld c,a - ld b,0 - ld hl,AnimationTypePointerTable - add hl,bc - ld a,[hli] - ld h,[hl] - ld l,a + ld c, a + ld b, 0 + ld hl, AnimationTypePointerTable + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a jp [hl] -AnimationTypePointerTable: ; 78e08 (1e:4e08) +AnimationTypePointerTable: dw ShakeScreenVertically ; enemy mon has used a damaging move without a side effect dw ShakeScreenHorizontallyHeavy ; enemy mon has used a damaging move with a side effect dw ShakeScreenHorizontallySlow ; enemy mon has used a non-damaging move @@ -491,33 +491,33 @@ AnimationTypePointerTable: ; 78e08 (1e:4e08) dw ShakeScreenHorizontallyLight ; player mon has used a damaging move with a side effect dw ShakeScreenHorizontallySlow2 ; player mon has used a non-damaging move -ShakeScreenVertically: ; 78e14 (1e:4e14) +ShakeScreenVertically: call PlayApplyingAttackSound ld b, 8 jp AnimationShakeScreenVertically -ShakeScreenHorizontallyHeavy: ; 78e1c (1e:4e1c) +ShakeScreenHorizontallyHeavy: call PlayApplyingAttackSound ld b, 8 jp AnimationShakeScreenHorizontallyFast -ShakeScreenHorizontallySlow: ; 78e24 (1e:4e24) +ShakeScreenHorizontallySlow: lb bc, 6, 2 jr AnimationShakeScreenHorizontallySlow -BlinkEnemyMonSprite: ; 78e29 (1e:4e29) +BlinkEnemyMonSprite: call PlayApplyingAttackSound jp AnimationBlinkEnemyMon -ShakeScreenHorizontallyLight: ; 78e2f (1e:4e2f) +ShakeScreenHorizontallyLight: call PlayApplyingAttackSound ld b, 2 jp AnimationShakeScreenHorizontallyFast -ShakeScreenHorizontallySlow2: ; 78e37 (1e:4e37) +ShakeScreenHorizontallySlow2: lb bc, 3, 2 -AnimationShakeScreenHorizontallySlow: ; 78e3a (1e:4e3a) +AnimationShakeScreenHorizontallySlow: push bc push bc .loop1 @@ -542,7 +542,7 @@ AnimationShakeScreenHorizontallySlow: ; 78e3a (1e:4e3a) jr nz, AnimationShakeScreenHorizontallySlow ret -SetAnimationPalette: ; 78e5c (1e:4e5c) +SetAnimationPalette: ld a, [wOnSGB] and a ld a, $e4 @@ -574,7 +574,7 @@ SetAnimationPalette: ; 78e5c (1e:4e5c) call UpdateGBCPal_OBP1 ret -Func_78e98: ; 78e98 (1e:4e98) +Func_78e98: call SaveScreenTilesToBuffer2 xor a ld [H_AUTOBGTRANSFERENABLED], a @@ -587,80 +587,80 @@ Func_78e98: ; 78e98 (1e:4e98) call LoadScreenTilesFromBuffer2 ld h, vBGMap1 / $100 -WriteLowerByteOfBGMapAndEnableBGTransfer: ; 78eb1 (1e:4eb1) +WriteLowerByteOfBGMapAndEnableBGTransfer: ld l, vBGMap0 & $ff call BattleAnimCopyTileMapToVRAM ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ret -PlaySubanimation: ; 78ebb (1e:4ebb) - ld a,[wAnimSoundID] - cp a,$FF - jr z,.skipPlayingSound +PlaySubanimation: + ld a, [wAnimSoundID] + cp a, $FF + jr z, .skipPlayingSound call GetMoveSound call PlaySound .skipPlayingSound - ld hl,wOAMBuffer ; base address of OAM buffer - ld a,l - ld [wFBDestAddr + 1],a - ld a,h - ld [wFBDestAddr],a - ld a,[wSubAnimSubEntryAddr + 1] - ld h,a - ld a,[wSubAnimSubEntryAddr] - ld l,a + ld hl, wOAMBuffer ; base address of OAM buffer + ld a, l + ld [wFBDestAddr + 1], a + ld a, h + ld [wFBDestAddr], a + ld a, [wSubAnimSubEntryAddr + 1] + ld h, a + ld a, [wSubAnimSubEntryAddr] + ld l, a .loop push hl - ld c,[hl] ; frame block ID - ld b,0 - ld hl,FrameBlockPointers - add hl,bc - add hl,bc - ld a,[hli] - ld c,a - ld a,[hli] - ld b,a + ld c, [hl] ; frame block ID + ld b, 0 + ld hl, FrameBlockPointers + add hl, bc + add hl, bc + ld a, [hli] + ld c, a + ld a, [hli] + ld b, a pop hl inc hl push hl - ld e,[hl] ; base coordinate ID - ld d,0 - ld hl,FrameBlockBaseCoords ; base coordinate table - add hl,de - add hl,de - ld a,[hli] - ld [wBaseCoordY],a - ld a,[hl] - ld [wBaseCoordX],a + ld e, [hl] ; base coordinate ID + ld d, 0 + ld hl, FrameBlockBaseCoords ; base coordinate table + add hl, de + add hl, de + ld a, [hli] + ld [wBaseCoordY], a + ld a, [hl] + ld [wBaseCoordX], a pop hl inc hl - ld a,[hl] ; frame block mode - ld [wFBMode],a + ld a, [hl] ; frame block mode + ld [wFBMode], a call DrawFrameBlock call DoSpecialEffectByAnimationId ; run animation-specific function (if there is one) - ld a,[wSubAnimCounter] + ld a, [wSubAnimCounter] dec a - ld [wSubAnimCounter],a + ld [wSubAnimCounter], a ret z - ld a,[wSubAnimSubEntryAddr + 1] - ld h,a - ld a,[wSubAnimSubEntryAddr] - ld l,a - ld a,[wSubAnimTransform] - cp a,4 ; is the animation reversed? - ld bc,3 - jr nz,.nextSubanimationSubentry - ld bc,-3 + ld a, [wSubAnimSubEntryAddr + 1] + ld h, a + ld a, [wSubAnimSubEntryAddr] + ld l, a + ld a, [wSubAnimTransform] + cp a, 4 ; is the animation reversed? + ld bc, 3 + jr nz, .nextSubanimationSubentry + ld bc, -3 .nextSubanimationSubentry - add hl,bc - ld a,h - ld [wSubAnimSubEntryAddr + 1],a - ld a,l - ld [wSubAnimSubEntryAddr],a + add hl, bc + ld a, h + ld [wSubAnimSubEntryAddr + 1], a + ld a, l + ld [wSubAnimSubEntryAddr], a jp .loop -AnimationCleanOAM: ; 78f30 (1e:4f30) +AnimationCleanOAM: push hl push de push bc @@ -675,20 +675,20 @@ AnimationCleanOAM: ; 78f30 (1e:4f30) ; this runs after each frame block is drawn in a subanimation ; it runs a particular special effect based on the animation ID -DoSpecialEffectByAnimationId: ; 78f3f (1e:4f3f) +DoSpecialEffectByAnimationId: push hl push de push bc - ld a,[wAnimationID] - ld hl,AnimationIdSpecialEffects - ld de,3 + ld a, [wAnimationID] + ld hl, AnimationIdSpecialEffects + ld de, 3 call IsInArray - jr nc,.done + jr nc, .done inc hl - ld a,[hli] - ld h,[hl] - ld l,a - ld de,.done + ld a, [hli] + ld h, [hl] + ld l, a + ld de, .done push de jp [hl] .done @@ -698,7 +698,7 @@ DoSpecialEffectByAnimationId: ; 78f3f (1e:4f3f) ret ; Format: Animation ID (1 byte), Address (2 bytes) -AnimationIdSpecialEffects: ; 78f5d (1e:4f5d) +AnimationIdSpecialEffects: db MEGA_PUNCH dw AnimationFlashScreen @@ -773,40 +773,40 @@ AnimationIdSpecialEffects: ; 78f5d (1e:4f5d) db $FF ; terminator -DoBallTossSpecialEffects: ; 78fa6 (1e:4fa6) - ld a,[wcf91] - cp a,3 ; is it a Master Ball or Ultra Ball? - jr nc,.skipFlashingEffect +DoBallTossSpecialEffects: + ld a, [wcf91] + cp a, 3 ; is it a Master Ball or Ultra Ball? + jr nc, .skipFlashingEffect .flashingEffect ; do a flashing effect if it's Master Ball or Ultra Ball - ld a,[rOBP0] - xor a,%00111100 ; complement colors 1 and 2 - ld [rOBP0],a + ld a, [rOBP0] + xor a, %00111100 ; complement colors 1 and 2 + ld [rOBP0], a call UpdateGBCPal_OBP0 .skipFlashingEffect - ld a,[wSubAnimCounter] - cp a,11 ; is it the beginning of the subanimation? - jr nz,.skipPlayingSound + ld a, [wSubAnimCounter] + cp a, 11 ; is it the beginning of the subanimation? + jr nz, .skipPlayingSound ; if it is the beginning of the subanimation, play a sound - ld a,SFX_BALL_TOSS + ld a, SFX_BALL_TOSS call PlaySound .skipPlayingSound - ld a,[wIsInBattle] - cp a,02 ; is it a trainer battle? - jr z,.isTrainerBattle - ld a,[wd11e] - cp a,$10 ; is the enemy pokemon the Ghost Marowak? + ld a, [wIsInBattle] + cp a, 02 ; is it a trainer battle? + jr z, .isTrainerBattle + ld a, [wd11e] + cp a, $10 ; is the enemy pokemon the Ghost Marowak? ret nz ; if the enemy pokemon is the Ghost Marowak, make it dodge during the last 3 frames - ld a,[wSubAnimCounter] - cp a,3 - jr z,.moveGhostMarowakLeft - cp a,2 - jr z,.moveGhostMarowakLeft - cp a,1 + ld a, [wSubAnimCounter] + cp a, 3 + jr z, .moveGhostMarowakLeft + cp a, 2 + jr z, .moveGhostMarowakLeft + cp a, 1 ret nz .moveGhostMarowakLeft coord hl, 17, 0 - ld de,20 + ld de, 20 lb bc, 7, 7 .loop push hl @@ -814,152 +814,152 @@ DoBallTossSpecialEffects: ; 78fa6 (1e:4fa6) call AnimCopyRowRight ; move row of tiles left pop bc pop hl - add hl,de + add hl, de dec b - jr nz,.loop - ld a,%00001000 - ld [rNR10],a ; Channel 1 sweep register + jr nz, .loop + ld a, %00001000 + ld [rNR10], a ; Channel 1 sweep register ret .isTrainerBattle ; if it's a trainer battle, shorten the animation by one frame - ld a,[wSubAnimCounter] - cp a,3 + ld a, [wSubAnimCounter] + cp a, 3 ret nz dec a - ld [wSubAnimCounter],a + ld [wSubAnimCounter], a ret -DoBallShakeSpecialEffects: ; 79001 (1e:5001) - ld a,[wSubAnimCounter] - cp a,4 ; is it the beginning of a shake? - jr nz,.skipPlayingSound +DoBallShakeSpecialEffects: + ld a, [wSubAnimCounter] + cp a, 4 ; is it the beginning of a shake? + jr nz, .skipPlayingSound ; if it is the beginning of a shake, play a sound and wait 2/3 of a second - ld a,SFX_TINK + ld a, SFX_TINK call PlaySound - ld c,40 + ld c, 40 call DelayFrames .skipPlayingSound - ld a,[wSubAnimCounter] + ld a, [wSubAnimCounter] dec a ret nz ; if it's the end of the ball shaking subanimation, check if more shakes are left and restart the subanimation - ld a,[wNumShakes] ; number of shakes + ld a, [wNumShakes] ; number of shakes dec a ; decrement number of shakes - ld [wNumShakes],a + ld [wNumShakes], a ret z ; if there are shakes left, restart the subanimation - ld a,[wSubAnimSubEntryAddr] - ld l,a - ld a,[wSubAnimSubEntryAddr + 1] - ld h,a - ld de,-(4 * 3) ; 4 subentries and 3 bytes per subentry - add hl,de - ld a,l - ld [wSubAnimSubEntryAddr],a - ld a,h - ld [wSubAnimSubEntryAddr + 1],a - ld a,5 ; number of subentries in the ball shaking subanimation plus one - ld [wSubAnimCounter],a + ld a, [wSubAnimSubEntryAddr] + ld l, a + ld a, [wSubAnimSubEntryAddr + 1] + ld h, a + ld de, -(4 * 3) ; 4 subentries and 3 bytes per subentry + add hl, de + ld a, l + ld [wSubAnimSubEntryAddr], a + ld a, h + ld [wSubAnimSubEntryAddr + 1], a + ld a, 5 ; number of subentries in the ball shaking subanimation plus one + ld [wSubAnimCounter], a ret ; plays a sound after the second frame of the poof animation -DoPoofSpecialEffects: ; 79039 (1e:5039) - ld a,[wSubAnimCounter] - cp a,5 +DoPoofSpecialEffects: + ld a, [wSubAnimCounter] + cp a, 5 ret nz - ld a,SFX_BALL_POOF + ld a, SFX_BALL_POOF jp PlaySound -DoRockSlideSpecialEffects: ; 79044 (1e:5044) - ld a,[wSubAnimCounter] - cp a,12 +DoRockSlideSpecialEffects: + ld a, [wSubAnimCounter] + cp a, 12 ret nc - cp a,8 - jr nc,.shakeScreen - cp a,1 - jp z,AnimationFlashScreen ; if it's the end of the subanimation, flash the screen + cp a, 8 + jr nc, .shakeScreen + cp a, 1 + jp z, AnimationFlashScreen ; if it's the end of the subanimation, flash the screen ret ; if the subaninmation counter is between 8 and 11, shake the screen horizontally and vertically .shakeScreen - ld b,1 + ld b, 1 predef PredefShakeScreenHorizontally ; shake horizontally - ld b,1 + ld b, 1 predef_jump PredefShakeScreenVertically ; shake vertically -FlashScreenEveryEightFrameBlocks: ; 79062 (1e:5062) - ld a,[wSubAnimCounter] - and a,7 ; is the subanimation counter exactly 8? - call z,AnimationFlashScreen ; if so, flash the screen +FlashScreenEveryEightFrameBlocks: + ld a, [wSubAnimCounter] + and a, 7 ; is the subanimation counter exactly 8? + call z, AnimationFlashScreen ; if so, flash the screen ret ; flashes the screen if the subanimation counter is divisible by 4 -FlashScreenEveryFourFrameBlocks: ; 7906b (1e:506b) - ld a,[wSubAnimCounter] - and a,3 - call z,AnimationFlashScreen +FlashScreenEveryFourFrameBlocks: + ld a, [wSubAnimCounter] + and a, 3 + call z, AnimationFlashScreen ret ; used for Explosion and Selfdestruct -DoExplodeSpecialEffects: ; 79074 (1e:5074) - ld a,[wSubAnimCounter] - cp a,1 ; is it the end of the subanimation? - jr nz,FlashScreenEveryFourFrameBlocks +DoExplodeSpecialEffects: + ld a, [wSubAnimCounter] + cp a, 1 ; is it the end of the subanimation? + jr nz, FlashScreenEveryFourFrameBlocks ; if it's the end of the subanimation, make the attacking pokemon disappear coord hl, 1, 5 jp AnimationHideMonPic ; make pokemon disappear ; flashes the screen when subanimation counter is 1 modulo 4 -DoBlizzardSpecialEffects: ; 79081 (1e:5081) - ld a,[wSubAnimCounter] - cp a,13 - jp z,AnimationFlashScreen - cp a,9 - jp z,AnimationFlashScreen - cp a,5 - jp z,AnimationFlashScreen - cp a,1 - jp z,AnimationFlashScreen +DoBlizzardSpecialEffects: + ld a, [wSubAnimCounter] + cp a, 13 + jp z, AnimationFlashScreen + cp a, 9 + jp z, AnimationFlashScreen + cp a, 5 + jp z, AnimationFlashScreen + cp a, 1 + jp z, AnimationFlashScreen ret ; flashes the screen at 3 points in the subanimation ; unused -FlashScreenUnused: ; 79099 (1e:5099) - ld a,[wSubAnimCounter] - cp a,14 - jp z,AnimationFlashScreen - cp a,9 - jp z,AnimationFlashScreen - cp a,2 - jp z,AnimationFlashScreen +FlashScreenUnused: + ld a, [wSubAnimCounter] + cp a, 14 + jp z, AnimationFlashScreen + cp a, 9 + jp z, AnimationFlashScreen + cp a, 2 + jp z, AnimationFlashScreen ret ; function to make the pokemon disappear at the beginning of the animation -TradeHidePokemon: ; 790ac (1e:50ac) - ld a,[wSubAnimCounter] - cp a,6 +TradeHidePokemon: + ld a, [wSubAnimCounter] + cp a, 6 ret nz - ld a,2 * SCREEN_WIDTH + 7 + ld a, 2 * SCREEN_WIDTH + 7 jp ClearMonPicFromTileMap ; make pokemon disappear ; function to make a shaking pokeball jump up at the end of the animation -TradeShakePokeball: ; 790b7 (1e:50b7) - ld a,[wSubAnimCounter] - cp a,1 +TradeShakePokeball: + ld a, [wSubAnimCounter] + cp a, 1 ret nz ; if it's the end of the animation, make the ball jump up - ld de,BallMoveDistances1 + ld de, BallMoveDistances1 .loop - ld hl,wOAMBuffer ; OAM buffer - ld bc,4 + ld hl, wOAMBuffer ; OAM buffer + ld bc, 4 .innerLoop - ld a,[de] - cp a,$ff - jr z,.done + ld a, [de] + cp a, $ff + jr z, .done add [hl] ; add to Y value of OAM entry - ld [hl],a - add hl,bc - ld a,l - cp a,4 * 4 ; there are 4 entries, each 4 bytes - jr nz,.innerLoop + ld [hl], a + add hl, bc + ld a, l + cp a, 4 * 4 ; there are 4 entries, each 4 bytes + jr nz, .innerLoop inc de push bc call Delay3 @@ -967,74 +967,75 @@ TradeShakePokeball: ; 790b7 (1e:50b7) jr .loop .done call AnimationCleanOAM - ld a,SFX_TRADE_MACHINE + ld a, SFX_TRADE_MACHINE jp PlaySound -BallMoveDistances1: ; 790e3 (1e:50e3) - db -12,-12,-8 +BallMoveDistances1: + db -12, -12, -8 db $ff ; terminator ; function to make the pokeball jump up -TradeJumpPokeball: ; 790e7 (1e:50e7) - ld de,BallMoveDistances2 +TradeJumpPokeball: + ld de, BallMoveDistances2 .loop - ld hl,wOAMBuffer ; OAM buffer - ld bc,4 + ld hl, wOAMBuffer ; OAM buffer + ld bc, 4 .innerLoop - ld a,[de] - cp a,$ff - jp z,ClearScreen + ld a, [de] + cp a, $ff + jp z, ClearScreen add [hl] - ld [hl],a - add hl,bc - ld a,l - cp a,4 * 4 ; there are 4 entries, each 4 bytes - jr nz,.innerLoop + ld [hl], a + add hl, bc + ld a, l + cp a, 4 * 4 ; there are 4 entries, each 4 bytes + jr nz, .innerLoop inc de push de - ld a,[de] - cp a,12 - jr z,.playSound - cp a,$ff - jr nz,.skipPlayingSound + ld a, [de] + cp a, 12 + jr z, .playSound + cp a, $ff + jr nz, .skipPlayingSound .playSound ; play sound if next move distance is 12 or this is the last one - ld a,SFX_BATTLE_18 + ld a, SFX_BATTLE_18 call PlaySound .skipPlayingSound push bc - ld c,5 + ld c, 5 call DelayFrames pop bc - ld a,[hSCX] ; background scroll X - sub a,8 ; scroll to the left - ld [hSCX],a + ld a, [hSCX] ; background scroll X + sub a, 8 ; scroll to the left + ld [hSCX], a pop de jr .loop -BallMoveDistances2: ; 7911f (1e:511f) - db 11,12,-12,-7,7,12,-8,8 +BallMoveDistances2: + db 11, 12, -12, -7, 7, 12, -8, 8 db $ff ; terminator ; this function copies the current musical note graphic ; so that there are two musical notes flying towards the defending pokemon -DoGrowlSpecialEffects: ; 79127 (1e:5127) - ld hl,wOAMBuffer ; OAM buffer - ld de,wOAMBuffer + $10 - ld bc,$10 +DoGrowlSpecialEffects: + ld hl, wOAMBuffer ; OAM buffer + ld de, wOAMBuffer + $10 + ld bc, $10 call CopyData ; copy the musical note graphic - ld a,[wSubAnimCounter] + ld a, [wSubAnimCounter] dec a - call z,AnimationCleanOAM ; clean up at the end of the subanimation + call z, AnimationCleanOAM ; clean up at the end of the subanimation ret ; this is associated with Tail Whip, but Tail Whip doesn't use any subanimations -TailWhipAnimationUnused: ; 7913b (1e:513b) - ld a,1 - ld [wSubAnimCounter],a - ld c,20 +TailWhipAnimationUnused: + ld a, 1 + ld [wSubAnimCounter], a + ld c, 20 jp DelayFrames -SpecialEffectPointers: ; 79145 (1e:5145) +; Format: Special Effect ID (1 byte), Address (2 bytes) +SpecialEffectPointers: db SE_DARK_SCREEN_FLASH ; $FE dw AnimationFlashScreen db SE_DARK_SCREEN_PALETTE ; $FD @@ -1115,54 +1116,54 @@ SpecialEffectPointers: ; 79145 (1e:5145) dw AnimationWavyScreen db $FF -AnimationDelay10: ; 791bb (1e:51bb) - ld c,10 +AnimationDelay10: + ld c, 10 jp DelayFrames ; calls a function with the turn flipped from player to enemy or vice versa ; input - hl - address of function to call -CallWithTurnFlipped: ; 791c0 (1e:51c0) - ld a,[H_WHOSETURN] +CallWithTurnFlipped: + ld a, [H_WHOSETURN] push af - xor a,1 - ld [H_WHOSETURN],a - ld de,.returnAddress + xor a, 1 + ld [H_WHOSETURN], a + ld de, .returnAddress push de jp [hl] .returnAddress pop af - ld [H_WHOSETURN],a + ld [H_WHOSETURN], a ret ; flashes the screen for an extended period (48 frames) -AnimationFlashScreenLong: ; 791d0 (1e:51d0) - ld a,3 ; cycle through the palettes 3 times - ld [wFlashScreenLongCounter],a - ld a,[wOnSGB] ; running on SGB? +AnimationFlashScreenLong: + ld a, 3 ; cycle through the palettes 3 times + ld [wFlashScreenLongCounter], a + ld a, [wOnSGB] ; running on SGB? and a - ld hl,FlashScreenLongMonochrome - jr z,.loop - ld hl,FlashScreenLongSGB + ld hl, FlashScreenLongMonochrome + jr z, .loop + ld hl, FlashScreenLongSGB .loop push hl .innerLoop - ld a,[hli] - cp a,$01 ; is it the end of the palettes? - jr z,.endOfPalettes - ld [rBGP],a + ld a, [hli] + cp a, $01 ; is it the end of the palettes? + jr z, .endOfPalettes + ld [rBGP], a call UpdateGBCPal_BGP call FlashScreenLongDelay jr .innerLoop .endOfPalettes - ld a,[wFlashScreenLongCounter] + ld a, [wFlashScreenLongCounter] dec a - ld [wFlashScreenLongCounter],a + ld [wFlashScreenLongCounter], a pop hl - jr nz,.loop + jr nz, .loop ret ; BG palettes -FlashScreenLongMonochrome: ; 791fc (1e:51fc) +FlashScreenLongMonochrome: db %11111001 ; 3, 3, 2, 1 db %11111110 ; 3, 3, 3, 2 db %11111111 ; 3, 3, 3, 3 @@ -1178,7 +1179,7 @@ FlashScreenLongMonochrome: ; 791fc (1e:51fc) db $01 ; terminator ; BG palettes -FlashScreenLongSGB: ; 79209 (1e:5209) +FlashScreenLongSGB: db %11111000 ; 3, 3, 2, 0 db %11111100 ; 3, 3, 3, 0 db %11111111 ; 3, 3, 3, 3 @@ -1195,73 +1196,73 @@ FlashScreenLongSGB: ; 79209 (1e:5209) ; causes a delay of 2 frames for the first cycle ; causes a delay of 1 frame for the second and third cycles -FlashScreenLongDelay: ; 79216 (1e:5216) - ld a,[wFlashScreenLongCounter] - cp a,4 ; never true since [wFlashScreenLongCounter] starts at 3 - ld c,4 - jr z,.delayFrames - cp a,3 - ld c,2 - jr z,.delayFrames - cp a,2 ; nothing is done with this - ld c,1 +FlashScreenLongDelay: + ld a, [wFlashScreenLongCounter] + cp a, 4 ; never true since [wFlashScreenLongCounter] starts at 3 + ld c, 4 + jr z, .delayFrames + cp a, 3 + ld c, 2 + jr z, .delayFrames + cp a, 2 ; nothing is done with this + ld c, 1 .delayFrames jp DelayFrames -AnimationFlashScreen: ; 7922c (1e:522c) - ld a,[rBGP] +AnimationFlashScreen: + ld a, [rBGP] push af ; save initial palette - ld a,%00011011 ; 0, 1, 2, 3 (inverted colors) - ld [rBGP],a + ld a, %00011011 ; 0, 1, 2, 3 (inverted colors) + ld [rBGP], a call UpdateGBCPal_BGP - ld c,2 + ld c, 2 call DelayFrames xor a ; white out background - ld [rBGP],a + ld [rBGP], a call UpdateGBCPal_BGP - ld c,2 + ld c, 2 call DelayFrames pop af - ld [rBGP],a ; restore initial palette + ld [rBGP], a ; restore initial palette call UpdateGBCPal_BGP ret -AnimationDarkScreenPalette: ; 7924d (1e:524d) +AnimationDarkScreenPalette: ; Changes the screen's palette to a dark palette. lb bc, $6f, $6f jr SetAnimationBGPalette -AnimationDarkenMonPalette: ; 79252 (1e:5252) +AnimationDarkenMonPalette: ; Darkens the mon sprite's palette. lb bc, $f9, $f4 jr SetAnimationBGPalette -AnimationUnusedPalette1: ; 79257 (1e:5257) +AnimationUnusedPalette1: lb bc, $fe, $f8 jr SetAnimationBGPalette -AnimationUnusedPalette2: ; 7925c (1e:525c) +AnimationUnusedPalette2: lb bc, $ff, $ff jr SetAnimationBGPalette -AnimationResetScreenPalette: ; 79261 (1e:5261) +AnimationResetScreenPalette: ; Restores the screen's palette to the normal palette. lb bc, $e4, $e4 jr SetAnimationBGPalette -AnimationUnusedPalette3: ; 79266 (1e:5266) +AnimationUnusedPalette3: lb bc, $00, $00 jr SetAnimationBGPalette -AnimationLightScreenPalette: ; 7926b (1e:526b) +AnimationLightScreenPalette: ; Changes the screen to use a palette with light colors. lb bc, $90, $90 jr SetAnimationBGPalette -AnimationUnusedPalette4: ; 79270 (1e:5270) +AnimationUnusedPalette4: lb bc, $40, $40 -SetAnimationBGPalette: ; 79273 (1e:5273) +SetAnimationBGPalette: ld a, [wOnSGB] and a ld a, b @@ -1274,17 +1275,17 @@ SetAnimationBGPalette: ; 79273 (1e:5273) ld b, $5 -AnimationShakeScreenVertically: ; 79283 (1e:5283) +AnimationShakeScreenVertically: predef_jump PredefShakeScreenVertically -AnimationShakeScreen: ; 79288 (1e:5288) +AnimationShakeScreen: ; Shakes the screen for a while. Used in Earthquake/Fissure/etc. animations. ld b, $8 -AnimationShakeScreenHorizontallyFast: ; 7928a (1e:528a) +AnimationShakeScreenHorizontallyFast: predef_jump PredefShakeScreenHorizontally -AnimationWaterDropletsEverywhere: ; 7928f (1e:528f) +AnimationWaterDropletsEverywhere: ; Draws water droplets all over the screen and makes them ; scroll. It's hard to describe, but it's the main animation ; in Surf/Mist/Toxic. @@ -1311,7 +1312,7 @@ AnimationWaterDropletsEverywhere: ; 7928f (1e:528f) jr nz, .loop ret -_AnimationWaterDroplets: ; 792c0 (1e:52c0) +_AnimationWaterDroplets: ld hl, wOAMBuffer .loop ld a, $1 @@ -1352,7 +1353,7 @@ _AnimationWaterDroplets: ; 792c0 (1e:52c0) call AnimationCleanOAM jp DelayFrame -AnimationSlideMonUp: ; 79314 (1e:5314) +AnimationSlideMonUp: ; Slides the mon's sprite upwards. ld c, 7 ld a, [H_WHOSETURN] @@ -1368,7 +1369,7 @@ AnimationSlideMonUp: ; 79314 (1e:5314) ld [wSlideMonUpBottomRowLeftTile], a jp _AnimationSlideMonUp -AnimationSlideMonDown: ; 79331 (1e:5331) +AnimationSlideMonDown: ; Slides the mon's sprite down out of the screen. xor a call GetTileIDList @@ -1385,19 +1386,19 @@ AnimationSlideMonDown: ; 79331 (1e:5331) jr nz, .loop ret -AnimationSlideMonOff: ; 79349 (1e:5349) +AnimationSlideMonOff: ; Slides the mon's sprite off the screen horizontally. ld e, 8 ld a, 3 ld [wSlideMonDelay], a jp _AnimationSlideMonOff -AnimationSlideEnemyMonOff: ; 79353 (1e:5353) +AnimationSlideEnemyMonOff: ; Slides the enemy mon off the screen horizontally. ld hl, AnimationSlideMonOff jp CallWithTurnFlipped -_AnimationSlideMonUp: ; 79359 (1e:5359) +_AnimationSlideMonUp: push de push hl push bc @@ -1448,7 +1449,7 @@ _AnimationSlideMonUp: ; 79359 (1e:5359) jr nz, _AnimationSlideMonUp ret -ShakeEnemyHUD_WritePlayerMonPicOAM: ; 79397 (1e:5397) +ShakeEnemyHUD_WritePlayerMonPicOAM: ; Writes the OAM entries for a copy of the player mon's pic in OAM. ; The top 5 rows are reproduced in OAM, although only 2 are actually needed. ld a, $10 @@ -1476,7 +1477,7 @@ ShakeEnemyHUD_WritePlayerMonPicOAM: ; 79397 (1e:5397) ld [wBaseCoordX], a jr .loop -BattleAnimWriteOAMEntry: ; 793c3 (1e:53c3) +BattleAnimWriteOAMEntry: ; Y coordinate = e (increased by 8 each call, before the write to OAM) ; X coordinate = [wBaseCoordX] ; tile = d @@ -1507,11 +1508,11 @@ BattleAnimWriteOAMEntry: ; 793c3 (1e:53c3) ld [hli], a ret -AdjustOAMBlockXPos: ; 793ef (1e:53ef) +AdjustOAMBlockXPos: ld l, e ld h, d -AdjustOAMBlockXPos2: ; 793f1 (1e:53f1) +AdjustOAMBlockXPos2: ld de, 4 .loop ld a, [wCoordAdjustmentAmount] @@ -1531,11 +1532,11 @@ AdjustOAMBlockXPos2: ; 793f1 (1e:53f1) jr nz, .loop ret -AdjustOAMBlockYPos: ; 79408 (1e:5408) +AdjustOAMBlockYPos: ld l, e ld h, d -AdjustOAMBlockYPos2: ; 7940d (1e:540d) +AdjustOAMBlockYPos2: ld de, 4 .loop ld a, [wCoordAdjustmentAmount] @@ -1554,12 +1555,12 @@ AdjustOAMBlockYPos2: ; 7940d (1e:540d) jr nz, .loop ret -AnimationBlinkEnemyMon: ; 79421 (1e:5421) +AnimationBlinkEnemyMon: ; Make the enemy mon's sprite blink on and off for a second or two ld hl, AnimationBlinkMon jp CallWithTurnFlipped -AnimationBlinkMon: ; 79427 (1e:5427) +AnimationBlinkMon: ; Make the mon's sprite blink on and off for a second or two. push af ld c, 6 @@ -1577,7 +1578,7 @@ AnimationBlinkMon: ; 79427 (1e:5427) pop af ret -AnimationFlashMonPic: ; 79441 (1e:5441) +AnimationFlashMonPic: ; Flashes the mon's sprite on and off ld a, [wBattleMonSpecies] ld [wChangeMonPicPlayerTurnSpecies], a @@ -1585,25 +1586,25 @@ AnimationFlashMonPic: ; 79441 (1e:5441) ld [wChangeMonPicEnemyTurnSpecies], a jp ChangeMonPic -AnimationFlashEnemyMonPic: ; 79450 (1e:5450) +AnimationFlashEnemyMonPic: ; Flashes the enemy mon's sprite on and off ld hl, AnimationFlashMonPic jp CallWithTurnFlipped -AnimationShowMonPic: ; 79456 (1e:5456) +AnimationShowMonPic: xor a call GetTileIDList call GetMonSpriteTileMapPointerFromRowCount call CopyPicTiles jp Delay3 -AnimationShowEnemyMonPic: ; 79463 (1e:5463) +AnimationShowEnemyMonPic: ; Shows the emenmy mon's front sprite. Used in animations like Seismic Toss ; to make the mon's sprite reappear after disappears offscreen. ld hl, AnimationShowMonPic jp CallWithTurnFlipped -AnimationShakeBackAndForth: ; 79469 (1e:5469) +AnimationShakeBackAndForth: ; Shakes the mon's sprite back and forth rapidly. This is used in Double Team. ; The mon's sprite disappears after this animation. ld a, [H_WHOSETURN] @@ -1650,7 +1651,7 @@ AnimationShakeBackAndForth: ; 79469 (1e:5469) jr nz, .loop ret -AnimationMoveMonHorizontally: ; 794b1 (1e:54b1) +AnimationMoveMonHorizontally: ; Shifts the mon's sprite horizontally to a fixed location. Used by lots of ; animations like Tackle/Body Slam. call AnimationHideMonPic @@ -1668,7 +1669,7 @@ AnimationMoveMonHorizontally: ; 794b1 (1e:54b1) ld c, 3 jp DelayFrames -AnimationResetMonPosition: ; 794cd (1e:54cd) +AnimationResetMonPosition: ; Resets the mon's sprites to be located at the normal coordinates. ld a, [H_WHOSETURN] and a @@ -1679,7 +1680,7 @@ AnimationResetMonPosition: ; 794cd (1e:54cd) call ClearMonPicFromTileMap jp AnimationShowMonPic -AnimationSpiralBallsInward: ; 794dc (1e:54dc) +AnimationSpiralBallsInward: ; Creates an effect that looks like energy balls spiralling into the ; player mon's sprite. Used in Focus Energy, for example. ld a, [H_WHOSETURN] @@ -1746,7 +1747,7 @@ AnimationSpiralBallsInward: ; 794dc (1e:54dc) call AnimationCleanOAM jp AnimationFlashScreen -SpiralBallAnimationCoordinates: ; 79545 (1e:5545) +SpiralBallAnimationCoordinates: ; y, x pairs ; This is the sequence of screen coordinates that the spiralling ; balls are positioned at. @@ -1773,7 +1774,7 @@ SpiralBallAnimationCoordinates: ; 79545 (1e:5545) db $50, $28 db $FF ; list terminator -AnimationSquishMonPic: ; 79570 (1e:5570) +AnimationSquishMonPic: ; Squishes the mon's sprite horizontally making it ; disappear. Used by Teleport/Sky Attack animations. ld c, 4 @@ -1804,7 +1805,7 @@ AnimationSquishMonPic: ; 79570 (1e:5570) ld c, 2 jp DelayFrame -_AnimationSquishMonPic: ; 795a3 (1e:55a3) +_AnimationSquishMonPic: ld c, 7 .loop push bc @@ -1829,7 +1830,7 @@ _AnimationSquishMonPic: ; 795a3 (1e:55a3) jr nz, .loop jp Delay3 -AnimationShootBallsUpward: ; 795c8 (1e:55c8) +AnimationShootBallsUpward: ; Shoots one pillar of "energy" balls upwards. Used in Teleport/Sky Attack ; animations. ld a, [H_WHOSETURN] @@ -1848,7 +1849,7 @@ AnimationShootBallsUpward: ; 795c8 (1e:55c8) call _AnimationShootBallsUpward jp AnimationCleanOAM -_AnimationShootBallsUpward: ; 795e6 (1e:55e6) +_AnimationShootBallsUpward: push bc xor a ld [wWhichBattleAnimTileset], a @@ -1898,7 +1899,7 @@ _AnimationShootBallsUpward: ; 795e6 (1e:55e6) jr nz, .loop ret -AnimationShootManyBallsUpward: ; 79635 (1e:5635) +AnimationShootManyBallsUpward: ; Shoots several pillars of "energy" balls upward. ld a, [H_WHOSETURN] and a @@ -1922,19 +1923,19 @@ AnimationShootManyBallsUpward: ; 79635 (1e:5635) pop hl jr .loop -UpwardBallsAnimXCoordinatesPlayerTurn: ; 79660 (1e:5660) +UpwardBallsAnimXCoordinatesPlayerTurn: ; List of x coordinates for each pillar of "energy" balls in the ; AnimationShootManyBallsUpward animation. It's unused in the game. db $10, $40, $28, $18, $38, $30 db $FF ; list terminator -UpwardBallsAnimXCoordinatesEnemyTurn: ; 79667 (1e:5667) +UpwardBallsAnimXCoordinatesEnemyTurn: ; List of x coordinates for each pillar of "energy" balls in the ; AnimationShootManyBallsUpward animation. It's unused in the game. db $60, $90, $78, $68, $88, $80 db $FF ; list terminator -AnimationMinimizeMon: ; 7966e (1e:566e) +AnimationMinimizeMon: ; Changes the mon's sprite to a mini black sprite. Used by the ; Minimize animation. ld hl, wTempPic @@ -1958,11 +1959,11 @@ AnimationMinimizeMon: ; 7966e (1e:566e) call Delay3 jp AnimationShowMonPic -MinimizedMonSprite: ; 79693 (1e:5693) +MinimizedMonSprite: INCBIN "gfx/minimized_mon_sprite.1bpp" MinimizedMonSpriteEnd: -AnimationSlideMonDownAndHide: ; 79698 (1e:5698) +AnimationSlideMonDownAndHide: ; Slides the mon's sprite down and disappears. Used in Acid Armor. ld a, $1 ld c, $2 @@ -1989,7 +1990,7 @@ AnimationSlideMonDownAndHide: ; 79698 (1e:5698) call FillMemory jp CopyTempPicToMonPic -_AnimationSlideMonOff: ; 796c7 (1e:56c7) +_AnimationSlideMonOff: ; Slides the mon's sprite off the screen horizontally by e tiles and waits ; [wSlideMonDelay] V-blanks each time the pic is slid by one tile. ld a, [H_WHOSETURN] @@ -2033,14 +2034,14 @@ _AnimationSlideMonOff: ; 796c7 (1e:56c7) jr nz, .slideLoop ret -; Since mon pic tile numbers go from top to bottom, left to right in order, +; Since mon pic tile numbers go from top to bottom, left to right in order, ; adding the height of the mon pic in tiles to a tile number gives the tile ; number of the tile one column to the right (and thus subtracting the height ; gives the reverse). If the next tile would be past the edge of the pic, the 2 ; functions below catch it by checking if the tile number is within the valid ; range and if not, replacing it with a blank tile. -.PlayerNextTile ; 79702 (1e:5702) +.PlayerNextTile ld a, [hl] add 7 ; bugfix: compares against the max tile + 1 as opposed to the max tile @@ -2049,7 +2050,7 @@ _AnimationSlideMonOff: ; 796c7 (1e:56c7) ld a, " " ret -.EnemyNextTile ; 7970b (1e:570b) +.EnemyNextTile ld a, [hl] sub 7 ; This has the same problem as above, but it has no visible effect because @@ -2059,7 +2060,7 @@ _AnimationSlideMonOff: ; 796c7 (1e:56c7) ld a, " " ret -AnimationSlideMonHalfOff: ; 79714 (1e:5714) +AnimationSlideMonHalfOff: ; Slides the mon's sprite halfway off the screen. It's used in Softboiled. ld e, 4 ld a, 4 @@ -2067,7 +2068,7 @@ AnimationSlideMonHalfOff: ; 79714 (1e:5714) call _AnimationSlideMonOff jp Delay3 -CopyTempPicToMonPic: ; 79721 (1e:5721) +CopyTempPicToMonPic: ld a, [H_WHOSETURN] and a ld hl, vBackPic ; player turn @@ -2078,7 +2079,7 @@ CopyTempPicToMonPic: ; 79721 (1e:5721) ld bc, 7 * 7 jp CopyVideoData -AnimationWavyScreen: ; 79735 (1e:5735) +AnimationWavyScreen: ; used in Psywave/Psychic etc. ld hl, vBGMap0 call BattleAnimCopyTileMapToVRAM @@ -2119,7 +2120,7 @@ AnimationWavyScreen: ; 79735 (1e:5735) call BattleAnimCopyTileMapToVRAM ret -WavyScreen_SetSCX: ; 7977d (1e:577d) +WavyScreen_SetSCX: ld a, [rSTAT] and $3 ; is it H-blank? jr nz, WavyScreen_SetSCX ; wait until it's H-blank @@ -2132,14 +2133,14 @@ WavyScreen_SetSCX: ; 7977d (1e:577d) ld hl, WavyScreenLineOffsets ; go back to the beginning if so ret -WavyScreenLineOffsets: ; 7978e (1e:578e) +WavyScreenLineOffsets: ; Sequence of horizontal line pixel offsets for the wavy screen animation. ; This sequence vaguely resembles a sine wave. db 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 1, 1, 1 db 0, 0, 0, 0, 0, -1, -1, -1, -2, -2, -2, -2, -2, -1, -1, -1 db $80 ; terminator -AnimationSubstitute: ; 797af (1e:57af) +AnimationSubstitute: ; Changes the pokemon's sprite to the mini sprite ld hl, wTempPic xor a @@ -2178,12 +2179,12 @@ AnimationSubstitute: ; 797af (1e:57af) call CopyTempPicToMonPic jp AnimationShowMonPic -CopySlowbroSpriteData: ; 7980e (1e:580e) +CopySlowbroSpriteData: ld bc, $0010 ld a, BANK(SlowbroSprite) jp FarCopyData -HideSubstituteShowMonAnim: ; 79816 (1e:5816) +HideSubstituteShowMonAnim: ld a, [H_WHOSETURN] and a ld hl, wPlayerMonMinimized @@ -2267,12 +2268,12 @@ HideSubstituteShowMonAnim: ; 79816 (1e:5816) jr nz, .loop jp CopyTempPicToMonPic -ReshowSubstituteAnim: ; 798b2 (1e:58b2) +ReshowSubstituteAnim: call AnimationSlideMonOff call AnimationSubstitute jp AnimationShowMonPic -AnimationBoundUpAndDown: ; 798bb (1e:58bb) +AnimationBoundUpAndDown: ; Bounces the mon's sprite up and down several times. It is used ; by Splash's animation. ld c, 5 @@ -2284,7 +2285,7 @@ AnimationBoundUpAndDown: ; 798bb (1e:58bb) jr nz, .loop jp AnimationShowMonPic -AnimationTransformMon: ; 798c8 (1e:58c8) +AnimationTransformMon: ; Redraws this mon's sprite as the back/front sprite of the opposing mon. ; Used in Transform. ld a, [wEnemyMonSpecies] @@ -2292,7 +2293,7 @@ AnimationTransformMon: ; 798c8 (1e:58c8) ld a, [wBattleMonSpecies] ld [wChangeMonPicEnemyTurnSpecies], a -ChangeMonPic: ; 798d4 (1e:58d4) +ChangeMonPic: ld a, [H_WHOSETURN] and a jr z, .playerTurn @@ -2323,7 +2324,7 @@ ChangeMonPic: ; 798d4 (1e:58d4) ld b, SET_PAL_BATTLE jp RunPaletteCommand -AnimationHideEnemyMonPic: ; 79919 (1e:5919) +AnimationHideEnemyMonPic: ; Hides the enemy mon's sprite xor a ld [H_AUTOBGTRANSFERENABLED], a @@ -2333,7 +2334,7 @@ AnimationHideEnemyMonPic: ; 79919 (1e:5919) ld [H_AUTOBGTRANSFERENABLED], a jp Delay3 -Func_79929: ; 79929 (1e:5929) +Func_79929: ld hl, wPlayerMonMinimized ld a, [H_WHOSETURN] and a @@ -2350,7 +2351,7 @@ Func_79929: ; 79929 (1e:5929) call AnimationShowMonPic ret -InitMultipleObjectsOAM: ; 79943 (1e:5943) +InitMultipleObjectsOAM: ; Writes c OAM entries with tile d. ; Sets their Y coordinates to sequential multiples of 8, starting from 0. ; Sets their X coordinates to 0. @@ -2373,7 +2374,7 @@ InitMultipleObjectsOAM: ; 79943 (1e:5943) ret ; unreferenced -AnimationHideMonPic: ; 7995d (1e:595d) +AnimationHideMonPic: ; Hides the mon's sprite. ld a, [H_WHOSETURN] and a @@ -2383,7 +2384,7 @@ AnimationHideMonPic: ; 7995d (1e:595d) .playerTurn ld a, 5 * SCREEN_WIDTH + 1 -ClearMonPicFromTileMap: ; 79968 (1e:5968) +ClearMonPicFromTileMap: push hl push de push bc @@ -2399,9 +2400,9 @@ ClearMonPicFromTileMap: ; 79968 (1e:5968) ret ; puts the tile map destination address of a mon sprite in hl, given the row count in b -; The usual row count is 7, but it may be smaller when sliding a mon sprite in/out, +; The usual row count is 7, but it may be smaller when sliding a mon sprite in/out, ; in order to show only a portion of the mon sprite. -GetMonSpriteTileMapPointerFromRowCount: ; 7997c (1e:597c) +GetMonSpriteTileMapPointerFromRowCount: push de ld a, [H_WHOSETURN] and a @@ -2434,7 +2435,7 @@ GetMonSpriteTileMapPointerFromRowCount: ; 7997c (1e:597c) ; de = tile ID list pointer ; b = number of rows ; c = number of columns -GetTileIDList: ; 7999e (1e:599e) +GetTileIDList: ld hl, TileIDListPointerTable ld e, a ld d, 0 @@ -2455,7 +2456,7 @@ GetTileIDList: ; 7999e (1e:599e) ld b, a ret -AnimCopyRowLeft: ; 798b7 (1e:58b7) +AnimCopyRowLeft: ; copy a row of c tiles 1 tile left ld a, [hld] ld [hli], a @@ -2464,7 +2465,7 @@ AnimCopyRowLeft: ; 798b7 (1e:58b7) jr nz, AnimCopyRowLeft ret -AnimCopyRowRight: ; 799be (1e:59be) +AnimCopyRowRight: ; copy a row of c tiles 1 tile right ld a, [hli] ld [hld], a @@ -2474,234 +2475,235 @@ AnimCopyRowRight: ; 799be (1e:59be) ret ; get the sound of the move id in b -GetMoveSoundB: ; 799c5 (1e:59c5) +GetMoveSoundB: ld a, b call GetMoveSound ld b, a ret -GetMoveSound: ; 799cb (1e:59cb) - ld hl,MoveSoundTable - ld e,a - ld d,0 - add hl,de - add hl,de - add hl,de - ld a,[hli] - ld b,a +GetMoveSound: + ld hl, MoveSoundTable + ld e, a + ld d, 0 + add hl, de + add hl, de + add hl, de + ld a, [hli] + ld b, a call IsCryMove - jr nc,.NotCryMove - ld a,[H_WHOSETURN] + jr nc, .NotCryMove + ld a, [H_WHOSETURN] and a - jr nz,.next - ld a,[wBattleMonSpecies] ; get number of current monster + jr nz, .next + ld a, [wBattleMonSpecies] ; get number of current monster jr .Continue .next - ld a,[wEnemyMonSpecies] + ld a, [wEnemyMonSpecies] .Continue push hl call GetCryData - ld b,a + ld b, a pop hl - ld a,[wFrequencyModifier] + ld a, [wFrequencyModifier] add [hl] - ld [wFrequencyModifier],a + ld [wFrequencyModifier], a inc hl - ld a,[wTempoModifier] + ld a, [wTempoModifier] add [hl] - ld [wTempoModifier],a + ld [wTempoModifier], a jr .done .NotCryMove - ld a,[hli] - ld [wFrequencyModifier],a - ld a,[hli] - ld [wTempoModifier],a + ld a, [hli] + ld [wFrequencyModifier], a + ld a, [hli] + ld [wTempoModifier], a .done - ld a,b + ld a, b ret -IsCryMove: ; 79a09 (1e:5a09) +IsCryMove: ; set carry if the move animation involves playing a monster cry - ld a,[wAnimationID] - cp a,GROWL - jr z,.CryMove - cp a,ROAR - jr z,.CryMove + ld a, [wAnimationID] + cp a, GROWL + jr z, .CryMove + cp a, ROAR + jr z, .CryMove and a ; clear carry ret .CryMove scf ret -MoveSoundTable: ; 79a18 (1e:5a18) - db SFX_POUND, $00,$80 ; POUND - db SFX_BATTLE_0C, $10,$80 ; KARATE_CHOP - db SFX_DOUBLESLAP, $00,$80 ; DOUBLESLAP - db SFX_BATTLE_0B, $01,$80 ; COMET_PUNCH - db SFX_BATTLE_0D, $00,$40 ; MEGA_PUNCH - db SFX_SILPH_SCOPE, $00,$ff ; PAY_DAY - db SFX_BATTLE_0D, $10,$60 ; FIRE_PUNCH - db SFX_BATTLE_0D, $20,$80 ; ICE_PUNCH - db SFX_BATTLE_0D, $00,$a0 ; THUNDERPUNCH - db SFX_DAMAGE, $00,$80 ; SCRATCH - db SFX_BATTLE_0F, $20,$40 ; VICEGRIP - db SFX_BATTLE_0F, $00,$80 ; GUILLOTINE - db SFX_BATTLE_0E, $00,$a0 ; RAZOR_WIND - db SFX_NOT_VERY_EFFECTIVE,$10,$c0 ; SWORDS_DANCE - db SFX_NOT_VERY_EFFECTIVE,$00,$a0 ; CUT - db SFX_BATTLE_12, $00,$c0 ; GUST - db SFX_BATTLE_12, $10,$a0 ; WING_ATTACK - db SFX_BATTLE_13, $00,$e0 ; WHIRLWIND - db SFX_NOT_VERY_EFFECTIVE,$20,$c0 ; FLY - db SFX_BATTLE_14, $00,$80 ; BIND - db SFX_BATTLE_22, $00,$80 ; SLAM - db SFX_VINE_WHIP, $01,$80 ; VINE_WHIP - db SFX_BATTLE_20, $00,$80 ; STOMP - db SFX_BATTLE_17, $f0,$40 ; DOUBLE_KICK - db SFX_SUPER_EFFECTIVE, $00,$80 ; MEGA_KICK - db SFX_BATTLE_17, $00,$80 ; JUMP_KICK - db SFX_BATTLE_21, $10,$80 ; ROLLING_KICK - db SFX_BATTLE_1B, $01,$a0 ; SAND_ATTACK - db SFX_BATTLE_18, $00,$80 ; HEADBUTT - db SFX_BATTLE_1E, $00,$60 ; HORN_ATTACK - db SFX_BATTLE_1E, $01,$40 ; FURY_ATTACK - db SFX_HORN_DRILL, $00,$a0 ; HORN_DRILL - db SFX_SUPER_EFFECTIVE, $10,$a0 ; TACKLE - db SFX_BATTLE_20, $00,$c0 ; BODY_SLAM - db SFX_BATTLE_14, $10,$60 ; WRAP - db SFX_SUPER_EFFECTIVE, $00,$a0 ; TAKE_DOWN - db SFX_BATTLE_22, $11,$c0 ; THRASH - db SFX_SUPER_EFFECTIVE, $20,$c0 ; DOUBLE_EDGE - db SFX_BATTLE_21, $00,$80 ; TAIL_WHIP - db SFX_BATTLE_1B, $00,$80 ; POISON_STING - db SFX_BATTLE_1B, $20,$c0 ; TWINEEDLE - db SFX_BATTLE_19, $00,$80 ; PIN_MISSILE - db SFX_BATTLE_31, $ff,$40 ; LEER - db SFX_BATTLE_1E, $00,$80 ; BITE - db SFX_BATTLE_0B, $00,$c0 ; GROWL - db SFX_BATTLE_0B, $00,$40 ; ROAR - db SFX_BATTLE_35, $00,$80 ; SING - db SFX_BATTLE_27, $40,$60 ; SUPERSONIC - db SFX_BATTLE_27, $00,$80 ; SONICBOOM - db SFX_BATTLE_27, $ff,$40 ; DISABLE - db SFX_BATTLE_2A, $80,$c0 ; ACID - db SFX_BATTLE_19, $10,$a0 ; EMBER - db SFX_BATTLE_19, $21,$e0 ; FLAMETHROWER - db SFX_BATTLE_29, $00,$80 ; MIST - db SFX_BATTLE_24, $20,$60 ; WATER_GUN - db SFX_BATTLE_2A, $00,$80 ; HYDRO_PUMP - db SFX_BATTLE_2C, $00,$80 ; SURF - db SFX_BATTLE_28, $40,$80 ; ICE_BEAM - db SFX_BATTLE_29, $f0,$e0 ; BLIZZARD - db SFX_PSYBEAM, $00,$80 ; PSYBEAM - db SFX_BATTLE_2A, $f0,$60 ; BUBBLEBEAM - db SFX_BATTLE_28, $00,$80 ; AURORA_BEAM - db SFX_BATTLE_36, $00,$80 ; HYPER_BEAM - db SFX_PECK,$01, $a0 ; PECK - db SFX_BATTLE_13, $f0,$20 ; DRILL_PECK - db SFX_BATTLE_23, $01,$c0 ; SUBMISSION - db SFX_BATTLE_23, $00,$80 ; LOW_KICK - db SFX_SUPER_EFFECTIVE, $00,$e0 ; COUNTER - db SFX_BATTLE_26, $01,$60 ; SEISMIC_TOSS - db SFX_BATTLE_26, $20,$40 ; STRENGTH - db SFX_BATTLE_24, $00,$80 ; ABSORB - db SFX_BATTLE_24, $40,$c0 ; MEGA_DRAIN - db SFX_BATTLE_1B, $03,$60 ; LEECH_SEED - db SFX_BATTLE_25, $11,$e0 ; GROWTH - db SFX_BATTLE_12, $20,$e0 ; RAZOR_LEAF - db SFX_BATTLE_2E, $00,$80 ; SOLARBEAM - db SFX_BATTLE_1C, $00,$80 ; POISONPOWDER - db SFX_BATTLE_1C, $11,$a0 ; STUN_SPORE - db SFX_BATTLE_1C, $01,$c0 ; SLEEP_POWDER - db SFX_BATTLE_13, $14,$c0 ; PETAL_DANCE - db SFX_BATTLE_1B, $02,$a0 ; STRING_SHOT - db SFX_BATTLE_29, $f0,$80 ; DRAGON_RAGE - db SFX_BATTLE_29, $20,$c0 ; FIRE_SPIN - db SFX_BATTLE_2F, $00,$20 ; THUNDERSHOCK - db SFX_BATTLE_2F, $20,$80 ; THUNDERBOLT - db SFX_BATTLE_2E, $12,$60 ; THUNDER_WAVE - db SFX_BATTLE_26, $00,$80 ; THUNDER - db SFX_BATTLE_14, $01,$e0 ; ROCK_THROW - db SFX_BATTLE_29, $0f,$e0 ; EARTHQUAKE - db SFX_BATTLE_29, $11,$20 ; FISSURE - db SFX_DAMAGE, $10,$40 ; DIG - db SFX_BATTLE_0F, $10,$c0 ; TOXIC - db SFX_BATTLE_14, $00,$20 ; CONFUSION - db SFX_PSYCHIC_M, $00,$80 ; PSYCHIC_M - db SFX_BATTLE_35, $11,$18 ; HYPNOSIS - db SFX_BATTLE_09, $20,$c0 ; MEDITATE - db SFX_FAINT_FALL, $20,$c0 ; AGILITY - db SFX_BATTLE_25, $00,$10 ; QUICK_ATTACK - db SFX_BATTLE_26, $f0,$20 ; RAGE - db SFX_BATTLE_33, $f0,$c0 ; TELEPORT - db SFX_NOT_VERY_EFFECTIVE,$f0,$e0 ; NIGHT_SHADE - db SFX_BATTLE_09, $f0,$40 ; MIMIC - db SFX_BATTLE_31, $00,$80 ; SCREECH - db SFX_BATTLE_33, $80,$40 ; DOUBLE_TEAM - db SFX_BATTLE_33, $00,$80 ; RECOVER - db SFX_BATTLE_14, $11,$20 ; HARDEN - db SFX_BATTLE_14, $22,$10 ; MINIMIZE - db SFX_BATTLE_1B, $f1,$ff ; SMOKESCREEN - db SFX_BATTLE_13, $f1,$ff ; CONFUSE_RAY - db SFX_BATTLE_14, $33,$30 ; WITHDRAW - db SFX_BATTLE_32, $40,$c0 ; DEFENSE_CURL - db SFX_BATTLE_0E, $20,$20 ; BARRIER - db SFX_BATTLE_0E, $f0,$10 ; LIGHT_SCREEN - db SFX_BATTLE_0F, $f8,$10 ; HAZE - db SFX_NOT_VERY_EFFECTIVE,$f0,$10 ; REFLECT - db SFX_BATTLE_25, $00,$80 ; FOCUS_ENERGY - db SFX_BATTLE_18, $00,$c0 ; BIDE - db SFX_BATTLE_32, $c0,$ff ; METRONOME - db SFX_BATTLE_09, $f2,$20 ; MIRROR_MOVE - db SFX_BATTLE_34, $00,$80 ; SELFDESTRUCT - db SFX_BATTLE_34, $00,$40 ; EGG_BOMB - db SFX_BATTLE_09, $00,$40 ; LICK - db SFX_NOT_VERY_EFFECTIVE,$10,$ff ; SMOG - db SFX_BATTLE_2A, $20,$20 ; SLUDGE - db SFX_BATTLE_32, $00,$80 ; BONE_CLUB - db SFX_BATTLE_29, $1f,$20 ; FIRE_BLAST - db SFX_BATTLE_25, $2f,$80 ; WATERFALL - db SFX_BATTLE_0F, $1f,$ff ; CLAMP - db SFX_BATTLE_2B, $1f,$60 ; SWIFT - db SFX_BATTLE_26, $1e,$20 ; SKULL_BASH - db SFX_BATTLE_26, $1f,$18 ; SPIKE_CANNON - db SFX_BATTLE_14, $0f,$80 ; CONSTRICT - db SFX_BATTLE_09, $f8,$10 ; AMNESIA - db SFX_FAINT_FALL, $18,$20 ; KINESIS - db SFX_BATTLE_32, $08,$40 ; SOFTBOILED - db SFX_BATTLE_17, $01,$e0 ; HI_JUMP_KICK - db SFX_NOT_VERY_EFFECTIVE,$09,$ff ; GLARE - db SFX_BATTLE_35, $42,$01 ; DREAM_EATER - db SFX_BATTLE_1C, $00,$ff ; POISON_GAS - db SFX_BATTLE_32, $08,$e0 ; BARRAGE - db SFX_BATTLE_24, $00,$80 ; LEECH_LIFE - db SFX_BATTLE_09, $88,$10 ; LOVELY_KISS - db SFX_BATTLE_25, $48,$ff ; SKY_ATTACK - db SFX_FAINT_FALL, $ff,$ff ; TRANSFORM - db SFX_BATTLE_24, $ff,$10 ; BUBBLE - db SFX_FAINT_FALL, $ff,$04 ; DIZZY_PUNCH - db SFX_BATTLE_1C, $01,$ff ; SPORE - db SFX_BATTLE_13, $f8,$ff ; FLASH - db SFX_BATTLE_0C, $f0,$f0 ; PSYWAVE - db SFX_BATTLE_0F, $08,$10 ; SPLASH - db SFX_BATTLE_0D, $f0,$ff ; ACID_ARMOR - db SFX_SUPER_EFFECTIVE, $f0,$ff ; CRABHAMMER - db SFX_BATTLE_34, $10,$ff ; EXPLOSION - db SFX_BATTLE_0E, $f0,$20 ; FURY_SWIPES - db SFX_BATTLE_2B, $f0,$60 ; BONEMERANG - db SFX_BATTLE_21, $12,$10 ; REST - db SFX_BATTLE_36, $f0,$20 ; ROCK_SLIDE - db SFX_BATTLE_1E, $12,$ff ; HYPER_FANG - db SFX_BATTLE_31, $80,$04 ; SHARPEN - db SFX_BATTLE_33, $f0,$10 ; CONVERSION - db SFX_BATTLE_29, $f8,$ff ; TRI_ATTACK - db SFX_BATTLE_26, $f0,$ff ; SUPER_FANG - db SFX_NOT_VERY_EFFECTIVE,$01,$ff ; SLASH - db SFX_BATTLE_2C, $d8,$04 ; SUBSTITUTE - db SFX_BATTLE_0B, $00,$80 ; STRUGGLE - db SFX_BATTLE_0B, $00,$80 - -CopyPicTiles: ; 79c0a (1e:5c0a) +MoveSoundTable: + ; ID, pitch mod, tempo mod + db SFX_POUND, $00, $80 ; POUND + db SFX_BATTLE_0C, $10, $80 ; KARATE_CHOP + db SFX_DOUBLESLAP, $00, $80 ; DOUBLESLAP + db SFX_BATTLE_0B, $01, $80 ; COMET_PUNCH + db SFX_BATTLE_0D, $00, $40 ; MEGA_PUNCH + db SFX_SILPH_SCOPE, $00, $ff ; PAY_DAY + db SFX_BATTLE_0D, $10, $60 ; FIRE_PUNCH + db SFX_BATTLE_0D, $20, $80 ; ICE_PUNCH + db SFX_BATTLE_0D, $00, $a0 ; THUNDERPUNCH + db SFX_DAMAGE, $00, $80 ; SCRATCH + db SFX_BATTLE_0F, $20, $40 ; VICEGRIP + db SFX_BATTLE_0F, $00, $80 ; GUILLOTINE + db SFX_BATTLE_0E, $00, $a0 ; RAZOR_WIND + db SFX_NOT_VERY_EFFECTIVE, $10, $c0 ; SWORDS_DANCE + db SFX_NOT_VERY_EFFECTIVE, $00, $a0 ; CUT + db SFX_BATTLE_12, $00, $c0 ; GUST + db SFX_BATTLE_12, $10, $a0 ; WING_ATTACK + db SFX_BATTLE_13, $00, $e0 ; WHIRLWIND + db SFX_NOT_VERY_EFFECTIVE, $20, $c0 ; FLY + db SFX_BATTLE_14, $00, $80 ; BIND + db SFX_BATTLE_22, $00, $80 ; SLAM + db SFX_VINE_WHIP, $01, $80 ; VINE_WHIP + db SFX_BATTLE_20, $00, $80 ; STOMP + db SFX_BATTLE_17, $f0, $40 ; DOUBLE_KICK + db SFX_SUPER_EFFECTIVE, $00, $80 ; MEGA_KICK + db SFX_BATTLE_17, $00, $80 ; JUMP_KICK + db SFX_BATTLE_21, $10, $80 ; ROLLING_KICK + db SFX_BATTLE_1B, $01, $a0 ; SAND_ATTACK + db SFX_BATTLE_18, $00, $80 ; HEADBUTT + db SFX_BATTLE_1E, $00, $60 ; HORN_ATTACK + db SFX_BATTLE_1E, $01, $40 ; FURY_ATTACK + db SFX_HORN_DRILL, $00, $a0 ; HORN_DRILL + db SFX_SUPER_EFFECTIVE, $10, $a0 ; TACKLE + db SFX_BATTLE_20, $00, $c0 ; BODY_SLAM + db SFX_BATTLE_14, $10, $60 ; WRAP + db SFX_SUPER_EFFECTIVE, $00, $a0 ; TAKE_DOWN + db SFX_BATTLE_22, $11, $c0 ; THRASH + db SFX_SUPER_EFFECTIVE, $20, $c0 ; DOUBLE_EDGE + db SFX_BATTLE_21, $00, $80 ; TAIL_WHIP + db SFX_BATTLE_1B, $00, $80 ; POISON_STING + db SFX_BATTLE_1B, $20, $c0 ; TWINEEDLE + db SFX_BATTLE_19, $00, $80 ; PIN_MISSILE + db SFX_BATTLE_31, $ff, $40 ; LEER + db SFX_BATTLE_1E, $00, $80 ; BITE + db SFX_BATTLE_0B, $00, $c0 ; GROWL + db SFX_BATTLE_0B, $00, $40 ; ROAR + db SFX_BATTLE_35, $00, $80 ; SING + db SFX_BATTLE_27, $40, $60 ; SUPERSONIC + db SFX_BATTLE_27, $00, $80 ; SONICBOOM + db SFX_BATTLE_27, $ff, $40 ; DISABLE + db SFX_BATTLE_2A, $80, $c0 ; ACID + db SFX_BATTLE_19, $10, $a0 ; EMBER + db SFX_BATTLE_19, $21, $e0 ; FLAMETHROWER + db SFX_EARTHQUAKE, $00, $80 ; MIST + db SFX_BATTLE_24, $20, $60 ; WATER_GUN + db SFX_BATTLE_2A, $00, $80 ; HYDRO_PUMP + db SFX_BATTLE_2C, $00, $80 ; SURF + db SFX_BATTLE_28, $40, $80 ; ICE_BEAM + db SFX_EARTHQUAKE, $f0, $e0 ; BLIZZARD + db SFX_PSYBEAM, $00, $80 ; PSYBEAM + db SFX_BATTLE_2A, $f0, $60 ; BUBBLEBEAM + db SFX_BATTLE_28, $00, $80 ; AURORA_BEAM + db SFX_BATTLE_36, $00, $80 ; HYPER_BEAM + db SFX_PECK, $01, $a0 ; PECK + db SFX_BATTLE_13, $f0, $20 ; DRILL_PECK + db SFX_BATTLE_23, $01, $c0 ; SUBMISSION + db SFX_BATTLE_23, $00, $80 ; LOW_KICK + db SFX_SUPER_EFFECTIVE, $00, $e0 ; COUNTER + db SFX_BATTLE_26, $01, $60 ; SEISMIC_TOSS + db SFX_BATTLE_26, $20, $40 ; STRENGTH + db SFX_BATTLE_24, $00, $80 ; ABSORB + db SFX_BATTLE_24, $40, $c0 ; MEGA_DRAIN + db SFX_BATTLE_1B, $03, $60 ; LEECH_SEED + db SFX_BATTLE_25, $11, $e0 ; GROWTH + db SFX_BATTLE_12, $20, $e0 ; RAZOR_LEAF + db SFX_BATTLE_2E, $00, $80 ; SOLARBEAM + db SFX_BATTLE_1C, $00, $80 ; POISONPOWDER + db SFX_BATTLE_1C, $11, $a0 ; STUN_SPORE + db SFX_BATTLE_1C, $01, $c0 ; SLEEP_POWDER + db SFX_BATTLE_13, $14, $c0 ; PETAL_DANCE + db SFX_BATTLE_1B, $02, $a0 ; STRING_SHOT + db SFX_EARTHQUAKE, $f0, $80 ; DRAGON_RAGE + db SFX_EARTHQUAKE, $20, $c0 ; FIRE_SPIN + db SFX_THUNDERBOLT, $00, $20 ; THUNDERSHOCK + db SFX_THUNDERBOLT, $20, $80 ; THUNDERBOLT + db SFX_BATTLE_2E, $12, $60 ; THUNDER_WAVE + db SFX_BATTLE_26, $00, $80 ; THUNDER + db SFX_BATTLE_14, $01, $e0 ; ROCK_THROW + db SFX_EARTHQUAKE, $0f, $e0 ; EARTHQUAKE + db SFX_EARTHQUAKE, $11, $20 ; FISSURE + db SFX_DAMAGE, $10, $40 ; DIG + db SFX_BATTLE_0F, $10, $c0 ; TOXIC + db SFX_BATTLE_14, $00, $20 ; CONFUSION + db SFX_PSYCHIC_M, $00, $80 ; PSYCHIC_M + db SFX_BATTLE_35, $11, $18 ; HYPNOSIS + db SFX_BATTLE_09, $20, $c0 ; MEDITATE + db SFX_FAINT_FALL, $20, $c0 ; AGILITY + db SFX_BATTLE_25, $00, $10 ; QUICK_ATTACK + db SFX_BATTLE_26, $f0, $20 ; RAGE + db SFX_BATTLE_33, $f0, $c0 ; TELEPORT + db SFX_NOT_VERY_EFFECTIVE, $f0, $e0 ; NIGHT_SHADE + db SFX_BATTLE_09, $f0, $40 ; MIMIC + db SFX_BATTLE_31, $00, $80 ; SCREECH + db SFX_BATTLE_33, $80, $40 ; DOUBLE_TEAM + db SFX_BATTLE_33, $00, $80 ; RECOVER + db SFX_BATTLE_14, $11, $20 ; HARDEN + db SFX_BATTLE_14, $22, $10 ; MINIMIZE + db SFX_BATTLE_1B, $f1, $ff ; SMOKESCREEN + db SFX_BATTLE_13, $f1, $ff ; CONFUSE_RAY + db SFX_BATTLE_14, $33, $30 ; WITHDRAW + db SFX_BATTLE_32, $40, $c0 ; DEFENSE_CURL + db SFX_BATTLE_0E, $20, $20 ; BARRIER + db SFX_BATTLE_0E, $f0, $10 ; LIGHT_SCREEN + db SFX_BATTLE_0F, $f8, $10 ; HAZE + db SFX_NOT_VERY_EFFECTIVE, $f0, $10 ; REFLECT + db SFX_BATTLE_25, $00, $80 ; FOCUS_ENERGY + db SFX_BATTLE_18, $00, $c0 ; BIDE + db SFX_BATTLE_32, $c0, $ff ; METRONOME + db SFX_BATTLE_09, $f2, $20 ; MIRROR_MOVE + db SFX_BATTLE_34, $00, $80 ; SELFDESTRUCT + db SFX_BATTLE_34, $00, $40 ; EGG_BOMB + db SFX_BATTLE_09, $00, $40 ; LICK + db SFX_NOT_VERY_EFFECTIVE, $10, $ff ; SMOG + db SFX_BATTLE_2A, $20, $20 ; SLUDGE + db SFX_BATTLE_32, $00, $80 ; BONE_CLUB + db SFX_EARTHQUAKE, $1f, $20 ; FIRE_BLAST + db SFX_BATTLE_25, $2f, $80 ; WATERFALL + db SFX_BATTLE_0F, $1f, $ff ; CLAMP + db SFX_BATTLE_2B, $1f, $60 ; SWIFT + db SFX_BATTLE_26, $1e, $20 ; SKULL_BASH + db SFX_BATTLE_26, $1f, $18 ; SPIKE_CANNON + db SFX_BATTLE_14, $0f, $80 ; CONSTRICT + db SFX_BATTLE_09, $f8, $10 ; AMNESIA + db SFX_FAINT_FALL, $18, $20 ; KINESIS + db SFX_BATTLE_32, $08, $40 ; SOFTBOILED + db SFX_BATTLE_17, $01, $e0 ; HI_JUMP_KICK + db SFX_NOT_VERY_EFFECTIVE, $09, $ff ; GLARE + db SFX_BATTLE_35, $42, $01 ; DREAM_EATER + db SFX_BATTLE_1C, $00, $ff ; POISON_GAS + db SFX_BATTLE_32, $08, $e0 ; BARRAGE + db SFX_BATTLE_24, $00, $80 ; LEECH_LIFE + db SFX_BATTLE_09, $88, $10 ; LOVELY_KISS + db SFX_BATTLE_25, $48, $ff ; SKY_ATTACK + db SFX_FAINT_FALL, $ff, $ff ; TRANSFORM + db SFX_BATTLE_24, $ff, $10 ; BUBBLE + db SFX_FAINT_FALL, $ff, $04 ; DIZZY_PUNCH + db SFX_BATTLE_1C, $01, $ff ; SPORE + db SFX_BATTLE_13, $f8, $ff ; FLASH + db SFX_BATTLE_0C, $f0, $f0 ; PSYWAVE + db SFX_BATTLE_0F, $08, $10 ; SPLASH + db SFX_BATTLE_0D, $f0, $ff ; ACID_ARMOR + db SFX_SUPER_EFFECTIVE, $f0, $ff ; CRABHAMMER + db SFX_BATTLE_34, $10, $ff ; EXPLOSION + db SFX_BATTLE_0E, $f0, $20 ; FURY_SWIPES + db SFX_BATTLE_2B, $f0, $60 ; BONEMERANG + db SFX_BATTLE_21, $12, $10 ; REST + db SFX_BATTLE_36, $f0, $20 ; ROCK_SLIDE + db SFX_BATTLE_1E, $12, $ff ; HYPER_FANG + db SFX_BATTLE_31, $80, $04 ; SHARPEN + db SFX_BATTLE_33, $f0, $10 ; CONVERSION + db SFX_EARTHQUAKE, $f8, $ff ; TRI_ATTACK + db SFX_BATTLE_26, $f0, $ff ; SUPER_FANG + db SFX_NOT_VERY_EFFECTIVE, $01, $ff ; SLASH + db SFX_BATTLE_2C, $d8, $04 ; SUBSTITUTE + db SFX_BATTLE_0B, $00, $80 ; STRUGGLE + db SFX_BATTLE_0B, $00, $80 + +CopyPicTiles: ld a, [H_WHOSETURN] and a ld a, $31 ; base tile ID of player mon sprite @@ -2713,7 +2715,7 @@ CopyPicTiles: ; 79c0a (1e:5c0a) jr CopyTileIDs_NoBGTransfer ; copy the tiles used when a mon is being sent out of or into a pokeball -CopyDownscaledMonTiles: ; 79c16 (1e:5c16) +CopyDownscaledMonTiles: call GetPredefRegisters ld a, [wDownscaledMonSize] and a @@ -2724,14 +2726,14 @@ CopyDownscaledMonTiles: ; 79c16 (1e:5c16) ld de, DownscaledMonTiles_3x3 ; fall through -CopyTileIDs_NoBGTransfer: ; 79acb (1e:5acb) +CopyTileIDs_NoBGTransfer: xor a ld [H_AUTOBGTRANSFERENABLED], a ; fall through ; b = number of rows ; c = number of columns -CopyTileIDs: ; 79ace (1e:5ace) +CopyTileIDs: push hl .rowLoop push bc @@ -2756,100 +2758,100 @@ CopyTileIDs: ; 79ace (1e:5ace) pop hl ret -TileIDListPointerTable: ; 79c46 (1e:5c46) +TileIDListPointerTable: dw DownscaledMonTiles_7x7 - db $77 + dn 7, 7 dw DownscaledMonTiles_5x7 - db $57 + dn 5, 7 dw DownscaledMonTiles_3x7 - db $37 + dn 3, 7 dw DownscaledMonTiles_79ce9 - db $77 + dn 7, 7 dw DownscaledMonTiles_79d1a - db $77 + dn 7, 7 dw DownscaledMonTiles_79d4b - db $77 + dn 7, 7 dw DownscaledMonTiles_79d7c - db $86 + dn 8, 6 dw DownscaledMonTiles_79dac - db $3C - -DownscaledMonTiles_5x5: ; 79b02 (1e:5b02) - db $31,$38,$46,$54,$5B - db $32,$39,$47,$55,$5C - db $34,$3B,$49,$57,$5E - db $36,$3D,$4B,$59,$60 - db $37,$3E,$4C,$5A,$61 - -DownscaledMonTiles_3x3: ; 79b1b (1e:5b1b) - db $31,$46,$5B - db $34,$49,$5E - db $37,$4C,$61 - -DownscaledMonTiles_7x7: ; 79c80 (1e:5c80) - db $00,$07,$0E,$15,$1C,$23,$2A - db $01,$08,$0F,$16,$1D,$24,$2B - db $02,$09,$10,$17,$1E,$25,$2C - db $03,$0A,$11,$18,$1F,$26,$2D - db $04,$0B,$12,$19,$20,$27,$2E - db $05,$0C,$13,$1A,$21,$28,$2F - db $06,$0D,$14,$1B,$22,$29,$30 - -DownscaledMonTiles_5x7: ; 79cb1 (1e:5cb1) - db $00,$07,$0E,$15,$1C,$23,$2A - db $01,$08,$0F,$16,$1D,$24,$2B - db $03,$0A,$11,$18,$1F,$26,$2D - db $04,$0B,$12,$19,$20,$27,$2E - db $05,$0C,$13,$1A,$21,$28,$2F - -DownscaledMonTiles_3x7: ; 79cd4 (1e:5cd4) - db $00,$07,$0E,$15,$1C,$23,$2A - db $02,$09,$10,$17,$1E,$25,$2C - db $04,$0B,$12,$19,$20,$27,$2E - -DownscaledMonTiles_79ce9: ; 79ce9 (1e:5ce9) - db $00,$00,$00,$00,$00,$00,$00 - db $00,$00,$00,$00,$00,$19,$00 - db $02,$06,$0B,$10,$14,$1A,$00 - db $00,$07,$0C,$11,$15,$1B,$00 - db $03,$08,$0D,$12,$16,$1C,$00 - db $04,$09,$0E,$13,$17,$1D,$1F - db $05,$0A,$0F,$01,$18,$1E,$20 - -DownscaledMonTiles_79d1a: ; 79d1a (1e:5d1a) - db $00,$00,$00,$30,$00,$37,$00 - db $00,$00,$2B,$31,$34,$38,$3D - db $21,$26,$2C,$01,$35,$39,$3E - db $22,$27,$2D,$32,$36,$01,$00 - db $23,$28,$2E,$33,$01,$3A,$00 - db $24,$29,$2F,$01,$01,$3B,$00 - db $25,$2A,$01,$01,$01,$3C,$00 - -DownscaledMonTiles_79d4b: ; 79d4b (1e:5d4b) - db $00,$00,$00,$00,$00,$00,$00 - db $00,$00,$47,$4D,$00,$00,$00 - db $00,$00,$48,$4E,$52,$56,$5B - db $3F,$43,$49,$4F,$53,$57,$5C - db $40,$44,$4A,$50,$54,$58,$00 - db $41,$45,$4B,$51,$4C,$59,$5D - db $42,$46,$4C,$4C,$55,$5A,$5E - -DownscaledMonTiles_79d7c: ; 79d7c (1e:5d7c) - db $31,$32,$32,$32,$32,$33 - db $34,$35,$36,$36,$37,$38 - db $34,$39,$3A,$3A,$3B,$38 - db $3C,$3D,$3E,$3E,$3F,$40 - db $41,$42,$43,$43,$44,$45 - db $46,$47,$43,$48,$49,$4A - db $41,$43,$4B,$4C,$4D,$4E - db $4F,$50,$50,$50,$51,$52 - -DownscaledMonTiles_79dac: ; 79dac (1e:5dac) - db $43,$55,$56,$53,$53,$53,$53,$53,$53,$53,$53,$53 - db $43,$57,$58,$54,$54,$54,$54,$54,$54,$54,$54,$54 - db $43,$59,$5A,$43,$43,$43,$43,$43,$43,$43,$43,$43 - -AnimationLeavesFalling: ; 79dd0 (1e:5dd0) + dn 3, 12 + +DownscaledMonTiles_5x5: + db $31, $38, $46, $54, $5B + db $32, $39, $47, $55, $5C + db $34, $3B, $49, $57, $5E + db $36, $3D, $4B, $59, $60 + db $37, $3E, $4C, $5A, $61 + +DownscaledMonTiles_3x3: + db $31, $46, $5B + db $34, $49, $5E + db $37, $4C, $61 + +DownscaledMonTiles_7x7: + db $00, $07, $0E, $15, $1C, $23, $2A + db $01, $08, $0F, $16, $1D, $24, $2B + db $02, $09, $10, $17, $1E, $25, $2C + db $03, $0A, $11, $18, $1F, $26, $2D + db $04, $0B, $12, $19, $20, $27, $2E + db $05, $0C, $13, $1A, $21, $28, $2F + db $06, $0D, $14, $1B, $22, $29, $30 + +DownscaledMonTiles_5x7: + db $00, $07, $0E, $15, $1C, $23, $2A + db $01, $08, $0F, $16, $1D, $24, $2B + db $03, $0A, $11, $18, $1F, $26, $2D + db $04, $0B, $12, $19, $20, $27, $2E + db $05, $0C, $13, $1A, $21, $28, $2F + +DownscaledMonTiles_3x7: + db $00, $07, $0E, $15, $1C, $23, $2A + db $02, $09, $10, $17, $1E, $25, $2C + db $04, $0B, $12, $19, $20, $27, $2E + +DownscaledMonTiles_79ce9: + db $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $00, $00, $00, $19, $00 + db $02, $06, $0B, $10, $14, $1A, $00 + db $00, $07, $0C, $11, $15, $1B, $00 + db $03, $08, $0D, $12, $16, $1C, $00 + db $04, $09, $0E, $13, $17, $1D, $1F + db $05, $0A, $0F, $01, $18, $1E, $20 + +DownscaledMonTiles_79d1a: + db $00, $00, $00, $30, $00, $37, $00 + db $00, $00, $2B, $31, $34, $38, $3D + db $21, $26, $2C, $01, $35, $39, $3E + db $22, $27, $2D, $32, $36, $01, $00 + db $23, $28, $2E, $33, $01, $3A, $00 + db $24, $29, $2F, $01, $01, $3B, $00 + db $25, $2A, $01, $01, $01, $3C, $00 + +DownscaledMonTiles_79d4b: + db $00, $00, $00, $00, $00, $00, $00 + db $00, $00, $47, $4D, $00, $00, $00 + db $00, $00, $48, $4E, $52, $56, $5B + db $3F, $43, $49, $4F, $53, $57, $5C + db $40, $44, $4A, $50, $54, $58, $00 + db $41, $45, $4B, $51, $4C, $59, $5D + db $42, $46, $4C, $4C, $55, $5A, $5E + +DownscaledMonTiles_79d7c: + db $31, $32, $32, $32, $32, $33 + db $34, $35, $36, $36, $37, $38 + db $34, $39, $3A, $3A, $3B, $38 + db $3C, $3D, $3E, $3E, $3F, $40 + db $41, $42, $43, $43, $44, $45 + db $46, $47, $43, $48, $49, $4A + db $41, $43, $4B, $4C, $4D, $4E + db $4F, $50, $50, $50, $51, $52 + +DownscaledMonTiles_79dac: + db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53 + db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54 + db $43, $59, $5A, $43, $43, $43, $43, $43, $43, $43, $43, $43 + +AnimationLeavesFalling: ; Makes leaves float down from the top of the screen. This is used ; in Razor Leaf's animation. ld a, [wAnimPalette] @@ -2860,7 +2862,7 @@ AnimationLeavesFalling: ; 79dd0 (1e:5dd0) ld [wNumFallingObjects], a jp AnimationFallingObjects -AnimationPetalsFalling: ; 79de2 (1e:5de2) +AnimationPetalsFalling: ; Makes lots of petals fall down from the top of the screen. It's used in ; the animation for Petal Dance. ld d, $71 ; petal tile @@ -2869,7 +2871,7 @@ AnimationPetalsFalling: ; 79de2 (1e:5de2) call AnimationFallingObjects jp ClearSprites -AnimationFallingObjects: ; 79def (1e:5def) +AnimationFallingObjects: ld c, a ld a, 1 call InitMultipleObjectsOAM @@ -2908,7 +2910,7 @@ AnimationFallingObjects: ; 79def (1e:5def) jr nz, .loop ; keep moving the falling objects down until it does ret -FallingObjects_UpdateOAMEntry: ; 79cdb (1e:5cdb) +FallingObjects_UpdateOAMEntry: ; Increases Y by 2 pixels and adjusts X and X flip based on the falling object's ; movement byte. ld hl, wOAMBuffer @@ -2977,10 +2979,10 @@ FallingObjects_UpdateOAMEntry: ; 79cdb (1e:5cdb) ld [hl], a ; attribute ret -FallingObjects_DeltaXs: ; 79e96 (1e:5e96) +FallingObjects_DeltaXs: db 0, 1, 3, 5, 7, 9, 11, 13, 15 -FallingObjects_UpdateMovementByte: ; 79e9f (1e:5e9f) +FallingObjects_UpdateMovementByte: ld a, [wFallingObjectMovementByte] inc a ld b, a @@ -2996,7 +2998,7 @@ FallingObjects_UpdateMovementByte: ; 79e9f (1e:5e9f) ld [wFallingObjectMovementByte], a ret -FallingObjects_InitXCoords: ; 79eb3 (1e:5eb3) +FallingObjects_InitXCoords: ld hl, wOAMBuffer + $01 ld de, FallingObjects_InitialXCoords ld a, [wNumFallingObjects] @@ -3012,10 +3014,10 @@ FallingObjects_InitXCoords: ; 79eb3 (1e:5eb3) jr nz, .loop ret -FallingObjects_InitialXCoords: ; 79ec7 (1e:5ec7) - db $38,$40,$50,$60,$70,$88,$90,$56,$67,$4A,$77,$84,$98,$32,$22,$5C,$6C,$7D,$8E,$99 +FallingObjects_InitialXCoords: + db $38, $40, $50, $60, $70, $88, $90, $56, $67, $4A, $77, $84, $98, $32, $22, $5C, $6C, $7D, $8E, $99 -FallingObjects_InitMovementData: ; 79edb (1e:5edb) +FallingObjects_InitMovementData: ld hl, wFallingObjectsMovementData ld de, FallingObjects_InitialMovementData ld a, [wNumFallingObjects] @@ -3028,10 +3030,10 @@ FallingObjects_InitMovementData: ; 79edb (1e:5edb) jr nz, .loop ret -FallingObjects_InitialMovementData: ; 79eec (1e:5eec) - db $00,$84,$06,$81,$02,$88,$01,$83,$05,$89,$09,$80,$07,$87,$03,$82,$04,$85,$08,$86 +FallingObjects_InitialMovementData: + db $00, $84, $06, $81, $02, $88, $01, $83, $05, $89, $09, $80, $07, $87, $03, $82, $04, $85, $08, $86 -AnimationShakeEnemyHUD: ; 79f00 (1e:5f00) +AnimationShakeEnemyHUD: ; Shakes the enemy HUD. ; Make a copy of the back pic's tile patterns in sprite tile pattern VRAM. @@ -3117,7 +3119,7 @@ AnimationShakeEnemyHUD: ; 79f00 (1e:5f00) ; b = tile ID list index ; c = base tile ID -CopyTileIDsFromList: ; 79f7b (1e:5f7b) +CopyTileIDsFromList: call GetPredefRegisters ld a, c ld [hBaseTileID], a @@ -3127,7 +3129,7 @@ CopyTileIDsFromList: ; 79f7b (1e:5f7b) pop hl jp CopyTileIDs -ShakeEnemyHUD_ShakeBG: ; 79f8a (1e:5f8a) +ShakeEnemyHUD_ShakeBG: ld a, [hSCX] ld [wTempSCX], a .loop @@ -3147,71 +3149,71 @@ ShakeEnemyHUD_ShakeBG: ; 79f8a (1e:5f8a) ld [hSCX], a ret -BattleAnimCopyTileMapToVRAM: ; 79fae (1e:5fae) +BattleAnimCopyTileMapToVRAM: ld a, h ld [H_AUTOBGTRANSFERDEST + 1], a ld a, l ld [H_AUTOBGTRANSFERDEST], a jp Delay3 -TossBallAnimation: ; 79fb7 (1e:5fb7) - ld a,[wIsInBattle] - cp a,2 - jr z,.BlockBall ; if in trainer battle, play different animation - ld a,[wPokeBallAnimData] - ld b,a +TossBallAnimation: + ld a, [wIsInBattle] + cp a, 2 + jr z, .BlockBall ; if in trainer battle, play different animation + ld a, [wPokeBallAnimData] + ld b, a ; upper nybble: how many animations (from PokeBallAnimations) to play ; this will be 4 for successful capture, 6 for breakout - and a,$F0 + and a, $F0 swap a - ld c,a + ld c, a ; lower nybble: number of shakes ; store these for later - ld a,b - and a,$F - ld [wNumShakes],a + ld a, b + and a, $F + ld [wNumShakes], a - ld hl,.PokeBallAnimations + ld hl, .PokeBallAnimations ; choose which toss animation to use - ld a,[wcf91] - cp a,POKE_BALL - ld b,TOSS_ANIM - jr z,.done - cp a,GREAT_BALL - ld b,GREATTOSS_ANIM - jr z,.done - ld b,ULTRATOSS_ANIM + ld a, [wcf91] + cp a, POKE_BALL + ld b, TOSS_ANIM + jr z, .done + cp a, GREAT_BALL + ld b, GREATTOSS_ANIM + jr z, .done + ld b, ULTRATOSS_ANIM .done - ld a,b + ld a, b .PlayNextAnimation - ld [wAnimationID],a + ld [wAnimationID], a push bc push hl call PlayAnimation pop hl - ld a,[hli] + ld a, [hli] pop bc dec c - jr nz,.PlayNextAnimation + jr nz, .PlayNextAnimation ret -.PokeBallAnimations: ; 79ff1 (1e:5ff1) +.PokeBallAnimations: ; sequence of animations that make up the Poké Ball toss - db POOF_ANIM,HIDEPIC_ANIM,SHAKE_ANIM,POOF_ANIM,SHOWPIC_ANIM + db POOF_ANIM, HIDEPIC_ANIM, SHAKE_ANIM, POOF_ANIM, SHOWPIC_ANIM -.BlockBall ; 79ff6 (1e:5ff6) - ld a,TOSS_ANIM - ld [wAnimationID],a +.BlockBall + ld a, TOSS_ANIM + ld [wAnimationID], a call PlayAnimation - ld a,SFX_FAINT_THUD + ld a, SFX_FAINT_THUD call PlaySound - ld a,BLOCKBALL_ANIM - ld [wAnimationID],a + ld a, BLOCKBALL_ANIM + ld [wAnimationID], a jp PlayAnimation -PlayApplyingAttackSound: ; 7a00b (1e:600b) +PlayApplyingAttackSound: ; play a different sound depending if move is not very effective, neutral, or super-effective ; don't play any sound at all if move is ineffective call WaitForSoundToFinish @@ -3235,4 +3237,4 @@ PlayApplyingAttackSound: ; 7a00b (1e:600b) ld a, b ld [wTempoModifier], a ld a, c - jp PlaySound
\ No newline at end of file + jp PlaySound diff --git a/engine/battle/bank3d_battle.asm b/engine/battle/bank3d_battle.asm index 2b2809d9..3719841f 100644 --- a/engine/battle/bank3d_battle.asm +++ b/engine/battle/bank3d_battle.asm @@ -1,14 +1,14 @@ -InitBattle: ; f5ff2 (3d:5ff2) +InitBattle: ld a, [wCurOpponent] and a jr z, asm_f6003 -InitOpponent: ; f5ff8 (3d:5ff8) +InitOpponent: ld a, [wCurOpponent] ld [wcf91], a ld [wEnemyMonSpecies2], a jr asm_f601d -asm_f6003: ; f6003 (3d:6003) +asm_f6003: ld a, [wd732] bit 1, a jr z, .asm_f600f @@ -21,7 +21,7 @@ asm_f6003: ; f6003 (3d:6003) ret nz callab TryDoWildEncounter ret nz -asm_f601d: ; f601d (f:601d) +asm_f601d: ld a, [wMapPalOffset] push af ld hl, wLetterPrintingDelayFlags @@ -56,7 +56,7 @@ asm_f601d: ; f601d (f:601d) callabd_ModifyPikachuHappiness PIKAHAPPY_GYMLEADER ; useless since already in bank3d jp InitBattle_Common -InitWildBattle: ; f607c (3d:607c) +InitWildBattle: ld a, $1 ld [wIsInBattle], a callab LoadEnemyMonData @@ -106,7 +106,7 @@ InitWildBattle: ; f607c (3d:607c) predef CopyUncompressedPicToTilemap ; common code that executes after init battle code specific to trainer or wild battles -InitBattle_Common: ; f60eb (3d:60eb) +InitBattle_Common: ld b, $0 call RunPaletteCommand callab SlidePlayerAndEnemySilhouettesOnScreen @@ -149,7 +149,7 @@ InitBattle_Common: ; f60eb (3d:60eb) .emptyString db "@" -_LoadTrainerPic: ; f615a (3d:615a) +_LoadTrainerPic: ; wd033-wd034 contain pointer to pic ld a, [wTrainerPicPointer] ; wd033 ld e, a @@ -167,7 +167,7 @@ _LoadTrainerPic: ; f615a (3d:615a) ld c, a jp LoadUncompressedSpriteData -LoadMonBackPic: ; f6178 (3d:6178) +LoadMonBackPic: ; Assumes the monster's attributes have ; been loaded with GetMonHeader. ld a, [wBattleMonSpecies2] @@ -187,7 +187,7 @@ LoadMonBackPic: ; f6178 (3d:6178) ld b, a jp CopyVideoData -AnimateSendingOutMon: ; f61a6 (3d:f61a6) +AnimateSendingOutMon: ld a, [wPredefRegisters] ld h, a ld a, [wPredefRegisters + 1] @@ -227,13 +227,13 @@ AnimateSendingOutMon: ; f61a6 (3d:f61a6) add $31 jr CopyUncompressedPicToHL -CopyUncompressedPicToTilemap: ; f61f9 (3d:61f9) +CopyUncompressedPicToTilemap: ld a, [wPredefRegisters] ld h, a ld a, [wPredefRegisters + 1] ld l, a ld a, [$ffe1] -CopyUncompressedPicToHL: ; f6203 (3d:6203) +CopyUncompressedPicToHL: ld bc, $707 ld de, $14 push af @@ -288,4 +288,4 @@ INCLUDE "engine/battle/moveEffects/reflect_light_screen_effect.asm" INCLUDE "engine/battle/moveEffects/mist_effect.asm" INCLUDE "engine/battle/moveEffects/one_hit_ko_effect.asm" INCLUDE "engine/battle/moveEffects/pay_day_effect.asm" -INCLUDE "engine/battle/moveEffects/paralyze_effect.asm"
\ No newline at end of file +INCLUDE "engine/battle/moveEffects/paralyze_effect.asm" diff --git a/engine/battle/bank_e_misc.asm b/engine/battle/bank_e_misc.asm index 278cce61..df9145f2 100755 --- a/engine/battle/bank_e_misc.asm +++ b/engine/battle/bank_e_misc.asm @@ -1,5 +1,5 @@ ; formats a string at wMovesString that lists the moves at wMoves -FormatMovesString: ; 39b06 (e:5b06) +FormatMovesString: ld hl, wMoves ld de, wMovesString ld b, $0 @@ -52,7 +52,7 @@ FormatMovesString: ; 39b06 (e:5b06) ret ; XXX this is called in a few places, but it doesn't appear to do anything useful -InitList: ; 39b53 (e:5b53) +InitList: ld a, [wInitListType] cp INIT_ENEMYOT_LIST jr nz, .notEnemy @@ -100,4 +100,4 @@ InitList: ; 39b53 (e:5b53) ld [wItemPrices], a ld a, b ld [wItemPrices + 1], a - ret
\ No newline at end of file + ret diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index e3527897..2f3e4e91 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -1,5 +1,5 @@ -BattleTransition: ; 709d7 (1c:49d7) - ld a, $1 +BattleTransition: + ld a, 1 ld [H_AUTOBGTRANSFERENABLED], a call Delay3 xor a @@ -70,7 +70,7 @@ BattleTransition: ; 709d7 (1c:49d7) ; bit 0: set if trainer battle ; bit 1: set if enemy is at least 3 levels higher than player ; bit 2: set if dungeon map -BattleTransitions: ; 70a3c (1c:4a3c) +BattleTransitions: dw BattleTransition_DoubleCircle ; %000 dw BattleTransition_Spiral ; %001 dw BattleTransition_Circle ; %010 @@ -80,7 +80,7 @@ BattleTransitions: ; 70a3c (1c:4a3c) dw BattleTransition_VerticalStripes ; %110 dw BattleTransition_Split ; %111 -GetBattleTransitionID_WildOrTrainer: ; 70a4c (1c:4a4c) +GetBattleTransitionID_WildOrTrainer: ld a, [wCurOpponent] cp 200 jr nc, .trainer @@ -90,7 +90,7 @@ GetBattleTransitionID_WildOrTrainer: ; 70a4c (1c:4a4c) set 0, c ret -GetBattleTransitionID_CompareLevels: ; 70a59 (1c:4a59) +GetBattleTransitionID_CompareLevels: ld hl, wPartyMon1HP .faintedLoop ld a, [hli] @@ -121,7 +121,7 @@ GetBattleTransitionID_CompareLevels: ; 70a59 (1c:4a59) ; fails to recognize VICTORY_ROAD_2, VICTORY_ROAD_3, all ROCKET_HIDEOUT maps, ; MANSION_1, SEAFOAM_ISLANDS_[2-5], POWER_PLANT, DIGLETTS_CAVE ; and SILPH_CO_[9-11]F as dungeon maps -GetBattleTransitionID_IsDungeonMap: ; 70a83 (1c:4a83) +GetBattleTransitionID_IsDungeonMap: ld a, [wCurMap] ld e, a ld hl, DungeonMaps1 @@ -153,7 +153,7 @@ GetBattleTransitionID_IsDungeonMap: ; 70a83 (1c:4a83) ; GetBattleTransitionID_IsDungeonMap checks if wCurMap ; is equal to one of these maps -DungeonMaps1: ; 70aa9 (1c:4aa9) +DungeonMaps1: db VIRIDIAN_FOREST db ROCK_TUNNEL_1 db SEAFOAM_ISLANDS_1 @@ -162,7 +162,7 @@ DungeonMaps1: ; 70aa9 (1c:4aa9) ; GetBattleTransitionID_IsDungeonMap checks if wCurMap ; is in between or equal to each pair of maps -DungeonMaps2: ; 70aac (1c:4aac) +DungeonMaps2: ; all MT_MOON maps db MT_MOON_1 db MT_MOON_3 @@ -181,17 +181,17 @@ DungeonMaps2: ; 70aac (1c:4aac) db UNKNOWN_DUNGEON_1 db $FF -LoadBattleTransitionTile: ; 70ab7 (1c:4ab7) +LoadBattleTransitionTile: ld hl, vChars1 + $7f0 ld de, BattleTransitionTile lb bc, BANK(BattleTransitionTile), (BattleTransitionTileEnd - BattleTransitionTile) / $10 jp CopyVideoData -BattleTransitionTile: ; 70ac3 (1c:4ac3) +BattleTransitionTile: INCBIN "gfx/battle_transition.2bpp" BattleTransitionTileEnd: -BattleTransition_BlackScreen: ; 70ad3 (1c:4ad3) +BattleTransition_BlackScreen: ld a, $ff ld [rBGP], a ld [rOBP0], a @@ -205,7 +205,7 @@ BattleTransition_BlackScreen: ; 70ad3 (1c:4ad3) ; called regardless of mon levels, but does an ; outward spiral if enemy is at least 3 levels ; higher than player and does an inward spiral otherwise -BattleTransition_Spiral: ; 70ae5 (1c:4ae5) +BattleTransition_Spiral: ld a, [wBattleTransitionSpiralDirection] and a jr z, .outwardSpiral @@ -238,7 +238,7 @@ BattleTransition_Spiral: ; 70ae5 (1c:4ae5) ld [wOutwardSpiralTileMapPointer], a ret -BattleTransition_InwardSpiral: ; 70b1d (1c:4b1d) +BattleTransition_InwardSpiral: ld a, 7 ld [wInwardSpiralUpdateScreenCounter], a coord hl, 0, 0 @@ -268,7 +268,7 @@ BattleTransition_InwardSpiral: ; 70b1d (1c:4b1d) jr nz, .loop ret -BattleTransition_InwardSpiral_: ; 70b53 (1c:4b53) +BattleTransition_InwardSpiral_: push bc .loop ld [hl], $ff @@ -287,7 +287,7 @@ BattleTransition_InwardSpiral_: ; 70b53 (1c:4b53) pop bc ret -BattleTransition_OutwardSpiral_: ; 70b6c (1c:4b6c) +BattleTransition_OutwardSpiral_: ld bc, -SCREEN_WIDTH ld de, SCREEN_WIDTH ld a, [wOutwardSpiralTileMapPointer + 1] @@ -355,7 +355,7 @@ BattleTransition_OutwardSpiral_: ; 70b6c (1c:4b6c) jr .done FlashScreen: -BattleTransition_FlashScreen_: ; 70be8 (1c:4be8) +BattleTransition_FlashScreen_: ld hl, BattleTransition_FlashScreenPalettes .loop ld a, [hli] @@ -363,7 +363,7 @@ BattleTransition_FlashScreen_: ; 70be8 (1c:4be8) jr z, .done ld [rBGP], a call UpdateGBCPal_BGP - ld c, $2 + ld c, 2 call DelayFrames jr .loop .done @@ -371,13 +371,13 @@ BattleTransition_FlashScreen_: ; 70be8 (1c:4be8) jr nz, BattleTransition_FlashScreen_ ret -BattleTransition_FlashScreenPalettes: ; 70be8 (1c:4be8) +BattleTransition_FlashScreenPalettes: db $F9,$FE,$FF,$FE,$F9,$E4,$90,$40,$00,$40,$90,$E4 db $01 ; terminator ; used for low level trainer dungeon battles -BattleTransition_Shrink: ; 70bf4 (1c:4bf4) - ld c,9 +BattleTransition_Shrink: + ld c, 9 .loop push bc xor a @@ -410,8 +410,8 @@ BattleTransition_Shrink: ; 70bf4 (1c:4bf4) jp DelayFrames ; used for high level trainer dungeon battles -BattleTransition_Split: ; 70c40 (1c:4c40) - ld c,$9 +BattleTransition_Split: + ld c, 9 xor a ld [H_AUTOBGTRANSFERENABLED], a .loop @@ -441,7 +441,7 @@ BattleTransition_Split: ; 70c40 (1c:4c40) ld c, 10 jp DelayFrames -BattleTransition_CopyTiles1: ; 70c88 (1c:4c88) +BattleTransition_CopyTiles1: ld a, c ld [wBattleTransitionCopyTilesOffset], a ld a, b @@ -473,7 +473,7 @@ BattleTransition_CopyTiles1: ; 70c88 (1c:4c88) jr nz, .loop2 ret -BattleTransition_CopyTiles2: ; 70cb5 (1c:4cb5) +BattleTransition_CopyTiles2: ld a, c ld [wBattleTransitionCopyTilesOffset], a ld a, b @@ -523,7 +523,7 @@ BattleTransition_CopyTiles2: ; 70cb5 (1c:4cb5) ret ; used for high level wild dungeon battles -BattleTransition_VerticalStripes: ; 70cf4 (1c:4cf4) +BattleTransition_VerticalStripes: ld c, SCREEN_HEIGHT coord hl, 0, 0 coord de, 1, 17 @@ -551,7 +551,7 @@ BattleTransition_VerticalStripes: ; 70cf4 (1c:4cf4) jr nz, .loop jp BattleTransition_BlackScreen -BattleTransition_VerticalStripes_: ; 70d20 (1c:4d20) +BattleTransition_VerticalStripes_: ld c, SCREEN_WIDTH / 2 .loop ld [hl], $ff @@ -562,7 +562,7 @@ BattleTransition_VerticalStripes_: ; 70d20 (1c:4d20) ret ; used for low level wild dungeon battles -BattleTransition_HorizontalStripes: ; 70d2a (1c:4d2a) +BattleTransition_HorizontalStripes: ld c, SCREEN_WIDTH coord hl, 0, 0 coord de, 19, 1 @@ -586,7 +586,7 @@ BattleTransition_HorizontalStripes: ; 70d2a (1c:4d2a) jr nz, .loop jp BattleTransition_BlackScreen -BattleTransition_HorizontalStripes_: ; 70d4e (1c:4d4e) +BattleTransition_HorizontalStripes_: ld c, SCREEN_HEIGHT / 2 ld de, SCREEN_WIDTH * 2 .loop @@ -599,7 +599,7 @@ BattleTransition_HorizontalStripes_: ; 70d4e (1c:4d4e) ; used for high level wild non-dungeon battles ; makes one full circle around the screen ; by animating each half circle one at a time -BattleTransition_Circle: ; 70d5a (1c:4d5a) +BattleTransition_Circle: call BattleTransition_FlashScreen lb bc, 0, SCREEN_WIDTH / 2 ld hl, BattleTransition_HalfCircle1 @@ -610,14 +610,14 @@ BattleTransition_Circle: ; 70d5a (1c:4d5a) call BattleTransition_Circle_Sub1 jp BattleTransition_BlackScreen -BattleTransition_FlashScreen: ; 70d73 (1c:4d73) +BattleTransition_FlashScreen: ld b, $3 call BattleTransition_FlashScreen_ xor a ld [H_AUTOBGTRANSFERENABLED], a ret -BattleTransition_Circle_Sub1: ; 70d7c (1c:4d7c) +BattleTransition_Circle_Sub1: push bc push hl ld a, b @@ -631,8 +631,8 @@ BattleTransition_Circle_Sub1: ; 70d7c (1c:4d7c) jr nz, BattleTransition_Circle_Sub1 ret -BattleTransition_TransferDelay3: ; 70d8f (1c:4d8f) - ld a, $1 +BattleTransition_TransferDelay3: + ld a, 1 ld [H_AUTOBGTRANSFERENABLED], a call Delay3 xor a @@ -642,7 +642,7 @@ BattleTransition_TransferDelay3: ; 70d8f (1c:4d8f) ; used for low level wild non-dungeon battles ; makes two half circles around the screen ; by animating both half circles at the same time -BattleTransition_DoubleCircle: ; 70d9a (1c:4d9a) +BattleTransition_DoubleCircle: call BattleTransition_FlashScreen ld c, SCREEN_WIDTH / 2 ld hl, BattleTransition_HalfCircle1 @@ -670,7 +670,7 @@ BattleTransition_DoubleCircle: ; 70d9a (1c:4d9a) jr nz, .loop jp BattleTransition_BlackScreen -BattleTransition_Circle_Sub2: ; 70dc6 (1c:4dc6) +BattleTransition_Circle_Sub2: ld [wBattleTransitionCircleScreenQuadrantY], a ld a, [hli] ld [wBattleTransitionCircleScreenQuadrantX], a @@ -683,7 +683,7 @@ BattleTransition_Circle_Sub2: ; 70dc6 (1c:4dc6) ld l, a jp BattleTransition_Circle_Sub3 -BattleTransition_HalfCircle1: ; 70dd7 (1c:4dd7) +BattleTransition_HalfCircle1: db $01 dw BattleTransition_CircleData1 dwCoord 18, 6 @@ -724,7 +724,7 @@ BattleTransition_HalfCircle1: ; 70dd7 (1c:4dd7) dw BattleTransition_CircleData1 dwCoord 1, 6 -BattleTransition_HalfCircle2: ; 70d93 (1c:4e09) +BattleTransition_HalfCircle2: db $00 dw BattleTransition_CircleData1 dwCoord 1, 11 @@ -765,7 +765,7 @@ BattleTransition_HalfCircle2: ; 70d93 (1c:4e09) dw BattleTransition_CircleData1 dwCoord 18, 11 -BattleTransition_Circle_Sub3: ; 70e3b (1c:4e3b) +BattleTransition_Circle_Sub3: push hl ld a, [de] ld c, a @@ -810,17 +810,17 @@ BattleTransition_Circle_Sub3: ; 70e3b (1c:4e3b) jr nz, .loop2 jr BattleTransition_Circle_Sub3 -BattleTransition_CircleData1: ; 70e74 (1c:4e74) +BattleTransition_CircleData1: db $02,$03,$05,$04,$09,$FF -BattleTransition_CircleData2: ; 70e7a (1c:4e7a) +BattleTransition_CircleData2: db $01,$01,$02,$02,$04,$02,$04,$02,$03,$FF -BattleTransition_CircleData3: ; 70e84 (1c:4e84) +BattleTransition_CircleData3: db $02,$01,$03,$01,$04,$01,$04,$01,$04,$01,$03,$01,$02,$01,$01,$01,$01,$FF -BattleTransition_CircleData4: ; 70e97 (1c:4e97) +BattleTransition_CircleData4: db $04,$01,$04,$00,$03,$01,$03,$00,$02,$01,$02,$00,$01,$FF -BattleTransition_CircleData5: ; 70ea3 (1c:4ea3) +BattleTransition_CircleData5: db $04,$00,$03,$00,$03,$00,$02,$00,$02,$00,$01,$00,$01,$00,$01,$FF diff --git a/engine/battle/common_text.asm b/engine/battle/common_text.asm index a0c44346..d84d0300 100644 --- a/engine/battle/common_text.asm +++ b/engine/battle/common_text.asm @@ -1,5 +1,5 @@ -PrintBeginningBattleText: ; f4000 (3d:4000) - ld a, [wIsInBattle] ; W_ISINBATTLE +PrintBeginningBattleText: + ld a, [wIsInBattle] dec a jr nz, .trainerBattle ld a, [wCurMap] @@ -80,37 +80,37 @@ PrintBeginningBattleText: ; f4000 (3d:4000) ld [wFrequencyModifier], a ld a, $80 ld [wTempoModifier], a - ld a, $e9 ; (SFX_08_77 - SFX_Headers_08) / 3 + ld a, SFX_SILPH_SCOPE call PlaySound jp WaitForSoundToFinish .done ret -WildMonAppearedText: ; f40c7 (3d:40c7) +WildMonAppearedText: TX_FAR _WildMonAppearedText db "@" -HookedMonAttackedText: ; f40cc (3d:40cc) +HookedMonAttackedText: TX_FAR _HookedMonAttackedText db "@" -EnemyAppearedText: ; f40d1 (3d:40d1) +EnemyAppearedText: TX_FAR _EnemyAppearedText db "@" -TrainerWantsToFightText: ; f40d6 (3d:40d6) +TrainerWantsToFightText: TX_FAR _TrainerWantsToFightText db "@" -UnveiledGhostText: ; f40db (3d:40db) +UnveiledGhostText: TX_FAR _UnveiledGhostText db "@" -GhostCantBeIDdText: ; f40e0 (3d:40e0) +GhostCantBeIDdText: TX_FAR _GhostCantBeIDdText db "@" -PrintSendOutMonMessage: ; f40e0 (3d:40e5) +PrintSendOutMonMessage: ld hl, wEnemyMonHP ld a, [hli] or [hl] @@ -153,38 +153,38 @@ PrintSendOutMonMessage: ; f40e0 (3d:40e5) .printText jp PrintText -GoText: ; f413a (3d:413a) +GoText: TX_FAR _GoText TX_ASM jr PrintPlayerMon1Text -DoItText: ; f4141 (3d:4141) +DoItText: TX_FAR _DoItText TX_ASM jr PrintPlayerMon1Text -GetmText: ; f4148 (3d:4148) +GetmText: TX_FAR _GetmText TX_ASM jr PrintPlayerMon1Text -EnemysWeakText: ; f414f (3d:414f) +EnemysWeakText: TX_FAR _EnemysWeakText TX_ASM -PrintPlayerMon1Text: ; f4154 (3d:4154) +PrintPlayerMon1Text: ld hl, PlayerMon1Text ret -PlayerMon1Text: ; f4158 (3d:4158) +PlayerMon1Text: TX_FAR _PlayerMon1Text db "@" -RetreatMon: ; f415d (3d:415d) +RetreatMon: ld hl, PlayerMon2Text jp PrintText -PlayerMon2Text: ; f4163 (3d:4163) +PlayerMon2Text: TX_FAR _PlayerMon2Text TX_ASM push de @@ -235,25 +235,25 @@ PlayerMon2Text: ; f4163 (3d:4163) ld hl, GoodText ; HP went down 70% or more ret -EnoughText: ; f41b1 (3d:41b1) +EnoughText: TX_FAR _EnoughText TX_ASM jr PrintComeBackText -OKExclamationText: ; f41b8 (3d:41b8) +OKExclamationText: TX_FAR _OKExclamationText TX_ASM jr PrintComeBackText -GoodText: ; f41bf (3d:41bf) +GoodText: TX_FAR _GoodText TX_ASM jr PrintComeBackText -PrintComeBackText: ; f41c6 (3d:41c6) +PrintComeBackText: ld hl, ComeBackText ret -ComeBackText: ; f41ca (3d:41ca) +ComeBackText: TX_FAR _ComeBackText db "@" diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 24b3863b..c061b291 100755 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -1,7 +1,7 @@ BattleCore: ; These are move effects (second value from the Moves table in bank $E). -ResidualEffects1: ; 3c000 (f:4000) +ResidualEffects1: ; most non-side effects db CONVERSION_EFFECT db HAZE_EFFECT @@ -20,13 +20,13 @@ ResidualEffects1: ; 3c000 (f:4000) db LEECH_SEED_EFFECT db SPLASH_EFFECT db -1 -SetDamageEffects: ; 3c011 (f:4011) +SetDamageEffects: ; moves that do damage but not through normal calculations ; e.g., Super Fang, Psywave db SUPER_FANG_EFFECT db SPECIAL_DAMAGE_EFFECT db -1 -ResidualEffects2: ; 3c014 (f:4014) +ResidualEffects2: ; non-side effects not included in ResidualEffects1 ; stat-affecting moves, sleep-inflicting moves, and Bide ; e.g., Meditate, Bide, Hypnosis @@ -58,7 +58,7 @@ ResidualEffects2: ; 3c014 (f:4014) db ACCURACY_DOWN2_EFFECT db EVASION_DOWN2_EFFECT db -1 -AlwaysHappenSideEffects: ; 3c030 (f:4030) +AlwaysHappenSideEffects: ; Attacks that aren't finished after they faint the opponent. db DRAIN_HP_EFFECT db EXPLODE_EFFECT @@ -71,7 +71,7 @@ AlwaysHappenSideEffects: ; 3c030 (f:4030) db TWINEEDLE_EFFECT db RAGE_EFFECT db -1 -SpecialEffects: ; 3c03b (f:403b) +SpecialEffects: ; Effects from arrays 2, 4, and 5B, minus Twineedle and Rage. ; Includes all effects that do not need to be called at the end of ; ExecutePlayerMove (or ExecuteEnemyMove), because they have already been handled @@ -90,13 +90,13 @@ SpecialEffects: ; 3c03b (f:403b) db JUMP_KICK_EFFECT db RECOIL_EFFECT ; fallthrough to Next EffectsArray -SpecialEffectsCont: ; 3c049 (f:4049) +SpecialEffectsCont: ; damaging moves whose effect is executed prior to damage calculation db THRASH_PETAL_DANCE_EFFECT db TRAPPING_EFFECT db -1 -SlidePlayerAndEnemySilhouettesOnScreen: ; 3c04c (f:404c) +SlidePlayerAndEnemySilhouettesOnScreen: call LoadPlayerBackPic ld a, MESSAGE_BOX ; the usual text box at the bottom of the screen ld [wTextBoxID], a @@ -196,7 +196,7 @@ SlidePlayerAndEnemySilhouettesOnScreen: ; 3c04c (f:404c) ; the lower of the player's pic (his body) is part of the background, but his head is a sprite ; the reason for this is that it shares Y coordinates with the lower part of the enemy pic, so background scrolling wouldn't work for both pics ; instead, the enemy pic is part of the background and uses the scroll register, while the player's head is a sprite and is slid by changing its X coordinates in a loop -SlidePlayerHeadLeft: ; 3c108 (f:4108) +SlidePlayerHeadLeft: push bc ld hl, wOAMBuffer + $01 ld c, $15 ; number of OAM entries @@ -210,7 +210,7 @@ SlidePlayerHeadLeft: ; 3c108 (f:4108) pop bc ret -SetScrollXForSlidingPlayerBodyLeft: ; 3c119 (f:4119) +SetScrollXForSlidingPlayerBodyLeft: ld a, [rLY] cp l jr nz, SetScrollXForSlidingPlayerBodyLeft @@ -222,7 +222,7 @@ SetScrollXForSlidingPlayerBodyLeft: ; 3c119 (f:4119) jr z, .loop ret -StartBattle: ; 3c127 (f:4127) +StartBattle: xor a ld [wPartyGainExpFlags], a ld [wPartyFoughtCurrentEnemyFlags], a @@ -350,7 +350,7 @@ StartBattle: ; 3c127 (f:4127) jr MainInBattleLoop ; wild mon or link battle enemy ran from battle -EnemyRan: ; 3c202 (f:4218) +EnemyRan: call LoadScreenTilesFromBuffer1 ld a, [wLinkState] cp LINK_STATE_BATTLING @@ -368,15 +368,15 @@ EnemyRan: ; 3c202 (f:4218) ld [H_WHOSETURN], a jpab AnimationSlideEnemyMonOff -WildRanText: ; 3c23f (f:423f) +WildRanText: TX_FAR _WildRanText db "@" -EnemyRanText: ; 3c23f (f:423f) +EnemyRanText: TX_FAR _EnemyRanText db "@" -MainInBattleLoop: ; 3c249 (f:4249) +MainInBattleLoop: call ReadPlayerMonCurHPAndStatus ld hl, wBattleMonHP ld a, [hli] @@ -566,7 +566,7 @@ MainInBattleLoop: ; 3c249 (f:4249) call CheckNumAttacksLeft jp MainInBattleLoop -HandlePoisonBurnLeechSeed: ; 3c3d3 (f:43d3) +HandlePoisonBurnLeechSeed: ld hl, wBattleMonHP ld de, wBattleMonStatus ld a, [H_WHOSETURN] @@ -630,15 +630,15 @@ HandlePoisonBurnLeechSeed: ; 3c3d3 (f:43d3) xor a ret -HurtByPoisonText: ; 3c444 (f:4444) +HurtByPoisonText: TX_FAR _HurtByPoisonText db "@" -HurtByBurnText: ; 3c449 (f:4449) +HurtByBurnText: TX_FAR _HurtByBurnText db "@" -HurtByLeechSeedText: ; 3c44e (f:444e) +HurtByLeechSeedText: TX_FAR _HurtByLeechSeedText db "@" @@ -646,7 +646,7 @@ HurtByLeechSeedText: ; 3c44e (f:444e) ; note that the toxic ticks are considered even if the damage is not poison (hence the Leech Seed glitch) ; hl: HP pointer ; bc (out): total damage -HandlePoisonBurnLeechSeed_DecreaseOwnHP: ; 3c43d (f:443d) +HandlePoisonBurnLeechSeed_DecreaseOwnHP: push hl push hl ld bc, $e ; skip to max HP @@ -714,7 +714,7 @@ HandlePoisonBurnLeechSeed_DecreaseOwnHP: ; 3c43d (f:443d) ; adds bc to enemy HP ; bc isn't updated if HP substracted was capped to prevent overkill -HandlePoisonBurnLeechSeed_IncreaseEnemyHP: ; 3c4b9 (f:44b9) +HandlePoisonBurnLeechSeed_IncreaseEnemyHP: push hl ld hl, wEnemyMonMaxHP ld a, [H_WHOSETURN] @@ -764,7 +764,7 @@ HandlePoisonBurnLeechSeed_IncreaseEnemyHP: ; 3c4b9 (f:44b9) pop hl ret -UpdateCurMonHPBar: ; 3c50c (f:450c) +UpdateCurMonHPBar: coord hl, 10, 9 ; tile pointer to player HP bar ld a, [H_WHOSETURN] and a @@ -779,7 +779,7 @@ UpdateCurMonHPBar: ; 3c50c (f:450c) pop bc ret -CheckNumAttacksLeft: ; 3c525 (f:4525) +CheckNumAttacksLeft: ld a, [wPlayerNumAttacksLeft] and a jr nz, .checkEnemy @@ -795,7 +795,7 @@ CheckNumAttacksLeft: ; 3c525 (f:4525) res UsingTrappingMove, [hl] ; enemy not using multi-turn attack like wrap any more ret -HandleEnemyMonFainted: ; 3c53b (f:453b) +HandleEnemyMonFainted: xor a ld [wInHandlePlayerMonFainted], a call FaintEnemyPokemon @@ -828,7 +828,7 @@ HandleEnemyMonFainted: ; 3c53b (f:453b) ld [wActionResultOrTookBattleTurn], a jp MainInBattleLoop -FaintEnemyPokemon: ; 3c57d (f:457d) +FaintEnemyPokemon: call ReadPlayerMonCurHPAndStatus ld a, [wIsInBattle] dec a @@ -956,11 +956,11 @@ FaintEnemyPokemon: ; 3c57d (f:457d) ld [wPartyGainExpFlags], a jpab GainExperience -EnemyMonFaintedText: ; 3c654 (f:4654) +EnemyMonFaintedText: TX_FAR _EnemyMonFaintedText db "@" -EndLowHealthAlarm: ; 3c659 (f:4659) +EndLowHealthAlarm: ; This function is called when the player has the won the battle. It turns off ; the low health alarm and prevents it from reactivating until the next battle. xor a @@ -970,7 +970,7 @@ EndLowHealthAlarm: ; 3c659 (f:4659) ld [wLowHealthAlarmDisabled], a ; prevent it from reactivating ret -AnyEnemyPokemonAliveCheck: ; 3c665 (f:4665) +AnyEnemyPokemonAliveCheck: ld a, [wEnemyPartyCount] ld b, a xor a @@ -988,7 +988,7 @@ AnyEnemyPokemonAliveCheck: ; 3c665 (f:4665) ret ; stores whether enemy ran in Z flag -ReplaceFaintedEnemyMon: ; 3c67a (f:467a) +ReplaceFaintedEnemyMon: ld hl, wEnemyHPBarColor ld e, $30 call GetBattleHealthBarColor @@ -1016,7 +1016,7 @@ ReplaceFaintedEnemyMon: ; 3c67a (f:467a) inc a ; reset Z flag ret -TrainerBattleVictory: ; 3c6b8 (f:46b8) +TrainerBattleVictory: call EndLowHealthAlarm ld b, MUSIC_DEFEATED_GYM_LEADER ld a, [wGymLeaderNo] @@ -1052,15 +1052,15 @@ TrainerBattleVictory: ; 3c6b8 (f:46b8) ld c, $3 predef_jump AddBCDPredef -MoneyForWinningText: ; 3c706 (f:4706) +MoneyForWinningText: TX_FAR _MoneyForWinningText db "@" -TrainerDefeatedText: ; 3c70b (f:470b) +TrainerDefeatedText: TX_FAR _TrainerDefeatedText db "@" -PlayBattleVictoryMusic: ; 3c710 (f:4710) +PlayBattleVictoryMusic: push af call StopAllMusic ld c, BANK(Music_DefeatedTrainer) @@ -1068,7 +1068,7 @@ PlayBattleVictoryMusic: ; 3c710 (f:4710) call PlayMusic jp Delay3 -HandlePlayerMonFainted: ; 3c71d (f:471d) +HandlePlayerMonFainted: ld a, 1 ld [wInHandlePlayerMonFainted], a call RemoveFaintedPlayerMon @@ -1102,7 +1102,7 @@ HandlePlayerMonFainted: ; 3c71d (f:471d) jp MainInBattleLoop ; resets flags, slides mon's pic down, plays cry, and prints fainted message -RemoveFaintedPlayerMon: ; 3c75e (f:475e) +RemoveFaintedPlayerMon: ld a, [wPlayerMonNumber] ld c, a ld hl, wPartyGainExpFlags @@ -1172,13 +1172,13 @@ RemoveFaintedPlayerMon: ; 3c75e (f:475e) callabd_ModifyPikachuHappiness PIKAHAPPY_CARELESSTRAINER ret -PlayerMonFaintedText: ; 3c7fa (f:47fa) +PlayerMonFaintedText: TX_FAR _PlayerMonFaintedText db "@" ; asks if you want to use next mon ; stores whether you ran in C flag -DoUseNextMonDialogue: ; 3c7ff (f:47ff) +DoUseNextMonDialogue: call PrintEmptyString call SaveScreenTilesToBuffer1 ld a, [wIsInBattle] @@ -1206,13 +1206,13 @@ DoUseNextMonDialogue: ; 3c7ff (f:47ff) ld de, wEnemyMonSpeed jp TryRunningFromBattle -UseNextMonText: ; 3c837 (f:4837) +UseNextMonText: TX_FAR _UseNextMonText db "@" ; choose next player mon to send out ; stores whether enemy mon has no HP left in Z flag -ChooseNextMon: ; 3c83c (f:483c) +ChooseNextMon: ld a, BATTLE_PARTY_MENU ld [wPartyMenuTypeOrMessageID], a call DisplayPartyMenu @@ -1227,7 +1227,7 @@ ChooseNextMon: ; 3c83c (f:483c) ld a, [wLinkState] cp LINK_STATE_BATTLING jr nz, .notLinkBattle - ld a, $1 + ld a, 1 ld [wActionResultOrTookBattleTurn], a call LinkBattleExchangeData .notLinkBattle @@ -1258,7 +1258,7 @@ ChooseNextMon: ; 3c83c (f:483c) ; called when player is out of usable mons. ; prints approriate lose message, sets carry flag if player blacked out (special case for initial rival fight) -HandlePlayerBlackOut: ; 3c89c (f:489c) +HandlePlayerBlackOut: ld a, [wLinkState] cp LINK_STATE_BATTLING jr z, .notSony1Battle @@ -1293,21 +1293,21 @@ HandlePlayerBlackOut: ; 3c89c (f:489c) scf ret -Sony1WinText: ; 3c8e9 (f:48e9) +Sony1WinText: TX_FAR _Sony1WinText db "@" -PlayerBlackedOutText2: ; 3c8ee (f:48ee) +PlayerBlackedOutText2: TX_FAR _PlayerBlackedOutText2 db "@" -LinkBattleLostText: ; 3c8f3 (f:48f3) +LinkBattleLostText: TX_FAR _LinkBattleLostText db "@" ; slides pic of fainted mon downwards until it disappears ; bug: when this is called, [H_AUTOBGTRANSFERENABLED] is non-zero, so there is screen tearing -SlideDownFaintedMonPic: ; 3c8f8 (f:48f8) +SlideDownFaintedMonPic: ld a, [wd730] push af set 6, a @@ -1353,14 +1353,14 @@ SlideDownFaintedMonPic: ; 3c8f8 (f:48f8) ld [wd730], a ret -SevenSpacesText: ; 3c93c (f:493c) +SevenSpacesText: db " @" ; slides the player or enemy trainer off screen ; a is the number of tiles to slide it horizontally (always 9 for the player trainer or 8 for the enemy trainer) ; if a is 8, the slide is to the right, else it is to the left ; bug: when this is called, [H_AUTOBGTRANSFERENABLED] is non-zero, so there is screen tearing -SlideTrainerPicOffScreen: ; 3c944 (f:4944) +SlideTrainerPicOffScreen: ld [hSlideAmount], a ld c, a .slideStepLoop ; each iteration, the trainer pic is slid one tile left/right @@ -1401,7 +1401,7 @@ SlideTrainerPicOffScreen: ; 3c944 (f:4944) ret ; send out a trainer's mon -EnemySendOut: ; 3c973 (f:4973) +EnemySendOut: ld hl,wPartyGainExpFlags xor a ld [hl],a @@ -1417,7 +1417,7 @@ EnemySendOut: ; 3c973 (f:4973) predef FlagActionPredef ; don't change wPartyGainExpFlags or wPartyFoughtCurrentEnemyFlags -EnemySendOutFirstMon: ; 3c98f (f:498f) +EnemySendOutFirstMon: xor a ld hl,wEnemyStatsToDouble ; clear enemy statuses ld [hli],a @@ -1570,17 +1570,17 @@ EnemySendOutFirstMon: ; 3c98f (f:498f) call SaveScreenTilesToBuffer1 jp SwitchPlayerMon -TrainerAboutToUseText: ; 3cade (f:4ade) +TrainerAboutToUseText: TX_FAR _TrainerAboutToUseText db "@" -TrainerSentOutText: ; 3cae3 (f:4ae3) +TrainerSentOutText: TX_FAR _TrainerSentOutText db "@" ; tests if the player has any pokemon that are not fainted ; sets d = 0 if all fainted, d != 0 if some mons are still alive -AnyPartyAlive: ; 3cae8 (f:4ae8) +AnyPartyAlive: ld a, [wPartyCount] ld e, a xor a @@ -1598,7 +1598,7 @@ AnyPartyAlive: ; 3cae8 (f:4ae8) ; tests if player mon has fainted ; stores whether mon has fainted in Z flag -HasMonFainted: ; 3cafc (f:4afc) +HasMonFainted: ld a, [wWhichPokemon] ld hl, wPartyMon1HP ld bc, wPartyMon2 - wPartyMon1 @@ -1615,13 +1615,13 @@ HasMonFainted: ; 3cafc (f:4afc) xor a ret -NoWillText: ; 3cb19 (f:4b19) +NoWillText: TX_FAR _NoWillText db "@" ; try to run from battle (hl = player speed, de = enemy speed) ; stores whether the attempt was successful in carry flag -TryRunningFromBattle: ; 3cb1e (f:4b1e) +TryRunningFromBattle: call IsGhostBattle jp z, .canEscape ; jump if it's a ghost battle ld a, [wBattleType] @@ -1740,20 +1740,20 @@ TryRunningFromBattle: ; 3cb1e (f:4b1e) scf ; set carry ret -CantEscapeText: ; 3cc01 (f:4c01) +CantEscapeText: TX_FAR _CantEscapeText db "@" -NoRunningText: ; 3cc06 (f:4c06) +NoRunningText: TX_FAR _NoRunningText db "@" -GotAwayText: ; 3cc0b (f:4c0b) +GotAwayText: TX_FAR _GotAwayText db "@" ; copies from party data to battle mon data when sending out a new player mon -LoadBattleMonFromParty: ; 3cc10 (f:4c10) +LoadBattleMonFromParty: ld a, [wWhichPokemon] ld bc, wPartyMon2 - wPartyMon1 ld hl, wPartyMon1Species @@ -1797,7 +1797,7 @@ LoadBattleMonFromParty: ; 3cc10 (f:4c10) ret ; copies from enemy party data to current enemy mon data when sending out a new enemy mon -LoadEnemyMonFromParty: ; 3cc7d (f:4c7d) +LoadEnemyMonFromParty: ld a, [wWhichPokemon] ld bc, wEnemyMon2 - wEnemyMon1 ld hl, wEnemyMons @@ -1850,7 +1850,7 @@ LoadEnemyMonFromParty: ; 3cc7d (f:4c7d) ld [wEnemyMonPartyPos], a ret -SendOutMon: ; 3ccfb (f:4cfb) +SendOutMon: callab PrintSendOutMonMessage ld hl, wEnemyMonHP ld a, [hli] @@ -1914,7 +1914,7 @@ SendOutMon: ; 3ccfb (f:4cfb) jp SaveScreenTilesToBuffer1 ; show 2 stages of the player mon getting smaller before disappearing -AnimateRetreatingPlayerMon: ; 3cd97 (f:4d97) +AnimateRetreatingPlayerMon: ld a, [wWhichPokemon] push af ld a, [wPlayerMonNumber] @@ -1956,11 +1956,11 @@ AnimateRetreatingPlayerMon: ; 3cd97 (f:4d97) .clearScreenArea coord hl, 1, 5 lb bc, 7, 7 - call ClearScreenArea ; jp + call ClearScreenArea ret ; reads player's current mon's HP into wBattleMonHP -ReadPlayerMonCurHPAndStatus: ; 3ce08 (f:4e08) +ReadPlayerMonCurHPAndStatus: ld a, [wPlayerMonNumber] ld hl, wPartyMon1HP ld bc, wPartyMon2 - wPartyMon1 @@ -1971,11 +1971,11 @@ ReadPlayerMonCurHPAndStatus: ; 3ce08 (f:4e08) ld bc, $4 ; 2 bytes HP, 1 byte unknown (unused?), 1 byte status jp CopyData -DrawHUDsAndHPBars: ; 3ce1f (f:4e1f) +DrawHUDsAndHPBars: call DrawPlayerHUDAndHPBar jp DrawEnemyHUDAndHPBar -DrawPlayerHUDAndHPBar: ; 3ce25 (f:4e25) +DrawPlayerHUDAndHPBar: xor a ld [H_AUTOBGTRANSFERENABLED], a coord hl, 9, 7 @@ -2036,7 +2036,7 @@ DrawPlayerHUDAndHPBar: ; 3ce25 (f:4e25) set 7, [hl] ;enable low health alarm ret -DrawEnemyHUDAndHPBar: ; 3ceb1 (f:4eb1) +DrawEnemyHUDAndHPBar: xor a ld [H_AUTOBGTRANSFERENABLED], a coord hl, 0, 0 @@ -2126,7 +2126,7 @@ DrawEnemyHUDAndHPBar: ; 3ceb1 (f:4eb1) ld [H_AUTOBGTRANSFERENABLED], a ld hl, wEnemyHPBarColor -GetBattleHealthBarColor: ; 3cf55 (f:4f55) +GetBattleHealthBarColor: ld b, [hl] call GetHealthBarColor ld a, [hl] @@ -2140,7 +2140,7 @@ GetBattleHealthBarColor: ; 3cf55 (f:4f55) ; (i.e. for names longer than 4 letters) ; if the name is 3 or 4 letters long, it is printed 1 space more to the right than usual ; (i.e. for names longer than 4 letters) -CenterMonName: ; 3cf61 (f:4f61) +CenterMonName: push de inc hl inc hl @@ -2161,7 +2161,7 @@ CenterMonName: ; 3cf61 (f:4f61) pop de ret -DisplayBattleMenu: ; 3cf78 (f:4f78) +DisplayBattleMenu: call LoadScreenTilesFromBuffer1 ; restore saved screen ld a, [wBattleType] and a @@ -2347,7 +2347,7 @@ DisplayBattleMenu: ; 3cf78 (f:4f78) call PrintText jp DisplayBattleMenu -.RunAwayText ; 3d0df (f:50df) +.RunAwayText TX_FAR _RunAwayText db "@" @@ -2376,7 +2376,7 @@ DisplayBattleMenu: ; 3cf78 (f:4f78) ld [wcf91], a jr UseBagItem -BagWasSelected: ; 3d10a (f:510a) +BagWasSelected: call LoadScreenTilesFromBuffer1 ld a, [wBattleType] and a ; is it a normal battle? @@ -2399,12 +2399,12 @@ BagWasSelected: ; 3d10a (f:510a) ld [wListPointer + 1], a jr DisplayBagMenu -SimulatedInputBattleItemList: ; 3c130 (f:5130) +SimulatedInputBattleItemList: db 1 ; # of items db POKE_BALL, 1 db $ff -DisplayPlayerBag: ; 3c134 (f:5134) +DisplayPlayerBag: ; get the pointer to player's bag when in a normal battle ld hl, wNumBagItems ld a, l @@ -2412,7 +2412,7 @@ DisplayPlayerBag: ; 3c134 (f:5134) ld a, h ld [wListPointer + 1], a -DisplayBagMenu: ; 3c13f (f:513f) +DisplayBagMenu: xor a ld [wPrintItemPrices], a ld a, ITEMLISTMENU @@ -2427,7 +2427,7 @@ DisplayBagMenu: ; 3c13f (f:513f) ld [wMenuItemToSwap], a jp c, DisplayBattleMenu ; go back to battle menu if an item was not selected -UseBagItem: ; 3c162 (f:5162) +UseBagItem: ; either use an item from the bag or use a safari zone item ld a, [wcf91] ld [wd11e], a @@ -2484,11 +2484,11 @@ UseBagItem: ; 3c162 (f:5162) scf ; set carry ret -ItemsCantBeUsedHereText: ; 3d1c8 (f:51c8) +ItemsCantBeUsedHereText: TX_FAR _ItemsCantBeUsedHereText db "@" -PartyMenuOrRockOrRun: ; 3d1cd (f:51cd) +PartyMenuOrRockOrRun: dec a ; was Run selected? jp nz, BattleMenu_RunWasSelected ; party menu or rock was selected @@ -2561,7 +2561,7 @@ PartyMenuOrRockOrRun: ; 3d1cd (f:51cd) predef StatusScreen predef StatusScreen2 ; now we need to reload the enemy mon pic - ld a, $1 + ld a, 1 ld [H_WHOSETURN], a ld a, [wEnemyBattleStatus2] bit HasSubstituteUp, a ; does the enemy mon have a substitute? @@ -2608,7 +2608,7 @@ PartyMenuOrRockOrRun: ; 3d1cd (f:51cd) call GBPalNormal ; fall through to SwitchPlayerMon -SwitchPlayerMon: ; 3d2c1 (f:52c1) +SwitchPlayerMon: callab RetreatMon ld c, 50 call DelayFrames @@ -2631,11 +2631,11 @@ SwitchPlayerMon: ; 3d2c1 (f:52c1) and a ret -AlreadyOutText: ; 3d2fc (f:52fc) +AlreadyOutText: TX_FAR _AlreadyOutText db "@" -BattleMenu_RunWasSelected: ; 3d301 (f:5301) +BattleMenu_RunWasSelected: call LoadScreenTilesFromBuffer1 ld a, $3 ld [wCurrentMenuItem], a @@ -2650,7 +2650,7 @@ BattleMenu_RunWasSelected: ; 3d301 (f:5301) ret nz ; return if the player couldn't escape jp DisplayBattleMenu -MoveSelectionMenu: ; 3d320 (f:5320) +MoveSelectionMenu: ld a, [wMoveMenuType] dec a jr z, .mimicmenu @@ -2764,7 +2764,7 @@ MoveSelectionMenu: ; 3d320 (f:5320) ld [hl], a ; fallthrough -SelectMenuItem: ; 3d3fe (f:53fe) +SelectMenuItem: ld a, [wMoveMenuType] and a jr z, .battleselect @@ -2859,18 +2859,18 @@ SelectMenuItem: ; 3d3fe (f:53fe) call LoadScreenTilesFromBuffer1 jp MoveSelectionMenu -MoveNoPPText: ; 3d4ae (f:54ae) +MoveNoPPText: TX_FAR _MoveNoPPText db "@" -MoveDisabledText: ; 3d4b3 (f:54b3) +MoveDisabledText: TX_FAR _MoveDisabledText db "@" -WhichTechniqueString: ; 3d4b8 (f:54b8) +WhichTechniqueString: db "WHICH TECHNIQUE?@" -SelectMenuItem_CursorUp: ; 3d4c9 (f:54c9) +SelectMenuItem_CursorUp: ld a, [wCurrentMenuItem] and a jp nz, SelectMenuItem @@ -2880,7 +2880,7 @@ SelectMenuItem_CursorUp: ; 3d4c9 (f:54c9) ld [wCurrentMenuItem], a jp SelectMenuItem -SelectMenuItem_CursorDown: ; 3d4dd (f:54dd) +SelectMenuItem_CursorDown: ld a, [wCurrentMenuItem] ld b, a ld a, [wNumMovesMinusOne] @@ -2893,7 +2893,7 @@ SelectMenuItem_CursorDown: ; 3d4dd (f:54dd) ld [wCurrentMenuItem], a jp SelectMenuItem -Func_3d4f5: ; 3d4f5 (f:54f5) +Func_3d4f5: bit 3, a ld a, $0 jr nz, .asm_3d4fd @@ -2912,19 +2912,19 @@ Func_3d4f5: ; 3d4f5 (f:54f5) callab Func_78e98 jp MoveSelectionMenu -Func_3d523: ; 3d523 (f:5523) +Func_3d523: ld a, [wTestBattlePlayerSelectedMove] dec a jr asm_3d52d -Func_3d529: ; 3d529 (f:5529) +Func_3d529: ld a, [wTestBattlePlayerSelectedMove] inc a -asm_3d52d: ; 3d52d (f:552d) +asm_3d52d: ld [wTestBattlePlayerSelectedMove], a call Func_3d536 jp MoveSelectionMenu -Func_3d536: ; 3d536 (f:5536) +Func_3d536: coord hl, 10, 16 lb bc, 2, 10 call ClearScreenArea @@ -2942,7 +2942,7 @@ Func_3d536: ; 3d536 (f:5536) coord hl, 13, 17 jp PlaceString -AnyMoveToSelect: ; 3d55f (f:555f) +AnyMoveToSelect: ; return z and Struggle as the selected move if all moves have 0 PP and/or are disabled ld a, STRUGGLE ld [wPlayerSelectedMove], a @@ -2961,7 +2961,7 @@ AnyMoveToSelect: ; 3d55f (f:555f) jr .noMovesLeft .handleDisabledMove swap a - and $f ; get move disabled + and $f ; get disabled move ld b, a ld d, NUM_MOVES + 1 xor a @@ -2988,11 +2988,11 @@ AnyMoveToSelect: ; 3d55f (f:555f) xor a ret -NoMovesLeftText: ; 3d59b (f:559b) +NoMovesLeftText: TX_FAR _NoMovesLeftText db "@" -SwapMovesInMenu: ; 3d5a0 (f:55a0) +SwapMovesInMenu: ld a, [wPlayerBattleStatus3] bit Transformed, a jp nz, MoveSelectionMenu @@ -3071,7 +3071,7 @@ SwapMovesInMenu: ; 3d5a0 (f:55a0) ld [wMenuItemToSwap], a ; select the current menu item for swapping jp MoveSelectionMenu -PrintMenuItem: ; 3d629 (f:5629) +PrintMenuItem: xor a ld [H_AUTOBGTRANSFERENABLED], a coord hl, 0, 8 @@ -3141,13 +3141,13 @@ PrintMenuItem: ; 3d629 (f:5629) ld [H_AUTOBGTRANSFERENABLED], a jp Delay3 -DisabledText: ; 3d6c7 (f:56c7) +DisabledText: db "Disabled!@" -TypeText: ; 3d6d1 (f:56d1) +TypeText: db "TYPE@" -SelectEnemyMove: ; 3d6d6 (f:56d6) +SelectEnemyMove: ld a, [wLinkState] sub LINK_STATE_BATTLING jr nz, .noLinkBattle @@ -3240,7 +3240,7 @@ SelectEnemyMove: ; 3d6d6 (f:56d6) jr .done ; this appears to exchange data with the other gameboy during link battles -LinkBattleExchangeData: ; 3d777 (f:5777) +LinkBattleExchangeData: ld a, $ff ld [wSerialExchangeNybbleReceiveData], a ld a, [wPlayerMoveListIndex] @@ -3288,7 +3288,7 @@ LinkBattleExchangeData: ; 3d777 (f:5777) jr nz, .syncLoop3 ret -ExecutePlayerMove: ; 3d7d0 (f:57d0) +ExecutePlayerMove: xor a ld [H_WHOSETURN], a ; set player's turn ld a, [wPlayerSelectedMove] @@ -3316,7 +3316,7 @@ ExecutePlayerMove: ; 3d7d0 (f:57d0) call CheckForDisobedience jp z, ExecutePlayerMoveDone -CheckIfPlayerNeedsToChargeUp: ; 3d80c (f:580c) +CheckIfPlayerNeedsToChargeUp: ld a, [wPlayerMoveEffect] cp CHARGE_EFFECT jp z, JumpMoveEffect @@ -3325,13 +3325,13 @@ CheckIfPlayerNeedsToChargeUp: ; 3d80c (f:580c) jr PlayerCanExecuteMove ; in-battle stuff -PlayerCanExecuteChargingMove: ; 3d81b (f:581b) +PlayerCanExecuteChargingMove: ld hl,wPlayerBattleStatus1 res ChargingUp,[hl] ; reset charging up and invulnerability statuses if mon was charging up for an attack ; being fully paralyzed or hurting oneself in confusion removes charging up status ; resulting in the Pokemon being invulnerable for the whole battle res Invulnerable,[hl] -PlayerCanExecuteMove: ; 3d822 (f:5822) +PlayerCanExecuteMove: call PrintMonName1Text ld hl,DecrementPP ld de,wPlayerSelectedMove ; pointer to the move just used @@ -3348,7 +3348,7 @@ PlayerCanExecuteMove: ; 3d822 (f:5822) ld de,1 call IsInArray call c,JumpMoveEffect ; execute the effects of SpecialEffectsCont moves (e.g. Wrap, Thrash) but don't skip anything -PlayerCalcMoveDamage: ; 3d84e (f:584e) +PlayerCalcMoveDamage: ld a,[wPlayerMoveEffect] ld hl,SetDamageEffects ld de,1 @@ -3365,7 +3365,7 @@ PlayerCalcMoveDamage: ; 3d84e (f:584e) call RandomizeDamage .moveHitTest call MoveHitTest -handleIfPlayerMoveMissed: ; 3d877 (f:5877) +handleIfPlayerMoveMissed: ld a,[wMoveMissed] and a jr z,getPlayerAnimationType @@ -3373,13 +3373,13 @@ handleIfPlayerMoveMissed: ; 3d877 (f:5877) sub a,EXPLODE_EFFECT jr z,playPlayerMoveAnimation ; don't play any animation if the move missed, unless it was EXPLODE_EFFECT jr playerCheckIfFlyOrChargeEffect -getPlayerAnimationType: ; 3d87b (f:587b) +getPlayerAnimationType: ld a,[wPlayerMoveEffect] and a ld a,4 ; move has no effect other than dealing damage jr z,playPlayerMoveAnimation ld a,5 ; move has effect -playPlayerMoveAnimation ; 3d890 (f:5890) +playPlayerMoveAnimation: push af ld a,[wPlayerBattleStatus2] bit HasSubstituteUp,a @@ -3398,7 +3398,7 @@ playPlayerMoveAnimation ; 3d890 (f:5890) ld b,BANK(ReshowSubstituteAnim) call nz,Bankswitch jr MirrorMoveCheck -playerCheckIfFlyOrChargeEffect ; 3d8bd (f:58bd) +playerCheckIfFlyOrChargeEffect: ld c,30 call DelayFrames ld a,[wPlayerMoveEffect] @@ -3412,7 +3412,7 @@ playerCheckIfFlyOrChargeEffect ; 3d8bd (f:58bd) ld [wAnimationType],a ld a,STATUS_AFFECTED_ANIM call PlayMoveAnimation -MirrorMoveCheck: ; 3d8d8 (f:58d8) +MirrorMoveCheck: ld a,[wPlayerMoveEffect] cp a,MIRROR_MOVE_EFFECT jr nz,.metronomeCheck @@ -3485,17 +3485,17 @@ MirrorMoveCheck: ; 3d8d8 (f:58d8) ; Responsible for executing Twineedle's second side effect (poison). jp ExecutePlayerMoveDone -MultiHitText: ; 3d977 (f:5977) +MultiHitText: TX_FAR _MultiHitText db "@" -ExecutePlayerMoveDone: ; 3d97c (f:597c) +ExecutePlayerMoveDone: xor a ld [wActionResultOrTookBattleTurn],a ld b,1 ret -PrintGhostText: ; 3d983 (f:5983) +PrintGhostText: ; print the ghost battle messages call IsGhostBattle ret nz @@ -3515,15 +3515,15 @@ PrintGhostText: ; 3d983 (f:5983) xor a ret -ScaredText: ; 3d9a2 (f:59a2) +ScaredText: TX_FAR _ScaredText db "@" -GetOutText: ; 3d9a7 (f:59a7) +GetOutText: TX_FAR _GetOutText db "@" -IsGhostBattle: ; 3d9ac (f:59ac) +IsGhostBattle: ld a,[wIsInBattle] dec a ret nz @@ -3542,7 +3542,7 @@ IsGhostBattle: ; 3d9ac (f:59ac) ; checks for various status conditions affecting the player mon ; stores whether the mon cannot use a move this turn in Z flag -CheckPlayerStatusConditions: ; 3d9c6 (f:59c6) +CheckPlayerStatusConditions: ld hl,wBattleMonStatus ld a,[hl] and a,SLP ; sleep mask @@ -3803,67 +3803,67 @@ CheckPlayerStatusConditions: ; 3d9c6 (f:59c6) and a ret -FastAsleepText: ; 3dbaf (f:5baf) +FastAsleepText: TX_FAR _FastAsleepText db "@" -WokeUpText: ; 3dbb4 (f:5bb4) +WokeUpText: TX_FAR _WokeUpText db "@" -IsFrozenText: ; 3dbb9 (f:5bb9) +IsFrozenText: TX_FAR _IsFrozenText db "@" -FullyParalyzedText: ; 3dbbe (f:5bbe) +FullyParalyzedText: TX_FAR _FullyParalyzedText db "@" -FlinchedText: ; 3dbc3 (f:5bc3) +FlinchedText: TX_FAR _FlinchedText db "@" -MustRechargeText: ; 3dbc8 (f:5bc8) +MustRechargeText: TX_FAR _MustRechargeText db "@" -DisabledNoMoreText: ; 3dbcd (f:5bcd) +DisabledNoMoreText: TX_FAR _DisabledNoMoreText db "@" -IsConfusedText: ; 3dbd2 (f:5bd2) +IsConfusedText: TX_FAR _IsConfusedText db "@" -HurtItselfText: ; 3dbd7 (f:5bd7) +HurtItselfText: TX_FAR _HurtItselfText db "@" -ConfusedNoMoreText: ; 3dbdc (f:5bdc) +ConfusedNoMoreText: TX_FAR _ConfusedNoMoreText db "@" -SavingEnergyText: ; 3dbe1 (f:5be1) +SavingEnergyText: TX_FAR _SavingEnergyText db "@" -UnleashedEnergyText: ; 3dbe6 (f:5be6) +UnleashedEnergyText: TX_FAR _UnleashedEnergyText db "@" -ThrashingAboutText: ; 3dbeb (f:5beb) +ThrashingAboutText: TX_FAR _ThrashingAboutText db "@" -AttackContinuesText: ; 3dbf0 (f:5bf0) +AttackContinuesText: TX_FAR _AttackContinuesText db "@" -CantMoveText: ; 3dbf5 (f:5bf5) +CantMoveText: TX_FAR _CantMoveText db "@" -PrintMoveIsDisabledText: ; 3dbfa (f:5bfa) +PrintMoveIsDisabledText: ld hl, wPlayerSelectedMove ld de, wPlayerBattleStatus1 ld a, [H_WHOSETURN] @@ -3881,11 +3881,11 @@ PrintMoveIsDisabledText: ; 3dbfa (f:5bfa) ld hl, MoveIsDisabledText jp PrintText -MoveIsDisabledText: ; 3dc1a (f:5c1a) +MoveIsDisabledText: TX_FAR _MoveIsDisabledText db "@" -HandleSelfConfusionDamage: ; 3dc1f (f:5c1f) +HandleSelfConfusionDamage: ld hl, HurtItselfText call PrintText ld hl, wEnemyMonDefense @@ -3929,7 +3929,7 @@ HandleSelfConfusionDamage: ; 3dc1f (f:5c1f) ld [H_WHOSETURN], a jp ApplyDamageToPlayerPokemon -PrintMonName1Text: ; 3dc67 (f:5c67) +PrintMonName1Text: ld hl, MonName1Text jp PrintText @@ -3938,7 +3938,7 @@ PrintMonName1Text: ; 3dc67 (f:5c67) ; those text strings are identical and both continue at PrintInsteadText ; this likely had to do with Japanese grammar that got translated, ; but the functionality didn't get removed -MonName1Text: ; 3dc6d (f:5c6d) +MonName1Text: TX_FAR _MonName1Text TX_ASM ld a, [H_WHOSETURN] @@ -3963,33 +3963,33 @@ MonName1Text: ; 3dc6d (f:5c6d) ld hl, Used1Text ret -Used1Text: ; 3dc9f (f:5c9f) +Used1Text: TX_FAR _Used1Text TX_ASM jr PrintInsteadText -Used2Text: ; 3dca6 (f:5ca6) +Used2Text: TX_FAR _Used2Text TX_ASM ; fall through -PrintInsteadText: ; 3dcab (f:5cab) +PrintInsteadText: ld a, [wMonIsDisobedient] and a jr z, PrintMoveName ld hl, InsteadText ret -InsteadText: ; 3dcb5 (f:5cb5) +InsteadText: TX_FAR _InsteadText TX_ASM ; fall through -PrintMoveName: ; 3dcba (f:5cba) +PrintMoveName: ld hl, _PrintMoveName ret -_PrintMoveName: ; 3dcbe (f:5cbe) +_PrintMoveName: TX_FAR _CF4BText TX_ASM ld hl, ExclamationPointPointerTable @@ -4005,30 +4005,30 @@ _PrintMoveName: ; 3dcbe (f:5cbe) ld l, a ret -ExclamationPointPointerTable: ; 3dcd4 (f:5cd4) +ExclamationPointPointerTable: dw ExclamationPoint1Text dw ExclamationPoint2Text dw ExclamationPoint3Text dw ExclamationPoint4Text dw ExclamationPoint5Text -ExclamationPoint1Text: ; 3dcde (f:5cde) +ExclamationPoint1Text: TX_FAR _ExclamationPoint1Text db "@" -ExclamationPoint2Text: ; 3dce3 (f:5ce3) +ExclamationPoint2Text: TX_FAR _ExclamationPoint2Text db "@" -ExclamationPoint3Text: ; 3dce8 (f:5ce8) +ExclamationPoint3Text: TX_FAR _ExclamationPoint3Text db "@" -ExclamationPoint4Text: ; 3dced (f:5ced) +ExclamationPoint4Text: TX_FAR _ExclamationPoint4Text db "@" -ExclamationPoint5Text: ; 3dcf2 (f:5cf2) +ExclamationPoint5Text: TX_FAR _ExclamationPoint5Text db "@" @@ -4039,7 +4039,7 @@ ExclamationPoint5Text: ; 3dcf2 (f:5cf2) ; but all five text strings are identical ; this likely had to do with Japanese grammar that got translated, ; but the functionality didn't get removed -DetermineExclamationPointTextNum: ; 3dcf7 (f:5cf7) +DetermineExclamationPointTextNum: push bc ld a, [wd11e] ; move ID ld c, a @@ -4061,7 +4061,7 @@ DetermineExclamationPointTextNum: ; 3dcf7 (f:5cf7) pop bc ret -ExclamationPointMoveSets: ; 3dd15 (f:5d15) +ExclamationPointMoveSets: ; a grammar mistake was fixed (only concerning japanese) ; BIDE is in category 3, moved from category 2 db SWORDS_DANCE, GROWTH @@ -4078,7 +4078,7 @@ ExclamationPointMoveSets: ; 3dd15 (f:5d15) db $00 db $FF ; terminator -PrintMoveFailureText: ; 3dd54 (f:5d54) +PrintMoveFailureText: ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] and a @@ -4105,7 +4105,7 @@ PrintMoveFailureText: ; 3dd54 (f:5d54) ret nz ; if you get here, the mon used jump kick or hi jump kick and missed - ld hl, wDamage ; since the move missed, W_DAMAGE will always contain 0 at this point. + ld hl, wDamage ; since the move missed, wDamage will always contain 0 at this point. ; Thus, recoil damage will always be equal to 1 ; even if it was intended to be potential damage/8. ld a, [hli] @@ -4135,28 +4135,28 @@ PrintMoveFailureText: ; 3dd54 (f:5d54) .enemyTurn jp ApplyDamageToEnemyPokemon -AttackMissedText: ; 3ddb4 (f:5db4) +AttackMissedText: TX_FAR _AttackMissedText db "@" -KeptGoingAndCrashedText: ; 3ddb9 (f:5db9) +KeptGoingAndCrashedText: TX_FAR _KeptGoingAndCrashedText db "@" -UnaffectedText: ; 3ddbe (f:5dbe) +UnaffectedText: TX_FAR _UnaffectedText db "@" -PrintDoesntAffectText: ; 3ddc3 (f:5dc3) +PrintDoesntAffectText: ld hl, DoesntAffectMonText jp PrintText -DoesntAffectMonText: ; 3ddc9 (f:5dc9) +DoesntAffectMonText: TX_FAR _DoesntAffectMonText db "@" ; if there was a critical hit or an OHKO was successful, print the corresponding text -PrintCriticalOHKOText: ; 3ddce (f:5dce) +PrintCriticalOHKOText: ld a, [wCriticalHitOrOHKO] and a jr z, .done ; do nothing if there was no critical hit or successful OHKO @@ -4176,21 +4176,21 @@ PrintCriticalOHKOText: ; 3ddce (f:5dce) ld c, 20 jp DelayFrames -CriticalOHKOTextPointers: ; 3ddec (f:5dec) +CriticalOHKOTextPointers: dw CriticalHitText dw OHKOText -CriticalHitText: ; 3ddf0 (f:5df0) +CriticalHitText: TX_FAR _CriticalHitText db "@" -OHKOText: ; 3ddf5 (f:5df5) +OHKOText: TX_FAR _OHKOText db "@" ; checks if a traded mon will disobey due to lack of badges ; stores whether the mon will use a move in Z flag -CheckForDisobedience: ; 3ddfa (f:5dfa) +CheckForDisobedience: xor a ld [wMonIsDisobedient], a ld a, [wLinkState] @@ -4369,28 +4369,28 @@ CheckForDisobedience: ; 3ddfa (f:5dfa) xor a ; set Z flag ret -LoafingAroundText: ; 3df28 (f:5f28) +LoafingAroundText: TX_FAR _LoafingAroundText db "@" -BeganToNapText: ; 3df2d (f:5f2d) +BeganToNapText: TX_FAR _BeganToNapText db "@" -WontObeyText: ; 3df32 (f:5f32) +WontObeyText: TX_FAR _WontObeyText db "@" -TurnedAwayText: ; 3df37 (f:5f37) +TurnedAwayText: TX_FAR _TurnedAwayText db "@" -IgnoredOrdersText: ; 3df3c (f:5f3c) +IgnoredOrdersText: TX_FAR _IgnoredOrdersText db "@" ; sets b, c, d, and e for the CalculateDamage routine in the case of an attack by the player mon -GetDamageVarsForPlayerAttack: ; 3df41 (f:5f41) +GetDamageVarsForPlayerAttack: xor a ld hl, wDamage ; damage to eventually inflict, initialise to zero ldi [hl], a @@ -4503,7 +4503,7 @@ GetDamageVarsForPlayerAttack: ; 3df41 (f:5f41) ret ; sets b, c, d, and e for the CalculateDamage routine in the case of an attack by the enemy mon -GetDamageVarsForEnemyAttack: ; 3dfe7 (f:5fe7) +GetDamageVarsForEnemyAttack: ld hl, wDamage ; damage to eventually inflict, initialise to zero xor a ld [hli], a @@ -4618,7 +4618,7 @@ GetDamageVarsForEnemyAttack: ; 3dfe7 (f:5fe7) ; get stat c of enemy mon ; c: stat to get (HP=1,Attack=2,Defense=3,Speed=4,Special=5) -GetEnemyMonStat: ; 3e08e (f:608e) +GetEnemyMonStat: push de push bc ld a, [wLinkState] @@ -4659,7 +4659,7 @@ GetEnemyMonStat: ; 3e08e (f:608e) pop de ret -CalculateDamage: ; 3d0d7 (f:60d7) +CalculateDamage: ; input: ; b: attack ; c: opponent defense @@ -4821,14 +4821,14 @@ CalculateDamage: ; 3d0d7 (f:60d7) and a ret -JumpToOHKOMoveEffect: ; 3e188 (f:6188) +JumpToOHKOMoveEffect: call JumpMoveEffect ld a, [wMoveMissed] dec a ret -UnusedHighCriticalMoves: ; 3e190 (f:6190) +UnusedHighCriticalMoves: db KARATE_CHOP db RAZOR_LEAF db CRABHAMMER @@ -4839,7 +4839,7 @@ UnusedHighCriticalMoves: ; 3e190 (f:6190) ; determines if attack is a critical hit ; azure heights claims "the fastest pokémon (who are, not coincidentally, ; among the most popular) tend to CH about 20 to 25% of the time." -CriticalHitTest: ; 3e195 (f:6195) +CriticalHitTest: xor a ld [wCriticalHitOrOHKO], a ld a, [H_WHOSETURN] @@ -4906,7 +4906,7 @@ CriticalHitTest: ; 3e195 (f:6195) ret ; high critical hit moves -HighCriticalMoves: ; 3e200 (f:6200) +HighCriticalMoves: db KARATE_CHOP db RAZOR_LEAF db CRABHAMMER @@ -4915,7 +4915,7 @@ HighCriticalMoves: ; 3e200 (f:6200) ; function to determine if Counter hits and if so, how much damage it does -HandleCounterMove: ; 3e205 (f:6205) +HandleCounterMove: ; The variables checked by Counter are updated whenever the cursor points to a new move in the battle selection menu. ; This is irrelevant for the opponent's side outside of link battles, since the move selection is controlled by the AI. ; However, in the scenario where the player switches out and the opponent uses Counter, @@ -4980,7 +4980,7 @@ HandleCounterMove: ; 3e205 (f:6205) xor a ret -ApplyAttackToEnemyPokemon: ; 3e251 (f:6251) +ApplyAttackToEnemyPokemon: ld a,[wPlayerMoveEffect] cp a,OHKO_EFFECT jr z,ApplyDamageToEnemyPokemon @@ -5046,7 +5046,7 @@ ApplyAttackToEnemyPokemon: ; 3e251 (f:6251) ld a,b ld [hl],a -ApplyDamageToEnemyPokemon: ; 3e2b4 (f:62b4) +ApplyDamageToEnemyPokemon: ld hl,wDamage ld a,[hli] ld b,a @@ -5096,10 +5096,10 @@ ApplyDamageToEnemyPokemon: ; 3e2b4 (f:62b4) xor a ld [wHPBarType],a predef UpdateHPBar2 ; animate the HP bar shortening -ApplyAttackToEnemyPokemonDone: ; 3e30f (f:630f) +ApplyAttackToEnemyPokemonDone: jp DrawHUDsAndHPBars -ApplyAttackToPlayerPokemon: ; 3e312 (f:6312) +ApplyAttackToPlayerPokemon: ld a,[wEnemyMoveEffect] cp a,OHKO_EFFECT jr z,ApplyDamageToPlayerPokemon @@ -5165,7 +5165,7 @@ ApplyAttackToPlayerPokemon: ; 3e312 (f:6312) ld a,b ld [hl],a -ApplyDamageToPlayerPokemon: ; 3e372 (f:6372) +ApplyDamageToPlayerPokemon: ld hl,wDamage ld a,[hli] ld b,a @@ -5214,10 +5214,10 @@ ApplyDamageToPlayerPokemon: ; 3e372 (f:6372) ld a,$01 ld [wHPBarType],a predef UpdateHPBar2 ; animate the HP bar shortening -ApplyAttackToPlayerPokemonDone: ; 3e3cd (f:63cd) +ApplyAttackToPlayerPokemonDone: jp DrawHUDsAndHPBars -AttackSubstitute: ; 3e3d0 (f:63d0) +AttackSubstitute: ; Unlike the two ApplyAttackToPokemon functions, Attack Substitute is shared by player and enemy. ; Self-confusion damage as well as Hi-Jump Kick and Jump Kick recoil cause a momentary turn swap before being applied. ; If the user has a Substitute up and would take damage because of that, @@ -5272,16 +5272,16 @@ AttackSubstitute: ; 3e3d0 (f:63d0) ld [hl],a ; zero the effect of the attacker's move jp DrawHUDsAndHPBars -SubstituteTookDamageText: ; 3e41e (f:641e) +SubstituteTookDamageText: TX_FAR _SubstituteTookDamageText db "@" -SubstituteBrokeText: ; 3e423 (f:6423) +SubstituteBrokeText: TX_FAR _SubstituteBrokeText db "@" ; this function raises the attack modifier of a pokemon using Rage when that pokemon is attacked -HandleBuildingRage: ; 3e428 (f:6428) +HandleBuildingRage: ; values for the player turn ld hl,wEnemyBattleStatus2 ld de,wEnemyMonStatMods @@ -5323,13 +5323,13 @@ HandleBuildingRage: ; 3e428 (f:6428) ld [H_WHOSETURN],a ret -BuildingRageText: ; 3e46a (f:646a) +BuildingRageText: TX_FAR _BuildingRageText db "@" ; copy last move for Mirror Move ; sets zero flag on failure and unsets zero flag on success -MirrorMoveCopyMove: ; 3e46f (f:646f) +MirrorMoveCopyMove: ; Mirror Move makes use of ccf1 (wPlayerUsedMove) and ccf2 (wEnemyUsedMove) addresses, ; which are mainly used to print the "[Pokemon] used [Move]" text. ; Both are set to 0 whenever a new Pokemon is sent out @@ -5359,12 +5359,12 @@ MirrorMoveCopyMove: ; 3e46f (f:646f) xor a ret -MirrorMoveFailedText: ; 3e496 (f:6496) +MirrorMoveFailedText: TX_FAR _MirrorMoveFailedText db "@" ; function used to reload move data for moves like Mirror Move and Metronome -ReloadMoveData: ; 3e49b (f:649b) +ReloadMoveData: ld [wd11e],a dec a ld hl,Moves @@ -5381,7 +5381,7 @@ ReloadMoveData: ; 3e49b (f:649b) ret ; function that picks a random move for metronome -MetronomePickMove: ; 3e4ba (f:64ba) +MetronomePickMove: xor a ld [wAnimationType],a ld a,METRONOME @@ -5410,7 +5410,7 @@ MetronomePickMove: ; 3e4ba (f:64ba) ; this function increments the current move's PP ; it's used to prevent moves that run another move within the same turn ; (like Mirror Move and Metronome) from losing 2 PP -IncrementMovePP: ; 3e4e5 (f:64e5) +IncrementMovePP: ld a,[H_WHOSETURN] and a ; values for player turn @@ -5442,7 +5442,7 @@ IncrementMovePP: ; 3e4e5 (f:64e5) ret ; function to adjust the base damage of an attack to account for type effectiveness -AdjustDamageForMoveType: ; 3e517 (f:6517) +AdjustDamageForMoveType: ; values for player turn ld hl,wBattleMonType ld a,[hli] @@ -5555,7 +5555,7 @@ AdjustDamageForMoveType: ; 3e517 (f:6517) .done ret -AIGetTypeEffectiveness: ; 3e5bb (f:65bb) +AIGetTypeEffectiveness: ld a,[wEnemyMoveType] ld d,a ; d = type of enemy move ld hl,wBattleMonType @@ -5602,7 +5602,7 @@ AIGetTypeEffectiveness: ; 3e5bb (f:65bb) INCLUDE "data/type_effects.asm" ; some tests that need to pass for a move to hit -MoveHitTest: ; 3e6f1 (f:66f1) +MoveHitTest: ; player's turn ld hl,wEnemyBattleStatus1 ld de,wPlayerMoveEffect @@ -5722,7 +5722,7 @@ MoveHitTest: ; 3e6f1 (f:66f1) ret ; values for player turn -CalcHitChance: ; 3e7aa (f:67aa) +CalcHitChance: ld hl,wPlayerMoveAccuracy ld a,[H_WHOSETURN] and a @@ -5794,7 +5794,7 @@ CalcHitChance: ; 3e7aa (f:67aa) ret ; multiplies damage by a random percentage from ~85% to 100% -RandomizeDamage: ; 3e80d (f:680d) +RandomizeDamage: ld hl, wDamage ld a, [hli] and a @@ -5831,7 +5831,7 @@ RandomizeDamage: ; 3e80d (f:680d) ret ; for more detailed commentary, see equivalent function for player side (ExecutePlayerMove) -ExecuteEnemyMove: ; 3e842 (f:6842) +ExecuteEnemyMove: ld a, [wEnemySelectedMove] inc a jp z, ExecuteEnemyMoveDone @@ -5863,14 +5863,14 @@ ExecuteEnemyMove: ; 3e842 (f:6842) jr nz, EnemyCanExecuteChargingMove ; if so, jump call GetCurrentMove -CheckIfEnemyNeedsToChargeUp: ; 3e882 (f:6882) +CheckIfEnemyNeedsToChargeUp: ld a, [wEnemyMoveEffect] cp CHARGE_EFFECT jp z, JumpMoveEffect cp FLY_EFFECT jp z, JumpMoveEffect jr EnemyCanExecuteMove -EnemyCanExecuteChargingMove: ; 3e891 (f:6891) +EnemyCanExecuteChargingMove: ld hl, wEnemyBattleStatus1 res ChargingUp, [hl] ; no longer charging up for attack res Invulnerable, [hl] ; no longer invulnerable to typical attacks @@ -5883,7 +5883,7 @@ EnemyCanExecuteChargingMove: ; 3e891 (f:6891) call GetName ld de, wcd6d call CopyStringToCF4B -EnemyCanExecuteMove: ; 3e8b1 (f:68b1) +EnemyCanExecuteMove: xor a ld [wMonIsDisobedient], a call PrintMonName1Text @@ -5897,7 +5897,7 @@ EnemyCanExecuteMove: ; 3e8b1 (f:68b1) ld de, $1 call IsInArray call c, JumpMoveEffect -EnemyCalcMoveDamage: ; 3e8d6 (f:68d6) +EnemyCalcMoveDamage: call SwapPlayerAndEnemyLevels ld a, [wEnemyMoveEffect] ld hl, SetDamageEffects @@ -5915,9 +5915,9 @@ EnemyCalcMoveDamage: ; 3e8d6 (f:68d6) call AdjustDamageForMoveType call RandomizeDamage -EnemyMoveHitTest: ; 3e905 (f:6905) +EnemyMoveHitTest: call MoveHitTest -handleIfEnemyMoveMissed: ; 3e908 (f:6908) +handleIfEnemyMoveMissed: ld a, [wMoveMissed] and a jr z, .moveDidNotMiss @@ -5928,17 +5928,17 @@ handleIfEnemyMoveMissed: ; 3e908 (f:6908) .moveDidNotMiss call SwapPlayerAndEnemyLevels -GetEnemyAnimationType: ; 3e91a (f:691a) +GetEnemyAnimationType: ld a, [wEnemyMoveEffect] and a ld a, $1 jr z, playEnemyMoveAnimation ld a, $2 jr playEnemyMoveAnimation -handleExplosionMiss: ; 3e926 (f:6926) +handleExplosionMiss: call SwapPlayerAndEnemyLevels xor a -playEnemyMoveAnimation: ; 3e92a (f:692a) +playEnemyMoveAnimation: push af ld a, [wEnemyBattleStatus2] bit HasSubstituteUp, a ; does mon have a substitute? @@ -5958,7 +5958,7 @@ playEnemyMoveAnimation: ; 3e92a (f:692a) call nz, Bankswitch ; slide the substitute's sprite out jr EnemyCheckIfMirrorMoveEffect -EnemyCheckIfFlyOrChargeEffect: ; 3e957 (f:6957) +EnemyCheckIfFlyOrChargeEffect: call SwapPlayerAndEnemyLevels ld c, 30 call DelayFrames @@ -5973,7 +5973,7 @@ EnemyCheckIfFlyOrChargeEffect: ; 3e957 (f:6957) ld [wAnimationType], a ld a,STATUS_AFFECTED_ANIM call PlayMoveAnimation -EnemyCheckIfMirrorMoveEffect: ; 3e975 (f:6975) +EnemyCheckIfMirrorMoveEffect: ld a, [wEnemyMoveEffect] cp MIRROR_MOVE_EFFECT jr nz, .notMirrorMoveEffect @@ -6040,17 +6040,17 @@ EnemyCheckIfMirrorMoveEffect: ; 3e975 (f:6975) call nc, JumpMoveEffect jr ExecuteEnemyMoveDone -HitXTimesText: ; 3ea0d (f:6a0d) +HitXTimesText: TX_FAR _HitXTimesText db "@" -ExecuteEnemyMoveDone: ; 3ea12 (f:6a12) +ExecuteEnemyMoveDone: ld b, $1 ret ; checks for various status conditions affecting the enemy mon ; stores whether the mon cannot use a move this turn in Z flag -CheckEnemyStatusConditions: ; 3ea15 (f:6a15) +CheckEnemyStatusConditions: ld hl, wEnemyMonStatus ld a, [hl] and SLP ; sleep mask @@ -6332,7 +6332,7 @@ CheckEnemyStatusConditions: ; 3ea15 (f:6a15) and a ; clear Z flag ret -GetCurrentMove: ; 3ec44 (f:6c44) +GetCurrentMove: ld a, [H_WHOSETURN] and a jp z, .player @@ -6363,7 +6363,7 @@ GetCurrentMove: ; 3ec44 (f:6c44) ld de, wcd6d jp CopyStringToCF4B -LoadEnemyMonData: ; 3ec87 (f:6c87) +LoadEnemyMonData: ld a, [wLinkState] cp LINK_STATE_BATTLING jp z, LoadEnemyMonFromParty @@ -6523,7 +6523,7 @@ LoadEnemyMonData: ; 3ec87 (f:6c87) ret ; calls BattleTransition to show the battle transition animation and initializes some battle variables -DoBattleTransitionAndInitBattleVariables: ; 3edb8 (f:6db8) +DoBattleTransitionAndInitBattleVariables: ld a, [wLinkState] cp LINK_STATE_BATTLING jr nz, .next @@ -6559,7 +6559,7 @@ DoBattleTransitionAndInitBattleVariables: ; 3edb8 (f:6db8) ret ; swaps the level values of the BattleMon and EnemyMon structs -SwapPlayerAndEnemyLevels: ; 3ee07 (f:6e07) +SwapPlayerAndEnemyLevels: push bc ld a, [wBattleMonLevel] ld b, a @@ -6573,7 +6573,7 @@ SwapPlayerAndEnemyLevels: ; 3ee07 (f:6e07) ; loads either red back pic or old man back pic ; also writes OAM data and loads tile patterns for the Red or Old Man back sprite's head ; (for use when scrolling the player sprite and enemy's silhouettes on screen) -LoadPlayerBackPic: ; 3ee18 (f:6e18) +LoadPlayerBackPic: ld a, [wBattleType] ld de, OldManPic cp BATTLE_TYPE_OLD_MAN ; is it the old man tutorial? @@ -6636,26 +6636,26 @@ LoadPlayerBackPic: ; 3ee18 (f:6e18) predef_jump CopyUncompressedPicToTilemap ; does nothing since no stats are ever selected (barring glitches) -DoubleOrHalveSelectedStats: ; 3ee8e (f:6e8e) +DoubleOrHalveSelectedStats: callab DoubleSelectedStats jpab HalveSelectedStats -ScrollTrainerPicAfterBattle: ; 3ee9e (f:6e9e) +ScrollTrainerPicAfterBattle: jpab _ScrollTrainerPicAfterBattle -ApplyBurnAndParalysisPenaltiesToPlayer: ; 3eea6 (f:6ea6) +ApplyBurnAndParalysisPenaltiesToPlayer: ld a, $1 jr ApplyBurnAndParalysisPenalties -ApplyBurnAndParalysisPenaltiesToEnemy: ; 3eeaa (f:6eaa) +ApplyBurnAndParalysisPenaltiesToEnemy: xor a -ApplyBurnAndParalysisPenalties: ; 3eeab (f:6eab) +ApplyBurnAndParalysisPenalties: ld [H_WHOSETURN], a call QuarterSpeedDueToParalysis jp HalveAttackDueToBurn -QuarterSpeedDueToParalysis: ; 3eeb3 (f:6eb3) +QuarterSpeedDueToParalysis: ld a, [H_WHOSETURN] and a jr z, .playerTurn @@ -6698,7 +6698,7 @@ QuarterSpeedDueToParalysis: ; 3eeb3 (f:6eb3) ld [hl], b ret -HalveAttackDueToBurn: ; 3eeef (f:6eef) +HalveAttackDueToBurn: ld a, [H_WHOSETURN] and a jr z, .playerTurn @@ -6737,7 +6737,7 @@ HalveAttackDueToBurn: ; 3eeef (f:6eef) ld [hl], b ret -CalculateModifiedStats: ; 3ef25 (f:6f25) +CalculateModifiedStats: ld c, 0 .loop call CalculateModifiedStat @@ -6748,7 +6748,7 @@ CalculateModifiedStats: ; 3ef25 (f:6f25) ret ; calculate modified stat for stat c (0 = attack, 1 = defense, 2 = speed, 3 = special) -CalculateModifiedStat: ; 3ef31 (f:6f31) +CalculateModifiedStat: push bc push bc ld a, [wCalculateWhoseStats] @@ -6826,7 +6826,7 @@ CalculateModifiedStat: ; 3ef31 (f:6f31) pop bc ret -ApplyBadgeStatBoosts: ; 3efa5 (f:6fa5) +ApplyBadgeStatBoosts: ld a, [wLinkState] cp LINK_STATE_BATTLING ret z ; return if link battle @@ -6879,10 +6879,10 @@ ApplyBadgeStatBoosts: ; 3efa5 (f:6fa5) ld [hld], a ret -LoadHudAndHpBarAndStatusTilePatterns: ; 3efe4 (f:6fe4) +LoadHudAndHpBarAndStatusTilePatterns: call LoadHpBarAndStatusTilePatterns -LoadHudTilePatterns: ; 3efe7 (f:6fe7) +LoadHudTilePatterns: ld a, [rLCDC] add a ; is LCD disabled? jr c, .lcdEnabled @@ -6907,14 +6907,14 @@ LoadHudTilePatterns: ; 3efe7 (f:6fe7) lb bc, BANK(BattleHudTiles2), (BattleHudTiles3End - BattleHudTiles2) / $8 jp CopyVideoDataDouble -PrintEmptyString: ; 3f020 (f:7020) +PrintEmptyString: ld hl, .emptyString jp PrintText .emptyString db "@" -BattleRandom: ; 3f027 (f:7027) +BattleRandom: ; Link battles use a shared PRNG. ld a, [wLinkState] @@ -6966,7 +6966,7 @@ BattleRandom: ; 3f027 (f:7027) ret -HandleExplodingAnimation: ; 3f05f (f:705f) +HandleExplodingAnimation: ld a, [H_WHOSETURN] and a ld hl, wEnemyMonType1 @@ -6997,19 +6997,19 @@ HandleExplodingAnimation: ; 3f05f (f:705f) ld a, 5 ld [wAnimationType], a -PlayMoveAnimation: ; 3f093 (f:7093) +PlayMoveAnimation: ld [wAnimationID],a call Delay3 predef MoveAnimation callab Func_78e98 ret -JumpMoveEffect: ; 3f0a7 (f:70a7) +JumpMoveEffect: call _JumpMoveEffect ld b, $1 ret -_JumpMoveEffect: ; 3f0ad (f:70ad) +_JumpMoveEffect: ld a, [H_WHOSETURN] and a ld a, [wPlayerMoveEffect] @@ -7027,7 +7027,7 @@ _JumpMoveEffect: ; 3f0ad (f:70ad) ld l, a jp [hl] ; jump to special effect handler -MoveEffectPointerTable: ; 3f0c5 (f:70c5) +MoveEffectPointerTable: dw SleepEffect ; unused effect dw PoisonEffect ; POISON_SIDE_EFFECT1 dw DrainHPEffect ; DRAIN_HP_EFFECT @@ -7115,7 +7115,7 @@ MoveEffectPointerTable: ; 3f0c5 (f:70c5) dw SplashEffect ; SPLASH_EFFECT dw DisableEffect ; DISABLE_EFFECT -SleepEffect: ; 3f171 (f:7171) +SleepEffect: ld de, wEnemyMonStatus ld bc, wEnemyBattleStatus2 ld a, [H_WHOSETURN] @@ -7169,15 +7169,15 @@ SleepEffect: ; 3f171 (f:7171) .didntAffect jp PrintDidntAffectText -FellAsleepText: ; 3f1c8 (f:71c8) +FellAsleepText: TX_FAR _FellAsleepText db "@" -AlreadyAsleepText: ; 3f1cd (f:71cds) +AlreadyAsleepText: TX_FAR _AlreadyAsleepText db "@" -PoisonEffect: ; 3f1d2 (f:71d2) +PoisonEffect: ld hl, wEnemyMonStatus ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] @@ -7263,18 +7263,18 @@ PoisonEffect: ; 3f1d2 (f:71d2) call DelayFrames jp PrintDidntAffectText -PoisonedText: ; 3f262 (f:7262) +PoisonedText: TX_FAR _PoisonedText db "@" -BadlyPoisonedText: ; 3f267 (f:7267) +BadlyPoisonedText: TX_FAR _BadlyPoisonedText db "@" -DrainHPEffect: ; 3f26c (f:726c) +DrainHPEffect: jpab DrainHPEffect_ -ExplodeEffect: ; 3f274 (f:7274) +ExplodeEffect: ld hl, wBattleMonHP ld de, wPlayerBattleStatus2 ld a, [H_WHOSETURN] @@ -7293,7 +7293,7 @@ ExplodeEffect: ; 3f274 (f:7274) ld [de], a ret -FreezeBurnParalyzeEffect: ; 3f28f (f:728f) +FreezeBurnParalyzeEffect: xor a ld [wAnimationType], a call CheckTargetSubstitute ; test bit 4 of d063/d068 flags [target has substitute flag] @@ -7424,15 +7424,15 @@ FreezeBurnParalyzeEffect: ; 3f28f (f:728f) ld hl, FrozenText jp PrintText -BurnedText: ; 3f38e (f:738e) +BurnedText: TX_FAR _BurnedText db "@" -FrozenText: ; 3f393 (f:7393) +FrozenText: TX_FAR _FrozenText db "@" -CheckDefrost: ; 3f398 (f:7398) +CheckDefrost: ; any fire-type move that has a chance inflict burn (all but Fire Spin) will defrost a frozen target and a, 1 << FRZ ; are they frozen? ret z ; return if so @@ -7467,11 +7467,11 @@ CheckDefrost: ; 3f398 (f:7398) .common jp PrintText -FireDefrostedText: ; 3f3d9 (f:73d9) +FireDefrostedText: TX_FAR _FireDefrostedText db "@" -StatModifierUpEffect: ; 3f3de (f:73de) +StatModifierUpEffect: ld hl, wPlayerMonStatMods ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] @@ -7570,13 +7570,13 @@ StatModifierUpEffect: ; 3f3de (f:73de) ld a, 999 % $100 ld [H_MULTIPLICAND + 2], a -UpdateStat: ; 3f479 (f:7479) +UpdateStat: ld a, [H_PRODUCT + 2] ld [hli], a ld a, [H_PRODUCT + 3] ld [hl], a pop hl -UpdateStatDone: ; 3f480 (f:7480) +UpdateStatDone: ld b, c inc b call PrintStatText @@ -7627,15 +7627,15 @@ UpdateStatDone: ; 3f480 (f:7480) call QuarterSpeedDueToParalysis ; apply speed penalty to the player whose turn is not, if it's paralyzed jp HalveAttackDueToBurn ; apply attack penalty to the player whose turn is not, if it's burned -RestoreOriginalStatModifier: ; 3f4d6 (f:74d6) +RestoreOriginalStatModifier: pop hl dec [hl] -PrintNothingHappenedText: ; 3f4d8 (f:74d8) +PrintNothingHappenedText: ld hl, NothingHappenedText jp PrintText -MonsStatsRoseText: ; 3f4de (f:74de) +MonsStatsRoseText: TX_FAR _MonsStatsRoseText TX_ASM ld hl, GreatlyRoseText @@ -7650,15 +7650,15 @@ MonsStatsRoseText: ; 3f4de (f:74de) ld hl, RoseText ret -GreatlyRoseText: ; 3f4f8 (f:74f8) +GreatlyRoseText: db $0a TX_FAR _GreatlyRoseText ; fallthrough -RoseText: ; 3f4fd (f:74fd) +RoseText: TX_FAR _RoseText db "@" -StatModifierDownEffect: ; 3f502 (f:7502) +StatModifierDownEffect: ld hl, wEnemyMonStatMods ld de, wPlayerMoveEffect ld bc, wEnemyBattleStatus1 @@ -7788,14 +7788,14 @@ StatModifierDownEffect: ; 3f502 (f:7502) ld a, $1 ld [H_MULTIPLICAND + 2], a -UpdateLoweredStat: ; 3f5da (f:75da) +UpdateLoweredStat: ld a, [H_PRODUCT + 2] ld [hli], a ld a, [H_PRODUCT + 3] ld [hl], a pop de pop hl -UpdateLoweredStatDone: ; 3f5e2 (f:75e2) +UpdateLoweredStatDone: ld b, c inc b push de @@ -7819,25 +7819,25 @@ UpdateLoweredStatDone: ; 3f5e2 (f:75e2) call QuarterSpeedDueToParalysis jp HalveAttackDueToBurn -CantLowerAnymore_Pop: ; 3f603 (f:7603) +CantLowerAnymore_Pop: pop de pop hl inc [hl] -CantLowerAnymore: ; 3f606 (f:7606) +CantLowerAnymore: ld a, [de] cp ATTACK_DOWN_SIDE_EFFECT ret nc ld hl, NothingHappenedText jp PrintText -MoveMissed: ; 3f610 (f:7610) +MoveMissed: ld a, [de] cp $44 ret nc jp ConditionalPrintButItFailed -MonsStatsFellText: ; 3f617 (f:7617) +MonsStatsFellText: TX_FAR _MonsStatsFellText TX_ASM ld hl, FellText @@ -7855,15 +7855,15 @@ MonsStatsFellText: ; 3f617 (f:7617) ld hl, GreatlyFellText ret -GreatlyFellText: ; 3f634 (f:7634) +GreatlyFellText: db $0a TX_FAR _GreatlyFellText ; fallthrough -FellText: ; 3f639 (f:7639) +FellText: TX_FAR _FellText db "@" -PrintStatText: ; 3f63e (f:763e) +PrintStatText: ld hl, StatsTextStrings ld c, "@" .findStatName_outer @@ -7879,7 +7879,7 @@ PrintStatText: ; 3f63e (f:763e) ld bc, $a jp CopyData -StatsTextStrings: ; 3f655 (f:7655) +StatsTextStrings: db "ATTACK@" db "DEFENSE@" db "SPEED@" @@ -7887,7 +7887,7 @@ StatsTextStrings: ; 3f655 (f:7655) db "ACCURACY@" db "EVADE@" -StatModifierRatios: ; 3f681 (f:7681) +StatModifierRatios: ; first byte is numerator, second byte is denominator db 25, 100 ; 0.25 db 28, 100 ; 0.28 @@ -7903,7 +7903,7 @@ StatModifierRatios: ; 3f681 (f:7681) db 35, 10 ; 3.50 db 4, 1 ; 4.00 -BideEffect: ; 3f69b (f:769b) +BideEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerBideAccumulatedDamage ld bc, wPlayerNumAttacksLeft @@ -7930,7 +7930,7 @@ BideEffect: ; 3f69b (f:769b) add XSTATITEM_ANIM jp PlayBattleAnimation2 -ThrashPetalDanceEffect: ; 3f7cd (f:77cd) +ThrashPetalDanceEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft ld a, [H_WHOSETURN] @@ -7949,7 +7949,7 @@ ThrashPetalDanceEffect: ; 3f7cd (f:77cd) add ANIM_B0 jp PlayBattleAnimation2 -SwitchAndTeleportEffect: ; 3f6ef (f:76ef) +SwitchAndTeleportEffect: ld a, [H_WHOSETURN] and a jr nz, .handleEnemy @@ -8053,19 +8053,19 @@ SwitchAndTeleportEffect: ; 3f6ef (f:76ef) .printText jp PrintText -RanFromBattleText: ; 3f7b8 (f:77b8) +RanFromBattleText: TX_FAR _RanFromBattleText db "@" -RanAwayScaredText: ; 3f7bd (f:77bd) +RanAwayScaredText: TX_FAR _RanAwayScaredText db "@" -WasBlownAwayText: ; 3f7c2 (f:77c2) +WasBlownAwayText: TX_FAR _WasBlownAwayText db "@" -TwoToFiveAttacksEffect: ; 3f7c7 (f:77c7) +TwoToFiveAttacksEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft ld bc, wPlayerNumHits @@ -8111,7 +8111,7 @@ TwoToFiveAttacksEffect: ; 3f7c7 (f:77c7) ld [hl], a ; set Twineedle's effect to poison effect jr .saveNumberOfHits -FlinchSideEffect: ; 3f811 (f:7811) +FlinchSideEffect: call CheckTargetSubstitute ret nz ld hl, wEnemyBattleStatus1 @@ -8138,10 +8138,10 @@ FlinchSideEffect: ; 3f811 (f:7811) call ClearHyperBeam ret -OneHitKOEffect: ; 3f842 (f:7842) +OneHitKOEffect: jpab OneHitKOEffect_ -ChargeEffect: ; 3f84a (f:784a) +ChargeEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] @@ -8192,7 +8192,7 @@ ChargeEffect: ; 3f84a (f:784a) ld hl, ChargeMoveEffectText jp PrintText -ChargeMoveEffectText: ; 3f8a3 (f:78a3) +ChargeMoveEffectText: TX_FAR _ChargeMoveEffectText TX_ASM ld a, [wChargeMoveNum] @@ -8216,31 +8216,31 @@ ChargeMoveEffectText: ; 3f8a3 (f:78a3) .gotText ret -MadeWhirlwindText: ; 3f8d4 (f:78d4) +MadeWhirlwindText: TX_FAR _MadeWhirlwindText db "@" -TookInSunlightText: ; 3f8d9 (f:78d9) +TookInSunlightText: TX_FAR _TookInSunlightText db "@" -LoweredItsHeadText: ; 3f8de (f:78de) +LoweredItsHeadText: TX_FAR _LoweredItsHeadText db "@" -SkyAttackGlowingText: ; 3f8e3 (f:78e3) +SkyAttackGlowingText: TX_FAR _SkyAttackGlowingText db "@" -FlewUpHighText: ; 3f8e8 (f:78e8) +FlewUpHighText: TX_FAR _FlewUpHighText db "@" -DugAHoleText: ; 3f8ed (f:78ed) +DugAHoleText: TX_FAR _DugAHoleText db "@" -TrappingEffect: ; 3f8f2 (f:78f2) +TrappingEffect: ld hl, wPlayerBattleStatus1 ld de, wPlayerNumAttacksLeft ld a, [H_WHOSETURN] @@ -8265,22 +8265,22 @@ TrappingEffect: ; 3f8f2 (f:78f2) ld [de], a ret -MistEffect: ; 3f91c (f:791c) +MistEffect: jpab MistEffect_ -FocusEnergyEffect: ; 3f924 (f:7924) +FocusEnergyEffect: jpab FocusEnergyEffect_ -RecoilEffect: ; 3f92c (f:792c) +RecoilEffect: jpab RecoilEffect_ -ConfusionSideEffect: ; 3f934 (f:7934) +ConfusionSideEffect: call BattleRandom cp $19 ; ~10% chance ret nc jr ConfusionSideEffectSuccess -ConfusionEffect: ; 3f93c (f:793c) +ConfusionEffect: call CheckTargetSubstitute jr nz, ConfusionEffectFailed call MoveHitTest @@ -8288,7 +8288,7 @@ ConfusionEffect: ; 3f93c (f:793c) and a jr nz, ConfusionEffectFailed -ConfusionSideEffectSuccess: ; 3f94a (f:794a) +ConfusionSideEffectSuccess: ld a, [H_WHOSETURN] and a ld hl, wEnemyBattleStatus1 @@ -8314,24 +8314,24 @@ ConfusionSideEffectSuccess: ; 3f94a (f:794a) ld hl, BecameConfusedText jp PrintText -BecameConfusedText: ; 3f97c (f:797c) +BecameConfusedText: TX_FAR _BecameConfusedText db "@" -ConfusionEffectFailed: ; 3f981 (f:7981) +ConfusionEffectFailed: cp CONFUSION_SIDE_EFFECT ret z ld c, 50 call DelayFrames jp ConditionalPrintButItFailed -ParalyzeEffect: ; 3f98c (f:798c) +ParalyzeEffect: jpab ParalyzeEffect_ -SubstituteEffect: ; 3f994 (f:7994) +SubstituteEffect: jpab SubstituteEffect_ -HyperBeamEffect: ; 3f99c (f:799c) +HyperBeamEffect: ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a @@ -8341,7 +8341,7 @@ HyperBeamEffect: ; 3f99c (f:799c) set NeedsToRecharge, [hl] ; mon now needs to recharge ret -ClearHyperBeam: ; 3f9aa (f:79aa) +ClearHyperBeam: push hl ld hl, wEnemyBattleStatus2 ld a, [H_WHOSETURN] @@ -8353,7 +8353,7 @@ ClearHyperBeam: ; 3f9aa (f:79aa) pop hl ret -RageEffect: ; 3f9ba (f:79ba) +RageEffect: ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a @@ -8363,7 +8363,7 @@ RageEffect: ; 3f9ba (f:79ba) set UsingRage, [hl] ; mon is now in "rage" mode ret -MimicEffect: ; 3f9c8 (f:79c8) +MimicEffect: ld c, 50 call DelayFrames call MoveHitTest @@ -8435,18 +8435,18 @@ MimicEffect: ; 3f9c8 (f:79c8) .mimicMissed jp PrintButItFailedText_ -MimicLearnedMoveText: ; 3fa52 (f:7a52) +MimicLearnedMoveText: TX_FAR _MimicLearnedMoveText db "@" -LeechSeedEffect: ; 3fa57 (f:7a57) +LeechSeedEffect: jpab LeechSeedEffect_ -SplashEffect: ; 3fa5f (f:7a5f) +SplashEffect: call PlayCurrentMoveAnimation jp PrintNoEffectText -DisableEffect: ; 3fa65 (f:7a65) +DisableEffect: call MoveHitTest ld a, [wMoveMissed] and a @@ -8529,74 +8529,74 @@ DisableEffect: ; 3fa65 (f:7a65) .moveMissed jp PrintButItFailedText_ -MoveWasDisabledText: ; 3fae4 (f:7ae4) +MoveWasDisabledText: TX_FAR _MoveWasDisabledText db "@" -PayDayEffect: ; 3fae9 (f:7ae9) +PayDayEffect: jpab PayDayEffect_ -ConversionEffect: ; 3faf1 (f:7af1) +ConversionEffect: jpab ConversionEffect_ -HazeEffect: ; 3faf9 (f:7af9) +HazeEffect: jpab HazeEffect_ -HealEffect: ; 3fb01 (f:7b01) +HealEffect: jpab HealEffect_ -TransformEffect: ; 3fb09 (f:7b09) +TransformEffect: jpab TransformEffect_ -ReflectLightScreenEffect: ; 3fb11 (f:7b11) +ReflectLightScreenEffect: jpab ReflectLightScreenEffect_ -NothingHappenedText: ; 3fb19 (f:7b19) +NothingHappenedText: TX_FAR _NothingHappenedText db "@" -PrintNoEffectText: ; 3fb1e (f:7b1e) +PrintNoEffectText: ld hl, NoEffectText jp PrintText -NoEffectText: ; 3fb24 (f:7b24) +NoEffectText: TX_FAR _NoEffectText db "@" -ConditionalPrintButItFailed: ; 3fb29 (f:7b29) +ConditionalPrintButItFailed: ld a, [wMoveDidntMiss] and a ret nz ; return if the side effect failed, yet the attack was successful -PrintButItFailedText_: ; 3fb2e (f:7b2e) +PrintButItFailedText_: ld hl, ButItFailedText jp PrintText -ButItFailedText: ; 3fb34 (f:7b34) +ButItFailedText: TX_FAR _ButItFailedText db "@" -PrintDidntAffectText: ; 3fb39 (f:7b39) +PrintDidntAffectText: ld hl, DidntAffectText jp PrintText -DidntAffectText: ; 3fb3f (f:7b3f) +DidntAffectText: TX_FAR _DidntAffectText db "@" -IsUnaffectedText: ; 3fb44 (f:7b44) +IsUnaffectedText: TX_FAR _IsUnaffectedText db "@" -PrintMayNotAttackText: ; 3fb49 (f:7b49) +PrintMayNotAttackText: ld hl, ParalyzedMayNotAttackText jp PrintText -ParalyzedMayNotAttackText: ; 3fb4f (f:7b4f) +ParalyzedMayNotAttackText: TX_FAR _ParalyzedMayNotAttackText db "@" -CheckTargetSubstitute: ; 3fb54 (f:7b54) +CheckTargetSubstitute: push hl ld hl, wEnemyBattleStatus2 ld a, [H_WHOSETURN] @@ -8608,7 +8608,7 @@ CheckTargetSubstitute: ; 3fb54 (f:7b54) pop hl ret -PlayCurrentMoveAnimation2: ; 3fb64 (f:7b64) +PlayCurrentMoveAnimation2: ; animation at MOVENUM will be played unless MOVENUM is 0 ; plays wAnimationType 3 or 6 ld a, [H_WHOSETURN] @@ -8620,7 +8620,7 @@ PlayCurrentMoveAnimation2: ; 3fb64 (f:7b64) and a ret z -PlayBattleAnimation2: ; 3fb71 (f:7b71) +PlayBattleAnimation2: ; play animation ID at a and animation type 6 or 3 ld [wAnimationID], a ld a, [H_WHOSETURN] @@ -8632,7 +8632,7 @@ PlayBattleAnimation2: ; 3fb71 (f:7b71) ld [wAnimationType], a jp PlayBattleAnimationGotID -PlayCurrentMoveAnimation: ; 3fb83 (f:7b83) +PlayCurrentMoveAnimation: ; animation at MOVENUM will be played unless MOVENUM is 0 ; resets wAnimationType xor a @@ -8646,11 +8646,11 @@ PlayCurrentMoveAnimation: ; 3fb83 (f:7b83) and a ret z -PlayBattleAnimation: ; 3fb94 (f:7b94) +PlayBattleAnimation: ; play animation ID at a and predefined animation type ld [wAnimationID], a -PlayBattleAnimationGotID: ; 3fb97 (f:7b97) +PlayBattleAnimationGotID: ; play animation at wAnimationID push hl push de @@ -8660,4 +8660,4 @@ PlayBattleAnimationGotID: ; 3fb97 (f:7b97) pop bc pop de pop hl - ret
\ No newline at end of file + ret diff --git a/engine/battle/decrement_pp.asm b/engine/battle/decrement_pp.asm index da1910ee..e23a85ba 100644 --- a/engine/battle/decrement_pp.asm +++ b/engine/battle/decrement_pp.asm @@ -1,4 +1,4 @@ -DecrementPP: ; f42db (3d:42db) +DecrementPP: ; after using a move, decrement pp in battle and (if not transformed?) in party ld a, [de] cp a, STRUGGLE @@ -33,7 +33,7 @@ DecrementPP: ; f42db (3d:42db) ld a, [wPlayerMonNumber] ; which mon in party is active ld bc, wPartyMon2 - wPartyMon1 call AddNTimes ; calculate address of the mon to modify -.DecrementPP ; f4301 (3d:4301) +.DecrementPP: ld a, [wPlayerMoveListIndex] ; which move (0, 1, 2, 3) did we use? ld c, a ld b, 0 diff --git a/engine/battle/display_effectiveness.asm b/engine/battle/display_effectiveness.asm index 1ef9873c..85f2bc3e 100644 --- a/engine/battle/display_effectiveness.asm +++ b/engine/battle/display_effectiveness.asm @@ -1,4 +1,4 @@ -DisplayEffectiveness: ; 2fd25 (b:7d25) +DisplayEffectiveness: ld a, [wDamageMultipliers] and a, $7F cp a, $0A @@ -9,10 +9,10 @@ DisplayEffectiveness: ; 2fd25 (b:7d25) .done jp PrintText -SuperEffectiveText: ; 2fd38 (b:7d38) +SuperEffectiveText: TX_FAR _SuperEffectiveText db "@" -NotVeryEffectiveText: ; 2fd3d (b:7d3d) +NotVeryEffectiveText: TX_FAR _NotVeryEffectiveText db "@" diff --git a/engine/battle/draw_hud_pokeball_gfx.asm b/engine/battle/draw_hud_pokeball_gfx.asm index f9db556d..8f9dce46 100644 --- a/engine/battle/draw_hud_pokeball_gfx.asm +++ b/engine/battle/draw_hud_pokeball_gfx.asm @@ -1,4 +1,4 @@ -DrawAllPokeballs: ; 3a8df (e:68df) +DrawAllPokeballs: call LoadPartyPokeballGfx call SetupOwnPartyPokeballs ld a, [wIsInBattle] @@ -6,17 +6,17 @@ DrawAllPokeballs: ; 3a8df (e:68df) ret z ; return if wild pokémon jp SetupEnemyPartyPokeballs -DrawEnemyPokeballs: ; 3a8ed (e:68ed) +DrawEnemyPokeballs: call LoadPartyPokeballGfx jp SetupEnemyPartyPokeballs -LoadPartyPokeballGfx: ; 3a8f3 (e:68f3) +LoadPartyPokeballGfx: ld de, PokeballTileGraphics ld hl, vSprites + $310 lb bc, BANK(PokeballTileGraphics), (PokeballTileGraphicsEnd - PokeballTileGraphics) / $10 jp CopyVideoData -SetupOwnPartyPokeballs: ; 3a8ff (e:68ff) +SetupOwnPartyPokeballs: call PlacePlayerHUDTiles ld hl, wPartyMon1 ld de, wPartyCount @@ -32,7 +32,7 @@ SetupOwnPartyPokeballs: ; 3a8ff (e:68ff) ld hl, wOAMBuffer jp WritePokeballOAMData -SetupEnemyPartyPokeballs: ; 3a921 (e:6921) +SetupEnemyPartyPokeballs: call PlaceEnemyHUDTiles ld hl, wEnemyMons ld de, wEnemyPartyCount @@ -48,7 +48,7 @@ SetupEnemyPartyPokeballs: ; 3a921 (e:6921) ld hl, wOAMBuffer + PARTY_LENGTH * 4 jp WritePokeballOAMData -SetupPokeballs: ; 3a945 (e:6945) +SetupPokeballs: ld a, [de] push af ld de, wBuffer @@ -70,7 +70,7 @@ SetupPokeballs: ; 3a945 (e:6945) jr nz, .monloop ret -PickPokeball: ; 3a961 (e:6961) +PickPokeball: inc hl ld a, [hli] and a @@ -98,7 +98,7 @@ PickPokeball: ; 3a961 (e:6961) add hl, bc ; next mon struct ret -WritePokeballOAMData: ; 3a980 (e:6980) +WritePokeballOAMData: ld de, wBuffer ld c, PARTY_LENGTH .loop @@ -120,7 +120,7 @@ WritePokeballOAMData: ; 3a980 (e:6980) jr nz, .loop ret -PlacePlayerHUDTiles: ; 3a9a3 (e:69a3) +PlacePlayerHUDTiles: ld hl, PlayerBattleHUDGraphicsTiles ld de, wHUDGraphicsTiles ld bc, $3 @@ -129,13 +129,13 @@ PlacePlayerHUDTiles: ; 3a9a3 (e:69a3) ld de, -1 jr PlaceHUDTiles -PlayerBattleHUDGraphicsTiles: ; 3a9b7 (e:69b7) +PlayerBattleHUDGraphicsTiles: ; The tile numbers for specific parts of the battle display for the player's pokemon db $73 ; unused ($73 is hardcoded into the routine that uses these bytes) db $77 ; lower-right corner tile of the HUD db $6F ; lower-left triangle tile of the HUD -PlaceEnemyHUDTiles: ; 3a9ba (e:69ba) +PlaceEnemyHUDTiles: ld hl, EnemyBattleHUDGraphicsTiles ld de, wHUDGraphicsTiles ld bc, $3 @@ -144,13 +144,13 @@ PlaceEnemyHUDTiles: ; 3a9ba (e:69ba) ld de, $1 jr PlaceHUDTiles -EnemyBattleHUDGraphicsTiles: ; 3a9ce (e:69ce) +EnemyBattleHUDGraphicsTiles: ; The tile numbers for specific parts of the battle display for the enemy db $73 ; unused ($73 is hardcoded in the routine that uses these bytes) db $74 ; lower-left corner tile of the HUD db $78 ; lower-right triangle tile of the HUD -PlaceHUDTiles: ; 3a9d1 (e:69d1) +PlaceHUDTiles: ld [hl], $73 ld bc, SCREEN_WIDTH add hl, bc @@ -167,7 +167,7 @@ PlaceHUDTiles: ; 3a9d1 (e:69d1) ld [hl], a ret -SetupPlayerAndEnemyPokeballs: ; 3a9e9 (e:69e9) +SetupPlayerAndEnemyPokeballs: call LoadPartyPokeballGfx ld hl, wPartyMons ld de, wPartyCount @@ -195,6 +195,6 @@ SetupPlayerAndEnemyPokeballs: ; 3a9e9 (e:69e9) jp WritePokeballOAMData ; four tiles: pokeball, black pokeball (status ailment), crossed out pokeball (faited) and pokeball slot (no mon) -PokeballTileGraphics:: ; 3aa28 (e:6a28) +PokeballTileGraphics:: INCBIN "gfx/pokeball.2bpp" PokeballTileGraphicsEnd: diff --git a/engine/battle/end_of_battle.asm b/engine/battle/end_of_battle.asm index f4c99e3d..47c9fa5d 100755 --- a/engine/battle/end_of_battle.asm +++ b/engine/battle/end_of_battle.asm @@ -1,4 +1,4 @@ -EndOfBattle: ; 13765 (4:7765) +EndOfBattle: ld a, [wLinkState] cp LINK_STATE_BATTLING jr nz, .notLinkBattle @@ -78,15 +78,15 @@ EndOfBattle: ; 13765 (4:7765) ld [wDestinationWarpID], a ret -YouWinText: ; 1381d (4:781d) +YouWinText: db "YOU WIN@" -YouLoseText: ; 13825 (4:7825) +YouLoseText: db "YOU LOSE@" -DrawText: ; 1382e (4:782e) +DrawText: db " DRAW@" -PickUpPayDayMoneyText: ; 13835 (4:7835) +PickUpPayDayMoneyText: TX_FAR _PickUpPayDayMoneyText db "@" diff --git a/engine/battle/experience.asm b/engine/battle/experience.asm index f43a7354..9946c6c6 100644 --- a/engine/battle/experience.asm +++ b/engine/battle/experience.asm @@ -1,4 +1,4 @@ -GainExperience: ; 5524f (15:525f) +GainExperience: ld a, [wLinkState] cp LINK_STATE_BATTLING ret z ; return if link battle @@ -297,7 +297,7 @@ GainExperience: ; 5524f (15:525f) predef_jump FlagActionPredef ; set the fought current enemy flag for the mon that is currently out ; divide enemy base stats, catch rate, and base exp by the number of mons gaining exp -DivideExpDataByNumMonsGainingExp: ; 5547b (15:547b) +DivideExpDataByNumMonsGainingExp: ld a, [wPartyGainExpFlags] ld b, a xor a @@ -331,7 +331,7 @@ DivideExpDataByNumMonsGainingExp: ; 5547b (15:547b) ret ; multiplies exp by 1.5 -BoostExp: ; 554ae (15:54ae) +BoostExp: ld a, [H_QUOTIENT + 2] ld b, a ld a, [H_QUOTIENT + 3] @@ -345,11 +345,11 @@ BoostExp: ; 554ae (15:54ae) ld [H_QUOTIENT + 2], a ret -Bankswitch15ToF: ; 554c1 (15:54c1) +Bankswitch15ToF: ld b, BANK(BattleCore) jp Bankswitch -GainedText: ; 554c6 (15:54c6) +GainedText: TX_FAR _GainedText TX_ASM ld a, [wBoostExpByExpAll] @@ -363,20 +363,20 @@ GainedText: ; 554c6 (15:54c6) ld hl, BoostedText ret -WithExpAllText: ; 554df (15:54df) +WithExpAllText: TX_FAR _WithExpAllText TX_ASM ld hl, ExpPointsText ret -BoostedText: ; 554e8 (15:54e8) +BoostedText: TX_FAR _BoostedText -ExpPointsText: ; 554ec (15:54ec) +ExpPointsText: TX_FAR _ExpPointsText db "@" -GrewLevelText: ; 554f1 (15:54f1) +GrewLevelText: TX_FAR _GrewLevelText db $0b db "@" diff --git a/engine/battle/get_trainer_name.asm b/engine/battle/get_trainer_name.asm index cacf7ee8..36ca019e 100644 --- a/engine/battle/get_trainer_name.asm +++ b/engine/battle/get_trainer_name.asm @@ -1,4 +1,4 @@ -GetTrainerName_: ; f67a5 (3d:67a5) +GetTrainerName_: ld hl, wGrassRate ld a, [wLinkState] and a @@ -19,7 +19,6 @@ GetTrainerName_: ; f67a5 (3d:67a5) call GetName ld hl, wcd6d .foundName -.rival ld de, wTrainerName ld bc, $d jp CopyData diff --git a/engine/battle/ghost_marowak_anim.asm b/engine/battle/ghost_marowak_anim.asm index d61e5fec..5bb3e308 100644 --- a/engine/battle/ghost_marowak_anim.asm +++ b/engine/battle/ghost_marowak_anim.asm @@ -1,4 +1,4 @@ -MarowakAnim: ; 7092b (1c:492b) +MarowakAnim: ; animate the ghost being unveiled as a Marowak ld a, $e4 ld [rOBP1], a @@ -52,7 +52,7 @@ MarowakAnim: ; 7092b (1c:492b) jp ClearSprites ; copies a mon pic's from background VRAM to sprite VRAM and sets up OAM -CopyMonPicFromBGToSpriteVRAM: ; 70994 (1c:4994) +CopyMonPicFromBGToSpriteVRAM: ld de, vFrontPic ld hl, vSprites ld bc, 7 * 7 diff --git a/engine/battle/init_battle_variables.asm b/engine/battle/init_battle_variables.asm index 74ea3814..bdd5d8f4 100644 --- a/engine/battle/init_battle_variables.asm +++ b/engine/battle/init_battle_variables.asm @@ -1,4 +1,4 @@ -InitBattleVariables: ; f6236 (3d:6236) +InitBattleVariables: ld a, [hTilesetType] ld [wSavedTilesetType], a xor a diff --git a/engine/battle/link_battle_versus_text.asm b/engine/battle/link_battle_versus_text.asm index 9849cc9a..63142ba6 100644 --- a/engine/battle/link_battle_versus_text.asm +++ b/engine/battle/link_battle_versus_text.asm @@ -1,8 +1,8 @@ ; display "[player] VS [enemy]" text box with pokeballs representing their parties next to the names -DisplayLinkBattleVersusTextBox: ; f41cf (3d:41cf) +DisplayLinkBattleVersusTextBox: call LoadTextBoxTilePatterns coord hl, 3, 4 - ld bc, $70c + lb bc, 7, 12 call TextBoxBorder coord hl, 4, 5 ld de, wPlayerName diff --git a/engine/battle/moveEffects/conversion_effect.asm b/engine/battle/moveEffects/conversion_effect.asm index 5965f2a8..9c347876 100644 --- a/engine/battle/moveEffects/conversion_effect.asm +++ b/engine/battle/moveEffects/conversion_effect.asm @@ -1,4 +1,4 @@ -ConversionEffect_: ; 1396d (4:796d) +ConversionEffect_: ld hl, wEnemyMonType1 ld de, wBattleMonType1 ld a, [H_WHOSETURN] @@ -24,12 +24,12 @@ ConversionEffect_: ; 1396d (4:796d) ld hl, ConvertedTypeText jp PrintText -ConvertedTypeText: ; 13997 (4:7997) +ConvertedTypeText: TX_FAR _ConvertedTypeText db "@" -PrintButItFailedText: ; 1399c (4:799c) +PrintButItFailedText: ld hl, PrintButItFailedText_ -CallBankF: ; 1399f (4:799f) +CallBankF: ld b, BANK(PrintButItFailedText_) jp Bankswitch diff --git a/engine/battle/moveEffects/drain_hp_effect.asm b/engine/battle/moveEffects/drain_hp_effect.asm index 2af286a8..e5f4681a 100644 --- a/engine/battle/moveEffects/drain_hp_effect.asm +++ b/engine/battle/moveEffects/drain_hp_effect.asm @@ -1,4 +1,4 @@ -DrainHPEffect_: ; 76e7 (1:76e7) +DrainHPEffect_: ld hl, wDamage ld a, [hl] srl a ; divide damage by 2 @@ -95,10 +95,10 @@ DrainHPEffect_: ; 76e7 (1:76e7) .printText jp PrintText -SuckedHealthText: ; 7784 (1:7784) +SuckedHealthText: TX_FAR _SuckedHealthText db "@" -DreamWasEatenText: ; 7789 (1:7789) +DreamWasEatenText: TX_FAR _DreamWasEatenText db "@" diff --git a/engine/battle/moveEffects/focus_energy_effect.asm b/engine/battle/moveEffects/focus_energy_effect.asm index e7f30794..9ba0ade0 100644 --- a/engine/battle/moveEffects/focus_energy_effect.asm +++ b/engine/battle/moveEffects/focus_energy_effect.asm @@ -1,4 +1,4 @@ -FocusEnergyEffect_: ; f628b (3d:628b) +FocusEnergyEffect_: ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a @@ -16,7 +16,7 @@ FocusEnergyEffect_: ; f628b (3d:628b) call DelayFrames jpab PrintButItFailedText_ -GettingPumpedText: ; f62b5 (3d:62b5) +GettingPumpedText: db $0a TX_FAR _GettingPumpedText db "@" diff --git a/engine/battle/moveEffects/haze_effect.asm b/engine/battle/moveEffects/haze_effect.asm index eec68182..bd20f231 100644 --- a/engine/battle/moveEffects/haze_effect.asm +++ b/engine/battle/moveEffects/haze_effect.asm @@ -1,4 +1,4 @@ -HazeEffect_: ; 139a4 (4:79a4) +HazeEffect_: ld a, $7 ; store 7 on every stat mod ld hl, wPlayerMonAttackMod @@ -45,7 +45,7 @@ HazeEffect_: ; 139a4 (4:79a4) ld hl, StatusChangesEliminatedText jp PrintText -CureVolatileStatuses: ; 13a01 (4:7a01) +CureVolatileStatuses: ; only cures statuses of the Pokemon not using Haze res Confused, [hl] inc hl ; BATTSTATUS2 @@ -58,7 +58,7 @@ CureVolatileStatuses: ; 13a01 (4:7a01) ld [hl], a ret -ResetStatMods: ; 13a0d (4:7a0d) +ResetStatMods: ld b, $8 .loop ld [hli], a @@ -66,7 +66,7 @@ ResetStatMods: ; 13a0d (4:7a0d) jr nz, .loop ret -ResetStats: ; 13a14 (4:7a14) +ResetStats: ld b, $8 .loop ld a, [hli] @@ -76,6 +76,6 @@ ResetStats: ; 13a14 (4:7a14) jr nz, .loop ret -StatusChangesEliminatedText: ; 13a1d (4:7a1d) +StatusChangesEliminatedText: TX_FAR _StatusChangesEliminatedText db "@" diff --git a/engine/battle/moveEffects/heal_effect.asm b/engine/battle/moveEffects/heal_effect.asm index 418f7df7..377c14c4 100644 --- a/engine/battle/moveEffects/heal_effect.asm +++ b/engine/battle/moveEffects/heal_effect.asm @@ -1,4 +1,4 @@ -HealEffect_: ; f62ba (3d:62ba) +HealEffect_: ld a, [H_WHOSETURN] and a ld de, wBattleMonHP @@ -107,14 +107,14 @@ HealEffect_: ; f62ba (3d:62ba) ld hl, PrintButItFailedText_ jp Bankswitch3DtoF -StartedSleepingEffect: ; f6370 (3d:6370) +StartedSleepingEffect: TX_FAR _StartedSleepingEffect db "@" -FellAsleepBecameHealthyText: ; f6375 (3d:6375) +FellAsleepBecameHealthyText: TX_FAR _FellAsleepBecameHealthyText db "@" -RegainedHealthText: ; f637a (3d:637a) +RegainedHealthText: TX_FAR _RegainedHealthText db "@" diff --git a/engine/battle/moveEffects/leech_seed_effect.asm b/engine/battle/moveEffects/leech_seed_effect.asm index ef649ff6..0f3a2666 100644 --- a/engine/battle/moveEffects/leech_seed_effect.asm +++ b/engine/battle/moveEffects/leech_seed_effect.asm @@ -1,4 +1,4 @@ -LeechSeedEffect_: ; 2bdba (a:7dba) +LeechSeedEffect_: callab MoveHitTest ld a, [wMoveMissed] and a @@ -31,10 +31,10 @@ LeechSeedEffect_: ; 2bdba (a:7dba) ld hl, EvadedAttackText jp PrintText -WasSeededText: ; 2be03 (a:7e03) +WasSeededText: TX_FAR _WasSeededText db "@" -EvadedAttackText: ; 2be08 (a:7e08) +EvadedAttackText: TX_FAR _EvadedAttackText db "@" diff --git a/engine/battle/moveEffects/mist_effect.asm b/engine/battle/moveEffects/mist_effect.asm index 022606bb..b92777de 100644 --- a/engine/battle/moveEffects/mist_effect.asm +++ b/engine/battle/moveEffects/mist_effect.asm @@ -1,4 +1,4 @@ -MistEffect_: ; f64ac (3d:64ac) +MistEffect_: ld hl, wPlayerBattleStatus2 ld a, [H_WHOSETURN] and a @@ -14,6 +14,6 @@ MistEffect_: ; f64ac (3d:64ac) .mistAlreadyInUse jpab PrintButItFailedText_ -ShroudedInMistText: ; f64d3 (3d:64d3) +ShroudedInMistText: TX_FAR _ShroudedInMistText db "@" diff --git a/engine/battle/moveEffects/one_hit_ko_effect.asm b/engine/battle/moveEffects/one_hit_ko_effect.asm index a60d573a..827e2197 100644 --- a/engine/battle/moveEffects/one_hit_ko_effect.asm +++ b/engine/battle/moveEffects/one_hit_ko_effect.asm @@ -1,4 +1,4 @@ -OneHitKOEffect_: ; f64db (3d:64db) +OneHitKOEffect_: ld hl, wDamage xor a ld [hli], a diff --git a/engine/battle/moveEffects/paralyze_effect.asm b/engine/battle/moveEffects/paralyze_effect.asm index 5cec6b02..95979ae6 100644 --- a/engine/battle/moveEffects/paralyze_effect.asm +++ b/engine/battle/moveEffects/paralyze_effect.asm @@ -1,4 +1,4 @@ -ParalyzeEffect_: ; f6562 (3d:6562) +ParalyzeEffect_: ld hl, wEnemyMonStatus ld de, wPlayerMoveType ld a, [H_WHOSETURN] diff --git a/engine/battle/moveEffects/pay_day_effect.asm b/engine/battle/moveEffects/pay_day_effect.asm index 0236e3e4..e5daf014 100644 --- a/engine/battle/moveEffects/pay_day_effect.asm +++ b/engine/battle/moveEffects/pay_day_effect.asm @@ -1,4 +1,4 @@ -PayDayEffect_: ; f6511 (3d:6511) +PayDayEffect_: xor a ld hl, wcd6d ld [hli], a @@ -40,6 +40,6 @@ PayDayEffect_: ; f6511 (3d:6511) ld hl, CoinsScatteredText jp PrintText -CoinsScatteredText: ; f655d (3d:655d) +CoinsScatteredText: TX_FAR _CoinsScatteredText db "@" diff --git a/engine/battle/moveEffects/recoil_effect.asm b/engine/battle/moveEffects/recoil_effect.asm index d65696e2..7fc90c44 100644 --- a/engine/battle/moveEffects/recoil_effect.asm +++ b/engine/battle/moveEffects/recoil_effect.asm @@ -1,4 +1,4 @@ -RecoilEffect_: ; 138f6 (4:78f6) +RecoilEffect_: ld a, [H_WHOSETURN] and a ld a, [wPlayerMoveNum] @@ -65,6 +65,6 @@ RecoilEffect_: ; 138f6 (4:78f6) predef UpdateHPBar2 ld hl, HitWithRecoilText jp PrintText -HitWithRecoilText: ; 13968 (4:7968) +HitWithRecoilText: TX_FAR _HitWithRecoilText db "@" diff --git a/engine/battle/moveEffects/reflect_light_screen_effect.asm b/engine/battle/moveEffects/reflect_light_screen_effect.asm index 1c2db0a0..f2165956 100644 --- a/engine/battle/moveEffects/reflect_light_screen_effect.asm +++ b/engine/battle/moveEffects/reflect_light_screen_effect.asm @@ -1,4 +1,4 @@ -ReflectLightScreenEffect_: ; f645d (3d:645d) +ReflectLightScreenEffect_: ld hl, wPlayerBattleStatus3 ld de, wPlayerMoveEffect ld a, [H_WHOSETURN] @@ -32,14 +32,14 @@ ReflectLightScreenEffect_: ; f645d (3d:645d) ld hl, PrintButItFailedText_ jp Bankswitch3DtoF -LightScreenProtectedText: ; f649d (3d:649d) +LightScreenProtectedText: TX_FAR _LightScreenProtectedText db "@" -ReflectGainedArmorText: ; f64a2 (3d:64a2) +ReflectGainedArmorText: TX_FAR _ReflectGainedArmorText db "@" -Bankswitch3DtoF: ; f64a7 (3d:64a7) +Bankswitch3DtoF: ld b, BANK(BattleCore) jp Bankswitch diff --git a/engine/battle/moveEffects/substitute_effect.asm b/engine/battle/moveEffects/substitute_effect.asm index a4cd0264..03314ebf 100644 --- a/engine/battle/moveEffects/substitute_effect.asm +++ b/engine/battle/moveEffects/substitute_effect.asm @@ -1,4 +1,4 @@ -SubstituteEffect_: ; 17c31 (5:7c31) +SubstituteEffect_: ld c, 50 call DelayFrames ld hl, wBattleMonMaxHP @@ -64,14 +64,14 @@ SubstituteEffect_: ; 17c31 (5:7c31) .printText jp PrintText -SubstituteText: ; 17ca1 (5:7ca1) +SubstituteText: TX_FAR _SubstituteText db "@" -HasSubstituteText: ; 17ca6 (5:7ca6) +HasSubstituteText: TX_FAR _HasSubstituteText db "@" -TooWeakSubstituteText: ; 17cab (5:7cab) +TooWeakSubstituteText: TX_FAR _TooWeakSubstituteText db "@" diff --git a/engine/battle/moveEffects/transform_effect.asm b/engine/battle/moveEffects/transform_effect.asm index d77f43a3..2906de11 100644 --- a/engine/battle/moveEffects/transform_effect.asm +++ b/engine/battle/moveEffects/transform_effect.asm @@ -1,4 +1,4 @@ -TransformEffect_: ; f637f (3d:637f) +TransformEffect_: ld hl, wBattleMonSpecies ld de, wEnemyMonSpecies ld bc, wEnemyBattleStatus3 @@ -136,6 +136,6 @@ TransformEffect_: ; f637f (3d:637f) ld hl, PrintButItFailedText_ jp Bankswitch3DtoF -TransformedText: ; f6458 (3d:6458) +TransformedText: TX_FAR _TransformedText db "@" diff --git a/engine/battle/print_type.asm b/engine/battle/print_type.asm index 7b581905..f717f871 100644 --- a/engine/battle/print_type.asm +++ b/engine/battle/print_type.asm @@ -1,6 +1,6 @@ ; [wd0b5] = pokemon ID ; hl = dest addr -PrintMonType: ; 27d20 (9:7d20) +PrintMonType: call GetPredefRegisters push hl call GetMonHeader @@ -19,25 +19,25 @@ PrintMonType: ; 27d20 (9:7d20) ; a = type ; hl = dest addr -PrintType: ; 27d3e (9:7d3e) +PrintType: push hl jr PrintType_ ; erase "TYPE2/" if the mon only has 1 type -EraseType2Text: ; 27d41 (9:7d41) +EraseType2Text: ld a, " " ld bc, $13 add hl, bc ld bc, $6 jp FillMemory -PrintMoveType: ; 27d4d (9:7d4d) +PrintMoveType: call GetPredefRegisters push hl ld a, [wPlayerMoveType] ; fall through -PrintType_: ; 27d54 (9:7d54) +PrintType_: add a ld hl, TypeNames ld e, a diff --git a/engine/battle/read_trainer_party.asm b/engine/battle/read_trainer_party.asm index a4843417..3f10a85d 100755 --- a/engine/battle/read_trainer_party.asm +++ b/engine/battle/read_trainer_party.asm @@ -1,4 +1,4 @@ -ReadTrainer: ; 39bb6 (e:5bb6) +ReadTrainer: ; don't change any moves in a link battle ld a,[wLinkState] diff --git a/engine/battle/safari_zone.asm b/engine/battle/safari_zone.asm index 69439199..c6c0fa80 100755 --- a/engine/battle/safari_zone.asm +++ b/engine/battle/safari_zone.asm @@ -1,4 +1,4 @@ -PrintSafariZoneBattleText: ; 4111 (1:4111) +PrintSafariZoneBattleText: ld hl, wSafariBaitFactor ld a, [hl] and a @@ -27,10 +27,10 @@ PrintSafariZoneBattleText: ; 4111 (1:4111) pop hl jp PrintText -SafariZoneEatingText: ; 4141 (1:4141) +SafariZoneEatingText: TX_FAR _SafariZoneEatingText db "@" -SafariZoneAngryText: ; 4146 (1:4146) +SafariZoneAngryText: TX_FAR _SafariZoneAngryText db "@" diff --git a/engine/battle/save_trainer_name.asm b/engine/battle/save_trainer_name.asm index 227dbbcb..7e2c911c 100644 --- a/engine/battle/save_trainer_name.asm +++ b/engine/battle/save_trainer_name.asm @@ -1,4 +1,4 @@ -SaveTrainerName: ; 27dff (9:7dff) +SaveTrainerName: ld hl,TrainerNamePointers ld a,[wTrainerClass] dec a @@ -18,7 +18,7 @@ SaveTrainerName: ; 27dff (9:7dff) jr nz,.CopyCharacter ret -TrainerNamePointers: ; 27e19 (9:7e19) +TrainerNamePointers: ; what is the point of these? dw YoungsterName dw BugCatcherName @@ -68,45 +68,45 @@ TrainerNamePointers: ; 27e19 (9:7e19) dw wTrainerName dw wTrainerName -YoungsterName: ; 27e77 (9:7e77) +YoungsterName: db "YOUNGSTER@" -BugCatcherName: ; 27e81 (9:7e81) +BugCatcherName: db "BUG CATCHER@" -LassName: ; 27e8d (9:7e8d) +LassName: db "LASS@" -JrTrainerMName: ; 27e92 (9:7e92) +JrTrainerMName: db "JR.TRAINER♂@" -JrTrainerFName: ; 27e9e (9:7e9e) +JrTrainerFName: db "JR.TRAINER♀@" -PokemaniacName: ; 27eaa (9:7eaa) +PokemaniacName: db "POKéMANIAC@" -SuperNerdName: ; 27eb5 (9:7eb5) +SuperNerdName: db "SUPER NERD@" -BurglarName: ; 27ec0 (9:7ec0) +BurglarName: db "BURGLAR@" -EngineerName: ; 27ec8 (9:7ec8) +EngineerName: db "ENGINEER@" -JugglerXName: ; 27ed1 (9:7ed1) +JugglerXName: db "JUGGLER@" -SwimmerName: ; 27ed9 (9:7ed9) +SwimmerName: db "SWIMMER@" -BeautyName: ; 27ee1 (9:7ee1) +BeautyName: db "BEAUTY@" -RockerName: ; 27ee8 (9:7ee8) +RockerName: db "ROCKER@" -JugglerName: ; 27eef (9:7eef) +JugglerName: db "JUGGLER@" -BlackbeltName: ; 27ef7 (9:7ef7) +BlackbeltName: db "BLACKBELT@" -ProfOakName: ; 27f01 (9:7f01) +ProfOakName: db "PROF.OAK@" -ChiefName: ; 27f0a (9:7f0a) +ChiefName: db "CHIEF@" -ScientistName: ; 27f10 (9:7f10) +ScientistName: db "SCIENTIST@" -RocketName: ; 27f1a (9:7f1a) +RocketName: db "ROCKET@" -CooltrainerMName: ; 27f21 (9:7f21) +CooltrainerMName: db "COOLTRAINER♂@" -CooltrainerFName: ; 27f2e (9:7f2e) +CooltrainerFName: db "COOLTRAINER♀@" diff --git a/engine/battle/scale_sprites.asm b/engine/battle/scale_sprites.asm index c829fa13..c614d638 100644 --- a/engine/battle/scale_sprites.asm +++ b/engine/battle/scale_sprites.asm @@ -1,14 +1,14 @@ ; scales both uncompressed sprite chunks by two in every dimension (creating 2x2 output pixels per input pixel) ; assumes that input sprite chunks are 4x4 tiles, and the rightmost and bottommost 4 pixels will be ignored ; resulting in a 7*7 tile output sprite chunk -ScaleSpriteByTwo: ; 2fd79 (b:7d79) +ScaleSpriteByTwo: ld a, $0 call SwitchSRAMBankAndLatchClockData call ScaleSpriteByTwo_ call PrepareRTCDataAndDisableSRAM ret -ScaleSpriteByTwo_: ; 2fd85 (b:7d85) +ScaleSpriteByTwo_: ld de, sSpriteBuffer1 + (4*4*8) - 5 ; last byte of input data, last 4 rows already skipped ld hl, sSpriteBuffer0 + SPRITEBUFFERSIZE - 1 ; end of destination buffer call ScaleLastSpriteColumnByTwo ; last tile column is special case @@ -17,7 +17,7 @@ ScaleSpriteByTwo_: ; 2fd85 (b:7d85) ld hl, sSpriteBuffer1 + SPRITEBUFFERSIZE - 1 ; end of destination buffer call ScaleLastSpriteColumnByTwo ; last tile column is special case -ScaleFirstThreeSpriteColumnsByTwo: ; 2fd9a (b:7d9a) +ScaleFirstThreeSpriteColumnsByTwo: ld b, $3 ; 3 tile columns .columnLoop ld c, 4*8 - 4 ; $1c, 4 tiles minus 4 unused rows @@ -46,7 +46,7 @@ ScaleFirstThreeSpriteColumnsByTwo: ; 2fd9a (b:7d9a) jr nz, .columnLoop ret -ScaleLastSpriteColumnByTwo: ; 2fdc2 (b:7dc2) +ScaleLastSpriteColumnByTwo: ld a, 4*8 - 4 ; $1c, 4 tiles minus 4 unused rows ld [H_SPRITEINTERLACECOUNTER], a ld bc, -1 @@ -68,7 +68,7 @@ ScaleLastSpriteColumnByTwo: ; 2fdc2 (b:7dc2) ; scales the given 4 bits in a (4x1 pixels) to 2 output bytes (8x2 pixels) ; hl: destination pointer ; bc: destination pointer offset (added after the two bytes have been written) -ScalePixelsByTwo: ; 2fddc (b:7ddc) +ScalePixelsByTwo: push hl and $f ld hl, DuplicateBitsTable @@ -85,7 +85,7 @@ ScalePixelsByTwo: ; 2fddc (b:7ddc) ret ; repeats each input bit twice -DuplicateBitsTable: ; 2fded (b:7ded) +DuplicateBitsTable: db $00, $03, $0c, $0f db $30, $33, $3c, $3f db $c0, $c3, $cc, $cf diff --git a/engine/battle/scroll_draw_trainer_pic.asm b/engine/battle/scroll_draw_trainer_pic.asm index 8e65c973..98893dcf 100644 --- a/engine/battle/scroll_draw_trainer_pic.asm +++ b/engine/battle/scroll_draw_trainer_pic.asm @@ -1,4 +1,4 @@ -_ScrollTrainerPicAfterBattle: ; f4259 (3d:4259) +_ScrollTrainerPicAfterBattle: ; Load the enemy trainer's pic and scrolls it into ; the screen from the right. xor a @@ -32,7 +32,7 @@ _ScrollTrainerPicAfterBattle: ; f4259 (3d:4259) jr .scrollLoop ; write one 7-tile column of the trainer pic to the tilemap -DrawTrainerPicColumn: ; f428d (3d:428d) +DrawTrainerPicColumn: push hl push de push bc diff --git a/engine/battle/trainer_ai.asm b/engine/battle/trainer_ai.asm index 6b6247c9..2f2c46a6 100644 --- a/engine/battle/trainer_ai.asm +++ b/engine/battle/trainer_ai.asm @@ -1,6 +1,6 @@ ; creates a set of moves that may be used and returns its address in hl ; unused slots are filled with 0, all used slots may be chosen with equal probability -AIEnemyTrainerChooseMoves: ; 3969c (e:569c) +AIEnemyTrainerChooseMoves: ld a, $a ld hl, wBuffer ; init temporary move selection array. Only the moves with the lowest numbers are chosen in the end ld [hli], a ; move 1 @@ -103,14 +103,14 @@ AIEnemyTrainerChooseMoves: ; 3969c (e:569c) ld hl, wEnemyMonMoves ; use original move set ret -AIMoveChoiceModificationFunctionPointers: ; 39726 (e:5726) +AIMoveChoiceModificationFunctionPointers: dw AIMoveChoiceModification1 dw AIMoveChoiceModification2 dw AIMoveChoiceModification3 dw AIMoveChoiceModification4 ; unused, does nothing ; discourages moves that cause no damage but only a status ailment if player's mon already has one -AIMoveChoiceModification1: ; 3972e (e:572e) +AIMoveChoiceModification1: ld a, [wBattleMonStatus] and a ret z ; return if no status ailment on player's mon @@ -145,7 +145,7 @@ AIMoveChoiceModification1: ; 3972e (e:572e) ld [hl], a jr .nextMove -StatusAilmentMoveEffects: ; 39765 (e:5765) +StatusAilmentMoveEffects: db $01 ; unused sleep effect db SLEEP_EFFECT db POISON_EFFECT @@ -155,7 +155,7 @@ StatusAilmentMoveEffects: ; 39765 (e:5765) ; slightly encourage moves with specific effects. ; in particular, stat-modifying moves and other move effects ; that fall in-bewteen -AIMoveChoiceModification2: ; 3976a (e:576a) +AIMoveChoiceModification2: ld a, [wAILayer2Encouragement] cp $1 ret nz @@ -188,7 +188,7 @@ AIMoveChoiceModification2: ; 3976a (e:576a) ; encourages moves that are effective against the player's mon (even if non-damaging). ; discourage damaging moves that are ineffective or not very effective against the player's mon, ; unless there's no damaging move that deals at least neutral damage -AIMoveChoiceModification3: ; 3979a (e:579a) +AIMoveChoiceModification3: ld hl, wBuffer - 1 ; temp move selection array (-1 byte offset) ld de, wEnemyMonMoves ; enemy moves ld b, NUM_MOVES + 1 @@ -255,10 +255,10 @@ AIMoveChoiceModification3: ; 3979a (e:579a) jr z, .nextMove inc [hl] ; sligthly discourage this move jr .nextMove -AIMoveChoiceModification4: ; 39806 (e:5806) +AIMoveChoiceModification4: ret -ReadMove: ; 39807 (e:5807) +ReadMove: push hl push de push bc @@ -275,7 +275,7 @@ ReadMove: ; 39807 (e:5807) ; move choice modification methods that are applied for each trainer class ; 0 is sentinel value -TrainerClassMoveChoiceModifications: ; 3981e (e:581e) +TrainerClassMoveChoiceModifications: db 0 ; YOUNGSTER db 1,0 ; BUG CATCHER db 1,0 ; LASS @@ -336,7 +336,7 @@ INCLUDE "data/trainer_moves.asm" INCLUDE "data/trainer_parties.asm" -TrainerAI: ; 3a5b2 (e:65b2) +TrainerAI: ld a,[wIsInBattle] dec a jr z, .done ; if not a trainer, we're done here @@ -377,7 +377,7 @@ TrainerAI: ; 3a5b2 (e:65b2) and a ret -TrainerAIPointers: ; 3a5f2 (e:65f2) +TrainerAIPointers: ; one entry per trainer class ; first byte, number of times (per Pokémon) it can occur ; next two bytes, pointer to AI subroutine for trainer class @@ -429,27 +429,27 @@ TrainerAIPointers: ; 3a5f2 (e:65f2) dbw 2,AgathaAI ; agatha dbw 1,LanceAI ; lance -JugglerAI: ; 3a67f (e:667f) +JugglerAI: cp $40 ret nc jp AISwitchIfEnoughMons -BlackbeltAI: ; 3a685 (e:6685) +BlackbeltAI: cp $20 ret nc jp AIUseXAttack -GiovanniAI: ; 3a68b (e:668b) +GiovanniAI: cp $40 ret nc jp AIUseGuardSpec -CooltrainerMAI: ; 3a691 (e:6691) +CooltrainerMAI: cp $40 ret nc jp AIUseXAttack -CooltrainerFAI: ; 3a697 (e:6697) +CooltrainerFAI: cp $40 ld a,$A call AICheckIfHPBelowFraction @@ -459,24 +459,24 @@ CooltrainerFAI: ; 3a697 (e:6697) ret nc jp AISwitchIfEnoughMons -BrockAI: ; 3a6aa (e:66aa) +BrockAI: ; if his active monster has a status condition, use a full heal ld a,[wEnemyMonStatus] and a ret z jp AIUseFullHeal -MistyAI: ; 3a6b2 (e:66b2) +MistyAI: cp $40 ret nc jp AIUseXDefend -LtSurgeAI: ; 3a6b8 (e:66b8) +LtSurgeAI: cp $40 ret nc jp AIUseXSpeed -ErikaAI: ; 3a6be (e:66be) +ErikaAI: cp $80 ret nc ld a,$A @@ -484,12 +484,12 @@ ErikaAI: ; 3a6be (e:66be) ret nc jp AIUseSuperPotion -KogaAI: ; 3a6ca (e:66ca) +KogaAI: cp $20 ret nc jp AIUseXAttack -BlaineAI: ; 3a6d0 (e:66d0) +BlaineAI: cp $40 ret nc ld a,$A @@ -497,12 +497,12 @@ BlaineAI: ; 3a6d0 (e:66d0) ret nc jp AIUseSuperPotion -SabrinaAI: ; 3a6dc (e:66dc) +SabrinaAI: cp $40 ret nc jp AIUseXDefend -Sony2AI: ; 3a6e2 (e:66e2) +Sony2AI: cp $20 ret nc ld a,5 @@ -510,7 +510,7 @@ Sony2AI: ; 3a6e2 (e:66e2) ret nc jp AIUsePotion -Sony3AI: ; 3a6ee (e:66ee) +Sony3AI: cp $20 ret nc ld a,5 @@ -518,7 +518,7 @@ Sony3AI: ; 3a6ee (e:66ee) ret nc jp AIUseFullRestore -LoreleiAI: ; 3a6fa (e:66fa) +LoreleiAI: cp $80 ret nc ld a,5 @@ -526,12 +526,12 @@ LoreleiAI: ; 3a6fa (e:66fa) ret nc jp AIUseSuperPotion -BrunoAI: ; 3a706 (e:6706) +BrunoAI: cp $40 ret nc jp AIUseXDefend -AgathaAI: ; 3a70c (e:670c) +AgathaAI: cp $14 jp c,AISwitchIfEnoughMons cp $80 @@ -541,7 +541,7 @@ AgathaAI: ; 3a70c (e:670c) ret nc jp AIUseSuperPotion -LanceAI: ; 3a71d (e:671d) +LanceAI: cp $80 ret nc ld a,5 @@ -549,23 +549,23 @@ LanceAI: ; 3a71d (e:671d) ret nc jp AIUseHyperPotion -GenericAI: ; 3a729 (e:6729) +GenericAI: and a ; clear carry ret ; end of individual trainer AI routines -DecrementAICount: ; 3a72b (e:672b) +DecrementAICount: ld hl,wAICount dec [hl] scf ret -AIPlayRestoringSFX: ; 3a731 (e:6731) +AIPlayRestoringSFX: ld a,SFX_HEAL_AILMENT jp PlaySoundWaitForCurrent -AIUseFullRestore: ; 3a736 (e:6736) +AIUseFullRestore: call AICureStatus ld a,FULL_RESTORE ld [wAIItem],a @@ -589,25 +589,25 @@ AIUseFullRestore: ; 3a736 (e:6736) ld [wEnemyMonHP],a jr AIPrintItemUseAndUpdateHPBar -AIUsePotion: ; 3a760 (e:6760) +AIUsePotion: ; enemy trainer heals his monster with a potion ld a,POTION ld b,20 jr AIRecoverHP -AIUseSuperPotion: ; 3a766 (e:6766) +AIUseSuperPotion: ; enemy trainer heals his monster with a super potion ld a,SUPER_POTION ld b,50 jr AIRecoverHP -AIUseHyperPotion: ; 3a76c (e:676c) +AIUseHyperPotion: ; enemy trainer heals his monster with a hyper potion ld a,HYPER_POTION ld b,200 ; fallthrough -AIRecoverHP: ; 3a770 (e:6770) +AIRecoverHP: ; heal b HP and print "trainer used $(a) on pokemon!" ld [wAIItem],a ld hl,wEnemyMonHP + 1 @@ -648,7 +648,7 @@ AIRecoverHP: ; 3a770 (e:6770) ld [wHPBarNewHP+1],a ; fallthrough -AIPrintItemUseAndUpdateHPBar: ; 3a7ae (e:67ae) +AIPrintItemUseAndUpdateHPBar: call AIPrintItemUse_ coord hl, 2, 2 xor a @@ -656,7 +656,7 @@ AIPrintItemUseAndUpdateHPBar: ; 3a7ae (e:67ae) predef UpdateHPBar2 jp DecrementAICount -AISwitchIfEnoughMons: ; 3a7c0 (e:67c0) +AISwitchIfEnoughMons: ; enemy trainer switches if there are 3 or more unfainted mons in party ld a,[wEnemyPartyCount] ld c,a @@ -686,7 +686,7 @@ AISwitchIfEnoughMons: ; 3a7c0 (e:67c0) and a ret -SwitchEnemyMon: ; 3a7e1 (e:67e1) +SwitchEnemyMon: ; prepare to withdraw the active monster: copy hp, number, and status to roster @@ -717,17 +717,17 @@ SwitchEnemyMon: ; 3a7e1 (e:67e1) scf ret -AIBattleWithdrawText: ; 3a817 (e:6817) +AIBattleWithdrawText: TX_FAR _AIBattleWithdrawText db "@" -AIUseFullHeal: ; 3a81c (e:681c) +AIUseFullHeal: call AIPlayRestoringSFX call AICureStatus ld a,FULL_HEAL jp AIPrintItemUse -AICureStatus: ; 3a827 (e:6827) +AICureStatus: ; cures the status of enemy's active pokemon ld a,[wEnemyMonPartyPos] ld hl,wEnemyMon1Status @@ -740,30 +740,28 @@ AICureStatus: ; 3a827 (e:6827) res 0,[hl] ret -AIUseXAccuracy: ; 3a83e (e:683e) -; unused +AIUseXAccuracy: ; unused call AIPlayRestoringSFX ld hl,wEnemyBattleStatus2 set 0,[hl] ld a,X_ACCURACY jp AIPrintItemUse -AIUseGuardSpec: ; 3a84b (e:684b) +AIUseGuardSpec: call AIPlayRestoringSFX ld hl,wEnemyBattleStatus2 set 1,[hl] ld a,GUARD_SPEC jp AIPrintItemUse -AIUseDireHit: ; 3a858 (e:6858) -; unused +AIUseDireHit: ; unused call AIPlayRestoringSFX ld hl,wEnemyBattleStatus2 set 2,[hl] ld a,DIRE_HIT jp AIPrintItemUse -AICheckIfHPBelowFraction: ; 3a865 (e:6865) +AICheckIfHPBelowFraction: ; return carry if enemy trainer's current HP is below 1 / a of the maximum ld [H_DIVISOR],a ld hl,wEnemyMonMaxHP @@ -789,27 +787,27 @@ AICheckIfHPBelowFraction: ; 3a865 (e:6865) sub c ret -AIUseXAttack: ; 3a888 (e:6888) +AIUseXAttack: ld b,$A ld a,X_ATTACK jr AIIncreaseStat -AIUseXDefend: ; 3a88e (e:688e) +AIUseXDefend: ld b,$B ld a,X_DEFEND jr AIIncreaseStat -AIUseXSpeed: ; 3a894 (e:6894) +AIUseXSpeed: ld b,$C ld a,X_SPEED jr AIIncreaseStat -AIUseXSpecial: ; 3a89a (e:689a) +AIUseXSpecial: ld b,$D ld a,X_SPECIAL ; fallthrough -AIIncreaseStat: ; 3a89e (e:689e) +AIIncreaseStat: ld [wAIItem],a push bc call AIPrintItemUse_ @@ -831,12 +829,12 @@ AIIncreaseStat: ; 3a89e (e:689e) ld [hl],a jp DecrementAICount -AIPrintItemUse: ; 3a8c2 (e:68c2) +AIPrintItemUse: ld [wAIItem],a call AIPrintItemUse_ jp DecrementAICount -AIPrintItemUse_: ; 3a8cb (e:68cb) +AIPrintItemUse_: ; print "x used [wAIItem] on z!" ld a,[wAIItem] ld [wd11e],a @@ -844,6 +842,6 @@ AIPrintItemUse_: ; 3a8cb (e:68cb) ld hl, AIBattleUseItemText jp PrintText -AIBattleUseItemText: ; 3a8da (e:68da) +AIBattleUseItemText: TX_FAR _AIBattleUseItemText db "@" diff --git a/engine/battle/trainer_pic_money_pointers.asm b/engine/battle/trainer_pic_money_pointers.asm index 69599dc0..37678e74 100755 --- a/engine/battle/trainer_pic_money_pointers.asm +++ b/engine/battle/trainer_pic_money_pointers.asm @@ -1,4 +1,4 @@ -TrainerPicAndMoneyPointers: ; 39893 (e:5893) +TrainerPicAndMoneyPointers: ; trainer pic pointers and base money. ; money received after battle = base money × level of highest-level enemy mon dw YoungsterPic diff --git a/engine/battle/unused_stats_functions.asm b/engine/battle/unused_stats_functions.asm index 5b2e5e0e..55f78fd3 100644 --- a/engine/battle/unused_stats_functions.asm +++ b/engine/battle/unused_stats_functions.asm @@ -1,5 +1,5 @@ ; does nothing since no stats are ever selected (barring glitches) -DoubleSelectedStats: ; f4206 (3d:4206) +DoubleSelectedStats: ld a, [H_WHOSETURN] and a ld a, [wPlayerStatsToDouble] @@ -29,7 +29,7 @@ DoubleSelectedStats: ; f4206 (3d:4206) ret ; does nothing since no stats are ever selected (barring glitches) -HalveSelectedStats: ; f422d (3d:422d) +HalveSelectedStats: ld a, [H_WHOSETURN] and a ld a, [wPlayerStatsToHalve] diff --git a/engine/battle/wild_encounters.asm b/engine/battle/wild_encounters.asm index f2f2f457..0285346e 100644 --- a/engine/battle/wild_encounters.asm +++ b/engine/battle/wild_encounters.asm @@ -1,6 +1,6 @@ ; try to initiate a wild pokemon encounter ; returns success in Z -TryDoWildEncounter: ; 1383a (4:783a) +TryDoWildEncounter: ld a, [wNPCMovementScriptPointerTableNum] and a ret nz @@ -100,7 +100,7 @@ TryDoWildEncounter: ; 1383a (4:783a) xor a ret -WildMonEncounterSlotChances: ; 138e2 (4:78e2) +WildMonEncounterSlotChances: ; There are 10 slots for wild pokemon, and this is the table that defines how common each of ; those 10 slots is. A random number is generated and then the first byte of each pair in this ; table is compared against that random number. If the random number is less than or equal diff --git a/engine/bcd.asm b/engine/bcd.asm index a5322702..204c2e40 100644 --- a/engine/bcd.asm +++ b/engine/bcd.asm @@ -1,22 +1,22 @@ ; divide hMoney by hDivideBCDDivisor ; return output in hDivideBCDQuotient (same as hDivideBCDDivisor) ; used only to halve player money upon losing a fight -DivideBCDPredef:: ; f5a4 (3:75a4) +DivideBCDPredef:: DivideBCDPredef2:: DivideBCDPredef3:: ; only used function DivideBCDPredef4:: call GetPredefRegisters -DivideBCD:: ; f5a8 (3:75a8) +DivideBCD:: xor a ld [hDivideBCDBuffer], a ld [hDivideBCDBuffer + 1], a ld [hDivideBCDBuffer + 2], a ld d, $1 -.asm_f5b0 +.loop1 ld a, [hDivideBCDDivisor] and $f0 - jr nz, .asm_f5e1 + jr nz, .go inc d ld a, [hDivideBCDDivisor] swap a @@ -40,8 +40,9 @@ DivideBCD:: ; f5a8 (3:75a8) ld a, [hDivideBCDDivisor + 2] and $f0 ld [hDivideBCDDivisor + 2], a - jr .asm_f5b0 -.asm_f5e1 + jr .loop1 + +.go push de push de call DivideBCD_f686 @@ -51,7 +52,7 @@ DivideBCD:: ; f5a8 (3:75a8) and $f0 ld [hDivideBCDBuffer], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -60,7 +61,7 @@ DivideBCD:: ; f5a8 (3:75a8) or b ld [hDivideBCDBuffer], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -70,7 +71,7 @@ DivideBCD:: ; f5a8 (3:75a8) and $f0 ld [hDivideBCDBuffer + 1], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -79,7 +80,7 @@ DivideBCD:: ; f5a8 (3:75a8) or b ld [hDivideBCDBuffer + 1], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -89,7 +90,7 @@ DivideBCD:: ; f5a8 (3:75a8) and $f0 ld [hDivideBCDBuffer + 2], a dec d - jr z, .asm_f642 + jr z, .skip push de call DivideBCD_f65d call DivideBCD_f686 @@ -97,7 +98,7 @@ DivideBCD:: ; f5a8 (3:75a8) ld a, [hDivideBCDBuffer + 2] or b ld [hDivideBCDBuffer + 2], a -.asm_f642 +.skip ld a, [hDivideBCDBuffer] ld [hDivideBCDQuotient], a ld a, [hDivideBCDBuffer + 1] @@ -109,15 +110,15 @@ DivideBCD:: ; f5a8 (3:75a8) sub d and a ret z -.asm_f654 +.loop2 push af call DivideBCD_f65d pop af dec a - jr nz, .asm_f654 + jr nz, .loop2 ret -DivideBCD_f65d: ; f65d (3:765d) +DivideBCD_f65d: ld a, [hDivideBCDDivisor + 2] swap a and $f @@ -142,7 +143,7 @@ DivideBCD_f65d: ; f65d (3:765d) ld [hDivideBCDDivisor], a ret -DivideBCD_f686: ; f686 (3:7686) +DivideBCD_f686: ld bc, $3 .asm_f689 ld de, hMoney @@ -160,10 +161,10 @@ DivideBCD_f686: ; f686 (3:7686) jr .asm_f689 -AddBCDPredef:: ; f6a3 (3:76a3) +AddBCDPredef:: call GetPredefRegisters -AddBCD:: ; f6a6 (3:76a6) +AddBCD:: and a ld b, c .add @@ -187,10 +188,10 @@ AddBCD:: ; f6a6 (3:76a6) ret -SubBCDPredef:: ; f6bc (3:76bc) +SubBCDPredef:: call GetPredefRegisters -SubBCD:: ; f6bf (3:76bf) +SubBCD:: and a ld b, c .sub @@ -212,4 +213,4 @@ SubBCD:: ; f6bf (3:76bf) jr nz, .fill scf .done - ret
\ No newline at end of file + ret diff --git a/engine/bg_map_attributes.asm b/engine/bg_map_attributes.asm index b2c4c3f1..90df9e27 100644 --- a/engine/bg_map_attributes.asm +++ b/engine/bg_map_attributes.asm @@ -1,6 +1,6 @@ INCLUDE "data/bg_map_attributes.asm" -LoadBGMapAttributes:: ; bf450 (2f:7450) +LoadBGMapAttributes:: ld hl, BGMapAttributesPointers ld a, c ; c = which packet push af ; save for later (to determine if we're handling the trainer card or party menu) @@ -105,7 +105,7 @@ LoadBGMapAttributes:: ; bf450 (2f:7450) ei ret -BGMapAttributesPointers: ; bf4de (2f:74de) +BGMapAttributesPointers: dw BGMapAttributes_Unknown1 dw BGMapAttributes_Unknown2 dw BGMapAttributes_GameFreakIntro @@ -120,7 +120,7 @@ BGMapAttributesPointers: ; bf4de (2f:74de) dw BGMapAttributes_WholeScreen dw BGMapAttributes_Unknown13 -HandleBadgeFaceAttributes: ; bf4f8 (2f:74f8) +HandleBadgeFaceAttributes: ; zero out the attributes if the player doesn't have the respective badge ; BOULDERBADGE ld hl, vBGMap1 + $183 @@ -172,7 +172,7 @@ HandleBadgeFaceAttributes: ; bf4f8 (2f:74f8) call z, ZeroOutCurrentBadgeAttributes ret -ZeroOutCurrentBadgeAttributes: ; bf551 (2f:7551) +ZeroOutCurrentBadgeAttributes: push hl xor a ld [hli], a @@ -184,7 +184,7 @@ ZeroOutCurrentBadgeAttributes: ; bf551 (2f:7551) pop hl ret -HandlePartyHPBarAttributes: ; bf55d (2f:755d) +HandlePartyHPBarAttributes: ; hp bars require 3 (green, orange, red) colours, when there are only 2 "free" colours per palette ; therefore, we must transfer individual bg attributes where the locations of the hp bars are in vram ld hl, vBGMap1 + $25 ; location of start of the HP bar in vram @@ -216,4 +216,4 @@ HandlePartyHPBarAttributes: ; bf55d (2f:755d) pop bc dec c jr nz, .loop - ret
\ No newline at end of file + ret diff --git a/engine/cable_club.asm b/engine/cable_club.asm index 3c75b340..88f7b2f7 100755 --- a/engine/cable_club.asm +++ b/engine/cable_club.asm @@ -1,7 +1,7 @@ ; performs the appropriate action when the player uses the gameboy on the table in the Colosseum or Trade Center ; In the Colosseum, it starts a battle. In the Trade Center, it displays the trade selection screen. ; Before doing either action, it swaps random numbers, trainer names and party data with the other gameboy. -CableClub_DoBattleOrTrade: ; 53a5 (1:53a5) +CableClub_DoBattleOrTrade: ld c, 80 call DelayFrames call ClearScreen @@ -22,7 +22,7 @@ CableClub_DoBattleOrTrade: ; 53a5 (1:53a5) ; fall through ; This is called after completing a trade. -CableClub_DoBattleOrTradeAgain: ; 53d2 (1:53d2) +CableClub_DoBattleOrTradeAgain: ld hl, wSerialPlayerDataBlock ld a, SERIAL_PREAMBLE_BYTE ld b, 6 @@ -253,7 +253,7 @@ CableClub_DoBattleOrTradeAgain: ; 53d2 (1:53d2) ld hl, wEnemyMons + (SERIAL_PREAMBLE_BYTE - 1) dec c jr nz, .unpatchEnemyMonsLoop - ld a, wEnemyMonOT & $ff + ld a, wEnemyMonOT % $100 ld [wUnusedCF8D], a ld a, wEnemyMonOT / $100 ld [wUnusedCF8D + 1], a @@ -268,7 +268,7 @@ CableClub_DoBattleOrTradeAgain: ; 53d2 (1:53d2) cp LINK_STATE_START_BATTLE ld a, LINK_STATE_TRADING ld [wLinkState], a - jr nz, .asm_55a0 + jr nz, .trading ld a, LINK_STATE_BATTLING ld [wLinkState], a ld a, OPP_SONY1 @@ -288,16 +288,16 @@ CableClub_DoBattleOrTradeAgain: ; 53d2 (1:53d2) ld [wLetterPrintingDelayFlags], a predef HealParty jp ReturnToCableClubRoom -.asm_55a0 +.trading ld c, BANK(Music_GameCorner) ld a, MUSIC_GAME_CORNER call PlayMusic jr CallCurrentTradeCenterFunction -PleaseWaitString: ; 55a9 (1:55a9) +PleaseWaitString: db "PLEASE WAIT!@" -CallCurrentTradeCenterFunction: ; 55b6 (1:55b6) +CallCurrentTradeCenterFunction: ld hl, TradeCenterPointerTable ld b, 0 ld a, [wTradeCenterPointerTableIndex] @@ -311,7 +311,7 @@ CallCurrentTradeCenterFunction: ; 55b6 (1:55b6) ld l, a jp [hl] -TradeCenter_SelectMon: ; 55ca (1:55ca) +TradeCenter_SelectMon: call ClearScreen call Delay3 ld b, $9 @@ -446,7 +446,6 @@ TradeCenter_SelectMon: ; 55ca (1:55ca) ld a, [wEnemyPartyCount] dec a cp b - ; continue jr nc, .notPastLastEnemyMon ; when switching to the enemy mon menu, if the menu selection would be past the last enemy mon, select the last enemy mon ld [wCurrentMenuItem], a @@ -584,7 +583,7 @@ TradeCenter_SelectMon: ; 55ca (1:55ca) jr nz, .cancelMenuItem_Loop ; fall through -ReturnToCableClubRoom: ; 581e (1:581e) +ReturnToCableClubRoom: call GBPalWhiteOutWithDelay3 ld hl, wFontLoaded ld a, [hl] @@ -603,7 +602,7 @@ ReturnToCableClubRoom: ; 581e (1:581e) call GBFadeInFromWhite ret -TradeCenter_DrawCancelBox: ; 5843 (1:5843) +TradeCenter_DrawCancelBox: coord hl, 11, 15 ld a, $7e ld bc, 2 * SCREEN_WIDTH + 9 @@ -615,10 +614,10 @@ TradeCenter_DrawCancelBox: ; 5843 (1:5843) ld de, CancelTextString jp PlaceString -CancelTextString: ; 5860 (1:5860) +CancelTextString: db "CANCEL@" -TradeCenter_PlaceSelectedEnemyMonMenuCursor: ; 5867 (1:5867) +TradeCenter_PlaceSelectedEnemyMonMenuCursor: ld a, [wSerialSyncAndExchangeNybbleReceiveData] coord hl, 1, 9 ld bc, SCREEN_WIDTH @@ -626,7 +625,7 @@ TradeCenter_PlaceSelectedEnemyMonMenuCursor: ; 5867 (1:5867) ld [hl], $ec ; cursor ret -TradeCenter_DisplayStats: ; 5876 (1:5876) +TradeCenter_DisplayStats: ld a, [wCurrentMenuItem] ld [wWhichPokemon], a predef StatusScreen @@ -639,7 +638,7 @@ TradeCenter_DisplayStats: ; 5876 (1:5876) call TradeCenter_DrawPartyLists jp TradeCenter_DrawCancelBox -TradeCenter_DrawPartyLists: ; 589a (1:589a) +TradeCenter_DrawPartyLists: coord hl, 0, 0 lb bc, 6, 18 call CableClub_TextBoxBorder @@ -659,7 +658,7 @@ TradeCenter_DrawPartyLists: ; 589a (1:589a) ld de, wEnemyPartyMons ; fall through -TradeCenter_PrintPartyListNames: ; 58cd (1:58cd) +TradeCenter_PrintPartyListNames: ld c, $0 .loop ld a, [de] @@ -684,7 +683,7 @@ TradeCenter_PrintPartyListNames: ; 58cd (1:58cd) inc c jr .loop -TradeCenter_Trade: ; 58ef (1:58ef) +TradeCenter_Trade: ld c, 100 call DelayFrames xor a @@ -851,7 +850,6 @@ TradeCenter_Trade: ; 58ef (1:58ef) .usingExternalClock predef ExternalClockTradeAnim .tradeCompleted -; continue callab TryEvolvingMon call ClearScreen call LoadTrainerInfoTextBoxTiles @@ -880,22 +878,22 @@ TradeCenter_Trade: ; 58ef (1:58ef) ld [wTradeCenterPointerTableIndex], a jp CallCurrentTradeCenterFunction -WillBeTradedText: ; 5ad8 (1:5ad8) +WillBeTradedText: TX_FAR _WillBeTradedText db "@" -TradeCompleted: ; 5add (1:5add) +TradeCompleted: db "Trade completed!@" -TradeCanceled: ; 5aee (1:5aee) +TradeCanceled: db "Too bad! The trade" next "was canceled!@" -TradeCenterPointerTable: ; 5b0f (1:5b0f) +TradeCenterPointerTable: dw TradeCenter_SelectMon dw TradeCenter_Trade -CableClub_Run: ; 5b13 (1:5b13) +CableClub_Run: ld a, [wLinkState] cp LINK_STATE_START_TRADE jr z, .doBattleOrTrade @@ -909,9 +907,9 @@ CableClub_Run: ; 5b13 (1:5b13) call CableClub_DoBattleOrTrade ld hl, Club_GFX ld a, h - ld [wTilesetGFXPtr + 1], a + ld [wTilesetGfxPtr + 1], a ld a, l - ld [wTilesetGFXPtr], a + ld [wTilesetGfxPtr], a ld a, Bank(Club_GFX) ld [wTilesetBank], a ld hl, Club_Coll @@ -932,15 +930,15 @@ CableClub_Run: ; 5b13 (1:5b13) ld [wNewSoundID], a jp PlaySound -EmptyFunc3: ; 5b63 (1:5b63) +EmptyFunc3: ret -Diploma_TextBoxBorder: ; 5b64 (1:5b64) +Diploma_TextBoxBorder: call GetPredefRegisters ; b = height ; c = width -CableClub_TextBoxBorder: ; 5b67 (1:5b67) +CableClub_TextBoxBorder: push hl ld a, $78 ; border upper left corner tile ld [hli], a @@ -971,16 +969,16 @@ CableClub_TextBoxBorder: ; 5b67 (1:5b67) ret ; c = width -CableClub_DrawHorizontalLine: ; 5b94 (1:5b94) +CableClub_DrawHorizontalLine: ld d, c -.drawHorizontalLineLoop +.loop ld [hli], a dec d - jr nz, .drawHorizontalLineLoop + jr nz, .loop ret -LoadTrainerInfoTextBoxTiles: ; 5b9a (1:5b9a) +LoadTrainerInfoTextBoxTiles: ld de, TrainerInfoTextBoxTileGraphics ld hl, vChars2 + $760 lb bc, BANK(TrainerInfoTextBoxTileGraphics), (TrainerInfoTextBoxTileGraphicsEnd - TrainerInfoTextBoxTileGraphics) / $10 - jp CopyVideoData
\ No newline at end of file + jp CopyVideoData diff --git a/engine/clear_save.asm b/engine/clear_save.asm index 37d098e6..f2acbf32 100755 --- a/engine/clear_save.asm +++ b/engine/clear_save.asm @@ -1,4 +1,4 @@ -DoClearSaveDialogue: ; DoClearSaveDialogue: ; 1c21e (7:421e) +DoClearSaveDialogue: call ClearScreen call RunDefaultPaletteCommand call LoadFontTilePatterns @@ -22,6 +22,6 @@ DoClearSaveDialogue: ; DoClearSaveDialogue: ; 1c21e (7:421e) callba ClearSAV jp Init -ClearSaveDataText: ; 1c25f (7:425f) +ClearSaveDataText: TX_FAR _ClearSaveDataText db "@" diff --git a/engine/debug1.asm b/engine/debug1.asm index ada4b513..a39e8cac 100644 --- a/engine/debug1.asm +++ b/engine/debug1.asm @@ -1,5 +1,5 @@ ; not IshiharaTeam -SetDebugTeam: ; 623e (1:623e) +SetDebugTeam: ld de, DebugTeam .loop ld a, [de] @@ -13,12 +13,12 @@ SetDebugTeam: ; 623e (1:623e) call AddPartyMon jr .loop -DebugTeam: ; 6253 (1:6253) +DebugTeam: db SNORLAX,80 db PERSIAN,80 db JIGGLYPUFF,15 db PIKACHU,5 db $FF -EmptyFunc: ; 64ea (1:64ea) - ret
\ No newline at end of file +EmptyFunc: + ret diff --git a/engine/diploma_3a.asm b/engine/diploma_3a.asm index f85cc288..3b633a1b 100755 --- a/engine/diploma_3a.asm +++ b/engine/diploma_3a.asm @@ -1,4 +1,4 @@ -_DisplayDiploma: ; e9a08 (3a:5a08) +_DisplayDiploma: call GBPalWhiteOutWithDelay3 call ClearScreen ld de, SurfingPikachu3Graphics diff --git a/engine/display_pokedex.asm b/engine/display_pokedex.asm index a252f684..96a2dd6c 100644 --- a/engine/display_pokedex.asm +++ b/engine/display_pokedex.asm @@ -1,4 +1,4 @@ -_DisplayPokedex: ; 7abf (1:7abf) +_DisplayPokedex: ld hl, wd730 set 6, [hl] predef ShowPokedexData @@ -16,4 +16,4 @@ _DisplayPokedex: ; 7abf (1:7abf) predef FlagActionPredef ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a - ret
\ No newline at end of file + ret diff --git a/engine/draw_badges.asm b/engine/draw_badges.asm index 3134ae0a..412197b2 100644 --- a/engine/draw_badges.asm +++ b/engine/draw_badges.asm @@ -1,4 +1,4 @@ -DrawBadges: ; e880 (3:6880) +DrawBadges: ; Draw 4x2 gym leader faces, with the faces replaced by ; badges if they are owned. Used in the player status screen. @@ -116,5 +116,5 @@ DrawBadges: ; e880 (3:6880) .FaceBadgeTiles db $20, $28, $30, $38, $40, $48, $50, $58 -GymLeaderFaceAndBadgeTileGraphics: ; e91b (3:691b) - INCBIN "gfx/badges.2bpp"
\ No newline at end of file +GymLeaderFaceAndBadgeTileGraphics: + INCBIN "gfx/badges.2bpp" diff --git a/engine/evolution.asm b/engine/evolution.asm index 780d78e7..9cefff27 100755 --- a/engine/evolution.asm +++ b/engine/evolution.asm @@ -1,4 +1,4 @@ -EvolveMon: ; 5da70 (17:5a70) +EvolveMon: push hl push de push bc @@ -89,16 +89,16 @@ EvolveMon: ; 5da70 (17:5a70) ld a, [wEvoOldSpecies] jr .done -EvolutionSetWholeScreenPalette: ; 7beb4 (1e:7eb4) +EvolutionSetWholeScreenPalette: ld b, SET_PAL_POKEMON_WHOLE_SCREEN jp RunPaletteCommand -Evolution_LoadPic: ; 7beb9 (1e:7eb9) +Evolution_LoadPic: call GetMonHeader coord hl, 7, 2 jp LoadFlippedFrontSpriteByMonIndex -Evolution_BackAndForthAnim: ; 7bec2 (1e:7ec2) +Evolution_BackAndForthAnim: ; show the mon change back and forth between the new and old species b times ld a, $31 ld [wEvoMonTileOffset], a @@ -110,7 +110,7 @@ Evolution_BackAndForthAnim: ; 7bec2 (1e:7ec2) jr nz, Evolution_BackAndForthAnim ret -Evolution_ChangeMonPic: ; 7bed6 (1e:7ed6) +Evolution_ChangeMonPic: push bc xor a ld [H_AUTOBGTRANSFERENABLED], a @@ -135,7 +135,7 @@ Evolution_ChangeMonPic: ; 7bed6 (1e:7ed6) pop bc ret -Evolution_CheckForCancel: ; 7befa (1e:7efa) +Evolution_CheckForCancel: call DelayFrame push bc call JoypadLowSensitivity diff --git a/engine/evos_moves.asm b/engine/evos_moves.asm index 289c76ed..8ec2c4c7 100755 --- a/engine/evos_moves.asm +++ b/engine/evos_moves.asm @@ -1,5 +1,5 @@ ; try to evolve the mon in [wWhichPokemon] -TryEvolvingMon: ; 3adb8 (e:6db8) +TryEvolvingMon: EvolveTradeMon: ld hl, wCanEvolveFlags xor a @@ -11,7 +11,7 @@ EvolveTradeMon: ; this is only called after battle ; it is supposed to do level up evolutions, though there is a bug that allows item evolutions to occur -EvolutionAfterBattle: ; 3adc6 (e:6dc6) +EvolutionAfterBattle: ld a, [hTilesetType] push af xor a @@ -24,8 +24,7 @@ EvolutionAfterBattle: ; 3adc6 (e:6dc6) ld hl, wPartyCount push hl -Evolution_PartyMonLoop: ; 3add8 (e:6dd8) -; loop over party mons +Evolution_PartyMonLoop: ; loop over party mons ld hl, wWhichPokemon inc [hl] pop hl @@ -263,7 +262,7 @@ Evolution_PartyMonLoop: ; 3add8 (e:6dd8) call nz, PlayDefaultMusic ret -RenameEvolvedMon: ; 3afa8 (e:6fa8) +RenameEvolvedMon: ; Renames the mon to its new, evolved form's standard name unless it had a ; nickname, in which case the nickname is kept. ld a, [wd0b5] @@ -293,7 +292,7 @@ RenameEvolvedMon: ; 3afa8 (e:6fa8) pop de jp CopyData -CancelledEvolution: ; 3afdf (e:6fdf) +CancelledEvolution: ld hl, StoppedEvolvingText call PrintText call ClearScreen @@ -301,29 +300,29 @@ CancelledEvolution: ; 3afdf (e:6fdf) call Evolution_ReloadTilesetTilePatterns jp Evolution_PartyMonLoop -EvolvedText: ; 3afef (e:6fef) +EvolvedText: TX_FAR _EvolvedText db "@" -IntoText: ; 3aff4 (e:6ff4) +IntoText: TX_FAR _IntoText db "@" -StoppedEvolvingText: ; 3aff9 (e:6ff9) +StoppedEvolvingText: TX_FAR _StoppedEvolvingText db "@" -IsEvolvingText: ; 3affe (e:6ffes) +IsEvolvingText: TX_FAR _IsEvolvingText db "@" -Evolution_ReloadTilesetTilePatterns: ; 3b003 (e:7003) +Evolution_ReloadTilesetTilePatterns: ld a, [wLinkState] cp LINK_STATE_TRADING ret z jp ReloadTilesetTilePatterns -LearnMoveFromLevelUp: ; 3b00c (e:700c) +LearnMoveFromLevelUp: ld a, [wd11e] ; species ld [wcf91], a call GetMonLearnset @@ -382,7 +381,7 @@ LearnMoveFromLevelUp: ; 3b00c (e:700c) ld [wd11e], a ret -Func_3b079: ; 3b079 (e:7079) +Func_3b079: ld a, [wcf91] push af call Func_3b0a2 @@ -410,7 +409,7 @@ Func_3b079: ; 3b079 (e:7079) scf ret -Func_3b0a2: ; 3b0a2 (e:70a2) +Func_3b0a2: ; XXX what is wcf91 entering this function? ld a, [wd11e] ld [wMoveNum], a @@ -453,7 +452,7 @@ Func_3b0a2: ; 3b0a2 (e:70a2) scf ret -Pointer_3b0ee: ; 3b0ee (e:70ee) +Pointer_3b0ee: db NIDOKING db IVYSAUR db EXEGGUTOR @@ -488,7 +487,7 @@ Pointer_3b0ee: ; 3b0ee (e:70ee) db VICTREEBEL db $ff -Func_3b10f: ; 3b10f (e:710f) +Func_3b10f: ld c, $0 .asm_3b111 ld hl, EvosMovesPointerTable @@ -530,7 +529,7 @@ Func_3b10f: ; 3b10f (e:710f) ; writes the moves a mon has at level [wCurEnemyLVL] to [de] ; move slots are being filled up sequentially and shifted if all slots are full -WriteMonMoves: ; 3113f (e:713f) +WriteMonMoves: call GetPredefRegisters push hl push de @@ -636,7 +635,7 @@ WriteMonMoves: ; 3113f (e:713f) ret ; shifts all move data one up (freeing 4th move slot) -WriteMonMoves_ShiftMoveData: ; 3b1c3 (e:71c3) +WriteMonMoves_ShiftMoveData: ld c, NUM_MOVES - 1 .loop inc de @@ -646,10 +645,10 @@ WriteMonMoves_ShiftMoveData: ; 3b1c3 (e:71c3) jr nz, .loop ret -Evolution_FlagAction: ; 3b1cc (e:71cc) +Evolution_FlagAction: predef_jump FlagActionPredef -GetMonLearnset: ; 3b1d1 (e:71d1) +GetMonLearnset: ld hl, EvosMovesPointerTable ld b, 0 ld a, [wcf91] diff --git a/engine/experience.asm b/engine/experience.asm index 42917bf7..2efc13de 100755 --- a/engine/experience.asm +++ b/engine/experience.asm @@ -1,5 +1,5 @@ ; calculates the level a mon should be based on its current exp -CalcLevelFromExperience: ; 58d99 (16:4d99) +CalcLevelFromExperience: ld a, [wLoadedMonSpecies] ld [wd0b5], a call GetMonHeader @@ -28,7 +28,7 @@ CalcLevelFromExperience: ; 58d99 (16:4d99) ret ; calculates the amount of experience needed for level d -CalcExperience: ; 58dc0 (16:4dc0) +CalcExperience: ld a, [wMonHGrowthRate] add a add a @@ -137,7 +137,7 @@ CalcExperience: ; 58dc0 (16:4dc0) ret ; calculates d*d -CalcDSquared: ; 58e66 (16:4e66) +CalcDSquared: xor a ld [H_MULTIPLICAND], a ld [H_MULTIPLICAND + 1], a @@ -151,7 +151,7 @@ CalcDSquared: ; 58e66 (16:4e66) ; resulting in ; (a*n^3)/b + sign*c*n^2 + d*n - e ; where sign = -1 <=> S=1 -GrowthRateTable: ; 58e73 (16:4e73) +GrowthRateTable: db $11,$00,$00,$00 ; medium fast n^3 db $34,$0A,$00,$1E ; (unused?) 3/4 n^3 + 10 n^2 - 30 db $34,$14,$00,$46 ; (unused?) 3/4 n^3 + 20 n^2 - 70 diff --git a/engine/flag_action_predef.asm b/engine/flag_action_predef.asm index df38bb87..dc516887 100644 --- a/engine/flag_action_predef.asm +++ b/engine/flag_action_predef.asm @@ -1,7 +1,7 @@ -FlagActionPredef: ; f4ec (3:74ec) +FlagActionPredef: call GetPredefRegisters -FlagAction: ; f4ef (3:74ef) +FlagAction: ; Perform action b on bit c ; in the bitfield at hl. ; 0: reset @@ -70,4 +70,4 @@ FlagAction: ; f4ef (3:74ef) pop de pop hl ld c, a - ret
\ No newline at end of file + ret diff --git a/engine/game_corner_slots.asm b/engine/game_corner_slots.asm index 2e9ab4fb..3c5b3a10 100755 --- a/engine/game_corner_slots.asm +++ b/engine/game_corner_slots.asm @@ -1,4 +1,4 @@ -StartSlotMachine: ; 37ed1 (d:7ed1) +StartSlotMachine: ld a, [wHiddenObjectFunctionArgument] cp $fd jr z, .printOutOfOrder @@ -41,14 +41,14 @@ StartSlotMachine: ; 37ed1 (d:7ed1) call PrintPredefTextID ret -GameCornerOutOfOrderText: ; 37f1d (d:7f1d) +GameCornerOutOfOrderText: TX_FAR _GameCornerOutOfOrderText db "@" -GameCornerOutToLunchText: ; 37f22 (d:7f22) +GameCornerOutToLunchText: TX_FAR _GameCornerOutToLunchText db "@" -GameCornerSomeonesKeysText: ; 37f27 (d:7f27) +GameCornerSomeonesKeysText: TX_FAR _GameCornerSomeonesKeysText db "@" diff --git a/engine/game_corner_slots2.asm b/engine/game_corner_slots2.asm index 3f7c3f71..6bbaf72d 100755 --- a/engine/game_corner_slots2.asm +++ b/engine/game_corner_slots2.asm @@ -1,4 +1,4 @@ -AbleToPlaySlotsCheck: ; 2fdfd (b:7dfd) +AbleToPlaySlotsCheck: ld a, [wSpriteStateData1 + 2] and $8 jr z, .done ; not able @@ -22,10 +22,10 @@ AbleToPlaySlotsCheck: ; 2fdfd (b:7dfd) ld [wCanPlaySlots], a ret -GameCornerCoinCaseText: ; 2fe26 (b:7e26) +GameCornerCoinCaseText: TX_FAR _GameCornerCoinCaseText db "@" -GameCornerNoCoinsText: ; 2fe2b (b:7e2b) +GameCornerNoCoinsText: TX_FAR _GameCornerNoCoinsText db "@" diff --git a/engine/gamefreak.asm b/engine/gamefreak.asm index e2db39de..5472a56e 100755 --- a/engine/gamefreak.asm +++ b/engine/gamefreak.asm @@ -1,15 +1,15 @@ -LoadShootingStarGraphics: ; 70000 (1c:4000) +LoadShootingStarGraphics: ld a, $f9 ld [rOBP0], a ld a, $a4 - ld [rOBP1], a ; $ff49 + ld [rOBP1], a call UpdateGBCPal_OBP0 call UpdateGBCPal_OBP1 - ld de, AnimationTileset2 + $30 ; $4757 ; star tile (top left quadrant) + ld de, AnimationTileset2 + $30 ; star tile (top left quadrant) ld hl, vChars1 + $200 lb bc, BANK(AnimationTileset2), $01 call CopyVideoData - ld de, AnimationTileset2 + $130 ; $481e ; star tile (bottom left quadrant) + ld de, AnimationTileset2 + $130 ; star tile (bottom left quadrant) ld hl, vChars1 + $210 lb bc, BANK(AnimationTileset2), $01 call CopyVideoData @@ -26,9 +26,9 @@ LoadShootingStarGraphics: ; 70000 (1c:4000) ld bc, GameFreakShootingStarOAMDataEnd - GameFreakShootingStarOAMData jp CopyData -AnimateShootingStar: ; 7004a (1c:404a) +AnimateShootingStar: call LoadShootingStarGraphics - ld a, $c2 ; (SFX_1f_67 - SFX_Headers_1f) / 3 + ld a, SFX_SHOOTING_STAR call PlaySound ; Move the big star down and left across the screen. @@ -39,7 +39,7 @@ AnimateShootingStar: ; 7004a (1c:404a) push bc .bigStarInnerLoop ld a, [hl] ; Y - add 4 ; y + add 4 ld [hli], a ld a, [hl] ; X add -4 @@ -60,11 +60,11 @@ AnimateShootingStar: ; 7004a (1c:404a) .next cp b jr nz, .bigStarLoop + +; Clear big star OAM. ld hl, wOAMBuffer ld c, 4 ld de, 4 - -; Clear big star OAM. .clearOAMLoop ld [hl], 160 add hl, de @@ -74,7 +74,7 @@ AnimateShootingStar: ; 7004a (1c:404a) ; Make Gamefreak logo flash. ld b, 3 .flashLogoLoop - ld hl, rOBP0 ; $ff48 + ld hl, rOBP0 rrc [hl] rrc [hl] call UpdateGBCPal_OBP0 @@ -83,13 +83,14 @@ AnimateShootingStar: ; 7004a (1c:404a) ret c dec b jr nz, .flashLogoLoop + ; Copy 24 instances of the small stars OAM data. ; Note that their coordinates put them off-screen. ld de, wOAMBuffer ld a, 24 .initSmallStarsOAMLoop push af - ld hl, SmallStarsOAM ; $40ee + ld hl, SmallStarsOAM ld bc, SmallStarsOAMEnd - SmallStarsOAM call CopyData pop af @@ -98,8 +99,8 @@ AnimateShootingStar: ; 7004a (1c:404a) ; Animate the small stars falling from the Gamefreak logo. xor a - ld [wMoveDownSmallStarsOAMCount], a ; wWhichTrade - ld hl, SmallStarsWaveCoordsPointerTable ; 1c:4105 + ld [wMoveDownSmallStarsOAMCount], a + ld hl, SmallStarsWaveCoordsPointerTable ld c, 6 .smallStarsLoop ld a, [hli] @@ -156,11 +157,11 @@ AnimateShootingStar: ; 7004a (1c:404a) and a ret -SmallStarsOAM: ; 70101 (1c:4101) +SmallStarsOAM: db $00,$00,$A2,$90 SmallStarsOAMEnd: -SmallStarsWaveCoordsPointerTable: ; 70105 (1c:4105) +SmallStarsWaveCoordsPointerTable: dw SmallStarsWave1Coords dw SmallStarsWave2Coords dw SmallStarsWave3Coords @@ -171,7 +172,7 @@ SmallStarsWaveCoordsPointerTable: ; 70105 (1c:4105) ; The stars that fall from the Gamefreak logo come in 4 waves of 4 OAM entries. ; These arrays contain the Y and X coordinates of each OAM entry. -SmallStarsWave1Coords: ; 70111 (1c:4111) +SmallStarsWave1Coords: db $68,$30 db $05,$68 db $40,$05 @@ -179,7 +180,7 @@ SmallStarsWave1Coords: ; 70111 (1c:4111) db $04,$68 db $78,$07 -SmallStarsWave2Coords: ; 7011d (1c:411d) +SmallStarsWave2Coords: db $68,$38 db $05,$68 db $48,$06 @@ -187,7 +188,7 @@ SmallStarsWave2Coords: ; 7011d (1c:411d) db $04,$68 db $70,$07 -SmallStarsWave3Coords: ; 70129 (1c:4129) +SmallStarsWave3Coords: db $68,$34 db $05,$68 db $4c,$06 @@ -195,7 +196,7 @@ SmallStarsWave3Coords: ; 70129 (1c:4129) db $06,$68 db $64,$07 -SmallStarsWave4Coords: ; 70135 (1c:4135) +SmallStarsWave4Coords: db $68,$3c db $05,$68 db $5c,$04 @@ -203,10 +204,10 @@ SmallStarsWave4Coords: ; 70135 (1c:4135) db $07,$68 db $74,$07 -SmallStarsEmptyWave: ; 70141 (1c:4141) +SmallStarsEmptyWave: db $FF -MoveDownSmallStars: ; 70142 (1c:4142) +MoveDownSmallStars: ld b, 8 .loop ld hl, wOAMBuffer + $5c @@ -214,15 +215,15 @@ MoveDownSmallStars: ; 70142 (1c:4142) ld de, -4 ld c, a .innerLoop - inc [hl] + inc [hl] ; Y add hl, de dec c jr nz, .innerLoop ; Toggle the palette so that the lower star in the small stars tile blinks in ; and out. - ld a, [rOBP1] ; $ff49 + ld a, [rOBP1] xor %10100000 - ld [rOBP1], a ; $ff49 + ld [rOBP1], a call UpdateGBCPal_OBP1 ld c, 3 call CheckForUserInterruption @@ -231,7 +232,7 @@ MoveDownSmallStars: ; 70142 (1c:4142) jr nz, .loop ret -GameFreakLogoOAMData: ; 70166 (1c:4166) +GameFreakLogoOAMData: db $48,$50,$8D,$00 db $48,$58,$8E,$00 db $50,$50,$8F,$00 @@ -250,13 +251,13 @@ GameFreakLogoOAMData: ; 70166 (1c:4166) db $60,$78,$86,$00 GameFreakLogoOAMDataEnd: -GameFreakShootingStarOAMData: ; 701a6 (1c:41a6) +GameFreakShootingStarOAMData: db $00,$A0,$A0,$14 db $00,$A8,$A0,$34 db $08,$A0,$A1,$14 db $08,$A8,$A1,$34 GameFreakShootingStarOAMDataEnd: -FallingStar: ; 701b6 (1c:41b6) +FallingStar: INCBIN "gfx/falling_star.2bpp" FallingStarEnd: diff --git a/engine/get_bag_item_quantity.asm b/engine/get_bag_item_quantity.asm index 2a462b5d..f10df1a0 100644 --- a/engine/get_bag_item_quantity.asm +++ b/engine/get_bag_item_quantity.asm @@ -1,4 +1,4 @@ -GetQuantityOfItemInBag: ; f735 (3:7735) +GetQuantityOfItemInBag: ; In: b = item ID ; Out: b = how many of that item are in the bag call GetPredefRegisters @@ -15,4 +15,4 @@ GetQuantityOfItemInBag: ; f735 (3:7735) ret .notInBag ld b, 0 - ret
\ No newline at end of file + ret diff --git a/engine/give_pokemon.asm b/engine/give_pokemon.asm index 5b506be2..9cbb4039 100755 --- a/engine/give_pokemon.asm +++ b/engine/give_pokemon.asm @@ -1,4 +1,4 @@ -_GivePokemon: ; f66fa (3d:66fa) +_GivePokemon: ; returns success in carry ; and whether the mon was added to the party in [wAddedToParty] call EnableAutoTextBoxDrawing @@ -53,7 +53,7 @@ _GivePokemon: ; f66fa (3d:66fa) scf ret -SetPokedexOwnedFlag: ; f676c (3d:676c) +SetPokedexOwnedFlag: ld a, [wcf91] push af ld [wd11e], a @@ -70,18 +70,18 @@ SetPokedexOwnedFlag: ; f676c (3d:676c) ld hl, GotMonText jp PrintText -UnknownTerminator_f6794: ; f6794 (3d:6794) +UnknownTerminator_f6794: db "@" -GotMonText: ; f6795 (3d:6795) +GotMonText: TX_FAR _GotMonText db $0b db "@" -SetToBoxText: ; f679b (3d:679b) +SetToBoxText: TX_FAR _SetToBoxText db "@" -BoxIsFullText: ; f67a0 (3d:67a0) +BoxIsFullText: TX_FAR _BoxIsFullText db "@" diff --git a/engine/hall_of_fame.asm b/engine/hall_of_fame.asm index c8e6de3b..833313a6 100755 --- a/engine/hall_of_fame.asm +++ b/engine/hall_of_fame.asm @@ -1,4 +1,4 @@ -AnimateHallOfFame: ; 701c6 (1c:41c6) +AnimateHallOfFame: call HoFFadeOutScreenAndMusic call ClearScreen ld c, 100 @@ -33,8 +33,8 @@ AnimateHallOfFame: ; 701c6 (1c:41c6) .skipInc ld a, $90 ld [hWY], a - ld c, $1f ; BANK(Music_HallOfFame) - ld a, $ca ; MUSIC_HALL_OF_FAME + ld c, BANK(Music_HallOfFame) + ld a, MUSIC_HALL_OF_FAME call PlayMusic ld hl, wPartySpecies ld c, $ff @@ -58,7 +58,7 @@ AnimateHallOfFame: ; 701c6 (1c:41c6) ld c, 80 call DelayFrames coord hl, 2, 13 - lb bc, $3, $e + lb bc, 3, 14 call TextBoxBorder coord hl, 4, 15 ld de, HallOfFameText @@ -90,10 +90,10 @@ AnimateHallOfFame: ; 701c6 (1c:41c6) res 3, [hl] ret -HallOfFameText: ; 70295 (1c:4295) +HallOfFameText: db "HALL OF FAME@" -HoFShowMonOrPlayer: ; 702a2 (1c:42a2) +HoFShowMonOrPlayer: call ClearScreen ld a, $d0 ld [hSCY], a @@ -149,9 +149,9 @@ HoFShowMonOrPlayer: ; 702a2 (1c:42a2) jr nz, .ScrollPic ret -HoFDisplayAndRecordMonInfo: ; 7030e (1c:430e) +HoFDisplayAndRecordMonInfo: ld a, [wHoFPartyMonIndex] - ld hl, wPartyMonNicks ; wPartyMonNicks + ld hl, wPartyMonNicks call GetPartyMonName call HoFDisplayMonInfo ld a, [wHoFPartyMonIndex] @@ -167,12 +167,12 @@ HoFDisplayAndRecordMonInfo: ; 7030e (1c:430e) .asm_7033c jp HoFRecordMonInfo -Func_7033f: ; 7033f (1c:433f) +Func_7033f: call HoFDisplayMonInfo ld a,[wHoFMonSpecies] jp PlayCry -HoFDisplayMonInfo: ; 70348 (1c:4348) +HoFDisplayMonInfo: coord hl, 0, 2 lb bc, 9, 10 call TextBoxBorder @@ -191,13 +191,13 @@ HoFDisplayMonInfo: ; 70348 (1c:4348) predef PrintMonType ret -HoFMonInfoText: ; 7037b (1c:437b) +HoFMonInfoText: db "LEVEL/" next "TYPE1/" next "TYPE2/@" -HoFLoadPlayerPics: ; 70390 (1c:433e) - ld de, RedPicFront ; $6ede +HoFLoadPlayerPics: + ld de, RedPicFront ld a, BANK(RedPicFront) call UncompressSpriteFromDE ld a,$0 @@ -217,12 +217,13 @@ HoFLoadPlayerPics: ; 70390 (1c:433e) call InterlaceMergeSpriteBuffers ld c, $1 -HoFLoadMonPlayerPicTileIDs: ; 703c7 (1c:43c7) - ld b, $0 +HoFLoadMonPlayerPicTileIDs: +; c = base tile ID + ld b, 0 coord hl, 12, 5 predef_jump CopyTileIDsFromList -HoFDisplayPlayerStats: ; 703d1 (1c:43d1) +HoFDisplayPlayerStats: SetEvent EVENT_HALL_OF_FAME_DEX_RATING predef DisplayDexRating coord hl, 0, 4 @@ -259,26 +260,26 @@ HoFDisplayPlayerStats: ; 703d1 (1c:43d1) call HoFPrintTextAndDelay ld hl, wDexRatingText -HoFPrintTextAndDelay: ; 7043a (1c:443a) +HoFPrintTextAndDelay: call PrintText ld c, 120 jp DelayFrames -HoFPlayTimeText: ; 70442 (1c:4442) +HoFPlayTimeText: db "PLAY TIME@" -HoFMoneyText: ; 7044c (1c:444c) +HoFMoneyText: db "MONEY@" -DexSeenOwnedText: ; 70452 (1c:4452) +DexSeenOwnedText: TX_FAR _DexSeenOwnedText db "@" -DexRatingText: ; 70457 (1c:4457) +DexRatingText: TX_FAR _DexRatingText db "@" -HoFRecordMonInfo: ; 7045c (1c:445c) +HoFRecordMonInfo: ld hl, wHallOfFame ld bc, HOF_MON ld a, [wHoFPartyMonIndex] @@ -293,7 +294,7 @@ HoFRecordMonInfo: ; 7045c (1c:445c) ld bc, NAME_LENGTH jp CopyData -HoFFadeOutScreenAndMusic: ; 7047b (1c:447b) +HoFFadeOutScreenAndMusic: ld a, 10 ld [wAudioFadeOutCounterReloadValue], a ld [wAudioFadeOutCounter], a diff --git a/engine/heal_party.asm b/engine/heal_party.asm index 4ef200a9..7aaa1bd1 100644 --- a/engine/heal_party.asm +++ b/engine/heal_party.asm @@ -1,4 +1,4 @@ -HealParty: ; f52b (3:752b) +HealParty: ; Restore HP and PP. ld hl, wPartySpecies @@ -96,4 +96,4 @@ HealParty: ; f52b (3:752b) inc [hl] dec b jr nz, .ppup - ret
\ No newline at end of file + ret diff --git a/engine/hidden_object_functions14.asm b/engine/hidden_object_functions14.asm index e69e802c..2781e182 100755 --- a/engine/hidden_object_functions14.asm +++ b/engine/hidden_object_functions14.asm @@ -1,16 +1,16 @@ -PrintNotebookText: ; 528f6 (14:68f6) +PrintNotebookText: call EnableAutoTextBoxDrawing ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a ld a, [wHiddenObjectFunctionArgument] jp PrintPredefTextID -TMNotebook: ; 52904 (14:6904) +TMNotebook: TX_FAR TMNotebookText db $0d db "@" -ViridianSchoolNotebook: ; 5290a (14:690a) +ViridianSchoolNotebook: TX_ASM ld hl, ViridianSchoolNotebookText1 call PrintText @@ -31,7 +31,7 @@ ViridianSchoolNotebook: ; 5290a (14:690a) .doneReading jp TextScriptEnd -TurnPageSchoolNotebook: ; 529db (14:69db) +TurnPageSchoolNotebook: ld hl, TurnPageText call PrintText call YesNoChoice @@ -39,62 +39,62 @@ TurnPageSchoolNotebook: ; 529db (14:69db) and a ret -TurnPageText: ; 52949 (14:6949) +TurnPageText: TX_FAR _TurnPageText db "@" -ViridianSchoolNotebookText5: ; 5294e (14:694e) +ViridianSchoolNotebookText5: TX_FAR _ViridianSchoolNotebookText5 db $0d db "@" -ViridianSchoolNotebookText1: ; 52954 (14:6954) +ViridianSchoolNotebookText1: TX_FAR _ViridianSchoolNotebookText1 db "@" -ViridianSchoolNotebookText2: ; 52959 (14:6959) +ViridianSchoolNotebookText2: TX_FAR _ViridianSchoolNotebookText2 db "@" -ViridianSchoolNotebookText3: ; 5295e (14:695e) +ViridianSchoolNotebookText3: TX_FAR _ViridianSchoolNotebookText3 db "@" -ViridianSchoolNotebookText4: ; 52963 (14:6963) +ViridianSchoolNotebookText4: TX_FAR _ViridianSchoolNotebookText4 db "@" -PrintFightingDojoText2: ; 52968 (14:6968) +PrintFightingDojoText2: call EnableAutoTextBoxDrawing tx_pre_jump EnemiesOnEverySideText -EnemiesOnEverySideText: ; 52970 (14:6970) +EnemiesOnEverySideText: TX_FAR _EnemiesOnEverySideText db "@" -PrintFightingDojoText3: ; 52975 (14:6975) +PrintFightingDojoText3: call EnableAutoTextBoxDrawing tx_pre_jump WhatGoesAroundComesAroundText -WhatGoesAroundComesAroundText: ; 5297d (14:697d) +WhatGoesAroundComesAroundText: TX_FAR _WhatGoesAroundComesAroundText db "@" -PrintFightingDojoText: ; 52982 (14:6982) +PrintFightingDojoText: call EnableAutoTextBoxDrawing tx_pre_jump FightingDojoText -FightingDojoText: ; 5298a (14:698a) +FightingDojoText: TX_FAR _FightingDojoText db "@" -PrintIndigoPlateauHQText: ; 5298f (14:698f) +PrintIndigoPlateauHQText: ld a, [wPlayerFacingDirection] cp SPRITE_FACING_UP ret nz call EnableAutoTextBoxDrawing tx_pre_jump IndigoPlateauHQText -IndigoPlateauHQText: ; 5299d (14:699d) +IndigoPlateauHQText: TX_FAR _IndigoPlateauHQText db "@" diff --git a/engine/hidden_object_functions17.asm b/engine/hidden_object_functions17.asm index 78950150..afbcadee 100755 --- a/engine/hidden_object_functions17.asm +++ b/engine/hidden_object_functions17.asm @@ -1,19 +1,19 @@ -PrintRedSNESText: ; 5dbae (17:5bae) +PrintRedSNESText: call EnableAutoTextBoxDrawing tx_pre_jump RedBedroomSNESText -RedBedroomSNESText: ; 5db81 (17:5b81) +RedBedroomSNESText: TX_FAR _RedBedroomSNESText db "@" -OpenRedsPC: ; 5db86 (17:5b86) +OpenRedsPC: call EnableAutoTextBoxDrawing tx_pre_jump RedBedroomPCText -RedBedroomPCText: ; 5db8e (17:5b8e) - db $fc ; FuncTX_ItemStoragePC +RedBedroomPCText: + TX_PLAYERS_PC -Route15GateLeftBinoculars: ; 5db8f (17:5b8f) +Route15GateLeftBinoculars: ld a, [wPlayerFacingDirection] cp SPRITE_FACING_UP ret nz @@ -27,11 +27,11 @@ Route15GateLeftBinoculars: ; 5db8f (17:5b8f) ld [H_AUTOBGTRANSFERENABLED], a ret -Route15UpstairsBinocularsText: ; 5dba8 (17:5ba8) +Route15UpstairsBinocularsText: TX_FAR _Route15UpstairsBinocularsText db "@" -AerodactylFossil: ; 5dbad (17:5bad) +AerodactylFossil: ld a, FOSSIL_AERODACTYL ld [wcf91], a call DisplayMonFrontSpriteInBox @@ -39,11 +39,11 @@ AerodactylFossil: ; 5dbad (17:5bad) tx_pre AerodactylFossilText ret -AerodactylFossilText: ; 5dbbe (17:5bbe) +AerodactylFossilText: TX_FAR _AerodactylFossilText db "@" -KabutopsFossil: ; 5bdc3 (17:5bc3) +KabutopsFossil: ld a, FOSSIL_KABUTOPS ld [wcf91], a call DisplayMonFrontSpriteInBox @@ -51,11 +51,11 @@ KabutopsFossil: ; 5bdc3 (17:5bc3) tx_pre KabutopsFossilText ret -KabutopsFossilText: ; 5dbd4 (17:5bd4) +KabutopsFossilText: TX_FAR _KabutopsFossilText db "@" -FanClubPicture1: ; 5dbad (17:5c12) +FanClubPicture1: ld a, RAPIDASH ld [wcf91], a call DisplayMonFrontSpriteInBox @@ -63,11 +63,11 @@ FanClubPicture1: ; 5dbad (17:5c12) tx_pre FanClubPicture1Text ret -FanClubPicture1Text: ; 5dbbe (17:5bbe) +FanClubPicture1Text: TX_FAR _FanClubPicture1Text db "@" -FanClubPicture2: ; 5dbad (17:5c28) +FanClubPicture2: ld a, FEAROW ld [wcf91], a call DisplayMonFrontSpriteInBox @@ -75,11 +75,11 @@ FanClubPicture2: ; 5dbad (17:5c28) tx_pre FanClubPicture2Text ret -FanClubPicture2Text: ; 5dc39 (17:5c39) +FanClubPicture2Text: TX_FAR _FanClubPicture2Text db "@" -DisplayMonFrontSpriteInBox: ; 5dbd9 (17:5bd9) +DisplayMonFrontSpriteInBox: ; Displays a pokemon's front sprite in a pop-up window. ; [wcf91] = pokemon interal id number ld a, 1 @@ -108,7 +108,7 @@ DisplayMonFrontSpriteInBox: ; 5dbd9 (17:5bd9) ld [hWY], a ret -PrintBlackboardLinkCableText: ; 5dc1a (17:5c1a) +PrintBlackboardLinkCableText: call EnableAutoTextBoxDrawing ld a, $1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a @@ -116,28 +116,28 @@ PrintBlackboardLinkCableText: ; 5dc1a (17:5c1a) call PrintPredefTextID ret -LinkCableHelp: ; 5dc29 (17:5c29) +LinkCableHelp: TX_ASM call SaveScreenTilesToBuffer1 ld hl, LinkCableHelpText1 call PrintText xor a - ld [wMenuItemOffset], a + ld [wMenuItemOffset], a ; not used ld [wCurrentMenuItem], a ld [wLastMenuItem], a ld a, A_BUTTON | B_BUTTON ld [wMenuWatchedKeys], a - ld a, $3 + ld a, 3 ld [wMaxMenuItem], a - ld a, $2 + ld a, 2 ld [wTopMenuItemY], a - ld a, $1 + ld a, 1 ld [wTopMenuItemX], a .linkHelpLoop ld hl, wd730 set 6, [hl] coord hl, 0, 0 - lb bc, $8, $d + lb bc, 8, 13 call TextBoxBorder coord hl, 2, 2 ld de, HowToLinkText @@ -148,13 +148,13 @@ LinkCableHelp: ; 5dc29 (17:5c29) bit 1, a ; pressed b jr nz, .exit ld a, [wCurrentMenuItem] - cp $3 ; pressed a on "STOP READING" + cp 3 ; pressed a on "STOP READING" jr z, .exit ld hl, wd730 res 6, [hl] ld hl, LinkCableInfoTexts add a - ld d, $0 + ld d, 0 ld e, a add hl, de ld a, [hli] @@ -168,38 +168,38 @@ LinkCableHelp: ; 5dc29 (17:5c29) call LoadScreenTilesFromBuffer1 jp TextScriptEnd -LinkCableHelpText1: ; 5dc9e (17:5c9e) +LinkCableHelpText1: TX_FAR _LinkCableHelpText1 db "@" -LinkCableHelpText2: ; 5dca3 (17:5ca3) +LinkCableHelpText2: TX_FAR _LinkCableHelpText2 db "@" -HowToLinkText: ; 5dca8 (17:5ca8) +HowToLinkText: db "HOW TO LINK" next "COLOSSEUM" next "TRADE CENTER" next "STOP READING@" -LinkCableInfoTexts: ; 5dcd8 (17:5cd8) +LinkCableInfoTexts: dw LinkCableInfoText1 dw LinkCableInfoText2 dw LinkCableInfoText3 -LinkCableInfoText1: ; 5dcde (17:5cde) +LinkCableInfoText1: TX_FAR _LinkCableInfoText1 db "@" -LinkCableInfoText2: ; 5dce3 (17:5ce3) +LinkCableInfoText2: TX_FAR _LinkCableInfoText2 db "@" -LinkCableInfoText3: ; 5dce8 (17:5ce8) +LinkCableInfoText3: TX_FAR _LinkCableInfoText3 db "@" -ViridianSchoolBlackboard: ; 5dced (17:5ced) +ViridianSchoolBlackboard: TX_ASM call SaveScreenTilesToBuffer1 ld hl, ViridianSchoolBlackboardText1 @@ -210,11 +210,11 @@ ViridianSchoolBlackboard: ; 5dced (17:5ced) ld [wLastMenuItem], a ld a, D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON ld [wMenuWatchedKeys], a - ld a, $2 + ld a, 2 ld [wMaxMenuItem], a - ld a, $2 + ld a, 2 ld [wTopMenuItemY], a - ld a, $1 + ld a, 1 ld [wTopMenuItemX], a .blackboardLoop ld hl, wd730 @@ -236,24 +236,24 @@ ViridianSchoolBlackboard: ; 5dced (17:5ced) bit 4, a ; pressed right jr z, .didNotPressRight ; move cursor to right column - ld a, $2 + ld a, 2 ld [wMaxMenuItem], a - ld a, $2 + ld a, 2 ld [wTopMenuItemY], a - ld a, $6 + ld a, 6 ld [wTopMenuItemX], a - ld a, $3 ; in the the right column, use an offset to prevent overlap + ld a, 3 ; in the the right column, use an offset to prevent overlap ld [wMenuItemOffset], a jr .blackboardLoop .didNotPressRight bit 5, a ; pressed left jr z, .didNotPressLeftOrRight ; move cursor to left column - ld a, $2 + ld a, 2 ld [wMaxMenuItem], a - ld a, $2 + ld a, 2 ld [wTopMenuItemY], a - ld a, $1 + ld a, 1 ld [wTopMenuItemX], a xor a ld [wMenuItemOffset], a @@ -261,9 +261,9 @@ ViridianSchoolBlackboard: ; 5dced (17:5ced) .didNotPressLeftOrRight ld a, [wCurrentMenuItem] ld b, a - ld a, [wAnimationID] + ld a, [wMenuItemOffset] add b - cp $5 ; cursor is pointing to "QUIT" + cp 5 ; cursor is pointing to "QUIT" jr z, .exitBlackboard ; we must have pressed a on a status condition ; so print the text @@ -271,7 +271,7 @@ ViridianSchoolBlackboard: ; 5dced (17:5ced) res 6, [hl] ld hl, ViridianBlackboardStatusPointers add a - ld d, $0 + ld d, 0 ld e, a add hl, de ld a, [hli] @@ -285,60 +285,60 @@ ViridianSchoolBlackboard: ; 5dced (17:5ced) call LoadScreenTilesFromBuffer1 jp TextScriptEnd -ViridianSchoolBlackboardText1: ; 5dda2 (17:5da2) +ViridianSchoolBlackboardText1: TX_FAR _ViridianSchoolBlackboardText1 db "@" -ViridianSchoolBlackboardText2: ; 5dda7 (17:5da7) +ViridianSchoolBlackboardText2: TX_FAR _ViridianSchoolBlackboardText2 db "@" -StatusAilmentText1: ; 5ddac (17:5dac) +StatusAilmentText1: db " SLP" next " PSN" next " PAR@" -StatusAilmentText2: ; 5ddbb (17:5dbb) +StatusAilmentText2: db " BRN" next " FRZ" next " QUIT@@" -ViridianBlackboardStatusPointers: ; 5ddcc (17:5ddc) +ViridianBlackboardStatusPointers: dw ViridianBlackboardSleepText dw ViridianBlackboardPoisonText dw ViridianBlackboardPrlzText dw ViridianBlackboardBurnText dw ViridianBlackboardFrozenText -ViridianBlackboardSleepText: ; 5ddd6 (17:5dd6) +ViridianBlackboardSleepText: TX_FAR _ViridianBlackboardSleepText db "@" -ViridianBlackboardPoisonText: ; 5dddb (17:5ddb) +ViridianBlackboardPoisonText: TX_FAR _ViridianBlackboardPoisonText db "@" -ViridianBlackboardPrlzText: ; 5dde0 (17:5de0) +ViridianBlackboardPrlzText: TX_FAR _ViridianBlackboardPrlzText db "@" -ViridianBlackboardBurnText: ; 5dde5 (17:5de5) +ViridianBlackboardBurnText: TX_FAR _ViridianBlackboardBurnText db "@" -ViridianBlackboardFrozenText: ; 5ddea (17:5dea) +ViridianBlackboardFrozenText: TX_FAR _ViridianBlackboardFrozenText db "@" -PrintTrashText: ; 5ddef (17:5def) +PrintTrashText: call EnableAutoTextBoxDrawing tx_pre_jump VermilionGymTrashText -VermilionGymTrashText: ; 5ddf7 (17:5df7) +VermilionGymTrashText: TX_FAR _VermilionGymTrashText db "@" -GymTrashScript: ; 5ddfc (17:5dfc) +GymTrashScript: call EnableAutoTextBoxDrawing ld a, [wHiddenObjectFunctionArgument] ld [wGymTrashCanIndex], a @@ -365,7 +365,7 @@ GymTrashScript: ; 5ddfc (17:5dfc) .openFirstLock ; Next can is trying for the second switch. SetEvent EVENT_1ST_LOCK_OPENED - callab Func_f2d0c + callab Yellow_SampleSecondTrashCan tx_pre_id VermilionGymTrashSuccessText1 jr .done @@ -400,7 +400,7 @@ GymTrashScript: ; 5ddfc (17:5dfc) .done jp PrintPredefTextID -GymTrashCans: ; 5de7d (17:5e7d) +GymTrashCans: ; byte 0: mask for random number ; bytes 1-4: indices of the trash cans that can have the second lock ; Note that the mask is simply the number of valid trash can indices that @@ -425,7 +425,7 @@ GymTrashCans: ; 5de7d (17:5e7d) db 2, 11, 13, -1, -1 ; 14 ; 5dec8 -VermilionGymTrashSuccessText1: ; 5dec8 (17:5ec8) +VermilionGymTrashSuccessText1: TX_FAR _VermilionGymTrashSuccessText1 TX_ASM call WaitForSoundToFinish @@ -435,12 +435,12 @@ VermilionGymTrashSuccessText1: ; 5dec8 (17:5ec8) jp TextScriptEnd ; unused -VermilionGymTrashSuccessText2: ; 5dedb (17:5edb) +VermilionGymTrashSuccessText2: TX_FAR _VermilionGymTrashSuccessText2 db "@" ; unused -VermilionGymTrashSuccesPlaySfx: ; 5dee0 (17:5ee0) +VermilionGymTrashSuccesPlaySfx: TX_ASM call WaitForSoundToFinish ld a, SFX_SWITCH @@ -448,7 +448,7 @@ VermilionGymTrashSuccesPlaySfx: ; 5dee0 (17:5ee0) call WaitForSoundToFinish jp TextScriptEnd -VermilionGymTrashSuccessText3: ; 5deef (17:5eef) +VermilionGymTrashSuccessText3: TX_FAR _VermilionGymTrashSuccessText3 TX_ASM call WaitForSoundToFinish @@ -457,7 +457,7 @@ VermilionGymTrashSuccessText3: ; 5deef (17:5eef) call WaitForSoundToFinish jp TextScriptEnd -VermilionGymTrashFailText: ; 5df02 (17:5f02) +VermilionGymTrashFailText: TX_FAR _VermilionGymTrashFailText TX_ASM call WaitForSoundToFinish diff --git a/engine/hidden_object_functions18.asm b/engine/hidden_object_functions18.asm index cdba142b..1bb31e00 100755 --- a/engine/hidden_object_functions18.asm +++ b/engine/hidden_object_functions18.asm @@ -1,4 +1,4 @@ -GymStatues: ; 625e8 (18:65e8) +GymStatues: ; if in a gym and have the corresponding badge, a = GymStatueText2_id and jp PrintPredefTextID ; if in a gym and don’t have the corresponding badge, a = GymStatueText1_id and jp PrintPredefTextID ; else ret @@ -28,7 +28,7 @@ GymStatues: ; 625e8 (18:65e8) .haveBadge jp PrintPredefTextID -.BadgeFlags: ; 62442 (18:6442) +.BadgeFlags: db PEWTER_GYM, %00000001 db CERULEAN_GYM, %00000010 db VERMILION_GYM, %00000100 @@ -39,15 +39,15 @@ GymStatues: ; 625e8 (18:65e8) db VIRIDIAN_GYM, %10000000 db $ff -GymStatueText1: ; 62453 (18:6453) +GymStatueText1: TX_FAR _GymStatueText1 db "@" -GymStatueText2: ; 62458 (18:6458) +GymStatueText2: TX_FAR _GymStatueText2 db "@" -PrintBenchGuyText: ; 6245d (18:645d) +PrintBenchGuyText: call EnableAutoTextBoxDrawing ld hl, BenchGuyTextPointers ld a, [wCurMap] @@ -71,7 +71,7 @@ PrintBenchGuyText: ; 6245d (18:645d) jp PrintPredefTextID ; format: db map id, player sprite facing direction, text id of PredefTextIDPointerTable -BenchGuyTextPointers: ; 6247e (18:647e) +BenchGuyTextPointers: db VIRIDIAN_POKECENTER, SPRITE_FACING_LEFT db_tx_pre ViridianCityPokecenterBenchGuyText db PEWTER_POKECENTER, SPRITE_FACING_LEFT @@ -104,59 +104,59 @@ BenchGuyTextPointers: ; 6247e (18:647e) db_tx_pre UnusedBenchGuyText3 db $FF -ViridianCityPokecenterBenchGuyText: ; 624a3 (18:64a3) +ViridianCityPokecenterBenchGuyText: TX_FAR _ViridianCityPokecenterGuyText db "@" -PewterCityPokecenterBenchGuyText: ; 624a8 (18:64a8) +PewterCityPokecenterBenchGuyText: TX_FAR _PewterCityPokecenterGuyText db "@" -CeruleanCityPokecenterBenchGuyText: ; 624ad (18:64ad) +CeruleanCityPokecenterBenchGuyText: TX_FAR _CeruleanPokecenterGuyText db "@" -LavenderCityPokecenterBenchGuyText: ; 624b2 (18:64b2) +LavenderCityPokecenterBenchGuyText: TX_FAR _LavenderPokecenterGuyText db "@" -MtMoonPokecenterBenchGuyText: ; 624b7 (18:64b7) +MtMoonPokecenterBenchGuyText: TX_FAR _MtMoonPokecenterBenchGuyText db "@" -RockTunnelPokecenterBenchGuyText: ; 624bc (18:64bc) +RockTunnelPokecenterBenchGuyText: TX_FAR _RockTunnelPokecenterGuyText db "@" -UnusedBenchGuyText1: ; 624c1 (18:64c1) +UnusedBenchGuyText1: TX_FAR _UnusedBenchGuyText1 db "@" -UnusedBenchGuyText2: ; 624c6 (18:64c6) +UnusedBenchGuyText2: TX_FAR _UnusedBenchGuyText2 db "@" -UnusedBenchGuyText3: ; 624cb (18:64cb) +UnusedBenchGuyText3: TX_FAR _UnusedBenchGuyText3 db "@" -VermilionCityPokecenterBenchGuyText: ; 624d0 (18:64d0) +VermilionCityPokecenterBenchGuyText: TX_FAR _VermilionPokecenterGuyText db "@" -CeladonCityPokecenterBenchGuyText: ; 624d5 (18:64d5) +CeladonCityPokecenterBenchGuyText: TX_FAR _CeladonCityPokecenterGuyText db "@" -FuchsiaCityPokecenterBenchGuyText: ; 624da (18:64da) +FuchsiaCityPokecenterBenchGuyText: TX_FAR _FuchsiaCityPokecenterGuyText db "@" -CinnabarIslandPokecenterBenchGuyText: ; 624df (18:64df) +CinnabarIslandPokecenterBenchGuyText: TX_FAR _CinnabarPokecenterGuyText db "@" -SaffronCityPokecenterBenchGuyText: ; 624e4 (18:64e4) +SaffronCityPokecenterBenchGuyText: TX_ASM CheckEvent EVENT_BEAT_SILPH_CO_GIOVANNI ld hl, SaffronCityPokecenterBenchGuyText2 @@ -166,32 +166,32 @@ SaffronCityPokecenterBenchGuyText: ; 624e4 (18:64e4) call PrintText jp TextScriptEnd -SaffronCityPokecenterBenchGuyText1: ; 624f8 (18:64f8) +SaffronCityPokecenterBenchGuyText1: TX_FAR _SaffronCityPokecenterGuyText1 db "@" -SaffronCityPokecenterBenchGuyText2: ; 624fd (18:64fd) +SaffronCityPokecenterBenchGuyText2: TX_FAR _SaffronCityPokecenterGuyText2 db "@" -CeladonCityHotelText: ; 62502 (18:6502) +CeladonCityHotelText: TX_FAR _CeladonCityHotelText db "@" ret -UnusedPredefText: ; 62508 (18:6508) +UnusedPredefText: db "@" -PrintBookcaseText: ; 626e1 (18:66e1) +PrintBookcaseText: call EnableAutoTextBoxDrawing tx_pre_jump BookcaseText -BookcaseText: ; 62511 (18:6511) +BookcaseText: TX_FAR _BookcaseText db "@" -OpenPokemonCenterPC: ; 62516 (18:6516) +OpenPokemonCenterPC: ld a, [wPlayerFacingDirection] cp SPRITE_FACING_UP ; check to see if player is facing up ret nz @@ -200,5 +200,5 @@ OpenPokemonCenterPC: ; 62516 (18:6516) ld [wAutoTextBoxDrawingControl], a tx_pre_jump PokemonCenterPCText -PokemonCenterPCText: ; 62529 (18:6529) - db $F9 ; FuncTX_PokemonCenterPC +PokemonCenterPCText: + TX_POKECENTER_PC diff --git a/engine/hidden_object_functions3.asm b/engine/hidden_object_functions3.asm index 78da8274..9456e76f 100755 --- a/engine/hidden_object_functions3.asm +++ b/engine/hidden_object_functions3.asm @@ -1,5 +1,5 @@ ; prints text for bookshelves in buildings without sign events -PrintBookshelfText: ; f9de (3:79de) +PrintBookshelfText: ld a, [wPlayerFacingDirection] ; player's sprite facing direction cp SPRITE_FACING_UP jr nz, .noMatch @@ -37,7 +37,7 @@ PrintBookshelfText: ; f9de (3:79de) jpba PrintCardKeyText ; format: db tileset id, bookshelf tile id, text id -BookshelfTileIDs: ; fa19 (3:7a19) +BookshelfTileIDs: db PLATEAU, $30 db_tx_pre IndigoPlateauStatues db HOUSE, $3D @@ -74,58 +74,58 @@ BookshelfTileIDs: ; fa19 (3:7a19) db_tx_pre BookOrSculptureText db $FF -IndigoPlateauStatues: ; fa4d (3:7a4d) +IndigoPlateauStatues: TX_ASM ld hl, IndigoPlateauStatuesText1 call PrintText ld a, [wXCoord] bit 0, a ld hl, IndigoPlateauStatuesText2 - jr nz, .asm_fa61 + jr nz, .ok ld hl, IndigoPlateauStatuesText3 -.asm_fa61 +.ok call PrintText jp TextScriptEnd -IndigoPlateauStatuesText1: ; fa67 (3:7a67) +IndigoPlateauStatuesText1: TX_FAR _IndigoPlateauStatuesText1 db "@" -IndigoPlateauStatuesText2: ; fa6c (3:7a6c) +IndigoPlateauStatuesText2: TX_FAR _IndigoPlateauStatuesText2 db "@" -IndigoPlateauStatuesText3: ; fa71 (3:7a71) +IndigoPlateauStatuesText3: TX_FAR _IndigoPlateauStatuesText3 db "@" -BookOrSculptureText: ; fa76 (3:7a76) +BookOrSculptureText: TX_ASM ld hl, PokemonBooksText ld a, [wCurMapTileset] cp MANSION ; Celadon Mansion tileset - jr nz, .asm_fa8b + jr nz, .ok aCoord 8, 6 cp $38 - jr nz, .asm_fa8b + jr nz, .ok ld hl, DiglettSculptureText -.asm_fa8b +.ok call PrintText jp TextScriptEnd -PokemonBooksText: ; fa91 (3:7a91) +PokemonBooksText: TX_FAR _PokemonBooksText db "@" -DiglettSculptureText: ; fa96 (3:7a96) +DiglettSculptureText: TX_FAR _DiglettSculptureText db "@" -ElevatorText: ; fa9b (3:7a9b) +ElevatorText: TX_FAR _ElevatorText db "@" -TownMapText: ; faa0 (3:7aa0) +TownMapText: TX_FAR _TownMapText db $06 TX_ASM @@ -148,6 +148,6 @@ TownMapText: ; faa0 (3:7aa0) push af jp CloseTextDisplay -PokemonStuffText: ; fad3 (3:7ad3) +PokemonStuffText: TX_FAR _PokemonStuffText db "@" diff --git a/engine/hidden_object_functions7.asm b/engine/hidden_object_functions7.asm index 4867b447..a8676fed 100755 --- a/engine/hidden_object_functions7.asm +++ b/engine/hidden_object_functions7.asm @@ -1,20 +1,20 @@ -PrintNewBikeText: ; 1e2e4 (7:62e4) +PrintNewBikeText: call EnableAutoTextBoxDrawing tx_pre_jump NewBicycleText -NewBicycleText: ; 1e2ec (7:62ec) +NewBicycleText: TX_FAR _NewBicycleText db "@" -DisplayOakLabLeftPoster: ; 1e2f1 (7:62f1) +DisplayOakLabLeftPoster: call EnableAutoTextBoxDrawing tx_pre_jump PushStartText -PushStartText: ; 1e2f9 (7:62f9) +PushStartText: TX_FAR _PushStartText db "@" -DisplayOakLabRightPoster: ; 1e2fe (7:62fe) +DisplayOakLabRightPoster: call EnableAutoTextBoxDrawing ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned @@ -28,15 +28,15 @@ DisplayOakLabRightPoster: ; 1e2fe (7:62fe) .ownLessThanTwo jp PrintPredefTextID -SaveOptionText: ; 1e317 (7:6317) +SaveOptionText: TX_FAR _SaveOptionText db "@" -StrengthsAndWeaknessesText: ; 1e31c (7:631c) +StrengthsAndWeaknessesText: TX_FAR _StrengthsAndWeaknessesText db "@" -SafariZoneCheck: ; 1e321 (7:6321) +SafariZoneCheck: CheckEventHL EVENT_IN_SAFARI_ZONE ; if we are not in the Safari Zone, jr z, SafariZoneGameStillGoing ; don't bother printing game over text ld a, [wNumSafariBalls] @@ -44,7 +44,7 @@ SafariZoneCheck: ; 1e321 (7:6321) jr z, SafariZoneGameOver jr SafariZoneGameStillGoing -SafariZoneCheckSteps: ; 1e330 (7:6330) +SafariZoneCheckSteps: ld a, [wSafariSteps] ld b, a ld a, [wSafariSteps + 1] @@ -56,12 +56,12 @@ SafariZoneCheckSteps: ; 1e330 (7:6330) ld [wSafariSteps], a ld a, c ld [wSafariSteps + 1], a -SafariZoneGameStillGoing: ; 1e344 (7:6344) +SafariZoneGameStillGoing: xor a ld [wSafariZoneGameOver], a ret -SafariZoneGameOver: ; 1e349 (7:6349) +SafariZoneGameOver: call EnableAutoTextBoxDrawing xor a ld [wAudioFadeOutControl], a @@ -85,17 +85,17 @@ SafariZoneGameOver: ; 1e349 (7:6349) ld a, $5 ld [wSafariZoneEntranceCurScript], a SetEvent EVENT_SAFARI_GAME_OVER - ld a, $1 + ld a, 1 ld [wSafariZoneGameOver], a ret -PrintSafariGameOverText: ; 1e385 (7:6385) +PrintSafariGameOverText: xor a ld [wJoyIgnore], a ld hl, SafariGameOverText jp PrintText -SafariGameOverText: ; 1e38f (7:638f) +SafariGameOverText: TX_ASM ld a, [wNumSafariBalls] and a @@ -107,22 +107,22 @@ SafariGameOverText: ; 1e38f (7:638f) call PrintText jp TextScriptEnd -TimesUpText: ; 1e3a5 (7:63a5) +TimesUpText: TX_FAR _TimesUpText db "@" -GameOverText: ; 1e3aa (7:63aa) +GameOverText: TX_FAR _GameOverText db "@" -PrintCinnabarQuiz: ; 1e3af (7:63af) +PrintCinnabarQuiz: ld a, [wPlayerFacingDirection] cp SPRITE_FACING_UP ret nz call EnableAutoTextBoxDrawing tx_pre_jump CinnabarGymQuiz -CinnabarGymQuiz: ; 1e3be (7:63be) +CinnabarGymQuiz: TX_ASM xor a ld [wOpponentAfterWrongAnswer], a @@ -138,7 +138,7 @@ CinnabarGymQuiz: ; 1e3be (7:63be) ld [$ffdc], a ld a, [hGymGateIndex] ld hl, CinnabarGymQuizIntroText - cp $1 + cp 1 jr z, .onFirstQuestion ld hl, CinnabarGymQuizShortIntroText .onFirstQuestion @@ -154,24 +154,24 @@ CinnabarGymQuiz: ; 1e3be (7:63be) ld h, [hl] ld l, a call PrintText - ld a, $1 + ld a, 1 ld [wDoNotWaitForButtonPressAfterDisplayingText], a call CinnabarGymQuiz_1ea92 jp TextScriptEnd -CinnabarGymQuizDummyIntroText: ; 1e401 (7:6401) +CinnabarGymQuizDummyIntroText: TX_FAR _CinnabarGymQuizDummyIntroText db "@" -CinnabarGymQuizIntroText: ; 1e406 (7:6406) +CinnabarGymQuizIntroText: TX_FAR _CinnabarGymQuizIntroText db "@" -CinnabarGymQuizShortIntroText: ; 1e40b (7:640b) +CinnabarGymQuizShortIntroText: TX_FAR _CinnabarGymQuizShortIntroText db "@" -CinnabarQuizQuestions: ; 1e410 (7:6410) +CinnabarQuizQuestions: dw CinnabarQuizQuestionsText1 dw CinnabarQuizQuestionsText2 dw CinnabarQuizQuestionsText3 @@ -179,31 +179,31 @@ CinnabarQuizQuestions: ; 1e410 (7:6410) dw CinnabarQuizQuestionsText5 dw CinnabarQuizQuestionsText6 -CinnabarQuizQuestionsText1: ; 1e41c (7:641c) +CinnabarQuizQuestionsText1: TX_FAR _CinnabarQuizQuestionsText1 db "@" -CinnabarQuizQuestionsText2: ; 1e421 (7:6421) +CinnabarQuizQuestionsText2: TX_FAR _CinnabarQuizQuestionsText2 db "@" -CinnabarQuizQuestionsText3: ; 1e426 (7:6426) +CinnabarQuizQuestionsText3: TX_FAR _CinnabarQuizQuestionsText3 db "@" -CinnabarQuizQuestionsText4: ; 1e42b (7:642b) +CinnabarQuizQuestionsText4: TX_FAR _CinnabarQuizQuestionsText4 db "@" -CinnabarQuizQuestionsText5: ; 1e430 (7:6430) +CinnabarQuizQuestionsText5: TX_FAR _CinnabarQuizQuestionsText5 db "@" -CinnabarQuizQuestionsText6: ; 1e435 (7:6435) +CinnabarQuizQuestionsText6: TX_FAR _CinnabarQuizQuestionsText6 db "@" -CinnabarGymQuiz_1ea92: ; 1e43a (7:643a) +CinnabarGymQuiz_1ea92: call YesNoChoice ld a, [$ffdc] ld c, a @@ -246,7 +246,7 @@ CinnabarGymQuiz_1ea92: ; 1e43a (7:643a) set 7, [hl] ret -CinnabarGymQuizCorrectText: ; 1e490 (7:6490) +CinnabarGymQuizCorrectText: db $0b TX_FAR _CinnabarGymQuizCorrectText db $06 @@ -266,15 +266,15 @@ CinnabarGymQuizCorrectText: ; 1e490 (7:6490) call WaitForSoundToFinish jp TextScriptEnd -CinnabarGymQuizIncorrectText: ; 1e4b2 (7:64b2) +CinnabarGymQuizIncorrectText: TX_FAR _CinnabarGymQuizIncorrectText db "@" -CinnabarGymGateFlagAction: ; 1e4b7 (7:64b7) +CinnabarGymGateFlagAction: EventFlagAddress hl, EVENT_CINNABAR_GYM_GATE0_UNLOCKED predef_jump FlagActionPredef -UpdateCinnabarGymGateTileBlocks_: ; 1e4bf (7:64bf) +UpdateCinnabarGymGateTileBlocks_: ; Update the overworld map with open floor blocks or locked gate blocks ; depending on event flags. ld a, 6 @@ -318,7 +318,7 @@ UpdateCinnabarGymGateTileBlocks_: ; 1e4bf (7:64bf) callab RedrawMapView ret -CinnabarGymGateCoords: ; 1e503 (7:6503) +CinnabarGymGateCoords: ; format: x-coord, y-coord, direction, padding ; direction: $54 = horizontal gate, $5f = vertical gate db $09,$03,$54,$00 @@ -329,7 +329,7 @@ CinnabarGymGateCoords: ; 1e503 (7:6503) db $02,$03,$54,$00 -CinnabarGym_ReplaceTileBlock: ; 1e51b (7:651b) +CinnabarGym_ReplaceTileBlock: ; basically a copy of the first half of ReplaceTileBlock ; before checking if it is necessary to redraw the map view ld hl, wOverworldMap @@ -356,16 +356,16 @@ CinnabarGym_ReplaceTileBlock: ; 1e51b (7:651b) ld [hl], a ret -PrintMagazinesText: ; 1e53b (7:653b) +PrintMagazinesText: call EnableAutoTextBoxDrawing tx_pre MagazinesText ret -MagazinesText: ; 1e544 (7:6544) +MagazinesText: TX_FAR _MagazinesText db "@" -BillsHousePC: ; 1e549 (7:6549) +BillsHousePC: call EnableAutoTextBoxDrawing ld a, [wPlayerFacingDirection] cp SPRITE_FACING_UP @@ -411,11 +411,11 @@ BillsHousePC: ; 1e549 (7:6549) tx_pre BillsHousePokemonList ret -BillsHouseMonitorText: ; 1e5b8 (7:65b8) +BillsHouseMonitorText: TX_FAR _BillsHouseMonitorText db "@" -BillsHouseInitiatedText: ; 1e5bd (7:65b2) +BillsHouseInitiatedText: TX_FAR _BillsHouseInitiatedText db $06 TX_ASM @@ -429,22 +429,22 @@ BillsHouseInitiatedText: ; 1e5bd (7:65b2) call DelayFrames jp TextScriptEnd -BillsHousePokemonList: ; 1e5dc (7:65dc) +BillsHousePokemonList: TX_ASM call SaveScreenTilesToBuffer1 ld hl, BillsHousePokemonListText1 call PrintText xor a - ld [wMenuItemOffset], a + ld [wMenuItemOffset], a ; not used ld [wCurrentMenuItem], a ld [wLastMenuItem], a ld a, A_BUTTON | B_BUTTON ld [wMenuWatchedKeys], a - ld a, $4 + ld a, 4 ld [wMaxMenuItem], a - ld a, $2 + ld a, 2 ld [wTopMenuItemY], a - ld a, $1 + ld a, 1 ld [wTopMenuItemX], a .billsPokemonLoop ld hl, wd730 @@ -482,22 +482,22 @@ BillsHousePokemonList: ; 1e5dc (7:65dc) call LoadScreenTilesFromBuffer2 jp TextScriptEnd -BillsHousePokemonListText1: ; 1e654 (7:6654) +BillsHousePokemonListText1: TX_FAR _BillsHousePokemonListText1 db "@" -BillsMonListText: ; 1e659 (7:6659) +BillsMonListText: db "EEVEE" next "FLAREON" next "JOLTEON" next "VAPOREON" next "CANCEL@" -BillsHousePokemonListText2: ; 1e67f (7:667f) +BillsHousePokemonListText2: TX_FAR _BillsHousePokemonListText2 db "@" -DisplayOakLabEmailText: ; 1e684 (7:6684) +DisplayOakLabEmailText: ld a, [wPlayerFacingDirection] cp SPRITE_FACING_UP ret nz @@ -505,6 +505,6 @@ DisplayOakLabEmailText: ; 1e684 (7:6684) tx_pre OakLabEmailText ret -OakLabEmailText: ; 1e693 (7:6693) +OakLabEmailText: TX_FAR _OakLabEmailText db "@" diff --git a/engine/hp_bar.asm b/engine/hp_bar.asm index 789f1bd7..566a7b61 100755 --- a/engine/hp_bar.asm +++ b/engine/hp_bar.asm @@ -1,9 +1,9 @@ -HPBarLength: ; f86c (3:786c) +HPBarLength: call GetPredefRegisters ; calculates bc * 48 / de, the number of pixels the HP bar has ; the result is always at least 1 -GetHPBarLength: ; f86f (3:786f) +GetHPBarLength: push hl xor a ld hl, H_MULTIPLICAND @@ -45,7 +45,7 @@ GetHPBarLength: ; f86f (3:786f) ret ; predef $48 -UpdateHPBar: ; f8ad (3:78ad) +UpdateHPBar: UpdateHPBar2: push hl ld hl, wHPBarOldHP @@ -87,6 +87,7 @@ UpdateHPBar2: call UpdateHPBar_CompareNewHPToOldHP jr z, .animateHPBarDone jr nc, .HPIncrease +; HP decrease dec bc ; subtract 1 HP ld a, c ld [wHPBarNewHP], a @@ -95,7 +96,7 @@ UpdateHPBar2: call UpdateHPBar_CalcOldNewHPBarPixels ld a, e sub d ; calc pixel difference - jr .asm_f90e + jr .ok .HPIncrease inc bc ; add 1 HP ld a, c @@ -105,7 +106,7 @@ UpdateHPBar2: call UpdateHPBar_CalcOldNewHPBarPixels ld a, d sub e ; calc pixel difference -.asm_f90e +.ok call UpdateHPBar_PrintHPNumber and a jr z, .noPixelDifference @@ -136,7 +137,7 @@ UpdateHPBar2: ; animates the HP bar going up or down for (a) ticks (two waiting frames each) ; stops prematurely if bar is filled up ; e: current health (in pixels) to start with -UpdateHPBar_AnimateHPBar: ; f941 (3:7941) +UpdateHPBar_AnimateHPBar: push hl .barAnimationLoop push af @@ -162,7 +163,7 @@ UpdateHPBar_AnimateHPBar: ; f941 (3:7941) ret ; compares old HP and new HP and sets c and z flags accordingly -UpdateHPBar_CompareNewHPToOldHP: ; f961 (3:7961) +UpdateHPBar_CompareNewHPToOldHP: ld a, d sub b ret nz @@ -171,7 +172,7 @@ UpdateHPBar_CompareNewHPToOldHP: ; f961 (3:7961) ret ; calcs HP difference between bc and de (into de) -UpdateHPBar_CalcHPDifference: ; f967 (3:7967) +UpdateHPBar_CalcHPDifference: ld a, d sub b jr c, .oldHPGreater @@ -200,7 +201,7 @@ UpdateHPBar_CalcHPDifference: ; f967 (3:7967) ld de, $0 ret -UpdateHPBar_PrintHPNumber: ; f985 (3:7985) +UpdateHPBar_PrintHPNumber: push af push de ld a, [wHPBarType] @@ -238,7 +239,7 @@ UpdateHPBar_PrintHPNumber: ; f985 (3:7985) ; calcs number of HP bar pixels for old and new HP value ; d: new pixels ; e: old pixels -UpdateHPBar_CalcOldNewHPBarPixels: ; f9be (3:79be) +UpdateHPBar_CalcOldNewHPBarPixels: push hl ld hl, wHPBarMaxHP ld a, [hli] ; max HP into de diff --git a/engine/in_game_trades.asm b/engine/in_game_trades.asm index ff739ef0..60719c7e 100755 --- a/engine/in_game_trades.asm +++ b/engine/in_game_trades.asm @@ -1,4 +1,4 @@ -DoInGameTradeDialogue: ; 71b86 (1c:5b86) +DoInGameTradeDialogue: ; trigger the trade offer/action specified by wWhichTrade call SaveScreenTilesToBuffer2 ld hl,TradeMons @@ -67,7 +67,7 @@ DoInGameTradeDialogue: ; 71b86 (1c:5b86) jp PrintText ; copies name of species a to hl -InGameTrade_GetMonName: ; 71c0c (1c:5c0c) +InGameTrade_GetMonName: push de ld [wd11e],a call GetMonName @@ -78,7 +78,7 @@ InGameTrade_GetMonName: ; 71c0c (1c:5c0c) INCLUDE "data/trades.asm" -InGameTrade_DoTrade: ; 71ca9 (1c:5ca9) +InGameTrade_DoTrade: xor a ; NORMAL_PARTY_MENU ld [wPartyMenuTypeOrMessageID],a dec a @@ -133,13 +133,13 @@ InGameTrade_DoTrade: ; 71ca9 (1c:5ca9) and a ld a,$3 jr .tradeSucceeded -.tradeFailed ; never jumped to +.tradeFailed scf .tradeSucceeded ld [wInGameTradeTextPointerTableIndex],a ret -InGameTrade_RestoreScreen: ; 71d36 (1c:5d36) +InGameTrade_RestoreScreen: call GBPalWhiteOutWithDelay3 call RestoreScreenTilesAndReloadTilePatterns call ReloadTilesetTilePatterns @@ -150,7 +150,7 @@ InGameTrade_RestoreScreen: ; 71d36 (1c:5d36) call DelayFrames jpba LoadWildData -InGameTrade_PrepareTradeData: ; 71d55 (1c:5d55) +InGameTrade_PrepareTradeData: ld hl, wTradedPlayerMonSpecies ld a, [wInGameTradeGiveMonSpecies] ld [hli], a ; wTradedPlayerMonSpecies @@ -180,7 +180,7 @@ InGameTrade_PrepareTradeData: ; 71d55 (1c:5d55) ld de, wTradedEnemyMonOTID jp CopyData -InGameTrade_CopyData: ; 71da5 (1c:5da5) +InGameTrade_CopyData: push hl push bc call CopyData @@ -188,7 +188,7 @@ InGameTrade_CopyData: ; 71da5 (1c:5da5) pop hl ret -InGameTrade_CopyDataToReceivedMon: ; 71dad (1c:5dad) +InGameTrade_CopyDataToReceivedMon: ld hl, wPartyMonNicks ld bc, NAME_LENGTH call InGameTrade_GetReceivedMonPointer @@ -210,7 +210,7 @@ InGameTrade_CopyDataToReceivedMon: ; 71dad (1c:5dad) ; the received mon's index is (partyCount - 1), ; so this adds bc to hl (partyCount - 1) times and moves the result to de -InGameTrade_GetReceivedMonPointer: ; 71de3 (1c:5de3) +InGameTrade_GetReceivedMonPointer: ld a, [wPartyCount] dec a call AddNTimes @@ -218,13 +218,13 @@ InGameTrade_GetReceivedMonPointer: ; 71de3 (1c:5de3) ld d, h ret -InGameTrade_FlagActionPredef: ; 71ded (1c:5ded) +InGameTrade_FlagActionPredef: ld hl,wCompletedInGameTradeFlags ld a,[wWhichTrade] ld c,a predef_jump FlagActionPredef -InGameTrade_CheckForTradeEvo: ; 71df9 (1c:5df9) +InGameTrade_CheckForTradeEvo: ld a,[wInGameTradeReceiveMonSpecies] cp KADABRA jr z,.tradeEvo @@ -249,100 +249,100 @@ InGameTrade_CheckForTradeEvo: ; 71df9 (1c:5df9) ld [wLinkState],a jp PlayDefaultMusic -InGameTrade_TrainerString: ; 71e2d (1c:5e2d) +InGameTrade_TrainerString: ; "TRAINER@@@@@@@@@@" db $5d, "@@@@@@@@@@" -InGameTradeTextPointers: ; 71e38 (1c:5e38) +InGameTradeTextPointers: dw TradeTextPointers1 dw TradeTextPointers2 dw TradeTextPointers3 -TradeTextPointers1: ; 71e3e (1c:5e3e) +TradeTextPointers1: dw WannaTrade1Text dw NoTrade1Text dw WrongMon1Text dw Thanks1Text dw AfterTrade1Text -TradeTextPointers2: ; 71e48 (1c:5e48) +TradeTextPointers2: dw WannaTrade2Text dw NoTrade2Text dw WrongMon2Text dw Thanks2Text dw AfterTrade2Text -TradeTextPointers3: ; 71e52 (1c:5e52) +TradeTextPointers3: dw WannaTrade3Text dw NoTrade3Text dw WrongMon3Text dw Thanks3Text dw AfterTrade3Text -ConnectCableText: ; 71e5c (1c:5e5c) +ConnectCableText: TX_FAR _ConnectCableText db "@" -TradedForText: ; 71e61 (1c:5e61) +TradedForText: TX_FAR _TradedForText db $11, $a, "@" -WannaTrade1Text: ; 71e66 (1c:5e66) +WannaTrade1Text: TX_FAR _WannaTrade1Text db "@" -NoTrade1Text: ; 71e6b (1c:5e6b) +NoTrade1Text: TX_FAR _NoTrade1Text db "@" -WrongMon1Text: ; 71e70 (1c:5e70) +WrongMon1Text: TX_FAR _WrongMon1Text db "@" -Thanks1Text: ; 71e75 (1c:5e75) +Thanks1Text: TX_FAR _Thanks1Text db "@" -AfterTrade1Text: ; 71e7a (1c:5e7a) +AfterTrade1Text: TX_FAR _AfterTrade1Text db "@" -WannaTrade2Text: ; 71e7f (1c:5e7f) +WannaTrade2Text: TX_FAR _WannaTrade2Text db "@" -NoTrade2Text: ; 71e84 (1c:5e84) +NoTrade2Text: TX_FAR _NoTrade2Text db "@" -WrongMon2Text: ; 71e89 (1c:5e89) +WrongMon2Text: TX_FAR _WrongMon2Text db "@" -Thanks2Text: ; 71e8e (1c:5e8e) +Thanks2Text: TX_FAR _Thanks2Text db "@" -AfterTrade2Text: ; 71e93 (1c:5e93) +AfterTrade2Text: TX_FAR _AfterTrade2Text db "@" -WannaTrade3Text: ; 71e98 (1c:5e98) +WannaTrade3Text: TX_FAR _WannaTrade3Text db "@" -NoTrade3Text: ; 71e9d (1c:5d9d) +NoTrade3Text: TX_FAR _NoTrade3Text db "@" -WrongMon3Text: ; 71ea2 (1c:5ea2) +WrongMon3Text: TX_FAR _WrongMon3Text db "@" -Thanks3Text: ; 71ea7 (1c:5ea7) +Thanks3Text: TX_FAR _Thanks3Text db "@" -AfterTrade3Text: ; 71eac (1c:5eac) +AfterTrade3Text: TX_FAR _AfterTrade3Text db "@" diff --git a/engine/init_player_data.asm b/engine/init_player_data.asm index f240b5db..5883547c 100644 --- a/engine/init_player_data.asm +++ b/engine/init_player_data.asm @@ -1,4 +1,4 @@ -InitPlayerData: ; f6d6 (3:76d6) +InitPlayerData: InitPlayerData2: call Random @@ -52,9 +52,9 @@ START_MONEY EQU $3000 jp InitializeMissableObjectsFlags -InitializeEmptyList: ; f730 (3:7730) +InitializeEmptyList: xor a ; count ld [hli], a dec a ; terminator ld [hl], a - ret
\ No newline at end of file + ret diff --git a/engine/intro.asm b/engine/intro.asm index 27a357a7..37bd0151 100755 --- a/engine/intro.asm +++ b/engine/intro.asm @@ -2,13 +2,13 @@ MOVE_GENGAR_RIGHT EQU $00 MOVE_GENGAR_LEFT EQU $01 MOVE_NIDORINO_RIGHT EQU $ff -PlayIntro: ; 41997 (10:5997) +PlayIntro: xor a ld [hJoyHeld], a inc a ld [H_AUTOBGTRANSFERENABLED], a call PlayShootingStar - callab PlayIntroScene ; 3e:582d + callab PlayIntroScene xor a ld [hSCX], a ld [H_AUTOBGTRANSFERENABLED], a @@ -16,7 +16,7 @@ PlayIntro: ; 41997 (10:5997) call DelayFrame ret -InitIntroNidorinoOAM: ; 419b4 (10:59b4) +InitIntroNidorinoOAM: ld hl, wOAMBuffer ld d, 0 .loop @@ -45,17 +45,17 @@ InitIntroNidorinoOAM: ; 419b4 (10:59b4) jr nz, .loop ret -IntroClearScreen: ; 419dd (10:59dd) +IntroClearScreen: ld hl, vBGMap1 ld bc, $240 jr IntroClearCommon -IntroClearMiddleOfScreen: ; 419e5 (10:59e5) +IntroClearMiddleOfScreen: ; clear the area of the tile map between the black bars on the top and bottom coord hl, 0, 4 ld bc, SCREEN_WIDTH * 10 -IntroClearCommon: ; 419eb (10:59eb) +IntroClearCommon: ld [hl], $0 inc hl dec bc @@ -64,7 +64,7 @@ IntroClearCommon: ; 419eb (10:59eb) jr nz, IntroClearCommon ret -IntroPlaceBlackTiles: ; 419f4 (10:59f4) +IntroPlaceBlackTiles: ld a, $1 .loop ld [hli], a @@ -72,11 +72,11 @@ IntroPlaceBlackTiles: ; 419f4 (10:59f4) jr nz, .loop ret -CopyTileIDsFromList_ZeroBaseTileID: ; 419fb (10:59fb) +CopyTileIDsFromList_ZeroBaseTileID: ld c, 0 predef_jump CopyTileIDsFromList -PlayShootingStar: ; 41a02 (10:5a02) +PlayShootingStar: ld b, SET_PAL_GAME_FREAK_INTRO call RunPaletteCommand callba LoadCopyrightAndTextBoxTiles @@ -128,7 +128,7 @@ PlayShootingStar: ; 41a02 (10:5a02) call ClearSprites jp Delay3 -IntroDrawBlackBars: ; 41a82 (10:5a82) +IntroDrawBlackBars: ; clear the screen and draw black bars on the top and bottom call IntroClearScreen coord hl, 0, 0 @@ -144,11 +144,11 @@ IntroDrawBlackBars: ; 41a82 (10:5a82) ld c, $80 jp IntroPlaceBlackTiles -EmptyFunc4: ; 41aa5 (10:5aa5) +EmptyFunc4: ret -GameFreakIntro: ; 41959 (10:5aa6) +GameFreakIntro: INCBIN "gfx/gamefreak_intro.2bpp" INCBIN "gfx/gamefreak_logo.2bpp" ds $10 ; blank tile -GameFreakIntroEnd:
\ No newline at end of file +GameFreakIntroEnd: diff --git a/engine/items/itemfinder.asm b/engine/items/itemfinder.asm index 7b479462..7c15d4bb 100755 --- a/engine/items/itemfinder.asm +++ b/engine/items/itemfinder.asm @@ -1,4 +1,4 @@ -HiddenItemNear: ; 7405c (1d:405c) +HiddenItemNear: ld hl, HiddenItemCoords ld b, 0 .loop @@ -43,7 +43,7 @@ HiddenItemNear: ; 7405c (1d:405c) scf ret -Sub5ClampTo0: ; 740a8 (1d:40a8) +Sub5ClampTo0: ; subtract 5 but clamp to 0 sub 5 cp $f0 diff --git a/engine/items/items.asm b/engine/items/items.asm index 1858c5f0..984cc381 100755 --- a/engine/items/items.asm +++ b/engine/items/items.asm @@ -1,4 +1,4 @@ -UseItem_: ; d2ed (3:52ed) +UseItem_: ld a, 1 ld [wActionResultOrTookBattleTurn], a ; initialise to success value ld a, [wcf91] ;contains item_ID @@ -15,7 +15,7 @@ UseItem_: ; d2ed (3:52ed) ld l, a jp [hl] -ItemUsePtrTable: ; d307 (3:5307) +ItemUsePtrTable: dw ItemUseBall ; MASTER_BALL dw ItemUseBall ; ULTRA_BALL dw ItemUseBall ; GREAT_BALL @@ -100,7 +100,7 @@ ItemUsePtrTable: ; d307 (3:5307) dw ItemUsePPRestore ; ELIXER dw ItemUsePPRestore ; MAX_ELIXER -ItemUseBall: ; d3ad (3:53ad) +ItemUseBall: ; Balls can't be used out of battle. ld a,[wIsInBattle] @@ -608,56 +608,56 @@ ItemUseBall: ; d3ad (3:53ad) .emptyString db "@" -ItemUseBallText00: ; d697 (3:5697) +ItemUseBallText00: ;"It dodged the thrown ball!" ;"This pokemon can't be caught" TX_FAR _ItemUseBallText00 db "@" -ItemUseBallText01: ; d69c (3:569c) +ItemUseBallText01: ;"You missed the pokemon!" TX_FAR _ItemUseBallText01 db "@" -ItemUseBallText02: ; d6a1 (3:56a1) +ItemUseBallText02: ;"Darn! The pokemon broke free!" TX_FAR _ItemUseBallText02 db "@" -ItemUseBallText03: ; d6a6 (3:56a6) +ItemUseBallText03: ;"Aww! It appeared to be caught!" TX_FAR _ItemUseBallText03 db "@" -ItemUseBallText04: ; d6ab (3:56ab) +ItemUseBallText04: ;"Shoot! It was so close too!" TX_FAR _ItemUseBallText04 db "@" -ItemUseBallText05: ; d6b0 (3:56b0) +ItemUseBallText05: ;"All right! {MonName} was caught!" ;play sound TX_FAR _ItemUseBallText05 db $12, $06 db "@" -ItemUseBallText07: ; d6b7 (3:59b7) +ItemUseBallText07: ;"X was transferred to Bill's PC" TX_FAR _ItemUseBallText07 db "@" -ItemUseBallText08: ; d6bc (3:56bc) +ItemUseBallText08: ;"X was transferred to someone's PC" TX_FAR _ItemUseBallText08 db "@" -ItemUseBallText06: ; d6c1 (3:56c1) +ItemUseBallText06: ;"New DEX data will be added..." ;play sound TX_FAR _ItemUseBallText06 db $13, $06 db "@" -ItemUseTownMap: ; d6c8 (3:56c8) +ItemUseTownMap: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime jpba DisplayTownMap -ItemUseBicycle: ; d6d7 (3:56d7) +ItemUseBicycle: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime @@ -695,7 +695,7 @@ ItemUseBicycle: ; d6d7 (3:56d7) ret ; used for Surf out-of-battle effect -ItemUseSurfboard: ; d725 (3:5725) +ItemUseSurfboard: ld a, [wWalkBikeSurfState] ld [wWalkBikeSurfStateCopy], a cp 2 ; is the player already surfing? @@ -774,18 +774,18 @@ ItemUseSurfboard: ; d725 (3:5725) ld [wSimulatedJoypadStatesIndex], a ret -SurfingGotOnText: ; d7c1 (3:57c1) +SurfingGotOnText: TX_FAR _SurfingGotOnText db "@" -SurfingNoPlaceToGetOffText: ; d7c6 (3:57c6) +SurfingNoPlaceToGetOffText: TX_FAR _SurfingNoPlaceToGetOffText db "@" -ItemUsePokedex: ; d7cb (3:57cb) +ItemUsePokedex: predef_jump ShowPokedexMenu -ItemUseEvoStone: ; d7d0 (3:57d0) +ItemUseEvoStone: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime @@ -844,7 +844,7 @@ ItemUseEvoStone: ; d7d0 (3:57d0) pop af ret -Func_d85d: ; d85d (3:585d) +Func_d85d: ld hl, EvosMovesPointerTable ld a, [wLoadedMon] dec a @@ -889,16 +889,16 @@ Func_d85d: ; d85d (3:585d) and a ret -RefusingText: ; d8a2 (3:58a2) +RefusingText: TX_FAR _RefusingText db "@" -ItemUseVitamin: ; d8a7 (3:58a7) +ItemUseVitamin: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime -ItemUseMedicine: ; d8ae (3:58ae) +ItemUseMedicine: ld a, [wPartyCount] and a jp z, Func_e4bf @@ -1554,22 +1554,22 @@ ItemUseMedicine: ; d8ae (3:58ae) ld [wWhichPokemon], a jp RemoveUsedItem -VitaminStatRoseText: ; dd44 (3:5d44) +VitaminStatRoseText: TX_FAR _VitaminStatRoseText db "@" -VitaminNoEffectText: ; dd49 (3:5d49) +VitaminNoEffectText: TX_FAR _VitaminNoEffectText db "@" -VitaminText: ; dd4e (3:5d4e) +VitaminText: db "HEALTH@" db "ATTACK@" db "DEFENSE@" db "SPEED@" db "SPECIAL@" -ItemUseBait: ; dd72 (3:5d72) +ItemUseBait: ld hl, ThrewBaitText call PrintText ld hl, wEnemyMonCatchRate ; catch rate @@ -1579,7 +1579,7 @@ ItemUseBait: ; dd72 (3:5d72) ld de, wSafariEscapeFactor ; escape factor jr BaitRockCommon -ItemUseRock: ; dd87 (3:5d87) +ItemUseRock: ld hl, ThrewRockText call PrintText ld hl, wEnemyMonCatchRate ; catch rate @@ -1593,7 +1593,7 @@ ItemUseRock: ; dd87 (3:5d87) ld hl, wSafariEscapeFactor ; escape factor ld de, wSafariBaitFactor ; bait factor -BaitRockCommon: ; dd9f (3:5d9f) +BaitRockCommon: ld [wAnimationID], a xor a ld [wAnimationType], a @@ -1616,16 +1616,16 @@ BaitRockCommon: ; dd9f (3:5d9f) ld c, 70 jp DelayFrames -ThrewBaitText: ; ddc6 (3:5dc6) +ThrewBaitText: TX_FAR _ThrewBaitText db "@" -ThrewRockText: ; ddca (3:5dca) +ThrewRockText: TX_FAR _ThrewRockText db "@" ; also used for Dig out-of-battle effect -ItemUseEscapeRope: ; ddcf (3:5dcf) +ItemUseEscapeRope: ld a, [wIsInBattle] and a jr nz, .notUsable @@ -1669,14 +1669,14 @@ ItemUseEscapeRope: ; ddcf (3:5dcf) .notUsable jp ItemUseNotTime -EscapeRopeTilesets: ; de28 (3:5e28) +EscapeRopeTilesets: db FOREST, CEMETERY, CAVERN, FACILITY, INTERIOR db $ff ; terminator -ItemUseRepel: ; de2e (3:5e2e) +ItemUseRepel: ld b, 100 -ItemUseRepelCommon: ; e005 (3:6005) +ItemUseRepelCommon: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime @@ -1685,7 +1685,7 @@ ItemUseRepelCommon: ; e005 (3:6005) jp PrintItemUseTextAndRemoveItem ; handles X Accuracy item -ItemUseXAccuracy: ; de3e (3:5e3e) +ItemUseXAccuracy: ld a, [wIsInBattle] and a jp z, ItemUseNotTime @@ -1696,7 +1696,7 @@ ItemUseXAccuracy: ; de3e (3:5e3e) ; This function is bugged and never works. It always jumps to ItemUseNotTime. ; The Card Key is handled in a different way. -ItemUseCardKey: ; de57 (3:de57) +ItemUseCardKey: xor a ld [wUnusedD71F], a call GetTileAndCoordsInFrontOfPlayer @@ -1760,7 +1760,7 @@ ItemUseCardKey: ; de57 (3:de57) ; 02: X ; 03: ID? -CardKeyTable1: ; dea7 (3:5ea7) +CardKeyTable1: db SILPH_CO_2F, $04, $04, $00 db SILPH_CO_2F, $04, $05, $01 db SILPH_CO_4F, $0C, $04, $02 @@ -1773,7 +1773,7 @@ CardKeyTable1: ; dea7 (3:5ea7) db SILPH_CO_10F, $08, $0B, $09 db $ff -CardKeyTable2: ; ded0 (3:5ed0) +CardKeyTable2: db SILPH_CO_3F, $08, $09, $0A db SILPH_CO_3F, $09, $09, $0B db SILPH_CO_5F, $04, $07, $0C @@ -1786,12 +1786,12 @@ CardKeyTable2: ; ded0 (3:5ed0) db SILPH_CO_9F, $09, $03, $13 db $ff -CardKeyTable3: ; def9 (3:5ef9) +CardKeyTable3: db SILPH_CO_11F, $08, $09, $14 db SILPH_CO_11F, $09, $09, $15 db $ff -ItemUsePokedoll: ; df02 (3:5f02) +ItemUsePokedoll: ld a, [wIsInBattle] dec a jp nz, ItemUseNotTime @@ -1799,7 +1799,7 @@ ItemUsePokedoll: ; df02 (3:5f02) ld [wEscapedFromBattle], a jp PrintItemUseTextAndRemoveItem -ItemUseGuardSpec: ; df11 (3:5f11) +ItemUseGuardSpec: ld a, [wIsInBattle] and a jp z, ItemUseNotTime @@ -1816,15 +1816,15 @@ ItemUseGuardSpec: ; df11 (3:5f11) set ProtectedByMist, [hl] ; Mist bit jp PrintItemUseTextAndRemoveItem -ItemUseSuperRepel: ; df38 (3:5f38) +ItemUseSuperRepel: ld b, 200 jp ItemUseRepelCommon -ItemUseMaxRepel: ; df3d (3:5f3d) +ItemUseMaxRepel: ld b, 250 jp ItemUseRepelCommon -ItemUseDireHit: ; df42 (3:5f42) +ItemUseDireHit: ld a, [wIsInBattle] and a jp z, ItemUseNotTime @@ -1841,7 +1841,7 @@ ItemUseDireHit: ; df42 (3:5f42) set GettingPumped, [hl] ; Focus Energy bit jp PrintItemUseTextAndRemoveItem -ItemUseXStat: ; df69 (3:df69) +ItemUseXStat: ld a, [wIsInBattle] and a jr nz, .inBattle @@ -1884,7 +1884,7 @@ ItemUseXStat: ; df69 (3:df69) ld [hl], a ; restore [wPlayerMoveNum] ret -ItemUsePokeflute: ; dfbd (3:5fbd) +ItemUsePokeflute: ld a, [wIsInBattle] and a jr nz, .inBattle @@ -1928,8 +1928,8 @@ ItemUsePokeflute: ; dfbd (3:5fbd) ld hl, PlayedFluteHadEffectText call PrintText call ItemUseReloadOverworldData - ld e, $1a - callab Func_fd001 + ldpikaemotion e, PikachuEmotion26 + callab PlaySpecificPikachuEmotion ret .noSnorlaxOrPikachuToWakeUp @@ -1992,7 +1992,7 @@ ItemUsePokeflute: ; dfbd (3:5fbd) ; [wWereAnyMonsAsleep] should be initialized to 0 ; OUTPUT: ; [wWereAnyMonsAsleep]: set to 1 if any pokemon were asleep -WakeUpEntireParty: ; e094 (3:6094) +WakeUpEntireParty: ld de, 44 ld c, 6 .loop @@ -2014,7 +2014,7 @@ WakeUpEntireParty: ; e094 (3:6094) ; Format: ; 00: Y ; 01: X -Route12SnorlaxFluteCoords: ; e0ac (3:60ac) +Route12SnorlaxFluteCoords: db 62, 9 ; one space West of Snorlax db 61, 10 ; one space North of Snorlax db 63, 10 ; one space South of Snorlax @@ -2024,20 +2024,20 @@ Route12SnorlaxFluteCoords: ; e0ac (3:60ac) ; Format: ; 00: Y ; 01: X -Route16SnorlaxFluteCoords: ; e0b5 (3:60b5) +Route16SnorlaxFluteCoords: db 10, 27 ; one space East of Snorlax db 10, 25 ; one space West of Snorlax db $ff ; terminator -PlayedFluteNoEffectText: ; e0ba (3:60ba) +PlayedFluteNoEffectText: TX_FAR _PlayedFluteNoEffectText db "@" -FluteWokeUpText: ; e0bf (3:60bf) +FluteWokeUpText: TX_FAR _FluteWokeUpText db "@" -PlayedFluteHadEffectText: ; e0c4 (3:60c4) +PlayedFluteHadEffectText: TX_FAR _PlayedFluteHadEffectText db $06 TX_ASM @@ -2057,25 +2057,25 @@ PlayedFluteHadEffectText: ; e0c4 (3:60c4) .done jp TextScriptEnd ; end text -ItemUseCoinCase: ; e0e7 (3:60e7) +ItemUseCoinCase: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime ld hl, CoinCaseNumCoinsText jp PrintText -CoinCaseNumCoinsText: ; e0f1 (3:60f1) +CoinCaseNumCoinsText: TX_FAR _CoinCaseNumCoinsText db "@" -ItemUseOldRod: ; e0f9 (3:60f9) +ItemUseOldRod: call FishingInit jp c, ItemUseNotTime lb bc, 5, MAGIKARP ld a, $1 ; set bite jr RodResponse -ItemUseGoodRod: ; e106 (3:6106) +ItemUseGoodRod: call FishingInit jp c, ItemUseNotTime .RandomLoop @@ -2103,7 +2103,7 @@ ItemUseGoodRod: ; e106 (3:6106) INCLUDE "data/good_rod.asm" -ItemUseSuperRod: ; e130 (3:6130) +ItemUseSuperRod: call FishingInit jp c, ItemUseNotTime callab ReadSuperRodData @@ -2123,7 +2123,7 @@ ItemUseSuperRod: ; e130 (3:6130) ld [wRodResponse], a jr DoNotGenerateFishingEncounter -RodResponse: ; e15b (3:615b) +RodResponse: ld [wRodResponse], a dec a ; is there a bite? @@ -2136,7 +2136,7 @@ RodResponse: ; e15b (3:615b) ld a, c ; species ld [wCurOpponent], a -DoNotGenerateFishingEncounter: ; e16e (3:616e) +DoNotGenerateFishingEncounter: ld hl, wWalkBikeSurfState ld a, [hl] ; store the value in a push af @@ -2150,7 +2150,7 @@ DoNotGenerateFishingEncounter: ; e16e (3:616e) ; checks if fishing is possible and if so, runs initialization code common to all rods ; unsets carry if fishing is possible, sets carry if not -FishingInit: ; e182 (3:6182) +FishingInit: ld a, [wIsInBattle] and a jr z, .notInBattle @@ -2181,10 +2181,10 @@ FishingInit: ; e182 (3:6182) scf ; can't fish when surfing ret -ItemUseOaksParcel: ; e1b7 (3:61b7) +ItemUseOaksParcel: jp ItemUseNotYoursToUse -ItemUseItemfinder: ; e1ba (3:61ba) +ItemUseItemfinder: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime @@ -2204,20 +2204,20 @@ ItemUseItemfinder: ; e1ba (3:61ba) .printText jp PrintText -ItemfinderFoundItemText: ; e1e6 (3:61e6) +ItemfinderFoundItemText: TX_FAR _ItemfinderFoundItemText db "@" -ItemfinderFoundNothingText: ; e1eb (3:61eb) +ItemfinderFoundNothingText: TX_FAR _ItemfinderFoundNothingText db "@" -ItemUsePPUp: ; e1f0 (3:61f0) +ItemUsePPUp: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime -ItemUsePPRestore: ; e1f7 (3:61f7) +ItemUsePPRestore: ld a, [wWhichPokemon] push af ld a, [wcf91] @@ -2417,31 +2417,31 @@ ItemUsePPRestore: ; e1f7 (3:61f7) ld [wActionResultOrTookBattleTurn], a ; item use failed ret -RaisePPWhichTechniqueText: ; e358 (3:6358) +RaisePPWhichTechniqueText: TX_FAR _RaisePPWhichTechniqueText db "@" -RestorePPWhichTechniqueText: ; e35d (3:635d) +RestorePPWhichTechniqueText: TX_FAR _RestorePPWhichTechniqueText db "@" -PPMaxedOutText: ; e362 (3:6362) +PPMaxedOutText: TX_FAR _PPMaxedOutText db "@" -PPIncreasedText: ; e367 (3:6367) +PPIncreasedText: TX_FAR _PPIncreasedText db "@" -PPRestoredText: ; e36c (3:636c) +PPRestoredText: TX_FAR _PPRestoredText db "@" ; for items that can't be used from the Item menu -UnusableItem: ; e371 (3:6371) +UnusableItem: jp ItemUseNotTime -ItemUseTMHM: ; e374 (3:6374) +ItemUseTMHM: ld a, [wIsInBattle] and a jp nz, ItemUseNotTime @@ -2564,54 +2564,54 @@ ItemUseTMHM: ; e374 (3:6374) ret c jp RemoveUsedItem -BootedUpTMText: ; e483 (3:6483) +BootedUpTMText: TX_FAR _BootedUpTMText db "@" -BootedUpHMText: ; e488 (3:6488) +BootedUpHMText: TX_FAR _BootedUpHMText db "@" -TeachMachineMoveText: ; e48d (3:648d) +TeachMachineMoveText: TX_FAR _TeachMachineMoveText db "@" -MonCannotLearnMachineMoveText: ; e492 (3:6492) +MonCannotLearnMachineMoveText: TX_FAR _MonCannotLearnMachineMoveText db "@" -PrintItemUseTextAndRemoveItem: ; e497 (3:6497) +PrintItemUseTextAndRemoveItem: ld hl, ItemUseText00 call PrintText ld a, SFX_HEAL_AILMENT call PlaySound call WaitForTextScrollButtonPress ; wait for button press -RemoveUsedItem: ; e4a5 (3:64a5) +RemoveUsedItem: ld hl, wNumBagItems ld a, 1 ; one item ld [wItemQuantity], a jp RemoveItemFromInventory -ItemUseNoEffect: ; e4b0 (3:64b0) +ItemUseNoEffect: ld hl, ItemUseNoEffectText jr ItemUseFailed -ItemUseNotTime: ; e4b5 (3:64b5) +ItemUseNotTime: ld hl, ItemUseNotTimeText jr ItemUseFailed -ItemUseNotYoursToUse: ; e4ba (3:64ba) +ItemUseNotYoursToUse: ld hl, ItemUseNotYoursToUseText jr ItemUseFailed -Func_e4bf: ; e4bf (3:64bf) +Func_e4bf: ld a, $2 ld [wActionResultOrTookBattleTurn], a ld hl, DontHavePokemonText jp PrintText -ThrowBallAtTrainerMon: ; e4ca (3:64ca) +ThrowBallAtTrainerMon: call RunDefaultPaletteCommand call LoadScreenTilesFromBuffer1 ; restore saved screen call Delay3 @@ -2624,71 +2624,71 @@ ThrowBallAtTrainerMon: ; e4ca (3:64ca) call PrintText jr RemoveUsedItem -NoCyclingAllowedHere: ; e4eb (3:64eb) +NoCyclingAllowedHere: ld hl, NoCyclingAllowedHereText jr ItemUseFailed -BoxFullCannotThrowBall: ; e4f0 (3:64f0) +BoxFullCannotThrowBall: ld hl, BoxFullCannotThrowBallText jr ItemUseFailed -SurfingAttemptFailed: ; e4f5 (3:64f5) +SurfingAttemptFailed: ld hl, NoSurfingHereText -ItemUseFailed: ; e4f8 (3:64f8) +ItemUseFailed: xor a ld [wActionResultOrTookBattleTurn], a ; item use failed jp PrintText -ItemUseNotTimeText: ; e4ff (3:64ff) +ItemUseNotTimeText: TX_FAR _ItemUseNotTimeText db "@" -ItemUseNotYoursToUseText: ; e504 (3:6504) +ItemUseNotYoursToUseText: TX_FAR _ItemUseNotYoursToUseText db "@" -ItemUseNoEffectText: ; e509 (3:6509) +ItemUseNoEffectText: TX_FAR _ItemUseNoEffectText db "@" -ThrowBallAtTrainerMonText1: ; e50e (3:650e) +ThrowBallAtTrainerMonText1: TX_FAR _ThrowBallAtTrainerMonText1 db "@" -ThrowBallAtTrainerMonText2: ; e513 (3:6513) +ThrowBallAtTrainerMonText2: TX_FAR _ThrowBallAtTrainerMonText2 db "@" -NoCyclingAllowedHereText: ; e518 (3:6518) +NoCyclingAllowedHereText: TX_FAR _NoCyclingAllowedHereText db "@" -NoSurfingHereText: ; e51d (3:651d) +NoSurfingHereText: TX_FAR _NoSurfingHereText db "@" -BoxFullCannotThrowBallText: ; e522 (3:6522) +BoxFullCannotThrowBallText: TX_FAR _BoxFullCannotThrowBallText db "@" -DontHavePokemonText: ; e527 (3:6527) +DontHavePokemonText: TX_FAR _DontHavePokemonText db "@" -ItemUseText00: ; e52c (3:652c) +ItemUseText00: TX_FAR _ItemUseText001 db $05 TX_FAR _ItemUseText002 db "@" -GotOnBicycleText: ; e536 (3:6536) +GotOnBicycleText: TX_FAR _GotOnBicycleText1 db $05 TX_FAR _GotOnBicycleText2 db "@" -GotOffBicycleText: ; e540 (3:6540) +GotOffBicycleText: TX_FAR _GotOffBicycleText1 db $05 TX_FAR _GotOffBicycleText2 @@ -2699,7 +2699,7 @@ GotOffBicycleText: ; e540 (3:6540) ; INPUT: ; [wWhichPokemon] = index of pokemon in party ; [wCurrentMenuItem] = index of move (when using a PP Up) -RestoreBonusPP: ; e54a (3:654a) +RestoreBonusPP: ld hl, wPartyMon1Moves ld bc, wPartyMon2 - wPartyMon1 ld a, [wWhichPokemon] @@ -2741,7 +2741,7 @@ RestoreBonusPP: ; e54a (3:654a) ; INPUT: ; [de] = normal max PP ; [hl] = move PP -AddBonusPP: ; e586 (3:6586) +AddBonusPP: push bc ld a, [de] ; normal max PP of move ld [H_DIVIDEND + 3], a @@ -2790,7 +2790,7 @@ AddBonusPP: ; e586 (3:6586) ; [wCurrentMenuItem] = move index ; OUTPUT: ; [wMaxPP] = max PP -GetMaxPP: ; e5bb (3:65bb) +GetMaxPP: ld a, [wMonDataLocation] and a ld hl, wPartyMon1Moves @@ -2851,11 +2851,11 @@ GetMaxPP: ; e5bb (3:65bb) ld [wMaxPP], a ; store max PP ret -GetSelectedMoveOffset: ; e627 (3:6627) +GetSelectedMoveOffset: ld a, [wWhichPokemon] call AddNTimes -GetSelectedMoveOffset2: ; e62d (3:662d) +GetSelectedMoveOffset2: ld a, [wCurrentMenuItem] ld c, a ld b, 0 @@ -2870,7 +2870,7 @@ GetSelectedMoveOffset2: ; e62d (3:662d) ; [wItemQuantity] = quantity to toss ; OUTPUT: ; clears carry flag if the item is tossed, sets carry flag if not -TossItem_: ; e635 (3:6635) +TossItem_: push hl ld a, [wcf91] call IsItemHM @@ -2921,15 +2921,15 @@ TossItem_: ; e635 (3:6635) scf ret -ThrewAwayItemText: ; e699 (3:6699) +ThrewAwayItemText: TX_FAR _ThrewAwayItemText db "@" -IsItOKToTossItemText: ; e69e (3:669e) +IsItOKToTossItemText: TX_FAR _IsItOKToTossItemText db "@" -TooImportantToTossText: ; e6a3 (3:66a3) +TooImportantToTossText: TX_FAR _TooImportantToTossText db "@" @@ -2940,7 +2940,7 @@ TooImportantToTossText: ; e6a3 (3:66a3) ; [wIsKeyItem] = result ; 00: item is not key item ; 01: item is key item -IsKeyItem_: ; e6a8 (3:66a8) +IsKeyItem_: ld a, $01 ld [wIsKeyItem], a ld a, [wcf91] @@ -2971,7 +2971,7 @@ IsKeyItem_: ; e6a8 (3:66a8) INCLUDE "data/key_items.asm" -SendNewMonToBox: ; e6e8 (3:66e8) +SendNewMonToBox: ld de, wNumInBox ld a, [de] inc a @@ -3146,7 +3146,7 @@ SendNewMonToBox: ; e6e8 (3:66e8) ; checks if the tile in front of the player is a shore or water tile ; used for surfing and fishing ; unsets carry if it is, sets carry if not -IsNextTileShoreOrWater: ; e808 (3:6808) +IsNextTileShoreOrWater: ld a, [wCurMapTileset] ld hl, WaterTilesets ld de, 1 @@ -3168,26 +3168,26 @@ IsNextTileShoreOrWater: ; e808 (3:6808) ret ; tilesets with water -WaterTilesets: ; e834 (3:6834) +WaterTilesets: db OVERWORLD, FOREST, DOJO, GYM, SHIP, SHIP_PORT, CAVERN, FACILITY, PLATEAU db $ff ; terminator ; shore tiles -ShoreTiles: ; e83e (3:683e) +ShoreTiles: db $48, $32 -WaterTile: ; e840 (3:6840) +WaterTile: db $14 db $ff ; terminator ; reloads map view and processes sprite data ; for items that cause the overworld to be displayed -ItemUseReloadOverworldData: ; e842 (3:6842) +ItemUseReloadOverworldData: call LoadCurrentMapView jp UpdateSprites ; creates a list at wBuffer of maps where the mon in [wd11e] can be found. ; this is used by the pokedex to display locations the mon can be found on the map. -FindWildLocationsOfMon: ; e848 (3:6848) +FindWildLocationsOfMon: ld hl, WildDataPointers ld de, wBuffer ld c, $0 @@ -3211,13 +3211,12 @@ FindWildLocationsOfMon: ; e848 (3:6848) inc hl inc c jr .loop - .done ld a, $ff ; list terminator ld [de], a ret -CheckMapForMon: ; e86d (3:686d) +CheckMapForMon: inc hl ld b, $a .loop diff --git a/engine/items/tm_prices.asm b/engine/items/tm_prices.asm index a3a8c608..80e6bf3c 100755 --- a/engine/items/tm_prices.asm +++ b/engine/items/tm_prices.asm @@ -1,4 +1,4 @@ -GetMachinePrice: ; f65d4 (3d:65d4) +GetMachinePrice: ; Input: [wcf91] = Item Id of a TM ; Output: Stores the TM price at hItemPrice ld a, [wcf91] ; a contains TM item id diff --git a/engine/items/tmhm.asm b/engine/items/tmhm.asm index be93fc0e..7ccaa232 100755 --- a/engine/items/tmhm.asm +++ b/engine/items/tmhm.asm @@ -1,5 +1,5 @@ ; checks if the mon in [wWhichPokemon] already knows the move in [wMoveNum] -CheckIfMoveIsKnown: ; 2fd42 (b:7d42) +CheckIfMoveIsKnown: ld a, [wWhichPokemon] ld hl, wPartyMon1Moves ld bc, wPartyMon2 - wPartyMon1 @@ -21,6 +21,6 @@ CheckIfMoveIsKnown: ; 2fd42 (b:7d42) scf ret -AlreadyKnowsText: ; 2fd65 (b:7d65) +AlreadyKnowsText: TX_FAR _AlreadyKnowsText db "@" diff --git a/engine/items/tms.asm b/engine/items/tms.asm index ff10d134..84770747 100755 --- a/engine/items/tms.asm +++ b/engine/items/tms.asm @@ -1,5 +1,5 @@ ; tests if mon [wcf91] can learn move [wMoveNum] -CanLearnTM: ; 122f0 (4:62f0) +CanLearnTM: ld a, [wcf91] ld [wd0b5], a call GetMonHeader @@ -28,7 +28,7 @@ CanLearnTM: ; 122f0 (4:62f0) ; converts TM/HM number in wd11e into move number ; HMs start at 51 -TMToMove: ; 1231d (4:631d) +TMToMove: ld a, [wd11e] dec a ld hl, TechnicalMachines diff --git a/engine/joypad.asm b/engine/joypad.asm index 2b85cb61..4126568c 100644 --- a/engine/joypad.asm +++ b/engine/joypad.asm @@ -1,4 +1,4 @@ -ReadJoypad_:: ; c000 (3:4000) +ReadJoypad_:: ; Poll joypad input. ; Unlike the hardware register, button ; presses are indicated by a set bit. @@ -33,7 +33,7 @@ ReadJoypad_:: ; c000 (3:4000) ret -_Joypad:: ; c02d (3:402d) +_Joypad:: ; hJoyReleased: (hJoyLast ^ hJoyInput) & hJoyLast ; hJoyPressed: (hJoyLast ^ hJoyInput) & hJoyInput diff --git a/engine/learn_move.asm b/engine/learn_move.asm index 7022e3ea..dcaf4235 100755 --- a/engine/learn_move.asm +++ b/engine/learn_move.asm @@ -1,4 +1,4 @@ -LearnMove: ; 6bc8 (1:6bc8) +LearnMove: call SaveScreenTilesToBuffer1 ld a, [wWhichPokemon] ld hl, wPartyMonNicks @@ -8,7 +8,7 @@ LearnMove: ; 6bc8 (1:6bc8) ld bc, NAME_LENGTH call CopyData -DontAbandonLearning: ; 6be0 (1:6be0) +DontAbandonLearning: ld hl, wPartyMon1Moves ld bc, wPartyMon2Moves - wPartyMon1Moves ld a, [wWhichPokemon] @@ -73,7 +73,7 @@ DontAbandonLearning: ; 6be0 (1:6be0) call CopyData jp PrintLearnedMove -AbandonLearning: ; 6c5f (1:6c5f) +AbandonLearning: ld hl, AbandonLearningText call PrintText coord hl, 14, 7 @@ -89,13 +89,13 @@ AbandonLearning: ; 6c5f (1:6c5f) ld b, 0 ret -PrintLearnedMove: ; 6c83 (1:6c83) +PrintLearnedMove: ld hl, LearnedMove1Text call PrintText ld b, 1 ret -TryingToLearn: ; 6c8c (1:6c8c) +TryingToLearn: push hl ld hl, TryingToLearnText call PrintText @@ -182,27 +182,27 @@ TryingToLearn: ; 6c8c (1:6c8c) scf ret -LearnedMove1Text: ; 6d31 (1:6d31) +LearnedMove1Text: TX_FAR _LearnedMove1Text db $b,6,"@" -WhichMoveToForgetText: ; 6d38 (1:6d38) +WhichMoveToForgetText: TX_FAR _WhichMoveToForgetText db "@" -AbandonLearningText: ; 6d3d (1:6d3d) +AbandonLearningText: TX_FAR _AbandonLearningText db "@" -DidNotLearnText: ; 6d42 (1:6d42) +DidNotLearnText: TX_FAR _DidNotLearnText db "@" -TryingToLearnText: ; 6d47 (1:6d47) +TryingToLearnText: TX_FAR _TryingToLearnText db "@" -OneTwoAndText: ; 6d4c (1:6d4c) +OneTwoAndText: ; bugfix: In Red/Blue, the SFX_SWAP sound was played in the wrong bank, which played an incorrect sound ; Yellow has fixed this by swapping to the correct bank TX_FAR _OneTwoAndText @@ -236,13 +236,13 @@ OneTwoAndText: ; 6d4c (1:6d4c) ld hl, PoofText ret -PoofText: ; 6d88 (1:6d88) +PoofText: TX_FAR _PoofText db $a -ForgotAndText: ; 6d8d (1:6d8d) +ForgotAndText: TX_FAR _ForgotAndText db "@" -HMCantDeleteText: ; 6d92 (1:6d92) +HMCantDeleteText: TX_FAR _HMCantDeleteText db "@" diff --git a/engine/load_mon_data.asm b/engine/load_mon_data.asm index 4a1e3097..e708113f 100644 --- a/engine/load_mon_data.asm +++ b/engine/load_mon_data.asm @@ -1,4 +1,4 @@ -LoadMonData_: ; 442b (1:442b) +LoadMonData_: ; Load monster [wWhichPokemon] from list [wMonDataLocation]: ; 0: partymon ; 1: enemymon @@ -49,7 +49,7 @@ LoadMonData_: ; 442b (1:442b) jp CopyData ; get species of mon e in list [wMonDataLocation] for LoadMonData -GetMonSpecies: ; 4478 (1:4478) +GetMonSpecies: ld hl, wPartySpecies ld a, [wMonDataLocation] and a @@ -65,4 +65,4 @@ GetMonSpecies: ; 4478 (1:4478) add hl, de ld a, [hl] ld [wcf91], a - ret
\ No newline at end of file + ret diff --git a/engine/load_pokedex_tiles.asm b/engine/load_pokedex_tiles.asm index 43d87f09..637b7a24 100755 --- a/engine/load_pokedex_tiles.asm +++ b/engine/load_pokedex_tiles.asm @@ -1,5 +1,5 @@ ; Loads tile patterns for tiles used in the pokedex. -LoadPokedexTilePatterns: ; 14000 (5:4000) +LoadPokedexTilePatterns: call LoadHpBarAndStatusTilePatterns ld de,PokedexTileGraphics ld hl,vChars2 + $600 @@ -8,4 +8,4 @@ LoadPokedexTilePatterns: ; 14000 (5:4000) ld de,PokeballTileGraphics ld hl,vChars2 + $720 lb bc, BANK(PokeballTileGraphics), $01 - jp CopyVideoData ; load pokeball tile for marking caught mons
\ No newline at end of file + jp CopyVideoData ; load pokeball tile for marking caught mons diff --git a/engine/menu/bills_pc.asm b/engine/menu/bills_pc.asm index e104f693..eddccc29 100644 --- a/engine/menu/bills_pc.asm +++ b/engine/menu/bills_pc.asm @@ -1,4 +1,4 @@ -DisplayPCMainMenu:: ; 213c8 (8:5378) +DisplayPCMainMenu:: xor a ld [H_AUTOBGTRANSFERENABLED], a call SaveScreenTilesToBuffer2 @@ -89,7 +89,7 @@ OaksPCText: db "PROF.OAK's PC@" PKMNLeaguePCText: db $4a, "LEAGUE@" LogOffPCText: db "LOG OFF@" -BillsPC_:: ; 2146f (8:546f) +BillsPC_:: ld hl, wd730 set 6, [hl] xor a @@ -108,7 +108,7 @@ BillsPC_:: ; 2146f (8:546f) ld hl, SwitchOnText call PrintText -BillsPCMenu: ; 21495 (8:5495) +BillsPCMenu: ld a, [wParentMenuItem] ld [wCurrentMenuItem], a ld hl, vChars2 + $780 @@ -184,7 +184,7 @@ BillsPCMenu: ; 21495 (8:5495) cp $4 jp z, BillsPCPrintBox -ExitBillsPC: ; 2153e (8:553e) +ExitBillsPC: ld a, [wFlags_0xcd60] bit 3, a ; accessing Bill's PC through another PC? jr nz, .next @@ -203,11 +203,11 @@ ExitBillsPC: ; 2153e (8:553e) res 6, [hl] ret -BillsPCPrintBox: ; 21562 (8:5562) +BillsPCPrintBox: callab PrintPCBox jp BillsPCMenu -BillsPCDeposit: ; 2156d (8:556d) +BillsPCDeposit: ld a, [wPartyCount] dec a jr nz, .partyLargeEnough @@ -254,7 +254,7 @@ BillsPCDeposit: ; 2156d (8:556d) call WaitForSoundToFinish ld hl, wBoxNumString ld a, [wCurrentBoxNum] - and " " + and $7f cp 9 jr c, .singleDigitBoxNum sub 9 @@ -271,11 +271,11 @@ BillsPCDeposit: ; 2156d (8:556d) call PrintText jp BillsPCMenu -SleepingPikachuText2: ; 2160e (8:560e) +SleepingPikachuText2: TX_FAR _SleepingPikachuText2 db "@" -BillsPCWithdraw: ; 21613 (8:5613) +BillsPCWithdraw: ld a, [wNumInBox] and a jr nz, .boxNotEmpty @@ -318,7 +318,7 @@ BillsPCWithdraw: ; 21613 (8:5613) call PrintText jp BillsPCMenu -BillsPCRelease: ; 21690 (8:5690) +BillsPCRelease: ld a, [wNumInBox] and a jr nz, .loop @@ -357,11 +357,11 @@ BillsPCRelease: ; 21690 (8:5690) call PrintText jp BillsPCMenu -BillsPCChangeBox: ; 216e7 (8:56e7) +BillsPCChangeBox: callba ChangeBox jp BillsPCMenu -DisplayMonListMenu: ; 216f2 (8:56f2) +DisplayMonListMenu: ld a, l ld [wListPointer], a ld a, h @@ -378,7 +378,7 @@ DisplayMonListMenu: ; 216f2 (8:56f2) ld [wPartyAndBillsPCSavedMenuItem], a ret -BillsPCMenuText: ; 21715 (8:5715) +BillsPCMenuText: db "WITHDRAW ", $4a next "DEPOSIT ", $4a next "RELEASE ", $4a @@ -387,10 +387,10 @@ BillsPCMenuText: ; 21715 (8:5715) next "SEE YA!" db "@" -BoxNoPCText: ; 21751 (8:5751) +BoxNoPCText: db "BOX No.@" -KnowsHMMove:: ; 21759 (8:5759) +KnowsHMMove:: ; returns whether mon with party index [wWhichPokemon] knows an HM move ld hl, wPartyMon1Moves ld bc, wPartyMon2 - wPartyMon1 @@ -417,15 +417,15 @@ KnowsHMMove:: ; 21759 (8:5759) and a ret -HMMoveArray: ; 21783 (8:5783) +HMMoveArray: db CUT db FLY db SURF db STRENGTH db FLASH - db $ff + db -1 -DisplayDepositWithdrawMenu: ; 21789 (8:5789) +DisplayDepositWithdrawMenu: coord hl, 9, 10 lb bc, 6, 9 call TextBoxBorder @@ -497,59 +497,59 @@ StatsCancelPCText: db "STATS" next "CANCEL@" -SwitchOnText: ; 21826 (8:5826) +SwitchOnText: TX_FAR _SwitchOnText db "@" -WhatText: ; 2182b (8:582b) +WhatText: TX_FAR _WhatText db "@" -DepositWhichMonText: ; 21830 (8:5830) +DepositWhichMonText: TX_FAR _DepositWhichMonText db "@" -MonWasStoredText: ; 21835 (8:5835) +MonWasStoredText: TX_FAR _MonWasStoredText db "@" -CantDepositLastMonText: ; 2183a (8:583a) +CantDepositLastMonText: TX_FAR _CantDepositLastMonText db "@" -BoxFullText: ; 2183f (8:583f) +BoxFullText: TX_FAR _BoxFullText db "@" -MonIsTakenOutText: ; 21844 (8:5844) +MonIsTakenOutText: TX_FAR _MonIsTakenOutText db "@" -NoMonText: ; 21849 (8:5849) +NoMonText: TX_FAR _NoMonText db "@" -CantTakeMonText: ; 2184e (8:584e) +CantTakeMonText: TX_FAR _CantTakeMonText db "@" -PikachuUnhappyText: ; 21853 (8:5853) +PikachuUnhappyText: TX_FAR _PikachuUnhappyText db "@" -ReleaseWhichMonText: ; 21858 (8:5858) +ReleaseWhichMonText: TX_FAR _ReleaseWhichMonText db "@" -OnceReleasedText: ; 2185d (8:585d) +OnceReleasedText: TX_FAR _OnceReleasedText db "@" -MonWasReleasedText: ; 21862 (8:5862) +MonWasReleasedText: TX_FAR _MonWasReleasedText db "@" -CableClubLeftGameboy:: ; 21867 (8:5867) +CableClubLeftGameboy:: ld a, [hSerialConnectionStatus] cp USING_EXTERNAL_CLOCK ret z @@ -566,7 +566,7 @@ CableClubLeftGameboy:: ; 21867 (8:5867) call EnableAutoTextBoxDrawing tx_pre_jump JustAMomentText -CableClubRightGameboy:: ; 21887 (8:5887) +CableClubRightGameboy:: ld a, [hSerialConnectionStatus] cp USING_INTERNAL_CLOCK ret z @@ -583,7 +583,7 @@ CableClubRightGameboy:: ; 21887 (8:5887) call EnableAutoTextBoxDrawing tx_pre_jump JustAMomentText -JustAMomentText:: ; 218a7 (8:58a7) +JustAMomentText:: TX_FAR _JustAMomentText db "@" @@ -593,5 +593,6 @@ JustAMomentText:: ; 218a7 (8:58a7) call EnableAutoTextBoxDrawing tx_pre_jump OpenBillsPCText -OpenBillsPCText:: ; 218ba (8:58ba) - db $FD ; FuncTX_BillsPC
\ No newline at end of file +OpenBillsPCText:: + db $FD ; FuncTX_BillsPC + diff --git a/engine/menu/diploma_1.asm b/engine/menu/diploma_1.asm index db156115..3f309bd2 100644 --- a/engine/menu/diploma_1.asm +++ b/engine/menu/diploma_1.asm @@ -1,4 +1,4 @@ -DisplayDiploma: ; 56714 (15:6714) +DisplayDiploma: call SaveScreenTilesToBuffer2 call GBPalWhiteOutWithDelay3 call ClearScreen @@ -14,4 +14,4 @@ DisplayDiploma: ; 56714 (15:6714) call ReloadTilesetTilePatterns call RestoreScreenTilesAndReloadTilePatterns call Delay3 - jp GBPalNormal
\ No newline at end of file + jp GBPalNormal diff --git a/engine/menu/league_pc.asm b/engine/menu/league_pc.asm index 21ee30b0..9946b90d 100755 --- a/engine/menu/league_pc.asm +++ b/engine/menu/league_pc.asm @@ -1,4 +1,4 @@ -PKMNLeaguePC: ; 75dfe (1d:5dfe) +PKMNLeaguePC: ld hl, AccessedHoFPCText call PrintText ld hl, wd730 @@ -50,7 +50,7 @@ PKMNLeaguePC: ; 75dfe (1d:5dfe) call RunDefaultPaletteCommand jp GBPalNormal -LeaguePCShowTeam: ; 75e65 (1d:5e65) +LeaguePCShowTeam: ld c, PARTY_LENGTH .loop push bc @@ -77,7 +77,7 @@ LeaguePCShowTeam: ; 75e65 (1d:5e65) scf ret -LeaguePCShowMon: ; 75e90 (1d:5e90) +LeaguePCShowMon: call GBPalWhiteOutWithDelay3 call ClearScreen ld hl, wHallOfFame @@ -111,9 +111,9 @@ LeaguePCShowMon: ; 75e90 (1d:5e90) call PrintNumber jpba Func_7033f -HallOfFameNoText: ; 75eef (1d:5eef) +HallOfFameNoText: db "HALL OF FAME No @" -AccessedHoFPCText: ; 75f02 (1d:5f02) +AccessedHoFPCText: TX_FAR _AccessedHoFPCText db "@" diff --git a/engine/menu/link_menu.asm b/engine/menu/link_menu.asm index 4d0beb7e..458f653b 100644 --- a/engine/menu/link_menu.asm +++ b/engine/menu/link_menu.asm @@ -1,4 +1,4 @@ -Func_f531b:: ; f531b (3d:531b) +Func_f531b:: ld c,$14 call DelayFrames ld a,$1 @@ -176,25 +176,25 @@ Func_f531b:: ; f531b (3d:531b) and a ret -Func_f5476:: ; f5476 (3d:5476) +Func_f5476:: ld hl,ColosseumIneligibleText call PrintText -asm_f547c:: ; f547c (3d:574c) +asm_f547c:: jp Func_f531b -asm_f547f:: ; f547f (3d:547f) +asm_f547f:: xor a ld [wUnknownSerialCounter],a ld [wUnknownSerialCounter+1],a scf ret -PointerTable_f5488:: ; f5488 (3d:5488) +PointerTable_f5488:: dw PokeCup dw PikaCup dw PetitCup -PokeCup:: ; f548e (3d:548e) +PokeCup:: ld hl,wPartyCount ld a,[hli] cp $3 @@ -240,7 +240,7 @@ PokeCup:: ; f548e (3d:548e) xor a ret -PikaCup:: ; f54e4 (3d:54e4) +PikaCup:: ld hl,wPartyCount ld a,[hli] cp $3 @@ -286,7 +286,7 @@ PikaCup:: ; f54e4 (3d:54e4) xor a ret -PetitCup:: ; f553a (3d:553a) +PetitCup:: ld hl,wPartyCount ld a,[hli] cp $3 @@ -407,79 +407,79 @@ PetitCup:: ; f553a (3d:553a) xor a ret -NotThreeMonsInParty:: ; f561d (3d:516d) +NotThreeMonsInParty:: ld hl,Colosseum3MonsText call PrintText ld a,$1 ret -MewInParty:: ; f5626 (3d:f5626) +MewInParty:: ld hl,ColosseumMewText call PrintText ld a,$2 ret -DuplicateSpecies:: ; f562f (3d:f562f) +DuplicateSpecies:: ld hl,ColosseumDifferentMonsText call PrintText ld a,$3 ret -LevelAbove55:: ; f5638 (3d:5638) +LevelAbove55:: ld hl,ColosseumMaxL55Text call PrintText ld a,$4 ret -LevelUnder50:: ; f5641 (3d:5641) +LevelUnder50:: ld hl,ColosseumMinL50Text call PrintText ld a,$5 ret -CombinedLevelsGreaterThan155:: ; f5641 (3d:564a) +CombinedLevelsGreaterThan155:: ld hl,ColosseumTotalL155Text call PrintText ld a,$6 ret -LevelAbove30:: ; f5653 (3d:5653) +LevelAbove30:: ld hl,ColosseumMaxL30Text call PrintText ld a,$7 ret -LevelUnder25:: ; f565c (3d:565c) +LevelUnder25:: ld hl,ColosseumMinL25Text call PrintText ld a,$8 ret -CombinedLevelsAbove80:: ; f5665 (3d:5665) +CombinedLevelsAbove80:: ld hl,ColosseumTotalL80Text call PrintText ld a,$9 ret -LevelAbove20:: ; f566e (3d:566e) +LevelAbove20:: ld hl,ColosseumMaxL20Text call PrintText ld a,$a ret -LevelUnder15:: ; f5677 (3d:5677) +LevelUnder15:: ld hl,ColosseumMinL15Text call PrintText ld a,$b ret -CombinedLevelsAbove50:: ; f5680 (3d:5680) +CombinedLevelsAbove50:: ld hl,ColosseumTotalL50Text call PrintText ld a,$c ret -asm_f5689:: ; f5689 (3d:5689) +asm_f5689:: pop af pop bc pop hl @@ -490,7 +490,7 @@ asm_f5689:: ; f5689 (3d:5689) ld a,$d ret -asm_f569b:: ; f569b (3d:569b) +asm_f569b:: pop af pop bc pop hl @@ -501,7 +501,7 @@ asm_f569b:: ; f569b (3d:569b) ld a,$e ret -asm_f56ad:: ; f56ad (3d:56ad) +asm_f56ad:: ld a,[hl] ld [wd11e],a call GetMonName @@ -510,7 +510,7 @@ asm_f56ad:: ; f56ad (3d:56ad) ld a,$f ret -Func_f56bd:: ; f56bd (3d:56bd) +Func_f56bd:: xor a ld [H_AUTOBGTRANSFERENABLED],a coord hl, 1,11 @@ -538,101 +538,101 @@ Func_f56bd:: ; f56bd (3d:56bd) ld [H_AUTOBGTRANSFERENABLED],a ret -PointerTable_f56ee:: ; f56ee (3d:56ee) +PointerTable_f56ee:: dw Text_f56f4 dw Text_f5728 dw Text_f575b -Text_f56f4:: ; f56f4 (3d:56f4) +Text_f56f4:: db "LVs of 3<pkmn>:50-55" next "Sum of LVs:155 MAX" next "MEW can't attend.@" -Text_f5728:: ; f5728 (3d:5728) +Text_f5728:: db "LVs of 3<pkmn>:15-20" next "Sum of LVs:50 MAX" next "MEW can't attend.@" -Text_f575b:: ; f575b (3d:575b) +Text_f575b:: db "3 Basic <pkmn>.LV25-30" next "Sum of LVs:80 MAX" next "6′8″ and 44lb MAX@" -Text_f5791:: ; f5791 (3d:5791) +Text_f5791:: db "View" next "Rules@" -Text_f579c:: ; f579c (3d:579c) +Text_f579c:: db "# Cup" next "Pika Cup" next "Petit Cup" next "CANCEL@" -Colosseum3MonsText:: ; f57bc (3d:57bc) +Colosseum3MonsText:: TX_FAR _Colosseum3MonsText ; a0a2b db "@" -ColosseumMewText:: ; f57c1 (3d:57c1) +ColosseumMewText:: TX_FAR _ColosseumMewText ; a0a46 db "@" -ColosseumDifferentMonsText:: ; f57c6 (3d:57c6) +ColosseumDifferentMonsText:: TX_FAR _ColosseumDifferentMonsText ; a0a5f db "@" -ColosseumMaxL55Text:: ; f57cb (3d:57cb) +ColosseumMaxL55Text:: TX_FAR _ColosseumMaxL55Text ; a0a81 db "@" -ColosseumMinL50Text:: ; f57d0 (3d:57d0) +ColosseumMinL50Text:: TX_FAR _ColosseumMinL50Text ; a0a9a db "@" -ColosseumTotalL155Text:: ; f57d5 (3d:57d5) +ColosseumTotalL155Text:: TX_FAR _ColosseumTotalL155Text ; a0aba db "@" -ColosseumMaxL30Text:: ; f57da (3d:57da) +ColosseumMaxL30Text:: TX_FAR _ColosseumMaxL30Text ; a0ad9 db "@" -ColosseumMinL25Text:: ; f57df (3d:57df) +ColosseumMinL25Text:: TX_FAR _ColosseumMinL25Text ; a0af2 db "@" -ColosseumTotalL80Text:: ; f57e4 (3d:57e4) +ColosseumTotalL80Text:: TX_FAR _ColosseumTotalL80Text ; a0b12 db "@" -ColosseumMaxL20Text:: ; f57e9 (3d:57e9) +ColosseumMaxL20Text:: TX_FAR _ColosseumMaxL20Text ; a0b30 db "@" -ColosseumMinL15Text:: ; f57ee (3d:57ee) +ColosseumMinL15Text:: TX_FAR _ColosseumMinL15Text ; a0b49 db "@" -ColosseumTotalL50Text:: ; f57f3 (3d:57f3) +ColosseumTotalL50Text:: TX_FAR _ColosseumTotalL50Text ; a0b69 db "@" -ColosseumHeightText:: ; f57f8 (3d:57f8) +ColosseumHeightText:: TX_FAR _ColosseumHeightText ; a0b87 db "@" -ColosseumWeightText:: ; f57fd (3d:57fd) +ColosseumWeightText:: TX_FAR _ColosseumWeightText ; a0b9f db "@" -ColosseumEvolvedText:: ; f5802 (3d:5802) +ColosseumEvolvedText:: TX_FAR _ColosseumEvolvedText ; a0bbb db "@" -ColosseumIneligibleText:: ; f5807 (3d:5807) +ColosseumIneligibleText:: TX_FAR _ColosseumIneligibleText ; a0bd4 db "@" -LinkMenu: ; f580c (3d:580c) +LinkMenu: xor a ld [wLetterPrintingDelayFlags], a ld hl, wd72e @@ -871,7 +871,7 @@ LinkMenu: ; f580c (3d:580c) ld a,$f0 jp .next -Func_f59ec:: ; f59ec (3d:59ec) +Func_f59ec:: ld a, b Coorda 6, 5 ld a, c @@ -884,27 +884,27 @@ Func_f59ec:: ; f59ec (3d:59ec) call DelayFrames ret -ColosseumWhereToText: ; f5a02 (3d:5a02) +ColosseumWhereToText: TX_FAR _ColosseumWhereToText db "@" -ColosseumPleaseWaitText: ; f5a07 (3d:5a07) +ColosseumPleaseWaitText: TX_FAR _ColosseumPleaseWaitText db "@" -ColosseumCanceledText: ; f5a0c (3d:5a0c) +ColosseumCanceledText: TX_FAR _ColosseumCanceledText db "@" -ColosseumVersionText: ; f5a11 (3d:5a11) +ColosseumVersionText: TX_FAR _ColosseumVersionText ; 28:4c47 db "@" -TextTerminator_f5a16: ; f5a16 (3d:5a16) +TextTerminator_f5a16: db "@" -TradeCenterText: ; f5a17 (3d:5a17) +TradeCenterText: db "TRADE CENTER" next "COLOSSEUM" next "COLOSSEUM2" - next "CANCEL@"
\ No newline at end of file + next "CANCEL@" diff --git a/engine/menu/main_menu.asm b/engine/menu/main_menu.asm index 669b2ba8..cf837a54 100755 --- a/engine/menu/main_menu.asm +++ b/engine/menu/main_menu.asm @@ -1,4 +1,4 @@ -MainMenu: ; 5ba6 (1:5ba6) +MainMenu: ; Check save file call InitOptions xor a @@ -122,7 +122,7 @@ MainMenu: ; 5ba6 (1:5ba6) call SpecialWarpIn jp SpecialEnterMap -InitOptions: ; 5bff (1:5bff) +InitOptions: ld a,1 ; no delay ld [wLetterPrintingDelayFlags],a ld a,3 ; medium speed @@ -131,7 +131,7 @@ InitOptions: ; 5bff (1:5bff) ld [wPrinterSettings], a ret -Func_5cc1: ; 5cc1 (1:5cc1) +Func_5cc1: ; unused? ld a, $6d cp $80 @@ -140,11 +140,11 @@ Func_5cc1: ; 5cc1 (1:5cc1) call PrintText ret -NotEnoughMemoryText: ; 5ccd (1:5ccd) +NotEnoughMemoryText: TX_FAR _NotEnoughMemoryText db "@" -StartNewGame: ; 5cd2 (1:5cd2) +StartNewGame: ld hl, wd732 res 1, [hl] call OakSpeech @@ -154,7 +154,7 @@ StartNewGame: ; 5cd2 (1:5cd2) call DelayFrames ; enter map after using a special warp or loading the game from the main menu -SpecialEnterMap: ; 5ce4 (1:5ce4) +SpecialEnterMap: xor a ld [hJoyPressed], a ld [hJoyHeld], a @@ -171,14 +171,14 @@ SpecialEnterMap: ; 5ce4 (1:5ce4) ret nz jp EnterMap -ContinueText: ; 5d06 (1:5d06) +ContinueText: db "CONTINUE", $4e -NewGameText: ; 5d0f (1:5d0f) +NewGameText: db "NEW GAME", $4e db "OPTION@" -DisplayContinueGameInfo: ; 5d1f (1:5d1f) +DisplayContinueGameInfo: xor a ld [H_AUTOBGTRANSFERENABLED], a coord hl, 4, 7 @@ -201,7 +201,7 @@ DisplayContinueGameInfo: ; 5d1f (1:5d1f) ld c, 30 jp DelayFrames -PrintSaveScreenText: ; 5d58 (1:5d58) +PrintSaveScreenText: xor a ld [H_AUTOBGTRANSFERENABLED], a coord hl, 4, 0 @@ -226,7 +226,7 @@ PrintSaveScreenText: ; 5d58 (1:5d58) ld c, 30 jp DelayFrames -PrintNumBadges: ; 5d97 (1:5d97) +PrintNumBadges: push hl ld hl, wObtainedBadges ld b, $1 @@ -236,7 +236,7 @@ PrintNumBadges: ; 5d97 (1:5d97) lb bc, 1, 2 jp PrintNumber -PrintNumOwnedMons: ; 5daa (1:5daa) +PrintNumOwnedMons: push hl ld hl, wPokedexOwned ld b, wPokedexOwnedEnd - wPokedexOwned @@ -246,7 +246,7 @@ PrintNumOwnedMons: ; 5daa (1:5daa) lb bc, 1, 3 jp PrintNumber -PrintPlayTime: ; 5dbd (1:5dbd) +PrintPlayTime: ld de, wPlayTimeHours lb bc, 1, 3 call PrintNumber @@ -256,17 +256,17 @@ PrintPlayTime: ; 5dbd (1:5dbd) lb bc, LEADING_ZEROES | 1, 2 jp PrintNumber -SaveScreenInfoText: ; 5dd2 (1:5dd2) +SaveScreenInfoText: db "PLAYER" next "BADGES " next "#DEX " next "TIME@" -DisplayOptionMenu: ; 5df2 (1:5df2) +DisplayOptionMenu: callab DisplayOptionMenu_ ; 10:5c70 ret -CheckForPlayerNameInSRAM: ; 5dfb (1:5dfb) +CheckForPlayerNameInSRAM: ; Check if the player name data in SRAM has a string terminator character ; (indicating that a name may have been saved there) and return whether it does ; in carry. @@ -294,4 +294,4 @@ CheckForPlayerNameInSRAM: ; 5dfb (1:5dfb) ld [MBC1SRamEnable], a ld [MBC1SRamBankingMode], a scf - ret
\ No newline at end of file + ret diff --git a/engine/menu/naming_screen.asm b/engine/menu/naming_screen.asm index 0eacc8f6..911c4e99 100755 --- a/engine/menu/naming_screen.asm +++ b/engine/menu/naming_screen.asm @@ -1,4 +1,4 @@ -AskName: ; 625d (1:625d) +AskName: call SaveScreenTilesToBuffer1 call GetPredefRegisters push hl @@ -48,11 +48,11 @@ AskName: ; 625d (1:625d) ld bc, NAME_LENGTH jp CopyData -DoYouWantToNicknameText: ; 62c8 (1:62c8) +DoYouWantToNicknameText: TX_FAR _DoYouWantToNicknameText db "@" -DisplayNameRaterScreen: ; 62cd (1:62cd) +DisplayNameRaterScreen: ld hl, wBuffer xor a ld [wUpdateSpritesEnabled], a @@ -80,7 +80,7 @@ DisplayNameRaterScreen: ; 62cd (1:62cd) scf ret -DisplayNamingScreen: ; 6307 (1:6307) +DisplayNamingScreen: push hl ld hl, wd730 set 6, [hl] @@ -321,7 +321,7 @@ DisplayNamingScreen: ; 6307 (1:6307) ld [wTopMenuItemX], a jp EraseMenuCursor -LoadEDTile: ; 675b (1:675b) +LoadEDTile: ; In Red/Blue, the bank for the ED_tile was defined incorrectly as bank0 ; Luckily, the MBC3 treats loading $0 into $2000-$2fff range as loading bank1 into $4000-$7fff range ; Because Yellow uses the MBC5, loading $0 into $2000 - $2fff range will load bank0 instead of bank1 and thus incorrectly load the tile @@ -345,11 +345,11 @@ LoadEDTile: ; 675b (1:675b) jr nz, .waitForHBlankLoop ret -ED_Tile: ; 64e5 (1:64e5) +ED_Tile: INCBIN "gfx/ED_tile.1bpp" ED_TileEnd: -PrintAlphabet: ; 676f (1:676f) +PrintAlphabet: xor a ld [H_AUTOBGTRANSFERENABLED], a ld a, [wAlphabetCase] @@ -379,13 +379,13 @@ PrintAlphabet: ; 676f (1:676f) ld [H_AUTOBGTRANSFERENABLED], a jp Delay3 -LowerCaseAlphabet: ; 651c (1:651c) +LowerCaseAlphabet: db "abcdefghijklmnopqrstuvwxyz ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥UPPER CASE@" -UpperCaseAlphabet: ; 6554 (1:6554) +UpperCaseAlphabet: db "ABCDEFGHIJKLMNOPQRSTUVWXYZ ×():;[]",$e1,$e2,"-?!♂♀/",$f2,",¥lower case@" -PrintNicknameAndUnderscores: ; 658c (1:658c) +PrintNicknameAndUnderscores: call CalcStringLength ld a, c ld [wNamingScreenNameLength], a @@ -439,7 +439,7 @@ PrintNicknameAndUnderscores: ; 658c (1:658c) ld [hl], $77 ; raised underscore tile id ret -DakutensAndHandakutens: ; 65ef (1:65ef) +DakutensAndHandakutens: push de call CalcStringLength dec hl @@ -453,7 +453,7 @@ DakutensAndHandakutens: ; 65ef (1:65ef) ld [wNamingScreenLetter], a ret -Dakutens: ; 6603 (1:6603) +Dakutens: db "かが", "きぎ", "くぐ", "けげ", "こご" db "さざ", "しじ", "すず", "せぜ", "そぞ" db "ただ", "ちぢ", "つづ", "てで", "とど" @@ -464,13 +464,13 @@ Dakutens: ; 6603 (1:6603) db "ハバ", "ヒビ", "フブ", "へべ", "ホボ" db $ff -Handakutens: ; 6654 (1:6654) +Handakutens: db "はぱ", "ひぴ", "ふぷ", "へぺ", "ほぽ" db "ハパ", "ヒピ", "フプ", "へぺ", "ホポ" db $ff ; calculates the length of the string at wcf4b and stores it in c -CalcStringLength: ; 6669 (1:6669) +CalcStringLength: ld hl, wcf4b ld c, $0 .loop @@ -481,7 +481,7 @@ CalcStringLength: ; 6669 (1:6669) inc c jr .loop -PrintNamingText: ; 6676 (1:6676) +PrintNamingText: coord hl, 0, 1 ld a, [wNamingScreenType] ld de, YourTextString @@ -513,14 +513,14 @@ PrintNamingText: ; 6676 (1:6676) .placeString jp PlaceString -YourTextString: ; 66bd (1:66bd) +YourTextString: db "YOUR @" -RivalsTextString: ; 66c3 (1:66c3) +RivalsTextString: db "RIVAL's @" -NameTextString: ; 66cb (1:66cb) +NameTextString: db "NAME?@" -NicknameTextString: ; 66d1 (1:66d1) +NicknameTextString: db "NICKNAME?@" diff --git a/engine/menu/oaks_pc.asm b/engine/menu/oaks_pc.asm index ce989bf1..e4172ec7 100755 --- a/engine/menu/oaks_pc.asm +++ b/engine/menu/oaks_pc.asm @@ -1,4 +1,4 @@ -OpenOaksPC: ; 1e2ae (7:62ae) +OpenOaksPC: call SaveScreenTilesToBuffer2 ld hl, AccessedOaksPCText call PrintText @@ -14,14 +14,14 @@ OpenOaksPC: ; 1e2ae (7:62ae) call PrintText jp LoadScreenTilesFromBuffer2 -GetDexRatedText: ; 1e2d4 (7:62d4) +GetDexRatedText: TX_FAR _GetDexRatedText db "@" -ClosedOaksPCText: ; 1e2d9 (7:62d9) +ClosedOaksPCText: TX_FAR _ClosedOaksPCText db $0d,"@" -AccessedOaksPCText: ; 1e2df (7:62df) +AccessedOaksPCText: TX_FAR _AccessedOaksPCText db "@" diff --git a/engine/menu/options.asm b/engine/menu/options.asm index 86a55bd2..7bed30ae 100644 --- a/engine/menu/options.asm +++ b/engine/menu/options.asm @@ -1,4 +1,4 @@ -DisplayOptionMenu_: ; 41c70 (10:5c70) +DisplayOptionMenu_: call Func_41f06 .optionMenuLoop call JoypadLowSensitivity @@ -18,7 +18,7 @@ DisplayOptionMenu_: ; 41c70 (10:5c70) .exitOptionMenu ret -Func_41c95: ; 41c95 (10:5c95) +Func_41c95: ld a, [wOptionsCursorLocation] ld e, a ld d, $0 @@ -30,7 +30,7 @@ Func_41c95: ; 41c95 (10:5c95) ld l, a jp hl -OptionMenuJumpTable: ; 41ca4 (10:5ca4) +OptionMenuJumpTable: dw OptionsMenu_TextSpeed dw OptionsMenu_BattleAnimations dw OptionsMenu_BattleStyle @@ -40,7 +40,7 @@ OptionMenuJumpTable: ; 41ca4 (10:5ca4) dw OptionsMenu_Dummy dw OptionsMenu_Cancel -OptionsMenu_TextSpeed: ; 41cb4 (10:5cb4) +OptionsMenu_TextSpeed: call Func_41d07 ld a, [hJoy5] bit 4, a ; right @@ -84,19 +84,19 @@ OptionsMenu_TextSpeed: ; 41cb4 (10:5cb4) and a ret -TextSpeedStringsPointerTable: ; 41cf2 (10:5cf2) +TextSpeedStringsPointerTable: dw FastText dw MidText dw SlowText -FastText: ; 41cf9 (10:5cf9) +FastText: db "FAST@" -MidText: ; 41cfd (10:5cfd) +MidText: db "MID @" -SlowText: ; 41d02 (10:5d02) +SlowText: db "SLOW@" -Func_41d07: ; 41d07 (10:5d07) +Func_41d07: ld a, [wOptions] and $f cp $5 @@ -116,7 +116,7 @@ Func_41d07: ; 41d07 (10:5d07) lb de, 5, 3 ret -OptionsMenu_BattleAnimations: ; 41d26 (10:5d26) +OptionsMenu_BattleAnimations: ld a, [hJoy5] and D_RIGHT | D_LEFT jr nz, .asm_41d33 @@ -142,16 +142,16 @@ OptionsMenu_BattleAnimations: ; 41d26 (10:5d26) and a ret -AnimationOptionStringsPointerTable: ; 41d52 (10:5d52) +AnimationOptionStringsPointerTable: dw AnimationOnText dw AnimationOffText -AnimationOnText: ; 41d56 (10:5d56) +AnimationOnText: db "ON @" -AnimationOffText: ; 41d5a (10:5d5a) +AnimationOffText: db "OFF@" -OptionsMenu_BattleStyle: ; 41d5e (10:5d5e) +OptionsMenu_BattleStyle: ld a, [hJoy5] and D_LEFT | D_RIGHT jr nz, .asm_41d6b @@ -178,16 +178,16 @@ OptionsMenu_BattleStyle: ; 41d5e (10:5d5e) and a ret -BattleStyleOptionStringsPointerTable: ; 41d8c (10:5d8c) +BattleStyleOptionStringsPointerTable: dw BattleStyleShiftText dw BattleStyleSetText -BattleStyleShiftText: ; 41d90 (10:5d90) +BattleStyleShiftText: db "SHIFT@" -BattleStyleSetText: ; 41d96 (10:5d96) +BattleStyleSetText: db "SET @" -OptionsMenu_SpeakerSettings: ; 41d9c (10:5d9c) +OptionsMenu_SpeakerSettings: ld a, [wOptions] and $30 swap a @@ -230,22 +230,22 @@ OptionsMenu_SpeakerSettings: ; 41d9c (10:5d9c) and a ret -SpeakerOptionStringsPointerTable: ; 41ddc (10:5ddc) +SpeakerOptionStringsPointerTable: dw MonoSoundText dw Earphone1SoundText dw Earphone2SoundText dw Earphone3SoundText -MonoSoundText: ; 41de4 (10:5de4) +MonoSoundText: db "MONO @" -Earphone1SoundText: ; 41dee (10:5dee) +Earphone1SoundText: db "EARPHONE1@" -Earphone2SoundText: ; 41df8 (10:5df8) +Earphone2SoundText: db "EARPHONE2@" -Earphone3SoundText: ; 41e02 (10:5e02) +Earphone3SoundText: db "EARPHONE3@" -OptionsMenu_GBPrinterBrightness: ; 41e0c (10:5e0c) +OptionsMenu_GBPrinterBrightness: call Func_41e7b ld a, [hJoy5] bit 4, a @@ -286,25 +286,25 @@ OptionsMenu_GBPrinterBrightness: ; 41e0c (10:5e0c) and a ret -GBPrinterOptionStringsPointerTable: ; 41e44 (10:5e44) +GBPrinterOptionStringsPointerTable: dw LightestPrintText dw LighterPrintText dw NormalPrintText dw DarkerPrintText dw DarkestPrintText -LightestPrintText: ; 41e4e (10:5e4e) +LightestPrintText: db "LIGHTEST@" -LighterPrintText: ; 41e57 (10:5e57) +LighterPrintText: db "LIGHTER @" -NormalPrintText: ; 41e60 (10:5e60) +NormalPrintText: db "NORMAL @" -DarkerPrintText: ; 41e69 (10:5e69) +DarkerPrintText: db "DARKER @" -DarkestPrintText: ; 41e72 (10:5e72) +DarkestPrintText: db "DARKEST @" -Func_41e7b: ; 41e7b (10:5e7b) +Func_41e7b: ld a, [wPrinterSettings] and a jr z, .asm_41e93 @@ -334,11 +334,11 @@ Func_41e7b: ; 41e7b (10:5e7b) lb de, $60, $0 ret -OptionsMenu_Dummy: ; 41eab (10:5eab) +OptionsMenu_Dummy: and a ret -OptionsMenu_Cancel: ; 41ead (10:5ead) +OptionsMenu_Cancel: ld a, [hJoy5] and A_BUTTON jr nz, .pressedCancel @@ -348,7 +348,7 @@ OptionsMenu_Cancel: ; 41ead (10:5ead) scf ret -Func_41eb7: ; 41eb7 (10:5eb7) +Func_41eb7: ld hl, wOptionsCursorLocation ld a, [hJoy5] cp D_DOWN @@ -388,7 +388,7 @@ Func_41eb7: ; 41eb7 (10:5eb7) scf ret -Func_41ee9: ; 41ee9 (10:5ee9) +Func_41ee9: coord hl, 1, 1 ld de, SCREEN_WIDTH ld c, 16 @@ -404,7 +404,7 @@ Func_41ee9: ; 41ee9 (10:5ee9) ld [hl], "▶" ret -Func_41f06: ; 41f06 (10:5f06) +Func_41f06: coord hl, 0, 0 lb bc, SCREEN_HEIGHT - 2, SCREEN_WIDTH - 2 call TextBoxBorder @@ -432,12 +432,12 @@ Func_41f06: ; 41f06 (10:5f06) call Delay3 ret -AllOptionsText: ; 41f3e (10:5f3e) +AllOptionsText: db "TEXT SPEED :" next "ANIMATION :" next "BATTLESTYLE:" next "SOUND:" next "PRINT:@" -OptionMenuCancelText: ; 41f73 (10:5f73) - db "CANCEL@"
\ No newline at end of file +OptionMenuCancelText: + db "CANCEL@" diff --git a/engine/menu/party_menu.asm b/engine/menu/party_menu.asm index 16bea473..669d49db 100755 --- a/engine/menu/party_menu.asm +++ b/engine/menu/party_menu.asm @@ -17,14 +17,14 @@ ; f6: health returned ; f7: revitalized ; f8: leveled up -DrawPartyMenu_: ; 11875 (4:5875) +DrawPartyMenu_: xor a ld [H_AUTOBGTRANSFERENABLED],a call ClearScreen call UpdateSprites callba LoadMonPartySpriteGfxWithLCDDisabled ; load pokemon icon graphics -RedrawPartyMenu_: ; 11886 (4:5886) +RedrawPartyMenu_: ld a,[wPartyMenuTypeOrMessageID] cp a,SWAP_MONS_PARTY_MENU jp z,.printMessage @@ -242,7 +242,7 @@ RedrawPartyMenu_: ; 11886 (4:5886) call PrintText jr .done -PartyMenuItemUseMessagePointers: ; 11a1a (4:5a1a) +PartyMenuItemUseMessagePointers: dw AntidoteText dw BurnHealText dw IceHealText @@ -253,7 +253,7 @@ PartyMenuItemUseMessagePointers: ; 11a1a (4:5a1a) dw ReviveText dw RareCandyText -PartyMenuMessagePointers: ; 11a2c (4:5a2c) +PartyMenuMessagePointers: dw PartyMenuNormalText dw PartyMenuItemUseText dw PartyMenuBattleText @@ -261,65 +261,65 @@ PartyMenuMessagePointers: ; 11a2c (4:5a2c) dw PartyMenuSwapMonText dw PartyMenuItemUseText -PartyMenuNormalText: ; 11a38 (4:5a38) +PartyMenuNormalText: TX_FAR _PartyMenuNormalText db "@" -PartyMenuItemUseText: ; 11a3d (4:5a3d) +PartyMenuItemUseText: TX_FAR _PartyMenuItemUseText db "@" -PartyMenuBattleText: ; 11a42 (4:5a42) +PartyMenuBattleText: TX_FAR _PartyMenuBattleText db "@" -PartyMenuUseTMText: ; 11a47 (4:5a47) +PartyMenuUseTMText: TX_FAR _PartyMenuUseTMText db "@" -PartyMenuSwapMonText: ; 11a4c (4:5a4c) +PartyMenuSwapMonText: TX_FAR _PartyMenuSwapMonText db "@" -PotionText: ; 11a51 (4:5a51) +PotionText: TX_FAR _PotionText db "@" -AntidoteText: ; 11a56 (4:5a56) +AntidoteText: TX_FAR _AntidoteText db "@" -ParlyzHealText: ; 11a5b (4:5a5b) +ParlyzHealText: TX_FAR _ParlyzHealText db "@" -BurnHealText: ; 11a60 (4:5a60) +BurnHealText: TX_FAR _BurnHealText db "@" -IceHealText: ; 11a65 (4:5a65) +IceHealText: TX_FAR _IceHealText db "@" -AwakeningText: ; 11a6a (4:5a6a) +AwakeningText: TX_FAR _AwakeningText db "@" -FullHealText: ; 11a6f (4:5a6f) +FullHealText: TX_FAR _FullHealText db "@" -ReviveText: ; 11a74 (4:5a74) +ReviveText: TX_FAR _ReviveText db "@" -RareCandyText: ; 11a79 (4:5a79) +RareCandyText: TX_FAR _RareCandyText db $0B db $06 db "@" -SetPartyMenuHPBarColor: ; 11a80 (4:5a80) +SetPartyMenuHPBarColor: ld hl, wPartyMenuHPBarColors ld a, [wWhichPartyMenuHPBar] ld c, a diff --git a/engine/menu/pc.asm b/engine/menu/pc.asm index 373ae580..c9e2cf08 100755 --- a/engine/menu/pc.asm +++ b/engine/menu/pc.asm @@ -1,4 +1,4 @@ -ActivatePC: ; 17cb0 (5:7cb0) +ActivatePC: call SaveScreenTilesToBuffer2 ld a, SFX_TURN_ON_PC call PlaySound @@ -9,7 +9,7 @@ ActivatePC: ; 17cb0 (5:7cb0) set 3, [hl] call LoadScreenTilesFromBuffer2 call Delay3 -PCMainMenu: ; 17ccc (5:7ccc) +PCMainMenu: callba DisplayPCMainMenu ld hl, wFlags_0xcd60 set 5, [hl] @@ -58,19 +58,19 @@ PCMainMenu: ; 17ccc (5:7ccc) call PrintText callba PlayerPC jr ReloadMainMenu -OaksPC: ; 17d44 (5:7d44) +OaksPC: ld a, SFX_ENTER_PC call PlaySound call WaitForSoundToFinish callba OpenOaksPC jr ReloadMainMenu -PKMNLeague: ; 17d56 (5:7d56) +PKMNLeague: ld a, SFX_ENTER_PC call PlaySound call WaitForSoundToFinish callba PKMNLeaguePC jr ReloadMainMenu -BillsPC: ; 17d68 (5:7d68) +BillsPC: ld a, SFX_ENTER_PC call PlaySound call WaitForSoundToFinish @@ -83,13 +83,13 @@ BillsPC: ; 17d68 (5:7d68) .printText call PrintText callba BillsPC_ -ReloadMainMenu: ; 17d8a (5:7d8a) +ReloadMainMenu: xor a ld [wDoNotWaitForButtonPressAfterDisplayingText], a call ReloadMapData call UpdateSprites jp PCMainMenu -LogOff: ; 17d97 (5:7d97) +LogOff: ld a, SFX_TURN_OFF_PC call PlaySound call WaitForSoundToFinish @@ -98,24 +98,24 @@ LogOff: ; 17d97 (5:7d97) res 5, [hl] ret -TurnedOnPC1Text: ; 17da7 (5:7da7) +TurnedOnPC1Text: TX_FAR _TurnedOnPC1Text db "@" -AccessedBillsPCText: ; 17dac (5:7dac) +AccessedBillsPCText: TX_FAR _AccessedBillsPCText db "@" -AccessedSomeonesPCText: ; 17db1 (5:7db1) +AccessedSomeonesPCText: TX_FAR _AccessedSomeonesPCText db "@" -AccessedMyPCText: ; 17db6 (5:7db6) +AccessedMyPCText: TX_FAR _AccessedMyPCText db "@" ; removes one of the specified item ID [hItemToRemoveID] from bag (if existent) -RemoveItemByID: ; 17dbb (5:7dbb) +RemoveItemByID: ld hl, wBagItems ld a, [hItemToRemoveID] ld b, a @@ -123,10 +123,10 @@ RemoveItemByID: ; 17dbb (5:7dbb) ld [hItemToRemoveIndex], a .loop ld a, [hli] - cp $ff ; have we reached the cancel button (terminator) + cp -1 ; reached terminator? ret z - cp b ; is the current item the item we want? - jr z, .foundItem ; if so, remove it from the inventory + cp b + jr z, .foundItem inc hl ld a, [hItemToRemoveIndex] inc a diff --git a/engine/menu/players_pc.asm b/engine/menu/players_pc.asm index 38cdf2f6..1cc02cbf 100755 --- a/engine/menu/players_pc.asm +++ b/engine/menu/players_pc.asm @@ -1,4 +1,4 @@ -PlayerPC: ; 778e (1:778e) +PlayerPC: ld a, ITEM_NAME ld [wNameListType], a call SaveScreenTilesToBuffer1 @@ -14,7 +14,7 @@ PlayerPC: ; 778e (1:778e) ld hl, TurnedOnPC2Text call PrintText -PlayerPCMenu: ; 790c (1:790c) +PlayerPCMenu: ld hl, wd730 set 6, [hl] ld a, [wParentMenuItem] @@ -61,7 +61,7 @@ PlayerPCMenu: ; 790c (1:790c) dec a jp z, PlayerPCToss -ExitPlayerPC: ; 7814 (1:7814) +ExitPlayerPC: ld a, [wFlags_0xcd60] bit 3, a ; accessing player's PC through another PC? jr nz, .next @@ -82,7 +82,7 @@ ExitPlayerPC: ; 7814 (1:7814) ld [wDoNotWaitForButtonPressAfterDisplayingText], a ret -PlayerPCDeposit: ; 783c (1:783c) +PlayerPCDeposit: xor a ld [wCurrentMenuItem], a ld [wListScrollOffset], a @@ -136,7 +136,7 @@ PlayerPCDeposit: ; 783c (1:783c) call PrintText jp .loop -PlayerPCWithdraw: ; 78b9 (1:78b9) +PlayerPCWithdraw: xor a ld [wCurrentMenuItem], a ld [wListScrollOffset], a @@ -190,7 +190,7 @@ PlayerPCWithdraw: ; 78b9 (1:78b9) call PrintText jp .loop -PlayerPCToss: ; 7936 (1:7936) +PlayerPCToss: xor a ld [wCurrentMenuItem], a ld [wListScrollOffset], a @@ -239,64 +239,64 @@ PlayerPCToss: ; 7936 (1:7936) call TossItem ; disallows tossing key items jp .loop -PlayersPCMenuEntries: ; 799c (1:799c) +PlayersPCMenuEntries: db "WITHDRAW ITEM" next "DEPOSIT ITEM" next "TOSS ITEM" next "LOG OFF@" -TurnedOnPC2Text: ; 79c9 (1:79c9) +TurnedOnPC2Text: TX_FAR _TurnedOnPC2Text db "@" -WhatDoYouWantText: ; 79ce (1:79ce) +WhatDoYouWantText: TX_FAR _WhatDoYouWantText db "@" -WhatToDepositText: ; 79d3 (1:79d3) +WhatToDepositText: TX_FAR _WhatToDepositText db "@" -DepositHowManyText: ; 79d8 (1:79d8) +DepositHowManyText: TX_FAR _DepositHowManyText db "@" -ItemWasStoredText: ; 79dd (1:79dd) +ItemWasStoredText: TX_FAR _ItemWasStoredText db "@" -NothingToDepositText: ; 79e2 (1:79e2) +NothingToDepositText: TX_FAR _NothingToDepositText db "@" -NoRoomToStoreText: ; 79e7 (1:79e7) +NoRoomToStoreText: TX_FAR _NoRoomToStoreText db "@" -WhatToWithdrawText: ; 79ec (1:79ec) +WhatToWithdrawText: TX_FAR _WhatToWithdrawText db "@" -WithdrawHowManyText: ; 79f1 (1:79f1) +WithdrawHowManyText: TX_FAR _WithdrawHowManyText db "@" -WithdrewItemText: ; 79f6 (1:79f6) +WithdrewItemText: TX_FAR _WithdrewItemText db "@" -NothingStoredText: ; 79fb (1:79fb) +NothingStoredText: TX_FAR _NothingStoredText db "@" -CantCarryMoreText: ; 7a00 (1:7a00) +CantCarryMoreText: TX_FAR _CantCarryMoreText db "@" -WhatToTossText: ; 7a05 (1:7a05) +WhatToTossText: TX_FAR _WhatToTossText db "@" -TossHowManyText: ; 7a0a (1:7a0a) +TossHowManyText: TX_FAR _TossHowManyText db "@" diff --git a/engine/menu/pokedex.asm b/engine/menu/pokedex.asm index 7715500b..166e026d 100755 --- a/engine/menu/pokedex.asm +++ b/engine/menu/pokedex.asm @@ -1,4 +1,4 @@ -ShowPokedexMenu: ; 40000 (10:4000) +ShowPokedexMenu: call GBPalWhiteOut call ClearScreen call UpdateSprites @@ -61,7 +61,7 @@ ShowPokedexMenu: ; 40000 (10:4000) ; 00: showed pokemon data or area ; 01: the player chose Quit ; 02: the pokemon has not been seen yet or the player pressed the B button -HandlePokedexSideMenu: ; 40070 (10:4070) +HandlePokedexSideMenu: call PlaceUnfilledArrowMenuCursor ld a, [wCurrentMenuItem] push af @@ -179,7 +179,7 @@ HandlePokedexSideMenu: ; 40070 (10:4070) ; handles the list of pokemon on the left of the pokedex screen ; sets carry flag if player presses A, unsets carry flag if player presses B -HandlePokedexListMenu: ; 40140 (10:4140) +HandlePokedexListMenu: call Pokedex_DrawInterface .loop call Pokedex_PlacePokemonList @@ -255,7 +255,7 @@ HandlePokedexListMenu: ; 40140 (10:4140) and a ret -Pokedex_DrawInterface: ; 401c2 (10:41c2) +Pokedex_DrawInterface: xor a ld [H_AUTOBGTRANSFERENABLED], a ; draw the horizontal line separating the seen and owned amounts from the menu @@ -317,7 +317,7 @@ Pokedex_DrawInterface: ; 401c2 (10:41c2) ld [wDexMaxSeenMon], a ret -DrawPokedexVerticalLine: ; 40243 (10:4243) +DrawPokedexVerticalLine: ld c, 9 ; height of line ld de, SCREEN_WIDTH ; width of screen ld a, $71 ; vertical line tile @@ -329,23 +329,23 @@ DrawPokedexVerticalLine: ; 40243 (10:4243) jr nz, .loop ret -PokedexSeenText: ; 40252 (10:4252) +PokedexSeenText: db "SEEN@" -PokedexOwnText: ; 40257 (10:4257) +PokedexOwnText: db "OWN@" -PokedexContentsText: ; 4025b (10:425b) +PokedexContentsText: db "CONTENTS@" -PokedexMenuItemsText: ; 40264 (10:4264) +PokedexMenuItemsText: db "DATA" next "CRY" next "AREA" next "PRNT" next "QUIT@" -Pokedex_PlacePokemonList: ; 4027c (10:427c) +Pokedex_PlacePokemonList: xor a ld [H_AUTOBGTRANSFERENABLED], a coord hl, 4, 2 @@ -393,7 +393,6 @@ Pokedex_PlacePokemonList: ; 4027c (10:427c) jr nz, .getPokemonName ; if the player has seen the pokemon ld de, .dashedLine ; print a dashed line in place of the name if the player hasn't seen the pokemon jr .skipGettingName - .dashedLine ; for unseen pokemon in the list db "----------@" .getPokemonName @@ -420,7 +419,7 @@ Pokedex_PlacePokemonList: ; 4027c (10:427c) ; INPUT: ; [wd11e] = pokedex number ; hl = address of bit field -IsPokemonBitSet: ; 40303 (10:4303) +IsPokemonBitSet: ld a, [wd11e] dec a ld c, a @@ -431,14 +430,14 @@ IsPokemonBitSet: ; 40303 (10:4303) ret ; function to display pokedex data from outside the pokedex -ShowPokedexData: ; 40312 (10:4312) +ShowPokedexData: call GBPalWhiteOutWithDelay3 call ClearScreen call UpdateSprites callab LoadPokedexTilePatterns ; load pokedex tiles ; function to display pokedex data from inside the pokedex -ShowPokedexDataInternal: ; 40323 (10:4323) +ShowPokedexDataInternal: ld hl, wd72c set 1, [hl] ld a, $33 ; 3/7 volume @@ -475,23 +474,23 @@ ShowPokedexDataInternal: ; 40323 (10:4323) ld [rNR50], a ret -HeightWeightText: ; 40370 (10:4370) +HeightWeightText: db "HT ?", $60, "??", $61 next "WT ???lb@" ; XXX does anything point to this? -PokeText: ; 40385 (10:4385) +PokeText: db "#@" ; horizontal line that divides the pokedex text description from the rest of the data -PokedexDataDividerLine: ; 40387 (10:4387) +PokedexDataDividerLine: db $68, $69, $6B, $69, $6B db $69, $6B, $69, $6B, $6B db $6B, $6B, $69, $6B, $69 db $6B, $69, $6B, $69, $6A db "@" -DrawDexEntryOnScreen: ; 4039c (10:439c) +DrawDexEntryOnScreen: call ClearScreen coord hl, 0, 0 @@ -519,10 +518,9 @@ DrawDexEntryOnScreen: ; 4039c (10:439c) ld a, $6c ; lower left corner tile Coorda 0, 17 ld a, $6e ; lower right corner tile - Coorda 19, 17 - coord hl, 0, 9 + coord hl, 0, 9 ld de, PokedexDataDividerLine call PlaceString ; draw horizontal divider line @@ -649,9 +647,9 @@ DrawDexEntryOnScreen: ; 4039c (10:439c) scf ret -Pokedex_PrintFlavorTextAtRow11: ; 404ae (10:44ae) +Pokedex_PrintFlavorTextAtRow11: coord bc, 1, 11 -Pokedex_PrintFlavorTextAtBC: ; 404b1 (10:44b1) +Pokedex_PrintFlavorTextAtBC: ld a, 2 ld [$fff9], a call TextCommandProcessor ; print pokedex description text @@ -659,7 +657,7 @@ Pokedex_PrintFlavorTextAtBC: ; 404b1 (10:44b1) ld [$fff9], a ret -Pokedex_PrepareDexEntryForPrinting: ; 404bc (10:44bc) +Pokedex_PrepareDexEntryForPrinting: coord hl, 0, 0 ld de, SCREEN_WIDTH lb bc, $66, $d @@ -695,7 +693,7 @@ Pokedex_PrepareDexEntryForPrinting: ; 404bc (10:44bc) ; c = number of tile ID's to write ; de = amount to destination address after each tile (1 for horizontal, 20 for vertical) ; hl = destination address -DrawTileLine: ; 40501 (10:4501) +DrawTileLine: push bc push de .loop @@ -709,7 +707,7 @@ DrawTileLine: ; 40501 (10:4501) INCLUDE "data/pokedex_entries.asm" -PokedexToIndex: ; 41086 (10:5086) +PokedexToIndex: ; converts the Pokédex number at wd11e to an index push bc push hl @@ -730,7 +728,7 @@ PokedexToIndex: ; 41086 (10:5086) pop bc ret -IndexToPokedex: ; 4109d (10:509d) +IndexToPokedex: ; converts the indexédex number at wd11e to a Pokédex number push bc push hl diff --git a/engine/menu/prize_menu.asm b/engine/menu/prize_menu.asm index 0fedcca4..d1b1be3c 100755 --- a/engine/menu/prize_menu.asm +++ b/engine/menu/prize_menu.asm @@ -1,4 +1,4 @@ -CeladonPrizeMenu: ; 5267d (14:667d) +CeladonPrizeMenu: ld b,COIN_CASE call IsItemInBag jr nz,.havingCoinCase @@ -33,7 +33,7 @@ CeladonPrizeMenu: ; 5267d (14:667d) bit 1,a ; keypress = B (Cancel) jr nz, .noChoice ld a,[wCurrentMenuItem] - cp $03 ; "NO,THANKS" choice + cp 3 ; "NO,THANKS" choice jr z, .noChoice call HandlePrizeChoice .noChoice @@ -41,20 +41,20 @@ CeladonPrizeMenu: ; 5267d (14:667d) res 6, [hl] ret -RequireCoinCaseTextPtr: ; 526df (14:66df) +RequireCoinCaseTextPtr: TX_FAR _RequireCoinCaseText db $0D db "@" -ExchangeCoinsForPrizesTextPtr: ; 526e5 (14:66e5) +ExchangeCoinsForPrizesTextPtr: TX_FAR _ExchangeCoinsForPrizesText db "@" -WhichPrizeTextPtr: ; 526ea (14:66ea) +WhichPrizeTextPtr: TX_FAR _WhichPrizeText db "@" -GetPrizeMenuId: ; 526ef (14:66ef) +GetPrizeMenuId: ; determine which one among the three ; prize-texts has been selected ; using the text ID (stored in [hSpriteIndexOrTextID]) @@ -68,7 +68,7 @@ GetPrizeMenuId: ; 526ef (14:66ef) ld [wWhichPrizeWindow], a ; prize-texts' id (relative, i.e. 0, 1 or 2) add a add a - ld d, $0 + ld d, 0 ld e, a ld hl, PrizeDifferentMenuPtrs add hl, de @@ -84,10 +84,10 @@ GetPrizeMenuId: ; 526ef (14:66ef) ld h, [hl] ld l, a ld de, wPrize1Price - ld bc, $6 + ld bc, 6 call CopyData ld a, [wWhichPrizeWindow] - cp $02 ;is TM_menu? + cp 2 ;is TM_menu? jr nz, .putMonName ld a, [wPrize1] ld [wd11e], a @@ -144,21 +144,21 @@ GetPrizeMenuId: ; 526ef (14:66ef) ld c, (1 << 7 | 2) jp PrintBCDNumber -NoThanksText: ; 527a4 (14:67a4) +NoThanksText: db "NO THANKS@" INCLUDE "data/prizes.asm" -PrintPrizePrice: ; 527db (14:67db) +PrintPrizePrice: coord hl, 11, 0 lb bc, 1, 7 call TextBoxBorder call UpdateSprites coord hl, 12, 0 - ld de, CoinString + ld de, .CoinString call PlaceString coord hl, 13, 1 - ld de, SixSpacesString + ld de, .SixSpacesString call PlaceString coord hl, 13, 1 ld de,wPlayerCoins @@ -166,16 +166,16 @@ PrintPrizePrice: ; 527db (14:67db) call PrintBCDNumber ret -CoinString: ; 52805 (14:6805) +.CoinString: db "COIN@" -SixSpacesString: ; 5280a (14:680a) +.SixSpacesString: db " @" -LoadCoinsToSubtract: ; 52811 (14:6811) +LoadCoinsToSubtract: ld a,[wWhichPrize] add a - ld d, $0 + ld d, 0 ld e, a ld hl, wPrize1Price add hl, de ; get selected prize's price @@ -187,17 +187,17 @@ LoadCoinsToSubtract: ; 52811 (14:6811) ld [hCoins + 1], a ret -HandlePrizeChoice: ; 52826 (14:6826) +HandlePrizeChoice: ld a, [wCurrentMenuItem] ld [wWhichPrize], a - ld d, $0 + ld d, 0 ld e, a ld hl, wPrize1 add hl, de ld a, [hl] ld [wd11e], a ld a, [wWhichPrizeWindow] - cp $02 ; is prize a TM? + cp 2 ; is prize a TM? jr nz, .getMonName call GetItemName jr .givePrize @@ -261,35 +261,35 @@ HandlePrizeChoice: ; 52826 (14:6826) ld hl,OhFineThenTextPtr jp PrintText -UnknownData528b1: ; 528b1 (14:68b1) +UnknownPrizeData: ; XXX what's this? db $00,$01,$00,$01,$00,$01,$00,$00,$01 -HereYouGoTextPtr: ; 528ca (14:68ba) +HereYouGoTextPtr: TX_FAR _HereYouGoText db $0D db "@" -SoYouWantPrizeTextPtr: ; 528c0 (14:68c0) +SoYouWantPrizeTextPtr: TX_FAR _SoYouWantPrizeText db "@" -SorryNeedMoreCoinsText: ; 528c5 (14:68c5) +SorryNeedMoreCoinsText: TX_FAR _SorryNeedMoreCoinsText db $0D db "@" -PrizeRoomBagIsFullTextPtr: ; 528cb (14:68cb) +PrizeRoomBagIsFullTextPtr: TX_FAR _OopsYouDontHaveEnoughRoomText db $0D db "@" -OhFineThenTextPtr: ; 528d1 (14:68d1) +OhFineThenTextPtr: TX_FAR _OhFineThenText db $0D ; wait keypress (A/B) without blink db "@" -GetPrizeMonLevel: ; 528d7 (14:68d7) +GetPrizeMonLevel: ld a, [wcf91] ld b, a ld hl, PrizeMonLevelDictionary diff --git a/engine/menu/start_menu.asm b/engine/menu/start_menu.asm index 3eeb1c07..af687432 100755 --- a/engine/menu/start_menu.asm +++ b/engine/menu/start_menu.asm @@ -1,13 +1,13 @@ -DisplayStartMenu:: ; 29d1 (0:29d1) +DisplayStartMenu:: switchbank StartMenu_Pokedex ; also bank for other functions ld a, [wWalkBikeSurfState] ; walking/biking/surfing ld [wWalkBikeSurfStateCopy], a - ld a, $8f ; (SFX_02_3f - SFX_Headers_02) / 3 ; Start menu sound + ld a, SFX_START_MENU call PlaySound -RedisplayStartMenu:: ; 29e1 (0:29e1) +RedisplayStartMenu:: callba DrawStartMenu -RedisplayStartMenu_DoNotDrawStartMenu: ; 29e9 (0:29e9) +RedisplayStartMenu_DoNotDrawStartMenu: callba PrintSafariZoneSteps ; print Safari Zone info, if in Safari Zone call UpdateSprites .loop @@ -23,7 +23,7 @@ RedisplayStartMenu_DoNotDrawStartMenu: ; 29e9 (0:29e9) and a jr nz, .loop ; if the player pressed tried to go past the top item, wrap around to the bottom - CheckEvent EVENT_GOT_POKEDEX ; does the player have the pokedex? + CheckEvent EVENT_GOT_POKEDEX ld a, 6 ; there are 7 menu items with the pokedex, so the max index is 6 jr nz, .wrapMenuItemId dec a ; there are only 6 menu items without the pokedex @@ -35,7 +35,7 @@ RedisplayStartMenu_DoNotDrawStartMenu: ; 29e9 (0:29e9) bit 7, a jr z, .buttonPressed ; if the player pressed tried to go past the bottom item, wrap around to the top - CheckEvent EVENT_GOT_POKEDEX ; does the player have the pokedex? + CheckEvent EVENT_GOT_POKEDEX ld a, [wCurrentMenuItem] ld c, 7 ; there are 7 menu items with the pokedex jr nz, .checkIfPastBottom @@ -56,7 +56,7 @@ RedisplayStartMenu_DoNotDrawStartMenu: ; 29e9 (0:29e9) and a, %00001010 ; was the Start button or B button pressed? jp nz, CloseStartMenu call SaveScreenTilesToBuffer2 ; copy background from wTileMap to wTileMapBackup2 - CheckEvent EVENT_GOT_POKEDEX ; does the player have the pokedex? + CheckEvent EVENT_GOT_POKEDEX ld a, [wCurrentMenuItem] jr nz, .displayMenuItem inc a ; adjust position to account for missing pokedex menu item @@ -75,7 +75,7 @@ RedisplayStartMenu_DoNotDrawStartMenu: ; 29e9 (0:29e9) jp z, StartMenu_Option ; EXIT falls through to here -CloseStartMenu:: ; 2a72 (0:2a72) +CloseStartMenu:: call Joypad ld a, [hJoyPressed] bit 0, a ; was A button newly pressed? diff --git a/engine/menu/start_sub_menus.asm b/engine/menu/start_sub_menus.asm index 792903b7..94469960 100755 --- a/engine/menu/start_sub_menus.asm +++ b/engine/menu/start_sub_menus.asm @@ -1,4 +1,4 @@ -StartMenu_Pokedex: ; 11c22 (4:5c22) +StartMenu_Pokedex: predef ShowPokedexMenu call LoadScreenTilesFromBuffer2 ; restore saved screen call Delay3 @@ -6,7 +6,7 @@ StartMenu_Pokedex: ; 11c22 (4:5c22) call UpdateSprites jp RedisplayStartMenu -StartMenu_Pokemon: ; 11c36 (4:5c36) +StartMenu_Pokemon: ld a,[wPartyCount] and a jp z,RedisplayStartMenu @@ -129,7 +129,7 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) dw .dig dw .teleport dw .softboiled -.fly ; 11d1b (4:5d1b) +.fly bit 2,a ; does the player have the Thunder Badge? jp z,.newBadgeRequired call CheckIfInOutsideMap @@ -160,7 +160,7 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) and a jp z,.loop jp CloseTextDisplay -.surf ; 11d66 (4:5d66) +.surf bit 4,a ; does the player have the Soul Badge? jp z,.newBadgeRequired callba IsSurfingAllowed @@ -190,13 +190,13 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) xor a ld [wd473], a jp .loop -.strength ; 11dab (4:5dab) +.strength bit 3,a ; does the player have the Rainbow Badge? jp z,.newBadgeRequired predef PrintStrengthTxt call GBPalWhiteOutWithDelay3 jp .goBackToMap -.flash ; 11dbb (4:5dbb) +.flash bit 0,a ; does the player have the Boulder Badge? jp z,.newBadgeRequired xor a @@ -208,7 +208,7 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) .flashLightsAreaText TX_FAR _FlashLightsAreaText db "@" -.dig ; 11dd5 (4:5dd5) +.dig ld a,ESCAPE_ROPE ld [wcf91],a ld [wPseudoItemID],a @@ -218,7 +218,7 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) jp z,.loop call GBPalWhiteOutWithDelay3 jp .goBackToMap -.teleport ; 11ded (4:5ded) +.teleport call CheckIfInOutsideMap jr z,.canTeleport ld a,[wWhichPokemon] @@ -239,7 +239,7 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) res 4,[hl] ld c,60 call DelayFrames - call GBPalWhiteOutWithDelay3 ; zero all three palettes and wait 3 frames + call GBPalWhiteOutWithDelay3 jp .goBackToMap .warpToLastPokemonCenterText TX_FAR _WarpToLastPokemonCenterText @@ -250,7 +250,7 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) .cannotFlyHereText TX_FAR _CannotFlyHereText db "@" -.softboiled ; 11e35 (4:5e35) +.softboiled ld hl,wPartyMon1MaxHP ld a,[wWhichPokemon] ld bc,wPartyMon2 - wPartyMon1 @@ -301,7 +301,7 @@ StartMenu_Pokemon: ; 11c36 (4:5c36) db "@" ; writes a blank tile to all possible menu cursor positions on the party menu -ErasePartyMenuCursors: ; 11e98 (4:5e98) +ErasePartyMenuCursors: coord hl, 0, 1 ld bc,2 * 20 ; menu cursor positions are 2 rows apart ld a,6 ; 6 menu cursor positions @@ -312,11 +312,11 @@ ErasePartyMenuCursors: ; 11e98 (4:5e98) jr nz,.loop ret -ItemMenuLoop: ; 11ea7 (4:5ea7) +ItemMenuLoop: call LoadScreenTilesFromBuffer2DisableBGTransfer ; restore saved screen call RunDefaultPaletteCommand -StartMenu_Item: ; 11ead (4:5ead) +StartMenu_Item: ld a,[wLinkState] dec a ; is the player in the Colosseum or Trade Centre? jr nz,.notInCableClubRoom @@ -454,16 +454,16 @@ StartMenu_Item: ; 11ead (4:5ead) .tossZeroItems jp ItemMenuLoop -CannotUseItemsHereText: ; 11fd4 (4:5fd4) +CannotUseItemsHereText: TX_FAR _CannotUseItemsHereText db "@" -CannotGetOffHereText: ; 11fd9 (4:5fd9) +CannotGetOffHereText: TX_FAR _CannotGetOffHereText db "@" ; items which bring up the party menu when used -UsableItems_PartyMenu: ; 11fde (4:5fde) +UsableItems_PartyMenu: db MOON_STONE db ANTIDOTE db BURN_HEAL @@ -503,7 +503,7 @@ UsableItems_PartyMenu: ; 11fde (4:5fde) db $ff ; items which close the item menu when used -UsableItems_CloseMenu: ; 12003 (4:6003) +UsableItems_CloseMenu: db ESCAPE_ROPE db ITEMFINDER db POKE_FLUTE @@ -512,7 +512,7 @@ UsableItems_CloseMenu: ; 12003 (4:6003) db SUPER_ROD db $ff -StartMenu_TrainerInfo: ; 1200a (4:600a) +StartMenu_TrainerInfo: call GBPalWhiteOut call ClearScreen call UpdateSprites @@ -538,7 +538,7 @@ StartMenu_TrainerInfo: ; 1200a (4:600a) jp RedisplayStartMenu_DoNotDrawStartMenu ; loads tile patterns and draws everything except for gym leader faces / badges -DrawTrainerInfo: ; 1204c (4:604c) +DrawTrainerInfo: ld de,RedPicFront lb bc, BANK(RedPicFront), $01 predef DisplayPicCenteredOrUpperRight @@ -627,17 +627,17 @@ DrawTrainerInfo: ; 1204c (4:604c) lb bc, LEADING_ZEROES | 1, 2 jp PrintNumber -TrainerInfo_FarCopyData: ; 12131 (4:6131) +TrainerInfo_FarCopyData: ld a,BANK(TrainerInfoTextBoxTileGraphics) jp FarCopyData -TrainerInfo_NameMoneyTimeText: ; 12136 (4:6136) +TrainerInfo_NameMoneyTimeText: db "NAME/" next "MONEY/" next "TIME/@" ; $76 is a circle tile -TrainerInfo_BadgesText: ; 12149 (4:6149) +TrainerInfo_BadgesText: db $76,"BADGES",$76,"@" ; draws a text box on the trainer info screen @@ -647,7 +647,7 @@ TrainerInfo_BadgesText: ; 12149 (4:6149) ; [wTrainerInfoTextBoxWidthPlus1] = width ; [wTrainerInfoTextBoxWidth] = width - 1 ; [wTrainerInfoTextBoxNextRowOffset] = distance from the end of a text box row to the start of the next -TrainerInfo_DrawTextBox: ; 12152 (4:6152) +TrainerInfo_DrawTextBox: ld a,$79 ; upper left corner tile ID lb de, $7a, $7b ; top edge and upper right corner tile ID's call TrainerInfo_DrawHorizontalEdge ; draw top edge @@ -666,7 +666,7 @@ TrainerInfo_DrawTextBox: ; 12152 (4:6152) ld a,$7d ; lower left corner tile ID lb de,$77, $7e ; bottom edge and lower right corner tile ID's -TrainerInfo_DrawHorizontalEdge: ; 12175 (4:6175) +TrainerInfo_DrawHorizontalEdge: ld [hli],a ; place left corner tile ld a,[wTrainerInfoTextBoxWidth] ld c,a @@ -679,7 +679,7 @@ TrainerInfo_DrawHorizontalEdge: ; 12175 (4:6175) ld [hl],a ; place right corner tile ret -TrainerInfo_NextTextBoxRow: ; 12182 (4:6182) +TrainerInfo_NextTextBoxRow: ld a,[wTrainerInfoTextBoxNextRowOffset] ; distance to the start of the next row .loop inc hl @@ -691,7 +691,7 @@ TrainerInfo_NextTextBoxRow: ; 12182 (4:6182) ; INPUT: ; hl = address of top tile in the line ; a = tile ID -TrainerInfo_DrawVerticalLine: ; 1218a (4:618a) +TrainerInfo_DrawVerticalLine: ld de,20 ld c,8 .loop @@ -701,7 +701,7 @@ TrainerInfo_DrawVerticalLine: ; 1218a (4:618a) jr nz,.loop ret -StartMenu_SaveReset: ; 12195 (4:6195) +StartMenu_SaveReset: ld a,[wd72e] bit 6,a ; is the player using the link feature? jp nz,Init @@ -709,7 +709,7 @@ StartMenu_SaveReset: ; 12195 (4:6195) call LoadScreenTilesFromBuffer2 ; restore saved screen jp HoldTextDisplayOpen -StartMenu_Option: ; 121a9 (4:61a9) +StartMenu_Option: xor a ld [H_AUTOBGTRANSFERENABLED],a call ClearScreen @@ -720,7 +720,7 @@ StartMenu_Option: ; 121a9 (4:61a9) call UpdateSprites jp RedisplayStartMenu -SwitchPartyMon: ; 121c5 (4:61c5) +SwitchPartyMon: call SwitchPartyMon_InitVarOrSwapData ; swap data ld a, [wSwappedMenuItem] call SwitchPartyMon_ClearGfx @@ -728,7 +728,7 @@ SwitchPartyMon: ; 121c5 (4:61c5) call SwitchPartyMon_ClearGfx jp RedrawPartyMenu_ -SwitchPartyMon_ClearGfx: ; 121d7 (4:61d7) +SwitchPartyMon_ClearGfx: push af coord hl, 0, 0 ld bc, SCREEN_WIDTH * 2 @@ -754,7 +754,7 @@ SwitchPartyMon_ClearGfx: ; 121d7 (4:61d7) ld a, SFX_SWAP jp PlaySound -SwitchPartyMon_InitVarOrSwapData: ; 12205 (4:6205) +SwitchPartyMon_InitVarOrSwapData: ; This is used to initialise [wMenuItemToSwap] and to actually swap the data. ld a, [wMenuItemToSwap] and a ; has [wMenuItemToSwap] been initialised yet? diff --git a/engine/menu/status_screen.asm b/engine/menu/status_screen.asm index 719cacd1..4adfb543 100755 --- a/engine/menu/status_screen.asm +++ b/engine/menu/status_screen.asm @@ -1,15 +1,15 @@ -DrawHP: ; 11468 (4:5468) +DrawHP: ; Draws the HP bar in the stats screen call GetPredefRegisters ld a, $1 jr DrawHP_ -DrawHP2: ; 1146f (4:546f) +DrawHP2: ; Draws the HP bar in the party screen call GetPredefRegisters ld a, $2 -DrawHP_: ; 11474 (4:5474) +DrawHP_: ld [wHPBarType], a push hl ld a, [wLoadedMonHP] @@ -63,7 +63,7 @@ DrawHP_: ; 11474 (4:5474) ; Predef 0x37 -StatusScreen: ; 114cc (4:54cc) +StatusScreen: call LoadMonData ld a, [wMonDataLocation] cp BOX_DATA @@ -209,38 +209,38 @@ StatusScreen: ; 114cc (4:54cc) ld a, [wWhichPokemon] jp SkipFixedLengthTextEntries -OTPointers: ; 1163b (4:563b) +OTPointers: dw wPartyMonOT dw wEnemyMonOT dw wBoxMonOT dw wDayCareMonOT -NamePointers2: ; 11643 (4:5643) +NamePointers2: dw wPartyMonNicks dw wEnemyMonNicks dw wBoxMonNicks dw wDayCareMonName -Type1Text: ; 1164b (4:564b) +Type1Text: db "TYPE1/", $4e -Type2Text: ; 11652 (4:5652) +Type2Text: db "TYPE2/", $4e -IDNoText: ; 11659 (4:5659) +IDNoText: db $73, "№", "/", $4e -OTText: ; 1165d (4:565d) +OTText: db "OT/", $4e, "@" -StatusText: ; 11662 (4:5662) +StatusText: db "STATUS/@" -OKText: ; 1166a (4:566a) +OKText: db "OK@" ; Draws a line starting from hl high b and wide c -DrawLineBox: ; 1166d (4:566d) +DrawLineBox: ld de, SCREEN_WIDTH ; New line .PrintVerticalLine ld [hl], $78 ; │ @@ -257,11 +257,11 @@ DrawLineBox: ; 1166d (4:566d) ld [hl], $6f ; ← (halfarrow ending) ret -PTile: ; 11682 (4:5682) ; This is a single 1bpp "P" tile +PTile: ; This is a single 1bpp "P" tile INCBIN "gfx/p_tile.1bpp" PTileEnd: -PrintStatsBox: ; 1168a (4:568a) +PrintStatsBox: ld a, d and a ; a is 0 from the status screen jr nz, .DifferentBox @@ -294,7 +294,7 @@ PrintStatsBox: ; 1168a (4:568a) call PrintStat ld de, wLoadedMonSpecial jp PrintNumber -PrintStat: ; 116d4 (4:56d4) +PrintStat: push hl call PrintNumber pop hl @@ -302,13 +302,13 @@ PrintStat: ; 116d4 (4:56d4) add hl, de ret -StatsText: ; 116de (4:56de) +StatsText: db "ATTACK" next "DEFENSE" next "SPEED" next "SPECIAL@" -StatusScreen2: ; 116fb (4:56fb) +StatusScreen2: ld a, [hTilesetType] push af xor a @@ -349,11 +349,11 @@ StatusScreen2: ; 116fb (4:56fb) ld c, a ld a, "-" call StatusScreen_PrintPP ; Fill the rest with -- -.InitPP ; 1175e +.InitPP ld hl, wLoadedMonMoves coord de, 14, 10 ld b, 0 -.PrintPP ; 11766 +.PrintPP ld a, [hli] and a jr z, .PPDone @@ -449,7 +449,7 @@ StatusScreen2: ; 116fb (4:56fb) call GBPalWhiteOut jp ClearScreen -CalcExpToLevelUp: ; 11829 (4:5829) +CalcExpToLevelUp: ld a, [wLoadedMonLevel] cp MAX_LEVEL jr z, .atMaxLevel @@ -475,16 +475,16 @@ CalcExpToLevelUp: ; 11829 (4:5829) ld [hl], a ret -StatusScreenExpText: ; 11852 (4:5852) +StatusScreenExpText: db "EXP POINTS" next "LEVEL UP@" -StatusScreen_ClearName: ; 11866 (4:5866) +StatusScreen_ClearName: ld bc, 10 ld a, " " jp FillMemory -StatusScreen_PrintPP: ; 1186e (4:586e) +StatusScreen_PrintPP: ; print PP or -- c times, going down two rows each time ld [hli], a ld [hld], a diff --git a/engine/menu/swap_items.asm b/engine/menu/swap_items.asm index 73304118..b1fa78be 100644 --- a/engine/menu/swap_items.asm +++ b/engine/menu/swap_items.asm @@ -1,4 +1,4 @@ -HandleItemListSwapping: ; 68c9 (1:68c9) +HandleItemListSwapping: ld a,[wListMenuID] cp a,ITEMLISTMENU jp nz,DisplayListMenuIDLoop ; only rearrange item list menus @@ -146,4 +146,4 @@ HandleItemListSwapping: ; 68c9 (1:68c9) ld [wMenuItemToSwap],a ; 0 means no item is currently being swapped pop de pop hl - jp DisplayListMenuIDLoop
\ No newline at end of file + jp DisplayListMenuIDLoop diff --git a/engine/menu/text_ids1.asm b/engine/menu/text_ids1.asm index e9f2a4d7..e2fd76f4 100644 --- a/engine/menu/text_ids1.asm +++ b/engine/menu/text_ids1.asm @@ -1,5 +1,5 @@ ; function that performs initialization for DisplayTextID -DisplayTextIDInit: ; 6f0e (1:6f0e) +DisplayTextIDInit: xor a ld [wListMenuID],a ld a,[wAutoTextBoxDrawingControl] @@ -75,7 +75,7 @@ DisplayTextIDInit: ; 6f0e (1:6f0e) ret ; function that displays the start menu -DrawStartMenu: ; 6f80 (1:6f80) +DrawStartMenu: CheckEvent EVENT_GOT_POKEDEX ; menu with pokedex coord hl, 10, 0 @@ -133,31 +133,31 @@ DrawStartMenu: ; 6f80 (1:6f80) res 6,[hl] ; turn pauses between printing letters back on ret -StartMenuPokedexText: ; 7002 (1:7002) +StartMenuPokedexText: db "POKéDEX@" -StartMenuPokemonText: ; 700a (1:700a) +StartMenuPokemonText: db "#MON@" -StartMenuItemText: ; 700f (1:700f) +StartMenuItemText: db "ITEM@" -StartMenuSaveText: ; 7014 (1:7014) +StartMenuSaveText: db "SAVE@" -StartMenuResetText: ; 7019 (1:7019) +StartMenuResetText: db "RESET@" -StartMenuExitText: ; 701f (1:701f) +StartMenuExitText: db "EXIT@" -StartMenuOptionText: ; 7024 (1:7024) +StartMenuOptionText: db "OPTION@" -PrintStartMenuItem: ; 702b (1:702b) +PrintStartMenuItem: push hl call PlaceString pop hl ld de,SCREEN_WIDTH * 2 add hl,de - ret
\ No newline at end of file + ret diff --git a/engine/menu/text_ids2.asm b/engine/menu/text_ids2.asm index 15a43d5f..fbac3986 100644 --- a/engine/menu/text_ids2.asm +++ b/engine/menu/text_ids2.asm @@ -1,5 +1,5 @@ ; function to draw various text boxes -DisplayTextBoxID_: ; 71bf (1:71bf) +DisplayTextBoxID_: ld a,[wTextBoxID] cp a,TWO_OPTION_MENU jp z,DisplayTwoOptionMenu @@ -50,7 +50,7 @@ DisplayTextBoxID_: ; 71bf (1:71bf) ; function to search a table terminated with $ff for a byte matching c in increments of de ; sets carry flag if a match is found and clears carry flag if not -SearchTextBoxTable: ; 7221 (1:7221) +SearchTextBoxTable: dec de .loop ld a,[hli] @@ -73,7 +73,7 @@ SearchTextBoxTable: ; 7221 (1:7221) ; c = width ; d = row of upper left corner ; e = column of upper left corner -GetTextBoxIDCoords: ; 722f (1:722f) +GetTextBoxIDCoords: ld a,[hli] ; column of upper left corner ld e,a ld a,[hli] ; row of upper left corner @@ -89,7 +89,7 @@ GetTextBoxIDCoords: ; 722f (1:722f) ret ; function to load a text address and text coordinates from the TextBoxTextAndCoordTable -GetTextBoxIDText: ; 723c (1:723c) +GetTextBoxIDText: ld a,[hli] ld e,a ld a,[hli] @@ -109,7 +109,7 @@ GetTextBoxIDText: ; 723c (1:723c) ; e = column ; OUTPUT: ; hl = address of upper left corner of text box -GetAddressOfScreenCoords: ; 724a (1:724a) +GetAddressOfScreenCoords: push bc coord hl, 0, 0 ld bc,20 @@ -128,7 +128,7 @@ GetAddressOfScreenCoords: ; 724a (1:724a) ; Format: ; 00: text box ID ; 01-02: function address -TextBoxFunctionTable: ; 725c (1:725c) +TextBoxFunctionTable: dbw MONEY_BOX, DisplayMoneyBox dbw BUY_SELL_QUIT_MENU, DoBuySellQuitMenu dbw FIELD_MOVE_MON_MENU, DisplayFieldMoveMonMenu @@ -140,7 +140,7 @@ TextBoxFunctionTable: ; 725c (1:725c) ; 02: row of upper left corner ; 03: column of lower right corner ; 04: row of lower right corner -TextBoxCoordTable: ; 7266 (1:7266) +TextBoxCoordTable: db MESSAGE_BOX, 0, 12, 19, 17 db $03, 0, 0, 19, 14 db $07, 0, 0, 11, 6 @@ -159,7 +159,7 @@ TextBoxCoordTable: ; 7266 (1:7266) ; 07: column of beginning of text ; 08: row of beginning of text ; table of window positions and corresponding text [key, start column, start row, end column, end row, text pointer [2 bytes], text column, text row] -TextBoxTextAndCoordTable: ; 7285 (1:7285) +TextBoxTextAndCoordTable: db JP_MOCHIMONO_MENU_TEMPLATE db 0,0,14,17 ; text box coordinates dw JapaneseMochimonoText @@ -217,56 +217,56 @@ TextBoxTextAndCoordTable: ; 7285 (1:7285) ; note that there is no terminator -BuySellQuitText: ; 72e8 (1:72e8) +BuySellQuitText: db "BUY" next "SELL" next "QUIT@@" -UseTossText: ; 72f7 (1:72f7) +UseTossText: db "USE" next "TOSS@" -JapaneseSaveMessageText: ; 7300 (1:7300) +JapaneseSaveMessageText: db "きろく" next "メッセージ@" -JapaneseSpeedOptionsText: ; 7309 (1:7309) +JapaneseSpeedOptionsText: db "はやい" next "おそい@" -MoneyText: ; 7312 (1:7312) +MoneyText: db "MONEY@" -JapaneseMochimonoText: ; 7318 (1:7318) +JapaneseMochimonoText: db "もちもの@" -JapaneseMainMenuText: ; 731d (1:731d) +JapaneseMainMenuText: db "つづきから" next "さいしょから@" -BattleMenuText: ; 732a (1:732a) +BattleMenuText: db "FIGHT ",$E1,$E2 next "ITEM RUN@" -SafariZoneBattleMenuText: ; 733d (1:733d) +SafariZoneBattleMenuText: db "BALL× BAIT" next "THROW ROCK RUN@" -SwitchStatsCancelText: ; 735e (1:735e) +SwitchStatsCancelText: db "SWITCH" next "STATS" next "CANCEL@" -JapaneseAhText: ; 7372 (1:7372) +JapaneseAhText: db "アッ!@" -JapanesePokedexMenu: ; 7376 (1:7376) +JapanesePokedexMenu: db "データをみる" next "なきごえ" next "ぶんぷをみる" next "キャンセル@" -DisplayMoneyBox: ; 738f (1:738f) +DisplayMoneyBox: ld hl, wd730 set 6, [hl] ld a, MONEY_BOX_TEMPLATE @@ -283,10 +283,10 @@ DisplayMoneyBox: ; 738f (1:738f) res 6, [hl] ret -CurrencyString: ; 73b6 (1:73b6) +CurrencyString: db " ¥@" -DoBuySellQuitMenu: ; 73be (1:73be) +DoBuySellQuitMenu: ld a, [wd730] set 6, a ; no printing delay ld [wd730], a @@ -341,7 +341,7 @@ DoBuySellQuitMenu: ; 73be (1:73be) ; b = Y of upper left corner of text region ; c = X of upper left corner of text region ; hl = address where the text box border should be drawn -DisplayTwoOptionMenu: ; 742d (1:742d) +DisplayTwoOptionMenu: push hl ld a, [wd730] set 6, a ; no printing delay @@ -452,7 +452,7 @@ DisplayTwoOptionMenu: ; 742d (1:742d) ; they cover be fully saved/restored by the two functions below. ; The bottom and right edges of the menu may remain after the function returns. -TwoOptionMenu_SaveScreenTiles: ; 74e7 (1:74e7) +TwoOptionMenu_SaveScreenTiles: ld de, wBuffer lb bc, 5, 6 .loop @@ -470,7 +470,7 @@ TwoOptionMenu_SaveScreenTiles: ; 74e7 (1:74e7) jr nz, .loop ret -TwoOptionMenu_RestoreScreenTiles: ; 74ff (1:74ff) +TwoOptionMenu_RestoreScreenTiles: ld de, wBuffer lb bc, 5, 6 .loop @@ -494,7 +494,7 @@ TwoOptionMenu_RestoreScreenTiles: ; 74ff (1:74ff) ; 01: byte height ; 02: byte put blank line before first menu item ; 03: word text pointer -TwoOptionMenuStrings: ; 751a (1:751a) +TwoOptionMenuStrings: db 4,3,0 dw .YesNoMenu db 6,3,0 @@ -527,7 +527,7 @@ TwoOptionMenuStrings: ; 751a (1:751a) .HealCancelMenu ; 757e (1:757e) db "HEAL",$4E,"CANCEL@" -DisplayFieldMoveMonMenu: ; 758a (1:758a) +DisplayFieldMoveMonMenu: xor a ld hl, wFieldMoves ld [hli], a ; wFieldMoves @@ -646,7 +646,7 @@ DisplayFieldMoveMonMenu: ; 758a (1:758a) ld de, PokemonMenuEntries jp PlaceString -FieldMoveNames: ; 7635 (1:7635) +FieldMoveNames: db "CUT@" db "FLY@" db "@" @@ -657,12 +657,12 @@ FieldMoveNames: ; 7635 (1:7635) db "TELEPORT@" db "SOFTBOILED@" -PokemonMenuEntries: ; 766a (1:766a) +PokemonMenuEntries: db "STATS" next "SWITCH" next "CANCEL@" -GetMonFieldMoves: ; 767e (1:767e) +GetMonFieldMoves: ld a, [wWhichPokemon] ld hl, wPartyMon1Moves ld bc, wPartyMon2 - wPartyMon1 @@ -719,7 +719,7 @@ GetMonFieldMoves: ; 767e (1:767e) ; Name index = index of name in FieldMoveNames ; Leftmost tile = -1 + tile column in which the first letter of the move's name should be displayed ; "SOFTBOILED" is $08 because it has 4 more letters than "SURF", for example, whose value is $0C -FieldMoveDisplayData: ; 76cb (1:76cb) +FieldMoveDisplayData: db CUT, $01, $0C db FLY, $02, $0C db $B4, $03, $0C ; unused field move @@ -730,4 +730,4 @@ FieldMoveDisplayData: ; 76cb (1:76cb) db TELEPORT, $08, $0A db SOFTBOILED, $09, $08 db $ff ; list terminator -
\ No newline at end of file + diff --git a/engine/menu/vending_machine.asm b/engine/menu/vending_machine.asm index 74a6aadb..d864141d 100755 --- a/engine/menu/vending_machine.asm +++ b/engine/menu/vending_machine.asm @@ -1,4 +1,4 @@ -VendingMachineMenu: ; 74726 (1d:4726) +VendingMachineMenu: ld hl, VendingMachineText1 call PrintText ld a, MONEY_BOX @@ -79,38 +79,38 @@ VendingMachineMenu: ; 74726 (1d:4726) ld hl, VendingMachineText7 jp PrintText -VendingMachineText1: ; 747de (1d:47de) +VendingMachineText1: TX_FAR _VendingMachineText1 db "@" -DrinkText: ; 747e3 (1d:47e3) +DrinkText: db "FRESH WATER" next "SODA POP" next "LEMONADE" next "CANCEL@" -DrinkPriceText: ; 74808 (1d:4808) +DrinkPriceText: db "¥200" next "¥300" next "¥350",$4E,"@" -VendingMachineText4: ; 74818 (1d:4818) +VendingMachineText4: TX_FAR _VendingMachineText4 db "@" -VendingMachineText5: ; 7481d (1d:481d) +VendingMachineText5: TX_FAR _VendingMachineText5 db "@" -VendingMachineText6: ; 74822 (1d:4822) +VendingMachineText6: TX_FAR _VendingMachineText6 db "@" -VendingMachineText7: ; 74827 (1d:4827) +VendingMachineText7: TX_FAR _VendingMachineText7 db "@" -LoadVendingMachineItem: ; 7482c (1d:482c) +LoadVendingMachineItem: ld hl, VendingPrices ld a, [wCurrentMenuItem] add a @@ -128,7 +128,7 @@ LoadVendingMachineItem: ; 7482c (1d:482c) ld [hVendingMachinePrice + 2], a ret -VendingPrices: ; 74845 (1d:4845) +VendingPrices: db FRESH_WATER money 200 db SODA_POP diff --git a/engine/mon_party_sprites.asm b/engine/mon_party_sprites.asm index b4091d9c..6f17f876 100755 --- a/engine/mon_party_sprites.asm +++ b/engine/mon_party_sprites.asm @@ -1,4 +1,4 @@ -AnimatePartyMon_ForceSpeed1: ; 71784 (1c:5784) +AnimatePartyMon_ForceSpeed1: xor a ld [wCurrentMenuItem], a ld b, a @@ -9,7 +9,7 @@ AnimatePartyMon_ForceSpeed1: ; 71784 (1c:5784) ; 0: green ; 1: yellow ; 2: red -AnimatePartyMon: ; 7178c (1c:578c) +AnimatePartyMon: ld hl, wPartyMenuHPBarColors ld a, [wCurrentMenuItem] ld c, a @@ -17,7 +17,7 @@ AnimatePartyMon: ; 7178c (1c:578c) add hl, bc ld a, [hl] -GetAnimationSpeed: ; 71797 (1c:5797) +GetAnimationSpeed: ld c, a ld hl, PartyMonSpeeds add hl, bc @@ -85,15 +85,15 @@ GetAnimationSpeed: ; 71797 (1c:5797) ; The members of the PartyMonSpeeds array specify the number of V-blanks ; that each frame lasts for green HP, yellow HP, and red HP in order. ; On the naming screen, the yellow HP speed is always used. -PartyMonSpeeds: ; 717f6 (1c:57f6) +PartyMonSpeeds: db 5, 16, 32 -LoadMonPartySpriteGfx: ; 717f9 (1c:57f9) +LoadMonPartySpriteGfx: ; Load mon party sprite tile patterns into VRAM during V-blank. ld hl, MonPartySpritePointers ld a, $1e -LoadAnimSpriteGfx: ; 717fe (1c:57fe) +LoadAnimSpriteGfx: ; Load animated sprite tile patterns into VRAM during V-blank. hl is the address ; of an array of structures that contain arguments for CopyVideoData and a is ; the number of structures in the array. @@ -125,7 +125,7 @@ LoadAnimSpriteGfx: ; 717fe (1c:57fe) jr nz, .loop ret -LoadMonPartySpriteGfxWithLCDDisabled: ; 7181e (1c:581e) +LoadMonPartySpriteGfxWithLCDDisabled: ; Load mon party sprite tile patterns into VRAM immediately by disabling the ; LCD. call DisableLCD @@ -162,7 +162,7 @@ LoadMonPartySpriteGfxWithLCDDisabled: ; 7181e (1c:581e) jr nz, .loop jp EnableLCD -MonPartySpritePointers: ; 7184d (1c:584d) +MonPartySpritePointers: dw SlowbroSprite + $c0 db $40 / $10 ; 40 bytes db BANK(SlowbroSprite) @@ -313,7 +313,7 @@ MonPartySpritePointers: ; 7184d (1c:584d) db BANK(MonPartySprites) dw vSprites + $780 -WriteMonPartySpriteOAMByPartyIndex: ; 71901 (1c:5901) +WriteMonPartySpriteOAMByPartyIndex: ; Write OAM blocks for the party mon in [hPartyMonIndex]. push hl push de @@ -344,7 +344,7 @@ WriteMonPartySpriteOAMByPartyIndex: ; 71901 (1c:5901) pop hl ret -WriteMonPartySpriteOAMBySpecies: ; 7192f (1c:592f) +WriteMonPartySpriteOAMBySpecies: ; Write OAM blocks for the party sprite of the species in ; [wMonPartySpriteSpecies]. xor a @@ -354,7 +354,7 @@ WriteMonPartySpriteOAMBySpecies: ; 7192f (1c:592f) ld [wOAMBaseTile], a jr WriteMonPartySpriteOAM -UnusedPartyMonSpriteFunction: ; 7193d (1c:593d) +UnusedPartyMonSpriteFunction: ; This function is unused and doesn't appear to do anything useful. It looks ; like it may have been intended to load the tile patterns and OAM data for ; the mon party sprite associated with the species in [wcf91]. @@ -372,7 +372,7 @@ UnusedPartyMonSpriteFunction: ; 7193d (1c:593d) ld [wMonPartySpriteSpecies], a jr WriteMonPartySpriteOAMBySpecies -.LoadTilePatterns ; 71959 (1c:5959) +.LoadTilePatterns push hl add a ld c, a @@ -392,7 +392,7 @@ UnusedPartyMonSpriteFunction: ; 7193d (1c:593d) pop hl jp CopyVideoData -WriteMonPartySpriteOAM: ; 71970 (1c:5970) +WriteMonPartySpriteOAM: ; Write the OAM blocks for the first animation frame into the OAM buffer and ; make a copy at wMonPartySpritesSavedOAM. push af @@ -418,7 +418,7 @@ WriteMonPartySpriteOAM: ; 71970 (1c:5970) ld bc, $60 jp CopyData -GetPartyMonSpriteID: ; 71996 (1c:5996) +GetPartyMonSpriteID: ld [wd11e], a predef IndexToPokedex ld a, [wd11e] @@ -441,5 +441,5 @@ GetPartyMonSpriteID: ; 71996 (1c:5996) INCLUDE "data/mon_party_sprites.asm" -MonPartySprites: ; 71a06 (1c:5a06) +MonPartySprites: INCBIN "gfx/mon_ow_sprites.2bpp" diff --git a/engine/move_mon.asm b/engine/move_mon.asm index a14ed9ca..3471875e 100644 --- a/engine/move_mon.asm +++ b/engine/move_mon.asm @@ -1,4 +1,4 @@ -_MoveMon: ; f3a4 (3:73a4) +_MoveMon: ld a, [wMoveMonType] and a jr z, .checkPartyMonSlots @@ -169,4 +169,4 @@ _MoveMon: ; f3a4 (3:73a4) call CalcStats .asm_f4ea and a - ret
\ No newline at end of file + ret diff --git a/engine/multiply_divide.asm b/engine/multiply_divide.asm index 6ff427c6..2bc26de2 100755 --- a/engine/multiply_divide.asm +++ b/engine/multiply_divide.asm @@ -1,4 +1,4 @@ -_Multiply: ; f660e (3d:660e) +_Multiply: ld a, $8 ld b, a xor a @@ -60,7 +60,7 @@ _Multiply: ; f660e (3d:660e) ld [H_PRODUCT], a ; $ff95 ret -_Divide: ; f6672 (3d:6672) +_Divide: xor a ld [H_DIVIDEBUFFER], a ; ff9a ld [H_DIVIDEBUFFER+1], a ; ff9b diff --git a/engine/oak_speech.asm b/engine/oak_speech.asm index 2726c651..38fe66f9 100755 --- a/engine/oak_speech.asm +++ b/engine/oak_speech.asm @@ -1,4 +1,4 @@ -SetDefaultNames: ; 5e27 (1:5e27) +SetDefaultNames: ld a, [wLetterPrintingDelayFlags] push af ld a, [wOptions] @@ -40,7 +40,7 @@ SetDefaultNames: ; 5e27 (1:5e27) call CopyData ; rip optimizations ret -OakSpeech: ; 5e85 (1:5e85) +OakSpeech: call StopAllMusic ; stop music ld a, BANK(Music_Routes2) ld c,a @@ -158,25 +158,25 @@ OakSpeech: ; 5e85 (1:5e85) call ClearScreen ; rip more tail-end optimizations ret -OakSpeechText1: ; 5fb9 (1:5fb9) +OakSpeechText1: TX_FAR _OakSpeechText1 db "@" -OakSpeechText2: ; 5fbe (1:5fbe) +OakSpeechText2: TX_FAR _OakSpeechText2A db $14 ; play NIDORINA cry from TextCommandSounds TX_FAR _OakSpeechText2B db "@" -IntroducePlayerText: ; 5fc8 (1:5fc8) +IntroducePlayerText: TX_FAR _IntroducePlayerText db "@" -IntroduceRivalText: ; 5fcd (1:5fcd) +IntroduceRivalText: TX_FAR _IntroduceRivalText db "@" -OakSpeechText3: ; 5fd2 (1:5fd2) +OakSpeechText3: TX_FAR _OakSpeechText3 db "@" -FadeInIntroPic: ; 5fd7 (1:5fd7) +FadeInIntroPic: ld hl,IntroFadePalettes ld b,6 .next @@ -189,7 +189,7 @@ FadeInIntroPic: ; 5fd7 (1:5fd7) jr nz,.next ret -IntroFadePalettes: ; 5feb (1:5feb) +IntroFadePalettes: db %01010100 db %10101000 db %11111100 @@ -197,7 +197,7 @@ IntroFadePalettes: ; 5feb (1:5feb) db %11110100 db %11100100 -MovePicLeft: ; 5ff1 (1:5ff1) +MovePicLeft: ld a,119 ld [rWX],a call DelayFrame @@ -214,9 +214,9 @@ MovePicLeft: ; 5ff1 (1:5ff1) ld [rWX],a jr .next -DisplayPicCenteredOrUpperRight: ; 600d (1:600d) +DisplayPicCenteredOrUpperRight: call GetPredefRegisters -IntroDisplayPicCenteredOrUpperRight: ; 6010 (1:6010) +IntroDisplayPicCenteredOrUpperRight: ; b = bank ; de = address of compressed pic ; c: 0 = centred, non-zero = upper-right @@ -241,4 +241,4 @@ IntroDisplayPicCenteredOrUpperRight: ; 6010 (1:6010) .next xor a ld [hStartTileID],a - predef_jump CopyUncompressedPicToTilemap
\ No newline at end of file + predef_jump CopyUncompressedPicToTilemap diff --git a/engine/oak_speech2.asm b/engine/oak_speech2.asm index 5eeb5ea9..80f1bafc 100755 --- a/engine/oak_speech2.asm +++ b/engine/oak_speech2.asm @@ -1,4 +1,4 @@ -ChoosePlayerName: ; 66db (1:66db) +ChoosePlayerName: call OakSpeechSlidePicRight ld de, DefaultNamesPlayer call DisplayIntroNameTextBox @@ -27,11 +27,11 @@ ChoosePlayerName: ; 66db (1:66db) ld hl, YourNameIsText jp PrintText -YourNameIsText: ; 671d (1:671d) +YourNameIsText: TX_FAR _YourNameIsText db "@" -ChooseRivalName: ; 6722 (1:6722) +ChooseRivalName: call OakSpeechSlidePicRight ld de, DefaultNamesRival call DisplayIntroNameTextBox @@ -60,11 +60,11 @@ ChooseRivalName: ; 6722 (1:6722) ld hl, HisNameIsText jp PrintText -HisNameIsText: ; 6765 (1:6765) +HisNameIsText: TX_FAR _HisNameIsText db "@" -OakSpeechSlidePicLeft: ; 676a (1:676a) +OakSpeechSlidePicLeft: push de coord hl, 0, 0 lb bc, 12, 11 @@ -81,12 +81,12 @@ OakSpeechSlidePicLeft: ; 676a (1:676a) ld a, $ff jr OakSpeechSlidePicCommon -OakSpeechSlidePicRight: ; 6790 (1:6790) +OakSpeechSlidePicRight: coord hl, 5, 4 lb de, 6, 6 * SCREEN_WIDTH + 5 xor a -OakSpeechSlidePicCommon: ; 6797 (1:6797) +OakSpeechSlidePicCommon: push hl push de push bc @@ -160,7 +160,7 @@ OakSpeechSlidePicCommon: ; 6797 (1:6797) pop hl ret -DisplayIntroNameTextBox: ; 67ec (1:67ec) +DisplayIntroNameTextBox: push de coord hl, 0, 0 lb bc, 10, 9 @@ -184,24 +184,24 @@ DisplayIntroNameTextBox: ; 67ec (1:67ec) ld [wMaxMenuItem], a jp HandleMenuInput -.namestring ; 6822 (1:6822) +.namestring db "NAME@" -DefaultNamesPlayer: ; 6827 (1:6827) +DefaultNamesPlayer: db "NEW NAME" next "YELLOW" next "ASH" next "JACK" db "@" -DefaultNamesRival: ; 6840 (1:6840) +DefaultNamesRival: db "NEW NAME" next "BLUE" next "GARY" next "JOHN" db "@" -GetDefaultName: ; 6858 (1:6858) +GetDefaultName: ; a = name index ; hl = name list ld b, a @@ -225,17 +225,17 @@ GetDefaultName: ; 6858 (1:6858) ld bc, $14 jp CopyData -DefaultNamesPlayerList: ; 687d (1:687d) +DefaultNamesPlayerList: db "NEW NAME@" db "YELLOW@" db "ASH@" db "JACK@" -DefaultNamesRivalList: ; 688d (1:688d) +DefaultNamesRivalList: db "NEW NAME@" db "BLUE@" db "GARY@" db "JOHN@" -TextTerminator_6b20: ; 68a5 (1:68a5) +TextTerminator_6b20: db "@" diff --git a/engine/overworld/advance_player_sprite.asm b/engine/overworld/advance_player_sprite.asm index 758dd558..6b4a0cbb 100644 --- a/engine/overworld/advance_player_sprite.asm +++ b/engine/overworld/advance_player_sprite.asm @@ -1,4 +1,4 @@ -_AdvancePlayerSprite:: ; f010c (3c:410c) +_AdvancePlayerSprite:: ld a,[wSpriteStateData1 + 3] ; delta Y ld b,a ld a,[wSpriteStateData1 + 5] ; delta X @@ -192,7 +192,7 @@ _AdvancePlayerSprite:: ; f010c (3c:410c) ld [hSCX],a ; update background scroll X ret -MoveTileBlockMapPointerEast:: ; f0248 (3c:4248) +MoveTileBlockMapPointerEast:: ld a,[de] add $1 ld [de],a @@ -203,7 +203,7 @@ MoveTileBlockMapPointerEast:: ; f0248 (3c:4248) ld [de],a ret -MoveTileBlockMapPointerWest:: ; f0252 (3c:4252) +MoveTileBlockMapPointerWest:: ld a,[de] sub $1 ld [de],a @@ -214,7 +214,7 @@ MoveTileBlockMapPointerWest:: ; f0252 (3c:4252) ld [de],a ret -MoveTileBlockMapPointerSouth:: ; f025c (3c:425c) +MoveTileBlockMapPointerSouth:: add $6 ld b,a ld a,[de] @@ -227,7 +227,7 @@ MoveTileBlockMapPointerSouth:: ; f025c (3c:425c) ld [de],a ret -MoveTileBlockMapPointerNorth:: ; f0268 (3c:4268) +MoveTileBlockMapPointerNorth:: add $6 ld b,a ld a,[de] @@ -238,4 +238,4 @@ MoveTileBlockMapPointerNorth:: ; f0268 (3c:4268) ld a,[de] dec a ld [de],a - ret
\ No newline at end of file + ret diff --git a/engine/overworld/boulders.asm b/engine/overworld/boulders.asm index edfda2d3..669b7b83 100644 --- a/engine/overworld/boulders.asm +++ b/engine/overworld/boulders.asm @@ -1,4 +1,4 @@ -CheckForCollisionWhenPushingBoulder: ; c356 (3:4356) +CheckForCollisionWhenPushingBoulder: call GetTileTwoStepsInFrontOfPlayer call IsTilePassable jr c, .done @@ -16,7 +16,7 @@ CheckForCollisionWhenPushingBoulder: ; c356 (3:4356) ret ; sets a to $ff if there is a collision and $00 if there is no collision -CheckForBoulderCollisionWithSprites: ; c378 (3:4378) +CheckForBoulderCollisionWithSprites: ld a, [wBoulderSpriteIndex] dec a swap a @@ -91,4 +91,4 @@ CheckForBoulderCollisionWithSprites: ; c378 (3:4378) ret .success xor a - ret
\ No newline at end of file + ret diff --git a/engine/overworld/cable_club_npc.asm b/engine/overworld/cable_club_npc.asm index bc1a553a..e3ce8e8d 100755 --- a/engine/overworld/cable_club_npc.asm +++ b/engine/overworld/cable_club_npc.asm @@ -1,4 +1,4 @@ -CableClubNPC: ; 7035 (1:7035) +CableClubNPC: ld hl, CableClubNPCWelcomeText call PrintText call CheckPikachuFollowingPlayer @@ -118,7 +118,7 @@ CableClubNPC: ; 7035 (1:7035) ret ; seems to be similar of Serial_SyncAndExchangeNybble -Serial_SyncAndExchangeNybbleDouble: ; 7131 (1:7131) +Serial_SyncAndExchangeNybbleDouble: ld a, $ff ld [wSerialExchangeNybbleReceiveData], a .loop @@ -166,35 +166,35 @@ Serial_SyncAndExchangeNybbleDouble: ; 7131 (1:7131) ld [wUnknownSerialCounter + 1], a ret -CableClubNPCAreaReservedFor2FriendsLinkedByCableText: ; 7188 (1:7188) +CableClubNPCAreaReservedFor2FriendsLinkedByCableText: TX_FAR _CableClubNPCAreaReservedFor2FriendsLinkedByCableText db "@" -CableClubNPCWelcomeText: ; 718d (1:718d) +CableClubNPCWelcomeText: TX_FAR _CableClubNPCWelcomeText db "@" -CableClubNPCPleaseApplyHereHaveToSaveText: ; 7192 (1:7192) +CableClubNPCPleaseApplyHereHaveToSaveText: TX_FAR _CableClubNPCPleaseApplyHereHaveToSaveText db "@" -CableClubNPCPleaseWaitText: ; 7197 (1:7197) +CableClubNPCPleaseWaitText: TX_FAR _CableClubNPCPleaseWaitText db $a, "@" -CableClubNPCLinkClosedBecauseOfInactivityText: ; 719d (1:719d) +CableClubNPCLinkClosedBecauseOfInactivityText: TX_FAR _CableClubNPCLinkClosedBecauseOfInactivityText db "@" -CableClubNPCPleaseComeAgainText: ; 71a2 (1:71a2) +CableClubNPCPleaseComeAgainText: TX_FAR _CableClubNPCPleaseComeAgainText db "@" -CableClubNPCMakingPreparationsText: ; 71a7 (1:71a7) +CableClubNPCMakingPreparationsText: TX_FAR _CableClubNPCMakingPreparationsText db "@" -CloseLinkConnection: ; 71ac (1:71ac) +CloseLinkConnection: call Delay3 ld a, CONNECTION_NOT_ESTABLISHED ld [hSerialConnectionStatus], a diff --git a/engine/overworld/card_key.asm b/engine/overworld/card_key.asm index 3560c8e8..e1fc9160 100755 --- a/engine/overworld/card_key.asm +++ b/engine/overworld/card_key.asm @@ -1,4 +1,4 @@ -PrintCardKeyText: ; 525d8 (14:65d8) +PrintCardKeyText: ld hl, SilphCoMapList ld a, [wCurMap] ld b, a @@ -59,7 +59,7 @@ PrintCardKeyText: ; 525d8 (14:65d8) ld [hSpriteIndexOrTextID], a jp PrintPredefTextID -SilphCoMapList: ; 52645 (14:6645) +SilphCoMapList: db SILPH_CO_2F db SILPH_CO_3F db SILPH_CO_4F @@ -72,19 +72,19 @@ SilphCoMapList: ; 52645 (14:6645) db SILPH_CO_11F db $FF -CardKeySuccessText: ; 52650 (14:6650) +CardKeySuccessText: TX_FAR _CardKeySuccessText1 TX_SFX_ITEM TX_FAR _CardKeySuccessText2 db "@" -CardKeyFailText: ; 5265a (14:665a) +CardKeyFailText: TX_FAR _CardKeyFailText db "@" ; d = Y ; e = X -GetCoordsInFrontOfPlayer: ; 5265f (14:665f) +GetCoordsInFrontOfPlayer: ld a, [wYCoord] ld d, a ld a, [wXCoord] diff --git a/engine/overworld/check_player_state.asm b/engine/overworld/check_player_state.asm index 5dd91c4c..5fad4fc5 100644 --- a/engine/overworld/check_player_state.asm +++ b/engine/overworld/check_player_state.asm @@ -1,5 +1,5 @@ ; only used for setting bit 2 of wd736 upon entering a new map -IsPlayerStandingOnWarp: ; c0a6 (3:40a6) +IsPlayerStandingOnWarp: ld a, [wNumberOfWarps] and a ret z @@ -31,7 +31,7 @@ IsPlayerStandingOnWarp: ; c0a6 (3:40a6) jr nz, .loop ret -CheckForceBikeOrSurf: ; c0d2 (3:40d2) +CheckForceBikeOrSurf: ld hl, wd732 bit 5, [hl] ret nz @@ -86,7 +86,7 @@ CheckForceBikeOrSurf: ; c0d2 (3:40d2) INCLUDE "data/force_bike_surf.asm" -IsPlayerFacingEdgeOfMap: ; c148 (3:4148) +IsPlayerFacingEdgeOfMap: push hl push de push bc @@ -152,7 +152,7 @@ IsPlayerFacingEdgeOfMap: ; c148 (3:4148) scf ret -IsWarpTileInFrontOfPlayer: ; c197 (3:4197) +IsWarpTileInFrontOfPlayer: push hl push de push bc @@ -178,7 +178,7 @@ IsWarpTileInFrontOfPlayer: ; c197 (3:4197) pop hl ret -.warpTileListPointers: ; c1c0 (3:41c0) +.warpTileListPointers: dw .facingDownWarpTiles dw .facingUpWarpTiles dw .facingLeftWarpTiles @@ -206,7 +206,7 @@ IsWarpTileInFrontOfPlayer: ; c197 (3:4197) and a jr .done -IsPlayerStandingOnDoorTileOrWarpTile: ; c1e6 (3:41e6) +IsPlayerStandingOnDoorTileOrWarpTile: push hl push de push bc @@ -233,4 +233,4 @@ IsPlayerStandingOnDoorTileOrWarpTile: ; c1e6 (3:41e6) pop hl ret -INCLUDE "data/warp_tile_ids.asm"
\ No newline at end of file +INCLUDE "data/warp_tile_ids.asm" diff --git a/engine/overworld/cinnabar_lab.asm b/engine/overworld/cinnabar_lab.asm index f7c5e326..13313746 100755 --- a/engine/overworld/cinnabar_lab.asm +++ b/engine/overworld/cinnabar_lab.asm @@ -1,4 +1,4 @@ -GiveFossilToCinnabarLab: ; 61006 (18:5006) +GiveFossilToCinnabarLab: ld hl, wd730 set 6, [hl] xor a @@ -72,23 +72,23 @@ GiveFossilToCinnabarLab: ; 61006 (18:5006) call PrintText ret -LabFossil_610ae: ; 610ae (18:50ae) +LabFossil_610ae: TX_FAR _Lab4Text_610ae db "@" -LabFossil_610b3: ; 610b3 (18:50b3) +LabFossil_610b3: TX_FAR _Lab4Text_610b3 db "@" -LabFossil_610b8: ; 610b8 (18:50b8) +LabFossil_610b8: TX_FAR _Lab4Text_610b8 db "@" -LabFossil_610bd: ; 610bd (18:50bd) +LabFossil_610bd: TX_FAR _Lab4Text_610bd db "@" -PrintFossilsInBag: ; 610c2 (18:50c2) +PrintFossilsInBag: ; Prints each fossil in the player's bag on a separate line in the menu. ld hl, wFilteredBagItems xor a @@ -112,7 +112,7 @@ PrintFossilsInBag: ; 610c2 (18:50c2) jr .loop ; loads the names of the fossil item and the resulting mon -LoadFossilItemAndMonName: ; 610eb (18:50eb) +LoadFossilItemAndMonName: ld a, [wFossilMon] ld [wd11e], a call GetMonName diff --git a/engine/overworld/clear_loadmapdata_vars.asm b/engine/overworld/clear_loadmapdata_vars.asm index 2e7cd165..c5dc21fa 100644 --- a/engine/overworld/clear_loadmapdata_vars.asm +++ b/engine/overworld/clear_loadmapdata_vars.asm @@ -1,4 +1,4 @@ -ClearVariablesAfterLoadingMapData: ; c07c (3:407c) +ClearVariablesAfterLoadingMapData: ld a, $90 ld [hWY], a ld [rWY], a @@ -14,7 +14,7 @@ ClearVariablesAfterLoadingMapData: ; c07c (3:407c) ld hl, wCardKeyDoorY ld [hli], a ld [hl], a - ld hl, wWhichTrade - ld bc, $1e + ld hl, wUnusedCD3D + ld bc, wStandingOnWarpPadOrHole - wUnusedCD3D call FillMemory - ret
\ No newline at end of file + ret diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm index 488bc4de..462e3e8e 100755 --- a/engine/overworld/cut.asm +++ b/engine/overworld/cut.asm @@ -1,4 +1,4 @@ -UsedCut: ; edd1 (3:6dd1) +UsedCut: xor a ld [wActionResultOrTookBattleTurn], a ; initialise to failure value ld a, [wCurMapTileset] @@ -67,11 +67,11 @@ UsedCut: ; edd1 (3:6dd1) call UpdateSprites jp RedrawMapView -UsedCutText: ; ee6f (3:6e6f) +UsedCutText: TX_FAR _UsedCutText db "@" -InitCutAnimOAM: ; ee74 (3:6e74) +InitCutAnimOAM: xor a ld [wWhichAnimationOffsets], a ld a, %11100100 @@ -112,22 +112,22 @@ InitCutAnimOAM: ; ee74 (3:6e74) jr nz, .loop ret -LoadCutGrassAnimationTilePattern: ; eecc (3:6ecc) +LoadCutGrassAnimationTilePattern: ld de, AnimationTileset2 + $60 ; tile depicting a leaf lb bc, BANK(AnimationTileset2), $01 jp CopyVideoData -WriteCutOrBoulderDustAnimationOAMBlock: ; eed5 (3:6ed5) +WriteCutOrBoulderDustAnimationOAMBlock: call GetCutOrBoulderDustAnimationOffsets ld a, $9 ld de, CutOrBoulderDustAnimationTilesAndAttributes jp WriteOAMBlock -CutOrBoulderDustAnimationTilesAndAttributes: ; eee0 (3:6ee0) +CutOrBoulderDustAnimationTilesAndAttributes: db $FC,$14,$FD,$14 db $FE,$14,$FF,$14 -GetCutOrBoulderDustAnimationOffsets: ; eee8 (3:6ee8) +GetCutOrBoulderDustAnimationOffsets: ld hl, wSpriteStateData1 + 4 ld a, [hli] ; player's sprite screen Y position ld b, a @@ -158,14 +158,14 @@ GetCutOrBoulderDustAnimationOffsets: ; eee8 (3:6ee8) ld c, a ret -CutAnimationOffsets: ; ef0f (3:6f0f) +CutAnimationOffsets: ; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn db 8, 36 ; player is facing down db 8, 4 ; player is facing up db -8, 20 ; player is facing left db 24, 20 ; player is facing right -BoulderDustAnimationOffsets: ; ef17 (3:6f17) +BoulderDustAnimationOffsets: ; Each pair represents the x and y pixels offsets from the player of where the cut tree animation should be drawn ; These offsets represent 2 blocks away from the player db 8, 52 ; player is facing down @@ -173,7 +173,7 @@ BoulderDustAnimationOffsets: ; ef17 (3:6f17) db -24, 20 ; player is facing left db 40, 20 ; player is facing right -ReplaceTreeTileBlock: ; ef1f (3:6f1f) +ReplaceTreeTileBlock: ; Determine the address of the tile block that contains the tile in front of the ; player (i.e. where the tree is) and replace it with the corresponding tile ; block that doesn't have the tree. @@ -249,7 +249,7 @@ ReplaceTreeTileBlock: ; ef1f (3:6f1f) ld [hl], a ret -CutTreeBlockSwaps: ; ef80 (3:6f80) +CutTreeBlockSwaps: ; first byte = tileset block containing the cut tree ; second byte = corresponding tileset block after the cut animation happens db $32, $6D diff --git a/engine/overworld/cut2.asm b/engine/overworld/cut2.asm index 9bb4ee2c..37490f95 100755 --- a/engine/overworld/cut2.asm +++ b/engine/overworld/cut2.asm @@ -1,4 +1,4 @@ -AnimCut: ; 7a037 (1e:6037) +AnimCut: ld a, [wCutTile] cp $52 jr z, .grass @@ -44,7 +44,7 @@ AnimCut: ; 7a037 (1e:6037) jr nz, .cutGrassLoop ret -AnimCutGrass_UpdateOAMEntries: ; 7a091 (1e:6091) +AnimCutGrass_UpdateOAMEntries: push bc ld hl, wOAMBuffer + $91 ld a, 1 @@ -76,7 +76,7 @@ AnimCutGrass_UpdateOAMEntries: ; 7a091 (1e:6091) jr nz, AnimCutGrass_UpdateOAMEntries ret -AnimCutGrass_SwapOAMEntries: ; 7a0d7 (1e:60d7) +AnimCutGrass_SwapOAMEntries: ld hl, wOAMBuffer + $90 ld de, wBuffer ld bc, $8 diff --git a/engine/overworld/daycare_exp.asm b/engine/overworld/daycare_exp.asm index a7c7bd91..dbe4023a 100644 --- a/engine/overworld/daycare_exp.asm +++ b/engine/overworld/daycare_exp.asm @@ -1,4 +1,4 @@ -IncrementDayCareMonExp: ; c684 (3:4684) +IncrementDayCareMonExp: ld a, [wDayCareInUse] and a ret z @@ -15,4 +15,4 @@ IncrementDayCareMonExp: ; c684 (3:4684) ret c ld a, $50 ld [hl], a - ret
\ No newline at end of file + ret diff --git a/engine/overworld/doors.asm b/engine/overworld/doors.asm index 3f7b5f0f..8bde8600 100755 --- a/engine/overworld/doors.asm +++ b/engine/overworld/doors.asm @@ -1,5 +1,5 @@ ; returns whether the player is standing on a door tile in carry -IsPlayerStandingOnDoorTile: ; 1a785 (6:6785) +IsPlayerStandingOnDoorTile: push de ld hl, DoorTileIDPointers ld a, [wCurMapTileset] @@ -25,7 +25,7 @@ IsPlayerStandingOnDoorTile: ; 1a785 (6:6785) and a ret -DoorTileIDPointers: ; 1a7a8 (6:67a8) +DoorTileIDPointers: dbw OVERWORLD, OverworldDoorTileIDs dbw FOREST, ForestDoorTileIDs dbw MART, MartDoorTileIDs @@ -42,38 +42,38 @@ DoorTileIDPointers: ; 1a7a8 (6:67a8) dbw INTERIOR, InteriorDoorTileIDs db $ff -OverworldDoorTileIDs: ; 1a7d3 (6:67d3) +OverworldDoorTileIDs: db $1B,$58,$00 -ForestDoorTileIDs: ; 1a7d6 (6:67d6) +ForestDoorTileIDs: db $3a,$00 -MartDoorTileIDs: ; 1a7d8 (6:67d8) +MartDoorTileIDs: db $5e,$00 -HouseDoorTileIDs: ; 1a7da (6:67da) +HouseDoorTileIDs: db $54,$00 -TilesetMuseumDoorTileIDs: ; 1a7dc (6:67dc) +TilesetMuseumDoorTileIDs: db $3b,$00 -ShipDoorTileIDs: ; 1a7de (6:67de) +ShipDoorTileIDs: db $1e,$00 -LobbyDoorTileIDs: ; 1a7e0 (6:67e0) +LobbyDoorTileIDs: db $1c,$38,$1a,$00 -MansionDoorTileIDs: ; 1a7e4 (6:67e4) +MansionDoorTileIDs: db $1a,$1c,$53,$00 -LabDoorTileIDs: ; 1a7e8 (6:67e8) +LabDoorTileIDs: db $34,$00 -FacilityDoorTileIDs: ; 1a7ea (6:67ea) +FacilityDoorTileIDs: db $43,$58,$1b,$00 -PlateauDoorTileIDs: ; 1a7ee (6:67ee) +PlateauDoorTileIDs: db $3b,$1b,$00 -InteriorDoorTileIDs: ; 1a7f1 (6:67f1) +InteriorDoorTileIDs: db $04,$15,$00 diff --git a/engine/overworld/dungeon_warps.asm b/engine/overworld/dungeon_warps.asm index b234c3a1..f47dfb01 100644 --- a/engine/overworld/dungeon_warps.asm +++ b/engine/overworld/dungeon_warps.asm @@ -1,4 +1,4 @@ -IsPlayerOnDungeonWarp: ; 46bf3 (11:6bf3) +IsPlayerOnDungeonWarp: xor a ld [wWhichDungeonWarp], a ld a, [wd72d] @@ -12,4 +12,4 @@ IsPlayerOnDungeonWarp: ; 46bf3 (11:6bf3) set 4, [hl] ld hl, wd732 set 4, [hl] - ret
\ No newline at end of file + ret diff --git a/engine/overworld/elevator.asm b/engine/overworld/elevator.asm index b355102f..cd7bf5ba 100755 --- a/engine/overworld/elevator.asm +++ b/engine/overworld/elevator.asm @@ -1,4 +1,4 @@ -ShakeElevator: ; 75f07 (1d:5f07) +ShakeElevator: ld de, -$20 call ShakeElevatorRedrawRow ld de, SCREEN_HEIGHT * $20 @@ -37,7 +37,7 @@ ShakeElevator: ; 75f07 (1d:5f07) call UpdateSprites jp PlayDefaultMusic -ShakeElevatorRedrawRow: ; 75f52 (1d:5f52) +ShakeElevatorRedrawRow: ; This function is used to redraw certain portions of the screen, but it does ; not appear to ever result in any visible effect, so this function seems to ; be pointless. diff --git a/engine/overworld/emotion_bubbles.asm b/engine/overworld/emotion_bubbles.asm index f002deed..3b02fd55 100755 --- a/engine/overworld/emotion_bubbles.asm +++ b/engine/overworld/emotion_bubbles.asm @@ -1,9 +1,9 @@ -EmotionBubble: ; 4116f (10:516f) +EmotionBubble: ld a, [wWhichEmotionBubble] and $f swap a ld c, a - ld b, $0 + ld b, 0 ld hl, EmotionBubbles add hl, bc ; each emotion bubble is 16 bytes, so calculate the offset directly instead of with a pointer table add hl, bc @@ -64,11 +64,11 @@ EmotionBubble: ; 4116f (10:516f) call DelayFrame call UpdateSprites ret - ; jp UpdateSprites -EmotionBubblesOAM: ; 411dd (5:51dd) + +EmotionBubblesOAM: db $F8,$00,$F9,$00 db $FA,$00,$FB,$00 -EmotionBubbles: ; 411e5 (10:51e5) +EmotionBubbles: INCBIN "gfx/emotion_bubbles.2bpp" diff --git a/engine/overworld/get_coords_tile_in_front_of_player.asm b/engine/overworld/get_coords_tile_in_front_of_player.asm index 1003570b..e8bbc660 100644 --- a/engine/overworld/get_coords_tile_in_front_of_player.asm +++ b/engine/overworld/get_coords_tile_in_front_of_player.asm @@ -1,7 +1,7 @@ -GetTileAndCoordsInFrontOfPlayer: ; c2d4 (3:42d1) +GetTileAndCoordsInFrontOfPlayer: call GetPredefRegisters -_GetTileAndCoordsInFrontOfPlayer: ; c2d4 (3:42d4) +_GetTileAndCoordsInFrontOfPlayer: ld a, [wYCoord] ld d, a ld a, [wXCoord] @@ -38,7 +38,7 @@ _GetTileAndCoordsInFrontOfPlayer: ; c2d4 (3:42d4) ld [wTileInFrontOfPlayer], a ret -GetTileTwoStepsInFrontOfPlayer: ; c309 (3:4309) +GetTileTwoStepsInFrontOfPlayer: xor a ld [$ffdb], a ld hl, wYCoord @@ -84,4 +84,4 @@ GetTileTwoStepsInFrontOfPlayer: ; c309 (3:4309) ld c, a ld [wTileInFrontOfBoulderAndBoulderCollisionResult], a ld [wTileInFrontOfPlayer], a - ret
\ No newline at end of file + ret diff --git a/engine/overworld/healing_machine.asm b/engine/overworld/healing_machine.asm index daaf33b2..ed733d7d 100755 --- a/engine/overworld/healing_machine.asm +++ b/engine/overworld/healing_machine.asm @@ -1,5 +1,5 @@ -AnimateHealingMachine: ; 7048b (1c:448b) - ld de, PokeCenterFlashingMonitorAndHealBall ; $44b7 +AnimateHealingMachine: + ld de, PokeCenterFlashingMonitorAndHealBall ld hl, vChars0 + $7c0 lb bc, BANK(PokeCenterFlashingMonitorAndHealBall), $03 ; loads one too many tiles call CopyVideoData @@ -11,23 +11,23 @@ AnimateHealingMachine: ; 7048b (1c:448b) ld a, [rOBP1] push af ld a, $e0 - ld [rOBP1], a ; $ff49 + ld [rOBP1], a call UpdateGBCPal_OBP1 ld hl, wOAMBuffer + $84 - ld de, PokeCenterOAMData ; $44d7 + ld de, PokeCenterOAMData call CopyHealingMachineOAM ld a, 4 ld [wAudioFadeOutControl], a call StopAllMusic .waitLoop ld a, [wAudioFadeOutControl] - and a - jr nz, .waitLoop - ld a, [wPartyCount] ; wPartyCount + and a ; is fade-out finished? + jr nz, .waitLoop ; if not, check again + ld a, [wPartyCount] ld b, a .partyLoop call CopyHealingMachineOAM - ld a, $9e ; (SFX_02_4a - SFX_Headers_02) / 3 + ld a, SFX_HEALING_MACHINE call PlaySound ld c, 30 call DelayFrames @@ -38,32 +38,32 @@ AnimateHealingMachine: ; 7048b (1c:448b) ld [wAudioSavedROMBank], a jr nz, .next call StopAllMusic - ld a, $2 ; BANK(Music_PkmnHealed) + ld a, BANK(Music_PkmnHealed) ld [wAudioROMBank], a .next - ld a, $e8 ; MUSIC_PKMN_HEALED + ld a, MUSIC_PKMN_HEALED ld [wNewSoundID], a call PlaySound ld d, $28 call FlashSprite8Times .waitLoop2 ld a, [wChannelSoundIDs] - cp $e8 ; MUSIC_PKMN_HEALED - jr z, .waitLoop2 + cp MUSIC_PKMN_HEALED ; is the healed music still playing? + jr z, .waitLoop2 ; if so, check gain ld c, 32 call DelayFrames pop af - ld [rOBP1], a ; $ff49 + ld [rOBP1], a call UpdateGBCPal_OBP1 pop hl pop af ld [hl], a jp UpdateSprites -PokeCenterFlashingMonitorAndHealBall: ; 7050b (1c:450b) +PokeCenterFlashingMonitorAndHealBall: INCBIN "gfx/pokecenter_ball.2bpp" -PokeCenterOAMData: ; 7042b (1c:442b) +PokeCenterOAMData: db $24,$34,$7C,$14 ; heal machine monitor db $2B,$30,$7D,$14 ; pokeballs 1-6 db $2B,$38,$7D,$34 @@ -73,7 +73,7 @@ PokeCenterOAMData: ; 7042b (1c:442b) db $35,$38,$7D,$34 ; d = value to xor with palette -FlashSprite8Times: ; 70547 (1c:4547) +FlashSprite8Times: ld b, 8 .loop ld a, [rOBP1] @@ -86,7 +86,7 @@ FlashSprite8Times: ; 70547 (1c:4547) jr nz, .loop ret -CopyHealingMachineOAM: ; 7055a (1c:455a) +CopyHealingMachineOAM: ; copy one OAM entry and advance the pointers ld a, [de] inc de diff --git a/engine/overworld/hidden_items.asm b/engine/overworld/hidden_items.asm index 43a56658..15082847 100755 --- a/engine/overworld/hidden_items.asm +++ b/engine/overworld/hidden_items.asm @@ -1,4 +1,4 @@ -HiddenItems: ; 75f74 (1d:5f74) +HiddenItems: ld hl, HiddenItemCoords call FindHiddenItemOrCoinsIndex ld [wHiddenItemOrCoinsIndex], a @@ -25,7 +25,7 @@ HiddenItems: ; 75f74 (1d:5f74) INCLUDE "data/hidden_item_coords.asm" -FoundHiddenItemText: ; 76050 (1d:6050) +FoundHiddenItemText: TX_FAR _FoundHiddenItemText TX_ASM ld a, [wHiddenObjectFunctionArgument] ; item ID @@ -50,11 +50,11 @@ FoundHiddenItemText: ; 76050 (1d:6050) call PrintText jp TextScriptEnd -HiddenItemBagFullText: ; 76089 (1d:6089) +HiddenItemBagFullText: TX_FAR _HiddenItemBagFullText db "@" -HiddenCoins: ; 7608e (1d:608e) +HiddenCoins: ld b, COIN_CASE predef GetQuantityOfItemInBag ld a, b @@ -131,17 +131,17 @@ HiddenCoins: ; 7608e (1d:608e) INCLUDE "data/hidden_coins.asm" -FoundHiddenCoinsText: ; 76143 (1d:6143) +FoundHiddenCoinsText: TX_FAR _FoundHiddenCoinsText db $10,"@" -DroppedHiddenCoinsText: ; 76149 (1d:6149) +DroppedHiddenCoinsText: TX_FAR _FoundHiddenCoins2Text db $10 TX_FAR _DroppedHiddenCoinsText db "@" -FindHiddenItemOrCoinsIndex: ; 76153 (1d:6153) +FindHiddenItemOrCoinsIndex: ld a, [wHiddenObjectY] ld d, a ld a, [wHiddenObjectX] diff --git a/engine/overworld/hidden_objects.asm b/engine/overworld/hidden_objects.asm index 6e515b5a..9a81dcfc 100755 --- a/engine/overworld/hidden_objects.asm +++ b/engine/overworld/hidden_objects.asm @@ -1,5 +1,5 @@ ; if a hidden object was found, stores $00 in [hDidntFindAnyHiddenObject], else stores $ff -CheckForHiddenObject: ; f25f8 (3c:65f8) +CheckForHiddenObject: ld hl, hItemAlreadyFound xor a ld [hli], a @@ -60,7 +60,7 @@ CheckForHiddenObject: ; f25f8 (3c:65f8) ; checks if the coordinates in front of the player's sprite match Y in b and X in c ; [hCoordsInFrontOfPlayerMatch] = $00 if they match, $ff if they don't match -CheckIfCoordsInFrontOfPlayerMatch: ; 46a01 (11:6a01) +CheckIfCoordsInFrontOfPlayerMatch: ld a, [wPlayerFacingDirection] ; player's sprite facing direction cp SPRITE_FACING_UP jr z, .facingUp diff --git a/engine/overworld/is_player_just_outside_map.asm b/engine/overworld/is_player_just_outside_map.asm index 19823c53..44690db0 100644 --- a/engine/overworld/is_player_just_outside_map.asm +++ b/engine/overworld/is_player_just_outside_map.asm @@ -1,5 +1,5 @@ ; returns whether the player is one tile outside the map in Z -IsPlayerJustOutsideMap: ; e876c (3a:476c) +IsPlayerJustOutsideMap: ld a, [wYCoord] ld b, a ld a, [wCurMapHeight] diff --git a/engine/overworld/item.asm b/engine/overworld/item.asm index e421a946..63eecef9 100644 --- a/engine/overworld/item.asm +++ b/engine/overworld/item.asm @@ -1,4 +1,4 @@ -PickUpItem: ; 4d55 (1:4d55) +PickUpItem: call EnableAutoTextBoxDrawing ld a, [hSpriteIndexOrTextID] @@ -44,11 +44,11 @@ PickUpItem: ; 4d55 (1:4d55) call PrintText ret -FoundItemText: ; 4d9a (1:4d9a) +FoundItemText: TX_FAR _FoundItemText db $0B db "@" -NoMoreRoomForItemText: ; 4da0 (1:4da0) +NoMoreRoomForItemText: TX_FAR _NoMoreRoomForItemText db "@" diff --git a/engine/overworld/ledges.asm b/engine/overworld/ledges.asm index 5d95cb18..e7874637 100755 --- a/engine/overworld/ledges.asm +++ b/engine/overworld/ledges.asm @@ -1,4 +1,4 @@ -HandleLedges: ; 1a7f4 (6:67f4) +HandleLedges: ld a, [wd736] bit 6, a ; already jumping down ledge ret nz @@ -55,7 +55,7 @@ HandleLedges: ; 1a7f4 (6:67f4) ret ; (player direction) (tile player standing on) (ledge tile) (input required) -LedgeTiles: ; 1a851 (6:6851) +LedgeTiles: db SPRITE_FACING_DOWN, $2C,$37,D_DOWN db SPRITE_FACING_DOWN, $39,$36,D_DOWN db SPRITE_FACING_DOWN, $39,$37,D_DOWN @@ -66,7 +66,7 @@ LedgeTiles: ; 1a851 (6:6851) db SPRITE_FACING_RIGHT,$39,$0D,D_RIGHT db $FF -LoadHoppingShadowOAM: ; 1a872 (6:6872) +LoadHoppingShadowOAM: ld hl, vChars1 + $7f0 ld de, LedgeHoppingShadow lb bc, BANK(LedgeHoppingShadow), (LedgeHoppingShadowEnd - LedgeHoppingShadow) / $8 @@ -80,11 +80,11 @@ LoadHoppingShadowOAM: ; 1a872 (6:6872) ld [wOAMBuffer + 39 * 4], a ret -LedgeHoppingShadow: ; 1a893 (6:6893) +LedgeHoppingShadow: INCBIN "gfx/ledge_hopping_shadow.1bpp" LedgeHoppingShadowEnd: -LedgeHoppingShadowOAM: ; 1a89b (6:689b) +LedgeHoppingShadowOAM: db $58,$48,$FF,$00 db $58,$50,$FF,$20 -LedgeHoppingShadowOAMEnd: ; 1a8a3 (6:68a3) +LedgeHoppingShadowOAMEnd: diff --git a/engine/overworld/load_tileset_header.asm b/engine/overworld/load_tileset_header.asm index aeab3e24..05061651 100644 --- a/engine/overworld/load_tileset_header.asm +++ b/engine/overworld/load_tileset_header.asm @@ -1,4 +1,4 @@ -LoadTilesetHeader: ; c4f4 (3:44f4) +LoadTilesetHeader: call GetPredefRegisters push hl ld d, 0 @@ -48,4 +48,4 @@ LoadTilesetHeader: ; c4f4 (3:44f4) INCLUDE "data/dungeon_tilesets.asm" -INCLUDE "data/tileset_headers.asm"
\ No newline at end of file +INCLUDE "data/tileset_headers.asm" diff --git a/engine/overworld/load_wild_data.asm b/engine/overworld/load_wild_data.asm index 71e3fe2a..6444ab7e 100644 --- a/engine/overworld/load_wild_data.asm +++ b/engine/overworld/load_wild_data.asm @@ -1,4 +1,4 @@ -LoadWildData: ; cb62 (3:4b62) +LoadWildData: ld hl,WildDataPointers ld a,[wCurMap] @@ -30,4 +30,4 @@ LoadWildData: ; cb62 (3:4b62) ld bc,$0014 jp CopyData -INCLUDE "data/wild_mons.asm"
\ No newline at end of file +INCLUDE "data/wild_mons.asm" diff --git a/engine/overworld/map_sprite_functions1.asm b/engine/overworld/map_sprite_functions1.asm index 722fc14e..f0a718bd 100644 --- a/engine/overworld/map_sprite_functions1.asm +++ b/engine/overworld/map_sprite_functions1.asm @@ -1,4 +1,4 @@ -_UpdateSprites: ; 4bb7 (1:4bb7) +_UpdateSprites: ld h, wSpriteStateData1 / $100 inc h ld a, $e ; (wSpriteStateData2 + $0e) & $ff @@ -31,7 +31,7 @@ _UpdateSprites: ; 4bb7 (1:4bb7) jp z, SpawnPikachu ld a, [hl] -UpdateNonPlayerSprite: ; 4be3 (1:4be3) +UpdateNonPlayerSprite: dec a swap a ld [$ff93], a ; $10 * sprite# @@ -53,7 +53,7 @@ UpdateNonPlayerSprite: ; 4be3 (1:4be3) ; 9 values when the sprite is aligned with the grid: $fc, $0c, $1c, $2c, ..., $7c. ; The reason that 4 is added below to the coordinate is to make it align with a ; multiple of $10 to make comparisons easier. -DetectCollisionBetweenSprites: ; 4bf7 (1:4bf7) +DetectCollisionBetweenSprites: ; nop ld h, wSpriteStateData1 / $100 @@ -336,7 +336,7 @@ DetectCollisionBetweenSprites: ; 4bf7 (1:4bf7) ; c = 0 if delta X/Y is 0 ; c = 7 if delta X/Y is 1 ; c = 9 if delta X/Y is -1 -Func_4d0a: ; 4d0a (1:4d0a) +Func_4d0a: ld a, [$ff91] ld b, a ld a, [$ff90] @@ -356,7 +356,7 @@ Func_4d0a: ; 4d0a (1:4d0a) inc l ret -SetSpriteCollisionValues: ; 4d22 (1:4d22) +SetSpriteCollisionValues: and a ld b, 0 ld c, 0 @@ -371,7 +371,7 @@ SetSpriteCollisionValues: ; 4d22 (1:4d22) .done ret -SpriteCollisionBitTable: ; 4d35 (1:4d35) +SpriteCollisionBitTable: db %00000000,%00000001 db %00000000,%00000010 db %00000000,%00000100 diff --git a/engine/overworld/map_sprites.asm b/engine/overworld/map_sprites.asm index 10f0362e..32d3d47b 100755 --- a/engine/overworld/map_sprites.asm +++ b/engine/overworld/map_sprites.asm @@ -8,7 +8,7 @@ ; fields, respectively, within loops. The X is the loop index. ; If there is an inner loop, Y is the inner loop index, i.e. $C1Y* and $C2Y* ; denote fields of the sprite slots interated over in the inner loop. -_InitMapSprites: ; 1401b (5:401b) +_InitMapSprites: call InitOutsideMapSprites ret c ; return if the map is an outside map (already handled by above call) ; if the map is an inside map (i.e. mapID >= $25) @@ -19,7 +19,7 @@ _InitMapSprites: ; 1401b (5:401b) ; Loads sprite set for outside maps (cities and routes) and sets VRAM slots. ; sets carry if the map is a city or route, unsets carry if not -InitOutsideMapSprites: ; 14029 (5:4029) +InitOutsideMapSprites: ld a, [wCurMap] cp a, REDS_HOUSE_1F ; is the map a city or a route (map ID less than $25)? ret nc ; if not, return @@ -50,7 +50,7 @@ InitOutsideMapSprites: ; 14029 (5:4029) scf ret -LoadSpriteSetFromMapHeader: ; 14061 (5:4061) +LoadSpriteSetFromMapHeader: ; This loop stores the correct VRAM tile pattern slots according the sprite ; data from the map's header. Since the VRAM tile pattern slots are filled in ; the order of the sprite set, in order to find the VRAM tile pattern slot @@ -93,7 +93,7 @@ LoadSpriteSetFromMapHeader: ; 14061 (5:4061) jr nz, .storeVRAMSlotsLoop ret -CheckIfPictureIDAlreadyLoaded: ; 1409b (5:409b) +CheckIfPictureIDAlreadyLoaded: ; Check if the current picture ID has already had its tile patterns loaded. ; This done by looping through the previous sprite slots and seeing if any of ; their picture ID's match that of the current sprite slot. @@ -118,7 +118,7 @@ CheckIfPictureIDAlreadyLoaded: ; 1409b (5:409b) scf ret -CheckForFourTileSprite: ; 140ac (5:40ac) +CheckForFourTileSprite: ; Checks for a sprite added in yellow ; Returns no carry if the sprite is Pikachu, as its sprite is handled separately ; Else, returns carry if the sprite uses 4 tiles @@ -135,7 +135,7 @@ CheckForFourTileSprite: ; 140ac (5:40ac) scf ret -LoadMapSpriteTilePatterns: ; 140b7 (5:40b7) +LoadMapSpriteTilePatterns: ld a, 0 .loop ld [hVRAMSlot], a @@ -154,7 +154,7 @@ LoadMapSpriteTilePatterns: ; 140b7 (5:40b7) jr nz, .loop ret -ReloadWalkingTilePatterns: ; 140d2 (5:40d2) +ReloadWalkingTilePatterns: xor a .loop ld [hVRAMSlot], a @@ -168,7 +168,7 @@ ReloadWalkingTilePatterns: ; 140d2 (5:40d2) jr nz, .loop ret -LoadStillTilePattern: ; 140e4 (5:40e4) +LoadStillTilePattern: ld a, [wFontLoaded] bit 0, a ; reloading upper half of tile patterns after displaying text? ret nz ; if so, skip loading data into the lower half @@ -178,7 +178,7 @@ LoadStillTilePattern: ; 140e4 (5:40e4) call CopyVideoDataAlternate ; new yellow function ret -LoadWalkingTilePattern: ; 140f5 (5:40f5) +LoadWalkingTilePattern: call ReadSpriteSheetData ret nc ld hl, $c0 @@ -190,7 +190,7 @@ LoadWalkingTilePattern: ; 140f5 (5:40f5) call CopyVideoDataAlternate ret -GetSpriteVRAMAddress: ; 14018 (5:4108) +GetSpriteVRAMAddress: push bc ld a, [hVRAMSlot] ld c, a @@ -204,7 +204,7 @@ GetSpriteVRAMAddress: ; 14018 (5:4108) pop bc ret -SpriteVRAMAddresses: ; 14118 (5:4118) +SpriteVRAMAddresses: ; Equivalent to multiplying $C0 (number of bytes in 12 tiles) times the VRAM ; slot and adding the result to $8000 (the VRAM base address). dw vChars0 + $0c0 @@ -219,7 +219,7 @@ SpriteVRAMAddresses: ; 14118 (5:4118) dw vChars0 + $780 ; 4-tile sprites dw vChars0 + $7c0 ; 4-tile sprites -ReadSpriteSheetData: ; 1412e (5:412e) +ReadSpriteSheetData: ld a, [hVRAMSlot] ld e, a ld d, 0 @@ -249,7 +249,7 @@ ReadSpriteSheetData: ; 1412e (5:412e) scf ret -Func_14150: ; 14150 (5:4150) +Func_14150: ld a, $1 ld [wPlayerSpriteImageBaseOffset], a ; vram slot for player ld a, $2 @@ -275,7 +275,7 @@ Func_14150: ; 14150 (5:4150) jr nz, .loop ret -Func_14179: ; 14179 (5:4179) +Func_14179: push de push bc ld c, a ; c = picture ID @@ -298,7 +298,7 @@ Func_14179: ; 14179 (5:4179) pop de ret -GetSplitMapSpriteSetID: ; 14193 (5:4193) +GetSplitMapSpriteSetID: ld e, a ld d, 0 ld hl, MapSpriteSets @@ -328,7 +328,6 @@ GetSplitMapSpriteSetID: ; 14193 (5:4193) .northSouthDivide ld a, [wYCoord] jr .compareCoord - .eastWestDivide ld a, [wXCoord] .compareCoord diff --git a/engine/overworld/missable_objects.asm b/engine/overworld/missable_objects.asm index 1cc15be5..dd601451 100644 --- a/engine/overworld/missable_objects.asm +++ b/engine/overworld/missable_objects.asm @@ -1,4 +1,4 @@ -MarkTownVisitedAndLoadMissableObjects: ; ef93 (3:6f93) +MarkTownVisitedAndLoadMissableObjects: ld a, [wCurMap] cp ROUTE_1 jr nc, .notInTown @@ -17,7 +17,7 @@ MarkTownVisitedAndLoadMissableObjects: ; ef93 (3:6f93) ld h, [hl] ; fall through -; LoadMissableObjects: ; efb2 (3:6fb2) +; LoadMissableObjects: ; seems to not exist in yellow (predef replaced with something near TryPushingBoulder) ld l, a push hl @@ -64,7 +64,7 @@ MarkTownVisitedAndLoadMissableObjects: ; ef93 (3:6f93) ld [de], a ; write sentinel ret -InitializeMissableObjectsFlags: ; eff1 (3:6ff1) +InitializeMissableObjectsFlags: ld hl, wMissableObjectFlags ld bc, wMissableObjectFlagsEnd - wMissableObjectFlags xor a @@ -95,7 +95,7 @@ InitializeMissableObjectsFlags: ; eff1 (3:6ff1) jr .missableObjectsLoop ; tests if current sprite is a missable object that is hidden/has been removed -IsObjectHidden: ; f022 (3:7022) +IsObjectHidden: ld a, [H_CURRENTSPRITEOFFSET] swap a ld b, a @@ -122,7 +122,7 @@ IsObjectHidden: ; f022 (3:7022) ; adds missable object (items, leg. pokemon, etc.) to the map ; [wMissableObjectIndex]: index of the missable object to be added (global index) -ShowObject: ; f044 (3:7044) +ShowObject: ShowObject2: ld hl, wMissableObjectFlags ld a, [wMissableObjectIndex] @@ -133,7 +133,7 @@ ShowObject2: ; removes missable object (items, leg. pokemon, etc.) from the map ; [wMissableObjectIndex]: index of the missable object to be removed (global index) -HideObject: ; f053 (3:7053) +HideObject: ld hl, wMissableObjectFlags ld a, [wMissableObjectIndex] ld c, a @@ -141,7 +141,7 @@ HideObject: ; f053 (3:7053) call MissableObjectFlagAction ; set "removed" flag jp UpdateSprites -MissableObjectFlagAction: ; f062 (3:7062) +MissableObjectFlagAction: ; identical to FlagAction push hl diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm index d69e2fbc..ad4515ff 100644 --- a/engine/overworld/movement.asm +++ b/engine/overworld/movement.asm @@ -1,4 +1,4 @@ -UpdatePlayerSprite: ; 4da5 (1:4da5) +UpdatePlayerSprite: ld a, [wSpriteStateData2] and a jr z, .checkIfTextBoxInFrontOfSprite @@ -86,7 +86,7 @@ UpdatePlayerSprite: ; 4da5 (1:4da5) ld [wSpriteStateData2 + $07], a ret -Func_4e32: ; 4e32 (1:4e32) +Func_4e32: ld a, [wSpriteStateData1 + 8] ld b, a ld a, [wPlayerFacingDirection] @@ -94,7 +94,7 @@ Func_4e32: ; 4e32 (1:4e32) ld [wSpriteStateData1 + 2], a ret -UpdateNPCSprite: ; 4e3e (1:4e3e) +UpdateNPCSprite: ld a, [H_CURRENTSPRITEOFFSET] swap a dec a @@ -242,7 +242,7 @@ UpdateNPCSprite: ; 4e3e (1:4e3e) jr TryWalking ; changes facing direction by zeroing the movement delta and calling TryWalking -ChangeFacingDirection: ; 4f43 (1:4f43) +ChangeFacingDirection: ld de, $0 ; fall through @@ -252,7 +252,7 @@ ChangeFacingDirection: ; 4f43 (1:4f43) ; e: X movement delta (-1, 0 or 1) ; hl: pointer to tile the sprite would walk onto ; set carry on failure, clears carry on success -TryWalking: ; 4f46 (1:4f46) +TryWalking: push hl call Func_5337 pop hl @@ -271,7 +271,7 @@ TryWalking: ; 4f46 (1:4f46) jp UpdateSpriteImage ; update the walking animation parameters for a sprite that is currently walking -UpdateSpriteInWalkingAnimation: ; 4f61 (1:4f61) +UpdateSpriteInWalkingAnimation: call Func_5274 .noNextAnimationFrame ld a, [H_CURRENTSPRITEOFFSET] @@ -330,7 +330,7 @@ UpdateSpriteInWalkingAnimation: ; 4f61 (1:4f61) ret ; update delay value (c2x8) for sprites in the delayed state (c1x1) -UpdateSpriteMovementDelay: ; 4fa9 (1:4fa9) +UpdateSpriteMovementDelay: ld h, $c2 ld a, [H_CURRENTSPRITEOFFSET] add $6 @@ -351,7 +351,7 @@ UpdateSpriteMovementDelay: ; 4fa9 (1:4fa9) inc a ld l, a ld [hl], $1 ; c1x1 = 1 (mark as ready to move) -notYetMoving: ; 4fc5 (1:4fc5) +notYetMoving: ld h, wSpriteStateData1 / $100 ld a, [H_CURRENTSPRITEOFFSET] add $8 @@ -359,7 +359,7 @@ notYetMoving: ; 4fc5 (1:4fc5) ld [hl], $0 ; c1x8 = 0 (walk animation frame) jp UpdateSpriteImage -MakeNPCFacePlayer: ; 507f (1:507f) +MakeNPCFacePlayer: ; Make an NPC face the player if the player has spoken to him or her. ; Check if the behaviour of the NPC facing the player when spoken to is @@ -392,7 +392,7 @@ MakeNPCFacePlayer: ; 507f (1:507f) ld [hl], c ; c1x9: set facing direction jr notYetMoving -InitializeSpriteStatus: ; 4fff (1:4fff) +InitializeSpriteStatus: ld [hl], $1 ; $c1x1: set movement status to ready inc l ld [hl], $ff ; $c1x2: set sprite image to $ff (invisible/off screen) @@ -407,7 +407,7 @@ InitializeSpriteStatus: ; 4fff (1:4fff) ret ; calculates the spprite's scrren position form its map position and the player position -InitializeSpriteScreenPosition: ; 5012 (1:5012) +InitializeSpriteScreenPosition: ld h, wSpriteStateData2 / $100 ld a, [H_CURRENTSPRITEOFFSET] add $4 @@ -430,7 +430,7 @@ InitializeSpriteScreenPosition: ; 5012 (1:5012) ld [hl], a ; c1x6 (screen X position) ret -Func_5033: ; 5033 (1:5033) +Func_5033: jr nc, .asm_503c cpl inc a @@ -443,7 +443,7 @@ Func_5033: ; 5033 (1:5033) ret ; tests if sprite is off screen or otherwise unable to do anything -CheckSpriteAvailability: ; 503f (1:503f) +CheckSpriteAvailability: predef IsObjectHidden ld a, [$ffe5] and a @@ -524,7 +524,7 @@ CheckSpriteAvailability: ; 503f (1:503f) .done ret -UpdateSpriteImage: ; 50ba (1:50ba) +UpdateSpriteImage: ld h, $c1 ld a, [H_CURRENTSPRITEOFFSET] add $8 @@ -549,7 +549,7 @@ UpdateSpriteImage: ; 50ba (1:50ba) ; d: Y movement delta (-1, 0 or 1) ; e: X movement delta (-1, 0 or 1) ; set carry on failure, clears carry on success -CanWalkOntoTile: ; 50d1 (1:50d1) +CanWalkOntoTile: ld h, wSpriteStateData2 / $100 ld a, [H_CURRENTSPRITEOFFSET] add $6 @@ -658,7 +658,7 @@ CanWalkOntoTile: ; 50d1 (1:50d1) ; calculates the tile pointer pointing to the tile the current sprite stancs on ; this is always the lower left tile of the 2x2 tile blocks all sprites are snapped to ; hl: output pointer -GetTileSpriteStandsOn: ; 516a (1:516a) +GetTileSpriteStandsOn: ld h, wSpriteStateData1 / $100 ld a, [H_CURRENTSPRITEOFFSET] add $4 @@ -687,7 +687,7 @@ GetTileSpriteStandsOn: ; 516a (1:516a) ret ; loads [de+a] into a -LoadDEPlusA: ; 5192 (1:5192) +LoadDEPlusA: add e ld e, a jr nc, .noCarry @@ -696,7 +696,7 @@ LoadDEPlusA: ; 5192 (1:5192) ld a, [de] ret -DoScriptedNPCMovement: ; 5199 (1:5199) +DoScriptedNPCMovement: ; This is an alternative method of scripting an NPC's movement and is only used ; a few times in the game. It is used when the NPC and player must walk together ; in sync, such as when the player is following the NPC somewhere. An NPC can't @@ -767,23 +767,23 @@ DoScriptedNPCMovement: ; 5199 (1:5199) inc [hl] ret -InitScriptedNPCMovement: ; 5209 (1:5209) +InitScriptedNPCMovement: xor a ld [wNPCMovementDirections2Index], a ld a, 8 ld [wScriptedNPCWalkCounter], a jp AnimScriptedNPCMovement -GetSpriteScreenYPointer: ; 5215 (1:5215) +GetSpriteScreenYPointer: ld a, $4 ld b, a jr GetSpriteScreenXYPointerCommon -GetSpriteScreenXPointer: ; 521a (1:521a) +GetSpriteScreenXPointer: ld a, $6 ld b, a -GetSpriteScreenXYPointerCommon: ; 521d (1:521d) +GetSpriteScreenXYPointerCommon: ld hl, wSpriteStateData1 ld a, [H_CURRENTSPRITEOFFSET] add l @@ -791,7 +791,7 @@ GetSpriteScreenXYPointerCommon: ; 521d (1:521d) ld l, a ret -AnimScriptedNPCMovement: ; 5226 (1:5226) +AnimScriptedNPCMovement: ld hl, wSpriteStateData2 ld a, [H_CURRENTSPRITEOFFSET] add $e @@ -830,7 +830,7 @@ AnimScriptedNPCMovement: ; 5226 (1:5226) ld [hl], a ret -AdvanceScriptedNPCAnimFrameCounter: ; 5264 (1:5264) +AdvanceScriptedNPCAnimFrameCounter: call Func_5274 ld h, wSpriteStateData1 / $100 ld a, [H_CURRENTSPRITEOFFSET] @@ -841,7 +841,7 @@ AdvanceScriptedNPCAnimFrameCounter: ; 5264 (1:5264) ld [hSpriteAnimFrameCounter], a ret -Func_5274: ; 5274 (1:5274) +Func_5274: ld a, [H_CURRENTSPRITEOFFSET] add $7 ld l, a @@ -858,7 +858,7 @@ Func_5274: ; 5274 (1:5274) ld [hl], a ; advance to next animation frame every 4 ticks (16 ticks total for one step) ret -Func_5288: ; 5288 (1:5288) +Func_5288: ; nice lookup table ; a is supposedly [wNPCMovementDirections + $fe] cp $5 @@ -957,27 +957,27 @@ Func_5288: ; 5288 (1:5288) scf ret -Func_531f: ; 531f (1:531f) +Func_531f: lb de, 1, 0 ld c, SPRITE_FACING_DOWN ret -Func_5325: ; 5325 (1:5325) +Func_5325: lb de, -1, 0 ld c, SPRITE_FACING_UP ret -Func_532b: ; 532b (1:532b) +Func_532b: lb de, 0, 1 ld c, SPRITE_FACING_RIGHT ret -Func_5331: ; 5331 (1:5331) +Func_5331: lb de, 0, -1 ld c, SPRITE_FACING_LEFT ret -Func_5337: ; 5337 (1:5337) +Func_5337: ld a, [H_CURRENTSPRITEOFFSET] add $9 ld l, a @@ -992,7 +992,7 @@ Func_5337: ; 5337 (1:5337) ld [hl], e ; c1x5 (update X movement delta) ret -Func_5349: ; 5349 (1:5349) +Func_5349: ld h, wSpriteStateData2 / $100 ld a, [H_CURRENTSPRITEOFFSET] add $4 @@ -1005,7 +1005,7 @@ Func_5349: ; 5349 (1:5349) ld [hl], a ; update X position ret -Func_5357: ; 5357 (1:5357) +Func_5357: call Func_5274 ld a, [H_CURRENTSPRITEOFFSET] add $3 @@ -1062,4 +1062,4 @@ Func_5357: ; 5357 (1:5357) inc l ld c, [hl] ld [hl], a - ret
\ No newline at end of file + ret diff --git a/engine/overworld/npc_movement.asm b/engine/overworld/npc_movement.asm index 07abd44f..333779fa 100755 --- a/engine/overworld/npc_movement.asm +++ b/engine/overworld/npc_movement.asm @@ -1,4 +1,4 @@ -PlayerStepOutFromDoor: ; 1a4ea (6:64ea) +PlayerStepOutFromDoor: ld hl, wd730 res 1, [hl] call IsPlayerStandingOnDoorTile @@ -27,7 +27,7 @@ PlayerStepOutFromDoor: ; 1a4ea (6:64ea) res 7, [hl] ret -_EndNPCMovementScript: ; 1a527 (6:6527) +_EndNPCMovementScript: ld hl, wd730 res 7, [hl] ld hl, wd72e @@ -44,14 +44,14 @@ _EndNPCMovementScript: ; 1a527 (6:6527) ld [wSimulatedJoypadStatesEnd], a ret -PalletMovementScriptPointerTable: ; 1a54c (6:654c) +PalletMovementScriptPointerTable: dw PalletMovementScript_OakMoveLeft dw PalletMovementScript_PlayerMoveLeft dw PalletMovementScript_WaitAndWalkToLab dw PalletMovementScript_WalkToLab dw PalletMovementScript_Done -PalletMovementScript_OakMoveLeft: ; 1a556 (6:6556) +PalletMovementScript_OakMoveLeft: ld a, [wXCoord] sub $a ld [wNumStepsToTake], a @@ -89,7 +89,7 @@ PalletMovementScript_OakMoveLeft: ; 1a556 (6:6556) ld [wJoyIgnore], a ret -PalletMovementScript_PlayerMoveLeft: ; 1a597 (6:6597) +PalletMovementScript_PlayerMoveLeft: ld a, [wd730] bit 0, a ; is an NPC being moved by a script? ret nz ; return if Oak is still moving @@ -102,12 +102,12 @@ PalletMovementScript_PlayerMoveLeft: ; 1a597 (6:6597) ld [wNPCMovementScriptFunctionNum], a ret -PalletMovementScript_WaitAndWalkToLab: ; 1a5b3 (6:65b3) +PalletMovementScript_WaitAndWalkToLab: ld a, [wSimulatedJoypadStatesIndex] and a ; is the player done moving left yet? ret nz -PalletMovementScript_WalkToLab: ; 1a5b8 (6:65b8) +PalletMovementScript_WalkToLab: xor a ld [wOverrideSimulatedJoypadStatesMask], a ld a, [wSpriteIndex] @@ -132,7 +132,7 @@ PalletMovementScript_WalkToLab: ; 1a5b8 (6:65b8) ret -RLEList_ProfOakWalkToLab: ; 1a5ee (6:65ee) +RLEList_ProfOakWalkToLab: db NPC_MOVEMENT_DOWN, $06 ; differs from red db NPC_MOVEMENT_LEFT, $01 db NPC_MOVEMENT_DOWN, $05 @@ -141,7 +141,7 @@ RLEList_ProfOakWalkToLab: ; 1a5ee (6:65ee) db $E0, $01 ; stand still db $FF -RLEList_PlayerWalkToLab: ; 1a5fb (6:65fb) +RLEList_PlayerWalkToLab: db D_UP, $02 db D_RIGHT, $03 db D_DOWN, $05 @@ -149,7 +149,7 @@ RLEList_PlayerWalkToLab: ; 1a5fb (6:65fb) db D_DOWN, $07 ; differs from red db $FF -PalletMovementScript_Done: ; 1a606 (6:6606) +PalletMovementScript_Done: ld a, [wSimulatedJoypadStatesIndex] and a ret nz @@ -162,11 +162,11 @@ PalletMovementScript_Done: ; 1a606 (6:6606) res 7, [hl] jp EndNPCMovementScript -PewterMuseumGuyMovementScriptPointerTable: ; 1a622 (6:6622) +PewterMuseumGuyMovementScriptPointerTable: dw PewterMovementScript_WalkToMuseum dw PewterMovementScript_Done -PewterMovementScript_WalkToMuseum: ; 1a626 (6:6626) +PewterMovementScript_WalkToMuseum: ld a, BANK(Music_MuseumGuy) ld c, a ld a, MUSIC_MUSEUM_GUY @@ -192,21 +192,21 @@ PewterMovementScript_WalkToMuseum: ; 1a626 (6:6626) ld [wNPCMovementScriptFunctionNum], a ret -RLEList_PewterMuseumPlayer: ; 1a661 (6:6661) +RLEList_PewterMuseumPlayer: db 0, $01 db D_UP, $03 db D_LEFT, $0D db D_UP, $06 db $FF -RLEList_PewterMuseumGuy: ; 1a66a (6:666a) +RLEList_PewterMuseumGuy: db NPC_MOVEMENT_UP, $06 db NPC_MOVEMENT_LEFT, $0D db NPC_MOVEMENT_UP, $03 db NPC_MOVEMENT_LEFT, $01 db $FF -PewterMovementScript_Done: ; 1a673 (6:6673) +PewterMovementScript_Done: ld a, [wSimulatedJoypadStatesIndex] and a ret nz @@ -216,11 +216,11 @@ PewterMovementScript_Done: ; 1a673 (6:6673) res 7, [hl] jp EndNPCMovementScript -PewterGymGuyMovementScriptPointerTable: ; 1a685 (6:6685) +PewterGymGuyMovementScriptPointerTable: dw PewterMovementScript_WalkToGym dw PewterMovementScript_Done -PewterMovementScript_WalkToGym: ; 1a689 (6:6689) +PewterMovementScript_WalkToGym: ld a, BANK(Music_MuseumGuy) ld c, a ld a, MUSIC_MUSEUM_GUY @@ -249,7 +249,7 @@ PewterMovementScript_WalkToGym: ; 1a689 (6:6689) ld [wNPCMovementScriptFunctionNum], a ret -RLEList_PewterGymPlayer: ; 1a6cb (6:66cb) +RLEList_PewterGymPlayer: db 0, $01 db D_RIGHT, $02 db D_DOWN, $05 @@ -258,7 +258,7 @@ RLEList_PewterGymPlayer: ; 1a6cb (6:66cb) db D_LEFT, $0F db $FF -RLEList_PewterGymGuy: ; 1a6cd8 (6:66d8) +RLEList_PewterGymGuy: db NPC_MOVEMENT_DOWN, $02 db NPC_MOVEMENT_LEFT, $0F db NPC_MOVEMENT_UP, $05 diff --git a/engine/overworld/npc_movement_2.asm b/engine/overworld/npc_movement_2.asm index c5e11aa0..06ee9319 100755 --- a/engine/overworld/npc_movement_2.asm +++ b/engine/overworld/npc_movement_2.asm @@ -1,4 +1,4 @@ -FreezeEnemyTrainerSprite: ; eaa02 (3a:6a02) +FreezeEnemyTrainerSprite: ld a, [wCurMap] cp POKEMONTOWER_7 ret z ; the Rockets on Pokemon Tower 7F leave after battling, so don't freeze them @@ -17,7 +17,7 @@ FreezeEnemyTrainerSprite: ; eaa02 (3a:6a02) ld [H_SPRITEINDEX], a jp SetSpriteMovementBytesToFF -RivalIDs: ; eaa20 (3a:6a20) +RivalIDs: db OPP_SONY1 db OPP_SONY2 db OPP_SONY3 diff --git a/engine/overworld/npc_pathfinding.asm b/engine/overworld/npc_pathfinding.asm index ed7db530..f3d23b7c 100644 --- a/engine/overworld/npc_pathfinding.asm +++ b/engine/overworld/npc_pathfinding.asm @@ -1,4 +1,4 @@ -FindPathToPlayer: ; f74a (3:774a) +FindPathToPlayer: xor a ld hl, hFindPathNumSteps ld [hli], a ; hFindPathNumSteps @@ -74,7 +74,7 @@ FindPathToPlayer: ; f74a (3:774a) ld [hl], $ff ret -CalcPositionOfPlayerRelativeToNPC: ; f7b9 (3:77b9) +CalcPositionOfPlayerRelativeToNPC: xor a ld [hNPCPlayerRelativePosFlags], a ld a, [wSpriteStateData1 + 4] ; player's sprite screen Y position in pixels @@ -151,7 +151,7 @@ CalcPositionOfPlayerRelativeToNPC: ; f7b9 (3:77b9) ld [hNPCPlayerRelativePosFlags], a ret -ConvertNPCMovementDirectionsToJoypadMasks: ; f830 (3:7830) +ConvertNPCMovementDirectionsToJoypadMasks: ld a, [hNPCMovementDirections2Index] ld [wNPCMovementDirections2Index], a dec a @@ -172,7 +172,7 @@ ConvertNPCMovementDirectionsToJoypadMasks: ; f830 (3:7830) jr nz, .loop ret -ConvertNPCMovementDirectionToJoypadMask: ; f84f (3:784f) +ConvertNPCMovementDirectionToJoypadMask: push hl ld b, a ld hl, NPCMovementDirectionsToJoypadMasksTable @@ -190,7 +190,7 @@ ConvertNPCMovementDirectionToJoypadMask: ; f84f (3:784f) pop hl ret -NPCMovementDirectionsToJoypadMasksTable: ; f862 (3:7862) +NPCMovementDirectionsToJoypadMasksTable: db NPC_MOVEMENT_UP, D_UP db NPC_MOVEMENT_DOWN, D_DOWN db NPC_MOVEMENT_LEFT, D_LEFT @@ -198,4 +198,4 @@ NPCMovementDirectionsToJoypadMasksTable: ; f862 (3:7862) db $ff ; unreferenced - ret
\ No newline at end of file + ret diff --git a/engine/overworld/oaks_aide.asm b/engine/overworld/oaks_aide.asm index d412d8ec..54ba6b7a 100755 --- a/engine/overworld/oaks_aide.asm +++ b/engine/overworld/oaks_aide.asm @@ -1,4 +1,4 @@ -OaksAideScript: ; 58ecc (16:4ecc) +OaksAideScript: ld hl, OaksAideHiText call PrintText call YesNoChoice @@ -45,27 +45,27 @@ OaksAideScript: ; 58ecc (16:4ecc) ld [hOaksAideResult], a ret -OaksAideHiText: ; 58f28 (16:4f28) +OaksAideHiText: TX_FAR _OaksAideHiText db "@" -OaksAideUhOhText: ; 58f2d (16:4f2d) +OaksAideUhOhText: TX_FAR _OaksAideUhOhText db "@" -OaksAideComeBackText: ; 58f32 (16:4f32) +OaksAideComeBackText: TX_FAR _OaksAideComeBackText db "@" -OaksAideHereYouGoText: ; 58f37 (16:4f37) +OaksAideHereYouGoText: TX_FAR _OaksAideHereYouGoText db "@" -OaksAideGotItemText: ; 58f3c (16:4f3c) +OaksAideGotItemText: TX_FAR _OaksAideGotItemText db $0b db "@" -OaksAideNoRoomText: ; 58f41 (16:4f41) +OaksAideNoRoomText: TX_FAR _OaksAideNoRoomText db "@" diff --git a/engine/overworld/oam.asm b/engine/overworld/oam.asm index ede025cd..5a831327 100644 --- a/engine/overworld/oam.asm +++ b/engine/overworld/oam.asm @@ -1,4 +1,4 @@ -PrepareOAMData: ; 499b (1:499b) +PrepareOAMData: ; Determine OAM data for currently visible ; sprites and write it to wOAMBuffer. ; Yellow code has been changed to use registers more efficiently @@ -8,7 +8,7 @@ PrepareOAMData: ; 499b (1:499b) dec a jr z, .updateEnabled - cp $ff + cp -1 ret nz ld [wUpdateSpritesEnabled], a jp HideSprites @@ -164,7 +164,7 @@ PrepareOAMData: ; 499b (1:499b) jr nz, .clearLoop ret -GetSpriteScreenXY: ; 4a5f (1:4a5f) +GetSpriteScreenXY: inc e inc e ld a, [de] ; c1x4 @@ -186,7 +186,7 @@ GetSpriteScreenXY: ; 4a5f (1:4a5f) ld [de], a ; c1xb (x) ret -Func_4a7b: ; 4a7b (1:4a7b) +Func_4a7b: push bc ld a, [wd5cd] ; temp copy of c1x2 swap a ; high nybble determines sprite used (0 is always player sprite, next are some npcs) @@ -212,7 +212,7 @@ Func_4a7b: ; 4a7b (1:4a7b) INCLUDE "engine/oam_dma.asm" -_IsTilePassable:: ; 4aaa (1:4aaa) +_IsTilePassable:: ld hl,wTilesetCollisionPtr ; pointer to list of passable tiles ld a,[hli] ld h,[hl] @@ -229,4 +229,4 @@ _IsTilePassable:: ; 4aaa (1:4aaa) scf ret -INCLUDE "data/collision.asm" ; probably
\ No newline at end of file +INCLUDE "data/collision.asm" ; probably diff --git a/engine/overworld/pewter_guys.asm b/engine/overworld/pewter_guys.asm index ff3c6152..532fa4bf 100755 --- a/engine/overworld/pewter_guys.asm +++ b/engine/overworld/pewter_guys.asm @@ -1,4 +1,4 @@ -PewterGuys: ; 1a6e5 (6:66e5) +PewterGuys: ld hl, wSimulatedJoypadStatesEnd ld a, [wSimulatedJoypadStatesIndex] dec a ; this decrement causes it to overwrite the last byte before $FF in the list @@ -48,14 +48,14 @@ PewterGuys: ; 1a6e5 (6:66e5) inc hl jr .findMatchingCoordsLoop -PointerTable_37ce6: ; 1a72a (6:672a) +PointerTable_37ce6: dw PewterMuseumGuyCoords dw PewterGymGuyCoords ; these are the four coordinates of the spaces below, above, to the left and ; to the right of the museum guy, and pointers to different movements for ; the player to make to get positioned before the main movement. -PewterMuseumGuyCoords: ; 1a72e (6:672e) +PewterMuseumGuyCoords: db 18, 27 dw .down db 16, 27 @@ -78,7 +78,7 @@ PewterMuseumGuyCoords: ; 1a72e (6:672e) ; different movements for the player to make to get positioned before the ; main movement ; $00 is a pause -PewterGymGuyCoords: ; 1a74a (6:674a) +PewterGymGuyCoords: db 16, 34 dw .one db 17, 35 diff --git a/engine/overworld/player_animations.asm b/engine/overworld/player_animations.asm index bea43308..d4ecec53 100755 --- a/engine/overworld/player_animations.asm +++ b/engine/overworld/player_animations.asm @@ -1,4 +1,4 @@ -EnterMapAnim: ; 70567 (1c:4567) +EnterMapAnim: call InitFacingDirectionList ld a, $ec ld [wSpriteStateData1 + 4], a ; player's sprite Y screen position @@ -9,7 +9,7 @@ EnterMapAnim: ; 70567 (1c:4567) bit 7, [hl] ; used fly out of battle? res 7, [hl] jr nz, .flyAnimation - ld a, $a0 ; (SFX_02_4c - SFX_Headers_02) / 3 + ld a, SFX_TELEPORT_ENTER_1 call PlaySound ld hl, wd732 bit 4, [hl] ; used dungeon warp? @@ -17,7 +17,7 @@ EnterMapAnim: ; 70567 (1c:4567) ;res 4, [hl] jr nz, .dungeonWarpAnimation call PlayerSpinWhileMovingDown - ld a, $a3 ; (SFX_02_4f - SFX_Headers_02) / 3 + ld a, SFX_TELEPORT_ENTER_2 call PlaySound call IsPlayerStandingOnWarpPadOrHole ld a, b @@ -51,7 +51,7 @@ EnterMapAnim: ; 70567 (1c:4567) .flyAnimation pop hl call LoadBirdSpriteGraphics - ld a, $a4 ; SFX_BIRD_FLY + ld a, SFX_FLY call PlaySound ld hl, wFlyAnimUsingCoordList xor a ; is using coord list @@ -66,7 +66,7 @@ EnterMapAnim: ; 70567 (1c:4567) ld [wPikachuSpawnState], a jr .restoreDefaultMusic -FlyAnimationEnterScreenCoords: ; 705ed (1c:45ed) +FlyAnimationEnterScreenCoords: ; y, x pairs ; This is the sequence of screen coordinates used by the overworld ; Fly animation when the player is entering a map. @@ -83,7 +83,7 @@ FlyAnimationEnterScreenCoords: ; 705ed (1c:45ed) db $3C, $48 db $3C, $40 -PlayerSpinWhileMovingDown: ; 70605 (1c:4605) +PlayerSpinWhileMovingDown: ld hl, wPlayerSpinWhileMovingUpOrDownAnimDeltaY ld a, $10 ld [hli], a ; wPlayerSpinWhileMovingUpOrDownAnimDeltaY @@ -94,7 +94,7 @@ PlayerSpinWhileMovingDown: ; 70605 (1c:4605) jp PlayerSpinWhileMovingUpOrDown -_LeaveMapAnim: ; 70615 (1c:4615) +_LeaveMapAnim: call Func_1510 call InitFacingDirectionList call IsPlayerStandingOnWarpPadOrHole @@ -104,7 +104,7 @@ _LeaveMapAnim: ; 70615 (1c:4615) dec a jp nz, LeaveMapThroughHoleAnim .spinWhileMovingUp - ld a, $9f ; (SFX_02_4b - SFX_Headers_02) / 3 + ld a, SFX_TELEPORT_EXIT_1 call PlaySound ld hl, wPlayerSpinWhileMovingUpOrDownAnimDeltaY ld a, -$10 @@ -138,7 +138,7 @@ _LeaveMapAnim: ; 70615 (1c:4615) ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayDelta xor a ld [hli], a ; wPlayerSpinInPlaceAnimFrameDelayEndValue - ld [hl], $a1 ; SFX_TELEPORT_EXIT_2 + ld [hl], SFX_TELEPORT_EXIT_2 ; wPlayerSpinInPlaceAnimSoundID ld hl, wFacingDirectionList call PlayerSpinInPlace jr .spinWhileMovingUp @@ -151,7 +151,7 @@ _LeaveMapAnim: ; 70615 (1c:4615) ld [hli], a ; wFlyAnimCounter ld [hl], $c ; wFlyAnimBirdSpriteImageIndex call DoFlyAnimation - ld a, $a4 ; SFX_FLY + ld a, SFX_FLY call PlaySound ld hl, wFlyAnimUsingCoordList xor a ; is using coord list @@ -172,7 +172,7 @@ _LeaveMapAnim: ; 70615 (1c:4615) call GBFadeOutToWhite jp RestoreFacingDirectionAndYScreenPos -FlyAnimationScreenCoords1: ; 706ad (1c:46ad) +FlyAnimationScreenCoords1: ; y, x pairs ; This is the sequence of screen coordinates used by the first part ; of the Fly overworld animation. @@ -189,7 +189,7 @@ FlyAnimationScreenCoords1: ; 706ad (1c:46ad) db $2A, $98 db $27, $A0 -FlyAnimationScreenCoords2: ; 706c5 (1c:46c5) +FlyAnimationScreenCoords2: ; y, x pairs ; This is the sequence of screen coordinates used by the second part ; of the Fly overworld animation. @@ -206,7 +206,7 @@ FlyAnimationScreenCoords2: ; 706c5 (1c:46c5) db $F0, $00 -LeaveMapThroughHoleAnim: ; 706db (1c:46db) +LeaveMapThroughHoleAnim: ld a, $ff ld [wUpdateSpritesEnabled], a ; disable UpdateSprites ; shift upper half of player's sprite down 8 pixels and hide lower half @@ -228,7 +228,7 @@ LeaveMapThroughHoleAnim: ; 706db (1c:46db) ld [wUpdateSpritesEnabled], a ; enable UpdateSprites jp RestoreFacingDirectionAndYScreenPos -DoFlyAnimation: ; 7070c (1c:470c) +DoFlyAnimation: ld a, [wFlyAnimBirdSpriteImageIndex] xor $1 ; make the bird flap its wings ld [wFlyAnimBirdSpriteImageIndex], a @@ -252,19 +252,19 @@ DoFlyAnimation: ; 7070c (1c:470c) jr nz, DoFlyAnimation ret -LoadBirdSpriteGraphics: ; 70735 (1c:4735) - ld de, BirdSprite ; $4d80 +LoadBirdSpriteGraphics: + ld de, BirdSprite ld b, BANK(BirdSprite) ld c, $c ld hl, vNPCSprites call CopyVideoData - ld de, BirdSprite + $c0 ; $4e40 ; moving amination sprite + ld de, BirdSprite + $c0 ; moving animation sprite ld b, BANK(BirdSprite) ld c, $0c ld hl, vNPCSprites2 jp CopyVideoData -InitFacingDirectionList: ; 7074f (1c:474f) +InitFacingDirectionList: ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction (image index is locked to standing images) ld [wSavedPlayerFacingDirection], a ld a, [wSpriteStateData1 + 4] ; player's sprite Y screen position @@ -283,12 +283,12 @@ InitFacingDirectionList: ; 7074f (1c:474f) dec hl ret -PlayerSpinningFacingOrder: ; 70773 (1c:4773) +PlayerSpinningFacingOrder: ; The order of the direction the player's sprite is facing when teleporting ; away. Creates a spinning effect. db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT -SpinPlayerSprite: ; 70777 (1c:4777) +SpinPlayerSprite: ; copy the current value from the list into the sprite data and rotate the list ld a, [hl] ld [wSpriteStateData1 + 2], a ; player's sprite facing direction (image index is locked to standing images) @@ -302,7 +302,7 @@ SpinPlayerSprite: ; 70777 (1c:4777) pop hl ret -PlayerSpinInPlace: ; 70790 (1c:4790) +PlayerSpinInPlace: call SpinPlayerSprite ld a, [wPlayerSpinInPlaceAnimFrameDelay] ld c, a @@ -323,7 +323,7 @@ PlayerSpinInPlace: ; 70790 (1c:4790) call DelayFrames jr PlayerSpinInPlace -PlayerSpinWhileMovingUpOrDown: ; 707b5 (1c:47b5) +PlayerSpinWhileMovingUpOrDown: call SpinPlayerSprite ld a, [wPlayerSpinWhileMovingUpOrDownAnimDeltaY] ld c, a @@ -339,7 +339,7 @@ PlayerSpinWhileMovingUpOrDown: ; 707b5 (1c:47b5) call DelayFrames jr PlayerSpinWhileMovingUpOrDown -RestoreFacingDirectionAndYScreenPos: ; 707d2 (1c:47d2) +RestoreFacingDirectionAndYScreenPos: ld a, [wSavedPlayerScreenY] ld [wSpriteStateData1 + 4], a ld a, [wSavedPlayerFacingDirection] @@ -347,14 +347,14 @@ RestoreFacingDirectionAndYScreenPos: ; 707d2 (1c:47d2) ret ; if SGB, 2 frames, else 3 frames -GetPlayerTeleportAnimFrameDelay: ; 707df (1c:47df) +GetPlayerTeleportAnimFrameDelay: ld a, [wOnSGB] xor $1 inc a inc a ret -IsPlayerStandingOnWarpPadOrHole: ; 707e7 (1c:47e7) +IsPlayerStandingOnWarpPadOrHole: ld b, 0 ld hl, .warpPadAndHoleData ld a, [wCurMapTileset] @@ -381,20 +381,20 @@ IsPlayerStandingOnWarpPadOrHole: ; 707e7 (1c:47e7) ret ; format: db tileset id, tile id, value to be put in [wStandingOnWarpPadOrHole] -.warpPadAndHoleData: ; 70809 (1c:4809) +.warpPadAndHoleData: db FACILITY, $20, 1 ; warp pad db FACILITY, $11, 2 ; hole db CAVERN, $22, 2 ; hole db INTERIOR, $55, 1 ; warp pad db $FF -FishingAnim: ; 70816 (1c:4816) +FishingAnim: ld c, 10 call DelayFrames ld hl, wd736 - set 6, [hl] + set 6, [hl] ; reserve the last 4 OAM entries ld hl, vNPCSprites - ld de, RedSprite ; $4180 + ld de, RedSprite ld b, BANK(RedSprite) ld c, $c call CopyVideoData @@ -422,7 +422,6 @@ FishingAnim: ; 70816 (1c:4816) ; there was a bite ; shake the player's sprite vertically - ld b, 10 .loop ld hl, wSpriteStateData1 + 4 ; player's sprite Y screen position @@ -435,17 +434,19 @@ FishingAnim: ; 70816 (1c:4816) ; If the player is facing up, hide the fishing rod so it doesn't overlap with ; the exclamation bubble that will be shown next. - ld a, [wSpriteStateData1 + 2] + ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction cp SPRITE_FACING_UP jr nz, .skipHidingFishingRod ld a, $a0 ld [wOAMBuffer + $9c], a + .skipHidingFishingRod ld hl, wEmotionBubbleSpriteIndex xor a ld [hli], a ; player's sprite ld [hl], a ; EXCLAMATION_BUBBLE predef EmotionBubble + ; If the player is facing up, unhide the fishing rod. ld a, [wSpriteStateData1 + 2] ; player's sprite facing direction cp SPRITE_FACING_UP @@ -463,25 +464,25 @@ FishingAnim: ; 70816 (1c:4816) call LoadFontTilePatterns ret -.ShakePlayerSprite ; 708a3 (1c:48a3) +.ShakePlayerSprite ld a, [hl] xor $1 ld [hl], a ret -NoNibbleText: ; 708a8 (1c:48a8) +NoNibbleText: TX_FAR _NoNibbleText db "@" -NothingHereText: ; 708ad (1c:48ad) +NothingHereText: TX_FAR _NothingHereText db "@" -ItsABiteText: ; 708b2 (1c:48b2) +ItsABiteText: TX_FAR _ItsABiteText db "@" -FishingRodOAM: ; 708b7 (1c:48b7) +FishingRodOAM: ; specifies how the fishing rod should be drawn on the screen ; first byte = screen y coordinate ; second byte = screen x coordinate @@ -492,7 +493,7 @@ FishingRodOAM: ; 708b7 (1c:48b7) db $50, $40, $FE, $00 ; player facing left db $50, $58, $FE, $20 ; player facing right ($20 means "horizontally flip the tile") -RedFishingTiles: ; 708c7 (1c:48c7) +RedFishingTiles: dw RedFishingTilesFront db 2, BANK(RedFishingTilesFront) dw vNPCSprites + $20 @@ -509,7 +510,7 @@ RedFishingTiles: ; 708c7 (1c:48c7) db 3, BANK(RedFishingRodTiles) dw vNPCSprites2 + $7d0 -_HandleMidJump: ; 708df (1c:48df) +_HandleMidJump: ld a, [wPlayerJumpingYScreenCoordsIndex] ld c, a inc a @@ -541,6 +542,6 @@ _HandleMidJump: ; 708df (1c:48df) ld [wJoyIgnore], a ret -PlayerJumpingYScreenCoords: ; 7091b (1c:491b) +PlayerJumpingYScreenCoords: ; Sequence of y screen coordinates for player's sprite when jumping over a ledge. db $38, $36, $34, $32, $31, $30, $30, $30, $31, $32, $33, $34, $36, $38, $3C, $3C diff --git a/engine/overworld/pokecenter.asm b/engine/overworld/pokecenter.asm index 65dfcd87..1801d9e9 100755 --- a/engine/overworld/pokecenter.asm +++ b/engine/overworld/pokecenter.asm @@ -1,4 +1,4 @@ -DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97) +DisplayPokemonCenterDialogue_: ld a, [wCurMap] cp PEWTER_POKECENTER jr nz, .regularCenter @@ -32,7 +32,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97) call LoadCurrentMapView call Delay3 call UpdateSprites - callab Func_fd252 ; todo + callab PikachuWalksToNurseJoy ; todo .notHealingPlayerPikachu ld hl, NeedYourPokemonText call PrintText @@ -40,7 +40,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97) call DelayFrames call CheckPikachuFollowingPlayer jr nz, .playerPikachuNotOnScreen - call Func_152d + call DisablePikachuOverworldSpriteDrawing callab IsStarterPikachuInOurParty call c, Func_6eaa .playerPikachuNotOnScreen @@ -64,7 +64,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97) call c, Func_6eaa ld a, $5 ld [wPikachuSpawnState], a - call Func_1525 + call EnablePikachuOverworldSpriteDrawing .doNotReturnPikachu lb bc, 1, 0 call Func_6ebb @@ -97,7 +97,7 @@ DisplayPokemonCenterDialogue_: ; 6d97 (1:6d97) call UpdateSprites ret -Func_6eaa: ; 6eaa (1:6eaa) +Func_6eaa: ld a, $1 ld [H_SPRITEINDEX], a ld a, $4 @@ -107,7 +107,7 @@ Func_6eaa: ; 6eaa (1:6eaa) call DelayFrames ret -Func_6ebb: ; 6ebb (1:6ebb) +Func_6ebb: ld a, b ld [H_SPRITEINDEX], a ld a, c @@ -122,28 +122,28 @@ Func_6ebb: ; 6ebb (1:6ebb) call SpriteFunc_34a1 ret -PokemonCenterWelcomeText: ; 6de0 (1:6de0) +PokemonCenterWelcomeText: TX_FAR _PokemonCenterWelcomeText db "@" -ShallWeHealYourPokemonText: ; 6de5 (1:6de5) +ShallWeHealYourPokemonText: db $a TX_FAR _ShallWeHealYourPokemonText db "@" -NeedYourPokemonText: ; 6deb (1:6deb) +NeedYourPokemonText: TX_FAR _NeedYourPokemonText db "@" -PokemonFightingFitText: ; 6ee0 (1:6ee0) +PokemonFightingFitText: TX_FAR _PokemonFightingFitText db "@" -PokemonCenterFarewellText: ; 6ee5 (1:6ee5) +PokemonCenterFarewellText: db $a TX_FAR _PokemonCenterFarewellText db "@" -LooksContentText: ; 6eeb (1:6eeb) +LooksContentText: TX_FAR _LooksContentText - db "@"
\ No newline at end of file + db "@" diff --git a/engine/overworld/pokemart.asm b/engine/overworld/pokemart.asm index ca3f8991..823939b1 100755 --- a/engine/overworld/pokemart.asm +++ b/engine/overworld/pokemart.asm @@ -1,4 +1,4 @@ -DisplayPokemartDialogue_: ; 69a5 (1:69a5) +DisplayPokemartDialogue_: ld a,[wListScrollOffset] ld [wSavedListScrollOffset],a call UpdateSprites @@ -227,46 +227,46 @@ DisplayPokemartDialogue_: ; 69a5 (1:69a5) ld [wListScrollOffset],a ret -PokemartBuyingGreetingText: ; 6b91 (1:6b91) +PokemartBuyingGreetingText: TX_FAR _PokemartBuyingGreetingText db "@" -PokemartTellBuyPriceText: ; 6b96 (1:6b96) +PokemartTellBuyPriceText: TX_FAR _PokemartTellBuyPriceText db "@" -PokemartBoughtItemText: ; 6b9b (1:6b9b) +PokemartBoughtItemText: TX_FAR _PokemartBoughtItemText db "@" -PokemartNotEnoughMoneyText: ; 6ba0 (1:6ba0) +PokemartNotEnoughMoneyText: TX_FAR _PokemartNotEnoughMoneyText db "@" -PokemartItemBagFullText: ; 6ba5 (1:6ba5) +PokemartItemBagFullText: TX_FAR _PokemartItemBagFullText db "@" -PokemonSellingGreetingText: ; 6baa (1:6baa) +PokemonSellingGreetingText: TX_FAR _PokemonSellingGreetingText db "@" -PokemartTellSellPriceText: ; 6baf (1:6baf) +PokemartTellSellPriceText: TX_FAR _PokemartTellSellPriceText db "@" -PokemartItemBagEmptyText: ; 6bb4 (1:6bb4) +PokemartItemBagEmptyText: TX_FAR _PokemartItemBagEmptyText db "@" -PokemartUnsellableItemText: ; 6bb9 (1:6bb9) +PokemartUnsellableItemText: TX_FAR _PokemartUnsellableItemText db "@" -PokemartThankYouText: ; 6bbe (1:6bbe) +PokemartThankYouText: TX_FAR _PokemartThankYouText db "@" -PokemartAnythingElseText: ; 6bc3 (1:6bc3) +PokemartAnythingElseText: TX_FAR _PokemartAnythingElseText db "@" diff --git a/engine/overworld/print_safari_steps.asm b/engine/overworld/print_safari_steps.asm index 3f2ada03..01dd34e0 100644 --- a/engine/overworld/print_safari_steps.asm +++ b/engine/overworld/print_safari_steps.asm @@ -1,4 +1,4 @@ -PrintSafariZoneSteps: ; c27b (3:427b) +PrintSafariZoneSteps: ld a, [wCurMap] cp SAFARI_ZONE_EAST ret c @@ -29,8 +29,8 @@ PrintSafariZoneSteps: ; c27b (3:427b) lb bc, 1, 2 jp PrintNumber -SafariSteps: ; c2c4 (3:42c4) +SafariSteps: db "/500@" -SafariBallText: ; c5c9 (3:42c9) - db "BALL×× @"
\ No newline at end of file +SafariBallText: + db "BALL×× @" diff --git a/engine/overworld/replace_tile_block.asm b/engine/overworld/replace_tile_block.asm index 32c652ea..8577b9e7 100644 --- a/engine/overworld/replace_tile_block.asm +++ b/engine/overworld/replace_tile_block.asm @@ -2,7 +2,7 @@ ; and redraws the map view if necessary ; b = Y ; c = X -ReplaceTileBlock: ; ed1b (3:6d1b) +ReplaceTileBlock: call GetPredefRegisters ld hl, wOverworldMap ld a, [wCurMapWidth] @@ -46,7 +46,7 @@ ReplaceTileBlock: ; ed1b (3:6d1b) call CompareHLWithBC ret c ; return if the replaced tile block is above the map view in memory -RedrawMapView: ; ed59 (3:6d59) +RedrawMapView: ld a, [wIsInBattle] inc a ret z @@ -117,10 +117,10 @@ RedrawMapView: ; ed59 (3:6d59) ld [H_AUTOBGTRANSFERENABLED], a ret -CompareHLWithBC: ; edcb (3:6dcb) +CompareHLWithBC: ld a, h sub b ret nz ld a, l sub c - ret
\ No newline at end of file + ret diff --git a/engine/overworld/saffron_guards.asm b/engine/overworld/saffron_guards.asm index 83d73d02..3b26b6f8 100755 --- a/engine/overworld/saffron_guards.asm +++ b/engine/overworld/saffron_guards.asm @@ -1,4 +1,4 @@ -RemoveGuardDrink: ; 5a53a (16:653a) +RemoveGuardDrink: ld hl, GuardDrinksList .drinkLoop ld a, [hli] @@ -12,5 +12,5 @@ RemoveGuardDrink: ; 5a53a (16:653a) jr z, .drinkLoop jpba RemoveItemByID -GuardDrinksList: ; 5a552 (16:6552) +GuardDrinksList: db FRESH_WATER, SODA_POP, LEMONADE, $00 diff --git a/engine/overworld/set_blackout_map.asm b/engine/overworld/set_blackout_map.asm index 5faef173..9bfe82bd 100644 --- a/engine/overworld/set_blackout_map.asm +++ b/engine/overworld/set_blackout_map.asm @@ -1,4 +1,4 @@ -SetLastBlackoutMap: ; 6ef0 (1:6ef0) +SetLastBlackoutMap: ; Set the map to return to when ; blacking out or using Teleport or Dig. ; Safari rest houses don't count. @@ -22,8 +22,8 @@ SetLastBlackoutMap: ; 6ef0 (1:6ef0) pop hl ret -SafariZoneRestHouses: ; 6f0a (1:6f0a) +SafariZoneRestHouses: db SAFARI_ZONE_REST_HOUSE_2 db SAFARI_ZONE_REST_HOUSE_3 db SAFARI_ZONE_REST_HOUSE_4 - db -1
\ No newline at end of file + db -1 diff --git a/engine/overworld/special_warps.asm b/engine/overworld/special_warps.asm index 8c1b4159..4814e668 100644 --- a/engine/overworld/special_warps.asm +++ b/engine/overworld/special_warps.asm @@ -1,4 +1,4 @@ -SpecialWarpIn: ; 6042 (1:6042) +SpecialWarpIn: call LoadSpecialWarpData predef LoadTilesetHeader ld hl,wd732 @@ -29,7 +29,7 @@ SpecialWarpIn: ; 6042 (1:6042) ret ; gets the map ID, tile block map view pointer, tileset, and coordinates -LoadSpecialWarpData: ; 6073 (1:6073) +LoadSpecialWarpData: ld a, [wd72d] cp TRADE_CENTER jr nz, .notTradeCenter @@ -144,4 +144,4 @@ LoadSpecialWarpData: ; 6073 (1:6073) ld [wXOffsetSinceLastSpecialWarp], a ld a, $ff ; the player's coordinates have already been updated using a special warp, so don't use any of the normal warps ld [wDestinationWarpID], a - ret
\ No newline at end of file + ret diff --git a/engine/overworld/ssanne.asm b/engine/overworld/ssanne.asm index d0d957be..347dc459 100755 --- a/engine/overworld/ssanne.asm +++ b/engine/overworld/ssanne.asm @@ -1,4 +1,4 @@ -AnimateBoulderDust: ; 7a0fb (1e:60fb) +AnimateBoulderDust: ld a, $1 ld [wWhichAnimationOffsets], a ; select the boulder dust offsets ld a, [wUpdateSpritesEnabled] @@ -31,7 +31,7 @@ AnimateBoulderDust: ; 7a0fb (1e:60fb) ld [wUpdateSpritesEnabled], a jp LoadPlayerSpriteGraphics -GetMoveBoulderDustFunctionPointer: ; 7913f (1e:613f) +GetMoveBoulderDustFunctionPointer: ld a, [wPlayerFacingDirection] ; player's sprite facing direction ld hl, MoveBoulderDustFunctionPointerTable ld c, a @@ -53,7 +53,7 @@ GetMoveBoulderDustFunctionPointer: ; 7913f (1e:613f) pop hl ret -MoveBoulderDustFunctionPointerTable: ; 7a15d (1e:615d) +MoveBoulderDustFunctionPointerTable: ; facing down db $FF,$00 dw AdjustOAMBlockYPos @@ -70,7 +70,7 @@ MoveBoulderDustFunctionPointerTable: ; 7a15d (1e:615d) db $FF,$01 dw AdjustOAMBlockXPos -LoadSmokeTileFourTimes: ; 7916d (1e:616d) +LoadSmokeTileFourTimes: ld hl, vChars1 + $7c0 ld c, $4 .loop @@ -85,11 +85,11 @@ LoadSmokeTileFourTimes: ; 7916d (1e:616d) jr nz, .loop ret -LoadSmokeTile: ; 7a181 (1e:6181) +LoadSmokeTile: ld de, SSAnneSmokePuffTile lb bc, BANK(SSAnneSmokePuffTile), (SSAnneSmokePuffTileEnd - SSAnneSmokePuffTile) / $10 jp CopyVideoData -SSAnneSmokePuffTile: ; 7a18a (1e:618a) +SSAnneSmokePuffTile: INCBIN "gfx/ss_anne_smoke_puff.2bpp" SSAnneSmokePuffTileEnd: diff --git a/engine/overworld/step_functions.asm b/engine/overworld/step_functions.asm index bc1a74aa..84b09291 100644 --- a/engine/overworld/step_functions.asm +++ b/engine/overworld/step_functions.asm @@ -1,4 +1,4 @@ -ApplyOutOfBattlePoisonDamage: ; c3de (3:43de) +ApplyOutOfBattlePoisonDamage: ld a, [wd730] add a jp c, .noBlackOut ; no black out if joypad states are being simulated @@ -124,7 +124,7 @@ ApplyOutOfBattlePoisonDamage: ; c3de (3:43de) ld [wOutOfBattleBlackout], a ret -Func_c4c7: ; c4c7 (3:44c7) +Func_c4c7: ld a, [wStepCounter] and a jr nz, .asm_c4de @@ -148,4 +148,4 @@ Func_c4c7: ; c4c7 (3:44c7) .asm_c4ef xor a ld [wd49c], a - ret
\ No newline at end of file + ret diff --git a/engine/overworld/trainers.asm b/engine/overworld/trainers.asm index 9dee81bd..655c6b2a 100755 --- a/engine/overworld/trainers.asm +++ b/engine/overworld/trainers.asm @@ -1,4 +1,4 @@ -_GetSpritePosition1: ; 56745 (15:6745) +_GetSpritePosition1: ld hl, wSpriteStateData1 ld de, $4 ld a, [wSpriteIndex] @@ -17,7 +17,7 @@ _GetSpritePosition1: ; 56745 (15:6745) ld [$ffee], a ret -_GetSpritePosition2: ; 56765 (15:6765) +_GetSpritePosition2: ld hl, wSpriteStateData1 ld de, $4 ld a, [wSpriteIndex] @@ -36,7 +36,7 @@ _GetSpritePosition2: ; 56765 (15:6765) ld [wSavedSpriteMapX], a ret -_SetSpritePosition1: ; 56789 (15:6789) +_SetSpritePosition1: ld hl, wSpriteStateData1 ld de, $4 ld a, [wSpriteIndex] @@ -55,9 +55,9 @@ _SetSpritePosition1: ; 56789 (15:6789) ld [hl], a ret -_SetSpritePosition2: ; 567a9 (15:67a9) +_SetSpritePosition2: ld hl, wSpriteStateData1 - ld de, $4 + ld de, 4 ld a, [wSpriteIndex] ld [H_SPRITEINDEX], a call GetSpriteDataPointer @@ -74,7 +74,7 @@ _SetSpritePosition2: ; 567a9 (15:67a9) ld [hl], a ; c2x5 (map X pos) ret -TrainerWalkUpToPlayer: ; 567cd (15:67cd) +TrainerWalkUpToPlayer: ld a, [wSpriteIndex] swap a ld [wTrainerSpriteOffset], a @@ -149,7 +149,7 @@ TrainerWalkUpToPlayer: ; 567cd (15:67cd) ; input: de = offset within sprite entry ; output: hl = pointer to sprite data -GetSpriteDataPointer: ; 5684f (15:684f) +GetSpriteDataPointer: push de add hl, de ld a, [H_SPRITEINDEX] @@ -161,7 +161,7 @@ GetSpriteDataPointer: ; 5684f (15:684f) ret ; tests if this trainer is in the right position to engage the player and do so if she is. -TrainerEngage: ; 5685b (15:685b) +TrainerEngage: push hl push de ld a, [wTrainerSpriteOffset] @@ -232,7 +232,7 @@ TrainerEngage: ; 5685b (15:685b) ret ; reads trainer's Y position to wTrainerScreenY and X position to wTrainerScreenX -ReadTrainerScreenPosition: ; 568da (15:68da) +ReadTrainerScreenPosition: ld a, [wTrainerSpriteOffset] add $4 ld d, $0 @@ -254,7 +254,7 @@ ReadTrainerScreenPosition: ; 568da (15:68da) ; checks if the sprite is properly lined up with the player with respect to the direction it's looking. Also checks the distance between player and sprite ; note that this does not necessarily mean the sprite is seeing the player, he could be behind it's back ; a: distance player to sprite -CheckSpriteCanSeePlayer: ; 569af (15:69af) +CheckSpriteCanSeePlayer: ld b, a ld a, [wTrainerEngageDistance] ; how far the trainer can see cp b @@ -262,13 +262,13 @@ CheckSpriteCanSeePlayer: ; 569af (15:69af) jr .notInLine ; player too far away .checkIfLinedUp ld a, [wTrainerFacingDirection] ; sprite facing direction - cp SPRITE_FACING_DOWN ; down + cp SPRITE_FACING_DOWN jr z, .checkXCoord - cp SPRITE_FACING_UP ; up + cp SPRITE_FACING_UP jr z, .checkXCoord - cp SPRITE_FACING_LEFT ; left + cp SPRITE_FACING_LEFT jr z, .checkYCoord - cp SPRITE_FACING_RIGHT ; right + cp SPRITE_FACING_RIGHT jr z, .checkYCoord jr .notInLine .checkXCoord @@ -290,7 +290,7 @@ CheckSpriteCanSeePlayer: ; 569af (15:69af) ret ; tests if the player is in front of the sprite (rather than behind it) -CheckPlayerIsInFrontOfSprite: ; 5692f (15:692f) +CheckPlayerIsInFrontOfSprite: ld a, [wCurMap] cp POWER_PLANT jp z, .engage ; bypass this for power plant to get voltorb fake items to work diff --git a/engine/overworld/try_pushing_boulder.asm b/engine/overworld/try_pushing_boulder.asm index b7e04092..a00790b9 100644 --- a/engine/overworld/try_pushing_boulder.asm +++ b/engine/overworld/try_pushing_boulder.asm @@ -1,8 +1,8 @@ -TryPushingBoulder: ; f0a1 (3:70a1) +TryPushingBoulder: ld a, [wd728] bit 0, a ; using Strength? ret z -Func_f0a7: ; f0a7 (3:70a7) +Func_f0a7: ; where LoadMissableObjects predef points to now ld a, [wFlags_0xcd60] bit 1, a ; has boulder dust animation from previous push played yet? @@ -72,19 +72,19 @@ Func_f0a7: ; f0a7 (3:70a7) set 1, [hl] ret -PushBoulderUpMovementData: ; f129 (3:7129) +PushBoulderUpMovementData: db NPC_MOVEMENT_UP,$FF -PushBoulderDownMovementData: ; f12b (3:712b) +PushBoulderDownMovementData: db NPC_MOVEMENT_DOWN,$FF -PushBoulderLeftMovementData: ; f12d (3:712d) +PushBoulderLeftMovementData: db NPC_MOVEMENT_LEFT,$FF -PushBoulderRightMovementData: ; f12f (3:712f) +PushBoulderRightMovementData: db NPC_MOVEMENT_RIGHT,$FF -DoBoulderDustAnimation: ; f131 (3:7131) +DoBoulderDustAnimation: ld a, [wd730] bit 0, a ret nz @@ -100,8 +100,8 @@ DoBoulderDustAnimation: ; f131 (3:7131) ld a, SFX_CUT jp PlaySound -ResetBoulderPushFlags: ; f159 (3:7159) +ResetBoulderPushFlags: ld hl, wFlags_0xcd60 res 1, [hl] res 6, [hl] - ret
\ No newline at end of file + ret diff --git a/engine/palettes.asm b/engine/palettes.asm index 636e5e97..c6c234ae 100755 --- a/engine/palettes.asm +++ b/engine/palettes.asm @@ -1,4 +1,4 @@ -_RunPaletteCommand: ; 71ddf (1c:5ddf) +_RunPaletteCommand: call GetPredefRegisters ld a, b cp $ff @@ -19,13 +19,13 @@ _RunPaletteCommand: ; 71ddf (1c:5ddf) push de jp [hl] -SetPal_Black: ; 71ed3 (1c:5ed3) +SetPal_Black: ld hl, PalPacket_Black ld de, BlkPacket_Battle ret ; uses PalPacket_Empty to build a packet based on mon IDs and health color -SetPal_Battle: ; 71eda (1c:5eda) +SetPal_Battle: ld hl, PalPacket_Empty ld de, wPalPacket ld bc, $10 @@ -66,13 +66,13 @@ SetPal_Battle: ; 71eda (1c:5eda) ld [wDefaultPaletteCommand], a ret -SetPal_TownMap: ; 71f26 (1c:5f26) +SetPal_TownMap: ld hl, PalPacket_TownMap ld de, BlkPacket_WholeScreen ret ; uses PalPacket_Empty to build a packet based the mon ID -SetPal_StatusScreen: ; 71f2d (1c:5f2d) +SetPal_StatusScreen: ld hl, PalPacket_Empty ld de, wPalPacket ld bc, $10 @@ -95,12 +95,12 @@ SetPal_StatusScreen: ; 71f2d (1c:5f2d) ld de, BlkPacket_StatusScreen ret -SetPal_PartyMenu: ; 71f59 (1c:5f59) +SetPal_PartyMenu: ld hl, PalPacket_PartyMenu ld de, wPartyMenuBlkPacket ret -SetPal_Pokedex: ; 71f60 (1c:5f60) +SetPal_Pokedex: ld hl, PalPacket_Pokedex ld de, wPalPacket ld bc, $10 @@ -113,28 +113,28 @@ SetPal_Pokedex: ; 71f60 (1c:5f60) ld de, BlkPacket_Pokedex ret -SetPal_Slots: ; 71f7d (1c:5f7d) +SetPal_Slots: ld hl, PalPacket_Slots ld de, BlkPacket_Slots ret -SetPal_Titlescreen: ; 71f84 (1c:5f84) +SetPal_Titlescreen: ld hl, PalPacket_Titlescreen ld de, BlkPacket_Titlescreen ret ; used mostly for menus and the Oak intro -SetPal_Generic: ; 71f8b (1c:5f8b) +SetPal_Generic: ld hl, PalPacket_Generic ld de, BlkPacket_WholeScreen ret -SetPal_NidorinoIntro: ; 71f92 (1c:5f92) +SetPal_NidorinoIntro: ld hl, PalPacket_NidorinoIntro ld de, BlkPacket_NidorinoIntro ret -SetPal_GameFreakIntro: ; 71f99 (1c:5f99) +SetPal_GameFreakIntro: ld hl, PalPacket_GameFreakIntro ld de, BlkPacket_GameFreakIntro ld a, SET_PAL_GENERIC @@ -142,7 +142,7 @@ SetPal_GameFreakIntro: ; 71f99 (1c:5f99) ret ; uses PalPacket_Empty to build a packet based on the current map -SetPal_Overworld: ; 71fa5 (1c:5fa5) +SetPal_Overworld: ld hl, PalPacket_Empty ld de, wPalPacket ld bc, $10 @@ -181,26 +181,22 @@ SetPal_Overworld: ; 71fa5 (1c:5fa5) ld a, SET_PAL_OVERWORLD ld [wDefaultPaletteCommand], a ret - .PokemonTowerOrAgatha ld a, PAL_GREYMON - 1 jr .town - .caveOrBruno ld a, PAL_CAVE - 1 jr .town - .Lorelei xor a jr .town - .trade_center_colosseum ld a, PAL_GREYMON - 1 jr .town ; used when a Pokemon is the only thing on the screen ; such as evolution, trading and the Hall of Fame -SetPal_PokemonWholeScreen: ; 72001 (1c:6001) +SetPal_PokemonWholeScreen: push bc ld hl, PalPacket_Empty ld de, wPalPacket @@ -219,7 +215,7 @@ SetPal_PokemonWholeScreen: ; 72001 (1c:6001) ld de, BlkPacket_WholeScreen ret -SetPal_TrainerCard: ; 72025 (1c:6025) +SetPal_TrainerCard: ld hl, BlkPacket_TrainerCard ld de, wTrainerCardBlkPacket ld bc, $40 @@ -259,17 +255,17 @@ SetPal_TrainerCard: ; 72025 (1c:6025) ld de, wTrainerCardBlkPacket ret -SendUnknownPalPacket_7205d:: ; 7205d (1c:605d) +SendUnknownPalPacket_7205d:: ld hl, UnknownPalPacket_72811 ld de, BlkPacket_WholeScreen ret -SendUnknownPalPacket_72064:: ; 72064 (1c:6064) +SendUnknownPalPacket_72064:: ld hl, UnknownPalPacket_72821 ld de, UnknownPacket_72751 ret -SetPalFunctions: ; 7206b (1c:606b) +SetPalFunctions: dw SetPal_Black dw SetPal_Battle dw SetPal_TownMap @@ -289,7 +285,7 @@ SetPalFunctions: ; 7206b (1c:606b) ; The length of the blk data of each badge on the Trainer Card. ; The Rainbow Badge has 3 entries because of its many colors. -BadgeBlkDataLengths: ; 7208b (1c:608b) +BadgeBlkDataLengths: db 6 ; Boulder Badge db 6 ; Cascade Badge db 6 ; Thunder Badge @@ -299,9 +295,9 @@ BadgeBlkDataLengths: ; 7208b (1c:608b) db 6 ; Volcano Badge db 6 ; Earth Badge -DeterminePaletteID: ; 72093 (1c:6093) +DeterminePaletteID: ld a, [hl] -DeterminePaletteIDOutOfBattle: ; 72094 (1c:6094) +DeterminePaletteIDOutOfBattle: ld [wd11e], a and a ; is the mon index 0? jr z, .skipDexNumConversion @@ -317,7 +313,7 @@ DeterminePaletteIDOutOfBattle: ; 72094 (1c:6094) ld a, [hl] ret -YellowIntroPaletteAction:: ; 720ad (1c:60ad) +YellowIntroPaletteAction:: ld a, e and a jr nz, .asm_720bd @@ -347,7 +343,7 @@ YellowIntroPaletteAction:: ; 720ad (1c:60ad) call TransferCurBGPData ret -LoadOverworldPikachuFrontpicPalettes:: ; 720e3 (1c:60e3) +LoadOverworldPikachuFrontpicPalettes:: ld hl, PalPacket_Empty ld de, wPalPacket ld bc, $10 @@ -395,7 +391,7 @@ LoadOverworldPikachuFrontpicPalettes:: ; 720e3 (1c:60e3) .okay_2 ret -GetPal_Pikachu:: ; 7213b (1c:613b) +GetPal_Pikachu:: ; similar to SetPal_Overworld ld a, [wCurMapTileset] cp CEMETERY @@ -443,13 +439,13 @@ GetPal_Pikachu:: ; 7213b (1c:613b) ld a, PAL_GREYMON - 1 jr .town -InitPartyMenuBlkPacket: ; 7217f (1c:617f) +InitPartyMenuBlkPacket: ld hl, BlkPacket_PartyMenu ld de, wPartyMenuBlkPacket ld bc, $30 jp CopyData -UpdatePartyMenuBlkPacket: ; 7218b (1c:618b) +UpdatePartyMenuBlkPacket: ; Update the blk packet with the palette of the HP bar that is ; specified in [wWhichPartyMenuHPBar]. ld hl, wPartyMenuHPBarColors @@ -477,7 +473,7 @@ UpdatePartyMenuBlkPacket: ; 7218b (1c:618b) ld [hl], e ret -SendSGBPacket: ; 721b4 (1c:61b4) +SendSGBPacket: ld a, 1 ld [hDisableJoypadPolling], a ; don't poll joypad while sending packet call _SendSGBPacket @@ -485,7 +481,7 @@ SendSGBPacket: ; 721b4 (1c:61b4) ld [hDisableJoypadPolling], a ret -_SendSGBPacket: ; 71feb (1c:5feb) +_SendSGBPacket: ;check number of packets ld a, [hl] and a, $07 @@ -535,9 +531,8 @@ _SendSGBPacket: ; 71feb (1c:5feb) ; set P14=HIGH, P15=HIGH ld a, $30 ld [rJOYP], a - call Wait7000 ; wait for about 70000 cycles -; call Wait7000 + call Wait7000 ; restore (previously pushed) number of packets pop bc dec b @@ -546,7 +541,7 @@ _SendSGBPacket: ; 71feb (1c:5feb) ; else send 16 more bytes jr .loop2 -LoadSGB: ; 721f8 (1c:61f8) +LoadSGB: xor a ld [wOnSGB], a call CheckSGB @@ -583,7 +578,7 @@ LoadSGB: ; 721f8 (1c:61f8) ld hl, MaskEnCancelPacket jp SendSGBPacket -PrepareSuperNintendoVRAMTransfer: ; 72247 (1c:6247) +PrepareSuperNintendoVRAMTransfer: ld hl, .packetPointers ld c, 9 .loop @@ -612,7 +607,8 @@ PrepareSuperNintendoVRAMTransfer: ; 72247 (1c:6247) dw DataSnd_72901 dw DataSnd_72911 -CheckSGB: ; 7226d (1c:626d) +CheckSGB: +; Returns whether the game is running on an SGB in carry. ld hl, MltReq2Packet call SendSGBPacket call Wait7000 @@ -659,12 +655,12 @@ CheckSGB: ; 7226d (1c:626d) scf ret -SendMltReq1Packet: ; 722ce (1c:62ce) +SendMltReq1Packet: ld hl, MltReq1Packet call SendSGBPacket jp Wait7000 -CopyGfxToSuperNintendoVRAM: ; 722d7 (1c:62d7) +CopyGfxToSuperNintendoVRAM: di push de call DisableLCD @@ -705,7 +701,7 @@ CopyGfxToSuperNintendoVRAM: ; 722d7 (1c:62d7) ei ret -Wait7000: ; 7231c (1c:631c) +Wait7000: ; Each loop takes 9 cycles so this routine actually waits 63000 cycles. ld de, 7000 .loop @@ -718,7 +714,7 @@ Wait7000: ; 7231c (1c:631c) jr nz, .loop ret -SendSGBPackets: ; 72328 (1c:6328) +SendSGBPackets: ld a, [hGBC] and a jr z, .notGBC @@ -737,7 +733,7 @@ SendSGBPackets: ; 72328 (1c:6328) pop hl jp SendSGBPacket -InitGBCPalettes: ; 72346 (1c:6346) +InitGBCPalettes: ld a, [hl] and $f8 cp $20 @@ -785,7 +781,7 @@ index = index + 1 ret -GetGBCBasePalAddress:: ; 723fe (1c:63fe) +GetGBCBasePalAddress:: ; Input: a = palette ID ; Output: de = palette address push hl @@ -804,7 +800,7 @@ GetGBCBasePalAddress:: ; 723fe (1c:63fe) pop hl ret -DMGPalToGBCPal:: ; 7240f (1c:640f) +DMGPalToGBCPal:: ; Populate wGBCPal with colors from a base palette, selected using one of the ; DMG palette registers. ; Input: @@ -845,7 +841,7 @@ color_index = color_index + 1 ENDR ret -.GetColorAddress: ; 7246a (1c:646a) +.GetColorAddress: add a ld l, a xor a @@ -853,7 +849,7 @@ color_index = color_index + 1 add hl, de ret -TransferCurBGPData:: ; 72470 (1c:6470) +TransferCurBGPData:: push de add a add a @@ -878,7 +874,7 @@ TransferCurBGPData:: ; 72470 (1c:6470) pop de ret -BufferBGPPal:: ; 724a2 (1c:64a2) +BufferBGPPal:: ; Copy wGBCPal to palette a in wBGPPalsBuffer. push de add a @@ -900,7 +896,7 @@ BufferBGPPal:: ; 724a2 (1c:64a2) pop de ret -TransferBGPPals:: ; 724ba (1c:64ba) +TransferBGPPals:: ; Transfer the buffered BG palettes. ld a, [rLCDC] and rLCDC_ENABLE_MASK @@ -915,7 +911,7 @@ TransferBGPPals:: ; 724ba (1c:64ba) ei ret -.DoTransfer: ; 724cc (1c:64cc) +.DoTransfer: xor a or $80 ; auto-increment ld [rBGPI], a @@ -929,7 +925,7 @@ TransferBGPPals:: ; 724ba (1c:64ba) jr nz, .loop ret -TransferCurOBPData: ; 724df (1c:64df) +TransferCurOBPData: push de add a add a @@ -954,7 +950,7 @@ TransferCurOBPData: ; 724df (1c:64df) pop de ret -TransferPalColorLCDEnabled: ; 72511 (1c:6511) +TransferPalColorLCDEnabled: ; Transfer a palette color while the LCD is enabled. ; In case we're already in H-blank or V-blank, wait for it to end. This is a @@ -970,7 +966,7 @@ TransferPalColorLCDEnabled: ; 72511 (1c:6511) jr nz, .notInBlankingPeriod ; fall through -TransferPalColorLCDDisabled: ; 7251b (1c:651b) +TransferPalColorLCDDisabled: ; Transfer a palette color while the LCD is disabled. ld a, [hli] ld [de], a @@ -978,13 +974,13 @@ TransferPalColorLCDDisabled: ; 7251b (1c:651b) ld [de], a ret -_UpdateGBCPal_BGP_CheckDMG:: ; 72520 (1c:6520) +_UpdateGBCPal_BGP_CheckDMG:: ld a, [hGBC] and a ret z ; fall through -_UpdateGBCPal_BGP:: ; 72524 (1c:6524) +_UpdateGBCPal_BGP:: index = 0 REPT NUM_ACTIVE_PALS @@ -1003,7 +999,7 @@ index = index + 1 call TransferBGPPals ret -_UpdateGBCPal_OBP:: ; 7256c (1c:656c) +_UpdateGBCPal_OBP:: index = 0 REPT NUM_ACTIVE_PALS @@ -1033,7 +1029,7 @@ index = index + 1 ret -TranslatePalPacketToBGMapAttributes:: ; 725be (1c:65be) +TranslatePalPacketToBGMapAttributes:: ; translate the SGB pal packets into something usable for the GBC push hl pop de @@ -1064,7 +1060,7 @@ TranslatePalPacketToBGMapAttributes:: ; 725be (1c:65be) callba LoadBGMapAttributes ret -PalPacketPointers:: ; 725e2 (1c:65e2) +PalPacketPointers:: db (palPacketPointersEnd - palPacketPointers) / 2 palPacketPointers dw BlkPacket_WholeScreen @@ -1081,7 +1077,7 @@ palPacketPointers dw UnknownPacket_72751 palPacketPointersEnd -CopySGBBorderTiles: ; 725fb (1c:65fb) +CopySGBBorderTiles: ; SGB tile data is stored in a 4BPP planar format. ; Each tile is 32 bytes. The first 16 bytes contain bit planes 1 and 2, while ; the second 16 bytes contain bit planes 3 and 4. @@ -1117,4 +1113,4 @@ INCLUDE "data/mon_palettes.asm" INCLUDE "data/super_palettes.asm" -INCLUDE "data/sgb_border.asm"
\ No newline at end of file +INCLUDE "data/sgb_border.asm" diff --git a/engine/pikachu_emotions.asm b/engine/pikachu_emotions.asm index 9040e612..8702bc3f 100755 --- a/engine/pikachu_emotions.asm +++ b/engine/pikachu_emotions.asm @@ -1,4 +1,4 @@ -IsPlayerTalkingToPikachu:: ; fcf0c (3f:4f0c) +IsPlayerTalkingToPikachu: ld a, [wd436] and a ret z @@ -11,7 +11,7 @@ IsPlayerTalkingToPikachu:: ; fcf0c (3f:4f0c) ld [wd436], a ret -InitializePikachuTextID: ; fcf20 (3f:4f20) +InitializePikachuTextID: ld a, $d4 ; display ld [hSpriteIndexOrTextID], a xor a @@ -23,9 +23,9 @@ InitializePikachuTextID: ; fcf20 (3f:4f20) ld [wAutoTextBoxDrawingControl], a ret -DoStarterPikachuEmotions: ; fcf35 (3f:4f35) +DoStarterPikachuEmotions: ld e, a - ld d, $0 + ld d, 0 add hl, de add hl, de ld e, [hl] @@ -37,7 +37,7 @@ DoStarterPikachuEmotions: ; fcf35 (3f:4f35) cp $ff jr z, .done ld c, a - ld b, $0 + ld b, 0 ld hl, StarterPikachuEmotionsJumptable add hl, bc add hl, bc @@ -46,10 +46,11 @@ DoStarterPikachuEmotions: ; fcf35 (3f:4f35) ld l, a call JumpToAddress jr .loop + .done ret -StarterPikachuEmotionsJumptable: ; fcf54 (3f:4f54) +StarterPikachuEmotionsJumptable: dw StarterPikachuEmotionCommand_nop ; 0 dw StarterPikachuEmotionCommand_text ; 1 dw StarterPikachuEmotionCommand_pcm ; 2 @@ -62,11 +63,11 @@ StarterPikachuEmotionsJumptable: ; fcf54 (3f:4f54) dw StarterPikachuEmotionCommand_9 ; 9 dw StarterPikachuEmotionCommand_nop3 ; a -StarterPikachuEmotionCommand_nop: ; fcf6a (3f:4f6a) -StarterPikachuEmotionCommand_nop3: ; fcf6a (3f:4f6a) +StarterPikachuEmotionCommand_nop: +StarterPikachuEmotionCommand_nop3: ret -StarterPikachuEmotionCommand_text: ; fcf6b (3f:4f6b) +StarterPikachuEmotionCommand_text: ld a, [de] ld l, a inc de @@ -78,7 +79,7 @@ StarterPikachuEmotionCommand_text: ; fcf6b (3f:4f6b) pop de ret -StarterPikachuEmotionCommand_pcm: ; fcf77 (3f:4f77) +StarterPikachuEmotionCommand_pcm: ld a, [de] inc de push de @@ -88,13 +89,13 @@ StarterPikachuEmotionCommand_pcm: ; fcf77 (3f:4f77) pop de ret -PlayPikachuSoundClip_: ; fcf81 (3f:4f81) +PlayPikachuSoundClip_: cp $ff ret z callab PlayPikachuSoundClip ret -StarterPikachuEmotionCommand_emote: ; fcf8d (3f:4f8d) +StarterPikachuEmotionCommand_emote: ld a, [wUpdateSpritesEnabled] push af ld a, $ff @@ -108,14 +109,14 @@ StarterPikachuEmotionCommand_emote: ; fcf8d (3f:4f8d) ld [wUpdateSpritesEnabled], a ret -ShowPikachuEmoteBubble: ; fcfa2 (3f:4fa2) +ShowPikachuEmoteBubble: ld [wWhichEmotionBubble], a - ld a, $f + ld a, $f ; Pikachu ld [wEmotionBubbleSpriteIndex], a predef EmotionBubble ret -StarterPikachuEmotionCommand_movement: ; fcfb0 (3f:4fb0) +StarterPikachuEmotionCommand_movement: ld a, [de] inc de ld l, a @@ -128,7 +129,7 @@ StarterPikachuEmotionCommand_movement: ; fcfb0 (3f:4fb0) pop de ret -StarterPikachuEmotionCommand_delay: ; fcfbe (3f:4fbe) +StarterPikachuEmotionCommand_delay: ld a, [de] inc de push de @@ -137,13 +138,13 @@ StarterPikachuEmotionCommand_delay: ; fcfbe (3f:4fbe) pop de ret -StarterPikachuEmotionCommand_subcmd: ; fcfc7 (3f:4fc7) +StarterPikachuEmotionCommand_subcmd: ld a, [de] inc de push de ld e, a - ld d, $0 - ld hl, Jumptable_fcfda + ld d, 0 + ld hl, .Subcommands add hl, de add hl, de ld a, [hli] @@ -153,7 +154,7 @@ StarterPikachuEmotionCommand_subcmd: ; fcfc7 (3f:4fc7) pop de ret -Jumptable_fcfda: +.Subcommands: dw LoadPikachuSpriteIntoVRAM dw LoadFontTilePatterns dw Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3 @@ -162,94 +163,98 @@ Jumptable_fcfda: dw PikachuFanClubCheck dw PikachuBillsHouseCheck -StarterPikachuEmotionCommand_nop2: ; fcfe8 (3f:4fe8) +StarterPikachuEmotionCommand_nop2: ret -StarterPikachuEmotionCommand_9: ; fcfe9 (3f:4fe9) +StarterPikachuEmotionCommand_9: push de call StarterPikachuEmotionCommand_turnawayfromplayer call UpdateSprites pop de ret -StarterPikachuEmotionCommand_turnawayfromplayer: ; fcff2 (3f:4ff2) +StarterPikachuEmotionCommand_turnawayfromplayer: ld a, [wPlayerFacingDirection] xor $4 ld [wPikachuFacingDirection], a ret -DeletedFunction_fcffb: ; fcffb (3f:4ffb) +DeletedFunction_fcffb: ; Inexplicably empty. rept 5 nop endr ret -Func_fd001:: ; fd001 (3f:5001) +PlaySpecificPikachuEmotion: ld a, e jr load_expression -Func_fd004:: ; fd004 (3f:5004) +TalkToPikachu: call MapSpecificPikachuExpression jr c, load_expression call GetPikaPicAnimationScriptIndex call DeletedFunction_fcffb -load_expression: ; fd00f (3f:500f) +load_expression: ld [wExpressionNumber], a ld hl, PikachuEmotionTable call DoStarterPikachuEmotions ret -PikachuEmotionTable: ; fd019 (3f:4019) - dw PikachuEmotion0_fd115 - dw PikachuEmotion1_fd141 - dw PikachuEmotion2_fd116 - dw PikachuEmotion3_fd160 - dw PikachuEmotion4_fd136 - dw PikachuEmotion5_fd14d - dw PikachuEmotion6_fd153 - dw PikachuEmotion7_fd128 - dw PikachuEmotion8_fd147 - dw PikachuEmotion9_fd166 - dw PikachuEmotion10_fd11e - dw PikachuEmotion11_fd173 - dw PikachuEmotion12_fd17a - dw PikachuEmotion13_fd180 - dw PikachuEmotion14_fd189 - dw PikachuEmotion15_fd191 - dw PikachuEmotion16_fd197 - dw PikachuEmotion17_fd19d - dw PikachuEmotion18_fd1a3 - dw PikachuEmotion19_fd1a9 - dw PikachuEmotion20_fd1b1 - dw PikachuEmotion21_fd1b9 ; used a fishing rod - dw PikachuEmotion22_fd1c1 - dw PikachuEmotion23_fd1c7 - dw PikachuEmotion24_fd1cf - dw PikachuEmotion25_fd1d7 - dw PikachuEmotion26_fd1df ; wake up pikachu in pewter pokemon center - dw PikachuEmotion27_fd1eb - dw PikachuEmotion28_fd1f1 - dw PikachuEmotion29_fd1f7 - dw PikachuEmotion30_fd1fc - dw PikachuEmotion31_fd20a - dw PikachuEmotion32_fd213 - dw PikachuEmotion33_fd05d +PikachuEmotionTable: +pikaemotion_def: MACRO +\1_id: dw \1 + endm + + pikaemotion_def PikachuEmotion0 + pikaemotion_def PikachuEmotion1 + pikaemotion_def PikachuEmotion2 + pikaemotion_def PikachuEmotion3 + pikaemotion_def PikachuEmotion4 + pikaemotion_def PikachuEmotion5 + pikaemotion_def PikachuEmotion6 + pikaemotion_def PikachuEmotion7 + pikaemotion_def PikachuEmotion8 + pikaemotion_def PikachuEmotion9 + pikaemotion_def PikachuEmotion10 + pikaemotion_def PikachuEmotion11 + pikaemotion_def PikachuEmotion12 + pikaemotion_def PikachuEmotion13 + pikaemotion_def PikachuEmotion14 + pikaemotion_def PikachuEmotion15 + pikaemotion_def PikachuEmotion16 + pikaemotion_def PikachuEmotion17 + pikaemotion_def PikachuEmotion18 + pikaemotion_def PikachuEmotion19 + pikaemotion_def PikachuEmotion20 + pikaemotion_def PikachuEmotion21 ; used a fishing rod + pikaemotion_def PikachuEmotion22 + pikaemotion_def PikachuEmotion23 + pikaemotion_def PikachuEmotion24 + pikaemotion_def PikachuEmotion25 + pikaemotion_def PikachuEmotion26 ; wake up pikachu in pewter pokemon center + pikaemotion_def PikachuEmotion27 + pikaemotion_def PikachuEmotion28 + pikaemotion_def PikachuEmotion29 + pikaemotion_def PikachuEmotion30 + pikaemotion_def PikachuEmotion31 + pikaemotion_def PikachuEmotion32 + pikaemotion_def PikachuEmotion33 -PikachuEmotion33_fd05d: ; fd05d (3f:505d) +PikachuEmotion33: db $ff -MapSpecificPikachuExpression: ; fd05e (3f:505e) +MapSpecificPikachuExpression: ld a, [wCurMap] cp POKEMON_FAN_CLUB jr nz, .notFanClub ld hl, wd492 bit 7, [hl] - ld a, $1d - jr z, .set_carry + ldpikaemotion a, PikachuEmotion29 + jr z, .play_emotion call CheckPikachuFollowingPlayer - ld a, $1e - jr nz, .set_carry + ldpikaemotion a, PikachuEmotion30 + jr nz, .play_emotion jr .check_pikachu_status .notFanClub @@ -257,60 +262,64 @@ MapSpecificPikachuExpression: ; fd05e (3f:505e) cp PEWTER_POKECENTER jr nz, .notPewterPokecenter call CheckPikachuFollowingPlayer - ld a, $1a - jr nz, .set_carry + ldpikaemotion a, PikachuEmotion26 + jr nz, .play_emotion jr .check_pikachu_status .notPewterPokecenter callab Func_f24ae ld a, e cp $ff - jr nz, .set_carry + jr nz, .play_emotion jr .check_pikachu_status ; useless .check_pikachu_status call IsPlayerPikachuAsleepInParty - ld a, $b - jr c, .set_carry + ldpikaemotion a, PikachuEmotion11 + jr c, .play_emotion callab CheckPikachuFaintedOrStatused ; same bank - ld a, $1c - jr c, .set_carry + ldpikaemotion a, PikachuEmotion28 + jr c, .play_emotion ld a, [wCurMap] cp POKEMONTOWER_1 jr c, .notInLavenderTower cp POKEMONTOWER_7 + 1 - ld a, $16 - jr c, .set_carry + ldpikaemotion a, PikachuEmotion22 + jr c, .play_emotion .notInLavenderTower ld a, [wd49c] and a - jr z, .no_carry + jr z, .mood_based_emotion dec a ld c, a ld b, $0 - ld hl, Pointer_fd0cb + ld hl, .Emotions add hl, bc ld a, [hl] - jr .set_carry + jr .play_emotion -.no_carry +.mood_based_emotion and a ret -.set_carry +.play_emotion scf ret -Pointer_fd0cb: - db $12, $15, $17, $18, $19 +.Emotions: + dpikaemotion PikachuEmotion18 + dpikaemotion PikachuEmotion21 + dpikaemotion PikachuEmotion23 + dpikaemotion PikachuEmotion24 + dpikaemotion PikachuEmotion25 -IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0) +IsPlayerPikachuAsleepInParty: xor a ld [wWhichPokemon], a .loop ld a, [wWhichPokemon] ld c, a - ld b, $0 + ld b, 0 ld hl, wPartySpecies add hl, bc ld a, [hl] @@ -328,6 +337,7 @@ IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0) and SLP jr z, .done jr .curMonSleepingPikachu + .curMonNotStarterPikachu ld a, [wWhichPokemon] cp PARTY_LENGTH - 1 @@ -335,75 +345,77 @@ IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0) inc a ld [wWhichPokemon], a jr .loop + .curMonSleepingPikachu scf ret + .done and a ret INCLUDE "data/pikachu_emotions.asm" -Func_fd252: ; fd252 (3f:5252) +PikachuWalksToNurseJoy: ld a, $40 ld [h_0xFFFC], a call LoadPikachuSpriteIntoVRAM - call Func_fd266 + call .GetMovementData and a - jr z, .asm_fd262 + jr z, .skip call ApplyPikachuMovementData -.asm_fd262 +.skip xor a ld [h_0xFFFC], a ret -Func_fd266: - ld a, [wSpriteStateData2 + 15 * 16 + 4] +.GetMovementData: + ld a, [wPikachuMapY] ld e, a - ld a, [wSpriteStateData2 + 15 * 16 + 5] + ld a, [wPikachuMapX] ld d, a ld a, [wYCoord] add 4 cp e - jr z, .asm_fd280 - jr nc, .asm_fd27e - ld hl, Data_fd294 + jr z, .pikachu_at_same_y_as_player + jr nc, .pikachu_above_player + ld hl, .PikaMovementData1 ld a, 1 ret -.asm_fd27e +.pikachu_above_player xor a ret -.asm_fd280 +.pikachu_at_same_y_as_player ld a, [wXCoord] add 4 cp d - jr c, .asm_fd28e - ld hl, Data_fd299 + jr c, .pikachu_to_right_of_player + ld hl, .PikaMovementData2 ld a, 2 ret -.asm_fd28e - ld hl, Data_fd29d +.pikachu_to_right_of_player + ld hl, .PikaMovementData3 ld a, 3 ret -Data_fd294: - db $00 - db $36 - db $2b - db $34 - db $3f +.PikaMovementData1: + db $00 ; init + db $36 ; look up + db $2b ; walk up left + db $34 ; hop up right + db $3f ; ret -Data_fd299: - db $00 - db $36 - db $34 - db $3f +.PikaMovementData2: + db $00 ; init + db $36 ; look up + db $34 ; hop up right + db $3f ; ret -Data_fd29d: - db $00 - db $36 - db $33 - db $3f +.PikaMovementData3: + db $00 ; init + db $36 ; look up + db $33 ; hop up left + db $3f ; ret diff --git a/engine/pikachu_follow.asm b/engine/pikachu_follow.asm index a715b0a3..b5791919 100755 --- a/engine/pikachu_follow.asm +++ b/engine/pikachu_follow.asm @@ -1,4 +1,4 @@ -Func_fc4dd:: ; fc4dd (3f:44dd) +ShouldPikachuSpawn:: ; possibly to test if pika should be out? ld a, [wPikachuOverworldStateFlags] bit 5, a @@ -18,7 +18,7 @@ Func_fc4dd:: ; fc4dd (3f:44dd) and a ret -Func_fc4fa:: ; fc4fa (3f:44fa) +SchedulePikachuSpawnForAfterText:: ld hl, wPikachuOverworldStateFlags bit 4, [hl] res 4, [hl] @@ -39,7 +39,7 @@ Func_fc4fa:: ; fc4fa (3f:44fa) ld [wPikachuFacingDirection], a ret -ClearPikachuSpriteStateData:: ; fc523 (3f:4523) +ClearPikachuSpriteStateData:: ld hl, wPikachuPictureID call .clear ld hl, wPikachuSpriteStateData2 @@ -49,14 +49,14 @@ ClearPikachuSpriteStateData:: ; fc523 (3f:4523) call FillMemory ret -Func_fc534:: ; fc534 (3f:4534) +CalculatePikachuSpawnCoordsAndFacing:: call CalculatePikachuPlacementCoords call CalculatePikachuFacingDirection xor a ld [wPikachuSpawnState], a ret -CalculatePikachuPlacementCoords:: ; fc53f (3f:453f) +CalculatePikachuPlacementCoords:: ld bc, wPikachuPictureID ld a, [wYCoord] add $4 @@ -145,7 +145,7 @@ CalculatePikachuPlacementCoords:: ; fc53f (3f:453f) pop hl ret -CalculatePikachuFacingDirection:: ; fc5bc (3f:45bc) +CalculatePikachuFacingDirection:: ld a, $49 ld [wPikachuPictureID], a ld a, $ff @@ -182,7 +182,7 @@ CalculatePikachuFacingDirection:: ; fc5bc (3f:45bc) ld [wPikachuFacingDirection], a ret -CalculatePikachuSpawnState1:: ; fc5fa (3f:45fa) +CalculatePikachuSpawnState1:: ld a, [wCurMap] cp OAKS_LAB jr z, .oaks_lab @@ -234,7 +234,7 @@ CalculatePikachuSpawnState1:: ; fc5fa (3f:45fa) ld [wPikachuSpawnState], a ret -Pointer_fc64b:: ; fc64b (3f:464b) +Pointer_fc64b:: db VICTORY_ROAD_2 db ROUTE_7_GATE db ROUTE_8_GATE @@ -244,7 +244,7 @@ Pointer_fc64b:: ; fc64b (3f:464b) db ROUTE_11_GATE_1F db $ff -Pointer_fc653:: ; fc653 (3f:4653) +Pointer_fc653:: db VIRIDIAN_FOREST_EXIT db CERULEAN_HOUSE_2 db TRASHED_HOUSE @@ -254,7 +254,7 @@ Pointer_fc653:: ; fc653 (3f:4653) db FUCHSIA_HOUSE_3 db $ff -CalculatePikachuSpawnState2:: ; fc65b (3f:465b) +CalculatePikachuSpawnState2:: ld a, [wCurMap] cp VIRIDIAN_FOREST_EXIT jr z, .viridian_forest_exit @@ -288,7 +288,7 @@ CalculatePikachuSpawnState2:: ; fc65b (3f:465b) ld [wPikachuSpawnState], a ret -Pointer_fc68e:: ; fc68e (3f:468e) +Pointer_fc68e:: db VIRIDIAN_FOREST db SAFARI_ZONE_REST_HOUSE_1 db SAFARI_ZONE_REST_HOUSE_2 @@ -302,7 +302,7 @@ Pointer_fc68e:: ; fc68e (3f:468e) db CINNABAR_LAB_4 db $ff -CalculatePikachuSpawnState3:: ; fc69a (3f:469a) +CalculatePikachuSpawnState3:: ld a, [wCurMap] cp ROUTE_22_GATE jr z, .asm_fc6a7 @@ -334,23 +334,23 @@ CalculatePikachuSpawnState3:: ; fc69a (3f:469a) ld [wPikachuSpawnState], a ret -SetPikachuOverworldStateFlag2:: ; fc6c5 (3f:46c5) +SetPikachuOverworldStateFlag2:: push hl ld hl, wPikachuOverworldStateFlags set 2, [hl] pop hl ret -ResetPikachuOverworldStateFlag2:: ; fc6cd (3f:46cd) +ResetPikachuOverworldStateFlag2:: push hl ld hl, wPikachuOverworldStateFlags res 2, [hl] pop hl ret -SpawnPikachu_:: ; fc6d5 (3f:46d5) +SpawnPikachu_:: call ResetPikachuOverworldStateFlag2 - call Func_fc727 + call TrySpawnPikachu ret nc push bc @@ -358,16 +358,16 @@ SpawnPikachu_:: ; fc6d5 (3f:46d5) pop bc ret c - ld bc, wPikachuPictureID - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld bc, wPikachuSpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc bit 7, [hl] - jp nz, asm_fc745 + jp nz, Func_fc745 ld a, [wFontLoaded] bit 0, a - jp nz, asm_fc76a + jp nz, Func_fc76a call CheckPikachuFollowingPlayer - jp nz, asm_fc76a + jp nz, Func_fc76a ld a, [hl] and $7f cp $a @@ -384,7 +384,7 @@ SpawnPikachu_:: ; fc6d5 (3f:46d5) ld l, a jp hl -PointerTable_fc710: ; fc710 (3f:4710) +PointerTable_fc710: dw Func_fc793 dw Func_fc7aa dw Func_fc803 @@ -395,20 +395,20 @@ PointerTable_fc710: ; fc710 (3f:4710) dw asm_fc904 dw asm_fc937 dw asm_fc969 - dw Func_fc726 + dw .nop -Func_fc726: ; fc726 (3f:4726) +.nop: ret -Func_fc727: ; fc727 (3f:4727) - call Func_fc4dd +TrySpawnPikachu: + call ShouldPikachuSpawn jr nc, .dont_spawn ld a, [wPikachuMovementStatus] and a jr nz, .already_spawned push bc push hl - call Func_fc534 + call CalculatePikachuSpawnCoordsAndFacing pop hl pop bc .already_spawned @@ -423,64 +423,65 @@ Func_fc727: ; fc727 (3f:4727) xor a ret -asm_fc745: ; fc745 (3f:4745) - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 +Func_fc745: + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc res 7, [hl] - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], a call CheckPikachuFollowingPlayer - jr nz, .asm_fc75f + jr nz, .okay + ; Have Pikachu face in the opposite direction of you ld a, [wPlayerFacingDirection] xor $4 - ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1 + ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1 add hl, bc ld [hl], a -.asm_fc75f +.okay xor a - ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld [hli], a ld [hl], a call UpdatePikachuWalkingSprite ret -asm_fc76a: ; fc76a (3f:476a) +Func_fc76a: xor a - ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld [hli], a ld [hl], a call UpdatePikachuWalkingSprite call Func_fc82e - jr c, .asm_fc783 + jr c, .skip push bc callab InitializeSpriteScreenPosition pop bc -.asm_fc783 - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 +.skip + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $1 - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $0 call RefreshPikachuFollow ret -Func_fc793: ; fc793 (3f:4793) +Func_fc793: call RefreshPikachuFollow push bc callab InitializeSpriteScreenPosition pop bc - ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1 + ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1 add hl, bc ld [hl], $ff dec hl ld [hl], $1 ret -Func_fc7aa: ; fc7aa (3f:47aa) +Func_fc7aa: call Func_fcc92 jp c, Func_fc803 dec a @@ -494,12 +495,12 @@ Func_fc7aa: ; fc7aa (3f:47aa) ld e, l ld a, [de] inc de - ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1 + ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1 add hl, bc ld [hl], a ld a, [de] inc de - ld hl, wSprite01XStepVector - wSprite01SpriteStateData1 + ld hl, wPikachuXStepVector - wPikachuSpriteStateData1 add hl, bc ld [hl], a dec hl @@ -508,7 +509,7 @@ Func_fc7aa: ; fc7aa (3f:47aa) ld [hl], a inc de ld a, [de] - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], a cp $4 @@ -517,7 +518,7 @@ Func_fc7aa: ; fc7aa (3f:47aa) jp c, FastPikachuFollow jp NormalPikachuFollow -Pointer_fc7e3: ; fc7e3 (3f:47e3) +Pointer_fc7e3: db 0, 0 db 1, 3 db 4, 0 @@ -535,10 +536,10 @@ Pointer_fc7e3: ; fc7e3 (3f:47e3) db 12, 1 db 0, 4 -Func_fc803: ; fc803 (3f:4803) +Func_fc803: call Func_fcae2 ret c - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] jr nz, .asm_fc823 @@ -550,35 +551,35 @@ Func_fc803: ; fc803 (3f:4803) ld [hl], $20 call Random and $c - ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1 + ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1 add hl, bc ld [hl], a .asm_fc823 xor a - ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld [hli], a ld [hl], a call UpdatePikachuWalkingSprite ret -Func_fc82e: ; fc82e (3f:482e) +Func_fc82e: ld a, [wWalkCounter] and a ret z scf ret -Func_fc835: ; fc835 (3f:4835) - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 +Func_fc835: + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $10 - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $1 ret -Func_fc842: ; fc842 (3f:4842) +Func_fc842: ld hl, $0 push af call Random @@ -595,30 +596,30 @@ Func_fc842: ; fc842 (3f:4842) pop af jp hl -PointerTable_fc85a: ; fc85a (3f:485a) +PointerTable_fc85a: dw Func_fc862 dw Func_fc8f8 dw Func_fc92b dw Func_fc95d -Func_fc862: ; fc862 (3f:4862) +Func_fc862: dec a add a add a and $c - ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1 + ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1 add hl, bc ld [hl], a - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $6 xor a ld [wd432], a ld [wd433], a - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $11 -asm_fc87f: ; fc87f (3f:487f) +asm_fc87f: ld a, [wd432] ld e, a ld a, [wd433] @@ -626,7 +627,7 @@ asm_fc87f: ; fc87f (3f:487f) call Func_fc82e jr c, Func_fc8c7 call SetPikachuOverworldStateFlag2 - ld hl, wSprite01YPixels - wSprite01SpriteStateData1 + ld hl, wPikachuYPixels - wPikachuSpriteStateData1 add hl, bc ld a, [hl] sub e @@ -636,7 +637,7 @@ asm_fc87f: ; fc87f (3f:487f) ld a, [hl] sub d ld d, a - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld a, [hl] dec a @@ -654,20 +655,20 @@ asm_fc87f: ; fc87f (3f:487f) ld [wd433], a add d ld d, a - ld hl, wSprite01YPixels - wSprite01SpriteStateData1 + ld hl, wPikachuYPixels - wPikachuSpriteStateData1 add hl, bc ld [hl], e inc hl inc hl ld [hl], d - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] ret nz jp Func_fc835 -Func_fc8c7: ; fc8c7 (3f:48c7) - ld hl, wSprite01YPixels - wSprite01SpriteStateData1 +Func_fc8c7: + ld hl, wPikachuYPixels - wPikachuSpriteStateData1 add hl, bc ld a, [hl] sub e @@ -679,7 +680,7 @@ Func_fc8c7: ; fc8c7 (3f:48c7) ld [hl], a jp Func_fc835 -Pointer_fc8d6: ; fc8d6 (3f:48d6) +Pointer_fc8d6: db 0, 0 db -2, 1 db -4, 2 @@ -698,18 +699,18 @@ Pointer_fc8d6: ; fc8d6 (3f:48d6) db -2, -1 db 0, 0 -Func_fc8f8: ; fc8f8 (3f:48f8) - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 +Func_fc8f8: + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $7 - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $30 -asm_fc904: ; fc904 (3f:4904) +asm_fc904: call Func_fc82e jp c, Func_fc835 call SetPikachuOverworldStateFlag2 - ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld a, [hl] inc a @@ -724,24 +725,24 @@ asm_fc904: ; fc904 (3f:4904) ld [hl], a .asm_fc91f call UpdatePikachuWalkingSprite - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] ret nz jp Func_fc835 -Func_fc92b: ; fc92b (3f:492b) - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 +Func_fc92b: + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $20 - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $8 -asm_fc937: ; fc937 (3f:4937) +asm_fc937: call Func_fc82e jp c, Func_fc835 call SetPikachuOverworldStateFlag2 - ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld a, [hl] inc a @@ -755,48 +756,48 @@ asm_fc937: ; fc937 (3f:4937) ld [hl], a .asm_fc951 call UpdatePikachuWalkingSprite - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] ret nz jp Func_fc835 -Func_fc95d: ; fc95d (3f:495d) - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 +Func_fc95d: + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $20 - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $9 -asm_fc969: ; fc969 (3f:4969) +asm_fc969: call Func_fc82e jp c, Func_fc835 call SetPikachuOverworldStateFlag2 - ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld a, [hl] inc a cp $8 ld [hl], a - jr nz, .asm_fc988 + jr nz, .skip xor a ld [hl], a - ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1 + ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1 add hl, bc ld a, [hl] - call Func_fc994 + call .TurnClockwise ld [hl], a -.asm_fc988 +.skip call UpdatePikachuWalkingSprite - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] ret nz jp Func_fc835 -Func_fc994: ; fc994 (3f:4994) +.TurnClockwise: push hl - ld hl, Pointer_fc9ac + ld hl, .Facings ld d, a .loop ld a, [hli] @@ -806,101 +807,101 @@ Func_fc994: ; fc994 (3f:4994) pop hl ret -Func_fc9a0: ; fc9a0 (3f:49a0) +.TurnCounterclockwise: push hl - ld hl, Pointer_fc9ac_End + ld hl, .Facings_End ld d, a -.loop +.loop_ ld a, [hld] cp d - jr nz, .loop + jr nz, .loop_ ld a, [hl] pop hl ret -Pointer_fc9ac: ; fc9ac (3f:49ac) +.Facings: db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT -Pointer_fc9ac_End: +.Facings_End: -NormalPikachuFollow: ; fc9b4 (3f:49b4) - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 +NormalPikachuFollow: + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $8 - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $3 call AddPikachuStepVector -asm_fc9c3: ; fc9c3 (3f:49c3) +asm_fc9c3: call TryDoubleAddPikachuStepVectorToScreenPixelCoords call GetPikachuWalkingAnimationSpeed call UpdatePikachuWalkingSprite - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] ret nz call ResetPikachuStepVector call ComputePikachuFacingDirection - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $1 ret -FastPikachuFollow: ; fc9df (3f:49df) - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 +FastPikachuFollow: + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $4 - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $5 call AddPikachuStepVector -asm_fc9ee: ; fc9ee (3f:49ee) +asm_fc9ee: call DoubleAddPikachuStepVectorToScreenPixelCoords call GetPikachuWalkingAnimationSpeed call UpdatePikachuWalkingSprite - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] ret nz call ResetPikachuStepVector call ComputePikachuFacingDirection - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $1 ret -Func_fca0a: ; fca0a (3f:4a0a) - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 +Func_fca0a: + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc ld [hl], $8 - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $4 call AddPikachuStepVector call AddPikachuStepVector -asm_fca1c: ; fca1c (3f:4a1c) +asm_fca1c: call DoubleAddPikachuStepVectorToScreenPixelCoords call GetPikachuWalkingAnimationSpeed call UpdatePikachuWalkingSprite - ld hl, wSprite01WalkAnimationCounter - wSprite01SpriteStateData1 + ld hl, wPikachuWalkAnimationCounter - wPikachuSpriteStateData1 add hl, bc dec [hl] ret nz call ResetPikachuStepVector call ComputePikachuFacingDirection - ld hl, wSprite01MovementStatus - wSprite01SpriteStateData1 + ld hl, wPikachuMovementStatus - wPikachuSpriteStateData1 add hl, bc ld [hl], $1 ret -AddPikachuStepVector: ; fca38 (3f:4a38) - ld hl, wSprite01YStepVector - wSprite01SpriteStateData1 +AddPikachuStepVector: + ld hl, wPikachuYStepVector - wPikachuSpriteStateData1 add hl, bc ld e, [hl] inc hl inc hl ld d, [hl] - ld hl, wSprite01MapY - wSprite01SpriteStateData1 + ld hl, wPikachuMapY - wPikachuSpriteStateData1 add hl, bc ld a, [hl] add e @@ -910,15 +911,15 @@ AddPikachuStepVector: ; fca38 (3f:4a38) ld [hl], a ret -TryDoubleAddPikachuStepVectorToScreenPixelCoords: ; fca4b (3f:4a4b) +TryDoubleAddPikachuStepVectorToScreenPixelCoords: ld a, [wWalkBikeSurfState] cp $1 ; biking jr nz, AddPikachuStepVectorToScreenPixelCoords ld a, [wd736] bit 6, a jr nz, AddPikachuStepVectorToScreenPixelCoords -DoubleAddPikachuStepVectorToScreenPixelCoords: ; fca59 (3f:4a59) - ld hl, wSprite01YStepVector - wSprite01SpriteStateData1 +DoubleAddPikachuStepVectorToScreenPixelCoords: + ld hl, wPikachuYStepVector - wPikachuSpriteStateData1 add hl, bc ld a, [hli] add a @@ -932,8 +933,8 @@ DoubleAddPikachuStepVectorToScreenPixelCoords: ; fca59 (3f:4a59) ld [hl], a ret -AddPikachuStepVectorToScreenPixelCoords: ; fca68 (3f:4a68) - ld hl, wSprite01YStepVector - wSprite01SpriteStateData1 +AddPikachuStepVectorToScreenPixelCoords: + ld hl, wPikachuYStepVector - wPikachuSpriteStateData1 add hl, bc ld a, [hli] add a @@ -945,8 +946,8 @@ AddPikachuStepVectorToScreenPixelCoords: ; fca68 (3f:4a68) ld [hli], a ret -ResetPikachuStepVector: ; fca75 (3f:4a75) - ld hl, wSprite01YStepVector - wSprite01SpriteStateData1 +ResetPikachuStepVector: + ld hl, wPikachuYStepVector - wPikachuSpriteStateData1 add hl, bc xor a ld [hli], a @@ -954,13 +955,13 @@ ResetPikachuStepVector: ; fca75 (3f:4a75) ld [hl], a ret -GetPikachuWalkingAnimationSpeed: ; fca7e (3f:4a7e) +GetPikachuWalkingAnimationSpeed: call ComparePikachuHappinessTo80 ld d, $2 jr nc, .happy ld d, $5 .happy - ld hl, wSprite01IntraAnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuIntraAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld a, [hl] inc a @@ -976,11 +977,11 @@ GetPikachuWalkingAnimationSpeed: ; fca7e (3f:4a7e) ld [hl], a ret -UpdatePikachuWalkingSprite: ; fca99 (3f:4a99) +UpdatePikachuWalkingSprite: ld a, [wPikachuOverworldStateFlags] bit 3, a jr nz, .uninitialized - ld hl, wSprite01SpriteImageBaseOffset - wSprite01SpriteStateData1 + ld hl, wPikachuSpriteImageBaseOffset - wPikachuSpriteStateData1 add hl, bc ld a, [hl] dec a @@ -989,7 +990,7 @@ UpdatePikachuWalkingSprite: ; fca99 (3f:4a99) ld a, [wd736] bit 7, a jr nz, .copy_player - ld hl, wSprite01FacingDirection - wSprite01SpriteStateData1 + ld hl, wPikachuFacingDirection - wPikachuSpriteStateData1 add hl, bc ld a, [hl] or d @@ -1002,19 +1003,19 @@ UpdatePikachuWalkingSprite: ; fca99 (3f:4a99) jr .load_sprite_index .normal_get_sprite_index - ld hl, wSprite01AnimFrameCounter - wSprite01SpriteStateData1 + ld hl, wPikachuAnimFrameCounter - wPikachuSpriteStateData1 add hl, bc ld a, d or [hl] ld d, a .load_sprite_index - ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1 + ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1 add hl, bc ld [hl], d ret .uninitialized - ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1 + ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1 add hl, bc ld [hl], $ff ret @@ -1026,8 +1027,8 @@ UpdatePikachuWalkingSprite: ; fca99 (3f:4a99) ld [wPikachuSpriteImageIdx], a ret -Func_fcae2: ; fcae2 (3f:4ae2) - ld hl, wSprite01MapY - wSprite01SpriteStateData1 +Func_fcae2: + ld hl, wPikachuMapY - wPikachuSpriteStateData1 add hl, bc ld a, [wYCoord] add $4 @@ -1038,7 +1039,7 @@ Func_fcae2: ; fcae2 (3f:4ae2) add $4 cp [hl] jr nz, .on_screen - ld hl, wSprite01SpriteImageIdx - wSprite01SpriteStateData1 + ld hl, wPikachuSpriteImageIdx - wPikachuSpriteStateData1 add hl, bc ld [hl], $ff scf @@ -1048,7 +1049,7 @@ Func_fcae2: ; fcae2 (3f:4ae2) and a ret -IsPikachuRightNextToPlayer: ; fcb01 (3f:4b01) +IsPikachuRightNextToPlayer: push bc push de push hl @@ -1106,12 +1107,12 @@ IsPikachuRightNextToPlayer: ; fcb01 (3f:4b01) xor a ret -GetPikachuFacingDirectionAndReturnToE: ; fcb4d (3f:4b4d) +GetPikachuFacingDirectionAndReturnToE: call GetPikachuFacingDirection ld e, a ret -GetPikachuFacingDirection: ; fcb52 (3f:4b52) +GetPikachuFacingDirection: ld bc, wPikachuPictureID ld a, [wXCoord] add $4 @@ -1150,7 +1151,7 @@ GetPikachuFacingDirection: ; fcb52 (3f:4b52) ld a, $ff ; standing ret -ClearPikachuFollowCommandBuffer: ; fcb84 (3f:4b84) +ClearPikachuFollowCommandBuffer: push bc ld hl, wPikachuFollowCommandBufferSize ld [hl], $ff @@ -1161,7 +1162,7 @@ ClearPikachuFollowCommandBuffer: ; fcb84 (3f:4b84) pop bc ret -AppendPikachuFollowCommandToBuffer: ; fcb94 (3f:4b94) +AppendPikachuFollowCommandToBuffer: ld hl, wPikachuFollowCommandBufferSize inc [hl] ld e, [hl] @@ -1171,14 +1172,14 @@ AppendPikachuFollowCommandToBuffer: ; fcb94 (3f:4b94) ld [hl], a ret -RefreshPikachuFollow: ; fcba1 (3f:4ba1) +RefreshPikachuFollow: call ClearPikachuFollowCommandBuffer call ComputePikachuFollowCommand ret c call AppendPikachuFollowCommandToBuffer ret -ComputePikachuFollowCommand: ; fcbac (3f:4bac) +ComputePikachuFollowCommand: ld bc, wPikachuPictureID ld hl, wPlayerMapY - wPlayerSpriteStateData1 add hl, bc @@ -1245,7 +1246,7 @@ ComputePikachuFollowCommand: ; fcbac (3f:4bac) scf ret -CheckAbsoluteValueLessThan2: ; fcc01 (3f:4c01) +CheckAbsoluteValueLessThan2: jr nc, .positive cpl inc a @@ -1253,7 +1254,7 @@ CheckAbsoluteValueLessThan2: ; fcc01 (3f:4c01) cp $2 ret -Func_fcc08:: ; fcc08 (3f:4c08) +Func_fcc08:: call Func_fcc23 ret nc ld a, [wd736] @@ -1270,7 +1271,7 @@ Func_fcc08:: ; fcc08 (3f:4c08) call AppendPikachuFollowCommandToBuffer ret -Func_fcc23: ; fcc23 (3f:4c28) +Func_fcc23: ld a, [wPikachuOverworldStateFlags] bit 5, a jr nz, .asm_fcc40 @@ -1290,7 +1291,7 @@ Func_fcc23: ; fcc23 (3f:4c28) and a ret -Func_fcc42: ; fcc42 (3f:4c42) +Func_fcc42: xor a ld a, [wPlayerDirection] bit 3, a @@ -1320,7 +1321,7 @@ Func_fcc42: ; fcc42 (3f:4c42) ld a, $4 ret -Func_fcc64: ; fcc64 (3f:4c64) +Func_fcc64: ld hl, wPikachuOverworldStateFlags bit 6, [hl] jr z, .asm_fcc6e @@ -1358,7 +1359,7 @@ Func_fcc64: ; fcc64 (3f:4c64) ld a, $8 ret -Func_fcc92: ; fcc92 (3f:4c92) +Func_fcc92: ld hl, wPikachuFollowCommandBufferSize ld a, [hl] cp $ff @@ -1385,7 +1386,7 @@ Func_fcc92: ; fcc92 (3f:4c92) scf ret -ComputePikachuFacingDirection:: ; fccb2 (3f:4cb2) +ComputePikachuFacingDirection:: call GetPikachuFollowCommandIfBufferSizeNonzero and a jr z, .check_y @@ -1425,7 +1426,7 @@ ComputePikachuFacingDirection:: ; fccb2 (3f:4cb2) ld [wPikachuFacingDirection], a ret -GetPikachuFollowCommand: ; fccee (3f:4cee) +GetPikachuFollowCommand: ld hl, wPikachuFollowCommandBufferSize ld a, [hl] cp $ff @@ -1441,7 +1442,7 @@ GetPikachuFollowCommand: ; fccee (3f:4cee) xor a ret -GetPikachuFollowCommandIfBufferSizeNonzero: ; fcd01 (3f:4d01) +GetPikachuFollowCommandIfBufferSizeNonzero: ld hl, wPikachuFollowCommandBufferSize ld a, [hl] cp $ff @@ -1459,7 +1460,7 @@ GetPikachuFollowCommandIfBufferSizeNonzero: ; fcd01 (3f:4d01) xor a ret -AreThereAtLeastTwoStepsInPikachuFollowCommandBuffer: ; fcd17 (3f:4d17) +AreThereAtLeastTwoStepsInPikachuFollowCommandBuffer: ld a, [wPikachuFollowCommandBufferSize] cp $ff ret z @@ -1472,7 +1473,7 @@ AreThereAtLeastTwoStepsInPikachuFollowCommandBuffer: ; fcd17 (3f:4d17) scf ret -WillPikachuSpawnOnTheScreen: ; fcd25 (3f:4d25) +WillPikachuSpawnOnTheScreen: ld h, wSpriteStateData2 / $100 ld a, [H_CURRENTSPRITEOFFSET] ; If we're here, this can only be $f0 add wPikachuMapY - wPikachuSpriteStateData2 @@ -1538,7 +1539,7 @@ WillPikachuSpawnOnTheScreen: ; fcd25 (3f:4d25) .return ret -.GetNPCCurrentTile: ; fcd83 (3f:4d83) +.GetNPCCurrentTile: ld h, wSpriteStateData1 / $100 ld a, [H_CURRENTSPRITEOFFSET] add wPikachuYPixels - wPikachuSpriteStateData1 @@ -1565,7 +1566,7 @@ WillPikachuSpawnOnTheScreen: ; fcd25 (3f:4d25) add hl, de ret -ComparePikachuHappinessTo80: ; fcdad (3f:4dad) +ComparePikachuHappinessTo80: ; preserves a and bc push bc push af diff --git a/engine/pikachu_movement.asm b/engine/pikachu_movement.asm index fbb71ffd..8eb09b3b 100755 --- a/engine/pikachu_movement.asm +++ b/engine/pikachu_movement.asm @@ -1,11 +1,11 @@ -ApplyPikachuMovementData_:: ; fd2a1 (3f:52a1) +ApplyPikachuMovementData_:: ld a, b ld [wPikachuMovementScriptBank], a ld a, l ld [wPikachuMovementScriptAddress], a ld a, h ld [wPikachuMovementScriptAddress + 1], a - call PikachuSwapSpriteStateData + call .SwapSpriteStateData .loop call LoadPikachuMovementCommandData jr nc, .done @@ -13,11 +13,11 @@ ApplyPikachuMovementData_:: ; fd2a1 (3f:52a1) jr .loop .done - call PikachuSwapSpriteStateData + call .SwapSpriteStateData call DelayFrame ret -PikachuSwapSpriteStateData: +.SwapSpriteStateData: ld a, [wUpdateSpritesEnabled] push af ld a, $ff @@ -26,15 +26,15 @@ PikachuSwapSpriteStateData: push de push bc - ld hl, wSpriteStateData1 + ld hl, wPlayerSpriteStateData1 ld de, wPikachuSpriteStateData1 ld c, $10 - call SwapBytes3f + call .SwapBytes - ld hl, wSpriteStateData2 + ld hl, wPlayerSpriteStateData2 ld de, wPikachuSpriteStateData2 ld c, $10 - call SwapBytes3f + call .SwapBytes pop bc pop de @@ -43,8 +43,7 @@ PikachuSwapSpriteStateData: ld [wUpdateSpritesEnabled], a ret -SwapBytes3f: -.loop +.SwapBytes: ld b, [hl] ld a, [de] ld [hli], a @@ -52,7 +51,7 @@ SwapBytes3f: ld [de], a inc de dec c - jr nz, .loop + jr nz, .SwapBytes ret LoadPikachuMovementCommandData: @@ -61,52 +60,52 @@ LoadPikachuMovementCommandData: ret z ld c, a ld b, 0 - ld hl, Data_fd3b0 + ld hl, PikachuMovementDatabase add hl, bc add hl, bc add hl, bc add hl, bc ld a, [hli] - ld [wPikaPicAnimPointer + 1], a + ld [wCurPikaMovementFunc1], a ld a, [hli] cp $80 jr nz, .no_param call GetPikachuMovementScriptByte .no_param - ld [wPikaPicAnimPointer], a + ld [wCurPikaMovementParam1], a ld a, [hli] - ld [wPikaPicAnimCurGraphicID], a + ld [wCurPikaMovementFunc2], a ld a, [hli] cp $80 jr nz, .no_param2 call GetPikachuMovementScriptByte .no_param2 - ld [wPikaPicAnimPointerSetupFinished], a + ld [wCurPikaMovementParam2], a xor a - ld [wPikaPicAnimTimer], a + ld [wd451], a scf ret ExecutePikachuMovementCommand: xor a - ld [wd44d], a - ld [wd457], a - ld [wd458], a + ld [wPikachuMovementFlags], a + ld [wPikachuStepTimer], a + ld [wPikachuStepSubtimer], a ld a, [wPlayerGrassPriority] push af .loop - ld bc, wSpriteStateData1 - ld a, [wPikaPicAnimPointer + 1] - ld hl, Jumptable_fd4ac + ld bc, wPlayerSpriteStateData1 ; Currently holds Pikachu's sprite state data + ld a, [wCurPikaMovementFunc1] + ld hl, PikaMovementFunc1Jumptable call .JumpTable - ld a, [wPikaPicAnimCurGraphicID] - ld hl, Jumptable_fd65c + ld a, [wCurPikaMovementFunc2] + ld hl, PikaMovementFunc2Jumptable call .JumpTable - call Func_fd36e - call Func_fd39d + call GetCoordsForPikachuShadow + call AnimatePikachuShadow call DelayFrame call DelayFrame - ld hl, wd44d + ld hl, wPikachuMovementFlags bit 7, [hl] jr z, .loop pop af @@ -124,62 +123,65 @@ ExecutePikachuMovementCommand: ld l, a jp [hl] -Func_fd36e: - ld hl, 2 +GetCoordsForPikachuShadow: + ld hl, wPlayerSpriteImageIdx - wPlayerSpriteStateData1 add hl, bc - ld a, [wPikaPicAnimTimer + 1] + ld a, [wCurPikaMovementSpriteImageIdx] ld [hl], a ld a, [wPikaSpriteY] ld d, a - ld a, [wd456] + ld a, [wPikachuMovementYOffset] add d - ld hl, 4 + ld hl, wPlayerYPixels - wPlayerSpriteStateData1 add hl, bc ld [hl], a - ld a, [wPikaPicAnimDelay] + ld a, [wPikaSpriteX] ld d, a - ld a, [wPikaPicTextboxStartY] + ld a, [wPikachuMovementXOffset] add d - ld hl, 6 + ld hl, wPlayerXPixels - wPlayerSpriteStateData1 add hl, bc ld [hl], a - ld hl, wd44d + ld hl, wPikachuMovementFlags bit 6, [hl] ret z - ld hl, wPlayerGrassPriority - wSpriteStateData1 + ld hl, wPlayerGrassPriority - wPlayerSpriteStateData1 add hl, bc ld [hl], 0 ret -Func_fd39d: - ld hl, wd44d +AnimatePikachuShadow: + ld hl, wPikachuMovementFlags bit 6, [hl] res 6, [hl] ld hl, wd736 res 6, [hl] ret z set 6, [hl] - call Func_fd7f3 + call LoadPikachuShadowOAMData ret -Data_fd3b0: - db $01, $00, $00, $00 ; $00 - db $03, $80, $01, $00 ; $01 - db $04, $80, $01, $00 ; $02 - db $05, $80, $01, $00 ; $03 - db $06, $80, $01, $00 ; $04 - db $07, $80, $01, $00 ; $05 - db $08, $80, $01, $00 ; $06 - db $09, $80, $01, $00 ; $07 - db $0a, $80, $01, $00 ; $08 - db $03, $80, $06, $00 ; $09 - db $04, $80, $06, $00 ; $0a - db $05, $80, $06, $00 ; $0b - db $06, $80, $06, $00 ; $0c - db $07, $80, $06, $00 ; $0d - db $08, $80, $06, $00 ; $0e - db $09, $80, $06, $00 ; $0f - db $0a, $80, $06, $00 ; $10 +PikachuMovementDatabase: + db $01, 1 - 1, $00, 1 - 1 ; $00 start + + db $03, $80, $01, 1 - 1 ; $01 + db $04, $80, $01, 1 - 1 ; $02 + db $05, $80, $01, 1 - 1 ; $03 + db $06, $80, $01, 1 - 1 ; $04 + db $07, $80, $01, 1 - 1 ; $05 + db $08, $80, $01, 1 - 1 ; $06 + db $09, $80, $01, 1 - 1 ; $07 + db $0a, $80, $01, 1 - 1 ; $08 + + db $03, $80, $06, 1 - 1 ; $09 + db $04, $80, $06, 1 - 1 ; $0a + db $05, $80, $06, 1 - 1 ; $0b + db $06, $80, $06, 1 - 1 ; $0c + db $07, $80, $06, 1 - 1 ; $0d + db $08, $80, $06, 1 - 1 ; $0e + db $09, $80, $06, 1 - 1 ; $0f + db $0a, $80, $06, 1 - 1 ; $10 + db $03, $80, $03, $80 ; $11 db $04, $80, $03, $80 ; $12 db $05, $80, $03, $80 ; $13 @@ -188,290 +190,296 @@ Data_fd3b0: db $08, $80, $03, $80 ; $16 db $09, $80, $03, $80 ; $17 db $0a, $80, $03, $80 ; $18 + db $03, $80, $07, $80 ; $19 db $04, $80, $07, $80 ; $1a db $05, $80, $07, $80 ; $1b db $06, $80, $07, $80 ; $1c - db $0b, $27, $02, $00 ; $1d step down - db $0c, $27, $02, $00 ; $1e step up - db $0d, $27, $02, $00 ; $1f step left - db $0e, $27, $02, $00 ; $20 step right - db $0f, $27, $02, $00 ; $21 - db $10, $27, $02, $00 ; $22 - db $11, $27, $02, $00 ; $23 - db $12, $27, $02, $00 ; $24 - db $0b, $0f, $02, $00 ; $25 - db $0c, $0f, $02, $00 ; $26 - db $0d, $0f, $02, $00 ; $27 - db $0e, $0f, $02, $00 ; $28 - db $0f, $0f, $02, $00 ; $29 - db $10, $0f, $02, $00 ; $2a - db $11, $0f, $02, $00 ; $2b - db $12, $0f, $02, $00 ; $2c - db $0b, $0f, $08, $17 ; $2d - db $0c, $0f, $08, $17 ; $2e - db $0d, $0f, $08, $17 ; $2f - db $0e, $0f, $08, $17 ; $30 - db $0f, $0f, $08, $17 ; $31 - db $10, $0f, $08, $17 ; $32 - db $11, $0f, $08, $17 ; $33 - db $12, $0f, $08, $17 ; $34 - db $13, $0f, $06, $00 ; $35 look down - db $14, $0f, $06, $00 ; $36 look up - db $15, $0f, $06, $00 ; $37 look left - db $16, $0f, $06, $00 ; $38 look right - db $02, $80, $04, $00 ; $39 - db $02, $80, $05, $00 ; $3a + + db $0b, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1d step down + db $0c, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1e step up + db $0d, (1 << 5) | 8 - 1, $02, 1 - 1 ; $1f step left + db $0e, (1 << 5) | 8 - 1, $02, 1 - 1 ; $20 step right + db $0f, (1 << 5) | 8 - 1, $02, 1 - 1 ; $21 step down left + db $10, (1 << 5) | 8 - 1, $02, 1 - 1 ; $22 step down right + db $11, (1 << 5) | 8 - 1, $02, 1 - 1 ; $23 step up left + db $12, (1 << 5) | 8 - 1, $02, 1 - 1 ; $24 step up right + + db $0b, 16 - 1, $02, 1 - 1 ; $25 slide down + db $0c, 16 - 1, $02, 1 - 1 ; $26 slide up + db $0d, 16 - 1, $02, 1 - 1 ; $27 slide left + db $0e, 16 - 1, $02, 1 - 1 ; $28 slide right + db $0f, 16 - 1, $02, 1 - 1 ; $29 slide down left + db $10, 16 - 1, $02, 1 - 1 ; $2a slide down right + db $11, 16 - 1, $02, 1 - 1 ; $2b slide up left + db $12, 16 - 1, $02, 1 - 1 ; $2c slide up right + + db $0b, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2d hop down + db $0c, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2e hop up + db $0d, 16 - 1, $08, (1 << 4) | 8 - 1 ; $2f hop left + db $0e, 16 - 1, $08, (1 << 4) | 8 - 1 ; $30 hop right + db $0f, 16 - 1, $08, (1 << 4) | 8 - 1 ; $31 hop down left + db $10, 16 - 1, $08, (1 << 4) | 8 - 1 ; $32 hop down right + db $11, 16 - 1, $08, (1 << 4) | 8 - 1 ; $33 hop up left + db $12, 16 - 1, $08, (1 << 4) | 8 - 1 ; $34 hop up right + + db $13, 16 - 1, $06, 1 - 1 ; $35 look down + db $14, 16 - 1, $06, 1 - 1 ; $36 look up + db $15, 16 - 1, $06, 1 - 1 ; $37 look left + db $16, 16 - 1, $06, 1 - 1 ; $38 look right + + db $02, $80, $04, 1 - 1 ; $39 + db $02, $80, $05, 1 - 1 ; $3a db $02, $80, $03, $80 ; $3b db $02, $80, $07, $80 ; $3c db $02, $80, $09, $80 ; $3d - db $02, $80, $06, $00 ; $3e - -Jumptable_fd4ac: - dw Func_fd4e5 - dw Func_fd4e9 - dw Func_fd504 - dw Func_fd50c - dw Func_fd511 - dw Func_fd518 - dw Func_fd52c - dw Func_fd540 - dw Func_fd553 - dw Func_fd566 - dw Func_fd579 - dw Func_fd5b1 - dw Func_fd5b5 - dw Func_fd5b9 - dw Func_fd5bd - dw Func_fd5c1 - dw Func_fd5c5 - dw Func_fd5c9 - dw Func_fd5cd - dw Func_fd5ea - dw Func_fd5ee - dw Func_fd5f2 - dw Func_fd5f6 - dw Func_fd4e5 - -Func_fd4dc: - ld a, [wd44d] + db $02, $80, $06, 1 - 1 ; $3e + +PikaMovementFunc1Jumptable: + dw PikaMovementFunc1_EndCommand_ ; 00 + dw PikaMovementFunc1_LoadPikachuCurrentPosition ; 01 + dw PikaMovementFunc1_DelayFrames ; 02 + dw PikaMovementFunc1_WalkInCurrentFacingDirection ; 03 + dw PikaMovementFunc1_WalkInOppositeFacingDirection ; 04 + dw PikaMovementFunc1_StepTurningCounterclockwise ; 05 + dw PikaMovementFunc1_StepTurningClockwise ; 06 + dw PikaMovementFunc1_StepForwardLeft ; 07 + dw PikaMovementFunc1_StepForwardRight ; 08 + dw PikaMovementFunc1_StepBackwardLeft ; 09 + dw PikaMovementFunc1_StepBackwardRight ; 0a + dw PikaMovementFunc1_MoveDown ; 0b + dw PikaMovementFunc1_MoveUp ; 0c + dw PikaMovementFunc1_MoveLeft ; 0d + dw PikaMovementFunc1_MoveRight ; 0e + dw PikaMovementFunc1_MoveDownLeft ; 0f + dw PikaMovementFunc1_MoveDownRight ; 10 + dw PikaMovementFunc1_MoveUpLeft ; 11 + dw PikaMovementFunc1_MoveUpRight ; 12 + dw PikaMovementFunc1_LookDown ; 13 + dw PikaMovementFunc1_LookUp ; 14 + dw PikaMovementFunc1_LookLeft ; 15 + dw PikaMovementFunc1_LookRight ; 16 + dw PikaMovementFunc1_EndCommand_ ; 17 + +PikaMovementFunc1_EndCommand: + ld a, [wPikachuMovementFlags] set 7, a - ld [wd44d], a + ld [wPikachuMovementFlags], a ret -Func_fd4e5: - call Func_fd4dc +PikaMovementFunc1_EndCommand_: + call PikaMovementFunc1_EndCommand ret -Func_fd4e9: - ld hl, 4 +PikaMovementFunc1_LoadPikachuCurrentPosition: + ld hl, wPlayerYPixels - wPlayerSpriteStateData1 add hl, bc ld a, [hl] ld [wPikaSpriteY], a - ld hl, 6 + ld hl, wPlayerXPixels - wPlayerSpriteStateData1 add hl, bc ld a, [hl] - ld [wPikaPicAnimDelay], a + ld [wPikaSpriteX], a xor a - ld [wd456], a - ld [wPikaPicTextboxStartY], a - call Func_fd4dc + ld [wPikachuMovementYOffset], a + ld [wPikachuMovementXOffset], a + call PikaMovementFunc1_EndCommand ret -Func_fd504: - call Func_fd775 +PikaMovementFunc1_DelayFrames: + call CheckPikachuStepTimer1 ret nz - call Func_fd4dc + call PikaMovementFunc1_EndCommand ret -Func_fd50c: - call GetObjectFacing - jr asm_fd58c +PikaMovementFunc1_WalkInCurrentFacingDirection: + call GetPikachuFacing + jr PikaMovementFunc1_ApplyStepVector -Func_fd511: - call GetObjectFacing +PikaMovementFunc1_WalkInOppositeFacingDirection: + call GetPikachuFacing xor %100 - jr asm_fd58c - -Func_fd518: - call GetObjectFacing - ld hl, Data_fd523 - call Func_fd5a0 - jr asm_fd58c - -Data_fd523: - db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT - db SPRITE_FACING_UP, SPRITE_FACING_LEFT - db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN - db SPRITE_FACING_RIGHT, SPRITE_FACING_UP + jr PikaMovementFunc1_ApplyStepVector + +PikaMovementFunc1_StepTurningCounterclockwise: + call GetPikachuFacing + ld hl, .Data + call PikaMovementFunc1_GetNextFacing + jr PikaMovementFunc1_ApplyStepVector + +.Data: + db SPRITE_FACING_DOWN, PIKASTEPDIR_RIGHT << 2 + db SPRITE_FACING_UP, PIKASTEPDIR_LEFT << 2 + db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN << 2 + db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP << 2 db $ff -Func_fd52c: - call GetObjectFacing - ld hl, Data_fd537 - call Func_fd5a0 - jr asm_fd58c - -Data_fd537: - db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT - db SPRITE_FACING_UP, SPRITE_FACING_RIGHT - db SPRITE_FACING_LEFT, SPRITE_FACING_UP - db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN +PikaMovementFunc1_StepTurningClockwise: + call GetPikachuFacing + ld hl, .Data + call PikaMovementFunc1_GetNextFacing + jr PikaMovementFunc1_ApplyStepVector + +.Data: + db SPRITE_FACING_DOWN, PIKASTEPDIR_LEFT << 2 + db SPRITE_FACING_UP, PIKASTEPDIR_RIGHT << 2 + db SPRITE_FACING_LEFT, PIKASTEPDIR_UP << 2 + db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN << 2 db $ff -Func_fd540: - call GetObjectFacing - ld hl, Data_fd54b - call Func_fd5a0 - jr asm_fd58c - -Data_fd54b: - db SPRITE_FACING_DOWN, SPRITE_FACING_UP | $10 - db SPRITE_FACING_UP, SPRITE_FACING_LEFT | $10 - db SPRITE_FACING_LEFT, SPRITE_FACING_DOWN | $10 - db SPRITE_FACING_RIGHT, SPRITE_FACING_RIGHT | $10 - -Func_fd553: - call GetObjectFacing - ld hl, Data_fd55e - call Func_fd5a0 - jr asm_fd58c - -Data_fd55e: - db SPRITE_FACING_DOWN, SPRITE_FACING_DOWN | $10 - db SPRITE_FACING_UP, SPRITE_FACING_RIGHT | $10 - db SPRITE_FACING_LEFT, SPRITE_FACING_LEFT | $10 - db SPRITE_FACING_RIGHT, SPRITE_FACING_UP | $10 - -Func_fd566: - call GetObjectFacing - ld hl, Data_fd571 - call Func_fd5a0 - jr asm_fd58c - -Data_fd571: - db SPRITE_FACING_DOWN, SPRITE_FACING_RIGHT | $10 - db SPRITE_FACING_UP, SPRITE_FACING_DOWN | $10 - db SPRITE_FACING_LEFT, SPRITE_FACING_UP | $10 - db SPRITE_FACING_RIGHT, SPRITE_FACING_LEFT | $10 - -Func_fd579: - call GetObjectFacing - ld hl, Data_fd584 - call Func_fd5a0 - jr asm_fd58c - -Data_fd584: - db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT | $10 - db SPRITE_FACING_UP, SPRITE_FACING_UP | $10 - db SPRITE_FACING_LEFT, SPRITE_FACING_RIGHT | $10 - db SPRITE_FACING_RIGHT, SPRITE_FACING_DOWN | $10 - -asm_fd58c +PikaMovementFunc1_StepForwardLeft: + call GetPikachuFacing + ld hl, .Data + call PikaMovementFunc1_GetNextFacing + jr PikaMovementFunc1_ApplyStepVector + +.Data: + db SPRITE_FACING_DOWN, PIKASTEPDIR_DOWN_RIGHT << 2 + db SPRITE_FACING_UP, PIKASTEPDIR_UP_LEFT << 2 + db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN_LEFT << 2 + db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP_RIGHT << 2 + +PikaMovementFunc1_StepForwardRight: + call GetPikachuFacing + ld hl, .Data + call PikaMovementFunc1_GetNextFacing + jr PikaMovementFunc1_ApplyStepVector + +.Data: + db SPRITE_FACING_DOWN, PIKASTEPDIR_DOWN_LEFT << 2 + db SPRITE_FACING_UP, PIKASTEPDIR_UP_RIGHT << 2 + db SPRITE_FACING_LEFT, PIKASTEPDIR_UP_LEFT << 2 + db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN_RIGHT << 2 + +PikaMovementFunc1_StepBackwardLeft: + call GetPikachuFacing + ld hl, .Data + call PikaMovementFunc1_GetNextFacing + jr PikaMovementFunc1_ApplyStepVector + +.Data: + db SPRITE_FACING_DOWN, PIKASTEPDIR_UP_RIGHT << 2 + db SPRITE_FACING_UP, PIKASTEPDIR_DOWN_LEFT << 2 + db SPRITE_FACING_LEFT, PIKASTEPDIR_DOWN_RIGHT << 2 + db SPRITE_FACING_RIGHT, PIKASTEPDIR_UP_LEFT << 2 + +PikaMovementFunc1_StepBackwardRight: + call GetPikachuFacing + ld hl, .Data + call PikaMovementFunc1_GetNextFacing + jr PikaMovementFunc1_ApplyStepVector + +.Data: + db SPRITE_FACING_DOWN, PIKASTEPDIR_UP_LEFT << 2 + db SPRITE_FACING_UP, PIKASTEPDIR_DOWN_RIGHT << 2 + db SPRITE_FACING_LEFT, PIKASTEPDIR_UP_RIGHT << 2 + db SPRITE_FACING_RIGHT, PIKASTEPDIR_DOWN_LEFT << 2 + +PikaMovementFunc1_ApplyStepVector: rrca rrca and $7 ld e, a - call Func_fd784 + call GetPikachuStepVectorMagnitude ld d, a call UpdatePikachuPosition - call Func_fd775 + call CheckPikachuStepTimer1 ret nz - call Func_fd4dc + call PikaMovementFunc1_EndCommand ret -Func_fd5a0: +PikaMovementFunc1_GetNextFacing: push de ld d, a -.asm_fd5a2 +.loop ld a, [hli] cp d - jr z, .asm_fd5ad + jr z, .found inc hl cp $ff - jr nz, .asm_fd5a2 + jr nz, .loop pop de ret -.asm_fd5ad +.found ld a, [hl] pop de scf ret -Func_fd5b1: - ld a, SPRITE_FACING_DOWN >> 2 - jr asm_fd5d1 +PikaMovementFunc1_MoveDown: + ld a, PIKASTEPDIR_DOWN + jr PikaMovementFunc1_ApplyFacingAndMove -Func_fd5b5: - ld a, SPRITE_FACING_UP >> 2 - jr asm_fd5d1 +PikaMovementFunc1_MoveUp: + ld a, PIKASTEPDIR_UP + jr PikaMovementFunc1_ApplyFacingAndMove -Func_fd5b9: - ld a, SPRITE_FACING_LEFT >> 2 - jr asm_fd5d1 +PikaMovementFunc1_MoveLeft: + ld a, PIKASTEPDIR_LEFT + jr PikaMovementFunc1_ApplyFacingAndMove -Func_fd5bd: - ld a, SPRITE_FACING_RIGHT >> 2 - jr asm_fd5d1 +PikaMovementFunc1_MoveRight: + ld a, PIKASTEPDIR_RIGHT + jr PikaMovementFunc1_ApplyFacingAndMove -Func_fd5c1: - ld e, 4 - jr asm_fd5d5 +PikaMovementFunc1_MoveDownLeft: + ld e, PIKASTEPDIR_DOWN_LEFT + jr PikaMovementFunc1_MoveDiagonally -Func_fd5c5: - ld e, 5 - jr asm_fd5d5 +PikaMovementFunc1_MoveDownRight: + ld e, PIKASTEPDIR_DOWN_RIGHT + jr PikaMovementFunc1_MoveDiagonally -Func_fd5c9: - ld e, 6 - jr asm_fd5d5 +PikaMovementFunc1_MoveUpLeft: + ld e, PIKASTEPDIR_UP_LEFT + jr PikaMovementFunc1_MoveDiagonally -Func_fd5cd: - ld e, 7 - jr asm_fd5d5 +PikaMovementFunc1_MoveUpRight: + ld e, PIKASTEPDIR_UP_RIGHT + jr PikaMovementFunc1_MoveDiagonally -asm_fd5d1 +PikaMovementFunc1_ApplyFacingAndMove: ld e, a - call SetObjectFacing -asm_fd5d5 - call Func_fd784 + call SetPikachuFacing +PikaMovementFunc1_MoveDiagonally: + call GetPikachuStepVectorMagnitude ld d, a push de call UpdatePikachuPosition pop de - call Func_fd775 + call CheckPikachuStepTimer1 ret nz ld a, e - call Func_fd7cb - call Func_fd4dc + call ApplyPikachuStepVector + call PikaMovementFunc1_EndCommand ret -Func_fd5ea: - ld a, SPRITE_FACING_DOWN >> 2 - jr asm_fd5fa +PikaMovementFunc1_LookDown: + ld a, PIKASTEPDIR_DOWN + jr PikaMovementFunc1_ApplyFacing -Func_fd5ee: - ld a, SPRITE_FACING_UP >> 2 - jr asm_fd5fa +PikaMovementFunc1_LookUp: + ld a, PIKASTEPDIR_UP + jr PikaMovementFunc1_ApplyFacing -Func_fd5f2: - ld a, SPRITE_FACING_LEFT >> 2 - jr asm_fd5fa +PikaMovementFunc1_LookLeft: + ld a, PIKASTEPDIR_LEFT + jr PikaMovementFunc1_ApplyFacing -Func_fd5f6: - ld a, SPRITE_FACING_RIGHT >> 2 - jr asm_fd5fa +PikaMovementFunc1_LookRight: + ld a, PIKASTEPDIR_RIGHT + jr PikaMovementFunc1_ApplyFacing -asm_fd5fa - call SetObjectFacing - call Func_fd4dc +PikaMovementFunc1_ApplyFacing: + call SetPikachuFacing + call PikaMovementFunc1_EndCommand ret UpdatePikachuPosition: push de ld d, 0 - ld hl, Jumptable_fd60f + ld hl, .Jumptable add hl, de add hl, de ld a, [hli] @@ -481,217 +489,217 @@ UpdatePikachuPosition: ld a, d jp [hl] -Jumptable_fd60f: - dw MovePikachuSpriteDown - dw MovePikachuSpriteUp - dw MovePikachuSpriteLeft - dw MovePikachuSpriteRight - dw MovePikachuSpriteDownLeft - dw MovePikachuSpriteDownRight - dw MovePikachuSpriteUpLeft - dw MovePikachuSpriteUpRight - -MovePikachuSpriteDown: +.Jumptable: + dw .Down + dw .Up + dw .Left + dw .Right + dw .DownLeft + dw .DownRight + dw .UpLeft + dw .UpRight + +.Down: ld d, 0 ld e, a - jr asm_fd64d + jr .ApplyVector -MovePikachuSpriteUp: +.Up: ld d, 0 cpl inc a ld e, a - jr asm_fd64d + jr .ApplyVector -MovePikachuSpriteLeft: +.Left: cpl inc a ld d, a ld e, 0 - jr asm_fd64d + jr .ApplyVector -MovePikachuSpriteRight: +.Right: ld d, a ld e, 0 - jr asm_fd64d + jr .ApplyVector -MovePikachuSpriteDownLeft: +.DownLeft: ld e, a cpl inc a ld d, a - jr asm_fd64d + jr .ApplyVector -MovePikachuSpriteDownRight: +.DownRight: ld e, a ld d, a - jr asm_fd64d + jr .ApplyVector -MovePikachuSpriteUpLeft: +.UpLeft: cpl inc a ld e, a ld d, a - jr asm_fd64d + jr .ApplyVector -MovePikachuSpriteUpRight: +.UpRight: ld d, a cpl inc a ld e, a - jr asm_fd64d + jr .ApplyVector -asm_fd64d - ld a, [wPikaPicAnimDelay] +.ApplyVector: + ld a, [wPikaSpriteX] add d - ld [wPikaPicAnimDelay], a + ld [wPikaSpriteX], a ld a, [wPikaSpriteY] add e ld [wPikaSpriteY], a ret -Jumptable_fd65c: - dw Func_fd678 - dw Func_fd6a3 - dw Func_fd698 - dw Func_fd6f4 - dw Func_fd6ff - dw Func_fd718 - dw Func_fd68c - dw Func_fd6c6 - dw Func_fd6c0 - dw Func_fd6e2 - dw Func_fd68b - -Func_fd672: - ld hl, wd44d +PikaMovementFunc2Jumptable: + dw PikaMovementFunc2_ResetFrameCounterAndFaceCurrent ; 0 + dw PikaMovementFunc2_UpdateSpriteImageIdxWithPreviousImageIdxDirection ; 1 + dw PikaMovementFunc2_UpdateSpriteImageIdxWithFacing ; 2 + dw PikaMovementFunc2_TurnParameter ; 3 + dw PikaMovementFunc2_TurnClockwise ; 4 + dw PikaMovementFunc2_TurnCounterClockwise ; 5 + dw PikaMovementFunc2_CopySpriteImageIdxDirectionToSpriteImageIdx ; 6 + dw PikaMovementFunc2_UpdateJumpWithPreviousImageIdxDirection ; 7 + dw PikaMovementFunc2_UpdateJumpWithFacing ; 8 + dw PikaMovementFunc2_CopyFacingToJump ; 9 + dw PikaMovementFunc2_nop ; 10 + +PikaMovement_SetSpawnShadow: + ld hl, wPikachuMovementFlags set 6, [hl] ret -Func_fd678: - ld hl, 7 +PikaMovementFunc2_ResetFrameCounterAndFaceCurrent: + ld hl, wPlayerIntraAnimFrameCounter - wPlayerSpriteStateData1 add hl, bc xor a ld [hli], a ld [hl], a - call Func_fd74a + call PikaMovementFunc2_GetImageBaseOffset ld d, a - call GetObjectFacing + call GetPikachuFacing or d - ld [wPikaPicAnimTimer + 1], a + ld [wCurPikaMovementSpriteImageIdx], a ret -Func_fd68b: +PikaMovementFunc2_nop: ret -Func_fd68c: - call Func_fd74a +PikaMovementFunc2_CopySpriteImageIdxDirectionToSpriteImageIdx: + call PikaMovementFunc2_GetImageBaseOffset ld d, a - call Func_fd755 + call PikaMovementFunc2_GetSpriteImageIdxDirection or d - ld [wPikaPicAnimTimer + 1], a + ld [wCurPikaMovementSpriteImageIdx], a ret -Func_fd698: - call Func_fd74a +PikaMovementFunc2_UpdateSpriteImageIdxWithFacing: + call PikaMovementFunc2_GetImageBaseOffset ld d, a - call GetObjectFacing + call GetPikachuFacing or d ld d, a - jr asm_fd6ac + jr PikaMovementFunc2_UpdateSpriteImageIdx -Func_fd6a3: - call Func_fd74a +PikaMovementFunc2_UpdateSpriteImageIdxWithPreviousImageIdxDirection: + call PikaMovementFunc2_GetImageBaseOffset ld d, a - call Func_fd755 + call PikaMovementFunc2_GetSpriteImageIdxDirection or d ld d, a -asm_fd6ac - ld hl, 8 +PikaMovementFunc2_UpdateSpriteImageIdx: + ld hl, wPlayerAnimFrameCounter - wPlayerSpriteStateData1 add hl, bc - call Func_fd78e - jr nz, .asm_fd6b6 + call CheckPikachuStepTimer2 ; does not preserve hl + jr nz, .skip inc [hl] -.asm_fd6b6 +.skip ld a, [hl] rrca rrca and 3 or d - ld [wPikaPicAnimTimer + 1], a + ld [wCurPikaMovementSpriteImageIdx], a ret -Func_fd6c0: - call GetObjectFacing +PikaMovementFunc2_UpdateJumpWithFacing: + call GetPikachuFacing ld d, a - jr asm_fd6ca + jr PikaMovementFunc2_UpdateJump -Func_fd6c6: - call Func_fd755 +PikaMovementFunc2_UpdateJumpWithPreviousImageIdxDirection: + call PikaMovementFunc2_GetSpriteImageIdxDirection ld d, a -asm_fd6ca - call Func_fd74a +PikaMovementFunc2_UpdateJump: + call PikaMovementFunc2_GetImageBaseOffset or d ld d, a - call Func_fd736 + call PikaMovementFunc2_Timer or d - ld [wPikaPicAnimTimer + 1], a - call Func_fd79d - ld [wd456], a + ld [wCurPikaMovementSpriteImageIdx], a + call PikaMovementFunc_Sine + ld [wPikachuMovementYOffset], a and a ret z - call Func_fd672 + call PikaMovement_SetSpawnShadow ret -Func_fd6e2: - call GetObjectFacing +PikaMovementFunc2_CopyFacingToJump: + call GetPikachuFacing ld d, a - call Func_fd74a + call PikaMovementFunc2_GetImageBaseOffset or d - ld [wPikaPicAnimTimer + 1], a - call Func_fd79d - ld [wd456], a + ld [wCurPikaMovementSpriteImageIdx], a + call PikaMovementFunc_Sine + ld [wPikachuMovementYOffset], a ret -Func_fd6f4: - ld a, [wPikaPicAnimPointerSetupFinished] +PikaMovementFunc2_TurnParameter: + ld a, [wCurPikaMovementParam2] and $40 cp $40 - jr z, Func_fd6ff - jr Func_fd718 + jr z, PikaMovementFunc2_TurnClockwise + jr PikaMovementFunc2_TurnCounterClockwise -Func_fd6ff: - call Func_fd755 +PikaMovementFunc2_TurnClockwise: + call PikaMovementFunc2_GetSpriteImageIdxDirection ld d, a - call Func_fd78e - jr nz, .asm_fd710 + call CheckPikachuStepTimer2 + jr nz, .skip ld hl, Data_fd731 -.asm_fd70b +.loop ld a, [hli] cp d - jr nz, .asm_fd70b + jr nz, .loop ld d, [hl] -.asm_fd710 - call Func_fd74a +.skip + call PikaMovementFunc2_GetImageBaseOffset or d - ld [wPikaPicAnimTimer + 1], a + ld [wCurPikaMovementSpriteImageIdx], a ret -Func_fd718: - call Func_fd755 +PikaMovementFunc2_TurnCounterClockwise: + call PikaMovementFunc2_GetSpriteImageIdxDirection ld d, a - call Func_fd78e - jr nz, .asm_fd529 + call CheckPikachuStepTimer2 + jr nz, .skip ld hl, Data_fd731End -.asm_fd524 +.loop ld a, [hld] cp d - jr nz, .asm_fd524 + jr nz, .loop ld d, [hl] -.asm_fd529 - call Func_fd74a +.skip + call PikaMovementFunc2_GetImageBaseOffset or d - ld [wPikaPicAnimTimer + 1], a + ld [wCurPikaMovementSpriteImageIdx], a ret Data_fd731: @@ -702,27 +710,27 @@ Data_fd731: db SPRITE_FACING_DOWN Data_fd731End: -Func_fd736: +PikaMovementFunc2_Timer: push hl - ld hl, 7 + ld hl, wPlayerIntraAnimFrameCounter - wPlayerSpriteStateData1 add hl, bc ld a, [hl] inc a and $3 ld [hli], a - jr nz, .asm_fd747 + jr nz, .load_pop ld a, [hl] inc a and $3 ld [hl], a -.asm_fd747 +.load_pop ld a, [hl] pop hl ret -Func_fd74a: +PikaMovementFunc2_GetImageBaseOffset: push hl - ld hl, wSpriteStateData2 - wSpriteStateData1 + 14 + ld hl, wPlayerSpriteImageBaseOffset - wPlayerSpriteStateData1 add hl, bc ld a, [hl] dec a @@ -730,27 +738,27 @@ Func_fd74a: pop hl ret -Func_fd755: +PikaMovementFunc2_GetSpriteImageIdxDirection: push hl - ld hl, 2 + ld hl, wPlayerSpriteImageIdx - wPlayerSpriteStateData1 add hl, bc ld a, [hl] and $c pop hl ret -GetObjectFacing: +GetPikachuFacing: push hl - ld hl, 9 + ld hl, wPlayerFacingDirection - wPlayerSpriteStateData1 add hl, bc ld a, [hl] and $c pop hl ret -SetObjectFacing: +SetPikachuFacing: push hl - ld hl, 9 + ld hl, wPlayerFacingDirection - wPlayerSpriteStateData1 add hl, bc add a add a @@ -759,10 +767,10 @@ SetObjectFacing: pop hl ret -Func_fd775: - ld hl, wd457 +CheckPikachuStepTimer1: + ld hl, wPikachuStepTimer inc [hl] - ld a, [wPikaPicAnimPointer] + ld a, [wCurPikaMovementParam1] and $1f inc a cp [hl] @@ -770,18 +778,19 @@ Func_fd775: ld [hl], 0 ret -Func_fd784: - ld a, [wPikaPicAnimPointer] +GetPikachuStepVectorMagnitude: + ; *XX***** + ld a, [wCurPikaMovementParam1] swap a rrca and $3 inc a ret -Func_fd78e: - ld hl, wd458 +CheckPikachuStepTimer2: + ld hl, wPikachuStepSubtimer inc [hl] - ld a, [wPikaPicAnimPointerSetupFinished] + ld a, [wCurPikaMovementParam2] and $f inc a cp [hl] @@ -789,11 +798,11 @@ Func_fd78e: ld [hl], 0 ret -Func_fd79d: - call Func_fd7b2 - ld a, [wd458] +PikaMovementFunc_Sine: + call .GetArgument + ld a, [wPikachuStepSubtimer] add e - ld [wd458], a + ld [wPikachuStepSubtimer], a add $20 ld e, a push hl @@ -803,37 +812,37 @@ Func_fd79d: pop hl ret -Func_fd7b2: - ld a, [wPikaPicAnimPointerSetupFinished] +.GetArgument: + ld a, [wCurPikaMovementParam2] and $f inc a ld d, a - ld a, [wPikaPicAnimPointerSetupFinished] + ld a, [wCurPikaMovementParam2] swap a and $7 ld e, a ld a, 1 - jr z, .asm_fd7c9 -.asm_fd7c5 + jr z, .okay +.loop add a dec e - jr nz, .asm_fd7c5 -.asm_fd7c9 + jr nz, .loop +.okay ld e, a ret -Func_fd7cb: +ApplyPikachuStepVector: push bc ld c, a ld b, 0 - ld hl, Data_fd7e3 + ld hl, .StepVectors add hl, bc add hl, bc ld d, [hl] inc hl ld e, [hl] pop bc - ld hl, wSpriteStateData2 - wSpriteStateData1 + 4 + ld hl, wPlayerMapY - wPlayerSpriteStateData1 add hl, bc ld a, [hl] add e @@ -843,7 +852,7 @@ Func_fd7cb: ld [hl], a ret -Data_fd7e3: +.StepVectors: db 0, 1 db 0, -1 db -1, 0 @@ -853,7 +862,7 @@ Data_fd7e3: db -1, -1 db 1, -1 -Func_fd7f3: +LoadPikachuShadowOAMData: push bc push de push hl @@ -861,22 +870,22 @@ Func_fd7f3: ld bc, wOAMBuffer + 4 * 36 ld a, [wPikaSpriteY] ld e, a - ld a, [wPikaPicAnimDelay] + ld a, [wPikaSpriteX] ld d, a - ld hl, Data_fd80b - call Func_fd814 + ld hl, .OAMData + call .LoadOAMData pop hl pop de pop bc ret -Data_fd80b: - db $02 +.OAMData: + db 2 db $0c, $00, $ff, 0 db $0c, $08, $ff, 1 << OAM_X_FLIP -Func_fd814: +.LoadOAMData: ld a, e add $10 ld e, a @@ -884,7 +893,7 @@ Func_fd814: add $8 ld d, a ld a, [hli] -.asm_fd81d +.loop push af ld a, [hli] add e @@ -902,7 +911,7 @@ Func_fd814: inc bc pop af dec a - jr nz, .asm_fd81d + jr nz, .loop ret LoadPikachuShadowIntoVRAM: @@ -924,7 +933,7 @@ LoadPikachuBallIconIntoVRAM: Func_fd851: ld hl, vNPCSprites + $c * $10 ld a, 3 -.asm_fd856 +.loop push af push hl ld de, GFX_fd86b @@ -935,13 +944,13 @@ Func_fd851: add hl, de pop af dec a - jr nz, .asm_fd856 + jr nz, .loop ret GFX_fd86b: INCBIN "gfx/unknown_fd86b.2bpp" -LoadPikachuSpriteIntoVRAM: ; fd8ab (3f:58ab) +LoadPikachuSpriteIntoVRAM: ld de, PikachuSprite lb bc, BANK(PikachuSprite), (SandshrewSprite - PikachuSprite) / 32 ld hl, vNPCSprites + $c * $10 @@ -961,7 +970,7 @@ LoadPikachuSpriteIntoVRAM: ; fd8ab (3f:58ab) call LoadPikachuBallIconIntoVRAM ret -PikachuPewterPokecenterCheck: ; fd8d4 (3f:58d4) +PikachuPewterPokecenterCheck: ld a, [wCurMap] cp PEWTER_POKECENTER ret nz @@ -969,7 +978,7 @@ PikachuPewterPokecenterCheck: ; fd8d4 (3f:58d4) call StarterPikachuEmotionCommand_turnawayfromplayer ret -PikachuFanClubCheck: ; fd8e1 (3f:58e1) +PikachuFanClubCheck: ld a, [wCurMap] cp POKEMON_FAN_CLUB ret nz @@ -977,14 +986,14 @@ PikachuFanClubCheck: ; fd8e1 (3f:58e1) call StarterPikachuEmotionCommand_turnawayfromplayer ret -PikachuBillsHouseCheck: ; fd8ee (3f:58ee) +PikachuBillsHouseCheck: ld a, [wCurMap] cp BILLS_HOUSE ret nz call EnablePikachuFollowingPlayer ret -Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3: ; fd8f8 (3f:58f8) +Pikachu_LoadCurrentMapViewUpdateSpritesAndDelay3: call LoadCurrentMapView call UpdateSprites call Delay3 diff --git a/engine/pikachu_pcm.asm b/engine/pikachu_pcm.asm index e0238468..043f702c 100755 --- a/engine/pikachu_pcm.asm +++ b/engine/pikachu_pcm.asm @@ -1,4 +1,4 @@ -PlayPikachuSoundClip:: ; f0000 (3c:4000) +PlayPikachuSoundClip:: ld a, e ld e, a ld d, $0 @@ -85,7 +85,7 @@ PlayPikachuSoundClip:: ; f0000 (3c:4000) ei ret -PikachuCriesPointerTable: ; f008e (3c:408e) +PikachuCriesPointerTable: ; format: ; db bank ; dw pointer to cry diff --git a/engine/pikachu_pic_animation.asm b/engine/pikachu_pic_animation.asm index a49e9bc2..c04382c1 100755 --- a/engine/pikachu_pic_animation.asm +++ b/engine/pikachu_pic_animation.asm @@ -1,26 +1,26 @@ -GetPikaPicAnimationScriptIndex: ; fd978 (3f:5978) +GetPikaPicAnimationScriptIndex: ld hl, PikachuMoodLookupTable ld a, [wPikachuMood] ld d, a -.asm_fd97f +.get_mood_param ld a, [hli] inc hl cp d - jr c, .asm_fd97f + jr c, .get_mood_param dec hl ld e, [hl] ld hl, PikaPicAnimationScriptPointerLookupTable ld a, [wPikachuHappiness] ld d, a ld bc, 6 -.asm_fd990 +.get_happiness_param ld a, [hl] cp d - jr nc, .asm_fd997 + jr nc, .got_animation add hl, bc - jr .asm_fd990 + jr .get_happiness_param -.asm_fd997 +.got_animation ld d, 0 add hl, de ld a, [hl] @@ -29,44 +29,85 @@ GetPikaPicAnimationScriptIndex: ; fd978 (3f:5978) PikachuMoodLookupTable: ; First byte: mood threshold ; Second byte: column index in PikaPicAnimationScriptPointerLookupTable - db $28, 1 - db $7f, 2 - db $80, 3 - db $d2, 4 - db $ff, 5 + db 40, 1 + db 127, 2 + db 128, 3 + db 210, 4 + db 255, 5 PikaPicAnimationScriptPointerLookupTable: ; First byte: happiness threshold ; Remaining bytes: loaded based on Pikachu's mood - db $32, $0e, $0e, $06, $0d, $0d - db $64, $09, $09, $05, $0c, $0c - db $82, $03, $03, $01, $08, $08 - db $a0, $03, $03, $04, $0f, $0f - db $c8, $11, $11, $07, $02, $02 - db $fa, $11, $11, $10, $0a, $0a - db $ff, $11, $11, $13, $14, $14 - -StarterPikachuEmotionCommand_pikapic: ; fd9d0 (3f:59d0) + db 50 + dpikapic PikaPicAnimScript14 + dpikapic PikaPicAnimScript14 + dpikapic PikaPicAnimScript6 + dpikapic PikaPicAnimScript13 + dpikapic PikaPicAnimScript13 + + db 100 + dpikapic PikaPicAnimScript9 + dpikapic PikaPicAnimScript9 + dpikapic PikaPicAnimScript5 + dpikapic PikaPicAnimScript12 + dpikapic PikaPicAnimScript12 + + db 130 + dpikapic PikaPicAnimScript3 + dpikapic PikaPicAnimScript3 + dpikapic PikaPicAnimScript1 + dpikapic PikaPicAnimScript8 + dpikapic PikaPicAnimScript8 + + db 160 + dpikapic PikaPicAnimScript3 + dpikapic PikaPicAnimScript3 + dpikapic PikaPicAnimScript4 + dpikapic PikaPicAnimScript15 + dpikapic PikaPicAnimScript15 + + db 200 + dpikapic PikaPicAnimScript17 + dpikapic PikaPicAnimScript17 + dpikapic PikaPicAnimScript7 + dpikapic PikaPicAnimScript2 + dpikapic PikaPicAnimScript2 + + db 250 + dpikapic PikaPicAnimScript17 + dpikapic PikaPicAnimScript17 + dpikapic PikaPicAnimScript16 + dpikapic PikaPicAnimScript10 + dpikapic PikaPicAnimScript10 + + db 255 + dpikapic PikaPicAnimScript17 + dpikapic PikaPicAnimScript17 + dpikapic PikaPicAnimScript19 + dpikapic PikaPicAnimScript20 + dpikapic PikaPicAnimScript20 + +StarterPikachuEmotionCommand_pikapic: ld a, [H_AUTOBGTRANSFERENABLED] push af xor a ld [H_AUTOBGTRANSFERENABLED], a ld a, [de] - ld [wExpressionNumber2], a + ld [wPikaPicAnimNumber], a inc de push de - call Func_fd9e4 + call .RunPikapic pop de pop af ld [H_AUTOBGTRANSFERENABLED], a ret -Func_fd9e4: +.RunPikapic: call PlacePikapicTextBoxBorder callab LoadOverworldPikachuFrontpicPalettes call ResetPikaPicAnimBuffer call LoadCurrentPikaPicAnimScriptPointer - call Func_fda9a + call ExecutePikaPicAnimScript call PlacePikapicTextBoxBorder call RunDefaultPaletteCommand ret @@ -86,10 +127,10 @@ ResetPikaPicAnimBuffer: ld [wPikaPicAnimTimer], a ld a, h ld [wPikaPicAnimTimer + 1], a - ld a, $07 - ld [wPikaSpriteY], a - ld a, $06 - ld [wPikaPicTextboxStartY], a + ld a, $7 + ld [wPikaPicPikaDrawStartX], a + ld a, $6 + ld [wPikaPicPikaDrawStartY], a ret PlacePikapicTextBoxBorder: @@ -100,20 +141,20 @@ PlacePikapicTextBoxBorder: call TextBoxBorder call Delay3 call UpdateSprites - ld a, $01 + ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a call Delay3 ret LoadCurrentPikaPicAnimScriptPointer: - ld a, [wExpressionNumber2] + ld a, [wPikaPicAnimNumber] cp $1d jr c, .valid - ld a, 0 + ld a, $0 .valid ld e, a ld d, 0 - ld hl, Pointers_fda5e + ld hl, PikaPicAnimPointers add hl, de add hl, de ld a, [hli] @@ -122,48 +163,51 @@ LoadCurrentPikaPicAnimScriptPointer: call UpdatePikaPicAnimPointer ret -Pointers_fda5e: - dw Data_fe28a ; 00 - dw Data_fe28a ; 01 - dw Data_fe2a4 ; 02 - dw Data_fe2be ; 03 - dw Data_fe2d8 ; 04 - dw Data_fe2f2 ; 05 - dw Data_fe30c ; 06 - dw Data_fe326 ; 07 - dw Data_fe340 ; 08 - dw Data_fe35a ; 09 - dw Data_fe374 ; 0a - dw Data_fe390 ; 0b - dw Data_fe3aa ; 0c - dw Data_fe3c4 ; 0d - dw Data_fe3de ; 0e - dw Data_fe3f8 ; 0f - dw Data_fe412 ; 10 - dw Data_fe42c ; 11 - dw Data_fe446 ; 12 - dw Data_fe460 ; 13 - dw Data_fe47a ; 14 - dw Data_fe494 ; 15 - dw Data_fe4b4 ; 16 - dw Data_fe4ce ; 17 - dw Data_fe4e8 ; 18 - dw Data_fe502 ; 19 - dw Data_fe520 ; 1a - dw Data_fe53e ; 1b - dw Data_fe558 ; 1c - dw Data_fe28a ; 1d - - -Func_fda9a: +PikaPicAnimPointers: +pikapic_def: macro +\1_id: dw \1 +endm + + pikapic_def PikaPicAnimScript0 ; 00 + pikapic_def PikaPicAnimScript1 ; 01 + pikapic_def PikaPicAnimScript2 ; 02 + pikapic_def PikaPicAnimScript3 ; 03 + pikapic_def PikaPicAnimScript4 ; 04 + pikapic_def PikaPicAnimScript5 ; 05 + pikapic_def PikaPicAnimScript6 ; 06 + pikapic_def PikaPicAnimScript7 ; 07 + pikapic_def PikaPicAnimScript8 ; 08 + pikapic_def PikaPicAnimScript9 ; 09 + pikapic_def PikaPicAnimScript10 ; 0a + pikapic_def PikaPicAnimScript11 ; 0b + pikapic_def PikaPicAnimScript12 ; 0c + pikapic_def PikaPicAnimScript13 ; 0d + pikapic_def PikaPicAnimScript14 ; 0e + pikapic_def PikaPicAnimScript15 ; 0f + pikapic_def PikaPicAnimScript16 ; 10 + pikapic_def PikaPicAnimScript17 ; 11 + pikapic_def PikaPicAnimScript18 ; 12 + pikapic_def PikaPicAnimScript19 ; 13 + pikapic_def PikaPicAnimScript20 ; 14 + pikapic_def PikaPicAnimScript21 ; 15 + pikapic_def PikaPicAnimScript22 ; 16 + pikapic_def PikaPicAnimScript23 ; 17 + pikapic_def PikaPicAnimScript24 ; 18 + pikapic_def PikaPicAnimScript25 ; 19 + pikapic_def PikaPicAnimScript26 ; 1a + pikapic_def PikaPicAnimScript27 ; 1b + pikapic_def PikaPicAnimScript28 ; 1c + pikapic_def PikaPicAnimScript29 ; 1d + +ExecutePikaPicAnimScript: .loop xor a ld [H_AUTOBGTRANSFERENABLED], a - call RunPikaPicAnimScript - call Func_fdad5 - call Func_fdad6 - call Func_fdad5 - ld a, $01 + call RunPikaPicAnimSetupScript + call DummyFunction_fdad5 + call AnimateCurrentPikaPicAnimFrame + call DummyFunction_fdad5 + ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a call PikaPicAnimTimerAndJoypad and a @@ -194,57 +238,57 @@ CheckPikaPicAnimTimer: ret .timer_expired - ld a, $01 + ld a, $1 ret -Func_fdad5: +DummyFunction_fdad5: ret -Func_fdad6: +AnimateCurrentPikaPicAnimFrame: ld bc, wPikaPicAnimObjectDataBuffer ld a, 4 -.asm_fdadb +.loop push af push bc - ld hl, 0 + ld hl, 0 ; struct index add hl, bc ld a, [hli] and a - jr z, .asm_fdb26 + jr z, .skip ld a, [hli] - ld [wCurPikaPicAnimObject], a + ld [wCurPikaPicAnimObjectScriptIdx], a ld a, [hli] - ld [wCurPikaPicAnimObject + 1], a + ld [wCurPikaPicAnimObjectFrameIdx], a ld a, [hli] - ld [wCurPikaPicAnimObject + 2], a + ld [wCurPikaPicAnimObjectFrameTimer], a ld a, [hli] - ld [wd456], a + ld [wCurPikaPicAnimObjectVTileOffset], a ld a, [hli] - ld [wd457], a + ld [wCurPikaPicAnimObjectXOffset], a ld a, [hli] - ld [wd458], a + ld [wCurPikaPicAnimObjectYOffset], a ld a, [hli] - ld [wCurPikaPicAnimObject + 3], a + ld [wCurPikaPicAnimObject + 6], a push bc - call Func_fdb7e + call LoadPikaPicAnimObjectData pop bc - ld hl, 1 + ld hl, 1 ; script index add hl, bc - ld a, [wCurPikaPicAnimObject] + ld a, [wCurPikaPicAnimObjectScriptIdx] ld [hli], a - ld a, [wCurPikaPicAnimObject + 1] + ld a, [wCurPikaPicAnimObjectFrameIdx] ld [hli], a - ld a, [wCurPikaPicAnimObject + 2] + ld a, [wCurPikaPicAnimObjectFrameTimer] ld [hli], a - ld a, [wd456] + ld a, [wCurPikaPicAnimObjectVTileOffset] ld [hli], a - ld a, [wd457] + ld a, [wCurPikaPicAnimObjectXOffset] ld [hli], a - ld a, [wd458] + ld a, [wCurPikaPicAnimObjectYOffset] ld [hli], a - ld a, [wCurPikaPicAnimObject + 3] + ld a, [wCurPikaPicAnimObject + 6] ld [hl], a -.asm_fdb26 +.skip pop bc ld hl, 8 add hl, bc @@ -252,7 +296,7 @@ Func_fdad6: ld c, l pop af dec a - jr nz, .asm_fdadb + jr nz, .loop ret PikaPicAnimCommand_object: @@ -279,7 +323,7 @@ PikaPicAnimCommand_object: call GetPikaPicAnimByte ld [hl], a xor a - ld [hli], a + ld [hli], a ; overloads ld [hli], a call GetPikaPicAnimByte ld [hli], a @@ -311,323 +355,65 @@ PikaPicAnimCommand_deleteobject: ld [hl], a ret -Func_fdb7e: -.asm_fdb7e - ld a, [wCurPikaPicAnimObject] +LoadPikaPicAnimObjectData: +.loop + ld a, [wCurPikaPicAnimObjectScriptIdx] cp $23 - jr c, .asm_fdb87 - ld a, $04 -.asm_fdb87 + jr c, .valid + ld a, $4 +.valid ld e, a - ld d, $00 - ld hl, Pointers_fdbc9 + ld d, 0 + ld hl, PikaPicAnimBGFramesPointers add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a - ld a, [wCurPikaPicAnimObject + 1] + ld a, [wCurPikaPicAnimObjectFrameIdx] ld e, a ld d, 0 add hl, de add hl, de ld a, [hli] cp $e0 - jr z, .asm_fdba1 - jr .asm_fdbaa + jr z, .end + jr .init -.asm_fdba1 +.end xor a - ld [wCurPikaPicAnimObject + 1], a - ld [wCurPikaPicAnimObject + 2], a - jr .asm_fdb7e + ld [wCurPikaPicAnimObjectFrameIdx], a + ld [wCurPikaPicAnimObjectFrameTimer], a + jr .loop -.asm_fdbaa +.init push hl - call Func_fdd62 + call LoadCurPikaPicObjectTilemap pop hl ld a, [hl] and a - jr z, .asm_fdbc8 - ld a, [wCurPikaPicAnimObject + 2] + jr z, .not_done ; lasts forever + ld a, [wCurPikaPicAnimObjectFrameTimer] inc a - ld [wCurPikaPicAnimObject + 2], a + ld [wCurPikaPicAnimObjectFrameTimer], a cp [hl] - jr nz, .asm_fdbc8 + jr nz, .not_done xor a - ld [wCurPikaPicAnimObject + 2], a - ld a, [wCurPikaPicAnimObject + 1] + ld [wCurPikaPicAnimObjectFrameTimer], a + ld a, [wCurPikaPicAnimObjectFrameIdx] inc a - ld [wCurPikaPicAnimObject + 1], a -.asm_fdbc8 + ld [wCurPikaPicAnimObjectFrameIdx], a +.not_done ret -Pointers_fdbc9: - dw Data_fdc11 - dw Data_fdc11 - dw Data_fdc29 - dw Data_fdc32 - dw Data_fdc3b - dw Data_fdc3e - dw Data_fdc41 - dw Data_fdc50 - dw Data_fdc61 - dw Data_fdc6e - dw Data_fdc77 - dw Data_fdc84 - dw Data_fdc8d - dw Data_fdc98 - dw Data_fdca5 - dw Data_fdcb2 - dw Data_fdcb7 - dw Data_fdcc2 - dw Data_fdccb - dw Data_fdcd4 - dw Data_fdcdf - dw Data_fdce8 - dw Data_fdcf1 - dw Data_fdcf6 - dw Data_fdd01 - dw Data_fdd0a - dw Data_fdd13 - dw Data_fdd1c - dw Data_fdd27 - dw Data_fdd2c - dw Data_fdd35 - dw Data_fdd40 - dw Data_fdd47 - dw Data_fdd54 - dw Data_fdd59 - dw Data_fdc3b - -Data_fdc11: - db $01, $14 - db $07, $02 - db $01, $01 - db $07, $02 - db $01, $01 - db $07, $08 - db $e0 -Data_fdc1e: - db $02, $02 - db $01, $01 - db $02, $02 - db $01, $01 - db $02, $08 - db $e0 -Data_fdc29: - db $00, $08 - db $08, $08 - db $00, $08 - db $08, $08 - db $e0 -Data_fdc32: - db $08, $08 - db $00, $08 - db $08, $08 - db $00, $08 - db $e0 -Data_fdc3b: - db $01, $00 - db $e0 -Data_fdc3e: - db $09, $00 - db $e0 -Data_fdc41: - db $00, $02 - db $0e, $04 - db $00, $08 - db $0e, $04 - db $00, $40 - db $0e, $04 - db $00, $40 - db $e0 -Data_fdc50: - db $00, $04 - db $0f, $04 - db $00, $04 - db $0f, $04 - db $00, $08 - db $0f, $04 - db $00, $08 - db $0f, $04 - db $e0 -Data_fdc61: - db $10, $01 - db $00, $01 - db $10, $01 - db $00, $40 - db $10, $01 - db $00, $40 - db $e0 -Data_fdc6e: - db $00, $08 - db $11, $08 - db $00, $14 - db $11, $08 - db $e0 -Data_fdc77: - db $00, $02 - db $12, $02 - db $00, $02 - db $12, $40 - db $00, $03 - db $12, $40 - db $e0 -Data_fdc84: - db $00, $08 - db $13, $40 - db $00, $04 - db $13, $40 - db $e0 -Data_fdc8d: - db $14, $08 - db $00, $02 - db $14, $08 - db $00, $02 - db $14, $08 - db $e0 -Data_fdc98: - db $15, $04 - db $00, $08 - db $15, $04 - db $00, $40 - db $15, $04 - db $00, $40 - db $e0 -Data_fdca5: - db $00, $02 - db $16, $02 - db $00, $02 - db $16, $02 - db $00, $14 - db $16, $02 - db $e0 -Data_fdcb2: - db $00, $08 - db $17, $08 - db $e0 -Data_fdcb7: - db $00, $08 - db $17, $03 - db $18, $05 - db $17, $03 - db $00, $05 - db $e0 -Data_fdcc2: - db $00, $14 - db $19, $08 - db $00, $14 - db $19, $08 - db $e0 -Data_fdccb: - db $00, $0d - db $1a, $0c - db $00, $64 - db $1a, $08 - db $e0 -Data_fdcd4: - db $00, $05 - db $1b, $05 - db $00, $05 - db $1b, $05 - db $00, $64 - db $e0 -Data_fdcdf: - db $00, $02 - db $1c, $02 - db $00, $02 - db $1c, $02 - db $e0 -Data_fdce8: - db $00, $05 - db $1d, $05 - db $00, $05 - db $1d, $05 - db $e0 -Data_fdcf1: - db $1e, $08 - db $00, $64 - db $e0 -Data_fdcf6: - db $00, $0a - db $1f, $03 - db $00, $03 - db $1f, $03 - db $00, $64 - db $e0 -Data_fdd01: - db $00, $03 - db $20, $64 - db $00, $08 - db $20, $08 - db $e0 -Data_fdd0a: - db $21, $06 - db $00, $06 - db $21, $06 - db $00, $06 - db $e0 -Data_fdd13: - db $00, $08 - db $22, $0c - db $00, $08 - db $22, $0c - db $e0 -Data_fdd1c: - db $00, $08 - db $09, $02 - db $0a, $01 - db $0b, $01 - db $0c, $64 - db $e0 -Data_fdd27: - db $00, $08 - db $24, $64 - db $e0 -Data_fdd2c: - db $00, $10 - db $25, $10 - db $00, $10 - db $25, $10 - db $e0 -Data_fdd35: - db $00, $06 - db $26, $06 - db $00, $06 - db $26, $06 - db $00, $64 - db $e0 -Data_fdd40: - db $00, $06 - db $09, $06 - db $0a, $64 - db $e0 -Data_fdd47: - db $00, $14 - db $09, $08 - db $00, $14 - db $09, $08 - db $0a, $08 - db $0b, $64 - db $e0 -Data_fdd54: - db $00, $04 - db $09, $64 - db $e0 -Data_fdd59: - db $00, $0c - db $09, $0c - db $00, $0c - db $09, $64 - db $e0 - -Func_fdd62: +INCLUDE "data/pikachu_pic_objects.asm" + +LoadCurPikaPicObjectTilemap: and a ret z ld e, a ld d, 0 - ld hl, Pointers_fddb8 + ld hl, PikaPicTilemapPointers add hl, de add hl, de ld e, [hl] @@ -641,45 +427,45 @@ Func_fdd62: inc de push de push bc - call Func_fdd98 + call .GetStartCoords pop bc pop de -.asm_fdd7c +.row push bc push hl - ld a, [wd456] + ld a, [wCurPikaPicAnimObjectVTileOffset] ; tile id offset ld c, a -.asm_fdd82 +.col ld a, [de] inc de cp $ff - jr z, .asm_fdd8a + jr z, .skip add c ld [hl], a -.asm_fdd8a +.skip inc hl dec b - jr nz, .asm_fdd82 + jr nz, .col pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec c - jr nz, .asm_fdd7c + jr nz, .row ret -Func_fdd98: +.GetStartCoords: push bc - ld a, [wd458] + ld a, [wCurPikaPicAnimObjectYOffset] ; Y offset ld b, a - ld a, [wPikaPicTextboxStartY] + ld a, [wPikaPicPikaDrawStartY] add b coord hl, 0, 0 ld bc, SCREEN_WIDTH call AddNTimes - ld a, [wd457] + ld a, [wCurPikaPicAnimObjectXOffset] ; X offset ld c, a - ld a, [wPikaSpriteY] + ld a, [wPikaPicPikaDrawStartX] add c ld c, a ld b, 0 @@ -687,234 +473,7 @@ Func_fdd98: pop bc ret -Pointers_fddb8: - dw Data_fde0e - dw Data_fde0f - dw Data_fde2a - dw Data_fde60 - dw Data_fde63 - dw Data_fde67 - dw Data_fde6b - dw Data_fde45 - dw Data_fde6b - dw Data_fdfaa - dw Data_fdfc5 - dw Data_fdfe0 - dw Data_fdffb - dw Data_fe016 - dw Data_fde81 - dw Data_fde9c - dw Data_fdeb7 - dw Data_fded2 - dw Data_fdeed - dw Data_fdf08 - dw Data_fdf23 - dw Data_fdf3e - dw Data_fdf59 - dw Data_fdf74 - dw Data_fdf8f - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfaa - dw Data_fdfc5 - dw Data_fdfe0 - dw Data_fde0f - -Data_fde0e: - db $ff ; unused - -Data_fde0f: ; fde0f - db 5, 5 - db $00, $05, $0a, $0f, $14 - db $01, $06, $0b, $10, $15 - db $02, $07, $0c, $11, $16 - db $03, $08, $0d, $12, $17 - db $04, $09, $0e, $13, $18 - -Data_fde2a: ; fde2a - db 5, 5 - db $19, $1e, $23, $28, $2d - db $1a, $1f, $24, $29, $2e - db $1b, $20, $25, $2a, $2f - db $1c, $21, $26, $2b, $30 - db $1d, $22, $27, $2c, $31 - -Data_fde45: ; fde45 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $ff, $20, $25, $ff, $ff - db $ff, $21, $26, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fde60: ; fde60 - db 1, 1 - db $00 - -Data_fde63: ; fde63 - db 2, 1 - db $00 - db $01 - -Data_fde67: ; fde67 - db 1, 2 - db $00, $01 - -Data_fde6b: ; fde6b - db 2, 2 - db $00, $01 - db $02, $03 - -Data_fde71: ; fde71 - db 3, 2 - db $00, $01 - db $02, $03 - db $04, $05 - -Data_fde79: ; fde79 - db 2, 3 - db $00, $01, $02 - db $03, $04, $05 - -Data_fde81: ; fde81 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fde9c: ; fde9c - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - -Data_fdeb7: ; fdeb7 - db 5, 5 - db $00, $01, $ff, $ff, $ff - db $02, $03, $ff, $ff, $ff - db $04, $05, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fded2: ; fded2 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - -Data_fdeed: ; fdeed - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $00, $01 - db $ff, $ff, $ff, $02, $03 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fdf08: ; fdf08 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $ff, $ff, $ff - db $02, $03, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - -Data_fdf23: ; fdf23 - db 5, 5 - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - db $14, $15, $16, $17, $18 - -Data_fdf3e: ; fdf3e - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $ff, $ff, $ff, $ff, $ff - -Data_fdf59: ; fdf59 - db 5, 5 - db $ff, $ff, $ff, $ff, $ff - db $ff, $ff, $ff, $ff, $ff - db $00, $01, $ff, $ff, $ff - db $02, $03, $ff, $ff, $ff - db $04, $05, $ff, $ff, $ff - -Data_fdf74: ; fdf74 - db 5, 5 - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - db $14, $15, $16, $17, $18 - -Data_fdf8f: ; fdf8f - db 5, 5 - db $19, $1a, $1b, $1c, $1d - db $1e, $1f, $20, $21, $22 - db $23, $24, $25, $26, $27 - db $28, $29, $2a, $2b, $2c - db $2d, $2e, $2f, $30, $31 - -Data_fdfaa: ; fdfaa - db 5, 5 - db $00, $01, $02, $03, $04 - db $05, $06, $07, $08, $09 - db $0a, $0b, $0c, $0d, $0e - db $0f, $10, $11, $12, $13 - db $14, $15, $16, $17, $18 - -Data_fdfc5: ; fdfc5 - db 5, 5 - db $19, $1a, $1b, $1c, $1d - db $1e, $1f, $20, $21, $22 - db $23, $24, $25, $26, $27 - db $28, $29, $2a, $2b, $2c - db $2d, $2e, $2f, $30, $31 - -Data_fdfe0: ; fdfe0 - db 5, 5 - db $32, $33, $34, $35, $36 - db $37, $38, $39, $3a, $3b - db $3c, $3d, $3e, $3f, $40 - db $41, $42, $43, $44, $45 - db $46, $47, $48, $49, $4a - -Data_fdffb: ; fdffb - db 5, 5 - db $4b, $4c, $4d, $4e, $4f - db $50, $51, $52, $53, $54 - db $55, $56, $57, $58, $59 - db $5a, $5b, $5c, $5d, $5e - db $5f, $60, $61, $62, $63 - -Data_fe016: ; fe016 - db 5, 5 - db $64, $65, $66, $67, $68 - db $69, $6a, $6b, $6c, $6d - db $6e, $6f, $70, $71, $72 - db $73, $74, $75, $76, $77 - db $78, $79, $7a, $7b, $7c +INCLUDE "data/pikachu_pic_tilemaps.asm" LoadPikaPicAnimGFXHeader: push hl @@ -936,8 +495,8 @@ LoadPikaPicAnimGFXHeader: pop hl ret -RunPikaPicAnimScript: - call Func_fe066 +RunPikaPicAnimSetupScript: + call .CheckAndAdvanceTimer ret c xor a ld [wPikaPicAnimPointerSetupFinished], a @@ -945,7 +504,7 @@ RunPikaPicAnimScript: call GetPikaPicAnimByte ld e, a ld d, 0 - ld hl, Jumptable_fe071 + ld hl, .Jumptable add hl, de add hl, de ld a, [hli] @@ -957,7 +516,7 @@ RunPikaPicAnimScript: jr z, .loop ret -Func_fe066: +.CheckAndAdvanceTimer: ld a, [wPikaPicAnimDelay] and a ret z @@ -966,7 +525,7 @@ Func_fe066: scf ret -Jumptable_fe071: +.Jumptable: dw PikaPicAnimCommand_nop ; 00, 0 params dw PikaPicAnimCommand_writebyte ; 01, 1 param dw PikaPicAnimCommand_loadgfx ; 02, 1 param @@ -980,7 +539,7 @@ Jumptable_fe071: dw PikaPicAnimCommand_setduration ; 0a, 1 dw param dw PikaPicAnimCommand_cry ; 0b, 1 param dw PikaPicAnimCommand_thunderbolt ; 0c, 0 params - dw PikaPicAnimCommand_waitbgmap ; 0d, 0 params (ret) + dw PikaPicAnimCommand_run ; 0d, 0 params (ret) dw PikaPicAnimCommand_ret ; 0e, 0 params (ret) PikaPicAnimCommand_nop: @@ -991,9 +550,9 @@ PikaPicAnimCommand_ret: ld [wPikaPicAnimTimer], a xor a ld [wPikaPicAnimTimer + 1], a - jr PikaPicAnimCommand_waitbgmap + jr PikaPicAnimCommand_run -Func_fe09b: +; XXX ret PikaPicAnimCommand_setduration: @@ -1003,7 +562,7 @@ PikaPicAnimCommand_setduration: ld [wPikaPicAnimTimer + 1], a ret -PikaPicAnimCommand_waitbgmap: +PikaPicAnimCommand_run: ld a, $ff ld [wPikaPicAnimPointerSetupFinished], a ret @@ -1068,11 +627,11 @@ PikaPicAnimCommand_loadgfx: cp a, $ff jr z, .compressed call RequestPikaPicAnimGFX - jr .asm_fe109 + jr .done .compressed call DecompressRequestPikaPicAnimGFX -.asm_fe109 +.done pop af ld [hTilesetType], a pop af @@ -1144,6 +703,11 @@ GetPikaPicVRAMAddressForNewGFX: ret CheckIfThereIsRoomForPikaPicAnimGFX: +; d: idx +; e: size +; FATAL: If the graphic has already been loaded, or if there are +; already 8 graphics objects loaded, the game will execute arbitrary +; code. push bc push hl ld hl, wPikaPicUsedGFX @@ -1176,9 +740,9 @@ CheckIfThereIsRoomForPikaPicAnimGFX: add e ld [wPikaPicUsedGFXCount], a cp $80 - jr z, .asm_fe1a7 + jr z, .okay jr nc, .failed -.asm_fe1a7 +.okay ld a, [hl] and a jr .pop_ret @@ -1228,12 +792,12 @@ PikaPicAnimCommand_thunderbolt: call DelayFrame ld a, [wAudioROMBank] push af - ld a, BANK(SFX_Battle_2F) + ld a, BANK(SFX_Thunderbolt) ld [wAudioROMBank], a ld [wAudioSavedROMBank], a - call PikaPicAnimLoadThunderboltAudio + call .LoadAudio call PlaySound - call PikaPicAnimThunderboltFlashScreen + call .FlashScreen call WaitForSoundToFinish pop af ld [wAudioROMBank], a @@ -1242,7 +806,7 @@ PikaPicAnimCommand_thunderbolt: ld [wMuteAudioAndPauseMusic], a ret -PikaPicAnimLoadThunderboltAudio: +.LoadAudio: ld hl, MoveSoundTable ld e, THUNDERBOLT ld d, 0 @@ -1263,8 +827,8 @@ PikaPicAnimLoadThunderboltAudio: ld a, b ret -PikaPicAnimThunderboltFlashScreen: - ld hl, Data_fe242 +.FlashScreen: + ld hl, PikaPicAnimThunderboltPals .loop ld a, [hli] cp $ff @@ -1273,11 +837,11 @@ PikaPicAnimThunderboltFlashScreen: ld b, [hl] inc hl push hl - call GetDMGBGPalForPikaThunderbolt + call .UpdatePal pop hl jr .loop -GetDMGBGPalForPikaThunderbolt: +.UpdatePal: ld a, b ld [rBGP], a call UpdateGBCPal_BGP diff --git a/engine/pikachu_status.asm b/engine/pikachu_status.asm index 17330645..c73d3b3f 100755 --- a/engine/pikachu_status.asm +++ b/engine/pikachu_status.asm @@ -1,4 +1,4 @@ -IsStarterPikachuInOurParty:: ; fcdb8 (3f:4db8) +IsStarterPikachuInOurParty:: ld hl, wPartySpecies ld de, wPartyMon1OTID ld bc, wPartyMonOT @@ -64,18 +64,18 @@ IsStarterPikachuInOurParty:: ; fcdb8 (3f:4db8) and a ret -IsThisPartymonStarterPikachu_Box:: ; fce0d (3f:4e0d) +IsThisPartymonStarterPikachu_Box:: ld hl, wBoxMon1 ld bc, wBoxMon2 - wBoxMon1 ld de, wBoxMonOT jr asm_fce21 -IsThisPartymonStarterPikachu_Party:: ; fce18 (3f:4e18) +IsThisPartymonStarterPikachu_Party:: IsThisPartymonStarterPikachu:: ld hl, wPartyMon1 ld bc, wPartyMon2 - wPartyMon1 ld de, wPartyMonOT -asm_fce21: ; fce21 (3f:4e21) +asm_fce21: ld a, [wWhichPokemon] call AddNTimes ld a, [hl] @@ -113,7 +113,7 @@ asm_fce21: ; fce21 (3f:4e21) scf ret -UpdatePikachuMoodAfterBattle:: ; fce5a (3f:4e5a) +UpdatePikachuMoodAfterBattle:: ; because d is always $82 at this function, it serves to ; ensure Pikachu's mood is at least 130 after battle push de @@ -136,7 +136,7 @@ UpdatePikachuMoodAfterBattle:: ; fce5a (3f:4e5a) ld [wPikachuMood], a ret -CheckPikachuFaintedOrStatused:: ; fce73 (3f:4e73) +CheckPikachuFaintedOrStatused:: ; function to test if Pikachu is alive? xor a ld [wWhichPokemon], a @@ -178,7 +178,7 @@ CheckPikachuFaintedOrStatused:: ; fce73 (3f:4e73) and a ret -IsSurfingPikachuInThePlayersParty:: ; fceab (3f:4eab) +IsSurfingPikachuInThePlayersParty:: ld hl, wPartySpecies ld de, wPartyMon1Moves ld bc, wPartyMonOT diff --git a/engine/pokedex_rating.asm b/engine/pokedex_rating.asm index 195c89fb..97bbfc24 100755 --- a/engine/pokedex_rating.asm +++ b/engine/pokedex_rating.asm @@ -1,4 +1,4 @@ -DisplayDexRating: ; 44169 (11:4169) +DisplayDexRating: ld hl, wPokedexSeen ld b, wPokedexSeenEnd - wPokedexSeen call CountSetBits @@ -51,11 +51,11 @@ DisplayDexRating: ; 44169 (11:4169) ld [de], a ret -DexCompletionText: ; 441cc (11:41cc) +DexCompletionText: TX_FAR _DexCompletionText db "@" -DexRatingsTable: ; 441d1 (11:41d1) +DexRatingsTable: db 10 dw DexRatingText_Own0To9 db 20 @@ -89,66 +89,66 @@ DexRatingsTable: ; 441d1 (11:41d1) db 152 dw DexRatingText_Own150To151 -DexRatingText_Own0To9: ; 44201 (11:4201) +DexRatingText_Own0To9: TX_FAR _DexRatingText_Own0To9 db "@" -DexRatingText_Own10To19: ; 44206 (11:4206) +DexRatingText_Own10To19: TX_FAR _DexRatingText_Own10To19 db "@" -DexRatingText_Own20To29: ; 4420b (11:420b) +DexRatingText_Own20To29: TX_FAR _DexRatingText_Own20To29 db "@" -DexRatingText_Own30To39: ; 44210 (11:4210) +DexRatingText_Own30To39: TX_FAR _DexRatingText_Own30To39 db "@" -DexRatingText_Own40To49: ; 44215 (11:4215) +DexRatingText_Own40To49: TX_FAR _DexRatingText_Own40To49 db "@" -DexRatingText_Own50To59: ; 4421a (11:421a) +DexRatingText_Own50To59: TX_FAR _DexRatingText_Own50To59 db "@" -DexRatingText_Own60To69: ; 4421f (11:421f) +DexRatingText_Own60To69: TX_FAR _DexRatingText_Own60To69 db "@" -DexRatingText_Own70To79: ; 44224 (11:4224) +DexRatingText_Own70To79: TX_FAR _DexRatingText_Own70To79 db "@" -DexRatingText_Own80To89: ; 44229 (11:4229) +DexRatingText_Own80To89: TX_FAR _DexRatingText_Own80To89 db "@" -DexRatingText_Own90To99: ; 4422e (11:422e) +DexRatingText_Own90To99: TX_FAR _DexRatingText_Own90To99 db "@" -DexRatingText_Own100To109: ; 44233 (11:4233) +DexRatingText_Own100To109: TX_FAR _DexRatingText_Own100To109 db "@" -DexRatingText_Own110To119: ; 44238 (11:4238) +DexRatingText_Own110To119: TX_FAR _DexRatingText_Own110To119 db "@" -DexRatingText_Own120To129: ; 4423d (11:423d) +DexRatingText_Own120To129: TX_FAR _DexRatingText_Own120To129 db "@" -DexRatingText_Own130To139: ; 44242 (11:4242) +DexRatingText_Own130To139: TX_FAR _DexRatingText_Own130To139 db "@" -DexRatingText_Own140To149: ; 44247 (11:4247) +DexRatingText_Own140To149: TX_FAR _DexRatingText_Own140To149 db "@" -DexRatingText_Own150To151: ; 4424c (11:424c) +DexRatingText_Own150To151: TX_FAR _DexRatingText_Own150To151 db "@" diff --git a/engine/predefs.asm b/engine/predefs.asm index 9a97fe95..e752a7ef 100755 --- a/engine/predefs.asm +++ b/engine/predefs.asm @@ -1,4 +1,4 @@ -GetPredefPointer: ; f67ed (3d:67ed) +GetPredefPointer: ; Store the contents of the register ; pairs (hl, de, bc) at wPredefRegisters. ; Then put the bank and address of predef @@ -49,7 +49,7 @@ GetPredefPointer: ; f67ed (3d:67ed) ret -PredefPointers:: ; f681d (3d:681d) +PredefPointers:: ; these are pointers to ASM routines. ; they appear to be used in overworld map scripts. const_def @@ -61,7 +61,7 @@ PredefPointers:: ; f681d (3d:681d) add_predef CopyDownscaledMonTiles add_predef Func_f0a7 add_predef HealParty - add_predef MoveAnimation ; 08 play move animation (1e:4d97) + add_predef MoveAnimation add_predef DivideBCDPredef add_predef DivideBCDPredef2 add_predef AddBCDPredef @@ -116,7 +116,7 @@ PredefPointers:: ; f681d (3d:681d) add_predef InternalClockTradeAnim add_predef TrainerEngage add_predef IndexToPokedex - add_predef DisplayPicCenteredOrUpperRight ; 3B display pic? (01:600d) + add_predef DisplayPicCenteredOrUpperRight add_predef UsedCut add_predef ShowPokedexData add_predef WriteMonMoves @@ -127,21 +127,21 @@ PredefPointers:: ; f681d (3d:681d) add_predef CanLearnTM add_predef TMToMove add_predef _RunPaletteCommand - add_predef StarterDex ; 46 (17:40d4) + add_predef StarterDex add_predef _AddPartyMon add_predef UpdateHPBar2 add_predef DrawEnemyHUDAndHPBar add_predef LoadTownMap_Nest add_predef PrintMonType - add_predef EmotionBubble ; 4C player exclamation (10:516f) - add_predef EmptyFunc3 ; return immediately (01:5b63) + add_predef EmotionBubble + add_predef EmptyFunc3 ; return immediately add_predef AskName add_predef PewterGuys add_predef SaveSAVtoSRAM2 add_predef LoadSAV2 add_predef LoadSAV add_predef SaveSAVtoSRAM1 - add_predef DoInGameTradeDialogue ; 54 initiate trade (1c:5b86) + add_predef DoInGameTradeDialogue add_predef HallOfFamePC add_predef DisplayDexRating @@ -149,14 +149,13 @@ PredefPointers:: ; f681d (3d:681d) predef_const EnterMapAnim dbw $1E, _LeaveMapAnim ; wrong bank dbw $1E, EnterMapAnim ; wrong bank - add_predef GetTileTwoStepsInFrontOfPlayer add_predef CheckForCollisionWhenPushingBoulder add_predef PrintStrengthTxt add_predef PickUpItem add_predef PrintMoveType add_predef LoadMovePPs - add_predef DrawHP ; 5F (04:5468) + add_predef DrawHP add_predef DrawHP2 add_predef DisplayElevatorFloorMenu add_predef OaksAideScript diff --git a/engine/predefs17.asm b/engine/predefs17.asm index a674b45a..21289c6a 100755 --- a/engine/predefs17.asm +++ b/engine/predefs17.asm @@ -1,6 +1,6 @@ ; this function temporarily makes the starters (and Ivysaur) seen ; so that the full Pokedex information gets displayed in Oak's lab -StarterDex: ; 5c0dc (17:40dc) +StarterDex: ld a, %01001011 ; set starter flags ld [wPokedexOwned], a predef ShowPokedexData diff --git a/engine/predefs17_2.asm b/engine/predefs17_2.asm index 49818543..e9235f13 100755 --- a/engine/predefs17_2.asm +++ b/engine/predefs17_2.asm @@ -1,5 +1,5 @@ ; updates the types of a party mon (pointed to in hl) to the ones of the mon specified in wd11e -SetPartyMonTypes: ; 5db93 (17:5b93) +SetPartyMonTypes: call GetPredefRegisters ld bc, wPartyMon1Type - wPartyMon1 ; $5 add hl, bc diff --git a/engine/predefs7.asm b/engine/predefs7.asm index 1bf4c018..bfa0ab57 100755 --- a/engine/predefs7.asm +++ b/engine/predefs7.asm @@ -1,4 +1,4 @@ -DisplayElevatorFloorMenu: ; 1c264 (7:4264) +DisplayElevatorFloorMenu: ld hl, wd730 ld a, [hl] push af @@ -49,6 +49,6 @@ DisplayElevatorFloorMenu: ; 1c264 (7:4264) ld [hli], a ; destination map ID ret -WhichFloorText: ; 1c2bd (7:42bd) +WhichFloorText: TX_FAR _WhichFloorText db "@" diff --git a/engine/predefsA.asm b/engine/predefsA.asm index 1cfb60f6..b8384150 100644 --- a/engine/predefsA.asm +++ b/engine/predefsA.asm @@ -1,5 +1,5 @@ ; inverts the BGP for 4 (6 on CGB due to lag) frames -InvertBGPal_4Frames: ; 2bd4c (a:7d4c) +InvertBGPal_4Frames: call GetPredefRegisters ; leftover of red/blue, has no use here ld a, [rBGP] xor $ff @@ -13,7 +13,7 @@ InvertBGPal_4Frames: ; 2bd4c (a:7d4c) call UpdateGBCPal_BGP ret -PredefShakeScreenVertically: ; 2bd67 (a:7d67) +PredefShakeScreenVertically: ; Moves the window down and then back in a sequence of progressively smaller ; numbers of pixels, starting at b. call GetPredefRegisters @@ -39,7 +39,7 @@ PredefShakeScreenVertically: ; 2bd67 (a:7d67) ld c, 3 jp DelayFrames -PredefShakeScreenHorizontally: ; 2bd8d (a:7d8d) +PredefShakeScreenHorizontally: ; Moves the window right and then back in a sequence of progressively smaller ; numbers of pixels, starting at b. call GetPredefRegisters diff --git a/engine/print_waiting_text.asm b/engine/print_waiting_text.asm index f4220748..bd2180a1 100644 --- a/engine/print_waiting_text.asm +++ b/engine/print_waiting_text.asm @@ -1,4 +1,4 @@ -PrintWaitingText: ; 4b89 (1:4b89) +PrintWaitingText: coord hl, 3, 10 lb bc, 1, 11 ld a, [wIsInBattle] @@ -15,5 +15,5 @@ PrintWaitingText: ; 4b89 (1:4b89) ld c, 50 jp DelayFrames -WaitingText: ; 4bab (1:4bab) - db "Waiting...!@"
\ No newline at end of file +WaitingText: + db "Waiting...!@" diff --git a/engine/printer.asm b/engine/printer.asm index d4cc8192..46eb2c59 100644 --- a/engine/printer.asm +++ b/engine/printer.asm @@ -11,7 +11,7 @@ INCLUDE "engine/printer/serial.asm" -PrintPokedexEntry: ; e8b74 (3a:4b74) +PrintPokedexEntry: ld a, [wUpdateSpritesEnabled] push af xor a @@ -238,7 +238,7 @@ Func_e8d11: scf ret -PrintPCBox:: ; e8d35 (3a:4e79) +PrintPCBox:: ld a, [wBoxDataStart] and a jp z, Func_e8df4 @@ -359,7 +359,7 @@ PrintFanClubPortrait: ; e8e24 xor a ld [hCanceledPrinting], a call Printer_PlayPrinterMusic - call Func_ea3ea + call Printer_GetMonStats ld a, [rIE] push af xor a @@ -397,7 +397,7 @@ PrintFanClubPortrait: ; e8e24 call Printer_PlayMapMusic ret -Func_e8e79: ; e8e79 (3a:4e79) +PrinterDebug: push af push bc push de @@ -415,13 +415,13 @@ Func_e8e79: ; e8e79 (3a:4e79) ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a call Printer_CopyTileMapToPrinterTileBuffer - call Func_ea573 + call PrinterDebug_LoadGFX .loop ld a, [wPrinterSendState] bit 7, a jr nz, .quit - call Func_ea5d1 - call Func_ea5b7 + call PrinterDebug_DoFunction + call PrinterDebug_ConvertStatusFlagsToTiles call DelayFrame jr .loop @@ -443,7 +443,7 @@ Func_e8e79: ; e8e79 (3a:4e79) pop af ret -Printer_CheckPressingB: ; e8eca (3a:4eca) +Printer_CheckPressingB: ld a, [hJoyHeld] and B_BUTTON jr nz, .quit @@ -476,21 +476,21 @@ Printer_CheckPressingB: ; e8eca (3a:4eca) scf ret -Printer_CopyTileMapToPrinterTileBuffer: ; e8efc (3a:4efc) +Printer_CopyTileMapToPrinterTileBuffer: coord hl, 0, 0 coord de, 0, 0, wPrinterTileBuffer ld bc, SCREEN_HEIGHT * SCREEN_WIDTH call CopyData ret -Printer_CopyTileMapFromPrinterTileBuffer: ; e8f09 (3a:4f09) +Printer_CopyTileMapFromPrinterTileBuffer: coord hl, 0, 0, wPrinterTileBuffer coord de, 0, 0 ld bc, SCREEN_HEIGHT * SCREEN_WIDTH call CopyData ret -Printer_ResetJoypadHRAM: ; e8f16 (3a:4f16) +Printer_ResetJoypadHRAM: xor a ld [hJoyLast], a ld [hJoyReleased], a @@ -500,7 +500,7 @@ Printer_ResetJoypadHRAM: ; e8f16 (3a:4f16) ld [hJoy6], a ret -Printer_PlayPrinterMusic: ; e8f24 (3a:4f24) +Printer_PlayPrinterMusic: call Printer_FadeOutMusicAndWait ld a, [wAudioROMBank] ld [wAudioSavedROMBank], a @@ -511,12 +511,12 @@ Printer_PlayPrinterMusic: ; e8f24 (3a:4f24) call PlaySound ret -Printer_PlayMapMusic: ; e8f3b (3a:4f3b) +Printer_PlayMapMusic: call Printer_FadeOutMusicAndWait call PlayDefaultMusic ret -Printer_FadeOutMusicAndWait: ; e8f42 (3a:4f42) +Printer_FadeOutMusicAndWait: ld a, $4 ld [wAudioFadeOutControl], a call StopAllMusic @@ -526,7 +526,7 @@ Printer_FadeOutMusicAndWait: ; e8f42 (3a:4f42) jr nz, .wait_music_stop ret -GBPrinter_CheckForErrors: ; e8f51 (3a:4f51) +GBPrinter_CheckForErrors: ld a, [wPrinterHandshake] cp $81 jr z, .check_other_errors diff --git a/engine/printer/serial.asm b/engine/printer/serial.asm index 54d31a15..b5d71596 100755 --- a/engine/printer/serial.asm +++ b/engine/printer/serial.asm @@ -1,4 +1,4 @@ -StartTransmission_Send9Rows: ; e8783 (3a:4783) +StartTransmission_Send9Rows: ld a, 9 Printer_StartTransmission: push af @@ -19,7 +19,7 @@ Printer_StartTransmission: ret ; e87a8 -PrinterTransmissionJumptable: ; e87a8 (3a:47a8) +PrinterTransmissionJumptable: ld a, [wPrinterSendState] ld e, a ld d, 0 @@ -105,9 +105,9 @@ Printer_StartTransmittingTilemap: ld hl, PrinterDataPacket3 call CopyPrinterDataHeader call Printer_Convert2RowsTo2bpp - ld a, (wPrinterSendDataSourceEnd - wPrinterSendDataSource) % $100 + ld a, (wPrinterSendDataSource1End - wPrinterSendDataSource1) % $100 ld [wPrinterDataSize], a - ld a, (wPrinterSendDataSourceEnd - wPrinterSendDataSource) / $100 + ld a, (wPrinterSendDataSource1End - wPrinterSendDataSource1) / $100 ld [wPrinterDataSize + 1], a call ComputePrinterChecksum call Printer_Next @@ -305,8 +305,8 @@ ResetPrinterData: xor a ld [wPrinterDataSize], a ld [wPrinterDataSize + 1], a - ld hl, wPrinterSendDataSource - ld bc, wPrinterSendDataSourceEnd - wPrinterSendDataSource + ld hl, wPrinterSendDataSource1 + ld bc, wPrinterSendDataSource1End - wPrinterSendDataSource1 call Printer_FillMemory ret @@ -319,7 +319,7 @@ ComputePrinterChecksum: ld c, a ld a, [wPrinterDataSize + 1] ld b, a - ld de, wPrinterSendDataSource + ld de, wPrinterSendDataSource1 call .AddToChecksum ld a, l ld [wPrinterChecksum], a @@ -344,13 +344,13 @@ ComputePrinterChecksum: Printer_StageHeaderForSend: ld a, $1 - ld [wPrinterSendDataSource], a + ld [wPrinterSendDataSource1], a ld a, [wcae2] - ld [wPrinterSendDataSource + 1], a + ld [wPrinterSendDataSource1 + 1], a ld a, %11100100 - ld [wPrinterSendDataSource + 2], a + ld [wPrinterSendDataSource1 + 2], a ld a, [wPrinterSettingsTempCopy] - ld [wPrinterSendDataSource + 3], a + ld [wPrinterSendDataSource1 + 3], a ret Printer_Convert2RowsTo2bpp: @@ -370,7 +370,7 @@ Printer_Convert2RowsTo2bpp: .got_row ld e, l ld d, h - ld hl, wPrinterSendDataSource + ld hl, wPrinterSendDataSource1 ld c, 2 * SCREEN_WIDTH .loop ld a, [de] @@ -406,7 +406,7 @@ Printer_Convert2RowsTo2bpp: jr nz, .loop ret -Printer_FillMemory: ; e8a2e (3a:4a2e) +Printer_FillMemory: push de ld e, a .loop @@ -439,7 +439,7 @@ PrinterDataPacket6: ; unused db 15, 0, $00, 0 dw 15 -PrinterSerial_: ; e8a5e (3a:4a5e) +PrinterSerial_: ld a, [wPrinterOpcode] ld e, a ld d, 0 @@ -542,7 +542,7 @@ PrinterSerial_: ; e8a5e (3a:4a5e) ld e, a ld a, [wPrinterSendByteOffset + 1] ld d, a - ld hl, wPrinterSendDataSource + ld hl, wPrinterSendDataSource1 add hl, de inc de ld a, e diff --git a/engine/random.asm b/engine/random.asm index ddf042df..2fc83f6f 100755 --- a/engine/random.asm +++ b/engine/random.asm @@ -1,4 +1,4 @@ -Random_:: ; f67dc (3d:67dc) +Random_:: ; Generate a random 16-bit value. ld a, [rDIV] ld b, a diff --git a/engine/remove_pokemon.asm b/engine/remove_pokemon.asm index a04f060c..f29a428d 100644 --- a/engine/remove_pokemon.asm +++ b/engine/remove_pokemon.asm @@ -1,4 +1,4 @@ -_RemovePokemon: ; 7a0f (1:7a0f) +_RemovePokemon: ld hl, wPartyCount ld a, [wRemoveMonFromBox] and a @@ -92,4 +92,4 @@ _RemovePokemon: ; 7a0f (1:7a0f) jr z, .copyUntilPartyMonNicksEnd ld bc, wBoxMonNicksEnd .copyUntilPartyMonNicksEnd - jp CopyDataUntil
\ No newline at end of file + jp CopyDataUntil diff --git a/engine/save.asm b/engine/save.asm index b684c1be..bb2193a2 100755 --- a/engine/save.asm +++ b/engine/save.asm @@ -1,4 +1,4 @@ -LoadSAV: ; 73959 (1c:7959) +LoadSAV: ;(if carry -> write ;"the file data is destroyed") call ClearScreen @@ -27,11 +27,11 @@ LoadSAV: ; 73959 (1c:7959) ld [wSaveFileStatus], a ret -FileDataDestroyedText: ; 7398f (1c:798f) +FileDataDestroyedText: TX_FAR _FileDataDestroyedText db "@" -LoadSAV0: ; 73994 (1c:7994) +LoadSAV0: call EnableSRAMAndLatchClockData ld a, $1 ld [MBC1SRamBank], a @@ -76,7 +76,7 @@ LoadSAV0: ; 73994 (1c:7994) and a jp SAVGoodChecksum -LoadSAV1: ; 739fc (1c:79fc) +LoadSAV1: call EnableSRAMAndLatchClockData ld a, $1 ld [MBC1SRamBank], a @@ -94,7 +94,7 @@ LoadSAV1: ; 739fc (1c:79fc) and a jp SAVGoodChecksum -LoadSAV2: ; 73a24 (1c:7a24) +LoadSAV2: call EnableSRAMAndLatchClockData ld a, $1 ld [MBC1SRamBank], a @@ -116,20 +116,20 @@ LoadSAV2: ; 73a24 (1c:7a24) and a jp SAVGoodChecksum -SAVBadCheckSum: ; 73a59 (1c:7a59) +SAVBadCheckSum: scf -SAVGoodChecksum: ; 736f8 (1c:76f8) +SAVGoodChecksum: call DisableSRAMAndPrepareClockData ret -LoadSAVIgnoreBadCheckSum: ; 73a5e (1c:7a5e) +LoadSAVIgnoreBadCheckSum: ; unused function that loads save data and ignores bad checksums call LoadSAV0 call LoadSAV1 jp LoadSAV2 -SaveSAV: ; 73a67 (1c:7a67) +SaveSAV: callba PrintSaveScreenText ld c,10 call DelayFrames @@ -165,7 +165,7 @@ SaveSAV: ; 73a67 (1c:7a67) call DelayFrames ret -SaveSAVConfirm: ; 73abc (1c:7abc) +SaveSAVConfirm: call PrintText coord hl, 0, 7 lb bc, 8, 1 @@ -175,23 +175,23 @@ SaveSAVConfirm: ; 73abc (1c:7abc) ld a,[wCurrentMenuItem] ret -WouldYouLikeToSaveText: ; 73ad1 (1c:7ad1) +WouldYouLikeToSaveText: TX_FAR _WouldYouLikeToSaveText db "@" -SavingText: ; 73ad6 (1c:7ad6) +SavingText: TX_FAR _SavingText db "@" -GameSavedText: ; 73adb (1c:7adb) +GameSavedText: TX_FAR _GameSavedText db "@" -OlderFileWillBeErasedText: ; 73ae0 (1c:7ae0) +OlderFileWillBeErasedText: TX_FAR _OlderFileWillBeErasedText db "@" -SaveSAVtoSRAM0: ; 73ae5 (1c:7ae5) +SaveSAVtoSRAM0: call EnableSRAMAndLatchClockData ld a, $1 ld [MBC1SRamBank], a @@ -220,7 +220,7 @@ SaveSAVtoSRAM0: ; 73ae5 (1c:7ae5) call DisableSRAMAndPrepareClockData ret -SaveSAVtoSRAM1: ; 73b32 (1c:7b32) +SaveSAVtoSRAM1: ; stored pokémon call EnableSRAMAndLatchClockData ld a, $1 @@ -236,7 +236,7 @@ SaveSAVtoSRAM1: ; 73b32 (1c:7b32) call DisableSRAMAndPrepareClockData ret -SaveSAVtoSRAM2: ; 73b56 (1c:7b56) +SaveSAVtoSRAM2: call EnableSRAMAndLatchClockData ld a, $1 ld [MBC1SRamBank], a @@ -261,15 +261,15 @@ SaveSAVtoSRAM2: ; 73b56 (1c:7b56) ld [sMainDataCheckSum], a call DisableSRAMAndPrepareClockData ret -;;; -SaveSAVtoSRAM: ; 73b91 (1c:7b91) + +SaveSAVtoSRAM: ld a, $2 ld [wSaveFileStatus], a call SaveSAVtoSRAM0 call SaveSAVtoSRAM1 jp SaveSAVtoSRAM2 -SAVCheckSum: ; 73b9f (1c:7b9f) +SAVCheckSum: ;Check Sum (result[1 byte] is complemented) ld d, 0 .loop @@ -284,7 +284,7 @@ SAVCheckSum: ; 73b9f (1c:7b9f) cpl ret -CalcIndividualBoxCheckSums: ; 73bac (1c:7bac) +CalcIndividualBoxCheckSums: ld hl, sBox1 ; sBox7 ld de, sBank2IndividualBoxChecksums ; sBank3IndividualBoxChecksums ld b, NUM_BOXES / 2 @@ -301,7 +301,7 @@ CalcIndividualBoxCheckSums: ; 73bac (1c:7bac) jr nz, .loop ret -GetBoxSRAMLocation: ; 73bc4 (1c:7bc4) +GetBoxSRAMLocation: ; in: a = box num ; out: b = box SRAM bank, hl = pointer to start of box ld hl, BoxSRAMPointerTable @@ -322,7 +322,7 @@ GetBoxSRAMLocation: ; 73bc4 (1c:7bc4) ld l, a ret -BoxSRAMPointerTable: ; 73bde (1c:7bde) +BoxSRAMPointerTable: dw sBox1 ; sBox7 dw sBox2 ; sBox8 dw sBox3 ; sBox9 @@ -330,7 +330,7 @@ BoxSRAMPointerTable: ; 73bde (1c:7bde) dw sBox5 ; sBox11 dw sBox6 ; sBox12 -ChangeBox:: ; 73bed (1c:7bed) +ChangeBox:: ld hl, WhenYouChangeBoxText call PrintText call YesNoChoice @@ -376,11 +376,11 @@ ChangeBox:: ; 73bed (1c:7bed) call SetMapTextPointer ret -WhenYouChangeBoxText: ; 73c52 (1c:7c52) +WhenYouChangeBoxText: TX_FAR _WhenYouChangeBoxText db "@" -CopyBoxToOrFromSRAM: ; 73c57 (1c:7c57) +CopyBoxToOrFromSRAM: ; copy an entire box from hl to de with b as the SRAM bank push hl call EnableSRAMAndLatchClockData @@ -404,7 +404,7 @@ CopyBoxToOrFromSRAM: ; 73c57 (1c:7c57) call DisableSRAMAndPrepareClockData ret -DisplayChangeBoxMenu: ; 73c7d (1c:7c7d) +DisplayChangeBoxMenu: xor a ld [H_AUTOBGTRANSFERENABLED], a ld a, A_BUTTON | B_BUTTON @@ -473,11 +473,11 @@ DisplayChangeBoxMenu: ; 73c7d (1c:7c7d) ld [H_AUTOBGTRANSFERENABLED], a ret -ChooseABoxText: ; 73d10 (1c:7d10) +ChooseABoxText: TX_FAR _ChooseABoxText db "@" -BoxNames: ; 73d15 (1c:7d15) +BoxNames: db "BOX 1" next "BOX 2" next "BOX 3" @@ -491,10 +491,10 @@ BoxNames: ; 73d15 (1c:7d15) next "BOX11" next "BOX12@" -BoxNoText: ; 73d5d (1c:7d5d) +BoxNoText: db "BOX No.@" -EmptyAllSRAMBoxes: ; 73d65 (1c:7d65) +EmptyAllSRAMBoxes: ; marks all boxes in SRAM as empty (initialisation for the first time the ; player changes the box) call EnableSRAMAndLatchClockData @@ -507,7 +507,7 @@ EmptyAllSRAMBoxes: ; 73d65 (1c:7d65) call DisableSRAMAndPrepareClockData ret -EmptySRAMBoxesInBank: ; 73d7c (1c:7d7c) +EmptySRAMBoxesInBank: ; marks every box in the current SRAM bank as empty ld hl, sBox1 ; sBox7 call EmptySRAMBox @@ -528,14 +528,14 @@ EmptySRAMBoxesInBank: ; 73d7c (1c:7d7c) call CalcIndividualBoxCheckSums ret -EmptySRAMBox: ; 73db0 (1c:7db0) +EmptySRAMBox: xor a ld [hli], a dec a ld [hl], a ret -GetMonCountsForAllBoxes: ; 73a84 (1c:7a84) +GetMonCountsForAllBoxes: ld hl, wBoxMonCounts push hl call EnableSRAMAndLatchClockData @@ -559,7 +559,7 @@ GetMonCountsForAllBoxes: ; 73a84 (1c:7a84) ret -GetMonCountsForBoxesInBank: ; 73dde (1c:7dde) +GetMonCountsForBoxesInBank: ld a, [sBox1] ; sBox7 ld [hli], a ld a, [sBox2] ; sBox8 @@ -574,7 +574,7 @@ GetMonCountsForBoxesInBank: ; 73dde (1c:7dde) ld [hli], a ret -SAVCheckRandomID: ; 73df7 (1c:7df7) +SAVCheckRandomID: ;checks if Sav file is the same by checking player's name 1st letter ($a598) ; and the two random numbers generated at game beginning ;(which are stored at wPlayerID)s @@ -606,7 +606,7 @@ SAVCheckRandomID: ; 73df7 (1c:7df7) ld [MBC1SRamEnable],a ret -SaveHallOfFameTeams: ; 73e2e (1c:7e2e) +SaveHallOfFameTeams: ld a, [wNumHoFTeams] dec a cp HOF_TEAM_CAPACITY @@ -632,7 +632,7 @@ SaveHallOfFameTeams: ; 73e2e (1c:7e2e) ld bc, HOF_TEAM jr HallOfFame_Copy -LoadHallOfFameTeams: ; 73e60 (1c:7e60) +LoadHallOfFameTeams: ld hl, sHallOfFame ld bc, HOF_TEAM ld a, [wHoFTeamIndex] @@ -641,7 +641,7 @@ LoadHallOfFameTeams: ; 73e60 (1c:7e60) ld bc, HOF_TEAM ; fallthrough -HallOfFame_Copy: ; 73e72 (1c:7e72) +HallOfFame_Copy: call EnableSRAMAndLatchClockData xor a ld [MBC1SRamBank], a @@ -649,7 +649,7 @@ HallOfFame_Copy: ; 73e72 (1c:7e72) call DisableSRAMAndPrepareClockData ret -ClearSAV: ; 73e80 (1c:7e80) +ClearSAV: call EnableSRAMAndLatchClockData ld a, $4 .loop @@ -661,22 +661,22 @@ ClearSAV: ; 73e80 (1c:7e80) call DisableSRAMAndPrepareClockData ret -PadSRAM_FF: ; 73e91 (1c:7e91) +PadSRAM_FF: ld [MBC1SRamBank], a ld hl, $a000 ld bc, $2000 ld a, $ff jp FillMemory -EnableSRAMAndLatchClockData: ; 73e9f (1c:7e9f) +EnableSRAMAndLatchClockData: ld a, $1 ld [MBC1SRamBankingMode], a ld a, SRAM_ENABLE ld [MBC1SRamEnable], a ret -DisableSRAMAndPrepareClockData: ; 73eaa (1c:7eaa) +DisableSRAMAndPrepareClockData: ld a, SRAM_DISABLE ld [MBC1SRamBankingMode], a ld [MBC1SRamEnable], a - ret
\ No newline at end of file + ret diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm index 35f3a133..769a3f37 100755 --- a/engine/slot_machine.asm +++ b/engine/slot_machine.asm @@ -1,4 +1,4 @@ -PromptUserToPlaySlots: ; 37530 (d:7530) +PromptUserToPlaySlots: call SaveScreenTilesToBuffer2 ld a, BANK(DisplayTextIDInit) ld [wAutoTextBoxDrawingControl], a @@ -54,11 +54,11 @@ PromptUserToPlaySlots: ; 37530 (d:7530) push af jp CloseTextDisplay -PlaySlotMachineText: ; 375b8 (d:75b8) +PlaySlotMachineText: TX_FAR _PlaySlotMachineText db "@" -MainSlotMachineLoop: ; 375bd (d:75bd) +MainSlotMachineLoop: call SlotMachine_PrintCreditCoins xor a ld hl, wPayoutCoins @@ -147,32 +147,32 @@ MainSlotMachineLoop: ; 375bd (d:75bd) call SlotMachine_PutOutLitBalls jp MainSlotMachineLoop -CoinMultiplierSlotMachineText: ; 37685 (d:7685) +CoinMultiplierSlotMachineText: db "×3" next "×2" next "×1@" -OutOfCoinsSlotMachineText: ; 3768e (d:768e) +OutOfCoinsSlotMachineText: TX_FAR _OutOfCoinsSlotMachineText db "@" -BetHowManySlotMachineText: ; 37693 (d:7693) +BetHowManySlotMachineText: TX_FAR _BetHowManySlotMachineText db "@" -StartSlotMachineText: ; 37698 (d:7698) +StartSlotMachineText: TX_FAR _StartSlotMachineText db "@" -NotEnoughCoinsSlotMachineText: ; 3769d (d:769d) +NotEnoughCoinsSlotMachineText: TX_FAR _NotEnoughCoinsSlotMachineText db "@" -OneMoreGoSlotMachineText: ; 376a2 (d:76a2) +OneMoreGoSlotMachineText: TX_FAR _OneMoreGoSlotMachineText db "@" -SlotMachine_SetFlags: ; 376a7 (d:76a7) +SlotMachine_SetFlags: ld hl, wSlotMachineFlags bit 7, [hl] ret nz @@ -202,7 +202,7 @@ SlotMachine_SetFlags: ; 376a7 (d:76a7) set 7, [hl] ret -SlotMachine_SpinWheels: ; 376d4 (d:76d4) +SlotMachine_SpinWheels: ld c, 20 .loop1 push bc @@ -234,7 +234,7 @@ SlotMachine_SpinWheels: ; 376d4 (d:76d4) ; visible. The 3 functions below ensure this by checking if the wheel offset ; is even before stopping the wheel. -SlotMachine_StopOrAnimWheel1: ; 37706 (d:7706) +SlotMachine_StopOrAnimWheel1: ld a, [wStoppingWhichSlotMachineWheel] cp 1 jr c, .animWheel @@ -252,7 +252,7 @@ SlotMachine_StopOrAnimWheel1: ; 37706 (d:7706) .animWheel jp SlotMachine_AnimWheel1 -SlotMachine_StopOrAnimWheel2: ; 37722 (d:7722) +SlotMachine_StopOrAnimWheel2: ld a, [wStoppingWhichSlotMachineWheel] cp 2 jr c, .animWheel @@ -270,7 +270,7 @@ SlotMachine_StopOrAnimWheel2: ; 37722 (d:7722) .animWheel jp SlotMachine_AnimWheel2 -SlotMachine_StopOrAnimWheel3: ; 3773e (d:773e) +SlotMachine_StopOrAnimWheel3: ld a, [wStoppingWhichSlotMachineWheel] cp 3 jr c, .animWheel @@ -286,7 +286,7 @@ SlotMachine_StopOrAnimWheel3: ; 3773e (d:773e) and a ret -SlotMachine_StopWheel1Early: ; 37753 (d:7753) +SlotMachine_StopWheel1Early: call SlotMachine_GetWheel1Tiles ld hl, wSlotMachineWheel1BottomTile ld a, [wSlotMachineFlags] @@ -315,7 +315,7 @@ SlotMachine_StopWheel1Early: ; 37753 (d:7753) ld [hl], 0 ret -SlotMachine_StopWheel2Early: ; 37779 (d:7779) +SlotMachine_StopWheel2Early: call SlotMachine_GetWheel2Tiles ld a, [wSlotMachineFlags] and $80 @@ -338,7 +338,7 @@ SlotMachine_StopWheel2Early: ; 37779 (d:7779) ld [wSlotMachineWheel2SlipCounter], a ret -SlotMachine_FindWheel1Wheel2Matches: ; 37795 (d:7795) +SlotMachine_FindWheel1Wheel2Matches: ; return whether wheel 1 and wheel 2's current positions allow a match (given ; that wheel 3 stops in a good position) in Z ld hl, wSlotMachineWheel1BottomTile @@ -364,7 +364,7 @@ SlotMachine_FindWheel1Wheel2Matches: ; 37795 (d:7795) dec de ret -SlotMachine_CheckForMatches: ; 377af (d:77af) +SlotMachine_CheckForMatches: call SlotMachine_GetWheel3Tiles ld a, [wSlotMachineBet] cp 2 @@ -478,7 +478,7 @@ SlotMachine_CheckForMatches: ; 377af (d:77af) call UpdateGBCPal_OBP0 jp .done -SymbolLinedUpSlotMachineText: ; 37892 (d:7892) +SymbolLinedUpSlotMachineText: TX_ASM push bc call SlotMachine_PrintWinningSymbol @@ -490,11 +490,11 @@ SymbolLinedUpSlotMachineText: ; 37892 (d:7892) inc bc ret -LinedUpText: ; 378a0 (d:78a0) +LinedUpText: TX_FAR _LinedUpText db "@" -SlotRewardPointers: ; 378a5 (d:78a5) +SlotRewardPointers: dw SlotReward300Func dw SlotReward300Text dw SlotReward100Func @@ -508,24 +508,24 @@ SlotRewardPointers: ; 378a5 (d:78a5) dw SlotReward15Func dw SlotReward15Text -SlotReward300Text: ; 378bd (d:78bd) +SlotReward300Text: db "300@" -SlotReward100Text: ; 378c1 (d:78c1) +SlotReward100Text: db "100@" -SlotReward8Text: ; 378c5 (d:78c5) +SlotReward8Text: db "8@" -SlotReward15Text: ; 378c7 (d:78c7) +SlotReward15Text: db "15@" -NotThisTimeText: ; 378ca (d:78ca) +NotThisTimeText: TX_FAR _NotThisTimeText db "@" ; compares the slot machine tiles at bc, de, and hl -SlotMachine_CheckForMatch: ; 378cf (d:78cf) +SlotMachine_CheckForMatch: ld a, [de] cp [hl] ret nz @@ -533,24 +533,24 @@ SlotMachine_CheckForMatch: ; 378cf (d:78cf) cp [hl] ret -SlotMachine_GetWheel3Tiles: ; 378d5 (d:78d5) +SlotMachine_GetWheel3Tiles: ld de, wSlotMachineWheel3BottomTile ld hl, SlotMachineWheel3 ld a, [wSlotMachineWheel3Offset] call SlotMachine_GetWheelTiles -SlotMachine_GetWheel2Tiles: ; 378e1 (d:78e1) +SlotMachine_GetWheel2Tiles: ld de, wSlotMachineWheel2BottomTile ld hl, SlotMachineWheel2 ld a, [wSlotMachineWheel2Offset] call SlotMachine_GetWheelTiles -SlotMachine_GetWheel1Tiles: ; 378ed (d:78ed) +SlotMachine_GetWheel1Tiles: ld de, wSlotMachineWheel1BottomTile ld hl, SlotMachineWheel1 ld a, [wSlotMachineWheel1Offset] -SlotMachine_GetWheelTiles: ; 378f6 (d:78f6) +SlotMachine_GetWheelTiles: ld c, a ld b, 0 add hl, bc @@ -564,7 +564,7 @@ SlotMachine_GetWheelTiles: ; 378f6 (d:78f6) jr nz, .loop ret -SlotReward8Func: ; 37904 (d:7904) +SlotReward8Func: ld hl, wSlotMachineAllowMatchesCounter ld a, [hl] and a @@ -575,7 +575,7 @@ SlotReward8Func: ; 37904 (d:7904) ld de, 8 ret -SlotReward15Func: ; 37912 (d:7912) +SlotReward15Func: ld hl, wSlotMachineAllowMatchesCounter ld a, [hl] and a @@ -586,7 +586,7 @@ SlotReward15Func: ; 37912 (d:7912) ld de, 15 ret -SlotReward100Func: ; 37920 (d:7920) +SlotReward100Func: ld a, SFX_GET_KEY_ITEM call PlaySound xor a @@ -595,7 +595,7 @@ SlotReward100Func: ; 37920 (d:7920) ld de, 100 ret -SlotReward300Func: ; 3792f (d:792f) +SlotReward300Func: ld hl, YeahText call PrintText ld a, SFX_GET_ITEM_2 @@ -611,11 +611,11 @@ SlotReward300Func: ; 3792f (d:792f) ld de, 300 ret -YeahText: ; 3794f (d:794f) +YeahText: TX_FAR _YeahText db $0a, "@" -SlotMachine_PrintWinningSymbol: ; 37955 (d:7955) +SlotMachine_PrintWinningSymbol: ; prints winning symbol and down arrow in text box coord hl, 2, 14 ld a, [wSlotMachineWinningSymbol] @@ -633,7 +633,7 @@ SlotMachine_PrintWinningSymbol: ; 37955 (d:7955) ld [hl], $ee ; down arrow ret -SlotMachine_SubtractBetFromPlayerCoins: ; 3796e (d:796e) +SlotMachine_SubtractBetFromPlayerCoins: ld hl, wTempCoins2 + 1 ld a, [wSlotMachineBet] ld [hld], a @@ -643,19 +643,19 @@ SlotMachine_SubtractBetFromPlayerCoins: ; 3796e (d:796e) ld c, $2 predef SubBCDPredef -SlotMachine_PrintCreditCoins: ; 37981 (d:7981) +SlotMachine_PrintCreditCoins: coord hl, 5, 1 ld de, wPlayerCoins ld c, $2 jp PrintBCDNumber -SlotMachine_PrintPayoutCoins: ; 3798c (d:798c) +SlotMachine_PrintPayoutCoins: coord hl, 11, 1 ld de, wPayoutCoins lb bc, LEADING_ZEROES | 2, 4 ; 2 bytes, 4 digits jp PrintNumber -SlotMachine_PayCoinsToPlayer: ; 37998 (d:7998) +SlotMachine_PayCoinsToPlayer: ld a, $1 ld [wMuteAudioAndPauseMusic], a call WaitForSoundToFinish @@ -713,12 +713,12 @@ SlotMachine_PayCoinsToPlayer: ; 37998 (d:7998) call DelayFrames jr .loop -SlotMachine_PutOutLitBalls: ; 379fe (d:79fe) +SlotMachine_PutOutLitBalls: ld a, $23 ld [wNewSlotMachineBallTile], a jr SlotMachine_UpdateThreeCoinBallTiles -SlotMachine_LightBalls: ; 37a05 (d:7a05) +SlotMachine_LightBalls: ld a, $14 ld [wNewSlotMachineBallTile], a ld a, [wSlotMachineBet] @@ -727,22 +727,22 @@ SlotMachine_LightBalls: ; 37a05 (d:7a05) dec a jr z, SlotMachine_UpdateTwoCoinBallTiles -SlotMachine_UpdateThreeCoinBallTiles: ; 37a13 (d:7a13) +SlotMachine_UpdateThreeCoinBallTiles: coord hl, 3, 2 call SlotMachine_UpdateBallTiles coord hl, 3, 10 call SlotMachine_UpdateBallTiles -SlotMachine_UpdateTwoCoinBallTiles: ; 37a1f (d:7a1f) +SlotMachine_UpdateTwoCoinBallTiles: coord hl, 3, 4 call SlotMachine_UpdateBallTiles coord hl, 3, 8 call SlotMachine_UpdateBallTiles -SlotMachine_UpdateOneCoinBallTiles: ; 37a2b (d:7a2b) +SlotMachine_UpdateOneCoinBallTiles: coord hl, 3, 6 -SlotMachine_UpdateBallTiles: ; 37a2e (d:7a2e) +SlotMachine_UpdateBallTiles: ld a, [wNewSlotMachineBallTile] ld [hl], a ld bc, 13 @@ -757,7 +757,7 @@ SlotMachine_UpdateBallTiles: ; 37a2e (d:7a2e) ld [hl], a ret -SlotMachine_AnimWheel1: ; 37a43 (d:7a43) +SlotMachine_AnimWheel1: ld bc, SlotMachineWheel1 ld de, wSlotMachineWheel1Offset ld hl, wOAMBuffer @@ -765,7 +765,7 @@ SlotMachine_AnimWheel1: ; 37a43 (d:7a43) ld [wBaseCoordX], a jr SlotMachine_AnimWheel -SlotMachine_AnimWheel2: ; 37a53 (d:7a53) +SlotMachine_AnimWheel2: ld bc, SlotMachineWheel2 ld de, wSlotMachineWheel2Offset ld hl, wOAMBuffer + $30 @@ -773,14 +773,14 @@ SlotMachine_AnimWheel2: ; 37a53 (d:7a53) ld [wBaseCoordX], a jr SlotMachine_AnimWheel -SlotMachine_AnimWheel3: ; 37a63 (d:7a63) +SlotMachine_AnimWheel3: ld bc, SlotMachineWheel3 ld de, wSlotMachineWheel3Offset ld hl, wOAMBuffer + $60 ld a, $70 ld [wBaseCoordX], a -SlotMachine_AnimWheel: ; 37a71 (d:7a71) +SlotMachine_AnimWheel: ld a, $58 ld [wBaseCoordY], a push de @@ -825,7 +825,7 @@ SlotMachine_AnimWheel: ; 37a71 (d:7a71) ld [de], a ret -SlotMachine_HandleInputWhileWheelsSpin: ; 37ab2 (d:7ab2) +SlotMachine_HandleInputWhileWheelsSpin: call DelayFrame call JoypadLowSensitivity ld a, [hJoy5] @@ -849,7 +849,7 @@ SlotMachine_HandleInputWhileWheelsSpin: ; 37ab2 (d:7ab2) ret nz jr .loop -LoadSlotMachineTiles: ; 37ad8 (d:7ad8) +LoadSlotMachineTiles: call DisableLCD ld hl, SlotMachineTiles2 ld de, vChars0 @@ -880,11 +880,11 @@ LoadSlotMachineTiles: ; 37ad8 (d:7ad8) call SlotMachine_AnimWheel2 jp SlotMachine_AnimWheel3 -SlotMachineMap: ; 37b25 (d:7b25) +SlotMachineMap: INCBIN "gfx/tilemaps/slotmachine.map" SlotMachineMapEnd: INCLUDE "data/slot_machine_wheels.asm" -SlotMachineTiles1: ; 37c81 (d:7c81) +SlotMachineTiles1: INCBIN "gfx/slotmachine1.2bpp" diff --git a/engine/status_ailments.asm b/engine/status_ailments.asm index b233defa..787533c4 100755 --- a/engine/status_ailments.asm +++ b/engine/status_ailments.asm @@ -1,4 +1,4 @@ -PrintStatusAilment: ; 58e8b (16:4e8b) +PrintStatusAilment: ld a, [de] bit PSN, a jr nz, .psn diff --git a/engine/subtract_paid_money.asm b/engine/subtract_paid_money.asm index 45df93a7..a6a6ec2e 100644 --- a/engine/subtract_paid_money.asm +++ b/engine/subtract_paid_money.asm @@ -1,6 +1,6 @@ ; subtracts the amount the player paid from their money ; sets carry flag if there is enough money and unsets carry flag if not -SubtractAmountPaidFromMoney_: ; 68a6 (1:68a6) +SubtractAmountPaidFromMoney_: ld de, wPlayerMoney ld hl, hMoney ; total price of items ld c, 3 ; length of money in bytes @@ -14,4 +14,4 @@ SubtractAmountPaidFromMoney_: ; 68a6 (1:68a6) ld [wTextBoxID], a call DisplayTextBoxID ; redraw money text box and a - ret
\ No newline at end of file + ret diff --git a/engine/surfing_minigame.asm b/engine/surfing_minigame.asm index f70e8119..48aaca53 100755 --- a/engine/surfing_minigame.asm +++ b/engine/surfing_minigame.asm @@ -23,8 +23,8 @@ SurfingPikachuMinigame: push af ld a, $98 ld [H_AUTOBGTRANSFERDEST + 1], a - call Func_f8fb3 - call Func_f807a + call SurfingPikachuMinigameIntro + call SurfingPikachuLoop xor a ld [rBGP], a ld [rOBP0], a @@ -59,42 +59,42 @@ SurfingPikachuMinigame: ld [hTilesetType], a ret -Func_f807a: - call Func_f8116 +SurfingPikachuLoop: + call SurfingPikachuMinigame_LoadGFXAndLayout call DelayFrame ld b, $e call RunPaletteCommand .loop - ld a, [wc5d1] + ld a, [wSurfingMinigameRoutineNumber] bit 7, a ret nz - call Func_f923f - call Func_f80ac + call SurfingPikachu_GetJoypad_3FrameBuffer + call SurfingPikachu_CheckPressedSelect ret nz - call Func_f8282 + call RunSurfingMinigameRoutine ld a, $3c ld [wCurrentAnimatedObjectOAMBufferOffset], a call RunObjectAnimations call Func_f8848 - call Func_f80a8 - call Func_f80c4 + call .DelayFrame + call SurfingMinigame_UpdateMusicTempo jr .loop -Func_f80a8: +.DelayFrame: call DelayFrame ret -Func_f80ac: +SurfingPikachu_CheckPressedSelect: ld hl, wd492 bit 1, [hl] ret z ld a, [hJoyPressed] - and $4 + and SELECT ret Func_f80b7: ld a, [hJoyPressed] - and $8 + and START ret z ld hl, wc5e2 ld a, [hl] @@ -102,10 +102,12 @@ Func_f80b7: ld [hl], a ret -Func_f80c4: +SurfingMinigame_UpdateMusicTempo: ld a, [wc634] and a ret z + + ; check that all channels are on their last frame of note delay ld hl, wChannelNoteDelayCounters ld a, $1 cp [hl] @@ -116,6 +118,8 @@ Func_f80c4: inc hl cp [hl] ret nz + + ; de = ([wc5e3] & 0x3f) * 2 ld a, [wc5e3] ld e, a ld a, [wc5e3 + 1] @@ -125,7 +129,7 @@ Func_f80c4: rl d ld e, d ld d, $0 - ld hl, Unkn_f80f5 + ld hl, .Tempos add hl, de add hl, de ld a, [hli] @@ -134,14 +138,14 @@ Func_f80c4: ld [wMusicTempo], a ret -Unkn_f80f5: - dw $75 - dw $6d - dw $65 - dw $5d - dw $55 +.Tempos: + dw 117 + dw 109 + dw 101 + dw 93 + dw 85 -Func_f80ff: +SurfingMinigame_ResetMusicTempo: ld hl, wChannelNoteDelayCounters ld a, $1 cp [hl] @@ -152,86 +156,95 @@ Func_f80ff: inc hl cp [hl] ret nz - ld a, $75 + ld a, 117 ld [wMusicTempo + 1], a xor a ld [wMusicTempo], a ret -Func_f8116: - call Func_f9279 +SurfingPikachuMinigame_LoadGFXAndLayout: + call SurfingPikachu_ClearTileMap call ClearSprites call DisableLCD - ld hl, wSerialEnemyMonsPatchList - ld bc, $67 + ld hl, wSurfingMinigameData + ld bc, wSurfingMinigameDataEnd - wSurfingMinigameData xor a call FillMemory - ld hl, wc700 - ld bc, $200 + ld hl, wLYOverrides + ld bc, wLYOverridesBufferEnd - wLYOverrides xor a call FillMemory xor a ld [H_AUTOBGTRANSFERENABLED], a call ClearObjectAnimationBuffers - ld hl, SurfingPikachu1Graphics + ld hl, SurfingPikachu1Graphics1 ld de, $9000 ld bc, $500 - ld a, BANK(SurfingPikachu1Graphics) + ld a, BANK(SurfingPikachu1Graphics1) call FarCopyData - ld hl, SurfingPikachu1Graphics + $410 + ld hl, SurfingPikachu1Graphics2 ld de, $8000 ld bc, $1000 - ld a, BANK(SurfingPikachu1Graphics) + ld a, BANK(SurfingPikachu1Graphics2) call FarCopyData - ld a, Unkn_f93d3 % $100 + ld a, SurfingPikachuSpawnStateDataPointer % $100 ld [wAnimatedObjectSpawnStateDataPointer], a - ld a, Unkn_f93d3 / $100 + ld a, SurfingPikachuSpawnStateDataPointer / $100 ld [wAnimatedObjectSpawnStateDataPointer + 1], a - ld a, Jumptable_f93fa % $100 + + ld a, SurfingPikachuObjectJumptable % $100 ld [wAnimatedObjectJumptablePointer], a - ld a, Jumptable_f93fa / $100 + ld a, SurfingPikachuObjectJumptable / $100 ld [wAnimatedObjectJumptablePointer + 1], a - ld a, Unkn_f9507 % $100 + + ld a, SurfingPikachuOAMData % $100 ld [wAnimatedObjectOAMDataPointer], a - ld a, Unkn_f9507 / $100 + ld a, SurfingPikachuOAMData / $100 ld [wAnimatedObjectOAMDataPointer + 1], a - ld a, Unkn_f9405 % $100 + + ld a, SurfingPikachuFrames % $100 ld [wAnimatedObjectFramesDataPointer], a - ld a, Unkn_f9405 / $100 + ld a, SurfingPikachuFrames / $100 ld [wAnimatedObjectFramesDataPointer + 1], a + ld hl, vBGMap0 ld bc, $800 ld a, $0 call FillMemory + ld hl, $98c0 ld bc, $180 ld a, $b call FillMemory + ld a, $1 lb de, $74, $58 call SpawnAnimatedObject + ld a, $74 - ld [wc5ea], a - call Func_f9223 + ld [wSurfingMinigamePikachuObjectHeight], a + + call SurfingMinigame_InitScanlineOverrides + xor a ld [hSCX], a ld [hSCY], a ld a, $7e ld [hWY], a - ld a, $42 + ld a, rSCY - $ff00 ld [hLCDCPointer], a ld a, $40 ld [wc5e3], a xor a ld [wc5e3 + 1], a xor a - ld [wc5d6], a + ld [wSurfingMinigamePikachuHP], a ld a, $60 - ld [wc5d7], a - ld hl, wc61a + ld [wSurfingMinigamePikachuHP + 1], a + ld hl, wSurfingMinigameWaveHeight ld bc, $14 ld a, $74 call FillMemory @@ -239,7 +252,7 @@ Func_f8116: call Func_f8256 ld a, $e3 ld [rLCDC], a - call Func_f81e9 + call SurfingPikachuMinigame_SetBGPals ld a, $e4 ld [rOBP0], a ld a, $e0 @@ -248,16 +261,16 @@ Func_f8116: call UpdateGBCPal_OBP1 ret -Func_f81e9: +SurfingPikachuMinigame_SetBGPals: ld a, [wOnSGB] and a - jr nz, .asm_f81f7 + jr nz, .sgb ld a, $d0 ld [rBGP], a call UpdateGBCPal_BGP ret -.asm_f81f7 +.sgb ld a, $e4 ld [rBGP], a call UpdateGBCPal_BGP @@ -361,11 +374,11 @@ Unkn_f8279: db $19 db $19 -Func_f8282: - ld a, [wc5d1] +RunSurfingMinigameRoutine: + ld a, [wSurfingMinigameRoutineNumber] ld e, a ld d, $0 - ld hl, Jumptable_f8291 + ld hl, .Jumptable add hl, de add hl, de ld a, [hli] @@ -373,79 +386,77 @@ Func_f8282: ld l, a jp [hl] -Jumptable_f8291: - dw Func_f82ab - dw Func_f82bd - dw Func_f8324 - dw Func_f835c - dw Func_f838c - dw Func_f8399 - dw Func_f83aa - dw Func_f83bb - dw Func_f83cc - dw Func_f83e3 - dw Func_f8406 - dw Func_f840f - dw Func_f841d - -Func_f82ab: +.Jumptable: + dw SurfingMinigameRoutine_SpawnPikachu ; 0 + dw SurfingMinigame_RunGame ; 1 + dw Func_f8324 ; 2 + dw Func_f835c ; 3 + dw SurfingMinigame_DrawResultsScreenAndWait ; 4 + dw SurfingMinigame_WriteHPLeftAndWait ; 5 + dw SurfingMinigame_WriteRadnessAndWait ; 6 + dw SurfingMinigame_WriteTotalAndWait ; 7 + dw SurfingMinigame_AddRemainingHPToTotalAndWait ; 8 + dw SurfingMinigame_AddRadnessToTotalAndWait ; 9 + dw SurfingMinigame_WaitLast ; a + dw SurfingMinigame_ExitOnPressA ; b + dw SurfingMinigame_GameOver ; c + +SurfingMinigameRoutine_SpawnPikachu: ld a, $2 lb de, $48, $e0 call SpawnAnimatedObject - ld hl, wc5d1 + ld hl, wSurfingMinigameRoutineNumber inc [hl] ld a, $1 ld [wc634], a ret -Func_f82bd: +SurfingMinigame_RunGame: ld a, [wc5e5] cp $18 jr nc, .asm_f82e8 - ld hl, wc5d6 + ld hl, wSurfingMinigamePikachuHP ld a, [hli] or [hl] and a - jr z, .asm_f82f6 + jr z, .dead call Random ld [wc5d5], a - call Func_f9210 + call SurfingMinigame_UpdateLYOverrides call Func_f88ae call Func_f886b call Func_f8cb0 call Func_f844c - call Func_f88e4 + call SurfingMinigame_Deduct1HP call Func_f88fd ret .asm_f82e8 - ld hl, wc5d1 + ld hl, wSurfingMinigameRoutineNumber inc [hl] xor a ld [wc634], a - ld a, $c0 - ld [wc632], a + ld a, 192 + ld [wSurfingMinigameRoutineDelay], a ret -.asm_f82f6 +.dead ld a, $1 -Func_f82f8: ld [wc630], a ld a, $c - ld [wc5d1], a -Func_f8300: + ld [wSurfingMinigameRoutineNumber], a ld a, $80 ld [wc631], a ld a, $b lb de, $88, $58 call SpawnAnimatedObject - ld hl, $7 + ld hl, ANIM_OBJ_Y_OFFSET add hl, bc ld [hl], $80 - ld hl, $b + ld hl, ANIM_OBJ_FIELD_B add hl, bc ld [hl], $80 - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld [hl], $30 xor a @@ -453,38 +464,38 @@ Func_f8300: ret Func_f8324: - call Func_f8440 - jr c, .asm_f833d + call SurfingMinigame_RunDelayTimer + jr c, .done_delay xor a ld [wc5d5], a - call Func_f9210 + call SurfingMinigame_UpdateLYOverrides call Func_f88ae call Func_f886b call Func_f8c97 - call Func_f80ff + call SurfingMinigame_ResetMusicTempo ret -.asm_f833d - ld hl, wc5d1 +.done_delay + ld hl, wSurfingMinigameRoutineNumber inc [hl] ld a, $90 ld [hSCX], a ld a, $72 - ld [wc5d3], a + ld [wSurfingMinigameWaveFunctionNumber], a ld a, $4 ld [wc5d2], a xor a ld [hLCDCPointer], a - ld [wc617], a - ld [wc618], a - ld [wc619], a + ld [wSurfingMinigameSCX], a + ld [wSurfingMinigameSCX + 1], a + ld [wSurfingMinigameSCX + 2], a ret Func_f835c: ld a, [hSCX] and a jr z, .asm_f837b - call Func_f9210 + call SurfingMinigame_UpdateLYOverrides call Func_f88ae call Func_f886b ld a, [hSCX] @@ -494,7 +505,7 @@ Func_f835c: dec a ld [hSCX], a ld a, $e0 - ld [wc62e], a + ld [wSurfingMinigameXOffset], a call Func_f8cc7 ret @@ -502,139 +513,137 @@ Func_f835c: xor a ld [wc5e3], a ld [wc5e3 + 1], a - ld hl, wc5d1 + ld hl, wSurfingMinigameRoutineNumber inc [hl] ld a, $5 ld [wc5d2], a ret -Func_f838c: - call Func_f891e - ld a, $20 - ld [wc632], a - ld hl, wc5d1 +SurfingMinigame_DrawResultsScreenAndWait: + call SurfingMinigame_DrawResultsScreen + ld a, 32 + ld [wSurfingMinigameRoutineDelay], a + ld hl, wSurfingMinigameRoutineNumber inc [hl] ret -Func_f8399: - call Func_f8440 +SurfingMinigame_WriteHPLeftAndWait: + call SurfingMinigame_RunDelayTimer ret nc - call Func_f8a92 - ld a, $40 - ld [wc632], a - ld hl, wc5d1 + call SurfingMinigame_WriteHPLeft + ld a, 64 + ld [wSurfingMinigameRoutineDelay], a + ld hl, wSurfingMinigameRoutineNumber inc [hl] ret -Func_f83aa: - call Func_f8440 +SurfingMinigame_WriteRadnessAndWait: + call SurfingMinigame_RunDelayTimer ret nc - call Func_f8ae4 - ld a, $40 - ld [wc632], a - ld hl, wc5d1 + call SurfingMinigame_WriteRadness + ld a, 64 + ld [wSurfingMinigameRoutineDelay], a + ld hl, wSurfingMinigameRoutineNumber inc [hl] ret -Func_f83bb: - call Func_f8440 +SurfingMinigame_WriteTotalAndWait: + call SurfingMinigame_RunDelayTimer ret nc - call Func_f8b7a - ld a, $40 - ld [wc632], a - ld hl, wc5d1 + call SurfingMinigame_WriteTotal + ld a, 64 + ld [wSurfingMinigameRoutineDelay], a + ld hl, wSurfingMinigameRoutineNumber inc [hl] ret -Func_f83cc: - call Func_f8440 +SurfingMinigame_AddRemainingHPToTotalAndWait: + call SurfingMinigame_RunDelayTimer ret nc - call Func_f8aa9 + call SurfingMinigame_AddRemainingHPToTotal push af - call Func_f8b5d + call SurfingMinigame_BCDPrintTotalScore pop af ret nc - ld a, $40 - ld [wc632], a - ld hl, wc5d1 + ld a, 64 + ld [wSurfingMinigameRoutineDelay], a + ld hl, wSurfingMinigameRoutineNumber inc [hl] ret -Func_f83e3: - call Func_f8440 +SurfingMinigame_AddRadnessToTotalAndWait: + call SurfingMinigame_RunDelayTimer ret nc - call Func_f8afb + call SurfingMinigame_AddRadnessToTotal push af - call Func_f8b5d + call SurfingMinigame_BCDPrintTotalScore pop af ret nc - ld a, $80 - ld [wc632], a - ld hl, wc5d1 + ld a, 128 + ld [wSurfingMinigameRoutineDelay], a + ld hl, wSurfingMinigameRoutineNumber inc [hl] - call Func_f8b92 + call DidPlayerGetAHighScore ret nc - call Func_f8a7c -Func_f83ff: + call SurfingMinigame_PrintTextHiScore ld a, $6 ld [wc5d2], a ret -Func_f8406: - call Func_f8440 -Func_f8408: +SurfingMinigame_WaitLast: + call SurfingMinigame_RunDelayTimer ret nc - ld hl, wc5d1 + ld hl, wSurfingMinigameRoutineNumber inc [hl] ret -Func_f840f: - call Func_f9210 +SurfingMinigame_ExitOnPressA: + call SurfingMinigame_UpdateLYOverrides ld a, [hJoyPressed] - and $1 + and A_BUTTON ret z - ld hl, wc5d1 + ld hl, wSurfingMinigameRoutineNumber set 7, [hl] ret -Func_f841d: - call Func_f9210 +SurfingMinigame_GameOver: + call SurfingMinigame_UpdateLYOverrides call Func_f88ae call Func_f886b call Func_f8cb0 - call Func_f80ff + call SurfingMinigame_ResetMusicTempo ld hl, wc631 ld a, [hl] and a - jr z, .asm_f8435 + jr z, .wait_press_a dec [hl] ret -.asm_f8435 +.wait_press_a ld a, [hJoyPressed] - and $1 + and A_BUTTON ret z - ld hl, wc5d1 + ld hl, wSurfingMinigameRoutineNumber set 7, [hl] ret -Func_f8440: - ld hl, wc632 +SurfingMinigame_RunDelayTimer: + ld hl, wSurfingMinigameRoutineDelay ld a, [hl] and a - jr z, .asm_f844a + jr z, .set_carry dec [hl] and a ret -.asm_f844a +.set_carry scf ret Func_f844c: - ld a, [wc5e6] + ld a, [wc5e5 + 1] ld h, a - ld a, [wc5e7] + ld a, [wc5e5 + 2] ld l, a ld a, [wc5e3] ld e, a @@ -642,9 +651,9 @@ Func_f844c: ld d, a add hl, de ld a, h - ld [wc5e6], a + ld [wc5e5 + 1], a ld a, l - ld [wc5e7], a + ld [wc5e5 + 2], a ret nc ld hl, wc5e5 inc [hl] @@ -653,7 +662,7 @@ Func_f844c: dec [hl] ret -Func_f8470 +SurfingMinigameAnimatedObjectFn_Pikachu ld a, [wc5d2] ld e, a ld d, $0 @@ -667,7 +676,7 @@ Func_f8470 Jumptable_f847f: dw Func_f848d - dw Func_f84e2 + dw SurfingMinigame_ScoreCurrentWave dw Func_f8516 dw Func_f8545 dw Func_f8561 @@ -679,32 +688,32 @@ Func_f848d: and a jr nz, .asm_f84d2 call Func_f87b5 - ld a, [wc5ea] - ld hl, $5 + ld a, [wSurfingMinigamePikachuObjectHeight] + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld [hl], a call Func_f871e - jr c, .asm_f84aa + jr c, .splash call Func_f8742 call Func_f86b8 ret -.asm_f84aa +.splash call Func_f8742 - ld a, $1 + ld a, $1 ; on a wave ld [wc5d2], a xor a - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld [hl], a - ld hl, $d + ld hl, ANIM_OBJ_FIELD_D add hl, bc ld [hl], a - ld hl, $e + ld hl, ANIM_OBJ_FIELD_E add hl, bc ld [hl], a - ld [wc5d9], a - ld [wc62f], a + ld [wSurfingMinigameRadnessMeter], a + ld [wSurfingMinigameTrickFlags], a xor a ld [wChannelSoundIDs + CH7], a ld a, SFX_UNKNOWN_801B3_4 @@ -720,21 +729,21 @@ Func_f848d: call Func_f8742 ret -Func_f84e2: - call Func_f8598 - call Func_f928c +SurfingMinigame_ScoreCurrentWave: + call SurfingMinigame_DPadAction + call SurfingMinigame_UpdatePikachuHeight ret nc - call Func_f8606 - jr c, .asm_f84fd - call Func_f8bed - ld hl, $c + call SurfingMinigame_TileInteraction + jr c, .splash + call SurfingMinigame_CalculateAndAddRadnessFromStunt + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld [hl], $0 ld a, $2 ld [wc5d2], a ret -.asm_f84fd +.splash ld a, $3 ld [wc5d2], a ld a, $60 @@ -748,7 +757,7 @@ Func_f84e2: ret Func_f8516: - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld a, [hl] cp $20 @@ -758,19 +767,19 @@ Func_f8516: inc [hl] inc [hl] ld d, $4 - call Func_f9362 - ld hl, $7 + call SurfingPikachu_Sine + ld hl, ANIM_OBJ_Y_OFFSET add hl, bc ld [hl], a call Func_f87b5 - ld a, [wc5ea] - ld hl, $5 + ld a, [wSurfingMinigamePikachuObjectHeight] + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld [hl], a ret .asm_f8539 - ld hl, $7 + ld hl, ANIM_OBJ_Y_OFFSET add hl, bc ld [hl], $0 ld a, $0 @@ -783,8 +792,8 @@ Func_f8545: and a jr z, .asm_f8556 dec [hl] - ld a, [wc5ea] - ld hl, $5 + ld a, [wSurfingMinigamePikachuObjectHeight] + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld [hl], a ret @@ -797,8 +806,8 @@ Func_f8545: ret Func_f8561: - ld a, [wc5ea] - ld hl, $5 + ld a, [wSurfingMinigamePikachuObjectHeight] + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld [hl], a call Func_f8742 @@ -807,13 +816,13 @@ Func_f8561: Func_f856d: ld a, $f call SetCurrentAnimatedObjectCallbackAndResetFrameStateRegisters - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld [hl], $0 ret Func_f8579: - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld a, [hl] inc [hl] @@ -822,183 +831,184 @@ Func_f8579: cp $20 jr c, .asm_f8591 ld d, $10 - call Func_f9362 - ld hl, $7 + call SurfingPikachu_Sine + ld hl, ANIM_OBJ_Y_OFFSET add hl, bc ld [hl], a ret .asm_f8591 - ld hl, $7 + ld hl, ANIM_OBJ_Y_OFFSET add hl, bc ld [hl], $0 ret -Func_f8598: +SurfingMinigame_DPadAction: ld de, hJoy5 ld a, [de] - and $20 - jr nz, .asm_f85a6 + and D_LEFT + jr nz, .d_left ld a, [de] - and $10 - jr nz, .asm_f85cc + and D_RIGHT + jr nz, .d_right ret -.asm_f85a6 - ld hl, $e +.d_left + ld hl, ANIM_OBJ_FIELD_E add hl, bc ld [hl], $0 - ld hl, $d + ld hl, ANIM_OBJ_FIELD_D add hl, bc ld a, [hl] inc [hl] cp $b - jr c, .asm_f85be - call Func_f85f2 - ld hl, wc62f + jr c, .d_left_skip + call .StartTrick + ld hl, wSurfingMinigameTrickFlags set 0, [hl] -.asm_f85be - ld hl, $1 +.d_left_skip + ld hl, ANIM_OBJ_FRAME_SET add hl, bc ld a, [hl] cp $e - jr nc, .asm_f85c9 + jr nc, .d_left_reset inc [hl] ret -.asm_f85c9 +.d_left_reset ld [hl], $1 ret -.asm_f85cc - ld hl, $d +.d_right + ld hl, ANIM_OBJ_FIELD_D add hl, bc ld [hl], $0 - ld hl, $e + ld hl, ANIM_OBJ_FIELD_E add hl, bc ld a, [hl] inc [hl] cp $d - jr c, .asm_f85e4 - call Func_f85f2 - ld hl, wc62f + jr c, .d_right_skip + call .StartTrick + ld hl, wSurfingMinigameTrickFlags set 1, [hl] -.asm_f85e4 - ld hl, $1 +.d_right_skip + ld hl, ANIM_OBJ_FRAME_SET add hl, bc ld a, [hl] cp $1 - jr z, .asm_f85ef + jr z, .d_right_reset dec [hl] ret -.asm_f85ef +.d_right_reset ld [hl], $e ret -Func_f85f2: - call Func_f8bdf +.StartTrick: + call SurfingMinigame_IncreaseRadnessMeter xor a - ld hl, $d + ld hl, ANIM_OBJ_FIELD_D add hl, bc ld [hl], a - ld hl, $e + ld hl, ANIM_OBJ_FIELD_E add hl, bc ld [hl], a ld a, SFX_UNKNOWN_801B6_4 call PlaySound ret -Func_f8606: - ld hl, $1 +SurfingMinigame_TileInteraction: + ld hl, ANIM_OBJ_FRAME_SET add hl, bc - ld a, [wc5ef] + ld a, [wSurfingMinigameBGMapReadBuffer] cp $6 - jr z, .asm_f863d + jr z, .tile_06 cp $14 - jr z, .asm_f867b + jr z, .tile_14 cp $12 - jr z, .asm_f867b + jr z, .tile_12 cp $7 - jr z, .asm_f865c + jr z, .tile_07 ld a, [hl] cp $1 - jp z, .asm_f86ad + jp z, .action_0 cp $2 - jr z, .asm_f869a + jr z, .action_1 cp $3 - jr z, .asm_f869f + jr z, .action_2 cp $4 - jr z, .asm_f86a2 + jr z, .action_3 cp $5 - jr z, .asm_f869f + jr z, .action_2 cp $6 - jr z, .asm_f869a + jr z, .action_1 cp $7 - jr z, .asm_f86ad - jr .asm_f86ad + jr z, .action_0 + jr .action_0 -.asm_f863d +.tile_06 ld a, [hl] cp $1 - jr z, .asm_f86ad + jr z, .action_0 cp $2 - jr z, .asm_f86ad + jr z, .action_0 cp $3 - jr z, .asm_f86ad + jr z, .action_0 cp $4 - jr z, .asm_f869a + jr z, .action_1 cp $5 - jr z, .asm_f869f + jr z, .action_2 cp $6 - jr z, .asm_f86a2 + jr z, .action_3 cp $7 - jr z, .asm_f869f - jr .asm_f86ad + jr z, .action_2 + jr .action_0 -.asm_f865c +.tile_07 ld a, [hl] cp $1 - jr z, .asm_f869f + jr z, .action_2 cp $2 - jr z, .asm_f86a2 + jr z, .action_3 cp $3 - jr z, .asm_f869f + jr z, .action_2 cp $4 - jr z, .asm_f869a + jr z, .action_1 cp $5 - jr z, .asm_f86ad + jr z, .action_0 cp $6 - jr z, .asm_f86ad + jr z, .action_0 cp $7 - jr z, .asm_f86ad - jr .asm_f86ad + jr z, .action_0 + jr .action_0 -.asm_f867b +.tile_12 +.tile_14 ld a, [hl] cp $1 - jr z, .asm_f86ad + jr z, .action_0 cp $2 - jr z, .asm_f869a + jr z, .action_1 cp $3 - jr z, .asm_f869f + jr z, .action_2 cp $4 - jr z, .asm_f86a2 + jr z, .action_3 cp $5 - jr z, .asm_f86a2 + jr z, .action_3 cp $6 - jr z, .asm_f869f + jr z, .action_2 cp $7 - jr z, .asm_f869a - jr .asm_f86ad + jr z, .action_1 + jr .action_0 -.asm_f869a - call Func_f86f7 - jr .asm_f86a2 +.action_1 + call Subtract128Fromwc5e3 + jr .action_3 -.asm_f869f - call Func_f86d0 -.asm_f86a2 +.action_2 + call Subtract64Fromwc5e3 +.action_3 xor a ld [wChannelSoundIDs + CH7], a ld a, SFX_UNKNOWN_801BF_4 @@ -1006,7 +1016,7 @@ Func_f8606: and a ret -.asm_f86ad +.action_0 ld a, $40 ld [wc5e3], a xor a @@ -1029,23 +1039,23 @@ Func_f86b8: ld [wc5e3], a ret -Func_f86d0: +Subtract64Fromwc5e3: ld a, [wc5e3 + 1] and a - jr nz, .asm_f86e2 + jr nz, .go ld a, [wc5e3] cp $40 - jr nc, .asm_f86e2 + jr nc, .go xor a ld [wc5e3], a ret -.asm_f86e2 +.go ld a, [wc5e3 + 1] ld h, a ld a, [wc5e3] ld l, a - ld de, $ffc0 + ld de, -$40 add hl, de ld a, h ld [wc5e3 + 1], a @@ -1053,23 +1063,23 @@ Func_f86d0: ld [wc5e3], a ret -Func_f86f7: +Subtract128Fromwc5e3: ld a, [wc5e3 + 1] and a - jr nz, .asm_f8709 + jr nz, .go ld a, [wc5e3] cp $80 - jr nc, .asm_f8709 + jr nc, .go xor a ld [wc5e3], a ret -.asm_f8709 +.go ld a, [wc5e3 + 1] ld h, a ld a, [wc5e3] ld l, a - ld de, $ff80 + ld de, -$80 add hl, de ld a, h ld [wc5e3 + 1], a @@ -1084,7 +1094,7 @@ Func_f871e: jr c, .asm_f8740 cp $5 jr nc, .asm_f8740 - ld a, [wc5ef] + ld a, [wSurfingMinigameBGMapReadBuffer] cp $14 jr nz, .asm_f8740 call Func_f87a8 @@ -1106,7 +1116,7 @@ Func_f8742: ret c cp $5 ret nc - ld a, [wc5ef] + ld a, [wSurfingMinigameBGMapReadBuffer] cp $6 jr z, .asm_f8766 cp $14 @@ -1115,7 +1125,7 @@ Func_f8742: jr z, .asm_f876a call Func_f8778 ld a, $4 - ld hl, $1 + ld hl, ANIM_OBJ_FRAME_SET add hl, bc ld [hl], a ret @@ -1131,7 +1141,7 @@ Func_f8742: ld a, [wc5de] dec a add e - ld hl, $1 + ld hl, ANIM_OBJ_FRAME_SET add hl, bc ld [hl], a ret @@ -1187,9 +1197,9 @@ Func_f87b5: inc [hl] and $3 ret nz - call Func_f87ce + call .GetYCoord ld d, a - ld hl, $4 + ld hl, ANIM_OBJ_X_COORD add hl, bc ld e, [hl] ld a, $a @@ -1198,27 +1208,27 @@ Func_f87b5: pop bc ret -Func_f87ce: +.GetYCoord: ld a, [hSCX] and $8 - jr nz, .asm_f87d9 - ld hl, wc622 - jr .asm_f87dc - -.asm_f87d9 - ld hl, wc623 -.asm_f87dc - ld a, [wc5f0] + jr nz, .get_height_plus_9 + ld hl, wSurfingMinigameWaveHeight + 8 + jr .got_hl + +.get_height_plus_9 + ld hl, wSurfingMinigameWaveHeight + 9 +.got_hl + ld a, [wSurfingMinigameBGMapReadBuffer + 1] cp $6 - jr z, .asm_f87ed + jr z, .six_or_twenty cp $14 - jr z, .asm_f87ed + jr z, .six_or_twenty cp $7 - jr z, .asm_f87f5 + jr z, .seven ld a, [hl] ret -.asm_f87ed +.six_or_twenty ld a, [hSCX] and $7 ld e, a @@ -1226,14 +1236,14 @@ Func_f87ce: sub e ret -.asm_f87f5 +.seven ld a, [hSCX] and $7 add [hl] ret Func_f87fb: - ld hl, $4 + ld hl, ANIM_OBJ_X_COORD add hl, bc ld a, [hl] cp $58 @@ -1242,12 +1252,12 @@ Func_f87fb: ld [hl], a ret -Func_f8807: +Func_f8807: ; unreferenced call MaskCurrentAnimatedObjectStruct ret -Func_f880b: - ld hl, $b +SurfingMinigameAnimatedObjectFn_FlippingPika: + ld hl, ANIM_OBJ_FIELD_B add hl, bc ld a, [hl] and a @@ -1255,39 +1265,39 @@ Func_f880b: dec [hl] dec [hl] ld d, a - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld a, [hl] inc [hl] - call Func_f9362 + call SurfingPikachu_Sine cp $80 - jr nc, .asm_f8825 + jr nc, .positive xor $ff inc a -.asm_f8825 - ld hl, $7 +.positive + ld hl, ANIM_OBJ_Y_OFFSET add hl, bc ld [hl], a ret -Func_f882b: - ld hl, $b +SurfingMinigameAnimatedObjectFn_IntroAnimationPikachu: + ld hl, ANIM_OBJ_FIELD_B add hl, bc ld a, [hl] inc [hl] and $1 ret z - ld hl, $4 + ld hl, ANIM_OBJ_X_COORD add hl, bc ld a, [hl] cp $c0 - jr z, .asm_f883f + jr z, .done inc [hl] ret -.asm_f883f +.done ld a, $1 - ld [wc633], a + ld [wSurfingMinigameIntroAnimationFinished], a call MaskCurrentAnimatedObjectStruct ret @@ -1305,7 +1315,7 @@ Func_f8848: ld d, h ld hl, wOAMBuffer + 5 * 4 + 1 ld e, $9 -.asm_f8861 +.loop ld a, [hl] add d ld [hli], a @@ -1313,11 +1323,11 @@ Func_f8848: inc hl inc hl dec e - jr nz, .asm_f8861 + jr nz, .loop ret Func_f886b: - ld a, [wc5ef] + ld a, [wSurfingMinigameBGMapReadBuffer] ; ??? ld a, [hSCX] add $48 ld e, a @@ -1327,15 +1337,15 @@ Func_f886b: ld d, $0 ld hl, vBGMap0 add hl, de - ld a, [wc5ea] + ld a, [wSurfingMinigamePikachuObjectHeight] srl a srl a srl a ld c, a -.asm_f8889 +.loop ld a, c and a - jr z, .asm_f889a + jr z, .copy dec c ld de, $20 add hl, de @@ -1343,10 +1353,10 @@ Func_f886b: and $3 or $98 ld h, a - jr .asm_f8889 + jr .loop -.asm_f889a - ld de, wc5ef +.copy + ld de, wSurfingMinigameBGMapReadBuffer ld a, e ld [H_VBCOPYDEST], a ld a, d @@ -1355,7 +1365,7 @@ Func_f886b: ld [H_VBCOPYSRC], a ld a, h ld [H_VBCOPYSRC + 1], a - ld a, $1 + ld a, 16 / $10 ld [H_VBCOPYSIZE], a ret @@ -1363,13 +1373,13 @@ Func_f88ae: ld a, [hSCX] and $8 jr nz, .asm_f88b9 - ld hl, wc621 + ld hl, wSurfingMinigameWaveHeight + 7 jr .asm_f88bc .asm_f88b9 - ld hl, wc622 + ld hl, wSurfingMinigameWaveHeight + 8 .asm_f88bc - ld a, [wc5ef] + ld a, [wSurfingMinigameBGMapReadBuffer] cp $6 jr z, .asm_f88d0 cp $14 @@ -1377,7 +1387,7 @@ Func_f88ae: cp $7 jr z, .asm_f88db ld a, [hl] - ld [wc5ea], a + ld [wSurfingMinigamePikachuObjectHeight], a ret .asm_f88d0 @@ -1386,46 +1396,46 @@ Func_f88ae: ld e, a ld a, [hl] sub e - ld [wc5ea], a + ld [wSurfingMinigamePikachuObjectHeight], a ret .asm_f88db ld a, [hSCX] and $7 add [hl] - ld [wc5ea], a + ld [wSurfingMinigamePikachuObjectHeight], a ret -Func_f88e4: - ld hl, wc5d6 +SurfingMinigame_Deduct1HP: + ld hl, wSurfingMinigamePikachuHP ld e, $99 - call Func_f88f0 + call .BCD_Deduct ret nc inc hl ld e, $99 -Func_f88f0: +.BCD_Deduct: ld a, [hl] and a - jr z, .asm_f88fa + jr z, .roll_over sub $1 daa ld [hl], a and a ret -.asm_f88fa +.roll_over ld [hl], e scf ret Func_f88fd: - ld de, wc5d7 + ld de, wSurfingMinigamePikachuHP + 1 ld hl, wOAMBuffer + 0 * 4 + 2 ld a, [de] - call Func_f890b + call .PlaceBCDNumber ld hl, wOAMBuffer + 2 * 4 + 2 ld a, [de] -Func_f890b: +.PlaceBCDNumber: ld c, a swap a and $f @@ -1441,164 +1451,161 @@ Func_f890b: dec de ret -Func_f891e: +SurfingMinigame_DrawResultsScreen: ld hl, wTileMap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT xor a call FillMemory - ld hl, Tilemap_f8946 + ld hl, .BeachTilemap coord de, 0, 6 - ld bc, Tilemap_f8946End - Tilemap_f8946 + ld bc, .BeachTilemapEnd - .BeachTilemap call CopyData - call Func_f8a0e + call .PlaceTextbox ld hl, wOAMBuffer + 5 * 4 + 1 - ld bc, $24 + ld bc, 9 * 4 xor a call FillMemory ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a ret -Tilemap_f8946: +.BeachTilemap: INCBIN "gfx/unknown_f8946.map" -Tilemap_f8946End: +.BeachTilemapEnd: -Func_f8a0e: +.PlaceTextbox: coord hl, 1, 1 lb de, $3b, $3c ld a, $40 - call Func_f8a72 + call .place_row coord hl, 1, 2 lb de, $3f, $3f ld a, $ff - call Func_f8a72 + call .place_row coord hl, 1, 3 lb de, $3f, $3f ld a, $ff - call Func_f8a72 + call .place_row coord hl, 1, 4 lb de, $3f, $3f ld a, $ff - call Func_f8a72 + call .place_row coord hl, 1, 5 lb de, $3f, $3f ld a, $ff - call Func_f8a72 + call .place_row coord hl, 1, 6 lb de, $3f, $3f ld a, $ff - call Func_f8a72 + call .place_row coord hl, 1, 7 lb de, $3f, $3f ld a, $ff - call Func_f8a72 + call .place_row coord hl, 1, 8 lb de, $3f, $3f ld a, $ff - call Func_f8a72 + call .place_row coord hl, 1, 9 lb de, $3d, $3e ld a, $40 - call Func_f8a72 + call .place_row ret -Func_f8a72: +.place_row: ld [hl], d inc hl ld c, $10 -.asm_f8a76 +.loop ld [hli], a dec c - jr nz, .asm_f8a76 + jr nz, .loop ld [hl], e ret -Func_f8a7c: - ld hl, Tilemap_f8a89 +SurfingMinigame_PrintTextHiScore: + ld hl, .Hi_Score coord de, 6, 8 ld bc, $9 call CopyData ret -Tilemap_f8a89: - db $20,$2e,$2f,$30,$31,$2c,$32,$23,$33 +.Hi_Score: + db $20,$2e,$2f,$30,$31,$2c,$32,$23,$33 ; Hi-Score!! -Func_f8a92: - ld hl, Tilemap_f8aa2 +SurfingMinigame_WriteHPLeft: + ld hl, .HP_Left coord de, 2, 2 ld bc, $7 call CopyData - call Func_f8aca + call SurfingMinigame_BCDPrintHPLeft ret -Tilemap_f8aa2: - db $20,$21,$ff,$22,$23,$24,$25 +.HP_Left: + db $20,$21,$ff,$22,$23,$24,$25 ; HP Left -Func_f8aa9: - ld c, $63 -.asm_f8aab +SurfingMinigame_AddRemainingHPToTotal: + ld c, 99 +.loop push bc - ld hl, wc5d6 + ld hl, wSurfingMinigamePikachuHP ld a, [hli] or [hl] and a - jr z, .asm_f8ac7 - call Func_f88e4 + jr z, .dead + call SurfingMinigame_Deduct1HP ld e, $1 -.asm_f8ab9 - call Func_f8b42 + call SurfingMinigame_AddPointsToTotal pop bc dec c - jr nz, .asm_f8aab -.asm_f8abf + jr nz, .loop ld a, SFX_UNKNOWN_801B0_4 call PlaySound -.asm_f8ac5 and a ret -.asm_f8ac7 +.dead pop bc scf ret -Func_f8aca: +SurfingMinigame_BCDPrintHPLeft: coord hl, 10, 2 - ld de, wc5d7 + ld de, wSurfingMinigamePikachuHP + 1 ld a, [de] - call Func_f9350 + call SurfingPikachu_PlaceBCDNumber inc hl ld a, [de] - call Func_f9350 + call SurfingPikachu_PlaceBCDNumber inc hl inc hl - ld [hl], $21 + ld [hl], $21 ; P inc hl - ld [hl], $25 + ld [hl], $25 ; t inc hl - ld [hl], $26 + ld [hl], $26 ; s ret -Func_f8ae4: - ld hl, Tilemap_f8af4 +SurfingMinigame_WriteRadness: + ld hl, .Radness coord de, 2, 4 ld bc, $7 call CopyData - call Func_f8b25 + call SurfingMinigame_BCDPrintRadness ret -Tilemap_f8af4: - db $27,$28,$29,$2a,$23,$26,$26 +.Radness: + db $27,$28,$29,$2a,$23,$26,$26 ; Radness -Func_f8afb: - ld c, $63 -.asm_f8afd +SurfingMinigame_AddRadnessToTotal: + ld c, 99 +.loop push bc - ld hl, wc5da + ld hl, wSurfingMinigameRadnessScore ld a, [hli] ld e, a or [hl] - jr z, .asm_f8b22 + jr z, .done ld d, [hl] ld a, e sub $1 @@ -1610,102 +1617,101 @@ Func_f8afb: ld [hld], a ld [hl], e ld e, $1 - call Func_f8b42 + call SurfingMinigame_AddPointsToTotal pop bc dec c - jr nz, .asm_f8afd + jr nz, .loop ld a, SFX_UNKNOWN_801B0_4 call PlaySound -.asm_f8b20 and a ret -.asm_f8b22 +.done pop bc scf ret -Func_f8b25: - ld a, [wc5db] +SurfingMinigame_BCDPrintRadness: + ld a, [wSurfingMinigameRadnessScore + 1] coord hl, 10, 4 - call Func_f9350 - ld a, [wc5da] + call SurfingPikachu_PlaceBCDNumber + ld a, [wSurfingMinigameRadnessScore] coord hl, 12, 4 - call Func_f9350 + call SurfingPikachu_PlaceBCDNumber inc hl inc hl - ld [hl], $21 + ld [hl], $21 ; P inc hl - ld [hl], $25 + ld [hl], $25 ; t inc hl - ld [hl], $26 + ld [hl], $26 ; s ret -Func_f8b42: - ld a, [wc5dc] +SurfingMinigame_AddPointsToTotal: + ld a, [wSurfingMinigameTotalScore] add e daa - ld [wc5dc], a - ld a, [wc5dd] + ld [wSurfingMinigameTotalScore], a + ld a, [wSurfingMinigameTotalScore + 1] adc $0 daa - ld [wc5dd], a + ld [wSurfingMinigameTotalScore + 1], a ret nc ld a, $99 - ld [wc5dc], a - ld [wc5dd], a + ld [wSurfingMinigameTotalScore], a + ld [wSurfingMinigameTotalScore + 1], a ret -Func_f8b5d: - ld a, [wc5dd] +SurfingMinigame_BCDPrintTotalScore: + ld a, [wSurfingMinigameTotalScore + 1] coord hl, 10, 6 - call Func_f9350 - ld a, [wc5dc] + call SurfingPikachu_PlaceBCDNumber + ld a, [wSurfingMinigameTotalScore] coord hl, 12, 6 - call Func_f9350 + call SurfingPikachu_PlaceBCDNumber inc hl inc hl - ld [hl], $21 + ld [hl], $21 ; P inc hl - ld [hl], $25 + ld [hl], $25 ; t inc hl - ld [hl], $26 + ld [hl], $26 ; s ret -Func_f8b7a: - ld hl, Tilemap_f8b8d +SurfingMinigame_WriteTotal: + ld hl, .Total coord de, 2, 6 ld bc, $5 call CopyData - call Func_f8b25 - call Func_f8b5d + call SurfingMinigame_BCDPrintRadness + call SurfingMinigame_BCDPrintTotalScore ret -Tilemap_f8b8d: - db $2b,$2c,$25,$28,$2d +.Total: + db $2b,$2c,$25,$28,$2d ; Total -Func_f8b92: +DidPlayerGetAHighScore: ld hl, wSurfingMinigameHiScore + 1 - ld a, [wc5dd] + ld a, [wSurfingMinigameTotalScore + 1] cp [hl] - jr c, .asm_f8ba6 - jr nz, .asm_f8bb0 + jr c, .not_high_score + jr nz, .high_score dec hl - ld a, [wc5dc] + ld a, [wSurfingMinigameTotalScore] cp [hl] - jr c, .asm_f8ba6 - jr nz, .asm_f8bb0 -.asm_f8ba6 + jr c, .not_high_score + jr nz, .high_score +.not_high_score call WaitForSoundToFinish ldpikacry e, PikachuCry28 call SurfingMinigame_PlayPikaCryIfSurfingPikaInParty and a ret -.asm_f8bb0 - ld a, [wc5dc] +.high_score + ld a, [wSurfingMinigameTotalScore] ld [wSurfingMinigameHiScore], a - ld a, [wc5dd] + ld a, [wSurfingMinigameTotalScore + 1] ld [wSurfingMinigameHiScore + 1], a call WaitForSoundToFinish ldpikacry e, PikachuCry34 @@ -1715,7 +1721,7 @@ Func_f8b92: scf ret -SurfingMinigame_PlayPikaCryIfSurfingPikaInParty: ; f8bcb (3e:4bcb) +SurfingMinigame_PlayPikaCryIfSurfingPikaInParty: push de callab IsSurfingPikachuInThePlayersParty pop de @@ -1723,73 +1729,81 @@ SurfingMinigame_PlayPikaCryIfSurfingPikaInParty: ; f8bcb (3e:4bcb) callab PlayPikachuSoundClip ret -Func_f8bdf: - ld a, [wc5d9] +SurfingMinigame_IncreaseRadnessMeter: + ld a, [wSurfingMinigameRadnessMeter] inc a cp $4 - jr c, .asm_f8be9 + jr c, .cap ld a, $3 -.asm_f8be9 - ld [wc5d9], a - ret - -Func_f8bed: - ld a, [wc5d9] +.cap + ld [wSurfingMinigameRadnessMeter], a + ret + +SurfingMinigame_CalculateAndAddRadnessFromStunt: + ; Compute the amount of radness points from the + ; current trick based on the number of + ; consecutive flips + ; Single flip: +0050 + ; 2 of the same flip: +0150 + ; 3 or more of the same flip: +0350 + ; 2 different flips: +0180 + ; 3 or more different flips: +0500 + ld a, [wSurfingMinigameRadnessMeter] and a ret z - ld a, [wc62f] + ld a, [wSurfingMinigameTrickFlags] and $3 - cp $3 - jr z, .asm_f8c2b - ld a, [wc5d9] + cp $3 ; did a combination of front and back flips + jr z, .mixed_chain + ld a, [wSurfingMinigameRadnessMeter] ld d, a ld e, $1 ld a, $0 -.asm_f8c03 +.get_amount_of_radness add e sla e dec d - jr nz, .asm_f8c03 -.asm_f8c09 + jr nz, .get_amount_of_radness +.add_radness_50_at_a_time push af ld e, $50 - call Func_f8c7c + call SurfingMinigame_AddRadness pop af dec a - jr nz, .asm_f8c09 - ld hl, $5 + jr nz, .add_radness_50_at_a_time + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld a, [hl] sub $10 ld d, a - ld hl, $4 + ld hl, ANIM_OBJ_X_COORD add hl, bc ld e, [hl] - ld a, [wc5d9] + ld a, [wSurfingMinigameRadnessMeter] add $3 push bc call SpawnAnimatedObject pop bc ret -.asm_f8c2b - ld a, [wc5d9] +.mixed_chain + ld a, [wSurfingMinigameRadnessMeter] cp $3 - jr c, .asm_f8c53 - ld a, $a -.asm_f8c34 + jr c, .add_180_radness_points + ld a, 10 +.add_500_radness_50_at_a_time push af ld e, $50 - call Func_f8c7c + call SurfingMinigame_AddRadness pop af dec a - jr nz, .asm_f8c34 - ld hl, $5 + jr nz, .add_500_radness_50_at_a_time + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld a, [hl] sub $10 ld d, a - ld hl, $4 + ld hl, ANIM_OBJ_X_COORD add hl, bc ld e, [hl] ld a, $9 @@ -1798,21 +1812,21 @@ Func_f8bed: pop bc ret -.asm_f8c53 +.add_180_radness_points ld e, $50 - call Func_f8c7c + call SurfingMinigame_AddRadness ld e, $50 - call Func_f8c7c + call SurfingMinigame_AddRadness ld e, $50 - call Func_f8c7c + call SurfingMinigame_AddRadness ld e, $30 - call Func_f8c7c - ld hl, $5 + call SurfingMinigame_AddRadness + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld a, [hl] sub $10 ld d, a - ld hl, $4 + ld hl, ANIM_OBJ_X_COORD add hl, bc ld e, [hl] ld a, $8 @@ -1821,89 +1835,91 @@ Func_f8bed: pop bc ret -Func_f8c7c: - ld a, [wc5da] +SurfingMinigame_AddRadness: + ld a, [wSurfingMinigameRadnessScore] add e daa - ld [wc5da], a - ld a, [wc5db] + ld [wSurfingMinigameRadnessScore], a + ld a, [wSurfingMinigameRadnessScore + 1] adc $0 daa - ld [wc5db], a + ld [wSurfingMinigameRadnessScore + 1], a ret nc ld a, $99 - ld [wc5da], a - ld [wc5db], a + ld [wSurfingMinigameRadnessScore], a + ld [wSurfingMinigameRadnessScore + 1], a ret Func_f8c97: ld a, $a0 - ld [wc62e], a + ld [wSurfingMinigameXOffset], a ld a, [hSCX] ld h, a - ld a, [wc617] + ld a, [wSurfingMinigameSCX] ld l, a ld de, $900 add hl, de ld a, l - ld [wc617], a + ld [wSurfingMinigameSCX], a ld a, h ld [hSCX], a jr Func_f8cc7 Func_f8cb0: ld a, $a0 - ld [wc62e], a + ld [wSurfingMinigameXOffset], a ld a, [hSCX] ld h, a - ld a, [wc617] + ld a, [wSurfingMinigameSCX] ld l, a ld de, $180 add hl, de ld a, l - ld [wc617], a + ld [wSurfingMinigameSCX], a ld a, h ld [hSCX], a Func_f8cc7: - ld hl, wc618 + ld hl, wSurfingMinigameSCX + 1 ld a, [hSCX] cp [hl] ret z ld [hl], a and $f0 - ld hl, wc619 + ld hl, wSurfingMinigameSCX + 2 cp [hl] ret z ld [hl], a - call Func_f8d44 + call SurfingMinigame_GetWaveDataPointers + ; b and c contain the height of the next wave to appear + ; on screen, in number of pixels from the top of the screen ld a, b - ld [wc5e8], a + ld [wSurfingMinigameWaveHeightBuffer], a ld a, c - ld [wc5e9], a + ld [wSurfingMinigameWaveHeightBuffer + 1], a push de - ld hl, wc61a - ld de, wc61c - ld c, $12 -.asm_f8ceb + ld hl, wSurfingMinigameWaveHeight + ld de, wSurfingMinigameWaveHeight + 2 + ld c, SCREEN_WIDTH - 2 +.copy_loop ld a, [de] inc de ld [hli], a dec c - jr nz, .asm_f8ceb - ld a, [wc5e8] + jr nz, .copy_loop + ld a, [wSurfingMinigameWaveHeightBuffer] ld [hli], a - ld a, [wc5e9] + ld a, [wSurfingMinigameWaveHeightBuffer + 1] ld [hl], a pop de ld hl, wRedrawRowOrColumnSrcTiles ld c, $8 -.asm_f8cff +.loop ld a, [de] - call Func_f8d28 + call .CopyRedrawSrcTiles inc de dec c - jr nz, .asm_f8cff - ld a, [wc62e] + jr nz, .loop + ld a, [wSurfingMinigameXOffset] ld e, a ld a, [hSCX] add e @@ -1923,7 +1939,7 @@ Func_f8cc7: ld [hRedrawRowOrColumnMode], a ret -Func_f8d28: +.CopyRedrawSrcTiles: push de push hl ld l, a @@ -1950,8 +1966,8 @@ Func_f8d28: pop de ret -Func_f8d44: - ld a, [wc5d3] +SurfingMinigame_GetWaveDataPointers: + ld a, [wSurfingMinigameWaveFunctionNumber] ld e, a ld d, $0 ld hl, Jumptable_f8d53 @@ -1963,145 +1979,155 @@ Func_f8d44: jp [hl] Jumptable_f8d53: - dw Func_f8e4b - dw Func_f8f28 - dw Func_f8f31 - dw Func_f8f3a - dw Func_f8f43 - dw Func_f8e7d - dw Func_f8f4c - dw Func_f8f55 - dw Func_f8f5e - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8ec5 - dw Func_f8ece - dw Func_f8ed7 - dw Func_f8ee0 - dw Func_f8ee9 - dw Func_f8ef2 - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8efb - dw Func_f8f04 - dw Func_f8f0d - dw Func_f8f16 - dw Func_f8f1f - dw Func_f8efb - dw Func_f8f04 - dw Func_f8f0d - dw Func_f8f16 - dw Func_f8f1f - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8f28 - dw Func_f8f31 - dw Func_f8f3a - dw Func_f8f43 - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8f4c - dw Func_f8f55 - dw Func_f8f5e - dw Func_f8f4c - dw Func_f8f55 - dw Func_f8f5e - dw Func_f8f4c - dw Func_f8f55 - dw Func_f8f5e - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8f67 - dw Func_f8f70 - dw Func_f8efb - dw Func_f8f04 - dw Func_f8f0d - dw Func_f8f16 - dw Func_f8f1f - dw Func_f8f67 - dw Func_f8f70 - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8ec5 - dw Func_f8ece - dw Func_f8ed7 - dw Func_f8ee0 - dw Func_f8ee9 - dw Func_f8ef2 - dw Func_f8e7d - dw Func_f8f67 - dw Func_f8f70 - dw Func_f8f67 - dw Func_f8f70 - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8efb - dw Func_f8f04 - dw Func_f8f0d - dw Func_f8f16 - dw Func_f8f1f - dw Func_f8f28 - dw Func_f8f31 - dw Func_f8f3a - dw Func_f8f43 - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8e7d - dw Func_f8f94 - dw Func_f8e86 - dw Func_f8e8f - dw Func_f8e98 - dw Func_f8ea1 - dw Func_f8eaa - dw Func_f8eb3 - dw Func_f8ebc - dw Func_f8f9d - dw Func_f8e7d - dw Func_f8f79 - dw Func_f8f82 - dw Func_f8f82 - dw Func_f8f82 - dw Func_f8f82 - dw Func_f8f82 - dw Func_f8f82 - dw Func_f8f82 - dw Func_f8f8b - -Func_f8e4b: + dw SurfingMinigameWaveFunction_NoWave ; 00 + + dw Func_f8f28 ; 01 + dw Func_f8f31 ; 02 + dw Func_f8f3a ; 03 + dw Func_f8f43 ; 04 + dw Func_f8e7d ; 05 + dw Func_f8f4c ; 06 + dw Func_f8f55 ; 07 + dw Func_f8f5e ; 08 + dw Func_f8e7d ; 09 + dw Func_f8e7d ; 0a + dw Func_f8e7d ; 0b + dw Func_f8e7d ; 0c + dw Func_f8f94 ; 0d + + dw Func_f8ec5 ; 0e + dw Func_f8ece ; 0f + dw Func_f8ed7 ; 10 + dw Func_f8ee0 ; 11 + dw Func_f8ee9 ; 12 + dw Func_f8ef2 ; 13 + dw Func_f8e7d ; 14 + dw Func_f8e7d ; 15 + dw Func_f8e7d ; 16 + dw Func_f8e7d ; 17 + dw Func_f8e7d ; 18 + dw Func_f8f94 ; 19 + + dw Func_f8efb ; 1a + dw Func_f8f04 ; 1b + dw Func_f8f0d ; 1c + dw Func_f8f16 ; 1d + dw Func_f8f1f ; 1e + dw Func_f8efb ; 1f + dw Func_f8f04 ; 20 + dw Func_f8f0d ; 21 + dw Func_f8f16 ; 22 + dw Func_f8f1f ; 23 + dw Func_f8e7d ; 24 + dw Func_f8e7d ; 25 + dw Func_f8e7d ; 26 + dw Func_f8e7d ; 27 + dw Func_f8f94 ; 28 + + dw Func_f8f28 ; 29 + dw Func_f8f31 ; 2a + dw Func_f8f3a ; 2b + dw Func_f8f43 ; 2c + dw Func_f8e7d ; 2d + dw Func_f8e7d ; 2e + dw Func_f8e7d ; 2f + dw Func_f8e7d ; 30 + dw Func_f8f94 ; 31 + + dw Func_f8f4c ; 32 + dw Func_f8f55 ; 33 + dw Func_f8f5e ; 34 + dw Func_f8f4c ; 35 + dw Func_f8f55 ; 36 + dw Func_f8f5e ; 37 + dw Func_f8f4c ; 38 + dw Func_f8f55 ; 39 + dw Func_f8f5e ; 3a + dw Func_f8e7d ; 3b + dw Func_f8e7d ; 3c + dw Func_f8e7d ; 3d + dw Func_f8e7d ; 3e + dw Func_f8f94 ; 3f + + dw Func_f8f67 ; 40 + dw Func_f8f70 ; 41 + dw Func_f8efb ; 42 + dw Func_f8f04 ; 43 + dw Func_f8f0d ; 44 + dw Func_f8f16 ; 45 + dw Func_f8f1f ; 46 + dw Func_f8f67 ; 47 + dw Func_f8f70 ; 48 + dw Func_f8e7d ; 49 + dw Func_f8e7d ; 4a + dw Func_f8e7d ; 4b + dw Func_f8f94 ; 4c + + dw Func_f8ec5 ; 4d + dw Func_f8ece ; 4e + dw Func_f8ed7 ; 4f + dw Func_f8ee0 ; 50 + dw Func_f8ee9 ; 51 + dw Func_f8ef2 ; 52 + dw Func_f8e7d ; 53 + dw Func_f8f67 ; 54 + dw Func_f8f70 ; 55 + dw Func_f8f67 ; 56 + dw Func_f8f70 ; 57 + dw Func_f8e7d ; 58 + dw Func_f8e7d ; 59 + dw Func_f8e7d ; 5a + dw Func_f8f94 ; 5b + + dw Func_f8efb ; 5c + dw Func_f8f04 ; 5d + dw Func_f8f0d ; 5e + dw Func_f8f16 ; 5f + dw Func_f8f1f ; 60 + dw Func_f8f28 ; 61 + dw Func_f8f31 ; 62 + dw Func_f8f3a ; 63 + dw Func_f8f43 ; 64 + dw Func_f8e7d ; 65 + dw Func_f8e7d ; 66 + dw Func_f8e7d ; 67 + dw Func_f8e7d ; 68 + dw Func_f8f94 ; 69 + + dw Func_f8e86 ; 6a + dw Func_f8e8f ; 6b + dw Func_f8e98 ; 6c + dw Func_f8ea1 ; 6d + dw Func_f8eaa ; 6e + dw Func_f8eb3 ; 6f + dw Func_f8ebc ; 70 + dw Func_f8f9d ; 71 + + dw Func_f8e7d ; 72 + dw Func_f8f79 ; 73 + dw Func_f8f82 ; 74 + dw Func_f8f82 ; 75 + dw Func_f8f82 ; 76 + dw Func_f8f82 ; 77 + dw Func_f8f82 ; 78 + dw Func_f8f82 ; 79 + dw Func_f8f82 ; 7a + dw Func_f8f8b ; 7b + +SurfingMinigameWaveFunction_NoWave: ld a, [wc5e5] cp $16 - jr c, .asm_f8e5a - jr z, .asm_f8e56 - jr nc, .asm_f8e6e -.asm_f8e56 + jr c, .check_param + jr z, .big_kahuna + jr nc, .got_wave +.big_kahuna ld a, $6a - jr .asm_f8e6b + jr .got_next_fn -.asm_f8e5a +.check_param ld a, [wc5d5] and a - jr z, .asm_f8e6e + jr z, .got_wave dec a and $7 ld e, a @@ -2109,9 +2135,9 @@ Func_f8e4b: ld hl, Unkn_f8e75 add hl, de ld a, [hl] -.asm_f8e6b - ld [wc5d3], a -.asm_f8e6e +.got_next_fn + ld [wSurfingMinigameWaveFunctionNumber], a +.got_wave lb bc, $74, $74 ld de, Unkn_f973d ret @@ -2122,215 +2148,215 @@ Unkn_f8e75: Func_f8e7d: lb bc, $74, $74 ld de, Unkn_f973d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8e86: lb bc, $74, $6c ld de, Unkn_f9745 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8e8f: lb bc, $64, $5c ld de, Unkn_f974d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8e98: lb bc, $54, $4c ld de, Unkn_f9755 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ea1: lb bc, $44, $44 ld de, Unkn_f975d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8eaa: lb bc, $44, $4c ld de, Unkn_f9765 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8eb3: lb bc, $54, $5c ld de, Unkn_f976d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ebc: lb bc, $64, $6c ld de, Unkn_f9775 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ec5: lb bc, $74, $6c ld de, Unkn_f977d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ece: lb bc, $64, $5c ld de, Unkn_f9785 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ed7: lb bc, $54, $4c ld de, Unkn_f978d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ee0: lb bc, $4c, $4c ld de, Unkn_f9795 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ee9: lb bc, $54, $5c ld de, Unkn_f979d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8ef2: lb bc, $64, $6c ld de, Unkn_f97a5 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8efb: lb bc, $74, $6c ld de, Unkn_f97ad - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f04: lb bc, $64, $5c ld de, Unkn_f97b5 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f0d: lb bc, $54, $54 ld de, Unkn_f97bd - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f16: lb bc, $54, $5c ld de, Unkn_f97c5 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f1f: lb bc, $64, $6c ld de, Unkn_f97cd - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f28: lb bc, $74, $6c ld de, Unkn_f97d5 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f31: lb bc, $64, $5c ld de, Unkn_f97dd - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f3a: lb bc, $5c, $5c ld de, Unkn_f97e5 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f43: lb bc, $64, $6c ld de, Unkn_f97ed - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f4c: lb bc, $74, $6c ld de, Unkn_f97f5 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f55: lb bc, $64, $64 ld de, Unkn_f97fd - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f5e: lb bc, $64, $6c ld de, Unkn_f9805 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f67: lb bc, $74, $6c ld de, Unkn_f980d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f70: lb bc, $6c, $6c ld de, Unkn_f9815 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f79: lb bc, $74, $74 ld de, Unkn_f981d - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f82: lb bc, $74, $74 ld de, Unkn_f9825 - jp Func_f8fa9 + jp SurfingMinigameWaveFunction_GoToNextWaveFunction Func_f8f8b: lb bc, $74, $74 ld de, Unkn_f9825 - jp Func_f8fae + jp SurfingMinigameWaveFunction_ResetWaveFunction Func_f8f94: lb bc, $74, $74 ld de, Unkn_f973d - jp Func_f8fae + jp SurfingMinigameWaveFunction_ResetWaveFunction Func_f8f9d: lb bc, $74, $74 ld de, Unkn_f973d ret -Func_f8fa4: +Func_f8fa4: ; unused inc a - ld [wc5d3], a + ld [wSurfingMinigameWaveFunctionNumber], a ret -Func_f8fa9: - ld hl, wc5d3 +SurfingMinigameWaveFunction_GoToNextWaveFunction: + ld hl, wSurfingMinigameWaveFunctionNumber inc [hl] ret -Func_f8fae: +SurfingMinigameWaveFunction_ResetWaveFunction: xor a - ld [wc5d3], a + ld [wSurfingMinigameWaveFunctionNumber], a ret -Func_f8fb3: - call Func_f9279 +SurfingPikachuMinigameIntro: + call SurfingPikachu_ClearTileMap call ClearSprites call DisableLCD xor a ld [H_AUTOBGTRANSFERENABLED], a call ClearObjectAnimationBuffers - ld hl, $6324 + ld hl, SurfingPikachu1Graphics3 ld de, $8800 ld bc, $900 - ld a, $20 + ld a, BANK(SurfingPikachu1Graphics3) call FarCopyData - ld a, Unkn_f93d3 % $100 + ld a, SurfingPikachuSpawnStateDataPointer % $100 ld [wAnimatedObjectSpawnStateDataPointer], a - ld a, Unkn_f93d3 / $100 + ld a, SurfingPikachuSpawnStateDataPointer / $100 ld [wAnimatedObjectSpawnStateDataPointer + 1], a - ld a, Jumptable_f93fa % $100 + ld a, SurfingPikachuObjectJumptable % $100 ld [wAnimatedObjectJumptablePointer], a - ld a, Jumptable_f93fa / $100 + ld a, SurfingPikachuObjectJumptable / $100 ld [wAnimatedObjectJumptablePointer + 1], a - ld a, Unkn_f9507 % $100 + ld a, SurfingPikachuOAMData % $100 ld [wAnimatedObjectOAMDataPointer], a - ld a, Unkn_f9507 / $100 + ld a, SurfingPikachuOAMData / $100 ld [wAnimatedObjectOAMDataPointer + 1], a - ld a, Unkn_f9405 % $100 + ld a, SurfingPikachuFrames % $100 ld [wAnimatedObjectFramesDataPointer], a - ld a, Unkn_f9405 / $100 + ld a, SurfingPikachuFrames / $100 ld [wAnimatedObjectFramesDataPointer + 1], a ld a, $c lb de, $74, $58 call SpawnAnimatedObject - call Func_f9053 + call DrawSurfingPikachuMinigameIntroBackground xor a ld [hSCX], a ld [hSCY], a @@ -2345,7 +2371,7 @@ Func_f8fb3: call DelayFrame call DelayFrame call DelayFrame - call Func_f81e9 + call SurfingPikachuMinigame_SetBGPals ld a, $e4 ld [rOBP0], a ld a, $e0 @@ -2357,9 +2383,9 @@ Func_f8fb3: ld c, BANK(Music_SurfingPikachu) call PlayMusic xor a - ld [wc633], a + ld [wSurfingMinigameIntroAnimationFinished], a .loop - ld a, [wc633] + ld a, [wSurfingMinigameIntroAnimationFinished] and a ret nz ld a, $0 @@ -2368,7 +2394,7 @@ Func_f8fb3: call DelayFrame jr .loop -Func_f9053: +DrawSurfingPikachuMinigameIntroBackground: ld hl, wTileMap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, $ff @@ -2434,32 +2460,32 @@ Tilemap_f91ac: INCBIN "gfx/unknown_f91ac.map" Tilemap_f91bb: INCBIN "gfx/unknown_f91bb.map" Tilemap_f91c8: INCBIN "gfx/unknown_f91c8.map" -Func_f9210: - ld hl, wc710 - ld de, wc710 + 1 +SurfingMinigame_UpdateLYOverrides: + ld hl, wLYOverrides + $10 + ld de, wLYOverrides + $11 ld c, $80 ld a, [hl] push af -.asm_f921a +.loop ld a, [de] inc de ld [hli], a dec c - jr nz, .asm_f921a + jr nz, .loop pop af ld [hl], a ret -Func_f9223: - ld hl, wc700 - ld bc, $100 +SurfingMinigame_InitScanlineOverrides: + ld hl, wLYOverrides + ld bc, wLYOverridesEnd - wLYOverrides ld de, $0 -.asm_f922c +.loop ld a, e and $1f ld e, a push hl - ld hl, Unkn_f96c5 + ld hl, SurfingMinigame_LYOverridesInitialSineWave add hl, de ld a, [hl] pop hl @@ -2468,21 +2494,21 @@ Func_f9223: dec bc ld a, c or b - jr nz, .asm_f922c + jr nz, .loop ret -Func_f923f: +SurfingPikachu_GetJoypad_3FrameBuffer: call Joypad ld a, [H_FRAMECOUNTER] and a - jr nz, .asm_f9250 + jr nz, .delayed ld a, [hJoyHeld] ld [hJoy5], a ld a, $2 ld [H_FRAMECOUNTER], a ret -.asm_f9250 +.delayed xor a ld [hJoy5], a ret @@ -2508,7 +2534,7 @@ SurfingPikachuMinigame_NormalPals: call UpdateGBCPal_OBP1 ret -Func_f9279: +SurfingPikachu_ClearTileMap: ld hl, wTileMap ld bc, SCREEN_WIDTH * SCREEN_HEIGHT xor a @@ -2521,30 +2547,32 @@ Func_f9284: ld [wc5ee], a ret -Func_f928c: +SurfingMinigame_UpdatePikachuHeight: ld a, [wc5ed] and a - jr nz, .asm_f92e4 + jr nz, .positive ld a, [wc5ec] ld d, a ld a, [wc5ee] or d - jr z, .asm_f92dd + jr z, .done ld a, [wc5ee] ld e, a - ld hl, $ff80 + ld hl, -$80 add hl, de ld a, l ld [wc5ee], a ld a, h ld [wc5ec], a + + ; -(4 * a ** 2) ld e, a ld d, $0 - call Func_f9340 + call SurfingMinigame_NTimesDE ld e, l ld d, h ld a, $4 - call Func_f9340 + call SurfingMinigame_NTimesDE ld a, l xor $ff inc a @@ -2552,43 +2580,46 @@ Func_f928c: ld a, h xor $ff ld h, a + push hl - ld hl, $5 + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld d, [hl] - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld e, [hl] pop hl + add hl, de ld e, l ld d, h - ld hl, $5 + + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld [hl], d - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld [hl], e and a ret -.asm_f92dd +.done ld a, $1 ld [wc5ed], a and a ret -.asm_f92e4 - ld a, [wc5ea] +.positive + ld a, [wSurfingMinigamePikachuObjectHeight] ld e, a - ld hl, $5 + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld a, [hl] cp $90 - jr nc, .asm_f92f4 + jr nc, .okay cp e - jr nc, .asm_f9330 -.asm_f92f4 + jr nc, .reset +.okay ld a, [wc5ec] ld d, a ld a, [wc5ee] @@ -2599,58 +2630,63 @@ Func_f928c: ld [wc5ee], a ld a, h ld [wc5ec], a + + ; 4 * a ** 2 ld e, a ld d, $0 - call Func_f9340 + call SurfingMinigame_NTimesDE ld e, l ld d, h ld a, $4 - call Func_f9340 + call SurfingMinigame_NTimesDE + push hl - ld hl, $5 + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld d, [hl] - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld e, [hl] pop hl + add hl, de ld e, l ld d, h - ld hl, $5 + + ld hl, ANIM_OBJ_Y_COORD add hl, bc ld [hl], d - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld [hl], e and a ret -.asm_f9330 - ld hl, $5 +.reset + ld hl, ANIM_OBJ_Y_COORD add hl, bc - ld a, [wc5ea] + ld a, [wSurfingMinigamePikachuObjectHeight] ld [hl], a - ld hl, $c + ld hl, ANIM_OBJ_FIELD_C add hl, bc ld [hl], $0 scf ret -Func_f9340: +SurfingMinigame_NTimesDE: ld hl, $0 -.asm_f9343 +.loop srl a - jr nc, .asm_f9348 + jr nc, .no_add add hl, de -.asm_f9348 +.no_add sla e rl d and a - jr nz, .asm_f9343 + jr nz, .loop ret -Func_f9350: +SurfingPikachu_PlaceBCDNumber: ld c, a swap a and $f @@ -2663,77 +2699,77 @@ Func_f9350: dec de ret -Func_f9360: ; cosine +SurfingPikachu_Cosine: ; cosine add $10 -Func_f9362: ; sine +SurfingPikachu_Sine: ; sine and $3f cp $20 - jr nc, .asm_f936d - call Func_f9377 + jr nc, .positive + call .GetSine ld a, h ret -.asm_f936d +.positive and $1f - call Func_f9377 + call .GetSine ld a, h xor $ff inc a ret -Func_f9377: +.GetSine: ld e, a ld a, d ld d, $0 - ld hl, Unkn_f9393 + ld hl, .SineWave add hl, de add hl, de ld e, [hl] inc hl ld d, [hl] ld hl, $0 -.asm_f9386 +.loop srl a - jr nc, .asm_f938b + jr nc, .no_add add hl, de -.asm_f938b +.no_add sla e rl d and a - jr nz, .asm_f9386 + jr nz, .loop ret -Unkn_f9393: +.SineWave: sine_wave $100 -Unkn_f93d3: - db $00, $00, $00 - db $04, $01, $00 - db $11, $02, $00 - db $12, $02, $00 - db $15, $00, $00 - db $16, $00, $00 - db $17, $00, $00 - db $18, $00, $00 - db $19, $00, $00 - db $1a, $00, $00 - db $14, $00, $00 - db $13, $03, $00 - db $1b, $04, $00 - -Jumptable_f93fa: - dw Func_f9404 - dw Func_f8470 - dw Func_f87fb - dw Func_f880b - dw Func_f882b - -Func_f9404: +SurfingPikachuSpawnStateDataPointer: + db $00, $00, $00 ; 0 + db $04, $01, $00 ; 1 + db $11, $02, $00 ; 2 + db $12, $02, $00 ; 3 + db $15, $00, $00 ; 4 + db $16, $00, $00 ; 5 + db $17, $00, $00 ; 6 + db $18, $00, $00 ; 7 + db $19, $00, $00 ; 8 + db $1a, $00, $00 ; 9 + db $14, $00, $00 ; a + db $13, $03, $00 ; b + db $1b, $04, $00 ; c + +SurfingPikachuObjectJumptable: + dw SurfingMinigameAnimatedObjectFn_nop ; 0 + dw SurfingMinigameAnimatedObjectFn_Pikachu ; 1 + dw Func_f87fb ; 2 + dw SurfingMinigameAnimatedObjectFn_FlippingPika ; 3 + dw SurfingMinigameAnimatedObjectFn_IntroAnimationPikachu ; 4 + +SurfingMinigameAnimatedObjectFn_nop: ret INCLUDE "data/animated_objects_3e_1.asm" -Unkn_f96c5: +SurfingMinigame_LYOverridesInitialSineWave: ; a sine wave with amplitude 2 db 0, 0, 0, 1, 1, 1, 1, 2 db 2, 2, 1, 1, 1, 1, 0, 0 @@ -2741,28 +2777,28 @@ Unkn_f96c5: db -2, -2, -1, -1, -1, -1, 0, 0 Unkn_f96e5: - db $00, $00, $00, $00 - db $0b, $0b, $0b, $0b - db $0b, $02, $02, $06 - db $03, $0b, $07, $03 - db $06, $06, $06, $06 - db $07, $07, $07, $07 - db $06, $04, $04, $08 - db $05, $07, $08, $05 - db $0b, $0b, $11, $12 - db $0b, $0b, $13, $03 - db $14, $12, $04, $08 - db $13, $07, $08, $05 - db $06, $14, $06, $14 - db $13, $07, $13, $07 - db $08, $08, $08, $08 - db $14, $12, $14, $12 - db $0b, $11, $02, $14 - db $06, $14, $06, $14 - db $0c, $0c, $0d, $0d - db $0d, $0d, $0d, $0d - db $0e, $0f, $10, $0b - db $12, $13, $12, $13 + db $00, $00, $00, $00 ; 00 + db $0b, $0b, $0b, $0b ; 01 + db $0b, $02, $02, $06 ; 02 + db $03, $0b, $07, $03 ; 03 + db $06, $06, $06, $06 ; 04 + db $07, $07, $07, $07 ; 05 + db $06, $04, $04, $08 ; 06 + db $05, $07, $08, $05 ; 07 + db $0b, $0b, $11, $12 ; 08 + db $0b, $0b, $13, $03 ; 09 + db $14, $12, $04, $08 ; 0a + db $13, $07, $08, $05 ; 0b + db $06, $14, $06, $14 ; 0c + db $13, $07, $13, $07 ; 0d + db $08, $08, $08, $08 ; 0e + db $14, $12, $14, $12 ; 0f + db $0b, $11, $02, $14 ; 10 + db $06, $14, $06, $14 ; 11 + db $0c, $0c, $0d, $0d ; 12 + db $0d, $0d, $0d, $0d ; 13 + db $0e, $0f, $10, $0b ; 14 + db $12, $13, $12, $13 ; 15 Unkn_f973d: db $00, $00, $00, $01, $01, $01, $01, $01 diff --git a/engine/titlescreen.asm b/engine/titlescreen.asm index c6068813..2cfcc445 100755 --- a/engine/titlescreen.asm +++ b/engine/titlescreen.asm @@ -1,4 +1,4 @@ -SetDefaultNamesBeforeTitlescreen: ; 414b (1:414b) +SetDefaultNamesBeforeTitlescreen: ld hl, NintenText ld de, wPlayerName call CopyFixedLengthText @@ -16,7 +16,7 @@ SetDefaultNamesBeforeTitlescreen: ; 414b (1:414b) ld [wAudioROMBank], a ld [wAudioSavedROMBank], a -DisplayTitleScreen: ; 4171 (1:4171) +DisplayTitleScreen: call GBPalWhiteOut ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a @@ -31,7 +31,7 @@ DisplayTitleScreen: ; 4171 (1:4171) call DisableLCD call LoadFontTilePatterns ; todo: fix hl pointers - ld hl, NintendoCopyrightLogoGraphics ; 4:4c48 + ld hl, NintendoCopyrightLogoGraphics ld de, vTitleLogo + $600 ld bc, $50 ld a, BANK(NintendoCopyrightLogoGraphics) @@ -91,7 +91,7 @@ DisplayTitleScreen: ; 4171 (1:4171) call .ScrollTitleScreenPokemonLogo jr .bouncePokemonLogoLoop -.TitleScreenPokemonLogoYScrolls ; 4228 (1:4228) +.TitleScreenPokemonLogoYScrolls: ; Controls the bouncing effect of the Pokemon logo on the title screen db -4,16 ; y scroll amount, number of times to scroll db 3,4 @@ -102,7 +102,7 @@ DisplayTitleScreen: ; 4171 (1:4171) db -1,2 db 0 ; terminate list with 0 -.ScrollTitleScreenPokemonLogo ; 4237 (1:4237) +.ScrollTitleScreenPokemonLogo: ; Scrolls the Pokemon logo on the title screen to create the bouncing effect ; Scrolls d pixels e times call DelayFrame @@ -194,7 +194,7 @@ DisplayTitleScreen: ; 4171 (1:4171) .asm_42f0 ; 42f0 (1:42f0) ; unreferenced - callab Func_e8e79 + callab PrinterDebug jp .loop .asm_42fb ; 42fb (1:42fb) @@ -226,17 +226,17 @@ DisplayTitleScreen: ; 4171 (1:4171) jpba DoClearSaveDialogue -TitleScreenCopyTileMapToVRAM: ; 4332 (1:4332) +TitleScreenCopyTileMapToVRAM: ld [H_AUTOBGTRANSFERDEST + 1], a jp Delay3 -LoadCopyrightAndTextBoxTiles: ; 4337 (1:4337) +LoadCopyrightAndTextBoxTiles: xor a ld [hWY], a call ClearScreen call LoadTextBoxTilePatterns -LoadCopyrightTiles: ; 4340 (1:4340) +LoadCopyrightTiles: ld de, NintendoCopyrightLogoGraphics ld hl, vChars2 + $600 lb bc, BANK(NintendoCopyrightLogoGraphics), (TextBoxGraphics + $10 - NintendoCopyrightLogoGraphics) / $10 ; bug: overflows into text box graphics and copies the "A" tile @@ -245,17 +245,17 @@ LoadCopyrightTiles: ; 4340 (1:4340) ld de, CopyrightTextString jp PlaceString -CopyrightTextString: ; 4355 (1:4355) +CopyrightTextString: db $60,$61,$62,$63,$61,$62,$7c,$7f,$65,$66,$67,$68,$69,$6a ; ©1995-1999 Nintendo next $60,$61,$62,$63,$61,$62,$7c,$7f,$6b,$6c,$6d,$6e,$6f,$70,$71,$72 ; ©1995-1999 Creatures inc. next $60,$61,$62,$63,$61,$62,$7c,$7f,$73,$74,$75,$76,$77,$78,$79,$7a,$7b ; ©1995-1999 GAME FREAK inc. db "@" -TitleScreen_PlayPikachuPCM: ; 4387 (1:4387) +TitleScreen_PlayPikachuPCM: callab PlayPikachuSoundClip ret -DoTitleScreenFunction: ; 4390 (1:4390) +DoTitleScreenFunction: call .CheckTimer ld a, [wTitleScreenScene] ld e, a @@ -269,7 +269,7 @@ DoTitleScreenFunction: ; 4390 (1:4390) jp [hl] -.Jumptable: ; 43a2 (1:43a2) +.Jumptable: dw .Nop dw .BlinkHalf dw .BlinkWait @@ -283,23 +283,23 @@ DoTitleScreenFunction: ; 4390 (1:4390) dw .BlinkOpen dw .GoBackToStart -.GoBackToStart: ; 43ba (1:43ba) +.GoBackToStart: xor a ld [wTitleScreenScene], a .Nop ret -.BlinkOpen: ; 43bf (1:43bf) +.BlinkOpen: ld e, 0 jr .LoadBlinkFrame -.BlinkHalf: ; 43c3 (1:43c3) +.BlinkHalf: ld e, 4 jr .LoadBlinkFrame -.BlinkClosed: ; 43c7 (1:43c7) +.BlinkClosed: ld e, 8 -.LoadBlinkFrame: ; 43c9 (1:43c9) +.LoadBlinkFrame: ld hl, wOAMBuffer + 2 ld c, 8 .loop @@ -312,12 +312,12 @@ DoTitleScreenFunction: ; 4390 (1:4390) inc hl dec c jr nz, .loop -.BlinkWait: ; 43d9 (1:43d9) +.BlinkWait: ld hl, wTitleScreenScene inc [hl] ret -.CheckTimer: ; 43de (1:43de) +.CheckTimer: ld hl, wTitleScreenTimer ld a, [hl] inc [hl] @@ -333,14 +333,14 @@ DoTitleScreenFunction: ; 4390 (1:4390) ret ; copy text of fixed length NAME_LENGTH (like player name, rival name, mon names, ...) -CopyFixedLengthText: ; 43f3 (1:43f3) +CopyFixedLengthText: ld bc, NAME_LENGTH jp CopyData NintenText: db "NINTEN@" SonyText: db "SONY@" -IncrementResetCounter: ; 4405 (1:4405) +IncrementResetCounter: ld hl, wTitleScreenScene + 2 ld e, [hl] inc hl @@ -359,7 +359,7 @@ IncrementResetCounter: ; 4405 (1:4405) scf ret -FillSpriteBuffer0WithAA: ; 4418 (1:4418) +FillSpriteBuffer0WithAA: xor a call SwitchSRAMBankAndLatchClockData ld hl, sSpriteBuffer0 diff --git a/engine/titlescreen2.asm b/engine/titlescreen2.asm index cf4506bc..8b4bc4de 100755 --- a/engine/titlescreen2.asm +++ b/engine/titlescreen2.asm @@ -1,24 +1,24 @@ ; Leftover of Red/Blue. Seemingly unused -TitleScroll_WaitBall: ; 3749e (d:749e) +TitleScroll_WaitBall: ; Wait around for the TitleBall animation to play out. ; hi: speed ; lo: duration db $05, $05, 0 -TitleScroll_In: ; 374a1 (d:74a1) +TitleScroll_In: ; Scroll a TitleMon in from the right. ; hi: speed ; lo: duration db $a2, $94, $84, $63, $52, $31, $11, 0 -TitleScroll_Out: ; 374a9 (d:74a9) +TitleScroll_Out: ; Scroll a TitleMon out to the left. ; hi: speed ; lo: duration db $12, $22, $32, $42, $52, $62, $83, $93, 0 -TitleScroll: ; 374b2 (d:74b2) +TitleScroll: ld a, d ld bc, TitleScroll_In @@ -33,7 +33,7 @@ TitleScroll: ; 374b2 (d:74b2) ld e, 0 ; don't animate titleball .ok -_TitleScroll: ; 374c4 (d:74c4) +_TitleScroll: ld a, [bc] and a ret z @@ -69,7 +69,7 @@ _TitleScroll: ; 374c4 (d:74c4) pop bc jr _TitleScroll -.ScrollBetween ; 374ec (d:74ec) +.ScrollBetween: .wait ld a, [rLY] ; rLY cp l @@ -84,12 +84,12 @@ _TitleScroll: ; 374c4 (d:74c4) jr z, .wait2 ret -TitleBallYTable: ; 374fa (d:74fa) +TitleBallYTable: ; OBJ y-positions for the Poke Ball held by Red in the title screen. ; This is really two 0-terminated lists. Initiated with an index of 1. db 0, $71, $6f, $6e, $6d, $6c, $6d, $6e, $6f, $71, $74, 0 -TitleScreenAnimateBallIfStarterOut: ; 37506 (d:7506) +TitleScreenAnimateBallIfStarterOut: ; Animate the TitleBall if a starter just got scrolled out. ld a, [wTitleScreenScene] cp STARTER1 @@ -104,7 +104,7 @@ TitleScreenAnimateBallIfStarterOut: ; 37506 (d:7506) ld d, 0 jp _TitleScroll -GetTitleBallY: ; 3751e (d:751e) +GetTitleBallY: ; Get position e from TitleBallYTable push de push hl diff --git a/engine/town_map.asm b/engine/town_map.asm index 47812db0..cf09be7c 100755 --- a/engine/town_map.asm +++ b/engine/town_map.asm @@ -1,4 +1,4 @@ -DisplayTownMap: ; 70eb7 (1c:4eb7) +DisplayTownMap: call LoadTownMap ld hl, wUpdateSpritesEnabled ld a, [hl] @@ -27,7 +27,7 @@ DisplayTownMap: ; 70eb7 (1c:4eb7) pop af jr .enterLoop -.townMapLoop ; 70ef4 (1c:4ef4) +.townMapLoop coord hl, 0, 0 lb bc, 1, 20 call ClearScreenArea @@ -37,7 +37,7 @@ DisplayTownMap: ; 70eb7 (1c:4eb7) ld b, 0 add hl, bc ld a, [hl] -.enterLoop ; 70f08 (1c:4f08) +.enterLoop ld de, wTownMapCoords call LoadTownMapEntry ld a, [de] @@ -69,7 +69,7 @@ DisplayTownMap: ; 70eb7 (1c:4eb7) ld b, a and A_BUTTON | B_BUTTON | D_UP | D_DOWN jr z, .inputLoop - ld a, $8c + ld a, SFX_TINK call PlaySound bit 6, b jr nz, .pressedUp @@ -84,7 +84,6 @@ DisplayTownMap: ; 70eb7 (1c:4eb7) pop af ld [hl], a ret - .pressedUp ld a, [wWhichTownMapLocation] inc a @@ -113,11 +112,11 @@ DisplayTownMap: ; 70eb7 (1c:4eb7) INCLUDE "data/town_map_order.asm" -TownMapCursor: ; 70fc4 (1c:4fc4) +TownMapCursor: INCBIN "gfx/town_map_cursor.1bpp" TownMapCursorEnd: -LoadTownMap_Nest: ; 70fe4 (1c:4fe4) +LoadTownMap_Nest: call LoadTownMap ld hl, wUpdateSpritesEnabled ld a, [hl] @@ -139,17 +138,17 @@ LoadTownMap_Nest: ; 70fe4 (1c:4fe4) ld [hl], a ret -MonsNestText: ; 7100d (1c:500d) +MonsNestText: db "'s NEST@" -LoadTownMap_Fly: ; 71014 (1c:5014) +LoadTownMap_Fly: call ClearSprites call LoadTownMap ld a, $1 ld [hJoy7], a call LoadPlayerSpriteGraphics call LoadFontTilePatterns - ld de, BirdSprite ; $4d80 + ld de, BirdSprite ld b, BANK(BirdSprite) ld c, $c ld hl, vSprites + $40 @@ -205,7 +204,7 @@ LoadTownMap_Fly: ; 71014 (1c:5014) jr z, .inputLoop bit 0, b jr nz, .pressedA - ld a, $8c ; SFX_TINK + ld a, SFX_TINK call PlaySound bit 6, b jr nz, .pressedUp @@ -213,7 +212,7 @@ LoadTownMap_Fly: ; 71014 (1c:5014) jr nz, .pressedDown jr .pressedB .pressedA - ld a, $8e ; SFX_HEAL_AILMENT + ld a, SFX_HEAL_AILMENT call PlaySound ld a, [hl] ld [wDestinationMap], a @@ -255,10 +254,10 @@ LoadTownMap_Fly: ; 71014 (1c:5014) ld hl, wFlyLocationsList + 11 jr .pressedDown -ToText: ; 710f8 (1c:50f8) +ToText: db "To@" -BuildFlyLocationsList: ; 710fb (1c:50fb) +BuildFlyLocationsList: ld hl, wFlyLocationsList - 1 ld [hl], $ff inc hl @@ -282,11 +281,11 @@ BuildFlyLocationsList: ; 710fb (1c:50fb) ld [hl], $ff ret -TownMapUpArrow: ; 7111e (1c:511e) +TownMapUpArrow: INCBIN "gfx/up_arrow.1bpp" TownMapUpArrowEnd: -LoadTownMap: ; 71126 (1c:5126) +LoadTownMap: call GBPalWhiteOutWithDelay3 call ClearScreen call UpdateSprites @@ -299,7 +298,7 @@ LoadTownMap: ; 71126 (1c:5126) ld bc, WorldMapTileGraphicsEnd - WorldMapTileGraphics ld a, BANK(WorldMapTileGraphics) call FarCopyData - ld hl, MonNestIcon ; $574b + ld hl, MonNestIcon ld de, vSprites + $40 ld bc, MonNestIconEnd - MonNestIcon ld a, BANK(MonNestIcon) @@ -335,11 +334,11 @@ LoadTownMap: ; 71126 (1c:5126) ld [wTownMapSpriteBlinkingEnabled], a ret -CompressedMap: ; 7118a (1c:518a) +CompressedMap: ; you can decompress this file with the redrle program in the extras/ dir INCBIN "gfx/town_map.rle" -ExitTownMap: ; 71235 (1c:5235) +ExitTownMap: ; clear town map graphics data and load usual graphics data xor a ld [wTownMapSpriteBlinkingEnabled], a @@ -351,7 +350,7 @@ ExitTownMap: ; 71235 (1c:5235) call UpdateSprites jp RunDefaultPaletteCommand -DrawPlayerOrBirdSprite: ; 7124e (1c:524e) +DrawPlayerOrBirdSprite: ; a = map number ; b = OAM base tile push af @@ -366,18 +365,18 @@ DrawPlayerOrBirdSprite: ; 7124e (1c:524e) call WritePlayerOrBirdSpriteOAM pop hl ld de, wcd6d -.asm_71266 +.loop ld a, [hli] ld [de], a inc de cp "@" - jr nz, .asm_71266 + jr nz, .loop ld hl, wOAMBuffer ld de, wTileMapBackup ld bc, $a0 jp CopyData -DisplayWildLocations: ; 71279 (1c:5279) +DisplayWildLocations: callba FindWildLocationsOfMon call ZeroOutDuplicatesInList ld hl, wOAMBuffer @@ -424,10 +423,10 @@ DisplayWildLocations: ; 71279 (1c:5279) ld bc, $a0 jp CopyData -AreaUnknownText: ; 712d3 (1c:52d3) +AreaUnknownText: db " AREA UNKNOWN@" -TownMapCoordsToOAMCoords: ; 712e1 (1c:52e1) +TownMapCoordsToOAMCoords: ; in: lower nybble of a = x, upper nybble of a = y ; out: b and [hl] = (y * 8) + 24, c and [hl+1] = (x * 8) + 24 push af @@ -445,14 +444,14 @@ TownMapCoordsToOAMCoords: ; 712e1 (1c:52e1) ld [hli], a ret -WritePlayerOrBirdSpriteOAM: ; 712f6 (1c:52f6) +WritePlayerOrBirdSpriteOAM: ld a, [wOAMBaseTile] and a ld hl, wOAMBuffer + $90 ; for player sprite jr z, WriteTownMapSpriteOAM ld hl, wOAMBuffer + $80 ; for bird sprite -WriteTownMapSpriteOAM: ; 71302 (1c:5302) +WriteTownMapSpriteOAM: push hl ; Subtract 4 from c (X coord) and 4 from b (Y coord). However, the carry from c @@ -464,8 +463,8 @@ WriteTownMapSpriteOAM: ; 71302 (1c:5302) ld c, l pop hl -WriteAsymmetricMonPartySpriteOAM: ; 7130a (1c:530a) -; Writes 4 OAM blocks for a helix mon party sprite, since is does not have +WriteAsymmetricMonPartySpriteOAM: +; Writes 4 OAM blocks for a helix mon party sprite, since it does not have ; a vertical line of symmetry. lb de, 2, 2 .loop @@ -483,21 +482,21 @@ WriteAsymmetricMonPartySpriteOAM: ; 7130a (1c:530a) xor a ld [hli], a inc d - ld a, $8 + ld a, 8 add c ld c, a dec e jr nz, .innerLoop pop bc pop de - ld a, $8 + ld a, 8 add b ld b, a dec d jr nz, .loop ret -WriteSymmetricMonPartySpriteOAM: ; 7132f (1c:532f) +WriteSymmetricMonPartySpriteOAM: ; Writes 4 OAM blocks for a mon party sprite other than a helix. All the ; sprites other than the helix one have a vertical line of symmetry which allows ; the X-flip OAM bit to be used so that only 2 rather than 4 tile patterns are @@ -539,7 +538,7 @@ WriteSymmetricMonPartySpriteOAM: ; 7132f (1c:532f) jr nz, .loop ret -ZeroOutDuplicatesInList: ; 71362 (1c:5362) +ZeroOutDuplicatesInList: ; replace duplicate bytes in the list of wild pokemon locations with 0 ld de, wBuffer .loop @@ -562,7 +561,7 @@ ZeroOutDuplicatesInList: ; 71362 (1c:5362) inc hl jr .zeroDuplicatesLoop -LoadTownMapEntry: ; 7137a (1c:537a) +LoadTownMapEntry: ; in: a = map number ; out: lower nybble of [de] = x, upper nybble of [de] = y, hl = address of name cp REDS_HOUSE_1F @@ -592,20 +591,15 @@ LoadTownMapEntry: ; 7137a (1c:537a) ld l, a ret -; ExternalMapEntries: ; 7139c (1c:539c) - ; dr $7139c,$7140b -; InternalMapEntries: ; 7140b (1c:540b) - ; dr $7140b,$7174b - INCLUDE "data/town_map_entries.asm" -INCLUDE "text/map_names.asm" ; TODO: relabel addresses +INCLUDE "text/map_names.asm" -MonNestIcon: ; 7174b (1c:574b) +MonNestIcon: INCBIN "gfx/mon_nest_icon.1bpp" MonNestIconEnd: -TownMapSpriteBlinkingAnimation: ; 71753 (1c:5753) +TownMapSpriteBlinkingAnimation: ld a, [wAnimCounter] inc a cp 25 diff --git a/engine/trade.asm b/engine/trade.asm index fd5eb1d1..2476ca78 100755 --- a/engine/trade.asm +++ b/engine/trade.asm @@ -1,4 +1,4 @@ -InternalClockTradeAnim: ; 413e5 (10:53e5) +InternalClockTradeAnim: ; Do the trading animation with the player's gameboy on the left. ; In-game trades and internally clocked link cable trades use this. ld a, [wTradedPlayerMonSpecies] @@ -8,7 +8,7 @@ InternalClockTradeAnim: ; 413e5 (10:53e5) ld de, InternalClockTradeFuncSequence jr TradeAnimCommon -ExternalClockTradeAnim: ; 413f6 (10:53f6) +ExternalClockTradeAnim: ; Do the trading animation with the player's gameboy on the right. ; Externally clocked link cable trades use this. ld a, [wTradedEnemyMonSpecies] @@ -17,7 +17,7 @@ ExternalClockTradeAnim: ; 413f6 (10:53f6) ld [wRightGBMonSpecies], a ld de, ExternalClockTradeFuncSequence -TradeAnimCommon: ; 41405 (10:5405) +TradeAnimCommon: ld a, [wOptions] push af and %110000 ; preserve speaker options @@ -70,7 +70,7 @@ tradefunc: MACRO ; They are from opposite perspectives. The external clock one makes use of ; Trade_SwapNames to swap the player and enemy names for some functions. -InternalClockTradeFuncSequence: ; 4143d (10:543d) +InternalClockTradeFuncSequence: tradefunc LoadTradingGFXAndMonNames tradefunc Trade_ShowPlayerMon tradefunc Trade_DrawOpenEndOfLinkCable @@ -89,7 +89,7 @@ InternalClockTradeFuncSequence: ; 4143d (10:543d) tradefunc Trade_Cleanup db $FF -ExternalClockTradeFuncSequence: ; 4144e (10:544e) +ExternalClockTradeFuncSequence: tradefunc LoadTradingGFXAndMonNames tradefunc Trade_ShowClearedWindow tradefunc PrintTradeWillTradeText @@ -113,7 +113,7 @@ ExternalClockTradeFuncSequence: ; 4144e (10:544e) tradefunc Trade_Cleanup db $FF -TradeFuncPointerTable: ; 41464 (10:5464) +TradeFuncPointerTable: addtradefunc LoadTradingGFXAndMonNames addtradefunc Trade_ShowPlayerMon addtradefunc Trade_DrawOpenEndOfLinkCable @@ -132,11 +132,11 @@ TradeFuncPointerTable: ; 41464 (10:5464) addtradefunc Trade_SlideTextBoxOffScreen addtradefunc Trade_SwapNames -Trade_Delay100: ; 41486 (10:5486) +Trade_Delay100: ld c, 100 jp DelayFrames -Trade_CopyTileMapToVRAM: ; 4148b (10:548b) +Trade_CopyTileMapToVRAM: ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a call Delay3 @@ -144,17 +144,17 @@ Trade_CopyTileMapToVRAM: ; 4148b (10:548b) ld [H_AUTOBGTRANSFERENABLED], a ret -Trade_Delay80: ; 41496 (10:5496) +Trade_Delay80: ld c, 80 jp DelayFrames -Trade_ClearTileMap: ; 4149b (10:549b) +Trade_ClearTileMap: coord hl, 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, " " jp FillMemory -LoadTradingGFXAndMonNames: ; 414a6 (10:54a6) +LoadTradingGFXAndMonNames: call Trade_ClearTileMap call DisableLCD ld hl, TradingAnimationGraphics @@ -198,13 +198,13 @@ LoadTradingGFXAndMonNames: ; 414a6 (10:54a6) ld [wd11e], a jp GetMonName -Trade_LoadMonPartySpriteGfx: ; 41513 (10:5513) +Trade_LoadMonPartySpriteGfx: ld a, %11010000 ld [rOBP1], a call UpdateGBCPal_OBP1 jpba LoadMonPartySpriteGfx -Trade_SwapNames: ; 41522 (10:5522) +Trade_SwapNames: ld hl, wPlayerName ld de, wBuffer ld bc, NAME_LENGTH @@ -218,14 +218,14 @@ Trade_SwapNames: ; 41522 (10:5522) ld bc, NAME_LENGTH jp CopyData -Trade_Cleanup: ; 41546 (10:5546) +Trade_Cleanup: xor a call LoadGBPal ld hl, wd730 res 6, [hl] ; turn off instant text printing ret -Trade_ShowPlayerMon: ; 41550 (10:5550) +Trade_ShowPlayerMon: ld a, %10101011 ld [rLCDC], a ld a, $50 @@ -253,7 +253,7 @@ Trade_ShowPlayerMon: ; 41550 (10:5550) ld [hSCX], a dec a dec a - and a ; useless since flags are updated with dec a + and a jr nz, .slideScreenLoop call Trade_Delay80 ld a, TRADE_BALL_POOF_ANIM @@ -266,7 +266,7 @@ Trade_ShowPlayerMon: ; 41550 (10:5550) ld [H_AUTOBGTRANSFERENABLED], a ret -Trade_DrawOpenEndOfLinkCable: ; 415a2 (10:55a2) +Trade_DrawOpenEndOfLinkCable: call Trade_ClearTileMap ld b, vBGMap0 / $100 call CopyScreenTileBufferToVRAM @@ -298,7 +298,7 @@ Trade_DrawOpenEndOfLinkCable: ; 415a2 (10:55a2) jr nz, .loop ret -Trade_AnimateBallEnteringLinkCable: ; 415dc (10:55dc) +Trade_AnimateBallEnteringLinkCable: ld a, TRADE_BALL_SHAKE_ANIM call Trade_ShowAnimation ld c, 10 @@ -348,11 +348,11 @@ Trade_AnimateBallEnteringLinkCable: ; 415dc (10:55dc) ld [H_AUTOBGTRANSFERENABLED], a ret -Trade_BallInsideLinkCableOAM: ; 4163b (10:563b) +Trade_BallInsideLinkCableOAM: db $7E,$00,$7E,$20 db $7E,$40,$7E,$60 -Trade_ShowEnemyMon: ; 41643 (10:5643) +Trade_ShowEnemyMon: ld a, TRADE_BALL_TILT_ANIM call Trade_ShowAnimation call Trade_ShowClearedWindow @@ -377,7 +377,7 @@ Trade_ShowEnemyMon: ; 41643 (10:5643) call ClearScreenArea jp PrintTradeTakeCareText -Trade_AnimLeftToRight: ; 41682 (10:5682) +Trade_AnimLeftToRight: ; Animates the mon moving from the left GB to the right one. call Trade_InitGameboyTransferGfx ld a, $1 @@ -412,7 +412,7 @@ Trade_AnimLeftToRight: ; 41682 (10:5682) call Trade_AnimMonMoveVertical jp ClearSprites -Trade_AnimRightToLeft: ; 416d5 (10:56d5) +Trade_AnimRightToLeft: ; Animates the mon moving from the right GB to the left one. call Trade_InitGameboyTransferGfx xor a @@ -444,7 +444,7 @@ Trade_AnimRightToLeft: ; 416d5 (10:56d5) ld [H_AUTOBGTRANSFERENABLED], a jp ClearSprites -Trade_InitGameboyTransferGfx: ; 41720 (10:5720) +Trade_InitGameboyTransferGfx: ; Initialises the graphics for showing a mon moving between gameboys. ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a @@ -463,7 +463,7 @@ Trade_InitGameboyTransferGfx: ; 41720 (10:5720) ld [hWY], a ret -Trade_DrawLeftGameboy: ; 41741 (10:5741) +Trade_DrawLeftGameboy: call Trade_ClearTileMap ; draw link cable @@ -492,7 +492,7 @@ Trade_DrawLeftGameboy: ; 41741 (10:5741) jp DelayFrame -Trade_DrawRightGameboy: ; 4176f (10:576f) +Trade_DrawRightGameboy: call Trade_ClearTileMap ; draw horizontal segment of link cable @@ -538,7 +538,7 @@ Trade_DrawRightGameboy: ; 4176f (10:576f) jp DelayFrame -Trade_DrawCableAcrossScreen: ; 417b1 (10:57b1) +Trade_DrawCableAcrossScreen: ; Draws the link cable across the screen. call Trade_ClearTileMap coord hl, 0, 4 @@ -550,7 +550,7 @@ Trade_DrawCableAcrossScreen: ; 417b1 (10:57b1) jr nz, .loop ret -Trade_CopyCableTilesOffScreen: ; 417c0 (10:57c0) +Trade_CopyCableTilesOffScreen: ; This is used to copy the link cable tiles off screen so that the cable ; continues when the screen is scrolled. push hl @@ -566,7 +566,7 @@ Trade_CopyCableTilesOffScreen: ; 417c0 (10:57c0) ld c, 10 jp DelayFrames -Trade_AnimMonMoveHorizontal: ; 417d7 (10:57d7) +Trade_AnimMonMoveHorizontal: ; Animates the mon going through the link cable horizontally over a distance of ; b 16-pixel units. ld a, [wTradedMonMovingRight] @@ -593,7 +593,7 @@ Trade_AnimMonMoveHorizontal: ; 417d7 (10:57d7) jr nz, Trade_AnimMonMoveHorizontal ret -Trade_AnimCircledMon: ; 417fa (10:57fa) +Trade_AnimCircledMon: ; Cycles between the two animation frames of the mon party sprite, cycles ; between a circle and an oval around the mon sprite, and makes the cable flash. push de @@ -618,11 +618,11 @@ Trade_AnimCircledMon: ; 417fa (10:57fa) pop de ret -Trade_WriteCircledMonOAM: ; 4181a (10:581a) +Trade_WriteCircledMonOAM: callba WriteMonPartySpriteOAMBySpecies call Trade_WriteCircleOAM -Trade_AddOffsetsToOAMCoords: ; 41825 (10:5825) +Trade_AddOffsetsToOAMCoords: ld hl, wOAMBuffer ld c, $14 ; SCREEN_WIDTH? .loop @@ -638,7 +638,7 @@ Trade_AddOffsetsToOAMCoords: ; 41825 (10:5825) jr nz, .loop ret -Trade_AnimMonMoveVertical: ; 4183a (10:583a) +Trade_AnimMonMoveVertical: ; Animates the mon going through the link cable vertically as well as ; horizontally for a bit. The last bit of horizontal movement (when moving ; right) or the first bit of horizontal movement (when moving left) are done @@ -674,7 +674,7 @@ Trade_AnimMonMoveVertical: ; 4183a (10:583a) jr nz, .loop ret -Trade_WriteCircleOAM: ; 4186d (10:586d) +Trade_WriteCircleOAM: ; Writes the OAM blocks for the circle around the traded mon as it passes ; the link cable. ld hl, Trade_CircleOAMPointers @@ -701,7 +701,7 @@ Trade_WriteCircleOAM: ; 4186d (10:586d) jr nz, .loop ret -Trade_CircleOAMPointers: ; 41889 (10:5889) +Trade_CircleOAMPointers: dw Trade_CircleOAM0 db $08,$08 dw Trade_CircleOAM1 @@ -711,24 +711,24 @@ Trade_CircleOAMPointers: ; 41889 (10:5889) dw Trade_CircleOAM3 db $18,$18 -Trade_CircleOAM0: ; 41899 (10:5899) +Trade_CircleOAM0: db $38,$10,$39,$10 db $3A,$10,$3B,$10 -Trade_CircleOAM1: ; 418a1 (10:58a1) +Trade_CircleOAM1: db $39,$30,$38,$30 db $3B,$30,$3A,$30 -Trade_CircleOAM2: ; 418a9 (10:58a9) +Trade_CircleOAM2: db $3A,$50,$3B,$50 db $38,$50,$39,$50 -Trade_CircleOAM3: ; 418b1 (10:58b1) +Trade_CircleOAM3: db $3B,$70,$3A,$70 db $39,$70,$38,$70 ; a = species -Trade_LoadMonSprite: ; 418b9 (10:58b9) +Trade_LoadMonSprite: ld [wcf91], a ld [wd0b5], a ld [wWholeScreenPaletteMonSpecies], a @@ -744,7 +744,7 @@ Trade_LoadMonSprite: ; 418b9 (10:58b9) ld c, 10 jp DelayFrames -Trade_ShowClearedWindow: ; 418dd (10:58dd) +Trade_ShowClearedWindow: ; clears the window and covers the BG entirely with the window ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a @@ -759,7 +759,7 @@ Trade_ShowClearedWindow: ; 418dd (10:58dd) ld [hSCX], a ret -Trade_SlideTextBoxOffScreen: ; 418f4 (10:58f4) +Trade_SlideTextBoxOffScreen: ; Slides the window right until it's off screen. The window usually just has ; a text box at the bottom when this is called. However, when this is called ; after Trade_ShowEnemyMon in the external clock sequence, there is a mon pic @@ -781,18 +781,18 @@ Trade_SlideTextBoxOffScreen: ; 418f4 (10:58f4) ld [rWX], a ret -PrintTradeWentToText: ; 41913 (10:5913) +PrintTradeWentToText: ld hl, TradeWentToText call PrintText ld c, 200 call DelayFrames jp Trade_SlideTextBoxOffScreen -TradeWentToText: ; 41921 (10:5921) +TradeWentToText: TX_FAR _TradeWentToText db "@" -PrintTradeForSendsText: ; 41926 (10:5926) +PrintTradeForSendsText: ld hl, TradeForText call PrintText call Trade_Delay80 @@ -800,15 +800,15 @@ PrintTradeForSendsText: ; 41926 (10:5926) call PrintText jp Trade_Delay80 -TradeForText: ; 41938 (10:5938) +TradeForText: TX_FAR _TradeForText db "@" -TradeSendsText: ; 4193d (10:593d) +TradeSendsText: TX_FAR _TradeSendsText db "@" -PrintTradeFarewellText: ; 41942 (10:5942) +PrintTradeFarewellText: ld hl, TradeWavesFarewellText call PrintText call Trade_Delay80 @@ -817,24 +817,24 @@ PrintTradeFarewellText: ; 41942 (10:5942) call Trade_Delay80 jp Trade_SlideTextBoxOffScreen -TradeWavesFarewellText: ; 41957 (10:5957) +TradeWavesFarewellText: TX_FAR _TradeWavesFarewellText db "@" -TradeTransferredText: ; 4195c (10:595c) +TradeTransferredText: TX_FAR _TradeTransferredText db "@" -PrintTradeTakeCareText: ; 41961 (10:5961) +PrintTradeTakeCareText: ld hl, TradeTakeCareText call PrintText jp Trade_Delay80 -TradeTakeCareText: ; 4196a (10:596a) +TradeTakeCareText: TX_FAR _TradeTakeCareText db "@" -PrintTradeWillTradeText: ; 4196f (10:596f) +PrintTradeWillTradeText: ld hl, TradeWillTradeText call PrintText call Trade_Delay80 @@ -842,15 +842,15 @@ PrintTradeWillTradeText: ; 4196f (10:596f) call PrintText jp Trade_Delay80 -TradeWillTradeText: ; 41981 (10:5981) +TradeWillTradeText: TX_FAR _TradeWillTradeText db "@" -TradeforText: ; 41986 (10:5986) +TradeforText: TX_FAR _TradeforText db "@" -Trade_ShowAnimation: ; 4198b (10:598b) +Trade_ShowAnimation: ld [wAnimationID], a xor a ld [wAnimationType], a diff --git a/engine/trade2.asm b/engine/trade2.asm index a4996403..c47da36a 100755 --- a/engine/trade2.asm +++ b/engine/trade2.asm @@ -1,4 +1,4 @@ -Trade_PrintPlayerMonInfoText: ; 41be6 (10:5be6) +Trade_PrintPlayerMonInfoText: coord hl, 5, 0 ld de,Trade_MonInfoText call PlaceString @@ -20,7 +20,7 @@ Trade_PrintPlayerMonInfoText: ; 41be6 (10:5be6) lb bc, LEADING_ZEROES | 2, 5 jp PrintNumber -Trade_PrintEnemyMonInfoText: ; 41c24 (10:5c24) +Trade_PrintEnemyMonInfoText: coord hl, 5, 10 ld de,Trade_MonInfoText call PlaceString @@ -42,7 +42,7 @@ Trade_PrintEnemyMonInfoText: ; 41c24 (10:5c24) lb bc, LEADING_ZEROES | 2, 5 jp PrintNumber -Trade_MonInfoText: ; 41c62 (10:5c62) +Trade_MonInfoText: db "──",$74,$F2 db $4e ; next next "OT/" diff --git a/engine/unknown_ea3ea.asm b/engine/unknown_ea3ea.asm index 9962649d..ca5d8bff 100755 --- a/engine/unknown_ea3ea.asm +++ b/engine/unknown_ea3ea.asm @@ -1,4 +1,4 @@ -Func_ea3ea: ; ea3ea (3a:63ea) +Printer_GetMonStats: call GBPalWhiteOutWithDelay3 call ClearScreen call LoadHpBarAndStatusTilePatterns @@ -140,7 +140,7 @@ Func_ea3ea: ; ea3ea (3a:63ea) call LoadFlippedFrontSpriteByMonIndex ret -.GetNamePointer: ; ea511 (3a:6511) +.GetNamePointer: ld bc, NAME_LENGTH ld a, [wWhichPokemon] call AddNTimes @@ -148,7 +148,7 @@ Func_ea3ea: ; ea3ea (3a:63ea) ld d, h ret -.PlaceMoveName: ; ea51d (3a:651d) +.PlaceMoveName: and a jr z, .no_move ld [wPokeBallAnimData], a @@ -177,18 +177,18 @@ Func_ea3ea: ; ea3ea (3a:63ea) next "SPECIAL@" ; ea554 -.Blank: ; ea554 (3a:6554) +.Blank: db "--------------@" -GFX_ea563: ; ea563 (3a:6563) +GFX_ea563: INCBIN "gfx/stats_screen_hp.1bpp" -GFX_ea563End: ; ea56b (3a:656b) +GFX_ea563End: GFX_ea56b: INCBIN "gfx/stats_screen_lv.1bpp" -GFX_ea56bEnd: ; ea573 (3a:6573) +GFX_ea56bEnd: -Func_ea573: ; ea573 (3a:6573) +PrinterDebug_LoadGFX: ld hl, vChars1 + $7e0 ld de, GFX_ea597 lb bc, BANK(GFX_ea597), (GFX_ea597End - GFX_ea597) / 16 @@ -211,34 +211,34 @@ Func_ea573: ; ea573 (3a:6573) jr nz, .loop ret -GFX_ea597: ; ea597 (3a:6597) +GFX_ea597: INCBIN "gfx/zero_one_ea597.2bpp" GFX_ea597End: -Func_ea5b7: ; ea5b7 (3a:65b7) +PrinterDebug_ConvertStatusFlagsToTiles: ld hl, wOAMBuffer + 32 * 4 + 2 ld de, 4 ld a, [wPrinterStatusFlags] ld c, 8 -.asm_ea5c2 +.loop sla a - jr c, .asm_ea5ca + jr c, .place_1 ld [hl], $fe - jr .asm_ea5cc + jr .okay -.asm_ea5ca +.place_1 ld [hl], $ff -.asm_ea5cc +.okay add hl, de dec c - jr nz, .asm_ea5c2 + jr nz, .loop ret -Func_ea5d1: ; ea5d1 (3a:65d1) +PrinterDebug_DoFunction: ld a, [wPrinterSendState] ld e, a ld d, 0 - ld hl, Jumptable_ea5e0 + ld hl, .Jumptable add hl, de add hl, de ld a, [hli] @@ -246,7 +246,7 @@ Func_ea5d1: ; ea5d1 (3a:65d1) ld l, a jp [hl] -Jumptable_ea5e0: +.Jumptable: dw Func_ea623 dw Func_ea6d2 dw Func_ea6af @@ -267,34 +267,33 @@ Jumptable_ea5e0: dw Func_ea72f dw Func_ea732 - -Func_ea606: ; ea606 (3a:6606) +Func_ea606: ld hl, wPrinterSendState inc [hl] ret -Func_ea60b: ; ea60b (3a:660b) +Func_ea60b: ld hl, wPrinterSendState dec [hl] ret -Func_ea610: ; ea610 (3a:6610) +Func_ea610: xor a ld [wPrinterStatusFlags], a ld hl, wPrinterSendState set 7, [hl] ret -Func_ea61a: ; ea61a (3a:661a) +Func_ea61a: call Func_ea606 ret -Func_ea61e: ; ea61e (3a:661e) +Func_ea61e: xor a ld [wPrinterSendState], a ret -Func_ea623: ; ea623 (3a:6623) +Func_ea623: call Func_ea784 ld hl, Data_ea9de call Func_ea76b @@ -309,7 +308,7 @@ Func_ea623: ; ea623 (3a:6623) ld [wPrinterStatusIndicator], a ret -Func_ea645: ; ea645 (3a:6645) +Func_ea645: call Func_ea784 ld hl, wPrinterRowIndex ld a, [hl] @@ -317,7 +316,7 @@ Func_ea645: ; ea645 (3a:6645) jr z, Func_ea671 ld hl, Data_ea9ea call Func_ea76b - call Func_ea7e9 + call PrinterDebug_PrepOAMForPrinting ld a, $80 ld [wPrinterDataSize], a ld a, $2 @@ -329,7 +328,7 @@ Func_ea645: ; ea645 (3a:6645) ld [wPrinterStatusIndicator], a ret -Func_ea671: ; ea671 (3a:6671) +Func_ea671: ld a, $6 ld [wPrinterSendState], a ld hl, Data_ea9f0 @@ -341,7 +340,7 @@ Func_ea671: ; ea671 (3a:6671) call Func_ea74c ret -Func_ea68a: ; ea68a (3a:668a) +Func_ea68a: call Func_ea784 ld hl, Data_ea9e4 call Func_ea76b @@ -357,7 +356,7 @@ Func_ea68a: ; ea68a (3a:668a) ld [wPrinterStatusIndicator], a ret -Func_ea6af: ; ea6af (3a:66af) +Func_ea6af: ld hl, wPrinterSerialFrameDelay inc [hl] ld a, [hl] @@ -368,7 +367,7 @@ Func_ea6af: ; ea6af (3a:66af) call Func_ea606 ret -Func_ea6bd: ; ea6bd (3a:66bd) +Func_ea6bd: ld hl, wPrinterSerialFrameDelay inc [hl] ld a, [hl] @@ -382,7 +381,7 @@ Func_ea6bd: ; ea6bd (3a:66bd) call Func_ea60b ret -Func_ea6d2: ; ea6d2 (3a:66d2) +Func_ea6d2: call Func_ea742 ret c ld a, [wPrinterHandshake] @@ -408,7 +407,7 @@ Func_ea6d2: ; ea6d2 (3a:66d2) ld [wPrinterSendState], a ret -Func_ea701: ; ea701 (3a:6701) +Func_ea701: call Func_ea742 ret c ld a, [wPrinterStatusFlags] @@ -429,7 +428,7 @@ Func_ea701: ; ea701 (3a:6701) ld [wPrinterSendState], a ret -Func_ea721: ; ea721 (3a:6721) +Func_ea721: call Func_ea742 ret c ld a, [wPrinterStatusFlags] @@ -438,9 +437,9 @@ Func_ea721: ; ea721 (3a:6721) call Func_ea606 ret -Func_ea72f: ; ea72f (3a:672f) +Func_ea72f: call Func_ea606 -Func_ea732: ; ea732 (3a:6732) +Func_ea732: ld a, [wPrinterOpcode] and a ret nz @@ -451,7 +450,7 @@ Func_ea732: ; ea732 (3a:6732) ld [wPrinterSendState], a ret -Func_ea742: ; ea742 (3a:6742) +Func_ea742: ld a, [wPrinterOpcode] and a jr nz, .asm_ea74a @@ -462,7 +461,7 @@ Func_ea742: ; ea742 (3a:6742) scf ret -Func_ea74c: ; ea74c (3a:674c) +Func_ea74c: .asm_ea74c ld a, [wPrinterOpcode] and a @@ -480,7 +479,7 @@ Func_ea74c: ; ea74c (3a:674c) ld [rSC], a ret -Func_ea76b: ; ea76b (3a:676b) +Func_ea76b: ld a, [hli] ld [wPrinterDataHeader], a ld a, [hli] @@ -495,7 +494,7 @@ Func_ea76b: ; ea76b (3a:676b) ld [wPrinterDataHeader + 5], a ret -Func_ea784: ; ea784 (3a:6784) +Func_ea784: xor a ld hl, wPrinterDataHeader ld [hli], a @@ -508,12 +507,12 @@ Func_ea784: ; ea784 (3a:6784) xor a ld [wPrinterDataSize], a ld [wPrinterDataSize + 1], a - ld hl, wPrinterSendDataSource + ld hl, wPrinterSendDataSource1 ld bc, $280 call FillMemory ret -Func_ea7a2: ; ea7a2 (3a:67a2) +Func_ea7a2: ld hl, $0 ld bc, $4 ld de, wPrinterDataHeader @@ -522,7 +521,7 @@ Func_ea7a2: ; ea7a2 (3a:67a2) ld c, a ld a, [wPrinterDataSize + 1] ld b, a - ld de, wPrinterSendDataSource + ld de, wPrinterSendDataSource1 call Func_ea7c5 ld a, l ld [wPrinterDataHeader + 4], a @@ -530,7 +529,7 @@ Func_ea7a2: ; ea7a2 (3a:67a2) ld [wPrinterDataHeader + 5], a ret -Func_ea7c5: ; ea7c5 (3a:67c5) +Func_ea7c5: .asm_ea7c5 ld a, [de] inc de @@ -545,9 +544,9 @@ Func_ea7c5: ; ea7c5 (3a:67c5) jr nz, .asm_ea7c5 ret -Func_ea7d2: ; ea7d2 (3a:67d2) +Func_ea7d2: ld a, $1 - ld [wPrinterSendDataSource], a + ld [wPrinterSendDataSource1], a ld a, [wcae2] ld [wPrinterStatusReceived], a ld a, $e4 @@ -556,7 +555,7 @@ Func_ea7d2: ; ea7d2 (3a:67d2) ld [wc6f3], a ret -Func_ea7e9: ; ea7e9 (3a:67e9) +PrinterDebug_PrepOAMForPrinting: ld a, [wPrinterRowIndex] ld b, a ld a, [wPrinterQueueLength] @@ -573,7 +572,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) .start_working ld e, l ld d, h - ld hl, wPrinterSendDataSource + ld hl, wPrinterSendDataSource1 ld c, $28 .prep_loop ld a, [de] @@ -598,7 +597,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) or $80 .got_vram_address ld d, a - lb bc, BANK(Func_ea7e9), $1 + lb bc, BANK(PrinterDebug_PrepOAMForPrinting), $1 call CopyVideoData pop hl ld de, $10 @@ -610,7 +609,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) call .UnnecessaryCall ret -.UnnecessaryCall: ; ea834 (3a:6834) +.UnnecessaryCall: ld hl, wcbdc ld bc, $20 xor a @@ -637,7 +636,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) jr nz, .master_loop ret -.AreWePrintingThisSegment: ; ea860 (3a:6860) +.AreWePrintingThisSegment: ld a, [wPrinterRowIndex] ld b, a ld a, [wPrinterQueueLength] @@ -671,7 +670,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) and a ret -.GetVRAMAddress: ; ea886 (3a:6886) +.GetVRAMAddress: push hl inc hl inc hl @@ -690,7 +689,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) pop hl ret -.GetOAMFlags: ; ea8a1 (3a:68a1) +.GetOAMFlags: push hl inc hl inc hl @@ -700,7 +699,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) pop hl ret -.DoBitOperation: ; ea8ab (3a:68ab) +.DoBitOperation: and $60 swap a ld e, a @@ -712,29 +711,29 @@ Func_ea7e9: ; ea7e9 (3a:67e9) ld l, a jp [hl] -.Jumptable: ; ea8ba (3a:68ba) +.Jumptable: dw .nop - dw .one - dw .two + dw .xflip + dw .yflip dw .both -.nop: ; ea8c2 (3a:68c2) +.nop: ret -.one: ; ea8c3 (3a:68c3) - call .Invert +.xflip: + call .XFlip ret -.two: ; ea8c7 (3a:68c7) - call .Swap +.yflip: + call .YFlip ret -.both: ; ea8cb (3a:68cb) - call .Invert - call .Swap +.both: + call .XFlip + call .YFlip ret -.Invert: ; ea8d2 (3a:68d2) +.XFlip: ld hl, wcbdc ld c, 16 .byte_loop @@ -751,7 +750,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) jr nz, .byte_loop ret -.Swap: ; ea8e8 (3a:68e8) +.YFlip: ld hl, wcbdc ld de, wcbea ld c, $4 @@ -774,7 +773,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) jr nz, .swap_loop ret -.ApplyObjectPalettes: ; ea902 (3a:6902) +.ApplyObjectPalettes: push hl ld hl, wcbdc ld de, wcbec @@ -814,12 +813,12 @@ Func_ea7e9: ; ea7e9 (3a:67e9) pop hl ret -.ExpandPalettesToBC: ; ea936 (3a:6936) +.ExpandPalettesToBC: call .GetPaletteFunction call .ApplyPaletteFunction ret -.GetPaletteFunction: ; ea93d (3a:693d) +.GetPaletteFunction: ld e, a ld d, 0 ld hl, .PalJumptable @@ -830,38 +829,38 @@ Func_ea7e9: ; ea7e9 (3a:67e9) ld l, a jp [hl] -.PalJumptable: ; ea949 (3a:6949) +.PalJumptable: dw .Pal0 dw .Pal1 dw .Pal2 dw .Pal3 -.Pal0: ; ea951 (3a:6951) +.Pal0: ld a, [rOBP0] and $3 ret -.Pal2: ; ea956 (3a:6956) +.Pal2: ld a, [rOBP0] and $c srl a srl a ret -.Pal1: ; ea95f (3a:695f) +.Pal1: ld a, [rOBP0] and $30 swap a ret -.Pal3: ; ea966 (3a:6966) +.Pal3: ld a, [rOBP0] and $c0 rlca rlca ret -.ApplyPaletteFunction: ; ea96d (3a:696d) +.ApplyPaletteFunction: ld e, a ld d, 0 ld hl, .PalFunJumptable @@ -872,47 +871,47 @@ Func_ea7e9: ; ea7e9 (3a:67e9) ld l, a jp [hl] -.PalFunJumptable: ; ea979 (3a:6979) +.PalFunJumptable: dw .zero_zero - dw .one_zero - dw .zero_one - dw .one_one + dw .xflip_zero + dw .zero_xflip + dw .xflip_xflip -.zero_zero: ; ea981 (3a:6981) +.zero_zero: sla b sla c ret -.one_zero: ; ea986 (3a:6986) +.xflip_zero: scf rl b sla c ret -.zero_one: ; ea98c (3a:698c) +.zero_xflip: sla b scf rl c ret -.one_one: ; ea992 (3a:6992) +.xflip_xflip: scf rl b scf rl c ret -.PlaceObject: ; ea999 (3a:6999) +.PlaceObject: push hl ld a, [hli] ld c, [hl] and $8 - jr nz, .use_wc830 - ld hl, wPrinterSendDataSource + jr nz, .use_source_2 + ld hl, wPrinterSendDataSource1 jr .got_data_source -.use_wc830 - ld hl, wc830 +.use_source_2 + ld hl, wPrinterSendDataSource2 .got_data_source ld b, $0 ld a, c @@ -945,7 +944,7 @@ Func_ea7e9: ; ea7e9 (3a:67e9) pop hl ret -.GetBitMask: ; ea9d0 (3a:69d0) +.GetBitMask: push hl push de ld de, -$10 diff --git a/engine/vermilion_gym_trash_cans.asm b/engine/vermilion_gym_trash_cans.asm new file mode 100755 index 00000000..49dee50c --- /dev/null +++ b/engine/vermilion_gym_trash_cans.asm @@ -0,0 +1,108 @@ +TrashCanRandom: + ld d, 0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + call JumpToAddress + ld e, a + ld d, 0 + ret + +.Jumptable: + dw .zero + dw .one + dw .two + dw .three + dw .four + +.zero +.one + ld a, 0 + ret + +.two + call Random + and $1 + ret + +.three ; should return to a, instead returns to b + call Random + swap a + cp 1 * $ff / 3 + ld b, 0 + ret c + cp 2 * $ff / 3 + ld b, 1 + ret c + ld b, 2 + ret + +.four + call Random + and $3 + ret + +Yellow_SampleSecondTrashCan: + ld hl, GymTrashCans3c + ld a, [wGymTrashCanIndex] + ld c, a + ld b, 0 + ld a, 9 + call AddNTimes + call AddNTimes ; ???? + ld a, [hli] + ld [hGymTrashCanRandNumMask], a + ld e, a + push hl + call TrashCanRandom + pop hl + add hl, de + add hl, de + ld a, [hli] + ld [wSecondLockTrashCanIndex], a + ld a, [hl] + ld [wSecondLockTrashCanIndex + 1], a + ret + +GymTrashCans3c: +; First byte: number of trashcan entries +; Following four byte pairs: indices for the second trash can. +; BUG: Rows that have 3 trashcan entries are sampled incorrectly. +; The sampling occurs by taking a random number and seeing which +; third of the range 0-255 the number falls in. However, it returns +; that value to the wrong register, so the result is never used. +; Instead of using an offset in [0,1,2], the offset is instead +; in the full range 0-255. This results in truly random behavior. + db 4 + db 1,3, 3,1, 1,-1, 3,-1 + db 3 + db 0,2, 2,4, 4,0, -1,-1 + db 4 + db 1,5, 5,1, 1,-1, 5,-1 + db 3 + db 0,4, 4,6, 6,0, -1,-1 + db 4 + db 1,3, 3,1, 5,5, 7,7 + db 3 + db 2,4, 4,8, 8,2, -1,-1 + db 3 + db 3,7, 7,9, 9,3, -1,-1 + db 4 + db 4,8, 6,10, 8,4, 10,6 + db 3 + db 5,7, 7,11, 11,5, -1,-1 + db 3 + db 6,10, 10,12, 12,6, -1,-1 + db 4 + db 7,9, 9,7, 11,13, 13,11 + db 3 + db 8,10, 10,14, 14,8, -1,-1 + db 4 + db 9,13, 13,9, 9,-1, 13,-1 + db 3 + db 10,12, 12,14, 14,10, -1,-1 + db 4 + db 11,13, 13,11, 11,-1, 13,-1 diff --git a/engine/yellow_intro.asm b/engine/yellow_intro.asm index 5aad4d33..3adb72b5 100755 --- a/engine/yellow_intro.asm +++ b/engine/yellow_intro.asm @@ -323,7 +323,7 @@ YellowIntroScene6: call YellowIntro_BlankPalsDelay2AndDisableLCD ld c, $5 call UpdateMusicCTimes - ld a, $42 + ld a, rSCY - $ff00 ld [hLCDCPointer], a call YellowIntro_Copy8BitSineWave ld hl, vBGMap0 @@ -359,8 +359,8 @@ YellowIntroScene7: ld hl, hSCX inc [hl] inc [hl] - ld hl, wYellowIntroSurfingPikaSineWaveBuffer - ld de, wYellowIntroSurfingPikaSineWaveBuffer + 1 + ld hl, wLYOverridesBuffer + ld de, wLYOverridesBuffer + 1 ld a, [hl] push af ld c, $ff @@ -775,8 +775,8 @@ Func_f9e9a: ret YellowIntro_Copy8BitSineWave: - ; Copy this sine wave into wYellowIntroSurfingPikaSineWaveBuffer 8 times (end just before wc900) - ld de, wYellowIntroSurfingPikaSineWaveBuffer + ; Copy this sine wave into wLYOverridesBuffer 8 times (end just before wc900) + ld de, wLYOverridesBuffer ld a, $8 .loop push af @@ -797,13 +797,13 @@ YellowIntro_Copy8BitSineWave: .SineWaveEnd: Request7TileTransferFromC810ToC710: - ld a, wc810 % $100 + ld a, $10 ld [H_VBCOPYSRC], a - ld a, wc810 / $100 + ld a, wLYOverridesBuffer / $100 ld [H_VBCOPYSRC + 1], a - ld a, wc710 % $100 + ld a, $10 ld [H_VBCOPYDEST], a - ld a, wc710 / $100 + ld a, wLYOverrides / $100 ld [H_VBCOPYDEST + 1], a ld a, $7 ld [H_VBCOPYSIZE], a |