summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rw-r--r--engine/battle/ai/items.asm8
-rw-r--r--engine/battle/battle_transition.asm36
-rw-r--r--engine/battle/core.asm60
-rw-r--r--engine/battle/effect_commands.asm19
-rw-r--r--engine/battle/menu.asm6
-rw-r--r--engine/battle/move_effects/baton_pass.asm2
-rw-r--r--engine/battle/move_effects/beat_up.asm20
-rw-r--r--engine/battle/move_effects/present.asm2
-rw-r--r--engine/battle_anims/anim_commands.asm7
-rw-r--r--engine/battle_anims/core.asm8
-rw-r--r--engine/battle_anims/functions.asm4
-rw-r--r--engine/debug/color_picker.asm16
-rw-r--r--engine/debug/debug_room.asm6
-rw-r--r--engine/events/bug_contest/judging.asm3
-rw-r--r--engine/events/daycare.asm2
-rw-r--r--engine/events/engine_flags.asm2
-rw-r--r--engine/events/field_moves.asm2
-rw-r--r--engine/events/heal_machine_anim.asm4
-rw-r--r--engine/events/magnet_train.asm2
-rw-r--r--engine/events/npc_trade.asm9
-rw-r--r--engine/events/overworld.asm9
-rw-r--r--engine/events/poisonstep.asm2
-rw-r--r--engine/events/print_unown_2.asm18
-rw-r--r--engine/events/prof_oaks_pc.asm10
-rw-r--r--engine/events/specials.asm13
-rw-r--r--engine/events/std_collision.asm2
-rw-r--r--engine/events/treemons.asm2
-rw-r--r--engine/games/card_flip.asm5
-rw-r--r--engine/games/dummy_game.asm12
-rw-r--r--engine/games/slot_machine.asm2
-rw-r--r--engine/games/unown_puzzle.asm6
-rw-r--r--engine/gfx/cgb_layouts.asm21
-rw-r--r--engine/gfx/color.asm72
-rw-r--r--engine/gfx/load_font.asm2
-rw-r--r--engine/gfx/load_pics.asm5
-rw-r--r--engine/gfx/sgb_layouts.asm10
-rw-r--r--engine/gfx/sprite_anims.asm4
-rw-r--r--engine/items/item_effects.asm52
-rw-r--r--engine/items/items.asm2
-rw-r--r--engine/items/pack.asm4
-rw-r--r--engine/items/tmhm.asm3
-rw-r--r--engine/link/init_list.asm4
-rw-r--r--engine/link/link.asm89
-rw-r--r--engine/link/mystery_gift.asm971
-rw-r--r--engine/link/mystery_gift_2.asm28
-rw-r--r--engine/link/mystery_gift_3.asm4
-rw-r--r--engine/link/time_capsule.asm12
-rw-r--r--engine/menus/intro_menu.asm11
-rw-r--r--engine/menus/main_menu.asm15
-rw-r--r--engine/menus/menu_2.asm21
-rw-r--r--engine/menus/naming_screen.asm3
-rw-r--r--engine/menus/trainer_card.asm15
-rw-r--r--engine/movie/credits.asm2
-rw-r--r--engine/movie/evolution_animation.asm1
-rw-r--r--engine/movie/intro.asm3
-rw-r--r--engine/movie/trade_animation.asm4
-rw-r--r--engine/overworld/cmd_queue.asm4
-rw-r--r--engine/overworld/decorations.asm31
-rw-r--r--engine/overworld/events.asm60
-rw-r--r--engine/overworld/load_map_part.asm1
-rw-r--r--engine/overworld/map_object_action.asm3
-rw-r--r--engine/overworld/map_objects.asm13
-rw-r--r--engine/overworld/map_setup.asm2
-rw-r--r--engine/overworld/overworld.asm2
-rw-r--r--engine/overworld/player_movement.asm2
-rw-r--r--engine/overworld/scripting.asm24
-rw-r--r--engine/overworld/time.asm16
-rw-r--r--engine/phone/phone.asm6
-rw-r--r--engine/phone/scripts/elm.asm2
-rw-r--r--engine/phone/scripts/generic.asm7
-rw-r--r--engine/pokedex/pokedex.asm10
-rw-r--r--engine/pokegear/pokegear.asm16
-rw-r--r--engine/pokegear/radio.asm9
-rw-r--r--engine/pokemon/bills_pc.asm52
-rw-r--r--engine/pokemon/breedmon_level_growth.asm4
-rw-r--r--engine/pokemon/evolve.asm4
-rw-r--r--engine/pokemon/mail.asm21
-rw-r--r--engine/pokemon/mail_2.asm14
-rw-r--r--engine/pokemon/move_mon.asm7
-rw-r--r--engine/pokemon/party_menu.asm6
-rw-r--r--engine/pokemon/switchpartymons.asm20
-rw-r--r--engine/printer/printer.asm4
-rw-r--r--engine/printer/printer_serial.asm6
-rw-r--r--engine/smallflag.asm4
-rw-r--r--engine/tilesets/tileset_anims.asm14
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