diff options
Diffstat (limited to 'engine')
85 files changed, 1085 insertions, 936 deletions
diff --git a/engine/battle/ai/items.asm b/engine/battle/ai/items.asm index b375b54c..16e9ef20 100644 --- a/engine/battle/ai/items.asm +++ b/engine/battle/ai/items.asm @@ -25,7 +25,7 @@ AI_SwitchOrTryItem: ld hl, TrainerClassAttributes + TRNATTR_AI_ITEM_SWITCH ld bc, NUM_TRAINER_ATTRIBUTES call AddNTimes -.ok + bit SWITCH_OFTEN_F, [hl] jp nz, SwitchOften bit SWITCH_RARELY_F, [hl] @@ -141,7 +141,7 @@ SwitchSometimes: ld [wEnemySwitchMonIndex], a jp AI_TrySwitch -CheckSubstatusCantRun: +CheckSubstatusCantRun: ; unreferenced ld a, [wEnemySubStatus5] bit SUBSTATUS_CANT_RUN, a ret @@ -204,7 +204,7 @@ AI_TryItem: inc hl jr c, .loop -.used_item +; used item xor a ld [de], a inc a @@ -247,7 +247,7 @@ AI_TryItem: cp e jr nc, .yes -.no +.no ; unreferenced and a ret diff --git a/engine/battle/battle_transition.asm b/engine/battle/battle_transition.asm index 105248f0..f5b4effe 100644 --- a/engine/battle/battle_transition.asm +++ b/engine/battle/battle_transition.asm @@ -208,7 +208,7 @@ StartTrainerBattle_NextScene: StartTrainerBattle_SetUpBGMap: call StartTrainerBattle_NextScene xor a - ld [wce64], a + ld [wBattleTransitionCounter], a ldh [hBGMapMode], a ret @@ -222,7 +222,7 @@ StartTrainerBattle_Flash: ld a, [wTimeOfDayPalset] cp DARKNESS_PALSET jr z, .done - ld hl, wce64 + ld hl, wBattleTransitionCounter ld a, [hl] inc [hl] srl a @@ -240,7 +240,7 @@ StartTrainerBattle_Flash: .done xor a - ld [wce64], a + ld [wBattleTransitionCounter], a scf ret @@ -271,12 +271,12 @@ StartTrainerBattle_SetUpForWavyOutro: ld a, $90 ldh [hLYOverrideEnd], a xor a - ld [wce64], a - ld [wce65], a + ld [wBattleTransitionCounter], a + ld [wBattleTransitionSineWaveOffset], a ret StartTrainerBattle_SineWave: - ld a, [wce64] + ld a, [wBattleTransitionCounter] cp $60 jr nc, .end call .DoSineWave @@ -288,10 +288,10 @@ StartTrainerBattle_SineWave: ret .DoSineWave: - ld hl, wce65 + ld hl, wBattleTransitionSineWaveOffset ld a, [hl] inc [hl] - ld hl, wce64 + ld hl, wBattleTransitionCounter ld d, [hl] add [hl] ld [hl], a @@ -319,13 +319,13 @@ StartTrainerBattle_SetUpForSpinOutro: farcall RespawnPlayerAndOpponent call StartTrainerBattle_NextScene xor a - ld [wce64], a + ld [wBattleTransitionCounter], a ret StartTrainerBattle_SpinToBlack: xor a ldh [hBGMapMode], a - ld a, [wce64] + ld a, [wBattleTransitionCounter] ld e, a ld d, 0 ld hl, .spin_quadrants @@ -335,13 +335,13 @@ endr ld a, [hli] cp -1 jr z, .end - ld [wce65], a + ld [wBattleTransitionSpinQuadrant], a call .load ld a, 1 ldh [hBGMapMode], a call DelayFrame call DelayFrame - ld hl, wce64 + ld hl, wBattleTransitionCounter inc [hl] ret @@ -396,7 +396,7 @@ ENDM spin_quadrant LOWER_LEFT, .wedge1, 1, 11 db -1 -.load +.load: ld a, [hli] ld e, a ld a, [hli] @@ -411,7 +411,7 @@ ENDM inc de .loop1 ld [hl], BATTLETRANSITION_BLACK - ld a, [wce65] + ld a, [wBattleTransitionSpinQuadrant] bit RIGHT_QUADRANT_F, a jr z, .leftside inc hl @@ -422,7 +422,7 @@ ENDM dec c jr nz, .loop1 pop hl - ld a, [wce65] + ld a, [wBattleTransitionSpinQuadrant] bit LOWER_QUADRANT_F, a ld bc, SCREEN_WIDTH jr z, .upper @@ -437,7 +437,7 @@ ENDM jr z, .loop ld c, a .loop2 - ld a, [wce65] + ld a, [wBattleTransitionSpinQuadrant] bit RIGHT_QUADRANT_F, a jr z, .leftside2 dec hl @@ -459,13 +459,13 @@ StartTrainerBattle_SetUpForRandomScatterOutro: farcall RespawnPlayerAndOpponent call StartTrainerBattle_NextScene ld a, $10 - ld [wce64], a + ld [wBattleTransitionCounter], a ld a, 1 ldh [hBGMapMode], a ret StartTrainerBattle_SpeckleToBlack: - ld hl, wce64 + ld hl, wBattleTransitionCounter ld a, [hl] and a jr z, .done diff --git a/engine/battle/core.asm b/engine/battle/core.asm index 4a580aca..0587c750 100644 --- a/engine/battle/core.asm +++ b/engine/battle/core.asm @@ -1644,7 +1644,7 @@ HandleWeather: cp USING_EXTERNAL_CLOCK jr z, .enemy_first -.player_first +; player first call SetPlayerTurn call .SandstormDamage call SetEnemyTurn @@ -2609,7 +2609,7 @@ AskUseNextPokemon: ForcePlayerMonChoice: call EmptyBattleTextbox call LoadStandardMenuHeader - call SetUpBattlePartyMenu_NoLoop + call SetUpBattlePartyMenu call ForcePickPartyMonInBattle ld a, [wLinkMode] cp LINK_COLOSSEUM @@ -2681,9 +2681,8 @@ PlayerPartyMonEntrance: call SetPlayerTurn jp SpikesDamage -SetUpBattlePartyMenu_NoLoop: +SetUpBattlePartyMenu: call ClearBGPalettes -SetUpBattlePartyMenu: ; switch to fullscreen menu? farcall LoadPartyMenuGFX farcall InitPartyMenuWithCancel farcall InitPartyMenuGFX @@ -2818,10 +2817,11 @@ PlayerMonFaintedAnimation: jp MonFaintedAnimation MonFaintedAnimation: - ld a, [wd8ba] + ld a, [wJoypadDisable] push af - set 6, a - ld [wd8ba], a + set JOYPAD_DISABLE_MON_FAINT_F, a + ld [wJoypadDisable], a + ld b, 7 .OuterLoop: @@ -2864,7 +2864,7 @@ MonFaintedAnimation: jr nz, .OuterLoop pop af - ld [wd8ba], a + ld [wJoypadDisable], a ret .Spaces: @@ -3296,7 +3296,7 @@ OfferSwitch: ld a, [wMenuCursorY] dec a jr nz, .said_no - call SetUpBattlePartyMenu_NoLoop + call SetUpBattlePartyMenu call PickSwitchMonInBattle jr c, .canceled_switch ld a, [wCurBattleMon] @@ -4404,7 +4404,7 @@ CheckDanger: PrintPlayerHUD: ld de, wBattleMonNick hlcoord 10, 7 - call ret_3df99 + call Battle_DummyFunction call PlaceString push bc @@ -4490,7 +4490,7 @@ DrawEnemyHUD: call GetBaseData ld de, wEnemyMonNick hlcoord 1, 0 - call ret_3df99 + call Battle_DummyFunction call PlaceString ld h, b ld l, c @@ -4619,7 +4619,8 @@ UpdateHPPal: ret z jp FinishBattleAnim -ret_3df99: +Battle_DummyFunction: +; called before placing either battler's nickname in the HUD ret BattleMenu: @@ -7167,13 +7168,13 @@ AnimateExpBar: jp z, .finish ldh a, [hProduct + 3] - ld [wceef], a + ld [wExperienceGained + 2], a push af ldh a, [hProduct + 2] - ld [wceee], a + ld [wExperienceGained + 1], a push af xor a - ld [wceed], a + ld [wExperienceGained], a xor a ; PARTYMON ld [wMonType], a predef CopyMonToTempMon @@ -7185,10 +7186,10 @@ AnimateExpBar: call CalcExpBar push bc ld hl, wTempMonExp + 2 - ld a, [wceef] + ld a, [wExperienceGained + 2] add [hl] ld [hld], a - ld a, [wceee] + ld a, [wExperienceGained + 1] adc [hl] ld [hld], a jr nc, .NoOverflow @@ -7487,7 +7488,8 @@ HandleSafariAngerEatingStatus: ; unreferenced jr .finish .angry - dec hl ; wSafariMonAngerCount + dec hl + assert wSafariMonEating - 1 == wSafariMonAngerCount ld a, [hl] and a ret z @@ -8005,7 +8007,7 @@ CheckPayDay: call StdBattleTextbox ret -PlayerPickedUpPayDayMoney: +PlayerPickedUpPayDayMoney: ; unreferenced text_far _PlayerPickedUpPayDayMoney text_end @@ -8180,7 +8182,6 @@ ReadAndPrintLinkBattleRecord: lb bc, 2, 4 call PrintNum -.quit ret .PrintZerosIfNoSaveFileExists: @@ -8392,7 +8393,7 @@ AddLastLinkBattleToLinkRecord: .FindOpponentAndAppendRecord: ld b, NUM_LINK_BATTLE_RECORDS ld hl, sLinkBattleRecord1End - 1 - ld de, wceed + ld de, wLinkBattleRecordBuffer .loop3 push bc push de @@ -8421,16 +8422,16 @@ AddLastLinkBattleToLinkRecord: add b add b ld e, a - ld d, $0 - ld hl, wceed + ld d, 0 + ld hl, wLinkBattleRecordBuffer add hl, de push hl ld a, c add c add c ld e, a - ld d, $0 - ld hl, wceed + ld d, 0 + ld hl, wLinkBattleRecordBuffer add hl, de ld d, h ld e, l @@ -8462,7 +8463,7 @@ AddLastLinkBattleToLinkRecord: ld hl, sLinkBattleRecord call AddNTimes push hl - ld de, wceed + ld de, wLinkBattleRecordBuffer ld bc, LINK_BATTLE_RECORD_LENGTH call CopyBytes pop hl @@ -8476,7 +8477,7 @@ AddLastLinkBattleToLinkRecord: push hl ld bc, LINK_BATTLE_RECORD_LENGTH call CopyBytes - ld hl, wceed + ld hl, wLinkBattleRecordBuffer ld bc, LINK_BATTLE_RECORD_LENGTH pop de call CopyBytes @@ -8556,14 +8557,15 @@ InitBattleDisplay: call OpenSRAM ld hl, sDecompressScratch - ld bc, sScratchAttrmap - sDecompressScratch + ld bc, BG_MAP_WIDTH * BG_MAP_HEIGHT ld a, " " call ByteFill ld de, sDecompressScratch hlbgcoord 0, 0 - lb bc, BANK(.BlankBGMap), $40 + lb bc, BANK(@), (BG_MAP_WIDTH * BG_MAP_HEIGHT) / LEN_2BPP_TILE call Request2bpp + call CloseSRAM ret diff --git a/engine/battle/effect_commands.asm b/engine/battle/effect_commands.asm index a5ae950f..12f7a101 100644 --- a/engine/battle/effect_commands.asm +++ b/engine/battle/effect_commands.asm @@ -145,7 +145,7 @@ BattleCommand_CheckTurn: and a jp nz, CheckEnemyTurn -CheckPlayerTurn: +; check player turn ld hl, wPlayerSubStatus4 bit SUBSTATUS_RECHARGE, [hl] jr z, .no_recharge @@ -2592,7 +2592,7 @@ PlayerAttackDamage: cp SPECIAL jr nc, .special -.physical +; physical ld hl, wEnemyMonDefense ld a, [hli] ld b, a @@ -2660,7 +2660,6 @@ PlayerAttackDamage: ret TruncateHL_BC: -.loop ; Truncate 16-bit values hl and bc to 8-bit values b and c respectively. ; b = hl, c = bc @@ -2821,9 +2820,9 @@ EnemyAttackDamage: ld a, [hl] cp SPECIAL - jr nc, .Special + jr nc, .special -.physical +; physical ld hl, wBattleMonDefense ld a, [hli] ld b, a @@ -2847,7 +2846,7 @@ EnemyAttackDamage: ld hl, wEnemyAttack jr .thickclub -.Special: +.special ld hl, wBattleMonSpclDef ld a, [hli] ld b, a @@ -5669,7 +5668,7 @@ BattleCommand_Charge: text_far _BattleDugText text_end -BattleCommand3c: +BattleCommand_Unused3C: ; unused ret @@ -6075,7 +6074,7 @@ INCLUDE "engine/battle/move_effects/conversion.asm" BattleCommand_ResetStats: ; resetstats - ld a, 7 ; neutral + ld a, BASE_STAT_LEVEL ld hl, wPlayerStatLevels call .Fill ld hl, wEnemyStatLevels @@ -6098,7 +6097,7 @@ BattleCommand_ResetStats: jp StdBattleTextbox .Fill: - ld b, wPlayerStatLevelsEnd - wPlayerStatLevels + ld b, NUM_LEVEL_STATS .next ld [hli], a dec b @@ -6440,7 +6439,7 @@ INCLUDE "engine/battle/move_effects/sandstorm.asm" INCLUDE "engine/battle/move_effects/rollout.asm" -BattleCommand5d: +BattleCommand_Unused5D: ; unused ret diff --git a/engine/battle/menu.asm b/engine/battle/menu.asm index 6a942f6c..e9a7e593 100644 --- a/engine/battle/menu.asm +++ b/engine/battle/menu.asm @@ -3,8 +3,7 @@ LoadBattleMenu: call LoadMenuHeader jr CommonBattleMenu -SafariBattleMenu: -; untranslated +SafariBattleMenu: ; unreferenced ld hl, SafariBattleMenuHeader call LoadMenuHeader jr CommonBattleMenu @@ -12,7 +11,8 @@ SafariBattleMenu: ContestBattleMenu: ld hl, ContestBattleMenuHeader call LoadMenuHeader -; fallthrough + ; fallthrough + CommonBattleMenu: ld a, [wBattleMenuCursorBuffer] ld [wMenuCursorBuffer], a diff --git a/engine/battle/move_effects/baton_pass.asm b/engine/battle/move_effects/baton_pass.asm index bf9e3235..236acc82 100644 --- a/engine/battle/move_effects/baton_pass.asm +++ b/engine/battle/move_effects/baton_pass.asm @@ -17,7 +17,7 @@ BattleCommand_BatonPass: ; Transition into switchmon menu call LoadStandardMenuHeader - farcall SetUpBattlePartyMenu_NoLoop + farcall SetUpBattlePartyMenu farcall ForcePickSwitchMonInBattle diff --git a/engine/battle/move_effects/beat_up.asm b/engine/battle/move_effects/beat_up.asm index 8546c37d..32e0112c 100644 --- a/engine/battle/move_effects/beat_up.asm +++ b/engine/battle/move_effects/beat_up.asm @@ -14,7 +14,7 @@ BattleCommand_BeatUp: call DelayFrames xor a ld [wPlayerRolloutCount], a - ld [wceed], a + ld [wCurBeatUpPartyMon], a ld [wBeatUpHitAtLeastOnce], a jr .got_mon @@ -23,10 +23,10 @@ BattleCommand_BeatUp: ld b, a ld a, [wPartyCount] sub b - ld [wceed], a + ld [wCurBeatUpPartyMon], a .got_mon - ld a, [wceed] + ld a, [wCurBeatUpPartyMon] ld hl, wPartyMonNicknames call GetNick ld a, MON_HP @@ -34,7 +34,7 @@ BattleCommand_BeatUp: ld a, [hli] or [hl] jp z, .beatup_fail ; fainted - ld a, [wceed] + ld a, [wCurBeatUpPartyMon] ld c, a ld a, [wCurBattleMon] ; BUG: this can desynchronize link battles @@ -88,7 +88,7 @@ BattleCommand_BeatUp: xor a ld [wEnemyRolloutCount], a - ld [wceed], a + ld [wCurBeatUpPartyMon], a ld [wBeatUpHitAtLeastOnce], a jr .enemy_got_mon @@ -97,7 +97,7 @@ BattleCommand_BeatUp: ld b, a ld a, [wOTPartyCount] sub b - ld [wceed], a + ld [wCurBeatUpPartyMon], a .enemy_got_mon ld a, [wBattleMode] @@ -108,7 +108,7 @@ BattleCommand_BeatUp: and a jr nz, .linked - ld a, [wceed] + ld a, [wCurBeatUpPartyMon] ld c, a ld b, 0 ld hl, wOTPartySpecies @@ -119,7 +119,7 @@ BattleCommand_BeatUp: jr .got_enemy_nick .linked - ld a, [wceed] + ld a, [wCurBeatUpPartyMon] ld hl, wOTPartyMonNicknames ld bc, NAME_LENGTH call AddNTimes @@ -133,7 +133,7 @@ BattleCommand_BeatUp: or [hl] jp z, .beatup_fail - ld a, [wceed] + ld a, [wCurBeatUpPartyMon] ld b, a ld a, [wCurOTMon] cp b @@ -213,7 +213,7 @@ GetBeatupMonLocation: ld hl, wOTPartyMon1Species .got_species - ld a, [wceed] + ld a, [wCurBeatUpPartyMon] add hl, bc call GetPartyLocation pop bc diff --git a/engine/battle/move_effects/present.asm b/engine/battle/move_effects/present.asm index 33e172fb..0577e76b 100644 --- a/engine/battle/move_effects/present.asm +++ b/engine/battle/move_effects/present.asm @@ -67,7 +67,7 @@ BattleCommand_Present: add a jr nc, .do_animation call AnimateFailedMove - ld hl, CantReceiveGiftText + ld hl, PresentFailedText call StdBattleTextbox .do_animation jp EndMoveEffect diff --git a/engine/battle_anims/anim_commands.asm b/engine/battle_anims/anim_commands.asm index 7fb80d82..9bba60a3 100644 --- a/engine/battle_anims/anim_commands.asm +++ b/engine/battle_anims/anim_commands.asm @@ -218,7 +218,8 @@ BattleAnim_ClearOAM: ld c, NUM_SPRITE_OAM_STRUCTS .loop ld a, [hl] - and $ff ^ (PALETTE_MASK | VRAM_BANK_1) ; PAL_BATTLE_OB_ENEMY (0) + and $ff ^ (PALETTE_MASK | VRAM_BANK_1) ; zeros out the palette bits + assert PAL_BATTLE_OB_ENEMY == 0 ld [hli], a rept SPRITEOAMSTRUCT_LENGTH - 1 inc hl @@ -978,7 +979,7 @@ GetMinimizePic: and a jr z, .player - ld de, sScratch + $1a tiles + ld de, sScratch + (3 * 7 + 5) tiles call CopyMinimizePic ld hl, vTiles2 tile $00 ld de, sScratch @@ -987,7 +988,7 @@ GetMinimizePic: jr .done .player - ld de, sScratch + $160 + ld de, sScratch + (3 * 6 + 4) tiles call CopyMinimizePic ld hl, vTiles2 tile $31 ld de, sScratch diff --git a/engine/battle_anims/core.asm b/engine/battle_anims/core.asm index adba64e0..d756a447 100644 --- a/engine/battle_anims/core.asm +++ b/engine/battle_anims/core.asm @@ -263,14 +263,12 @@ InitBattleAnimBuffer: jr nz, .no_sub ld a, [wFXAnimID] cp KINESIS - jr z, .kinesis + jr z, .do_sub cp SOFTBOILED - jr z, .softboiled + jr z, .do_sub cp MILK_DRINK jr nz, .no_sub -.kinesis -.softboiled -.milk_drink +.do_sub pop af sub 1 * 8 jr .done diff --git a/engine/battle_anims/functions.asm b/engine/battle_anims/functions.asm index 95b3a101..2a72cf12 100644 --- a/engine/battle_anims/functions.asm +++ b/engine/battle_anims/functions.asm @@ -4293,14 +4293,14 @@ BattleAnim_Cosine_e: ld e, a ret -BattleAnim_AbsSinePrecise: +BattleAnim_AbsSinePrecise: ; unreferenced ld a, e call BattleAnim_Sine ld e, l ld d, h ret -BattleAnim_AbsCosinePrecise: +BattleAnim_AbsCosinePrecise: ; unreferenced ld a, e call BattleAnim_Cosine ld e, l diff --git a/engine/debug/color_picker.asm b/engine/debug/color_picker.asm index b5d196b1..2ebf4861 100644 --- a/engine/debug/color_picker.asm +++ b/engine/debug/color_picker.asm @@ -32,7 +32,7 @@ const DEBUGCOLORMAIN_INITTMHM ; 4 const DEBUGCOLORMAIN_TMHMJOYPAD ; 5 -DebugColorPicker: +DebugColorPicker: ; unreferenced ; A debug menu to test monster and trainer palettes at runtime. ldh a, [hCGB] and a @@ -913,13 +913,13 @@ DebugColor_FillBoxWithByte: ret DebugColor_PushSGBPals: - ld a, [wd8ba] + ld a, [wJoypadDisable] push af - set 7, a - ld [wd8ba], a + set JOYPAD_DISABLE_SGB_TRANSFER_F, a + ld [wJoypadDisable], a call _DebugColor_PushSGBPals pop af - ld [wd8ba], a + ld [wJoypadDisable], a ret _DebugColor_PushSGBPals: @@ -1053,7 +1053,7 @@ INCBIN "gfx/debug/up_arrow.2bpp" DebugColor_GFX: INCBIN "gfx/debug/color_test.2bpp" -TilesetColorPicker: +TilesetColorPicker: ; unreferenced ; A debug menu to test tileset palettes at runtime. ; dummied out ret @@ -1456,9 +1456,9 @@ DebugTileset_PlaceCursor: ; unreferenced inc c ret -; unused +.clearsprites: ; unreferenced call ClearSprites ret -; unused +.dummy: ; unreferenced ret diff --git a/engine/debug/debug_room.asm b/engine/debug/debug_room.asm index 12259ce9..19f7f9e0 100644 --- a/engine/debug/debug_room.asm +++ b/engine/debug/debug_room.asm @@ -1147,9 +1147,9 @@ DebugRoom_BoxStructStrings: .Move4: db "MOVE 4@" .ID0: db "ID[0]@" .ID1: db "ID[1]@" -.BaseExp0: db "BASE EXP[0]@" -.BaseExp1: db "BASE EXP[1]@" -.BaseExp2: db "BASE EXP[2]@" +.BaseExp0: db "BASE EXP[0]@" ; unreferenced +.BaseExp1: db "BASE EXP[1]@" ; unreferenced +.BaseExp2: db "BASE EXP[2]@" ; unreferenced .HPExp0: db "HP EXP[0]@" .HPExp1: db "HP EXP[1]@" .AttkExp0: db "ATTK EXP[0]@" diff --git a/engine/events/bug_contest/judging.asm b/engine/events/bug_contest/judging.asm index 4f55fd78..da48eb96 100644 --- a/engine/events/bug_contest/judging.asm +++ b/engine/events/bug_contest/judging.asm @@ -67,7 +67,8 @@ ContestJudging_ThirdPlaceScoreText: LoadContestantName: ; If a = 1, get your name. - dec a ; BUG_CONTEST_PLAYER + assert BUG_CONTEST_PLAYER == 1 + dec a jr z, .player ; Find the pointer for the trainer class of the Bug Catching Contestant whose ID is in a. ld c, a diff --git a/engine/events/daycare.asm b/engine/events/daycare.asm index 2edf2def..4648e9d2 100644 --- a/engine/events/daycare.asm +++ b/engine/events/daycare.asm @@ -160,7 +160,7 @@ DayCareAskDepositPokemon: scf ret -.DaycareDummyText: +.DaycareDummyText: ; unreferenced text_far _DaycareDummyText text_end diff --git a/engine/events/engine_flags.asm b/engine/events/engine_flags.asm index aebbacdc..13f9a9a8 100644 --- a/engine/events/engine_flags.asm +++ b/engine/events/engine_flags.asm @@ -57,7 +57,7 @@ EngineFlagAction:: jr z, .set ; b = 1 ; Return the given flag in c. -.check +; check ld a, [de] and c ld c, a diff --git a/engine/events/field_moves.asm b/engine/events/field_moves.asm index 39c92b2e..8085084f 100644 --- a/engine/events/field_moves.asm +++ b/engine/events/field_moves.asm @@ -421,7 +421,7 @@ FlyFunction_FrameTimer: ret .SpawnLeaf: - ld hl, wce65 + ld hl, wFrameCounter2 ld a, [hl] inc [hl] and $7 diff --git a/engine/events/heal_machine_anim.asm b/engine/events/heal_machine_anim.asm index 7cf2f03a..ae2daa86 100644 --- a/engine/events/heal_machine_anim.asm +++ b/engine/events/heal_machine_anim.asm @@ -56,7 +56,7 @@ HealMachineAnim: .Pointers: ; entries correspond to HEALMACHINE_* constants dw .Pokecenter - dw .ElmLab + dw .ElmsLab dw .HallOfFame healmachineanimseq: MACRO @@ -68,7 +68,7 @@ ENDM .Pokecenter: healmachineanimseq LOADGFX, PCLOADBALLS, PLAYMUSIC, FINISH -.ElmLab: +.ElmsLab: healmachineanimseq LOADGFX, PCLOADBALLS, PLAYMUSIC, FINISH .HallOfFame: healmachineanimseq LOADGFX, HOFLOADBALLS, HOFPLAYSFX, FINISH diff --git a/engine/events/magnet_train.asm b/engine/events/magnet_train.asm index b6b6e995..13b080aa 100644 --- a/engine/events/magnet_train.asm +++ b/engine/events/magnet_train.asm @@ -56,7 +56,7 @@ MagnetTrain: ld [wRequested2bppSource + 1], a ld [wRequested2bppDest], a ld [wRequested2bppDest + 1], a - ld [wRequested2bpp], a + ld [wRequested2bppSize], a call ClearTilemap pop af diff --git a/engine/events/npc_trade.asm b/engine/events/npc_trade.asm index d4e450c2..94773f2f 100644 --- a/engine/events/npc_trade.asm +++ b/engine/events/npc_trade.asm @@ -56,11 +56,12 @@ NPCTrade:: call DisableSpriteUpdates ld a, [wJumptableIndex] push af - ld a, [wce64] + ; wTradeDialog aliases wFrameCounter, which TradeAnimation uses + ld a, [wTradeDialog] push af predef TradeAnimation pop af - ld [wce64], a + ld [wTradeDialog], a pop af ld [wJumptableIndex], a call ReturnToMapWithSpeechTextbox @@ -107,7 +108,7 @@ Trade_GetDialog: ld e, NPCTRADE_DIALOG call GetTradeAttribute ld a, [hl] - ld [wce64], a + ld [wTradeDialog], a ret DoNPCTrade: @@ -366,7 +367,7 @@ PrintTradeText: rept 6 add hl, de endr - ld a, [wce64] + ld a, [wTradeDialog] ld e, a add hl, de add hl, de diff --git a/engine/events/overworld.asm b/engine/events/overworld.asm index 7aaaca90..e5b90447 100644 --- a/engine/events/overworld.asm +++ b/engine/events/overworld.asm @@ -268,7 +268,7 @@ CheckOverworldTileArrays: xor a ret -INCLUDE "data/events/field_move_blocks.asm" +INCLUDE "data/collision/field_move_blocks.asm" FlashFunction: call .CheckUseFlash @@ -284,7 +284,6 @@ FlashFunction: ld a, [wTimeOfDayPalset] cp DARKNESS_PALSET jr nz, .notadarkcave -.useflash call UseFlash ld a, $81 ret @@ -1391,7 +1390,7 @@ HasRockSmash: ld d, ROCK_SMASH call CheckPartyMove jr nc, .yes -.no +; no ld a, 1 jr .done .yes @@ -1596,7 +1595,7 @@ RodNothingText: text_far _RodNothingText text_end -UnusedNothingHereText: ; unused +UnusedNothingHereText: ; unreferenced text_far _UnusedNothingHereText text_end @@ -1702,7 +1701,7 @@ Script_GetOnBike_Register: special UpdatePlayerSprite end -; unused +Overworld_DummyFunction: ; unreferenced nop ret diff --git a/engine/events/poisonstep.asm b/engine/events/poisonstep.asm index e6de6f19..827f6941 100644 --- a/engine/events/poisonstep.asm +++ b/engine/events/poisonstep.asm @@ -149,6 +149,6 @@ DoPoisonStep:: text_far _PoisonFaintText text_end -.PoisonWhiteoutText: +.PoisonWhiteoutText: ; unreferenced text_far _PoisonWhiteoutText text_end diff --git a/engine/events/print_unown_2.asm b/engine/events/print_unown_2.asm index aaeeec76..4926bf53 100644 --- a/engine/events/print_unown_2.asm +++ b/engine/events/print_unown_2.asm @@ -9,7 +9,7 @@ RotateUnownFrontpic: push bc push hl push bc - ld de, wceed + ld de, wPrintedUnownTileSource call .Copy call .Rotate ld hl, UnownPrinter_GBPrinterRectangle @@ -19,10 +19,10 @@ RotateUnownFrontpic: ld a, [hli] ld e, a ld d, [hl] - ld hl, wcefd + ld hl, wPrintedUnownTileDest call .Copy pop hl - ld bc, $10 + ld bc, LEN_2BPP_TILE add hl, bc pop bc inc c @@ -30,7 +30,7 @@ RotateUnownFrontpic: cp 7 * 7 jr c, .loop - ld hl, wGameboyPrinterRAM + ld hl, wGameboyPrinter2bppSource ld de, sScratch ld bc, 7 * 7 tiles call CopyBytes @@ -44,7 +44,7 @@ RotateUnownFrontpic: ret .Copy: - ld c, $10 + ld c, LEN_2BPP_TILE .loop_copy ld a, [hli] ld [de], a @@ -54,18 +54,18 @@ RotateUnownFrontpic: ret .Rotate: - ld hl, wcefd + ld hl, wPrintedUnownTileDest ld e, %10000000 ld d, 8 .loop_decompress push hl - ld hl, wceed + ld hl, wPrintedUnownTileSource call .CountSetBit pop hl ld a, b ld [hli], a push hl - ld hl, wceee + ld hl, wPrintedUnownTileSource + 1 call .CountSetBit pop hl ld a, b @@ -100,7 +100,7 @@ y = 0 rept \1 x = \1 * (\2 - 1) + y rept \2 - dw wGameboyPrinterRAM tile x + dw wGameboyPrinter2bppSource tile x x = x - \2 endr y = y + 1 diff --git a/engine/events/prof_oaks_pc.asm b/engine/events/prof_oaks_pc.asm index 40230d5b..b272e3fb 100644 --- a/engine/events/prof_oaks_pc.asm +++ b/engine/events/prof_oaks_pc.asm @@ -36,18 +36,18 @@ Rate: ld hl, wPokedexSeen ld b, wEndPokedexSeen - wPokedexSeen call CountSetBits - ld [wceed], a + ld [wTempPokedexSeenCount], a ld hl, wPokedexCaught ld b, wEndPokedexCaught - wPokedexCaught call CountSetBits - ld [wceee], a + ld [wTempPokedexCaughtCount], a ; print appropriate rating call .UpdateRatingBuffers ld hl, OakPCText3 call PrintText call JoyWaitAorB - ld a, [wceee] + ld a, [wTempPokedexCaughtCount] ld hl, OakRatings call FindOakRating push de @@ -57,10 +57,10 @@ Rate: .UpdateRatingBuffers: ld hl, wStringBuffer3 - ld de, wceed + ld de, wTempPokedexSeenCount call .UpdateRatingBuffer ld hl, wStringBuffer4 - ld de, wceee + ld de, wTempPokedexCaughtCount call .UpdateRatingBuffer ret diff --git a/engine/events/specials.asm b/engine/events/specials.asm index 3cedbf17..0b3e3560 100644 --- a/engine/events/specials.asm +++ b/engine/events/specials.asm @@ -15,7 +15,7 @@ Special:: INCLUDE "data/events/special_pointers.asm" -DummySpecial_c389: +UnusedDummySpecial: ret GameCornerPrizeMonCheckDex: @@ -205,7 +205,7 @@ CardFlip: call StartGameCornerGame ret -DummyNonfunctionalGameCornerGame: +UnusedDummyGame: call CheckCoinsAndCoinCase ret c ld a, BANK(_DummyGame) @@ -414,17 +414,17 @@ GameboyCheck: ldh a, [hCGB] and a jr nz, .cgb - ldh a, [hSGB] and a jr nz, .sgb - -.gb +; gb xor a ; GBCHECK_GB jr .done + .sgb ld a, GBCHECK_SGB jr .done + .cgb ld a, GBCHECK_CGB .done @@ -459,5 +459,4 @@ TrainerHouse: ld [wScriptVar], a jp CloseSRAM -; unused - nop + nop ; unused diff --git a/engine/events/std_collision.asm b/engine/events/std_collision.asm index 8c54c041..5ab11268 100644 --- a/engine/events/std_collision.asm +++ b/engine/events/std_collision.asm @@ -23,7 +23,7 @@ CheckFacingTileForStdScript:: xor a ret -INCLUDE "data/events/collision_stdscripts.asm" +INCLUDE "data/collision/collision_stdscripts.asm" Script_JumpStdFromRAM: sjump wJumpStdScriptBuffer diff --git a/engine/events/treemons.asm b/engine/events/treemons.asm index c96df83a..42d89d1f 100644 --- a/engine/events/treemons.asm +++ b/engine/events/treemons.asm @@ -208,7 +208,7 @@ GetTreeScore: cp 5 jr c, .good -.bad +; bad xor a ; TREEMON_SCORE_BAD ret diff --git a/engine/games/card_flip.asm b/engine/games/card_flip.asm index ba73f202..ab4ec624 100644 --- a/engine/games/card_flip.asm +++ b/engine/games/card_flip.asm @@ -1,7 +1,8 @@ CARDFLIP_LIGHT_OFF EQU "♂" ; $ef CARDFLIP_LIGHT_ON EQU "♀" ; $f5 -CARDFLIP_DECK_SIZE EQU 4 * 6 +CARDFLIP_DECK_SIZE EQUS "(wDeckEnd - wDeck)" + assert wDiscardPileEnd - wDiscardPile == wDeckEnd - wDeck DummyGameGFX: ; Graphics for an unused Game Corner @@ -577,7 +578,7 @@ CardFlip_CopyOAM: jr nz, .loop ret -CardFlip_ShiftDigitsUpOnePixel: +CardFlip_ShiftDigitsUpOnePixel: ; unreferenced ; The top rows of digits 1-9 become the bottom rows of 0-8, ; so this routine relies on the top rows being blank. ld de, vTiles0 tile "0" diff --git a/engine/games/dummy_game.asm b/engine/games/dummy_game.asm index a1ab49f2..648346fc 100644 --- a/engine/games/dummy_game.asm +++ b/engine/games/dummy_game.asm @@ -20,7 +20,7 @@ _DummyGame: ld a, BANK(DummyGameGFX) call FarCopyBytes ld a, $8 - ld hl, wc508 + ld hl, wSpriteAnimDict ld [hli], a ld [hl], $0 hlcoord 0, 0 @@ -133,11 +133,11 @@ endr .next_try dec [hl] xor a - ld [wce64], a + ld [wDummyGameCardChoice], a ld hl, wJumptableIndex inc [hl] .PickCard1: - ld a, [wce64] + ld a, [wDummyGameCardChoice] and a ret z dec a @@ -155,13 +155,13 @@ endr call DummyGame_Card2Coord call DummyGame_PlaceCard xor a - ld [wce64], a + ld [wDummyGameCardChoice], a ld hl, wJumptableIndex inc [hl] ret .PickCard2: - ld a, [wce64] + ld a, [wDummyGameCardChoice] and a ret z dec a @@ -527,7 +527,7 @@ DummyGame_InterpretJoypad_AnimateCursor: add hl, bc ld a, [hl] inc a - ld [wce64], a + ld [wDummyGameCardChoice], a ret .pressed_left diff --git a/engine/games/slot_machine.asm b/engine/games/slot_machine.asm index 68a56bbc..47f1cc42 100644 --- a/engine/games/slot_machine.asm +++ b/engine/games/slot_machine.asm @@ -248,7 +248,7 @@ DebugPrintSlotBias: ; unreferenced AnimateSlotReelIcons: ; unreferenced ; This animation was present in pokegold-spaceworld. - ld hl, wce66 + ld hl, wUnusedSlotReelIconDelay ld a, [hl] inc [hl] and $7 diff --git a/engine/games/unown_puzzle.asm b/engine/games/unown_puzzle.asm index 35caada2..48e36b89 100644 --- a/engine/games/unown_puzzle.asm +++ b/engine/games/unown_puzzle.asm @@ -504,13 +504,13 @@ CheckSolvedUnownPuzzle: RedrawUnownPuzzlePieces: call GetCurrentPuzzlePieceVTileCorner - ld [wceed], a + ld [wUnownPuzzleCornerTile], a xor a call GetUnownPuzzleCoordData ; get pixel positions ld a, [hli] ld b, [hl] ld c, a - ld a, [wceed] + ld a, [wUnownPuzzleCornerTile] cp $e0 jr z, .NoPiece ld hl, .OAM_HoldingPiece @@ -532,7 +532,7 @@ RedrawUnownPuzzlePieces: add c ld [de], a ; x inc de - ld a, [wceed] + ld a, [wUnownPuzzleCornerTile] add [hl] ld [de], a ; tile id inc hl diff --git a/engine/gfx/cgb_layouts.asm b/engine/gfx/cgb_layouts.asm index 5fb23062..56b7d372 100644 --- a/engine/gfx/cgb_layouts.asm +++ b/engine/gfx/cgb_layouts.asm @@ -17,19 +17,18 @@ LoadSGBLayoutCGB: ld l, a ld h, 0 add hl, hl - ld de, .dw + ld de, .Jumptable add hl, de ld a, [hli] ld h, [hl] ld l, a - ld de, .ReturnFromJumpTable + ld de, .done push de jp hl - -.ReturnFromJumpTable: +.done: ret -.dw +.Jumptable: dw _CGB_BattleGrayscale dw _CGB_BattleColors dw _CGB_PokegearPals @@ -43,7 +42,7 @@ LoadSGBLayoutCGB: dw _CGB_PartyMenu dw _CGB_Evolution dw _CGB_GSTitleScreen - dw _CGB0d + dw _CGB_Unused0D dw _CGB_MoveList dw _CGB_BetaPikachuMinigame dw _CGB_PokedexSearchOption @@ -60,7 +59,7 @@ LoadSGBLayoutCGB: dw _CGB_TradeTube dw _CGB_TrainerOrMonFrontpicPals dw _CGB_MysteryGift - dw _CGB1e + dw _CGB_Unused1E dw _CGB_Pokedex_5x5 _CGB_BattleGrayscale: @@ -303,12 +302,12 @@ _CGB_BillsPC: ldh [hCGBPalUpdate], a ret -Function95a0: ; unreferenced +_CGB_Unknown: ; unreferenced ld hl, BillsPCOrangePalette call LoadHLPaletteIntoDE jr .GotPalette -.GetMonPalette: +.GetMonPalette: ; unreferenced ld bc, wTempMonDVs call GetPlayerOrMonPalettePointer call LoadPalette_White_Col1_Col2_Black @@ -568,7 +567,7 @@ _CGB_GSTitleScreen: ldh [hCGBPalUpdate], a ret -_CGB0d: +_CGB_Unused0D: ld hl, PalPacket_Diploma + 1 call CopyFourPalettes call WipeAttrmap @@ -831,7 +830,7 @@ _CGB_PlayerOrMonFrontpicPals: call ApplyPals ret -_CGB1e: +_CGB_Unused1E: ld de, wBGPals1 ld a, [wCurPartySpecies] call GetMonPalettePointer diff --git a/engine/gfx/color.asm b/engine/gfx/color.asm index d03724f8..18ae76a8 100644 --- a/engine/gfx/color.asm +++ b/engine/gfx/color.asm @@ -15,31 +15,31 @@ CheckShininess: ; Attack ld a, [hl] and 1 << SHINY_ATK_BIT - jr z, .NotShiny + jr z, .not_shiny ; Defense ld a, [hli] and $f cp SHINY_DEF_VAL - jr nz, .NotShiny + jr nz, .not_shiny ; Speed ld a, [hl] and $f0 cp SHINY_SPD_VAL << 4 - jr nz, .NotShiny + jr nz, .not_shiny ; Special ld a, [hl] and $f cp SHINY_SPC_VAL - jr nz, .NotShiny + jr nz, .not_shiny -.Shiny: +; shiny scf ret -.NotShiny: +.not_shiny and a ret @@ -49,30 +49,30 @@ Unused_CheckShininess: ; Attack ld a, [hl] cp 10 << 4 - jr c, .NotShiny + jr c, .not_shiny ; Defense ld a, [hli] and $f cp 10 - jr c, .NotShiny + jr c, .not_shiny ; Speed ld a, [hl] cp 10 << 4 - jr c, .NotShiny + jr c, .not_shiny ; Special ld a, [hl] and $f cp 10 - jr c, .NotShiny + jr c, .not_shiny -.Shiny: +; shiny scf ret -.NotShiny: +.not_shiny and a ret @@ -144,6 +144,7 @@ SGB_ApplyPartyMenuHPPals: Intro_LoadMagikarpPalettes: call CheckCGB ret z + ; CGB only ld hl, .BGPal ld de, wBGPals1 @@ -715,13 +716,13 @@ endr ret PushSGBPals: - ld a, [wd8ba] + ld a, [wJoypadDisable] push af - set 7, a - ld [wd8ba], a + set JOYPAD_DISABLE_SGB_TRANSFER_F, a + ld [wJoypadDisable], a call _PushSGBPals pop af - ld [wd8ba], a + ld [wJoypadDisable], a ret _PushSGBPals: @@ -767,12 +768,14 @@ _PushSGBPals: InitSGBBorder: call CheckCGB ret nz + ; SGB/DMG only di - ld a, [wd8ba] + ld a, [wJoypadDisable] push af - set 7, a - ld [wd8ba], a + set JOYPAD_DISABLE_SGB_TRANSFER_F, a + ld [wJoypadDisable], a + xor a ldh [rJOYP], a ldh [hSGB], a @@ -792,13 +795,14 @@ InitSGBBorder: .skip pop af - ld [wd8ba], a + ld [wJoypadDisable], a ei ret InitCGBPals:: call CheckCGB ret z + ; CGB only ld a, BANK(vTiles3) ldh [rVBK], a @@ -894,7 +898,7 @@ PushSGBBorder: .LoadSGBBorderPointers: ld hl, SGBBorderGFX - ld de, SGBBorderMap + ld de, SGBBorderMapAndPalettes ret SGB_ClearVRAM: @@ -1091,24 +1095,24 @@ INCLUDE "data/sgb_ctrl_packets.asm" PredefPals: INCLUDE "gfx/sgb/predef.pal" -IF DEF(_GOLD) -SGBBorderMap: +SGBBorderMapAndPalettes: ; interleaved tile ids and palette ids, without the center 20x18 screen area +IF DEF(_GOLD) INCBIN "gfx/sgb/gold_border.sgb.tilemap" -SGBBorderPalettes: -; assumed to come after SGBBorderMap -INCLUDE "gfx/sgb/gold_border.pal" -SGBBorderGFX: -INCBIN "gfx/sgb/gold_border.2bpp" - ELIF DEF(_SILVER) -SGBBorderMap: -; interleaved tile ids and palette ids, without the center 20x18 screen area INCBIN "gfx/sgb/silver_border.sgb.tilemap" -SGBBorderPalettes: -; assumed to come after SGBBorderMap +ENDC +; four SGB palettes of 16 colors each; only the first 4 colors are used +IF DEF(_GOLD) +INCLUDE "gfx/sgb/gold_border.pal" +ELIF DEF(_SILVER) INCLUDE "gfx/sgb/silver_border.pal" +ENDC + SGBBorderGFX: +IF DEF(_GOLD) +INCBIN "gfx/sgb/gold_border.2bpp" +ELIF DEF(_SILVER) INCBIN "gfx/sgb/silver_border.2bpp" ENDC @@ -1225,7 +1229,7 @@ INCLUDE "gfx/diploma/diploma.pal" PartyMenuOBPals: INCLUDE "gfx/stats/party_menu_ob.pal" -UnusedBattleObjectPals: +UnusedBattleObjectPals: ; unreferenced INCLUDE "gfx/battle_anims/unused_battle_anims.pal" GSTitleBGPals: diff --git a/engine/gfx/load_font.asm b/engine/gfx/load_font.asm index f8289ded..b41badc2 100644 --- a/engine/gfx/load_font.asm +++ b/engine/gfx/load_font.asm @@ -94,7 +94,7 @@ LoadStatsScreenPageTilesGFX: call Get2bpp ret -LoadFontsBattleLevel: +LoadFontsBattleLevel: ; unreferenced ld de, FontBattleExtra + 14 tiles ld hl, vTiles2 tile "<LV>" ; $6e lb bc, BANK(FontBattleExtra), 1 diff --git a/engine/gfx/load_pics.asm b/engine/gfx/load_pics.asm index 9109a7f9..34bffdb7 100644 --- a/engine/gfx/load_pics.asm +++ b/engine/gfx/load_pics.asm @@ -69,7 +69,6 @@ GetFrontpic: cp EGG + 1 ret nc -.is_a_pokemon push de call GetBaseData ld a, [wBasePicSize] @@ -133,13 +132,13 @@ GetMonBackpic: cp EGG + 1 ret nc -.is_a_pokemon push de ld a, BANK(sDecompressBuffer) call OpenSRAM ; These are assumed to be at the same address in their respective banks. - ld hl, PokemonPicPointers ; UnownPicPointers + assert PokemonPicPointers == UnownPicPointers + ld hl, PokemonPicPointers ld a, [wCurPartySpecies] ld d, BANK(PokemonPicPointers) cp UNOWN diff --git a/engine/gfx/sgb_layouts.asm b/engine/gfx/sgb_layouts.asm index 2ed648f6..1b2799bf 100644 --- a/engine/gfx/sgb_layouts.asm +++ b/engine/gfx/sgb_layouts.asm @@ -35,7 +35,7 @@ LoadSGBLayout: dw .SGB_PartyMenu dw .SGB_Evolution dw .SGB_GSTitleScreen - dw .SGB0d + dw .SGB_Unused0D dw .SGB_MoveList dw .SGB_BetaPikachuMinigame dw .SGB_PokedexSearchOption @@ -52,7 +52,7 @@ LoadSGBLayout: dw .SGB_TradeTube dw .SGB_TrainerOrMonFrontpicPals dw .SGB_MysteryGift - dw .SGB1e + dw .SGB_Unused1E dw .SGB_Pokedex_5x5 .SGB_BattleGrayscale: @@ -403,7 +403,7 @@ endr ld de, BlkPacket_AllPal0 ret -.SGB0d: +.SGB_Unused0D: .SGB_TrainerCard: ld hl, PalPacket_Diploma ld de, BlkPacket_AllPal0 @@ -443,7 +443,7 @@ endr ld de, wSGBPals + PALPACKET_LENGTH ret -.SGB1e: +.SGB_Unused1E: ld hl, PalPacket_Pal01 ld de, wSGBPals ld bc, PALPACKET_LENGTH @@ -456,7 +456,7 @@ endr add hl, hl ld de, PokemonPalettes add hl, de - ld a, [wce65] + ld a, [wUnusedSGB1eColorOffset] and 3 sla a sla a diff --git a/engine/gfx/sprite_anims.asm b/engine/gfx/sprite_anims.asm index 2a4cc868..93b69a3c 100644 --- a/engine/gfx/sprite_anims.asm +++ b/engine/gfx/sprite_anims.asm @@ -1066,7 +1066,7 @@ AnimSeq_SlotsGolem: AnimSeq_SlotsChansey: callfar Slots_AnimateChansey - ld hl, wce64 + ld hl, wSlotsDelay ld a, [hl] cp $2 ret nz @@ -1091,7 +1091,7 @@ AnimSeq_SlotsChanseyEgg: jr c, .move_right call DeinitializeSprite ld a, $4 - ld [wce64], a + ld [wSlotsDelay], a ld de, SFX_PLACE_PUZZLE_PIECE_DOWN call PlaySFX ret diff --git a/engine/items/item_effects.asm b/engine/items/item_effects.asm index a00aee8c..7b43eb82 100644 --- a/engine/items/item_effects.asm +++ b/engine/items/item_effects.asm @@ -1029,14 +1029,13 @@ LevelBallMultiplier: ld b, $ff ret -; These two texts were carried over from gen 1. -; They are not used in gen 2, and are dummied out. +; BallDodgedText and BallMissedText were used in Gen 1. -BallDodgedText: +BallDodgedText: ; unreferenced text_far _BallDodgedText text_end -BallMissedText: +BallMissedText: ; unreferenced text_far _BallMissedText text_end @@ -1864,14 +1863,14 @@ LoadCurHPIntoBuffer5: ld [wBuffer5], a ret -LoadHPIntoBuffer5: +LoadHPIntoBuffer5: ; unreferenced ld a, d ld [wBuffer6], a ld a, e ld [wBuffer5], a ret -LoadHPFromBuffer5: +LoadHPFromBuffer5: ; unreferenced ld a, [wBuffer6] ld d, a ld a, [wBuffer5] @@ -2133,11 +2132,12 @@ INCLUDE "data/items/x_stats.asm" PokeFluteEffect: ld a, [wBattleMode] and a - jr nz, .dummy -.dummy + jr nz, .in_battle + ; overworld flute code was dummied out here +.in_battle xor a - ld [wceed], a + ld [wPokeFluteCuredSleep], a ld b, $ff ^ SLP @@ -2160,7 +2160,7 @@ PokeFluteEffect: and b ld [hl], a - ld a, [wceed] + ld a, [wPokeFluteCuredSleep] and a ld hl, .PlayedFluteText jp z, PrintText @@ -2169,22 +2169,22 @@ PokeFluteEffect: ld a, [wLowHealthAlarm] and 1 << DANGER_ON_F - jr nz, .dummy2 -.dummy2 + jr nz, .dummy + ; more code was dummied out here +.dummy ld hl, .FluteWakeUpText jp PrintText .CureSleep: ld de, PARTYMON_STRUCT_LENGTH ld c, PARTY_LENGTH - .loop ld a, [hl] push af and SLP jr z, .not_asleep - ld a, 1 - ld [wceed], a + ld a, TRUE + ld [wPokeFluteCuredSleep], a .not_asleep pop af and b @@ -2253,7 +2253,7 @@ ItemfinderEffect: RestorePPEffect: ld a, [wCurItem] - ld [wceed], a + ld [wTempRestorePPItem], a .loop ; Party Screen opens to choose on which mon to use the Item @@ -2262,14 +2262,14 @@ RestorePPEffect: jp c, PPRestoreItem_Cancel .loop2 - ld a, [wceed] + ld a, [wTempRestorePPItem] cp MAX_ELIXER jp z, Elixer_RestorePPofAllMoves cp ELIXER jp z, Elixer_RestorePPofAllMoves ld hl, RaiseThePPOfWhichMoveText - ld a, [wceed] + ld a, [wTempRestorePPItem] cp PP_UP jr z, .ppup ld hl, RestoreThePPOfWhichMoveText @@ -2300,7 +2300,7 @@ RestorePPEffect: call CopyName1 pop hl - ld a, [wceed] + ld a, [wTempRestorePPItem] cp PP_UP jp nz, Not_PP_Up @@ -2315,7 +2315,6 @@ RestorePPEffect: jr c, .do_ppup .CantUsePPUpOnSketch: -.pp_is_maxed_out ld hl, PPIsMaxedOutText call PrintText jr .loop2 @@ -2450,7 +2449,7 @@ RestorePP: cp b jr nc, .dont_restore - ld a, [wceed] + ld a, [wTempRestorePPItem] cp MAX_ELIXER jr z, .restore_all cp MAX_ETHER @@ -2612,16 +2611,17 @@ WontHaveAnyEffectMessage: ld hl, ItemWontHaveEffectText jr CantUseItemMessage -BelongsToSomeoneElseMessage: +BelongsToSomeoneElseMessage: ; unreferenced ld hl, ItemBelongsToSomeoneElseText jr CantUseItemMessage -CyclingIsntAllowedMessage: +CyclingIsntAllowedMessage: ; unreferenced ld hl, NoCyclingText jr CantUseItemMessage -CantGetOnYourBikeMessage: +CantGetOnYourBikeMessage: ; unreferenced ld hl, ItemCantGetOnText + ; fallthrough CantUseItemMessage: ; Item couldn't be used. @@ -2673,11 +2673,11 @@ ItemUsedText: text_far _ItemUsedText text_end -ItemGotOnText: +ItemGotOnText: ; unreferenced text_far _ItemGotOnText text_end -ItemGotOffText: +ItemGotOffText: ; unreferenced text_far _ItemGotOffText text_end diff --git a/engine/items/items.asm b/engine/items/items.asm index 78b0e2cd..42381b41 100644 --- a/engine/items/items.asm +++ b/engine/items/items.asm @@ -481,7 +481,7 @@ GetNumberedTMHM: jr c, .done cp ITEM_DC - (TM01 - 1) - 1 jr c, .skip_one -.skip_two +; skip two inc a .skip_one inc a diff --git a/engine/items/pack.asm b/engine/items/pack.asm index b3e1c5f1..994c7c5a 100644 --- a/engine/items/pack.asm +++ b/engine/items/pack.asm @@ -1520,7 +1520,7 @@ PC_Mart_BallsPocketMenuHeader: dba PlaceMenuItemQuantity dba UpdateItemDescription -PackNoItemText: +PackNoItemText: ; unreferenced text_far _PackNoItemText text_end @@ -1560,7 +1560,7 @@ PackEmptyText: text_far _PackEmptyText text_end -YouCantUseItInABattleText: +YouCantUseItInABattleText: ; unreferenced text_far _YouCantUseItInABattleText text_end diff --git a/engine/items/tmhm.asm b/engine/items/tmhm.asm index e7c622d7..0a14ca50 100644 --- a/engine/items/tmhm.asm +++ b/engine/items/tmhm.asm @@ -76,7 +76,6 @@ ChooseMonToLearnTMHM: ld bc, 12 call CopyBytes call ClearBGPalettes -ChooseMonToLearnTMHM_NoRefresh: farcall LoadPartyMenuGFX farcall InitPartyMenuWithCancel farcall InitPartyMenuGFX @@ -158,7 +157,7 @@ TeachTMHM: and a ret -.unused +.didnt_use ; unreferenced ld a, 2 ld [wItemEffectSucceeded], a .learned_move diff --git a/engine/link/init_list.asm b/engine/link/init_list.asm index b85cf001..3e16d349 100644 --- a/engine/link/init_list.asm +++ b/engine/link/init_list.asm @@ -44,9 +44,9 @@ InitList: ld a, h ld [wListPointer + 1], a ld a, e - ld [wUnusedCFFE], a + ld [wUnusedNamesPointer], a ld a, d - ld [wUnusedCFFE + 1], a + ld [wUnusedNamesPointer + 1], a ld bc, ItemAttributes ld a, c ld [wItemAttributesPtr], a diff --git a/engine/link/link.asm b/engine/link/link.asm index 789e3d5e..2d8d458b 100644 --- a/engine/link/link.asm +++ b/engine/link/link.asm @@ -25,10 +25,11 @@ LinkCommunications: hlcoord 4, 10 ld de, String_PleaseWait call PlaceString - ld hl, wce5d - xor a ; LOW($5000) + ld hl, wLinkByteTimeout + assert LOW(SERIAL_LINK_BYTE_TIMEOUT) == 0 + xor a ; LOW(SERIAL_LINK_BYTE_TIMEOUT) ld [hli], a - ld [hl], HIGH($5000) + ld [hl], HIGH(SERIAL_LINK_BYTE_TIMEOUT) ld a, [wLinkMode] cp LINK_TIMECAPSULE jp nz, Gen2ToGen2LinkComms @@ -82,9 +83,9 @@ Gen2ToGen1LinkComms: call Serial_ExchangeBytes ld a, SERIAL_NO_DATA_BYTE ld [de], a - ld hl, wLink_c508 + ld hl, wc508 ld de, wTrademons - ld bc, wTrademons - wLink_c508 + ld bc, wTrademons - wc508 call Serial_ExchangeBytes xor a ldh [rIF], a @@ -105,8 +106,8 @@ Gen2ToGen1LinkComms: ld de, wLinkData ld bc, $1a2 call Link_CopyOTData - ld de, wPlayerTrademonSpecies - ld hl, wTimeCapsulePartyMon1Species + ld de, wPlayerTrademon + ld hl, wTimeCapsulePlayerData ld c, 2 .loop ld a, [de] @@ -160,12 +161,12 @@ Gen2ToGen1LinkComms: .done_party ld [de], a - ld hl, wTimeCapsulePartyMon1Species + ld hl, wTimeCapsulePlayerData call Link_ConvertPartyStruct1to2 ld a, LOW(wOTPartyMonOT) - ld [wUnusedCFFE], a + ld [wUnusedNamesPointer], a ld a, HIGH(wOTPartyMonOT) - ld [wUnusedCFFE + 1], a + ld [wUnusedNamesPointer + 1], a ld de, MUSIC_NONE call PlayMusic ldh a, [hSerialConnectionStatus] @@ -226,9 +227,9 @@ Gen2ToGen2LinkComms: call Serial_ExchangeBytes ld a, SERIAL_NO_DATA_BYTE ld [de], a - ld hl, wLink_c508 + ld hl, wc508 ld de, wTrademons - ld bc, wTrademons - wLink_c508 + ld bc, wTrademons - wc508 call Serial_ExchangeBytes ld a, [wLinkMode] cp LINK_TRADECENTER @@ -251,8 +252,8 @@ Gen2ToGen2LinkComms: ld de, wLinkData ld bc, $1b9 call Link_CopyOTData - ld de, wPlayerTrademonSpecies - ld hl, wLinkPlayerPartyMon1Species + ld de, wPlayerTrademon + ld hl, wLinkPlayerData ld c, 2 .loop1 ld a, [de] @@ -377,9 +378,9 @@ Gen2ToGen2LinkComms: ld bc, wOTPartyDataEnd - wOTPartyMons call CopyBytes ld a, LOW(wOTPartyMonOT) - ld [wUnusedCFFE], a + ld [wUnusedNamesPointer], a ld a, HIGH(wOTPartyMonOT) - ld [wUnusedCFFE + 1], a + ld [wUnusedNamesPointer + 1], a ld de, MUSIC_NONE call PlayMusic ldh a, [hSerialConnectionStatus] @@ -451,6 +452,8 @@ LinkTimeout: text_end ExchangeBytes: +; This is similar to Serial_ExchangeBytes, +; but without a SERIAL_PREAMBLE_BYTE check. ld a, TRUE ldh [hSerialIgnoringInitialData], a .loop @@ -461,9 +464,9 @@ ExchangeBytes: ld b, a inc hl ld a, 48 -.delay_cycles +.wait dec a - jr nz, .delay_cycles + jr nz, .wait ldh a, [hSerialIgnoringInitialData] and a ld a, b @@ -514,7 +517,7 @@ FixDataForLinkTransfer: ld [hli], a dec b jr nz, .loop2 - ld hl, wLink_c508 + ld hl, wc508 ld a, SERIAL_PREAMBLE_BYTE ld [hli], a ld [hli], a @@ -525,7 +528,7 @@ FixDataForLinkTransfer: ld [hli], a dec b jr nz, .loop3 - ld hl, wTimeCapsulePartyMon1 - 1 + PARTY_LENGTH + ld hl, wTimeCapsulePlayerData - 1 + PARTY_LENGTH ld de, wc512 lb bc, 0, 0 .loop4 @@ -1301,13 +1304,13 @@ LinkTrade_TradeStatsMenu: pop af ld [wMenuCursorY], a dec a - ld [wceed], a + ld [wCurTradePartyMon], a ld [wPlayerLinkAction], a call Serial_PrintWaitingTextAndSyncAndExchangeNybble ld a, [wOtherPlayerLinkMode] cp $f jp z, InitTradeMenuDisplay - ld [wceee], a + ld [wCurOTTradePartyMon], a call LinkTradePlaceArrow ld c, 100 call DelayFrames @@ -1331,7 +1334,7 @@ LinkTrade_TradeStatsMenu: xor a ld [wce57], a ld [wOtherPlayerLinkAction], a - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld hl, wOTPartySpecies ld c, a ld b, 0 @@ -1407,7 +1410,7 @@ LinkTradeCheckCancel: jr nz, .loop1 ExitLinkCommunications: xor a - ld [wd8b7], a + ld [wUnusedLinkCommunicationByte], a xor a ldh [rSB], a ldh [hSerialSend], a @@ -1471,7 +1474,7 @@ LinkTrade: ld b, 4 ld c, 18 call LinkTextboxAtHL - ld a, [wceed] + ld a, [wCurTradePartyMon] ld hl, wPartySpecies ld c, a ld b, 0 @@ -1480,10 +1483,10 @@ LinkTrade: ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, wStringBuffer1 - ld de, wceef + ld de, wBufferTrademonNick ld bc, MON_NAME_LENGTH call CopyBytes - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld hl, wOTPartySpecies ld c, a ld b, 0 @@ -1562,7 +1565,7 @@ LinkTrade: .do_trade: ld hl, sPartyMail - ld a, [wceed] + ld a, [wCurTradePartyMon] ld bc, MAIL_STRUCT_LENGTH call AddNTimes ld a, BANK(sPartyMail) @@ -1571,7 +1574,7 @@ LinkTrade: ld e, l ld bc, MAIL_STRUCT_LENGTH add hl, bc - ld a, [wceed] + ld a, [wCurTradePartyMon] ld c, a .copy_mail inc c @@ -1592,7 +1595,7 @@ LinkTrade: call AddNTimes push hl ld hl, wc8f4 - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld bc, MAIL_STRUCT_LENGTH call AddNTimes pop de @@ -1607,7 +1610,7 @@ LinkTrade: ld bc, NAME_LENGTH call CopyBytes ; species - ld a, [wceed] + ld a, [wCurTradePartyMon] ld hl, wPartySpecies ld b, 0 ld c, a @@ -1616,7 +1619,7 @@ LinkTrade: ld [wPlayerTrademonSpecies], a push af ; OT name - ld a, [wceed] + ld a, [wCurTradePartyMon] ld hl, wPartyMonOT call SkipNames ld de, wPlayerTrademonOTName @@ -1624,7 +1627,7 @@ LinkTrade: call CopyBytes ; ID ld hl, wPartyMon1ID - ld a, [wceed] + ld a, [wCurTradePartyMon] call GetPartyLocation ld a, [hli] ld [wPlayerTrademonID], a @@ -1632,7 +1635,7 @@ LinkTrade: ld [wPlayerTrademonID + 1], a ; DVs ld hl, wPartyMon1DVs - ld a, [wceed] + ld a, [wCurTradePartyMon] call GetPartyLocation ld a, [hli] ld [wPlayerTrademonDVs], a @@ -1646,7 +1649,7 @@ LinkTrade: ld bc, NAME_LENGTH call CopyBytes ; species - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld hl, wOTPartySpecies ld b, 0 ld c, a @@ -1654,7 +1657,7 @@ LinkTrade: ld a, [hl] ld [wOTTrademonSpecies], a ; OT name - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld hl, wOTPartyMonOT call SkipNames ld de, wOTTrademonOTName @@ -1662,7 +1665,7 @@ LinkTrade: call CopyBytes ; ID ld hl, wOTPartyMon1ID - ld a, [wceee] + ld a, [wCurOTTradePartyMon] call GetPartyLocation ld a, [hli] ld [wOTTrademonID], a @@ -1670,21 +1673,21 @@ LinkTrade: ld [wOTTrademonID + 1], a ; DVs ld hl, wOTPartyMon1DVs - ld a, [wceee] + ld a, [wCurOTTradePartyMon] call GetPartyLocation ld a, [hli] ld [wOTTrademonDVs], a ld a, [hl] ld [wOTTrademonDVs + 1], a - ld a, [wceed] + ld a, [wCurTradePartyMon] ld [wCurPartyMon], a ld hl, wPartySpecies ld b, 0 ld c, a add hl, bc ld a, [hl] - ld [wceed], a + ld [wCurTradePartyMon], a xor a ; REMOVE_PARTY ld [wPokemonWithdrawDepositParameter], a @@ -1694,14 +1697,14 @@ LinkTrade: ld [wCurPartyMon], a ld a, TRUE ld [wForceEvolution], a - ld a, [wceee] + ld a, [wCurOTTradePartyMon] push af ld hl, wOTPartySpecies ld b, 0 ld c, a add hl, bc ld a, [hl] - ld [wceee], a + ld [wCurOTTradePartyMon], a ld c, 100 call DelayFrames @@ -2129,7 +2132,7 @@ CheckLinkTimeout_Receptionist: ld a, $1 ld [wPlayerLinkAction], a ld hl, wLinkTimeoutFrames - ld a, $3 + ld a, 3 ld [hli], a xor a ld [hl], a diff --git a/engine/link/mystery_gift.asm b/engine/link/mystery_gift.asm index dcea2e8c..f6ddc93a 100644 --- a/engine/link/mystery_gift.asm +++ b/engine/link/mystery_gift.asm @@ -1,3 +1,27 @@ +; hMGRole values +IR_RECEIVER EQU 1 +IR_SENDER EQU 2 + +; hMGStatusFlags error bits +MG_WRONG_CHECKSUM_F EQU 0 +MG_TIMED_OUT_F EQU 1 +MG_CANCELED_F EQU 4 +MG_WRONG_PREFIX_F EQU 7 + +; hMGStatusFlags values +MG_WRONG_CHECKSUM EQU 1 << MG_WRONG_CHECKSUM_F +MG_TIMED_OUT EQU 1 << MG_TIMED_OUT_F +MG_CANCELED EQU 1 << MG_CANCELED_F +MG_WRONG_PREFIX EQU 1 << MG_WRONG_PREFIX_F +MG_NOT_OKAY EQU MG_WRONG_CHECKSUM | MG_TIMED_OUT | MG_CANCELED | MG_WRONG_PREFIX +MG_OKAY EQU $ff ^ MG_NOT_OKAY +MG_START_END EQU %11111111 + +REGION_PREFIX EQU $96 +REGION_CODE EQU $90 ; USA + +MESSAGE_PREFIX EQU $5a + DoMysteryGift: call ClearTilemap call ClearSprites @@ -7,22 +31,24 @@ DoMysteryGift: ld de, .String_PressAToLink_BToCancel call PlaceString call WaitBGMap - farcall PrepMysteryGiftDataToSend - call MysteryGift_ClearTrainerData - ld a, $2 - ld [wc901], a - ld a, $14 - ld [wc902], a - ldh a, [rIE] - push af - call Function29fc9 + ; Prepare the first of two messages for wMysteryGiftPartnerData + farcall StageDataForMysteryGift + call ClearMysteryGiftTrainer + ld a, 2 + ld [wMysteryGiftMessageCount], a + ld a, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData + ld [wMysteryGiftStagedDataLength], a + ldh a, [rIE] + push af + call ExchangeMysteryGiftData ld d, a xor a ldh [rIF], a pop af ldh [rIE], a + push de call ClearTilemap call EnableLCD @@ -31,15 +57,16 @@ DoMysteryGift: call GetSGBLayout call SetPalettes pop de + hlcoord 2, 8 ld a, d ld de, .MysteryGiftCanceledText ; Link has been canceled - cp $10 + cp MG_CANCELED jp z, .LinkCanceled - cp $6c + cp MG_OKAY jp nz, .CommunicationError - ld a, [wc800] - cp 3 + ld a, [wMysteryGiftGameVersion] + cp POKEMON_PIKACHU_2_VERSION jr z, .skip_checks call .CheckAlreadyGotFiveGiftsToday ld hl, .MysteryGiftFiveADayText ; Only 5 gifts a day @@ -54,25 +81,27 @@ DoMysteryGift: ld a, [wMysteryGiftPartnerBackupItem] and a jr nz, .FriendNotReady - ld a, [wc800] - cp 3 + ld a, [wMysteryGiftGameVersion] + cp POKEMON_PIKACHU_2_VERSION jr z, .skip_append_save call .AddMysteryGiftPartnerID - ld a, [wc800] - cp 4 + ld a, [wMysteryGiftGameVersion] + cp 4 ; ??? jr z, .skip_append_save call .SaveMysteryGiftTrainerName .skip_append_save ld a, [wMysteryGiftPartnerSentDeco] and a - jr z, .item + jr z, .SentItem +; sent decoration ld a, [wMysteryGiftPartnerWhichDeco] ld c, a farcall MysteryGiftGetDecoration push bc - call MysteryGift_CheckAndSetDecorationAlreadyReceived + call CheckAndSetMysteryGiftDecorationAlreadyReceived pop bc - jr nz, .item + jr nz, .SentItem +; keep the decoration if it wasn't already received callfar GetDecorationName_c ld h, d ld l, e @@ -82,17 +111,17 @@ DoMysteryGift: ld hl, .MysteryGiftSentHomeText ; sent decoration to home jr .PrintTextAndExit -.item +.SentItem: call GetMysteryGiftBank ld a, [wMysteryGiftPartnerWhichItem] ld c, a - farcall MysteryGiftGetItemHeldEffect + farcall MysteryGiftGetItem ld a, c ld [sBackupMysteryGiftItem], a ld [wNamedObjectIndexBuffer], a call CloseSRAM call GetItemName - ld hl, .MysteryGiftSentText ; sent item + ld hl, .MysteryGiftSentText ; sent item/decoration jr .PrintTextAndExit .LinkCanceled: @@ -110,6 +139,7 @@ DoMysteryGift: .FriendNotReady: ld hl, .YourFriendIsNotReadyText ; friend not ready + ; fallthrough .PrintTextAndExit: call PrintText @@ -159,7 +189,7 @@ DoMysteryGift: .CheckAlreadyGotFiveGiftsToday: call GetMysteryGiftBank ld a, [sNumDailyMysteryGiftPartnerIDs] - cp $5 + cp MAX_MYSTERY_GIFT_PARTNERS jp CloseSRAM .CheckAlreadyGotAGiftFromThatPerson: @@ -195,9 +225,9 @@ DoMysteryGift: ld hl, sNumDailyMysteryGiftPartnerIDs ld a, [hl] inc [hl] - ld hl, sDailyMysteryGiftPartnerIDs ; inc hl + ld hl, sDailyMysteryGiftPartnerIDs ; could have done "inc hl" instead ld e, a - ld d, $0 + ld d, 0 add hl, de add hl, de ld a, [wMysteryGiftPartnerID] @@ -208,223 +238,264 @@ DoMysteryGift: .SaveMysteryGiftTrainerName: call GetMysteryGiftBank - ld a, $1 + ld a, TRUE ld [sMysteryGiftTrainerHouseFlag], a ld hl, wMysteryGiftPartnerName ld de, sMysteryGiftPartnerName ld bc, NAME_LENGTH call CopyBytes - ld a, $1 + assert sMysteryGiftPartnerName + NAME_LENGTH == sMysteryGiftUnusedFlag + ld a, TRUE ld [de], a inc de - ld hl, wMysteryGiftTrainerData - ld bc, (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 2 + assert sMysteryGiftUnusedFlag + 1 == sMysteryGiftTrainer + ld hl, wMysteryGiftTrainer + ld bc, wMysteryGiftTrainerEnd - wMysteryGiftTrainer call CopyBytes jp CloseSRAM -Function29fc9: +ExchangeMysteryGiftData: farcall ClearChannels - call Function2a18c + call InitializeIRCommunicationInterrupts -.loop2 - call Function2a1c4 - call Function2a20b +.restart + call BeginIRCommunication + call InitializeIRCommunicationRoles ldh a, [hMGStatusFlags] - cp $10 - jp z, Function2a103 - cp $6c - jr nz, .loop2 - - ldh a, [hPrintNumBuffer + 8] - cp $2 - jr z, Function2a055 - ld hl, hPrintNumBuffer - ld b, $1 - call Function2a184 - jr nz, .ly_loop - call Function2a07c - jp nz, Function2a103 - jr Function2a03d + cp MG_CANCELED + jp z, EndOrContinueMysteryGiftIRCommunication + cp MG_OKAY + jr nz, .restart + + ldh a, [hMGRole] + cp IR_SENDER + jr z, SenderExchangeMysteryGiftDataPayloads +; receiver + ld hl, hMGExchangedByte + ld b, 1 + call TryReceivingIRDataBlock + jr nz, .failed + call ReceiveMysteryGiftDataPayload_GotRegionPrefix + jp nz, EndOrContinueMysteryGiftIRCommunication + jr ReceiverExchangeMysteryGiftDataPayloads_GotPayload + +.failed ; Delay frame -.ly_loop +.wait_frame ldh a, [rLY] cp LY_VBLANK - jr c, .ly_loop + jr c, .wait_frame + ld c, LOW(rRP) - ld a, $c0 + ld a, rRP_ENABLE_READ_MASK ldh [c], a - ld b, 240 ; This might have been intended as a 4-second timeout buffer. - ; However, it is reset with each frame. -.loop3 - push bc - call MysteryGift_ReadJoypad - ld b, $2 + ld b, 60 * 4 ; 4 seconds +.continue + push bc + call MysteryGift_UpdateJoypad + ld b, 1 << rRP_RECEIVING ld c, LOW(rRP) - ; Delay frame -.ly_loop2 +.in_vblank ldh a, [c] and b ld b, a ldh a, [rLY] cp LY_VBLANK - jr nc, .ly_loop2 -.ly_loop3 + jr nc, .in_vblank +.wait_vblank ldh a, [c] and b ld b, a ldh a, [rLY] cp LY_VBLANK - jr c, .ly_loop3 - + jr c, .wait_vblank ld a, b pop bc + ; Restart if the 4-second timeout has elapsed dec b - jr z, .loop2 ; we never jump here + jr z, .restart + ; Restart if rRP is not receiving data or a - jr nz, .loop2 - ; Check if we've pressed the B button + jr nz, .restart + ; Check if we've pressed the B button to cancel ldh a, [hMGJoypadReleased] bit B_BUTTON_F, a - jr z, .loop3 - ld a, $10 + jr z, .continue + ld a, MG_CANCELED ldh [hMGStatusFlags], a - jp Function2a103 - -Function2a037: - call Function2a073 - jp nz, Function2a103 -; fallthrough -Function2a03d: - call Function2a166 - jp nz, Function2a103 - call Function2a0bb - jp nz, Function2a103 - call Function2a171 - jp nz, Function2a103 - call Function2a461 - jp Function2a103 - -Function2a055: - call Function2a0bb - jp nz, Function2a103 - call Function2a171 - jp nz, Function2a103 - call Function2a073 - jp nz, Function2a103 - call Function2a166 - jp nz, Function2a103 - call Function2a45c - jp Function2a103 - -Function2a073: - ld hl, hPrintNumBuffer - ld b, $1 - call Function2a184 + jp EndOrContinueMysteryGiftIRCommunication + +ReceiverExchangeMysteryGiftDataPayloads: + ; Receive the data payload + call ReceiveMysteryGiftDataPayload + jp nz, EndOrContinueMysteryGiftIRCommunication + ; fallthrough +ReceiverExchangeMysteryGiftDataPayloads_GotPayload: + ; Switch roles + call BeginSendingIRCommunication + jp nz, EndOrContinueMysteryGiftIRCommunication + ; Send the data payload + call SendMysteryGiftDataPayload + jp nz, EndOrContinueMysteryGiftIRCommunication + ; Switch roles + call BeginReceivingIRCommunication + jp nz, EndOrContinueMysteryGiftIRCommunication + ; Receive an empty block + call ReceiveEmptyIRDataBlock + jp EndOrContinueMysteryGiftIRCommunication + +SenderExchangeMysteryGiftDataPayloads: + ; Send the data payload + call SendMysteryGiftDataPayload + jp nz, EndOrContinueMysteryGiftIRCommunication + ; Switch roles + call BeginReceivingIRCommunication + jp nz, EndOrContinueMysteryGiftIRCommunication + ; Receive the data payload + call ReceiveMysteryGiftDataPayload + jp nz, EndOrContinueMysteryGiftIRCommunication + ; Switch roles + call BeginSendingIRCommunication + jp nz, EndOrContinueMysteryGiftIRCommunication + ; Send an empty block + call SendEmptyIRDataBlock + jp EndOrContinueMysteryGiftIRCommunication + +ReceiveMysteryGiftDataPayload: + ; Receive the region prefix + ld hl, hMGExchangedByte + ld b, 1 + call TryReceivingIRDataBlock ret nz -; fallthrough -Function2a07c: - call Function2a461 + ; fallthrough +ReceiveMysteryGiftDataPayload_GotRegionPrefix: + ; Receive an empty block + call ReceiveEmptyIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret nz - ldh a, [hPrintNumBuffer] - cp $96 - jp nz, Function2a160 - ld a, $90 - ldh [hPrintNumBuffer], a - call Function2a166 + ; Verify the received region prefix + ldh a, [hMGExchangedByte] + cp REGION_PREFIX + jp nz, WrongMysteryGiftRegion + ld a, REGION_CODE + ldh [hMGExchangedByte], a + ; Switch roles + call BeginSendingIRCommunication ret nz - ld hl, hPrintNumBuffer - ld b, $1 - call Function2a17c + ; Send the region code + ld hl, hMGExchangedByte + ld b, 1 + call TrySendingIRDataBlock ret nz - call Function2a45c + ; Send an empty block + call SendEmptyIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret nz - call Function2a171 + ; Switch roles + call BeginReceivingIRCommunication ret nz - ld hl, wMysteryGiftTrainerData - ld a, [wc902] + ; Receive the staged data + ld hl, wMysteryGiftTrainer + ld a, [wMysteryGiftStagedDataLength] ld b, a - call Function2a184 + call TryReceivingIRDataBlock ret nz - call Function2a461 + ; Receive an empty block + call ReceiveEmptyIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret -Function2a0bb: - ld a, $96 - ldh [hPrintNumBuffer], a - ld hl, hPrintNumBuffer - ld b, $1 - call Function2a17c +SendMysteryGiftDataPayload: + ; Send the region prefix + ld a, REGION_PREFIX + ldh [hMGExchangedByte], a + ld hl, hMGExchangedByte + ld b, 1 + call TrySendingIRDataBlock ret nz - call Function2a45c + ; Send an empty block + call SendEmptyIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret nz - call Function2a171 + ; Switch roles + call BeginReceivingIRCommunication ret nz - ld hl, hPrintNumBuffer - ld b, $1 - call Function2a184 + ; Receive the region code + ld hl, hMGExchangedByte + ld b, 1 + call TryReceivingIRDataBlock ret nz - call Function2a461 + ; Receive an empty block + call ReceiveEmptyIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret nz - ldh a, [hPrintNumBuffer] - cp $90 - jp nz, Function2a160 - call Function2a166 + ; Verify the received region code + ldh a, [hMGExchangedByte] + cp REGION_CODE + jp nz, WrongMysteryGiftRegion + ; Switch roles + call BeginSendingIRCommunication ret nz - ld hl, wLinkData - ld a, [wc902] + ; Send the staged data + ld hl, wMysteryGiftStaging + ld a, [wMysteryGiftStagedDataLength] ld b, a - call Function2a17c + call TrySendingIRDataBlock ret nz - call Function2a45c + ; Send an empty block + call SendEmptyIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret -Function2a103: +EndOrContinueMysteryGiftIRCommunication: nop ldh a, [hMGStatusFlags] - cp $10 + ; Quit if player canceled + cp MG_CANCELED jr z, .quit - cp $6c + ; Quit if there was a communication error + cp MG_OKAY jr nz, .quit - ld hl, wc901 + ; Quit if all messages are sent/received + ld hl, wMysteryGiftMessageCount dec [hl] jr z, .quit - ld hl, wMysteryGiftTrainerData + ; Quit if communicating with Pokémon Pikachu 2 device + ld hl, wMysteryGiftTrainer ld de, wMysteryGiftPartnerData ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData call CopyBytes - ld a, [wMysteryGiftTrainerData] - cp $3 + ld a, [wMysteryGiftTrainer] ; first byte is the version + cp POKEMON_PIKACHU_2_VERSION jr nc, .quit + + ; Prepare the second message for wMysteryGiftTrainer farcall StagePartyDataForMysteryGift - call MysteryGift_ClearTrainerData - ld a, $26 - ld [wc902], a - ldh a, [hPrintNumBuffer + 8] - cp $2 - jr z, .asm_2a143 - call Function2a171 - jr nz, Function2a103 - jp Function2a037 - -.asm_2a143 - call Function2a166 - jr nz, Function2a103 - jp Function2a055 - -.quit: + call ClearMysteryGiftTrainer + ld a, wMysteryGiftTrainerEnd - wMysteryGiftTrainer + ld [wMysteryGiftStagedDataLength], a + + ldh a, [hMGRole] + cp IR_SENDER + jr z, .sender +; receiver + call BeginReceivingIRCommunication + jr nz, EndOrContinueMysteryGiftIRCommunication + jp ReceiverExchangeMysteryGiftDataPayloads + +.sender + call BeginSendingIRCommunication + jr nz, EndOrContinueMysteryGiftIRCommunication + jp SenderExchangeMysteryGiftDataPayloads + +.quit xor a ldh [rIF], a ldh a, [rIE] @@ -434,50 +505,50 @@ Function2a103: call DelayFrame ldh a, [hMGStatusFlags] push af - call Function2a1ce + call EndIRCommunication pop af ret -Function2a160: - ld a, $80 +WrongMysteryGiftRegion: + ld a, MG_WRONG_PREFIX ldh [hMGStatusFlags], a and a ret -Function2a166: - call Function2a1c4 - call Function2a274 +BeginSendingIRCommunication: + call BeginIRCommunication + call SendIRHelloMessage ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret -Function2a171: - call Function2a1c4 - call Function2a22c +BeginReceivingIRCommunication: + call BeginIRCommunication + call ReceiveIRHelloMessage ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret -Function2a17c: - call Function2a2c1 +TrySendingIRDataBlock: + call SendIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret -Function2a184: - call Function2a385 +TryReceivingIRDataBlock: + call ReceiveIRDataBlock ldh a, [hMGStatusFlags] - cp $6c + cp MG_OKAY ret -Function2a18c: - call Function2a1a2 +InitializeIRCommunicationInterrupts: + call StartFastIRTimer ld a, 1 << TIMER ldh [rIE], a xor a ldh [rIF], a - call Function2a1c4 -; runs for ~$40400 cycles + call BeginIRCommunication +; waits for ~$40400 cycles = ~0.25 seconds xor a ld b, a .busy_wait @@ -487,69 +558,76 @@ Function2a18c: jr nz, .busy_wait ret -Function2a1a2: +StartFastIRTimer: +; Starts a 65,536 Hz timer that interrupts every 3 increments (21,845 Hz). xor a ldh [rTAC], a - ld a, $fe + ld a, -2 ldh [rTMA], a ldh [rTIMA], a - ld a, $2 + ld a, rTAC_65536_HZ ldh [rTAC], a - or $4 + or 1 << rTAC_ON ldh [rTAC], a ret -Function2a1b4: +StartSlowIRTimer: +; Starts a 65,536 Hz timer that interrupts every 256 increments (256 Hz). xor a ldh [rTAC], a ldh [rTMA], a ldh [rTIMA], a - ld a, $2 + ld a, rTAC_65536_HZ ldh [rTAC], a - or $4 + or 1 << rTAC_ON ldh [rTAC], a ret -Function2a1c4: - ld a, $c0 - call Function2a2ba - ld a, $1 - ldh [hPrintNumBuffer + 8], a +BeginIRCommunication: + ld a, rRP_ENABLE_READ_MASK + call ToggleIRCommunication + ld a, IR_RECEIVER + ldh [hMGRole], a ret -Function2a1ce: +EndIRCommunication: xor a - call Function2a2ba - ld a, $2 + call ToggleIRCommunication + ld a, rTAC_65536_HZ ldh [rTAC], a ret -Function2a1d7: +ReceiveInfraredLEDOn: +; Count interrupts of the partner's IR LED on; quit after 256-d interrupts. +.recv_loop inc d ret z xor a ldh [rIF], a halt ldh a, [c] - bit 1, a - jr z, Function2a1d7 + bit rRP_RECEIVING, a + jr z, .recv_loop or a ret -Function2a1e5: +ReceiveInfraredLEDOff: +; Count interrupts of the partner's IR LED off; quit after 256-d interrupts. +.no_recv_loop inc d ret z xor a ldh [rIF], a halt ldh a, [c] - bit 1, a - jr nz, Function2a1e5 + bit rRP_RECEIVING, a + jr nz, .no_recv_loop or a ret -Function2a1f3: - ld a, $c1 +SendInfraredLEDOn: +; Holds the IR LED on for d-1 interrupts. + ld a, rRP_ENABLE_READ_MASK | (1 << rRP_LED_ON) ldh [c], a .wait dec d @@ -559,8 +637,9 @@ Function2a1f3: halt jr .wait -Function2a1ff: - ld a, $c0 +SendInfraredLEDOff: +; Holds the IR LED off for d-1 interrupts. + ld a, rRP_ENABLE_READ_MASK ldh [c], a .wait dec d @@ -570,175 +649,204 @@ Function2a1ff: halt jr .wait -Function2a20b: - ld d, $0 +InitializeIRCommunicationRoles: + ld d, 0 ld e, d - ld a, $1 - ldh [hPrintNumBuffer + 8], a + + ld a, IR_RECEIVER + ldh [hMGRole], a .loop - call MysteryGift_ReadJoypad - ld b, $2 + call MysteryGift_UpdateJoypad + ld b, 1 << rRP_RECEIVING ld c, LOW(rRP) + ; Check if we've pressed the B button to cancel ldh a, [hMGJoypadReleased] bit B_BUTTON_F, a - jr z, .next - ld a, $10 + jr z, .not_canceled + ld a, MG_CANCELED ldh [hMGStatusFlags], a ret -.next - bit 0, a - jr nz, Function2a268 +.not_canceled + ; Check if we've pressed the A button to start sending + bit A_BUTTON_F, a + jr nz, SendIRHelloMessageAfterDelay + ; If rRP is not receiving data, keep checking for input ldh a, [c] and b jr nz, .loop + ; fallthrough -Function2a22c: +ReceiveIRHelloMessage: ld c, LOW(rRP) - ld d, $0 + ld d, 0 ld e, d - call Function2a1e5 - jp z, Function2a370 + + call ReceiveInfraredLEDOff + jp z, InfraredLEDReceiveTimedOut ld d, e - call Function2a1d7 - jp z, Function2a370 - call Function2a1e5 - jp z, Function2a370 - call Function2a1d7 - jp z, Function2a370 - ld a, $6c + call ReceiveInfraredLEDOn + jp z, InfraredLEDReceiveTimedOut + call ReceiveInfraredLEDOff + jp z, InfraredLEDReceiveTimedOut + call ReceiveInfraredLEDOn + jp z, InfraredLEDReceiveTimedOut + + ld a, MG_OKAY ldh [hMGStatusFlags], a - ld d, $3d - call Function2a1ff - ld d, $5 - call Function2a1f3 - ld d, $15 - call Function2a1ff - ld d, $5 - call Function2a1f3 - ld d, $5 - call Function2a1ff + + ld d, 61 + call SendInfraredLEDOff + ld d, 5 + call SendInfraredLEDOn + ld d, 21 + call SendInfraredLEDOff + ld d, 5 + call SendInfraredLEDOn + ld d, 5 + call SendInfraredLEDOff ret -Function2a268: +SendIRHelloMessageAfterDelay: ; Wait a random amount of time call Random ld e, a and $f ld d, a -.loop +.wait_loop dec de ld a, d or e - jr nz, .loop -Function2a274: - ld a, $2 - ldh [hPrintNumBuffer + 8], a + jr nz, .wait_loop + ; fallthrough + +SendIRHelloMessage: + ld a, IR_SENDER + ldh [hMGRole], a + ld c, LOW(rRP) - ld d, $0 + ld d, 0 ld e, d - ld d, $3d - call Function2a1ff - ld d, $5 - call Function2a1f3 - ld d, $15 - call Function2a1ff - ld d, $5 - call Function2a1f3 - ld d, $5 - call Function2a1ff + + ld d, 61 + call SendInfraredLEDOff + ld d, 5 + call SendInfraredLEDOn + ld d, 21 + call SendInfraredLEDOff + ld d, 5 + call SendInfraredLEDOn + ld d, 5 + call SendInfraredLEDOff + ld d, e - call Function2a1e5 - jp z, Function2a370 + call ReceiveInfraredLEDOff + jp z, InfraredLEDReceiveTimedOut ld d, e - call Function2a1d7 - jp z, Function2a370 - call Function2a1e5 - jp z, Function2a370 - call Function2a1d7 - jp z, Function2a370 - ld d, $3d - call Function2a1ff - ld a, $6c + call ReceiveInfraredLEDOn + jp z, InfraredLEDReceiveTimedOut + call ReceiveInfraredLEDOff + jp z, InfraredLEDReceiveTimedOut + call ReceiveInfraredLEDOn + jp z, InfraredLEDReceiveTimedOut + + ld d, 61 + call SendInfraredLEDOff + + ld a, MG_OKAY ldh [hMGStatusFlags], a ret -Function2a2ba: +ToggleIRCommunication: ldh [rRP], a - ld a, $ff + ld a, MG_START_END ldh [hMGStatusFlags], a ret -Function2a2c1: +SendIRDataBlock: +; Send b bytes of data in three messages: +; 1. two bytes: MESSAGE_PREFIX and the length b +; 2. b bytes: the actual data +; 3. two bytes: a little-endian checksum +; Then receive a one-byte acknowledgement message: the status. xor a - ldh [hPrintNumBuffer + 4], a - ldh [hPrintNumBuffer + 5], a + ldh [hMGChecksum + 0], a + ldh [hMGChecksum + 1], a push hl push bc ld c, LOW(rRP) - ld d, $3d - call Function2a1ff - ld hl, hPrintNumBuffer + 1 - ld a, $5a + ld d, 61 + call SendInfraredLEDOff + ld hl, hMGExchangedWord + ld a, MESSAGE_PREFIX ld [hli], a ld [hl], b dec hl - ld b, $2 - call Function2a304 + ld b, 2 + call SendIRDataMessage pop bc pop hl - call Function2a304 - ldh a, [hPrintNumBuffer + 4] - ldh [hPrintNumBuffer + 1], a - ldh a, [hPrintNumBuffer + 5] - ldh [hPrintNumBuffer + 2], a + call SendIRDataMessage + ldh a, [hMGChecksum + 0] + ldh [hMGExchangedWord + 0], a + ldh a, [hMGChecksum + 1] + ldh [hMGExchangedWord + 1], a push hl - ld hl, hPrintNumBuffer + 1 - ld b, $2 - call Function2a304 + ld hl, hMGExchangedWord + ld b, 2 + call SendIRDataMessage ld hl, hMGStatusFlags - ld b, $1 - call Function2a3dd - ldh a, [hPrintNumBuffer + 1] - ldh [hPrintNumBuffer + 4], a - ldh a, [hPrintNumBuffer + 2] - ldh [hPrintNumBuffer + 5], a + ld b, 1 + call ReceiveIRDataMessage + ldh a, [hMGExchangedWord + 0] + ldh [hMGChecksum + 0], a + ldh a, [hMGExchangedWord + 1] + ldh [hMGChecksum + 1], a pop hl ret -Function2a304: +SendIRDataMessage: +; Send b bytes of data one bit at a time, and update the checksum. ld c, LOW(rRP) - ld d, $5 - call Function2a1ff - ld d, $5 - call Function2a1f3 - ld d, $15 - call Function2a1ff + + ld d, 5 + call SendInfraredLEDOff + ld d, 5 + call SendInfraredLEDOn + ld d, 21 + call SendInfraredLEDOff + + ; b = -b - 1; then count up to 0 ld a, b cpl ld b, a - ld a, $f4 + + ld a, -12 ldh [rTMA], a -.main_loop +.byte_loop inc b jr z, .done - ld a, $8 - ldh [hPrintNumBuffer + 3], a + ld a, 8 + ldh [hMGNumBits], a + ; Get the next data byte ld a, [hli] ld e, a - ldh a, [hPrintNumBuffer + 4] + ; Add the next data byte to the checksum + ldh a, [hMGChecksum + 0] add e - ldh [hPrintNumBuffer + 4], a - ldh a, [hPrintNumBuffer + 5] + ldh [hMGChecksum + 0], a + ldh a, [hMGChecksum + 1] adc 0 - ldh [hPrintNumBuffer + 5], a -.inner_loop + ldh [hMGChecksum + 1], a + ; Send each bit of the byte +.bit_loop xor a ldh [rIF], a halt - ld a, $c1 + ld a, rRP_ENABLE_READ_MASK | (1 << rRP_LED_ON) ldh [rRP], a - ld d, $1 + ; Turn the LED off for longer if the bit is 1 + ld d, 1 ld a, e rlca ld e, a @@ -746,9 +854,9 @@ Function2a304: inc d .wait ldh a, [rTIMA] - cp $f8 + cp -8 jr c, .wait - ld a, $c0 + ld a, rRP_ENABLE_READ_MASK ldh [rRP], a dec d jr z, .no_halt @@ -756,133 +864,145 @@ Function2a304: ldh [rIF], a halt .no_halt - ldh a, [hPrintNumBuffer + 3] + ldh a, [hMGNumBits] dec a - jr z, .main_loop - ldh [hPrintNumBuffer + 3], a - jr .inner_loop + jr z, .byte_loop + ldh [hMGNumBits], a + jr .bit_loop .done - ld a, $fe + ld a, -2 ldh [rTMA], a xor a ldh [rIF], a halt - ld d, $5 - call Function2a1f3 - ld d, $11 - call Function2a1ff + + ld d, 5 + call SendInfraredLEDOn + ld d, 17 + call SendInfraredLEDOff ret -Function2a370: +InfraredLEDReceiveTimedOut: ldh a, [hMGStatusFlags] - or $2 + or MG_TIMED_OUT ldh [hMGStatusFlags], a ret -Function2a377: +ReceivedWrongIRChecksum: ldh a, [hMGStatusFlags] - or $1 + or MG_WRONG_CHECKSUM ldh [hMGStatusFlags], a ret -Function2a37e: +ReceivedWrongIRMessagePrefix: ldh a, [hMGStatusFlags] - or $80 + or MG_WRONG_PREFIX ldh [hMGStatusFlags], a ret -Function2a385: +ReceiveIRDataBlock: +; Receive b bytes of data in three messages: +; 1. two bytes: MESSAGE_PREFIX and the length b +; 2. b bytes: the actual data +; 3. two bytes: a little-endian checksum +; Then send a one-byte acknowledgement message: the status. xor a - ldh [hPrintNumBuffer + 4], a - ldh [hPrintNumBuffer + 5], a + ldh [hMGChecksum + 0], a + ldh [hMGChecksum + 1], a push bc push hl - ld hl, hPrintNumBuffer + 1 - ld b, $2 - call Function2a3dd - ldh a, [hPrintNumBuffer + 2] - ldh [hPrintNumBuffer + 7], a + ld hl, hMGExchangedWord + ld b, 2 + call ReceiveIRDataMessage + ldh a, [hMGExchangedWord + 1] + ldh [hMGUnusedMsgLength], a ld b, a pop hl pop af cp b - jp c, Function2a37e - ldh a, [hPrintNumBuffer + 1] - cp $5a - jp nz, Function2a37e - call Function2a3dd - ldh a, [hPrintNumBuffer + 4] + jp c, ReceivedWrongIRMessagePrefix + ldh a, [hMGExchangedWord + 0] + cp MESSAGE_PREFIX + jp nz, ReceivedWrongIRMessagePrefix + call ReceiveIRDataMessage + ldh a, [hMGChecksum + 0] ld d, a - ldh a, [hPrintNumBuffer + 5] + ldh a, [hMGChecksum + 1] ld e, a push hl push de - ld hl, hPrintNumBuffer + 1 - ld b, $2 - call Function2a3dd + ld hl, hMGExchangedWord + ld b, 2 + call ReceiveIRDataMessage pop de - ld hl, hPrintNumBuffer + 1 + ld hl, hMGExchangedWord ld a, [hli] xor d ld b, a ld a, [hl] xor e or b - call nz, Function2a377 + call nz, ReceivedWrongIRChecksum push de - ld d, $3d - call Function2a1ff + + ld d, 61 + call SendInfraredLEDOff + ld hl, hMGStatusFlags - ld b, $1 - call Function2a304 + ld b, 1 + call SendIRDataMessage + pop de pop hl ld a, d - ldh [hPrintNumBuffer + 4], a + ldh [hMGChecksum + 0], a ld a, e - ldh [hPrintNumBuffer + 5], a + ldh [hMGChecksum + 1], a ret -Function2a3dd: +ReceiveIRDataMessage: ld c, LOW(rRP) - ld d, $0 - call Function2a1e5 - jp z, Function2a370 - ld d, $0 - call Function2a1d7 - jp z, Function2a370 - ld d, $0 - call Function2a1e5 - jp z, Function2a370 + + ld d, 0 + call ReceiveInfraredLEDOff + jp z, InfraredLEDReceiveTimedOut + ld d, 0 + call ReceiveInfraredLEDOn + jp z, InfraredLEDReceiveTimedOut + ld d, 0 + call ReceiveInfraredLEDOff + jp z, InfraredLEDReceiveTimedOut + ld a, b cpl ld b, a xor a ldh [hMGPrevTIMA], a - call Function2a1b4 + + call StartSlowIRTimer .main_loop inc b jr z, .done - ld a, $8 - ldh [hPrintNumBuffer + 3], a + ld a, 8 + ldh [hMGNumBits], a .inner_loop - ld d, $0 -.wait_one + ld d, 0 +.recv_loop inc d - jr z, .got_one + jr z, .recv_done ldh a, [c] - bit 1, a - jr z, .wait_one - ld d, $0 -.got_one -.wait_zero + bit rRP_RECEIVING, a + jr z, .recv_loop + ld d, 0 +.recv_done +.send_loop inc d - jr z, .got_zero + jr z, .send_done ldh a, [c] - bit 1, a - jr nz, .wait_zero -.got_zero + bit rRP_RECEIVING, a + jr nz, .send_loop +.send_done ldh a, [hMGPrevTIMA] ld d, a ldh a, [rTIMA] @@ -895,9 +1015,9 @@ Function2a3dd: .zero res 0, e .ok - ldh a, [hPrintNumBuffer + 3] + ldh a, [hMGNumBits] dec a - ldh [hPrintNumBuffer + 3], a + ldh [hMGNumBits], a jr z, .continue ld a, e rlca @@ -907,34 +1027,35 @@ Function2a3dd: .continue ld a, e ld [hli], a - ldh a, [hPrintNumBuffer + 4] + ldh a, [hMGChecksum + 0] add e - ldh [hPrintNumBuffer + 4], a - ldh a, [hPrintNumBuffer + 5] + ldh [hMGChecksum + 0], a + ldh a, [hMGChecksum + 1] adc 0 - ldh [hPrintNumBuffer + 5], a + ldh [hMGChecksum + 1], a jr .main_loop .done - call Function2a1a2 + call StartFastIRTimer xor a ldh [rIF], a - ld d, $0 - call Function2a1d7 - jp z, Function2a370 - ld d, $10 - call Function2a1ff + ld d, 0 + call ReceiveInfraredLEDOn + jp z, InfraredLEDReceiveTimedOut + + ld d, 16 + call SendInfraredLEDOff ret -Function2a45c: - ld b, $0 - jp Function2a2c1 +SendEmptyIRDataBlock: + ld b, 0 + jp SendIRDataBlock -Function2a461: - ld b, $0 - jp Function2a385 +ReceiveEmptyIRDataBlock: + ld b, 0 + jp ReceiveIRDataBlock -MysteryGift_ReadJoypad: +MysteryGift_UpdateJoypad: ; We can only get four inputs at a time. ; We take d-pad first for no particular reason. ld a, R_DPAD @@ -979,9 +1100,10 @@ endr ldh [rJOYP], a ret -MysteryGift_CheckAndSetDecorationAlreadyReceived: +CheckAndSetMysteryGiftDecorationAlreadyReceived: +; Return nz if decoration c was already received; otherwise receive it. call GetMysteryGiftBank - ld d, $0 + ld d, 0 ld b, CHECK_FLAG ld hl, sMysteryGiftDecorationsReceived lda_predef SmallFarFlagAction @@ -1001,12 +1123,12 @@ MysteryGift_CheckAndSetDecorationAlreadyReceived: xor a ret -MysteryGift_CopyReceivedDecosToPC: +CopyMysteryGiftReceivedDecorationsToPC: call GetMysteryGiftBank - ld c, $0 + ld c, 0 .loop push bc - ld d, $0 + ld d, 0 ld b, CHECK_FLAG ld hl, sMysteryGiftDecorationsReceived predef SmallFarFlagAction @@ -1020,57 +1142,68 @@ MysteryGift_CopyReceivedDecosToPC: .skip inc c ld a, c - cp TrophyIDs - DecorationIDs + cp NUM_NON_TROPHY_DECOS jr c, .loop jp CloseSRAM UnlockMysteryGift: +; If [sMysteryGiftUnlocked] was -1, this sets both +; [sMysteryGiftUnlocked] and [sMysteryGiftItem] to 0. call GetMysteryGiftBank ld hl, sMysteryGiftUnlocked ld a, [hl] inc a jr nz, .ok ld [hld], a + assert sMysteryGiftUnlocked - 1 == sMysteryGiftItem ld [hl], a .ok jp CloseSRAM -Function2a4f6: +ResetDailyMysteryGiftLimitIfUnlocked: call GetMysteryGiftBank ld a, [sNumDailyMysteryGiftPartnerIDs] - cp $ff - jr z, .okay + cp -1 ; locked? + jr z, .dont_clear xor a ld [sNumDailyMysteryGiftPartnerIDs], a -.okay +.dont_clear jp CloseSRAM BackupMysteryGift: +; Copies [sMysteryGiftItem] to [sBackupMysteryGiftItem], +; and [sMysteryGiftUnlocked] to [sNumDailyMysteryGiftPartnerIDs]. call GetMysteryGiftBank ld hl, sMysteryGiftItem ld de, sBackupMysteryGiftItem ld a, [hli] ld [de], a inc de + assert sMysteryGiftItem + 1 == sMysteryGiftUnlocked + assert sBackupMysteryGiftItem + 1 == sNumDailyMysteryGiftPartnerIDs ld a, [hl] ld [de], a jp CloseSRAM RestoreMysteryGift: +; Copies [sBackupMysteryGiftItem] to [sMysteryGiftItem], +; and [sNumDailyMysteryGiftPartnerIDs] to [sMysteryGiftUnlocked]. call GetMysteryGiftBank ld hl, sBackupMysteryGiftItem ld de, sMysteryGiftItem ld a, [hli] ld [de], a inc de + assert sBackupMysteryGiftItem + 1 == sNumDailyMysteryGiftPartnerIDs + assert sMysteryGiftItem + 1 == sMysteryGiftUnlocked ld a, [hl] ld [de], a jp CloseSRAM -MysteryGift_ClearTrainerData: - ld hl, wMysteryGiftTrainerData +ClearMysteryGiftTrainer: + ld hl, wMysteryGiftTrainer xor a - ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData + ld b, wMysteryGiftTrainerEnd - wMysteryGiftTrainer .loop ld [hli], a dec b @@ -1078,5 +1211,5 @@ MysteryGift_ClearTrainerData: ret GetMysteryGiftBank: - ld a, BANK(sBackupMysteryGiftItem) + ld a, BANK(sMysteryGiftData) jp OpenSRAM diff --git a/engine/link/mystery_gift_2.asm b/engine/link/mystery_gift_2.asm index 493db05c..af3715e0 100644 --- a/engine/link/mystery_gift_2.asm +++ b/engine/link/mystery_gift_2.asm @@ -1,24 +1,24 @@ -PrepMysteryGiftDataToSend: +StageDataForMysteryGift: ld de, wMysteryGiftStaging - ld a, $1 + GS_VERSION + ld a, GS_VERSION + 1 ld [de], a - inc de ; wc701 + inc de ; wMysteryGiftStaging+1 ld a, BANK(sGameData) call OpenSRAM ld hl, sPlayerData + wPlayerID - wPlayerData ld a, [hli] ld [de], a ld b, a - inc de ; wc702 + inc de ; wMysteryGiftStaging+2 ld a, [hl] ld [de], a ld c, a - inc de ; wc703 + inc de ; wMysteryGiftStaging+3 push bc ld hl, sPlayerData + wPlayerName - wPlayerData ld bc, NAME_LENGTH call CopyBytes - push de ; wc70e + push de ; wMysteryGiftStaging+14 ld hl, sPokemonData + wPokedexCaught - wPokemonData ld b, wEndPokedexCaught - wPokedexCaught call CountSetBits @@ -26,30 +26,30 @@ PrepMysteryGiftDataToSend: pop bc ld a, [wNumSetBits] ld [de], a - inc de ; wc70f + inc de ; wMysteryGiftStaging+15 call CloseSRAM call Random and 1 ld [de], a - inc de ; wc710 + inc de ; wMysteryGiftStaging+16 call .RandomSample ld [de], a - inc de ; wc711 + inc de ; wMysteryGiftStaging+17 ld a, c ld c, b ld b, a call .RandomSample ld [de], a - inc de ; wc712 + inc de ; wMysteryGiftStaging+18 ld a, BANK(sBackupMysteryGiftItem) call OpenSRAM ld a, [sBackupMysteryGiftItem] ld [de], a inc de - ld a, [sBackupMysteryGiftItem + 1] + ld a, [sNumDailyMysteryGiftPartnerIDs] ld [de], a - ld a, $14 - ld [wc900], a + ld a, wMysteryGiftPlayerDataEnd - wMysteryGiftPlayerData + ld [wUnusedMysteryGiftStagedDataLength], a call CloseSRAM ld hl, wMysteryGiftStaging ld de, wMysteryGiftPlayerData @@ -121,7 +121,7 @@ PrepMysteryGiftDataToSend: pop de ret -MysteryGiftGetItemHeldEffect: +MysteryGiftGetItem: ld a, c cp MysteryGiftItems.End - MysteryGiftItems jr nc, MysteryGiftFallbackItem diff --git a/engine/link/mystery_gift_3.asm b/engine/link/mystery_gift_3.asm index bc12d9c8..4a8d92c4 100644 --- a/engine/link/mystery_gift_3.asm +++ b/engine/link/mystery_gift_3.asm @@ -45,8 +45,8 @@ StagePartyDataForMysteryGift: .party_end ld a, -1 ld [de], a - ld a, $26 - ld [wc900], a + ld a, wMysteryGiftTrainerEnd - wMysteryGiftTrainer + ld [wUnusedMysteryGiftStagedDataLength], a jp CloseSRAM InitMysteryGiftLayout: diff --git a/engine/link/time_capsule.asm b/engine/link/time_capsule.asm index 158e7ec9..3c1cfb5f 100644 --- a/engine/link/time_capsule.asm +++ b/engine/link/time_capsule.asm @@ -1,11 +1,11 @@ ; These functions seem to be related to backwards compatibility ValidateOTTrademon: - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld hl, wOTPartyMon1Species call GetPartyLocation push hl - ld a, [wceee] + ld a, [wCurOTTradePartyMon] inc a ld c, a ld b, 0 @@ -30,7 +30,7 @@ ValidateOTTrademon: cp LINK_TIMECAPSULE jr nz, .normal ld hl, wOTPartySpecies - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld c, a ld b, 0 add hl, bc @@ -65,11 +65,11 @@ ValidateOTTrademon: ret CheckAnyOtherAliveMonsForTrade: - ld a, [wceed] + ld a, [wCurTradePartyMon] ld d, a ld a, [wPartyCount] ld b, a - ld c, $0 + ld c, 0 .loop ld a, c cp d @@ -87,7 +87,7 @@ CheckAnyOtherAliveMonsForTrade: inc c dec b jr nz, .loop - ld a, [wceee] + ld a, [wCurOTTradePartyMon] ld hl, wOTPartyMon1HP call GetPartyLocation ld a, [hli] diff --git a/engine/menus/intro_menu.asm b/engine/menus/intro_menu.asm index 2155bdc3..9b744f72 100644 --- a/engine/menus/intro_menu.asm +++ b/engine/menus/intro_menu.asm @@ -87,12 +87,13 @@ _ResetWRAM: ld [wRoamMon2MapNumber], a ld [wRoamMon3MapNumber], a - ld a, BANK(sMysteryGiftItem) + ld a, BANK(sMysteryGiftItem) ; aka BANK(sMysteryGiftUnlocked) call OpenSRAM ld hl, sMysteryGiftItem xor a ld [hli], a - dec a + assert sMysteryGiftItem + 1 == sMysteryGiftUnlocked + dec a ; -1 ld [hl], a call CloseSRAM @@ -280,7 +281,7 @@ Continue: ld c, 20 call DelayFrames farcall JumpRoamMons - farcall MysteryGift_CopyReceivedDecosToPC + farcall CopyMysteryGiftReceivedDecorationsToPC farcall ClockContinue ld a, [wSpawnAfterChampion] cp SPAWN_LANCE @@ -343,8 +344,8 @@ FinishContinueFunction: .loop xor a ld [wDontPlayMapMusicOnReload], a - ld hl, wGameTimerPause - set GAMETIMERPAUSE_TIMER_PAUSED_F, [hl] + ld hl, wGameTimerPaused + set GAME_TIMER_PAUSED_F, [hl] farcall OverworldLoop ld a, [wSpawnAfterChampion] cp SPAWN_RED diff --git a/engine/menus/main_menu.asm b/engine/menus/main_menu.asm index 6f8727a7..eb34cb26 100644 --- a/engine/menus/main_menu.asm +++ b/engine/menus/main_menu.asm @@ -28,8 +28,8 @@ MainMenu: call ClearTilemapEtc ld b, SCGB_DIPLOMA call GetSGBLayout - ld hl, wGameTimerPause - res GAMETIMERPAUSE_TIMER_PAUSED_F, [hl] + ld hl, wGameTimerPaused + res GAME_TIMER_PAUSED_F, [hl] call MainMenu_GetWhichMenu ld [wWhichIndexSet], a call MainMenu_PrintCurrentTimeAndDay @@ -132,7 +132,7 @@ MainMenu_GetWhichMenu: ld a, BANK(sNumDailyMysteryGiftPartnerIDs) call OpenSRAM ld a, [sNumDailyMysteryGiftPartnerIDs] - cp -1 + cp -1 ; locked? call CloseSRAM ld a, MAINMENU_CONTINUE ret z @@ -218,20 +218,19 @@ MainMenu_PrintCurrentTimeAndDay: call PrintNum ret -.min -; unused +.minString: ; unreferenced db "min.@" .PrintTimeNotSet: hlcoord 1, 14 - ld de, .TimeNotSet + ld de, .TimeNotSetString call PlaceString ret -.TimeNotSet: +.TimeNotSetString: db "TIME NOT SET@" -.MainMenuTimeUnknownText: +.MainMenuTimeUnknownText: ; unreferenced text_far _MainMenuTimeUnknownText text_end diff --git a/engine/menus/menu_2.asm b/engine/menus/menu_2.asm index 6566e48d..83040f84 100644 --- a/engine/menus/menu_2.asm +++ b/engine/menus/menu_2.asm @@ -109,7 +109,8 @@ CoinString: db "COIN@" ShowMoney_TerminatorString: db "@" - db "@" ; unused +UnusedEmptyString: ; unreferenced + db "@" StartMenu_PrintSafariGameStatus: ; unreferenced ld hl, wOptions @@ -157,18 +158,18 @@ StartMenu_PrintBugContestStatus: set NO_TEXT_SCROLL, [hl] call StartMenu_DrawBugContestStatusBox hlcoord 1, 5 - ld de, .Balls_EN + ld de, .BallsString call PlaceString hlcoord 8, 5 ld de, wParkBallsRemaining lb bc, PRINTNUM_LEFTALIGN | 1, 2 call PrintNum hlcoord 1, 1 - ld de, .CAUGHT + ld de, .CaughtString call PlaceString ld a, [wContestMon] and a - ld de, .None + ld de, .NoneString jr z, .no_contest_mon ld [wNamedObjectIndexBuffer], a call GetPokemonName @@ -180,7 +181,7 @@ StartMenu_PrintBugContestStatus: and a jr z, .skip_level hlcoord 1, 3 - ld de, .LEVEL + ld de, .LevelString call PlaceString ld a, [wContestMonLevel] ld h, b @@ -194,15 +195,15 @@ StartMenu_PrintBugContestStatus: ld [wOptions], a ret -.Balls_JP: +.BallsJPString: ; unreferenced db "ボール こ@" -.CAUGHT: +.CaughtString: db "CAUGHT@" -.Balls_EN: +.BallsString: db "BALLS:@" -.None: +.NoneString: db "None@" -.LEVEL: +.LevelString: db "LEVEL@" Kurt_SelectApricorn: diff --git a/engine/menus/naming_screen.asm b/engine/menus/naming_screen.asm index a0b5cba3..39d930ab 100644 --- a/engine/menus/naming_screen.asm +++ b/engine/menus/naming_screen.asm @@ -253,6 +253,7 @@ NamingScreen_InitText: NamingScreen_ApplyTextInputMode: call NamingScreen_IsTargetBox jr nz, .not_box + assert BoxNameInputLower - NameInputLower == BoxNameInputUpper - NameInputUpper ld hl, BoxNameInputLower - NameInputLower add hl, de ld d, h @@ -865,7 +866,7 @@ INCBIN "gfx/naming_screen/cursor.2bpp" INCLUDE "data/text/name_input_chars.asm" -NamingScreenGFX_End: ; unused +NamingScreenGFX_End: ; unreferenced INCBIN "gfx/naming_screen/end.1bpp" NamingScreenGFX_MiddleLine: diff --git a/engine/menus/trainer_card.asm b/engine/menus/trainer_card.asm index 6f2ef316..1610749c 100644 --- a/engine/menus/trainer_card.asm +++ b/engine/menus/trainer_card.asm @@ -44,10 +44,10 @@ TrainerCard: call ClearTilemap call DisableLCD - ld hl, ChrisCardPic + ld hl, ChrisPicAndTrainerCardGFX ld de, vTiles2 - ld bc, 41 tiles - ld a, BANK(ChrisCardPic) + ld bc, (35 + 6) tiles + ld a, BANK(ChrisPicAndTrainerCardGFX) call FarCopyBytes ld hl, CardStatusGFX @@ -307,7 +307,8 @@ TrainerCard_Page1_PrintDexCaught_GameTime: db "#DEX" next "PLAY TIME@" - db "@" ; unused +.Unused: ; unreferenced + db "@" .Badges: db "BADGES▶@" @@ -619,8 +620,10 @@ TrainerCard_JohtoBadgesOAM: db $1c, $20, $24, $20 | (1 << 7) db $1c | (1 << 7), $20, $24, $20 | (1 << 7) -ChrisCardPic: INCBIN "gfx/trainer_card/chris_card.2bpp" -CardGFX: INCBIN "gfx/trainer_card/trainer_card.2bpp" +ChrisPicAndTrainerCardGFX: +INCBIN "gfx/trainer_card/chris_card.2bpp" +INCBIN "gfx/trainer_card/trainer_card.2bpp" + CardStatusGFX: INCBIN "gfx/trainer_card/card_status.2bpp" LeaderGFX: INCBIN "gfx/trainer_card/leaders.2bpp" diff --git a/engine/movie/credits.asm b/engine/movie/credits.asm index 1c8bc31f..a1b91d7e 100644 --- a/engine/movie/credits.asm +++ b/engine/movie/credits.asm @@ -193,7 +193,7 @@ Credits_RequestGFX: xor a ldh [hBGMapMode], a ld a, 8 - ld [wRequested2bpp], a + ld [wRequested2bppSize], a jp Credits_Next Credits_LYOverride: diff --git a/engine/movie/evolution_animation.asm b/engine/movie/evolution_animation.asm index e6d975b0..b3af9a72 100644 --- a/engine/movie/evolution_animation.asm +++ b/engine/movie/evolution_animation.asm @@ -65,7 +65,6 @@ EvolutionAnimation: ld c, TRUE call .GetSGBLayout -.AnimationSequence: call ClearJoypad lb bc, 1, 16 ; flash b times, wait c frames in between .loop diff --git a/engine/movie/intro.asm b/engine/movie/intro.asm index 6ef0a933..7ff23fce 100644 --- a/engine/movie/intro.asm +++ b/engine/movie/intro.asm @@ -719,7 +719,8 @@ IntroScene9: db %00000000 db -1 - ret ; unused +Intro_DummyFunction: ; unreferenced + ret Intro_InitNote: ld a, [wIntroSpriteStateFlag] diff --git a/engine/movie/trade_animation.asm b/engine/movie/trade_animation.asm index 6877514a..f99e9e0c 100644 --- a/engine/movie/trade_animation.asm +++ b/engine/movie/trade_animation.asm @@ -212,7 +212,7 @@ DoTradeAnimation: jr nz, .finished call .DoTradeAnimCommand callfar PlaySpriteAnimations - ld hl, wce65 + ld hl, wFrameCounter2 inc [hl] call DelayFrame and a @@ -1269,7 +1269,7 @@ LinkTradeAnim_LoadTradeMonSpecies: ret TradeAnim_FlashBGPals: - ld a, [wce65] + ld a, [wFrameCounter2] and $7 ret nz ldh a, [rBGP] diff --git a/engine/overworld/cmd_queue.asm b/engine/overworld/cmd_queue.asm index 6a598438..1994220e 100644 --- a/engine/overworld/cmd_queue.asm +++ b/engine/overworld/cmd_queue.asm @@ -148,7 +148,7 @@ CmdQueues_IncAnonJumptableIndex: inc [hl] ret -CmdQueues_DecAnonJumptableIndex: +CmdQueues_DecAnonJumptableIndex: ; unreferenced ld hl, CMDQUEUE_05 add hl, bc dec [hl] @@ -163,7 +163,7 @@ CmdQueue_Type1: CmdQueue_Type4: call CmdQueues_AnonJumptable - ; anonymous dw +.anon_dw dw .zero dw .one diff --git a/engine/overworld/decorations.asm b/engine/overworld/decorations.asm index e7a882ae..059f915a 100644 --- a/engine/overworld/decorations.asm +++ b/engine/overworld/decorations.asm @@ -44,7 +44,7 @@ _PlayerDecorationMenu: .MenuData: db STATICMENU_CURSOR | STATICMENU_WRAP ; flags db 0 ; items - dw wceed + dw wNumOwnedDecoCategories dw PlaceNthMenuStrings dw .pointers @@ -75,7 +75,7 @@ _PlayerDecorationMenu: ld a, 7 call .AppendToStringBuffer2 ld hl, wStringBuffer2 - ld de, wceed + ld de, wDecoNameBuffer ld bc, ITEM_NAME_LENGTH call CopyBytes ret @@ -133,10 +133,11 @@ _PlayerDecorationMenu: Deco_FillTempWithMinusOne: xor a - ld hl, wceed + ld hl, wNumOwnedDecoCategories ld [hli], a + assert wNumOwnedDecoCategories + 1 == wOwnedDecoCategories ld a, -1 - ld bc, $10 + ld bc, 16 call ByteFill ret @@ -161,10 +162,11 @@ CheckAllDecorationFlags: ret AppendDecoIndex: - ld hl, wceed + ld hl, wNumOwnedDecoCategories inc [hl] + assert wNumOwnedDecoCategories + 1 == wOwnedDecoCategories ld e, [hl] - ld d, $0 + ld d, 0 add hl, de ld [hl], a ret @@ -176,7 +178,7 @@ FindOwnedDecosInCategory: pop hl call CheckAllDecorationFlags pop bc - ld a, [wceed] + ld a, [wNumOwnedDecoCategories] and a ret z @@ -335,7 +337,7 @@ DecoExitMenu: ret PopulateDecoCategoryMenu: - ld a, [wceed] + ld a, [wNumOwnedDecoCategories] and a jr z, .empty cp 8 @@ -353,9 +355,10 @@ PopulateDecoCategoryMenu: ret .beyond_eight - ld hl, wceed + ld hl, wNumOwnedDecoCategories ld e, [hl] dec [hl] + assert wNumOwnedDecoCategories + 1 == wOwnedDecoCategories ld d, 0 add hl, de ld [hl], -1 @@ -395,7 +398,7 @@ PopulateDecoCategoryMenu: .NonscrollingMenuData: db STATICMENU_CURSOR | STATICMENU_WRAP ; flags db 0 ; items - dw wceed + dw wDecoNameBuffer dw DecorationMenuFunction dw DecorationAttributes @@ -409,10 +412,10 @@ PopulateDecoCategoryMenu: db SCROLLINGMENU_DISPLAY_ARROWS ; flags db 8, 0 ; rows, columns db SCROLLINGMENU_ITEMS_NORMAL ; item format - dbw 0, wceed ; text pointer + dbw 0, wDecoNameBuffer ; text pointer dba DecorationMenuFunction - dbw 0, 0 - dbw 0, 0 + dbw 0, NULL + dbw 0, NULL GetDecorationData: ld hl, DecorationAttributes @@ -932,7 +935,7 @@ GetDecorationID: pop hl ret -SetAllDecorationFlags: +SetAllDecorationFlags: ; unreferenced ld hl, DecorationIDs .loop ld a, [hli] diff --git a/engine/overworld/events.asm b/engine/overworld/events.asm index f21ea17b..ee2facbe 100644 --- a/engine/overworld/events.asm +++ b/engine/overworld/events.asm @@ -25,76 +25,76 @@ OverworldLoop:: DisableEvents: xor a - ld [wScriptFlags3], a + ld [wScriptFlags2], a ret EnableEvents:: ld a, $ff - ld [wScriptFlags3], a + ld [wScriptFlags2], a ret -CheckBit5_ScriptFlags3: - ld hl, wScriptFlags3 +CheckBit5_ScriptFlags2: + ld hl, wScriptFlags2 bit 5, [hl] ret -DisableWarpsConnxns: - ld hl, wScriptFlags3 +DisableWarpsConnxns: ; unreferenced + ld hl, wScriptFlags2 res 2, [hl] ret -DisableCoordEvents: - ld hl, wScriptFlags3 +DisableCoordEvents: ; unreferenced + ld hl, wScriptFlags2 res 1, [hl] ret -DisableStepCount: - ld hl, wScriptFlags3 +DisableStepCount: ; unreferenced + ld hl, wScriptFlags2 res 0, [hl] ret -DisableWildEncounters: - ld hl, wScriptFlags3 +DisableWildEncounters: ; unreferenced + ld hl, wScriptFlags2 res 4, [hl] ret -EnableWarpsConnxns: - ld hl, wScriptFlags3 +EnableWarpsConnxns: ; unreferenced + ld hl, wScriptFlags2 set 2, [hl] ret -EnableCoordEvents: - ld hl, wScriptFlags3 +EnableCoordEvents: ; unreferenced + ld hl, wScriptFlags2 set 1, [hl] ret -EnableStepCount: - ld hl, wScriptFlags3 +EnableStepCount: ; unreferenced + ld hl, wScriptFlags2 set 0, [hl] ret EnableWildEncounters: - ld hl, wScriptFlags3 + ld hl, wScriptFlags2 set 4, [hl] ret CheckWarpConnxnScriptFlag: - ld hl, wScriptFlags3 + ld hl, wScriptFlags2 bit 2, [hl] ret CheckCoordEventScriptFlag: - ld hl, wScriptFlags3 + ld hl, wScriptFlags2 bit 1, [hl] ret CheckStepCountScriptFlag: - ld hl, wScriptFlags3 + ld hl, wScriptFlags2 bit 0, [hl] ret CheckWildEncountersScriptFlag: - ld hl, wScriptFlags3 + ld hl, wScriptFlags2 bit 4, [hl] ret @@ -133,7 +133,7 @@ EnterMap: ld [wMapStatus], a ret -UnusedWait30Frames: +UnusedWait30Frames: ; unreferenced ld c, 30 call DelayFrames ret @@ -245,7 +245,7 @@ PlayerEvents: and a ret nz - call Dummy_CheckScriptFlags3Bit5 ; This is a waste of time + call Dummy_CheckScriptFlags2Bit5 ; This is a waste of time call CheckTrainerBattle_GetPlayerEvent jr c, .ok @@ -382,8 +382,8 @@ SetMinTwoStepWildEncounterCooldown: ld [wWildEncounterCooldown], a ret -Dummy_CheckScriptFlags3Bit5: - call CheckBit5_ScriptFlags3 +Dummy_CheckScriptFlags2Bit5: + call CheckBit5_ScriptFlags2 ret z call SetXYCompareFlags ret @@ -468,8 +468,8 @@ CheckTimeEvents: scf ret -.unused - ld a, 8 +.unused ; unreferenced + ld a, $8 ; ??? scf ret @@ -800,7 +800,7 @@ PlayerMovement: CheckMenuOW: xor a ldh [hMenuReturn], a - ldh [hUnusedFFA3], a + ldh [hUnusedByte], a ldh a, [hJoyPressed] bit SELECT_F, a diff --git a/engine/overworld/load_map_part.asm b/engine/overworld/load_map_part.asm index 4e8e228b..c91d8c98 100644 --- a/engine/overworld/load_map_part.asm +++ b/engine/overworld/load_map_part.asm @@ -136,7 +136,6 @@ ForceApplyFlashlight4: ; unreferenced decoord 8, 8 ld bc, (SURROUNDING_WIDTH + 1) * 8 add hl, bc -.loop ld a, [hli] ld [de], a inc de diff --git a/engine/overworld/map_object_action.asm b/engine/overworld/map_object_action.asm index 4913386c..8a153f59 100644 --- a/engine/overworld/map_object_action.asm +++ b/engine/overworld/map_object_action.asm @@ -246,7 +246,8 @@ SetFacingBoulderDust: and 2 ld a, FACING_BOULDER_DUST_1 jr z, .ok - inc a ; FACING_BOULDER_DUST_2 + inc a + assert FACING_BOULDER_DUST_1 + 1 == FACING_BOULDER_DUST_2 .ok ld [hl], a ret diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index db82248e..3d3b1cab 100644 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -2823,18 +2823,17 @@ InitSprites: .InitSprite: xor a -.skip1 ld hl, OBJECT_FLAGS2 add hl, bc ld e, [hl] bit OBJ_FLAGS2_7, e - jr z, .skip2 + jr z, .not_priority or PRIORITY -.skip2 +.not_priority bit USE_OBP1_F, e - jr z, .skip3 + jr z, .not_obp_num or OBP_NUM -.skip3 +.not_obp_num ld hl, OBJECT_PALETTE add hl, bc ld d, a @@ -2844,9 +2843,9 @@ InitSprites: ld d, a xor a bit OVERHEAD_F, e - jr z, .skip4 + jr z, .not_overhead or PRIORITY -.skip4 +.not_overhead ldh [hCurSpriteOAMFlags], a ld hl, OBJECT_SPRITE_TILE add hl, bc diff --git a/engine/overworld/map_setup.asm b/engine/overworld/map_setup.asm index e1a7ebec..e13c2216 100644 --- a/engine/overworld/map_setup.asm +++ b/engine/overworld/map_setup.asm @@ -82,7 +82,7 @@ LoadMapObjects: farcall InitializeVisibleSprites ret -; unused +MapSetup_DummyFunction: ; unreferenced ret ResetPlayerObjectAction: diff --git a/engine/overworld/overworld.asm b/engine/overworld/overworld.asm index 0d285d2a..40157524 100644 --- a/engine/overworld/overworld.asm +++ b/engine/overworld/overworld.asm @@ -119,7 +119,7 @@ AddOutdoorSprites: dec c jr nz, .loop - ld a, [wUnusedD05A] + ld a, [wUnusedAddOutdoorSpritesReturnValue] ld c, a ret diff --git a/engine/overworld/player_movement.asm b/engine/overworld/player_movement.asm index a958429c..c18d3b46 100644 --- a/engine/overworld/player_movement.asm +++ b/engine/overworld/player_movement.asm @@ -311,7 +311,7 @@ DoPlayerMovement:: scf ret -; unused +.unused ; unreferenced xor a ret diff --git a/engine/overworld/scripting.asm b/engine/overworld/scripting.asm index 19fd15db..ffb878a9 100644 --- a/engine/overworld/scripting.asm +++ b/engine/overworld/scripting.asm @@ -432,11 +432,11 @@ Script_verbosegiveitem: ld de, GiveItemScript jp ScriptCall -ret_96e71: +GiveItemScript_DummyFunction: ret GiveItemScript: - callasm ret_96e71 + callasm GiveItemScript_DummyFunction writetext .ReceivedItemText iffalse .Full waitsfx @@ -1518,8 +1518,6 @@ Script_getcurlandmarkname: ld a, [wMapNumber] ld c, a call GetWorldMapLocation - -ConvertLandmarkToText: ld e, a farcall GetLandmarkName ld de, wStringBuffer1 @@ -1589,7 +1587,7 @@ Script_givepokemail: push bc inc hl ld bc, MAIL_MSG_LENGTH - ld de, wceed + ld de, wMonMailMessageBuffer ld a, [wScriptBank] call FarCopyBytes pop bc @@ -2059,8 +2057,7 @@ Script_warpcheck: farcall EnableEvents ret -Script_enableevents: -; unused +Script_enableevents: ; unreferenced farcall EnableEvents ret @@ -2090,7 +2087,8 @@ Script_writeunusedbytebuffer: ld [wUnusedScriptByteBuffer], a ret - db closetext_command ; unused +UnusedClosetextScript: ; unreferenced + closetext Script_closetext: ldh a, [hOAMUpdate] @@ -2208,11 +2206,11 @@ Script_endall: ret Script_halloffame: - ld hl, wGameTimerPause - res GAMETIMERPAUSE_TIMER_PAUSED_F, [hl] + ld hl, wGameTimerPaused + res GAME_TIMER_PAUSED_F, [hl] farcall HallOfFame - ld hl, wGameTimerPause - set GAMETIMERPAUSE_TIMER_PAUSED_F, [hl] + ld hl, wGameTimerPaused + set GAME_TIMER_PAUSED_F, [hl] jr ReturnFromCredits Script_credits: @@ -2224,7 +2222,7 @@ ReturnFromCredits: call StopScript ret -; unused +Script_checkver_duplicate: ; unreferenced ld a, [.gs_version] ld [wScriptVar], a ret diff --git a/engine/overworld/time.asm b/engine/overworld/time.asm index a829cd4f..a109a417 100644 --- a/engine/overworld/time.asm +++ b/engine/overworld/time.asm @@ -158,7 +158,7 @@ CheckPokerusTick:: xor a ret -SetUnusedTwoDayTimer: +SetUnusedTwoDayTimer: ; unreferenced ld a, 2 ld hl, wUnusedTwoDayTimer ld [hl], a @@ -175,12 +175,12 @@ CheckUnusedTwoDayTimer: call UpdateTimeRemaining ret -; unused +UnusedSetSwarmFlag: ; unreferenced ld hl, wDailyFlags1 set DAILYFLAGS1_SWARM_F, [hl] ret -; unused +UnusedCheckSwarmFlag: ; unreferenced and a ld hl, wDailyFlags1 bit DAILYFLAGS1_SWARM_F, [hl] @@ -227,7 +227,7 @@ DoMysteryGiftIfDayHasPassed: ld hl, wBuffer1 call InitOneDayCountdown call CloseSRAM - farcall Function2a4f6 + farcall ResetDailyMysteryGiftLimitIfUnlocked .not_timed_out ld a, BANK(sMysteryGiftTimer) @@ -263,7 +263,7 @@ UpdateTimeRemaining: scf ret -GetSecondsSinceIfLessThan60: +GetSecondsSinceIfLessThan60: ; unreferenced ld a, [wDaysSince] and a jr nz, GetTimeElapsed_ExceedsUnitLimit @@ -285,7 +285,7 @@ GetMinutesSinceIfLessThan60: ld a, [wMinutesSince] ret -GetHoursSinceIfLessThan24: +GetHoursSinceIfLessThan24: ; unreferenced ld a, [wDaysSince] and a jr nz, GetTimeElapsed_ExceedsUnitLimit @@ -304,7 +304,7 @@ CalcDaysSince: xor a jr _CalcDaysSince -CalcHoursDaysSince: +CalcHoursDaysSince: ; unreferenced inc hl xor a jr _CalcHoursDaysSince @@ -378,7 +378,7 @@ CopyDayToHL: ld [hl], a ret -CopyDayHourToHL: +CopyDayHourToHL: ; unreferenced ld a, [wCurDay] ld [hli], a ldh a, [hHours] diff --git a/engine/phone/phone.asm b/engine/phone/phone.asm index 00cbec75..af0c3931 100644 --- a/engine/phone/phone.asm +++ b/engine/phone/phone.asm @@ -145,7 +145,7 @@ CheckPhoneCall:: farcall CheckReceiveCallTimer ret -; unused +.unused ; unreferenced ret FarInitCallReceiveDelay: ; unreferenced @@ -444,7 +444,7 @@ Script_SpecialBillCall:: ld e, PHONE_BILL jp LoadCallerScript -LoadElmCallScript: +Script_SpecialElmCall: ; unreferenced callasm .LoadElmScript pause 30 sjump Script_ReceivePhoneCall @@ -723,7 +723,7 @@ PhoneJustTalkToThemText: text_far _PhoneJustTalkToThemText text_end -PhoneThankYouTextScript: +PhoneThankYouTextScript: ; unreferenced writetext PhoneThankYouText end diff --git a/engine/phone/scripts/elm.asm b/engine/phone/scripts/elm.asm index b93bdc22..6a5a37c7 100644 --- a/engine/phone/scripts/elm.asm +++ b/engine/phone/scripts/elm.asm @@ -95,7 +95,7 @@ ElmPhoneCallerScript: specialphonecall SPECIALCALL_NONE end -.unused +.neat ; unreferenced writetext ElmPhoneGotAholdOfSomethingNeatText specialphonecall SPECIALCALL_NONE end diff --git a/engine/phone/scripts/generic.asm b/engine/phone/scripts/generic.asm index 4587c739..82032641 100644 --- a/engine/phone/scripts/generic.asm +++ b/engine/phone/scripts/generic.asm @@ -74,8 +74,8 @@ PhoneScript_GreetPhone_Female: promptbutton end -; Huey Phone_GenericCall_Male_SkipMon: +; only used by HueyPhoneCalleeScript and HueyPhoneCallerScript special RandomPhoneMon scall PhoneScript_Random2 ifequal 0, Phone_LookingAwesome_Male_SkipMon @@ -83,8 +83,7 @@ Phone_GenericCall_Male_SkipMon: promptbutton sjump PhoneScript_SeeYouLater -; unused -Phone_GenericCall_Female_SkipMon: +Phone_GenericCall_Female_SkipMon: ; unreferenced special RandomPhoneMon scall PhoneScript_Random2 ifequal 0, Phone_DressedUp_Female_SkipMon @@ -92,13 +91,11 @@ Phone_GenericCall_Female_SkipMon: promptbutton sjump PhoneScript_ByeBye -; Huey Phone_LookingAwesome_Male_SkipMon: writetext PhoneMaleLookingAwesomeText promptbutton sjump PhoneScript_ByeBye -; unused Phone_DressedUp_Female_SkipMon: writetext PhoneFemaleDressedUpText promptbutton diff --git a/engine/pokedex/pokedex.asm b/engine/pokedex/pokedex.asm index fe89a551..23840d1d 100644 --- a/engine/pokedex/pokedex.asm +++ b/engine/pokedex/pokedex.asm @@ -91,7 +91,7 @@ InitPokedex: ld [wJumptableIndex], a ld [wPrevDexEntryJumptableIndex], a ld [wPrevDexEntryBackup], a - ld [wce66], a + ld [wUnusedPokedexByte], a call Pokedex_CheckUnlockedUnownMode @@ -1166,7 +1166,7 @@ Pokedex_DrawDexEntryScreenBG: call Pokedex_PlaceFrontpicTopLeftCorner ret -.Unused: +.Number: ; unreferenced db $5c, $5d, -1 ; No. .Height: db "HT ?", $5e, "??", $5f, -1 ; HT ?'??" @@ -2487,14 +2487,14 @@ Pokedex_LoadUnownFont: ld a, BANK(sScratch) call OpenSRAM ld hl, UnownFont - ld de, sScratch + $188 + ld de, sDecompressBuffer ld bc, 39 tiles ld a, BANK(UnownFont) call FarCopyBytes - ld hl, sScratch + $188 + ld hl, sDecompressBuffer ld bc, (NUM_UNOWN + 1) tiles call Pokedex_InvertTiles - ld de, sScratch + $188 + ld de, sDecompressBuffer ld hl, vTiles2 tile FIRST_UNOWN_CHAR lb bc, BANK(Pokedex_LoadUnownFont), NUM_UNOWN + 1 call Request2bpp diff --git a/engine/pokegear/pokegear.asm b/engine/pokegear/pokegear.asm index be155618..6586774e 100644 --- a/engine/pokegear/pokegear.asm +++ b/engine/pokegear/pokegear.asm @@ -92,7 +92,7 @@ PokeGear: ld [wJumptableIndex], a ; POKEGEARSTATE_CLOCKINIT ld [wPokegearCard], a ; POKEGEARCARD_CLOCK ld [wPokegearMapRegion], a ; JOHTO_REGION - ld [wce66], a + ld [wUnusedPokegearByte], a ld [wPokegearPhoneScrollPosition], a ld [wPokegearPhoneCursorPosition], a ld [wPokegearPhoneSelectedPerson], a @@ -1257,7 +1257,7 @@ PokegearPhoneContactSubmenu: dw .Call dw .Cancel -; unused +GetAMPMHours: ; unreferenced ldh a, [hHours] cp 12 jr c, .am @@ -1428,7 +1428,7 @@ UpdateRadioStation: ldh [hBGMapMode], a ret -; unused +LoadPokegearRadioChannelPointer: ; unreferenced ld [wPokegearRadioChannelBank], a ld a, [hli] ld [wPokegearRadioChannelAddr], a @@ -1520,7 +1520,7 @@ RadioChannels: jr z, .johto cp KANTO_LANDMARK jr c, .johto -.kanto +; kanto and a ret @@ -1989,7 +1989,7 @@ _FlyMap: lb bc, BANK(FlyMapLabelBorderGFX), 6 call Request1bpp call FlyMap - call ret_91bfd + call Pokegear_DummyFunction ld b, SCGB_POKEGEAR_PALS call GetSGBLayout call SetPalettes @@ -2194,7 +2194,7 @@ HasVisitedSpawn: INCLUDE "data/maps/flypoints.asm" -ret_91bfd: +Pokegear_DummyFunction: ret FlyMap: @@ -2216,7 +2216,7 @@ FlyMap: ; The first 46 locations are part of Johto. The rest are in Kanto. cp KANTO_LANDMARK jr nc, .KantoFlyMap -.JohtoFlyMap: +; Johto fly map ; Note that .NoKanto should be modified in tandem with this branch push af ld a, JOHTO_FLYPOINT ; first Johto flypoint @@ -2512,7 +2512,7 @@ Pokedex_GetArea: jr z, .johto cp KANTO_LANDMARK jr c, .johto -.kanto +; kanto ld a, [wTownMapCursorLandmark] and a jr z, .clear diff --git a/engine/pokegear/radio.asm b/engine/pokegear/radio.asm index 2cc8c1bb..459cf1ac 100644 --- a/engine/pokegear/radio.asm +++ b/engine/pokegear/radio.asm @@ -119,7 +119,7 @@ PrintRadioLine: ld [wRadioTextDelay], a ret -ReplacePeriodsWithSpaces: +ReplacePeriodsWithSpaces: ; unreferenced push hl ld b, SCREEN_WIDTH * 2 .loop @@ -127,7 +127,6 @@ ReplacePeriodsWithSpaces: cp "." jr nz, .next ld [hl], " " - .next inc hl dec b @@ -313,6 +312,7 @@ OaksPKMNTalk8: ; so no need for a retry loop call Random maskbits NUM_OAKS_POKEMON_TALK_ADVERBS + assert_power_of_2 NUM_OAKS_POKEMON_TALK_ADVERBS ld e, a ld d, 0 ld hl, .Adverbs @@ -412,6 +412,7 @@ OaksPKMNTalk9: ; so no need for a retry loop call Random maskbits NUM_OAKS_POKEMON_TALK_ADJECTIVES + assert_power_of_2 NUM_OAKS_POKEMON_TALK_ADJECTIVES ld e, a ld d, 0 ld hl, .Adjectives @@ -1091,6 +1092,7 @@ PeoplePlaces5: ; so no need for a retry loop call Random maskbits NUM_PNP_PEOPLE_ADJECTIVES + assert_power_of_2 NUM_PNP_PEOPLE_ADJECTIVES ld e, a ld d, 0 ld hl, .Adjectives @@ -1224,6 +1226,7 @@ PeoplePlaces7: ; so no need for a retry loop call Random maskbits NUM_PNP_PLACES_ADJECTIVES + assert_power_of_2 NUM_PNP_PLACES_ADJECTIVES ld e, a ld d, 0 ld hl, .Adjectives @@ -1378,7 +1381,7 @@ CopyRadioTextToRAM: cp TX_FAR jp z, FarCopyRadioText ld de, wRadioText - ld bc, SCREEN_WIDTH * 2 + ld bc, 2 * SCREEN_WIDTH jp CopyBytes StartRadioStation: diff --git a/engine/pokemon/bills_pc.asm b/engine/pokemon/bills_pc.asm index 6e3125db..3be170ec 100644 --- a/engine/pokemon/bills_pc.asm +++ b/engine/pokemon/bills_pc.asm @@ -101,7 +101,7 @@ _DepositPKMN: ld [wJumptableIndex], a ret -.go_back +.go_back ; unreferenced ld hl, wJumptableIndex dec [hl] ret @@ -343,7 +343,7 @@ _WithdrawPKMN: ld [wJumptableIndex], a ret -.unused +.go_back ; unreferenced ld hl, wJumptableIndex dec [hl] ret @@ -594,7 +594,7 @@ _MovePKMNWithoutMail: ld [wJumptableIndex], a ret -.unused +.go_back ; unreferenced ld hl, wJumptableIndex dec [hl] ret @@ -767,9 +767,9 @@ BillsPC_InitRAM: call ByteFill xor a ld [wJumptableIndex], a - ld [wce64], a - ld [wce65], a - ld [wce66], a + ld [wUnusedBillsPCData], a + ld [wUnusedBillsPCData+1], a + ld [wUnusedBillsPCData+2], a ld [wBillsPC_CursorPosition], a ld [wBillsPC_ScrollPosition], a ret @@ -1362,20 +1362,20 @@ copy_box_data: MACRO jr z, .done\@ and a jr z, .done\@ - ld [de], a + ld [de], a ; species inc de ld a, [wBillsPC_LoadedBox] - ld [de], a + ld [de], a ; box number inc de - ld a, [wceee] - ld [de], a + ld a, [wBillsPCTempListIndex] + ld [de], a ; list index inc a - ld [wceee], a + ld [wBillsPCTempListIndex], a inc de inc hl - ld a, [wceef] + ld a, [wBillsPCTempBoxCount] inc a - ld [wceef], a + ld [wBillsPCTempBoxCount], a jr .loop\@ .done\@ @@ -1384,7 +1384,7 @@ if \1 endc ld a, -1 ld [de], a - ld a, [wceef] + ld a, [wBillsPCTempBoxCount] inc a ld [wBillsPC_NumMonsInBox], a ENDM @@ -1396,8 +1396,8 @@ CopyBoxmonSpecies: call ByteFill ld de, wBillsPCPokemonList xor a - ld [wceee], a - ld [wceef], a + ld [wBillsPCTempListIndex], a + ld [wBillsPCTempBoxCount], a ld a, [wBillsPC_LoadedBox] and a jr z, .party @@ -2200,7 +2200,7 @@ PCString_ReleasedPKMN: db "Released <PK><MN>.@" PCString_Bye: db "Bye,@" PCString_Stored: db "Stored @" PCString_Got: db "Got @" -PCString_Non: db "Non.@" +PCString_Non: db "Non.@" ; unreferenced PCString_BoxFull: db "The BOX is full.@" PCString_PartyFull: db "The party's full!@" PCString_NoReleasingEGGS: db "No releasing EGGS!@" @@ -2246,16 +2246,16 @@ _ChangeBox_MenuHeader: dw .MenuData db 1 ; default option -.MenuData +.MenuData: db SCROLLINGMENU_CALL_FUNCTION3_NO_SWITCH | SCROLLINGMENU_ENABLE_FUNCTION3 ; flags db 4, 0 ; rows, columns db SCROLLINGMENU_ITEMS_NORMAL ; item format - dba .boxes - dba .boxnames + dba .Boxes + dba .PrintBoxNames dba NULL dba BillsPC_PrintBoxCountAndCapacity -.boxes +.Boxes: db NUM_BOXES x = 1 rept NUM_BOXES @@ -2264,7 +2264,7 @@ x = x + 1 endr db -1 -.boxnames +.PrintBoxNames: push de ld a, [wMenuSelection] dec a @@ -2433,7 +2433,7 @@ BillsPC_ChangeBoxSubmenu: .Name: ld b, NAME_BOX - ld de, wceed + ld de, wBoxNameBuffer farcall NamingScreen call ClearTilemap call LoadStandardFont @@ -2443,17 +2443,17 @@ BillsPC_ChangeBoxSubmenu: call GetBoxName ld e, l ld d, h - ld hl, wceed + ld hl, wBoxNameBuffer ld c, BOX_NAME_LENGTH - 1 call InitString ld a, [wMenuSelection] dec a call GetBoxName - ld de, wceed + ld de, wBoxNameBuffer call CopyName2 ret - hlcoord 11, 7 ; unused + hlcoord 11, 7 ; unreferenced .MenuHeader: db MENU_BACKUP_TILES ; flags diff --git a/engine/pokemon/breedmon_level_growth.asm b/engine/pokemon/breedmon_level_growth.asm index c6356dd6..f64bd6ca 100644 --- a/engine/pokemon/breedmon_level_growth.asm +++ b/engine/pokemon/breedmon_level_growth.asm @@ -1,5 +1,5 @@ GetBreedMon1LevelGrowth: - ld hl, wBreedMon1Stats + ld hl, wBreedMon1 ld de, wTempMon ld bc, BOXMON_STRUCT_LENGTH call CopyBytes @@ -13,7 +13,7 @@ GetBreedMon1LevelGrowth: ret GetBreedMon2LevelGrowth: - ld hl, wBreedMon2Stats + ld hl, wBreedMon2 ld de, wTempMon ld bc, BOXMON_STRUCT_LENGTH call CopyBytes diff --git a/engine/pokemon/evolve.asm b/engine/pokemon/evolve.asm index e538a040..3619d2da 100644 --- a/engine/pokemon/evolve.asm +++ b/engine/pokemon/evolve.asm @@ -327,7 +327,7 @@ EvolveAfterBattle_MasterLoop: inc hl jp .loop -; unused +.UnusedReturnToMap: ; unreferenced pop hl .ReturnToMap: pop de @@ -512,7 +512,7 @@ FillMoves: ld a, [wEvolutionOldSpecies] and a jr z, .CheckMove - ld a, [wceed] + ld a, [wPrevPartyLevel] cp b jr nc, .GetMove diff --git a/engine/pokemon/mail.asm b/engine/pokemon/mail.asm index 9da39149..94006146 100644 --- a/engine/pokemon/mail.asm +++ b/engine/pokemon/mail.asm @@ -8,7 +8,7 @@ SendMailToPC: cp MAILBOX_CAPACITY jr nc, .full ld bc, MAIL_STRUCT_LENGTH - ld hl, sMailbox + ld hl, sMailboxes call AddNTimes ld d, h ld e, l @@ -44,7 +44,7 @@ DeleteMailFromPC: call OpenSRAM ld a, b push bc - ld hl, sMailbox + ld hl, sMailboxes ld bc, MAIL_STRUCT_LENGTH call AddNTimes push hl @@ -73,7 +73,7 @@ DeleteMailFromPC: ReadMailMessage: ld a, b - ld hl, sMailbox + ld hl, sMailboxes ld bc, MAIL_STRUCT_LENGTH call AddNTimes ld d, h @@ -87,7 +87,7 @@ MoveMailFromPCToParty: push bc ld a, b ld bc, MAIL_STRUCT_LENGTH - ld hl, sMailbox + ld hl, sMailboxes call AddNTimes push hl ld a, [wCurPartyMon] @@ -206,7 +206,7 @@ GivePokeMail:: call AddNTimes ld d, h ld e, l - ld hl, wceed + ld hl, wMonMailMessageBuffer ld bc, MAIL_MSG_LENGTH + 1 ld a, BANK(sPartyMail) call OpenSRAM @@ -314,19 +314,19 @@ _PlayerMailBoxMenu: text_end InitMail: -; initialize wMailboxCount and beyond with incrementing values, one per mail -; set z if no mail +; return z if no mail ld a, BANK(sMailboxCount) call OpenSRAM ld a, [sMailboxCount] call CloseSRAM + +; initialize wMailboxCount from sMailboxCount ld hl, wMailboxCount - ld [hli], a + ld [hli], a ; now hl = wMailboxItems and a - jr z, .done ; if no mail, we're done - ; load values in memory with incrementing values starting at wMailboxCount +; initialize wMailboxItems with incrementing values starting at 1 ld b, a ld a, 1 .loop @@ -334,6 +334,7 @@ InitMail: inc a dec b jr nz, .loop + .done ld [hl], -1 ; terminate diff --git a/engine/pokemon/mail_2.asm b/engine/pokemon/mail_2.asm index c728b533..b5168580 100644 --- a/engine/pokemon/mail_2.asm +++ b/engine/pokemon/mail_2.asm @@ -385,7 +385,7 @@ LoadBlueSkyMailGFX: ld de, BlueSkyMailGrassGFX ld c, 1 * LEN_1BPP_TILE call LoadMailGFX_Color3 - ld de, MailDragoniteGFX + ld de, MailDragoniteAndSentretGFX ld c, 23 * LEN_1BPP_TILE call LoadMailGFX_Color3 ld de, MailCloudGFX @@ -748,7 +748,7 @@ Mail_Place14TileAlternatingRow: ld b, 14 / 2 jr Mail_PlaceAlternatingRow -Mail_Place16TileAlternatingRow: +Mail_Place16TileAlternatingRow: ; unreferenced push af ld b, 16 / 2 jr Mail_PlaceAlternatingRow @@ -756,6 +756,7 @@ Mail_Place16TileAlternatingRow: Mail_Place18TileAlternatingRow: push af ld b, 18 / 2 + ; fallthrough Mail_PlaceAlternatingRow: .loop @@ -793,16 +794,16 @@ Mail_PlaceAlternatingColumn: pop af ret -Mail_Draw7TileRow: - ld b, $7 +Mail_Draw7TileRow: ; unreferenced + ld b, 7 jr Mail_DrawRowLoop Mail_Draw13TileRow: - ld b, $d + ld b, 13 jr Mail_DrawRowLoop Mail_Draw16TileRow: - ld b, $10 + ld b, 16 jr Mail_DrawRowLoop Mail_DrawTopBottomBorder: @@ -811,6 +812,7 @@ Mail_DrawTopBottomBorder: Mail_DrawFullWidthBorder: ld b, SCREEN_WIDTH + ; fallthrough Mail_DrawRowLoop: .loop diff --git a/engine/pokemon/move_mon.asm b/engine/pokemon/move_mon.asm index 36c74140..fe2a0886 100644 --- a/engine/pokemon/move_mon.asm +++ b/engine/pokemon/move_mon.asm @@ -780,7 +780,7 @@ RetrieveMonFromDayCareMan: call WaitSFX call GetBreedMon1LevelGrowth ld a, b - ld [wceed], a + ld [wPrevPartyLevel], a ld a, e ld [wCurPartyLevel], a xor a @@ -795,12 +795,12 @@ RetrieveMonFromDayCareLady: call WaitSFX call GetBreedMon2LevelGrowth ld a, b - ld [wceed], a + ld [wPrevPartyLevel], a ld a, e ld [wCurPartyLevel], a ld a, PC_DEPOSIT ld [wPokemonWithdrawDepositParameter], a - jp RetrieveBreedmon + jp RetrieveBreedmon ; pointless RetrieveBreedmon: ld hl, wPartyCount @@ -1723,7 +1723,6 @@ GivePoke:: ld d, h ld e, l pop hl -.otnameloop ld a, [wScriptBank] call FarCopyBytes ld a, [wCurPartyMon] diff --git a/engine/pokemon/party_menu.asm b/engine/pokemon/party_menu.asm index 1f63ba12..f10248e4 100644 --- a/engine/pokemon/party_menu.asm +++ b/engine/pokemon/party_menu.asm @@ -680,12 +680,10 @@ TeachWhichPKMNString: MoveToWhereString: db "Move to where?@" -ChooseAFemalePKMNString: -; unused +ChooseAFemalePKMNString: ; unreferenced db "Choose a ♀<PK><MN>.@" -ChooseAMalePKMNString: -; unused +ChooseAMalePKMNString: ; unreferenced db "Choose a ♂<PK><MN>.@" ToWhichPKMNString: diff --git a/engine/pokemon/switchpartymons.asm b/engine/pokemon/switchpartymons.asm index 24d19df6..2c00b34b 100644 --- a/engine/pokemon/switchpartymons.asm +++ b/engine/pokemon/switchpartymons.asm @@ -65,7 +65,7 @@ _SwitchPartyMons: ld bc, PARTYMON_STRUCT_LENGTH call AddNTimes push hl - ld de, wceed + ld de, wSwitchMonBuffer ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes ld a, [wBuffer3] @@ -77,14 +77,14 @@ _SwitchPartyMons: ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes pop de - ld hl, wceed + ld hl, wSwitchMonBuffer ld bc, PARTYMON_STRUCT_LENGTH call CopyBytes ld a, [wBuffer2] ld hl, wPartyMonOT call SkipNames push hl - call .CopyNameTowceed + call .CopyNameToSwitchMonBuffer ld a, [wBuffer3] ld hl, wPartyMonOT call SkipNames @@ -92,13 +92,13 @@ _SwitchPartyMons: push hl call .CopyName pop de - ld hl, wceed + ld hl, wSwitchMonBuffer call .CopyName ld hl, wPartyMonNicknames ld a, [wBuffer2] call SkipNames push hl - call .CopyNameTowceed + call .CopyNameToSwitchMonBuffer ld hl, wPartyMonNicknames ld a, [wBuffer3] call SkipNames @@ -106,14 +106,14 @@ _SwitchPartyMons: push hl call .CopyName pop de - ld hl, wceed + ld hl, wSwitchMonBuffer call .CopyName ld hl, sPartyMail ld a, [wBuffer2] ld bc, MAIL_STRUCT_LENGTH call AddNTimes push hl - ld de, wceed + ld de, wSwitchMonBuffer ld bc, MAIL_STRUCT_LENGTH ld a, BANK(sPartyMail) call OpenSRAM @@ -127,7 +127,7 @@ _SwitchPartyMons: ld bc, MAIL_STRUCT_LENGTH call CopyBytes pop de - ld hl, wceed + ld hl, wSwitchMonBuffer ld bc, MAIL_STRUCT_LENGTH call CopyBytes call CloseSRAM @@ -136,8 +136,8 @@ _SwitchPartyMons: pop hl ret -.CopyNameTowceed: - ld de, wceed +.CopyNameToSwitchMonBuffer: + ld de, wSwitchMonBuffer .CopyName: ld bc, NAME_LENGTH diff --git a/engine/printer/printer.asm b/engine/printer/printer.asm index a6e0f956..5b17c52f 100644 --- a/engine/printer/printer.asm +++ b/engine/printer/printer.asm @@ -443,9 +443,11 @@ CheckCancelPrint: ret .pressed_b - ld a, [wc980] + ld a, [wUnusedGameboyPrinterSafeCancelFlag] cp $0c jr nz, .cancel + +; wait for printer activity to finish before canceling? .loop ld a, [wPrinterOpcode] and a diff --git a/engine/printer/printer_serial.asm b/engine/printer/printer_serial.asm index 9d0bd907..f717ad38 100644 --- a/engine/printer/printer_serial.asm +++ b/engine/printer/printer_serial.asm @@ -304,7 +304,7 @@ Printer_ResetData: xor a ld [wPrinterSendByteCounter], a ld [wPrinterSendByteCounter + 1], a - ld hl, wGameboyPrinterRAM + ld hl, wGameboyPrinter2bppSource ld bc, wGameboyPrinter2bppSourceEnd - wGameboyPrinter2bppSource call Printer_ByteFill ret @@ -435,10 +435,10 @@ PrinterDataPacket3: PrinterDataPacket4: db 4, 0, $00, 0 dw 4 -PrinterDataPacket5: ; unused +PrinterDataPacket5: ; unreferenced db 8, 0, $00, 0 dw 8 -PrinterDataPacket6: ; unused +PrinterDataPacket6: ; unreferenced db 15, 0, $00, 0 dw 15 diff --git a/engine/smallflag.asm b/engine/smallflag.asm index 04cbfcc2..316ae6aa 100644 --- a/engine/smallflag.asm +++ b/engine/smallflag.asm @@ -36,9 +36,9 @@ SmallFarFlagAction: jr z, .set ; 1 = SET_FLAG dec b jr z, .check ; 2 = CHECK_FLAG -; 0 = RESET_FLAG + ; 0 = RESET_FLAG -.reset +; reset ld a, c cpl and [hl] diff --git a/engine/tilesets/tileset_anims.asm b/engine/tilesets/tileset_anims.asm index 0cef55bb..384d2ad9 100644 --- a/engine/tilesets/tileset_anims.asm +++ b/engine/tilesets/tileset_anims.asm @@ -1,9 +1,12 @@ - db 0 ; unused +DummyPredef3A_DummyData: ; unreferenced + db 0 DummyPredef3A: ret - ret ; unused +DummyPredef3A_DummyFunction: ; unreferenced + ret + _AnimateTileset:: ; Iterate over a given pointer array of @@ -279,7 +282,7 @@ ScrollTileRightLeft: jr nz, ScrollTileLeft jr ScrollTileRight -ScrollTileUpDown: +ScrollTileUpDown: ; unreferenced ; Scroll up for 4 ticks, then down for 4 ticks. ld a, [wTileAnimationTimer] inc a @@ -665,7 +668,7 @@ AnimateWaterPalette: cp %100 ; frame 4 jr z, .color2 -.color1 +; color1 ld hl, wBGPals1 palette PAL_BG_WATER color 1 ld a, [hli] ldh [rBGPD], a @@ -754,4 +757,5 @@ WhirlpoolTiles2: INCBIN "gfx/tilesets/whirlpool/2.2bpp" WhirlpoolTiles3: INCBIN "gfx/tilesets/whirlpool/3.2bpp" WhirlpoolTiles4: INCBIN "gfx/tilesets/whirlpool/4.2bpp" - ret ; unused +TilesetAnims_DummyFunction: ; unreferenced + ret |