ref: c88c4a834094e91f1505eab0e22294963e1dd987
parent: 826e070f0443b50ff31a49b4faf7c66577f1e26e
author: Rangi <remy.oukaour+rangi42@gmail.com>
date: Tue Nov 3 14:53:07 EST 2020
Identify more uses of wBuffer1-6
--- a/engine/battle/ai/move.asm
+++ b/engine/battle/ai/move.asm
@@ -1,5 +1,5 @@
AIChooseMove:
-; Score each move in wEnemyMonMoves starting from wBuffer1. Lower is better.
+; Score each move of wEnemyMonMoves in wEnemyAIMoveScores. Lower is better.
; Pick the move with the lowest score.
; Wildmons attack at random.
@@ -17,7 +17,7 @@
; The default score is 20. Unusable moves are given a score of 80.
ld a, 20
- ld hl, wBuffer1
+ ld hl, wEnemyAIMoveScores
ld [hli], a
ld [hli], a
ld [hli], a
@@ -37,7 +37,7 @@
inc hl
jr .CheckDisabledMove
.ScoreDisabledMove:
- ld hl, wBuffer1
+ ld hl, wEnemyAIMoveScores
ld b, 0
add hl, bc
ld [hl], 80
@@ -44,7 +44,7 @@
; Don't pick moves with 0 PP.
.CheckPP:
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonPP
ld b, 0
.CheckMovePP:
@@ -117,7 +117,7 @@
; Decrement the scores of all moves one by one until one reaches 0.
.DecrementScores:
- ld hl, wBuffer1
+ ld hl, wEnemyAIMoveScores
ld de, wEnemyMonMoves
ld c, NUM_MOVES
@@ -152,7 +152,7 @@
cp NUM_MOVES + 1
jr nz, .move_loop
- ld hl, wBuffer1
+ ld hl, wEnemyAIMoveScores
ld de, wEnemyMonMoves
ld c, NUM_MOVES
@@ -182,7 +182,7 @@
; Randomly choose one of the moves with a score of 1
.ChooseMove:
- ld hl, wBuffer1
+ ld hl, wEnemyAIMoveScores
call Random
maskbits NUM_MOVES
ld c, a
--- a/engine/battle/ai/scoring.asm
+++ b/engine/battle/ai/scoring.asm
@@ -6,7 +6,7 @@
; -Using status-only moves if the player can't be statused
; -Using moves that fail if they've already been used
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld b, NUM_MOVES + 1
.checkmove
@@ -73,7 +73,7 @@
; 50% chance to greatly encourage stat-down moves during the first turn of player's Pokemon.
; Almost 90% chance to greatly discourage stat-modifying moves otherwise.
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld b, NUM_MOVES + 1
.checkmove
@@ -147,7 +147,7 @@
; Discourage not very effective moves unless
; all damaging moves are of the same type.
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld b, NUM_MOVES + 1
.checkmove
@@ -234,7 +234,7 @@
AI_Offensive:
; Greatly discourage non-damaging moves.
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld b, NUM_MOVES + 1
.checkmove
@@ -261,7 +261,7 @@
AI_Smart:
; Context-specific scoring.
- ld hl, wBuffer1
+ ld hl, wEnemyAIMoveScores
ld de, wEnemyMonMoves
ld b, NUM_MOVES + 1
.checkmove
@@ -518,7 +518,7 @@
.player_locked_on
push hl
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld c, NUM_MOVES + 1
@@ -2893,7 +2893,7 @@
ret c
.lowhp
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld c, NUM_MOVES + 1
.checkmove
@@ -2987,7 +2987,7 @@
jr z, .done
; Discourage moves that do less damage unless they're reckless too.
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld b, 0
.checkmove2
@@ -3060,7 +3060,7 @@
and a
ret z
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld c, NUM_MOVES + 1
.loop
@@ -3098,7 +3098,7 @@
AI_Status:
; Dismiss status moves that don't affect the player.
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld b, NUM_MOVES + 1
.checkmove
@@ -3161,7 +3161,7 @@
; Use any move that will KO the target.
; Risky moves will often be an exception (see below).
- ld hl, wBuffer1 - 1
+ ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld c, NUM_MOVES + 1
.checkmove
--- a/engine/battle/core.asm
+++ b/engine/battle/core.asm
@@ -5358,7 +5358,7 @@
hlcoord 6, 17 - NUM_MOVES - 4
.got_start_coord
ld a, SCREEN_WIDTH
- ld [wBuffer1], a
+ ld [wListMovesLineSpacing], a
predef ListMoves
ld b, 5
@@ -6334,8 +6334,7 @@
ld [hli], a
ld [hli], a
ld [hl], a
-; Make sure the predef knows this isn't a partymon
- ld [wEvolutionOldSpecies], a
+ ld [wSkipMovesBeforeLevelUp], a
; Fill moves based on level
predef FillMoves
@@ -7616,9 +7615,10 @@
and a
jr z, .not_linked
- ld hl, GoMonText ; If we're in a LinkBattle print just "Go <PlayerMon>"
-
- ld a, [wBattleHasJustStarted] ; unless this (unidentified) variable is set
+; If we're in a LinkBattle print just "Go <PlayerMon>"
+; unless DoBattle already set [wBattleHasJustStarted]
+ ld hl, GoMonText
+ ld a, [wBattleHasJustStarted]
and a
jr nz, .skip_to_textbox
--- a/engine/battle/trainer_huds.asm
+++ b/engine/battle/trainer_huds.asm
@@ -47,7 +47,7 @@
StageBallTilesData:
ld a, [de]
push af
- ld de, wBuffer1
+ ld de, wBattleHUDTiles
ld c, PARTY_LENGTH
ld a, $34 ; empty slot
.loop1
@@ -56,7 +56,8 @@
dec c
jr nz, .loop1
pop af
- ld de, wBuffer1
+
+ ld de, wBattleHUDTiles
.loop2
push af
call .GetHUDTile
@@ -200,7 +201,7 @@
jp LoadTrainerHudOAM
LoadTrainerHudOAM:
- ld de, wBuffer1
+ ld de, wBattleHUDTiles
ld c, PARTY_LENGTH
.loop
ld a, [wPlaceBallsY]
--- a/engine/events/daycare.asm
+++ b/engine/events/daycare.asm
@@ -616,8 +616,8 @@
xor a
ld [wEggMonItem], a
ld de, wEggMonMoves
- xor a
- ld [wBuffer1], a
+ xor a ; FALSE
+ ld [wSkipMovesBeforeLevelUp], a
predef FillMoves
farcall InitEggMoves
ld hl, wEggMonID
--- a/engine/events/heal_machine_anim.asm
+++ b/engine/events/heal_machine_anim.asm
@@ -17,19 +17,19 @@
; 1: Left (Elm's Lab)
; 2: Up (Hall of Fame)
ld a, [wScriptVar]
- ld [wBuffer1], a
+ ld [wHealMachineAnimType], a
ldh a, [rOBP1]
- ld [wBuffer2], a
+ ld [wHealMachineTempOBP1], a
call .DoJumptableFunctions
- ld a, [wBuffer2]
+ ld a, [wHealMachineTempOBP1]
call DmgToCgbObjPal1
ret
.DoJumptableFunctions:
xor a
- ld [wBuffer3], a
-.jumpable_loop
- ld a, [wBuffer1]
+ ld [wHealMachineAnimState], a
+.jumptable_loop
+ ld a, [wHealMachineAnimType]
ld e, a
ld d, 0
ld hl, .Pointers
@@ -38,10 +38,10 @@
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wBuffer3]
+ ld a, [wHealMachineAnimState]
ld e, a
inc a
- ld [wBuffer3], a
+ ld [wHealMachineAnimState], a
add hl, de
ld a, [hl]
cp HEALMACHINESTATE_FINISH
@@ -48,7 +48,7 @@
jr z, .finish
ld hl, .Jumptable
rst JumpTable
- jr .jumpable_loop
+ jr .jumptable_loop
.finish
ret
@@ -237,7 +237,7 @@
.PlaceHealingMachineTile:
push bc
- ld a, [wBuffer1]
+ ld a, [wHealMachineAnimType]
bcpixel 2, 4
cp HEALMACHINE_ELMS_LAB
jr z, .okay
--- a/engine/events/lucky_number.asm
+++ b/engine/events/lucky_number.asm
@@ -125,7 +125,7 @@
push hl
ld d, h
ld e, l
- ld hl, wBuffer1
+ ld hl, wMonIDDigitsBuffer
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
ld hl, wLuckyNumberDigitsBuffer
@@ -135,7 +135,7 @@
ld b, 5
ld c, 0
ld hl, wLuckyNumberDigitsBuffer + 4
- ld de, wBuffer1 + 4
+ ld de, wMonIDDigitsBuffer + 4
.loop
ld a, [de]
cp [hl]
--- a/engine/events/pokecenter_pc.asm
+++ b/engine/events/pokecenter_pc.asm
@@ -361,15 +361,15 @@
.withdraw
ld a, [wItemQuantityChangeBuffer]
- ld [wBuffer1], a ; quantity
+ ld [wPCItemQuantityChangeBuffer], a
ld a, [wCurItemQuantity]
- ld [wBuffer2], a
+ ld [wPCItemQuantity], a
ld hl, wNumItems
call ReceiveItem
jr nc, .PackFull
- ld a, [wBuffer1]
+ ld a, [wPCItemQuantityChangeBuffer]
ld [wItemQuantityChangeBuffer], a
- ld a, [wBuffer2]
+ ld a, [wPCItemQuantity]
ld [wCurItemQuantity], a
ld hl, wNumPCItems
call TossItem
@@ -490,15 +490,15 @@
ret
.tossable
- ld a, [wBuffer1]
+ ld a, [wPCItemQuantityChangeBuffer]
push af
- ld a, [wBuffer2]
+ ld a, [wPCItemQuantity]
push af
call .DepositItem
pop af
- ld [wBuffer2], a
+ ld [wPCItemQuantity], a
pop af
- ld [wBuffer1], a
+ ld [wPCItemQuantityChangeBuffer], a
ret
.DepositItem:
@@ -522,15 +522,15 @@
.ContinueDeposit:
ld a, [wItemQuantityChangeBuffer]
- ld [wBuffer1], a
+ ld [wPCItemQuantityChangeBuffer], a
ld a, [wCurItemQuantity]
- ld [wBuffer2], a
+ ld [wPCItemQuantity], a
ld hl, wNumPCItems
call ReceiveItem
jr nc, .NoRoomInPC
- ld a, [wBuffer1]
+ ld a, [wPCItemQuantityChangeBuffer]
ld [wItemQuantityChangeBuffer], a
- ld a, [wBuffer2]
+ ld a, [wPCItemQuantity]
ld [wCurItemQuantity], a
ld hl, wNumItems
call TossItem
--- a/engine/events/treemons.asm
+++ b/engine/events/treemons.asm
@@ -197,11 +197,11 @@
GetTreeScore:
call .CoordScore
- ld [wBuffer1], a
+ ld [wTreeMonCoordScore], a
call .OTIDScore
- ld [wBuffer2], a
+ ld [wTreeMonOTIDScore], a
ld c, a
- ld a, [wBuffer1]
+ ld a, [wTreeMonCoordScore]
sub c
jr z, .rare
jr nc, .ok
--- a/engine/items/buy_sell_toss.asm
+++ b/engine/items/buy_sell_toss.asm
@@ -8,9 +8,9 @@
farcall GetItemPrice
RooftopSale_SelectQuantityToBuy:
ld a, d
- ld [wBuffer1], a
+ ld [wBuySellItemPrice + 0], a
ld a, e
- ld [wBuffer2], a
+ ld [wBuySellItemPrice + 1], a
ld hl, BuyItem_MenuHeader
call LoadMenuHeader
call Toss_Sell_Loop
@@ -19,9 +19,9 @@
SelectQuantityToSell:
farcall GetItemPrice
ld a, d
- ld [wBuffer1], a
+ ld [wBuySellItemPrice + 0], a
ld a, e
- ld [wBuffer2], a
+ ld [wBuySellItemPrice + 1], a
ld hl, SellItem_MenuHeader
call LoadMenuHeader
call Toss_Sell_Loop
@@ -159,9 +159,9 @@
BuySell_MultiplyPrice:
xor a
ldh [hMultiplicand + 0], a
- ld a, [wBuffer1]
+ ld a, [wBuySellItemPrice + 0]
ldh [hMultiplicand + 1], a
- ld a, [wBuffer2]
+ ld a, [wBuySellItemPrice + 1]
ldh [hMultiplicand + 2], a
ld a, [wItemQuantityChangeBuffer]
ldh [hMultiplier], a
--- a/engine/link/link.asm
+++ b/engine/link/link.asm
@@ -449,6 +449,7 @@
ld [wOtherTrainerClass], a
call ClearScreen
farcall Link_WaitBGMap
+
ld hl, wOptions
ld a, [hl]
push af
@@ -460,8 +461,6 @@
ld bc, NAME_LENGTH
call CopyBytes
call ReturnToMapFromSubmenu
-
- ; LET'S DO THIS
ld a, [wDisableTextAcceleration]
push af
ld a, 1
@@ -478,6 +477,7 @@
pop af
ldh [rIF], a
+ ; LET'S DO THIS
predef StartBattle
ldh a, [rIF]
@@ -492,6 +492,7 @@
ld [wDisableTextAcceleration], a
pop af
ld [wOptions], a
+
farcall LoadPokemonData
jp ExitLinkCommunications
--- a/engine/menus/menu_2.asm
+++ b/engine/menus/menu_2.asm
@@ -206,9 +206,10 @@
FindApricornsInBag:
; Checks the bag for Apricorns.
- ld hl, wBuffer1
+ ld hl, wKurtApricornCount
xor a
ld [hli], a
+ assert wKurtApricornCount + 1 == wKurtApricornItems
dec a
ld bc, 10
call ByteFill
@@ -232,15 +233,15 @@
jr .loop
.done
- ld a, [wBuffer1]
+ ld a, [wKurtApricornCount]
and a
ret nz
scf
ret
-.addtobuffer
+.addtobuffer:
push hl
- ld hl, wBuffer1
+ ld hl, wKurtApricornCount
inc [hl]
ld e, [hl]
ld d, 0
--- a/engine/overworld/decorations.asm
+++ b/engine/overworld/decorations.asm
@@ -10,17 +10,17 @@
push af
ld hl, .MenuHeader
call LoadMenuHeader
- xor a
- ld [wBuffer5], a
- ld a, $1
- ld [wBuffer6], a
+ xor a ; FALSE
+ ld [wChangedDecorations], a
+ ld a, $1 ; bed
+ ld [wCurDecorationCategory], a
.top_loop
- ld a, [wBuffer6]
+ ld a, [wCurDecorationCategory]
ld [wMenuCursorBuffer], a
call .FindCategoriesWithOwnedDecos
call DoNthMenu
ld a, [wMenuCursorY]
- ld [wBuffer6], a
+ ld [wCurDecorationCategory], a
jr c, .exit_menu
ld a, [wMenuSelection]
ld hl, .pointers
@@ -31,7 +31,7 @@
call ExitMenu
pop af
ld [wWhichIndexSet], a
- ld a, [wBuffer5]
+ ld a, [wChangedDecorations]
ld c, a
ret
@@ -71,7 +71,7 @@
xor a
ld [wWhichIndexSet], a
call .ClearStringBuffer2
- call .FindOwndDecos
+ call .FindOwnedDecos
ld a, 7
call .AppendToStringBuffer2
ld hl, wStringBuffer2
@@ -98,7 +98,7 @@
ld [hl], a
ret
-.FindOwndDecos:
+.FindOwnedDecos:
ld hl, .dw
.loop
ld a, [hli]
@@ -642,12 +642,12 @@
DecoAction_TrySetItUp:
ld a, [hl]
- ld [wBuffer1], a
+ ld [wCurDecoration], a
push hl
call DecoAction_SetItUp
jr c, .failed
- ld a, 1
- ld [wBuffer5], a
+ ld a, TRUE
+ ld [wChangedDecorations], a
pop hl
ld a, [wMenuSelection]
ld [hl], a
@@ -661,7 +661,7 @@
DecoAction_SetItUp:
; See if there's anything of the same type already out
- ld a, [wBuffer1]
+ ld a, [wCurDecoration]
and a
jr z, .nothingthere
; See if that item is already out
@@ -673,7 +673,7 @@
ld a, [wMenuSelection]
ld hl, wStringBuffer4
call GetDecorationName
- ld a, [wBuffer1]
+ ld a, [wCurDecoration]
ld hl, wStringBuffer3
call GetDecorationName
ld hl, PutAwayAndSetUpText
@@ -699,16 +699,16 @@
DecoAction_TryPutItAway:
; If there is no item of that type already set, there is nothing to put away.
ld a, [hl]
- ld [wBuffer1], a
+ ld [wCurDecoration], a
xor a
ld [hl], a
- ld a, [wBuffer1]
+ ld a, [wCurDecoration]
and a
jr z, .nothingthere
; Put it away.
- ld a, $1
- ld [wBuffer5], a
- ld a, [wBuffer1]
+ ld a, TRUE
+ ld [wChangedDecorations], a
+ ld a, [wCurDecoration]
ld [wMenuSelection], a
ld hl, wStringBuffer3
call GetDecorationName
@@ -729,8 +729,8 @@
jr c, .cancel
call DecoAction_SetItUp_Ornament
jr c, .cancel
- ld a, $1
- ld [wBuffer5], a
+ ld a, TRUE
+ ld [wChangedDecorations], a
jr DecoAction_FinishUp_Ornament
.cancel
@@ -816,8 +816,8 @@
jr z, .nothingthere
ld hl, wStringBuffer3
call GetDecorationName
- ld a, $1
- ld [wBuffer5], a
+ ld a, TRUE
+ ld [wChangedDecorations], a
xor a
ld [wSelectedDecoration], a
ld hl, PutAwayTheDecoText
@@ -843,9 +843,9 @@
call CopyMenuData
jr c, .nope
ld a, [wMenuCursorY]
- cp 3
+ cp 3 ; cancel
jr z, .nope
- ld [wBuffer2], a
+ ld [wSelectedDecorationSide], a
call QueryWhichSide
ld a, [hl]
ld [wSelectedDecoration], a
@@ -861,9 +861,10 @@
QueryWhichSide:
ld hl, wDecoRightOrnament
ld de, wDecoLeftOrnament
- ld a, [wBuffer2]
- cp 1
+ ld a, [wSelectedDecorationSide]
+ cp 1 ; right side
ret z
+ ; left side, swap hl and de
push hl
ld h, d
ld l, e
--- a/engine/overworld/time.asm
+++ b/engine/overworld/time.asm
@@ -261,15 +261,15 @@
call OpenSRAM
ld hl, sMysteryGiftTimer
ld a, [hli]
- ld [wBuffer1], a
+ ld [wTempMysteryGiftTimer], a
ld a, [hl]
- ld [wBuffer2], a
+ ld [wTempMysteryGiftTimer + 1], a
call CloseSRAM
- ld hl, wBuffer1
+ ld hl, wTempMysteryGiftTimer
call CheckDayDependentEventHL
jr nc, .not_timed_out
- ld hl, wBuffer1
+ ld hl, wTempMysteryGiftTimer
call InitOneDayCountdown
call CloseSRAM
farcall ResetDailyMysteryGiftLimitIfUnlocked
@@ -277,7 +277,7 @@
.not_timed_out
ld a, BANK(sMysteryGiftTimer)
call OpenSRAM
- ld hl, wBuffer1
+ ld hl, wTempMysteryGiftTimer
ld a, [hli]
ld [sMysteryGiftTimer], a
ld a, [hl]
--- a/engine/phone/phone.asm
+++ b/engine/phone/phone.asm
@@ -62,7 +62,7 @@
GetRemainingSpaceInPhoneList:
xor a
- ld [wBuffer1], a
+ ld [wRegisteredPhoneNumbers], a
ld hl, PermanentNumbers
.loop
ld a, [hli]
@@ -76,7 +76,7 @@
ld c, a
call _CheckCellNum
jr c, .permanent
- ld hl, wBuffer1
+ ld hl, wRegisteredPhoneNumbers
inc [hl]
.permanent
pop hl
@@ -87,7 +87,7 @@
.done
ld a, CONTACT_LIST_SIZE
- ld hl, wBuffer1
+ ld hl, wRegisteredPhoneNumbers
sub [hl]
ret
--- a/engine/pokemon/evolve.asm
+++ b/engine/pokemon/evolve.asm
@@ -509,7 +509,7 @@
ld a, [wCurPartyLevel]
cp b
jp c, .done
- ld a, [wEvolutionOldSpecies]
+ ld a, [wSkipMovesBeforeLevelUp]
and a
jr z, .CheckMove
ld a, [wPrevPartyLevel]
--- a/engine/pokemon/learn.asm
+++ b/engine/pokemon/learn.asm
@@ -142,7 +142,7 @@
call Textbox
hlcoord 5 + 2, 2 + 2
ld a, SCREEN_WIDTH * 2
- ld [wBuffer1], a
+ ld [wListMovesLineSpacing], a
predef ListMoves
; w2DMenuData
ld a, $4
--- a/engine/pokemon/mail.asm
+++ b/engine/pokemon/mail.asm
@@ -322,7 +322,8 @@
; initialize wMailboxCount from sMailboxCount
ld hl, wMailboxCount
- ld [hli], a ; now hl = wMailboxItems
+ ld [hli], a
+ assert wMailboxCount + 1 == wMailboxItems
and a
jr z, .done ; if no mail, we're done
--- a/engine/pokemon/mail_2.asm
+++ b/engine/pokemon/mail_2.asm
@@ -1,3 +1,17 @@
+; MailGFXPointers indexes
+; LoadMailPalettes.MailPals indexes (see gfx/mail/mail.pal)
+ const_def
+ const FLOWER_MAIL_INDEX ; 0
+ const SURF_MAIL_INDEX ; 1
+ const LITEBLUEMAIL_INDEX ; 2
+ const PORTRAITMAIL_INDEX ; 3
+ const LOVELY_MAIL_INDEX ; 4
+ const EON_MAIL_INDEX ; 5
+ const MORPH_MAIL_INDEX ; 6
+ const BLUESKY_MAIL_INDEX ; 7
+ const MUSIC_MAIL_INDEX ; 8
+ const MIRAGE_MAIL_INDEX ; 9
+
ReadPartyMonMail:
ld a, [wCurPartyMon]
ld hl, sPartyMail
@@ -35,7 +49,7 @@
call .LoadGFX
call EnableLCD
call WaitBGMap
- ld a, [wBuffer3]
+ ld a, [wCurMailIndex]
ld e, a
farcall LoadMailPalettes
call SetPalettes
@@ -72,13 +86,13 @@
call OpenSRAM
ld de, sPartyMon1MailAuthorID - sPartyMon1Mail
add hl, de
+ ld a, [hli] ; author id
+ ld [wCurMailAuthorID], a
ld a, [hli]
- ld [wBuffer1], a
- ld a, [hli]
- ld [wBuffer2], a
- ld a, [hli]
+ ld [wCurMailAuthorID + 1], a
+ ld a, [hli] ; species
ld [wCurPartySpecies], a
- ld b, [hl]
+ ld b, [hl] ; type
call CloseSRAM
ld hl, MailGFXPointers
ld c, 0
@@ -99,7 +113,7 @@
.got_pointer
ld a, c
- ld [wBuffer3], a
+ ld [wCurMailIndex], a
ld a, [hli]
ld h, [hl]
ld l, a
@@ -111,6 +125,7 @@
ret
MailGFXPointers:
+; entries correspond to *MAIL_INDEX constants
dbw FLOWER_MAIL, LoadFlowerMailGFX
dbw SURF_MAIL, LoadSurfMailGFX
dbw LITEBLUEMAIL, LoadLiteBlueMailGFX
@@ -121,7 +136,7 @@
dbw BLUESKY_MAIL, LoadBlueSkyMailGFX
dbw MUSIC_MAIL, LoadMusicMailGFX
dbw MIRAGE_MAIL, LoadMirageMailGFX
- db -1
+ db -1 ; end
LoadSurfMailGFX:
push bc
@@ -697,12 +712,12 @@
ld a, [de]
and a
ret z
- ld a, [wBuffer3]
+ ld a, [wCurMailIndex]
hlcoord 8, 14
- cp $3 ; PORTRAITMAIL
+ cp PORTRAITMAIL_INDEX
jr z, .place_author
hlcoord 6, 14
- cp $6 ; MORPH_MAIL
+ cp MORPH_MAIL_INDEX
jr z, .place_author
hlcoord 5, 14
--- a/engine/pokemon/mon_menu.asm
+++ b/engine/pokemon/mon_menu.asm
@@ -1145,7 +1145,7 @@
ld bc, NUM_MOVES
call CopyBytes
ld a, SCREEN_WIDTH * 2
- ld [wBuffer1], a
+ ld [wListMovesLineSpacing], a
hlcoord 2, 3
predef ListMoves
hlcoord 10, 4
--- a/engine/pokemon/mon_stats.asm
+++ b/engine/pokemon/mon_stats.asm
@@ -242,9 +242,9 @@
sub c
ld b, a
push hl
- ld a, [wBuffer1]
+ ld a, [wListMovesLineSpacing]
ld e, a
- ld d, $0
+ ld d, 0
ld a, $3e ; P
call .load_loop
ld a, b
@@ -299,7 +299,7 @@
lb bc, 1, 2
call PrintNum
pop hl
- ld a, [wBuffer1]
+ ld a, [wListMovesLineSpacing]
ld e, a
ld d, 0
add hl, de
@@ -354,7 +354,7 @@
push hl
ld bc, -12
add hl, bc
- ld b, $0
+ ld b, 0
call DrawEnemyHP
pop hl
ld bc, 5
@@ -367,6 +367,7 @@
ret
PlaceStatusString:
+; Return nz if the status is not OK
push de
inc de
inc de
@@ -381,7 +382,7 @@
ld de, FntString
call CopyStatusString
pop de
- ld a, $1
+ ld a, TRUE
and a
ret
@@ -420,7 +421,7 @@
.place
call CopyStatusString
- ld a, $1
+ ld a, TRUE
and a
.no_status
@@ -434,9 +435,9 @@
ParString: db "PAR@"
ListMoves:
-; List moves at hl, spaced every [wBuffer1] tiles.
+; List moves at hl, spaced every [wListMovesLineSpacing] tiles.
ld de, wListMoves_MoveIndicesBuffer
- ld b, $0
+ ld b, 0
.moves_loop
ld a, [de]
inc de
@@ -459,7 +460,7 @@
inc b
pop hl
push bc
- ld a, [wBuffer1]
+ ld a, [wListMovesLineSpacing]
ld c, a
ld b, 0
add hl, bc
@@ -475,7 +476,7 @@
.nonmove_loop
push af
ld [hl], "-"
- ld a, [wBuffer1]
+ ld a, [wListMovesLineSpacing]
ld c, a
ld b, 0
add hl, bc
--- a/engine/pokemon/mon_submenu.asm
+++ b/engine/pokemon/mon_submenu.asm
@@ -25,8 +25,8 @@
db 1 ; default option
.GetTopCoord:
-; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1)
- ld a, [wBuffer1]
+; [wMenuBorderTopCoord] = 1 + [wMenuBorderBottomCoord] - 2 * ([wMonSubmenuCount] + 1)
+ ld a, [wMonSubmenuCount]
inc a
add a
ld b, a
@@ -41,7 +41,7 @@
.loop
ld a, MENU_UNUSED_3 | MENU_BACKUP_TILES_2 ; flags
ld [wMenuDataFlags], a
- ld a, [wBuffer1] ; items
+ ld a, [wMonSubmenuCount] ; items
ld [wMenuDataItems], a
call InitVerticalMenuCursor
ld hl, w2DMenuFlags1
@@ -65,7 +65,7 @@
dec a
ld c, a
ld b, 0
- ld hl, wBuffer2
+ ld hl, wMonSubmenuItems
add hl, bc
ld a, [hl]
ret
@@ -74,7 +74,7 @@
call MenuBoxCoord2Tile
ld bc, 2 * SCREEN_WIDTH + 2
add hl, bc
- ld de, wBuffer2
+ ld de, wMonSubmenuItems
.loop
ld a, [de]
inc de
@@ -170,7 +170,7 @@
call AddMonMenuItem
.skip2
- ld a, [wBuffer1]
+ ld a, [wMonSubmenuCount]
cp NUM_MONMENU_ITEMS
jr z, .ok2
ld a, MONMENUITEM_CANCEL
@@ -212,17 +212,17 @@
ResetMonSubmenu:
xor a
- ld [wBuffer1], a
- ld hl, wBuffer2
+ ld [wMonSubmenuCount], a
+ ld hl, wMonSubmenuItems
ld bc, NUM_MONMENU_ITEMS + 1
call ByteFill
ret
TerminateMonSubmenu:
- ld a, [wBuffer1]
+ ld a, [wMonSubmenuCount]
ld e, a
ld d, 0
- ld hl, wBuffer2
+ ld hl, wMonSubmenuItems
add hl, de
ld [hl], -1
ret
@@ -231,12 +231,12 @@
push hl
push de
push af
- ld a, [wBuffer1]
+ ld a, [wMonSubmenuCount]
ld e, a
inc a
- ld [wBuffer1], a
+ ld [wMonSubmenuCount], a
ld d, 0
- ld hl, wBuffer2
+ ld hl, wMonSubmenuItems
add hl, de
pop af
ld [hl], a
--- a/engine/pokemon/move_mon.asm
+++ b/engine/pokemon/move_mon.asm
@@ -132,7 +132,7 @@
ld [hli], a
endr
ld [hl], a
- ld [wEvolutionOldSpecies], a
+ ld [wSkipMovesBeforeLevelUp], a
predef FillMoves
.next
@@ -876,8 +876,8 @@
call AddNTimes
ld d, h
ld e, l
- ld a, $1
- ld [wBuffer1], a
+ ld a, TRUE
+ ld [wSkipMovesBeforeLevelUp], a
predef FillMoves
ld a, [wPartyCount]
dec a
--- a/engine/pokemon/stats_screen.asm
+++ b/engine/pokemon/stats_screen.asm
@@ -635,7 +635,7 @@
call .CalcExpToNextLevel
hlcoord 13, 13
lb bc, 3, 7
- ld de, wBuffer1
+ ld de, wExpToNextLevel
call PrintNum
ld de, .LevelUpStr
hlcoord 10, 12
@@ -679,18 +679,18 @@
ldh a, [hQuotient + 3]
sub [hl]
dec hl
- ld [wBuffer3], a
+ ld [wExpToNextLevel + 2], a
ldh a, [hQuotient + 2]
sbc [hl]
dec hl
- ld [wBuffer2], a
+ ld [wExpToNextLevel + 1], a
ldh a, [hQuotient + 1]
sbc [hl]
- ld [wBuffer1], a
+ ld [wExpToNextLevel], a
ret
.AlreadyAtMaxLevel:
- ld hl, wBuffer1
+ ld hl, wExpToNextLevel
xor a
ld [hli], a
ld [hli], a
@@ -732,11 +732,11 @@
call CopyBytes
hlcoord 8, 10
ld a, SCREEN_WIDTH * 2
- ld [wBuffer1], a
+ ld [wListMovesLineSpacing], a
predef ListMoves
hlcoord 12, 11
ld a, SCREEN_WIDTH * 2
- ld [wBuffer1], a
+ ld [wListMovesLineSpacing], a
predef ListMovePP
ret
--- a/engine/pokemon/switchpartymons.asm
+++ b/engine/pokemon/switchpartymons.asm
@@ -1,17 +1,17 @@
_SwitchPartyMons:
ld a, [wSwitchMon]
dec a
- ld [wBuffer3], a
+ ld [wSwitchMonFrom], a
ld b, a
ld a, [wMenuCursorY]
dec a
- ld [wBuffer2], a
+ ld [wSwitchMonTo], a
cp b
jr z, .skip
call .SwapMonAndMail
- ld a, [wBuffer3]
+ ld a, [wSwitchMonFrom]
call .ClearSprite
- ld a, [wBuffer2]
+ ld a, [wSwitchMonTo]
call .ClearSprite
.skip
ret
@@ -44,13 +44,13 @@
push de
push bc
ld bc, wPartySpecies
- ld a, [wBuffer2]
+ ld a, [wSwitchMonTo]
ld l, a
ld h, $0
add hl, bc
ld d, h
ld e, l
- ld a, [wBuffer3]
+ ld a, [wSwitchMonFrom]
ld l, a
ld h, $0
add hl, bc
@@ -60,7 +60,7 @@
ld [hl], a
pop af
ld [de], a
- ld a, [wBuffer2]
+ ld a, [wSwitchMonTo]
ld hl, wPartyMon1Species
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
@@ -68,7 +68,7 @@
ld de, wSwitchMonBuffer
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
- ld a, [wBuffer3]
+ ld a, [wSwitchMonFrom]
ld hl, wPartyMon1
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
@@ -80,12 +80,12 @@
ld hl, wSwitchMonBuffer
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
- ld a, [wBuffer2]
+ ld a, [wSwitchMonTo]
ld hl, wPartyMonOT
call SkipNames
push hl
call .CopyNameToSwitchMonBuffer
- ld a, [wBuffer3]
+ ld a, [wSwitchMonFrom]
ld hl, wPartyMonOT
call SkipNames
pop de
@@ -95,12 +95,12 @@
ld hl, wSwitchMonBuffer
call .CopyName
ld hl, wPartyMonNicknames
- ld a, [wBuffer2]
+ ld a, [wSwitchMonTo]
call SkipNames
push hl
call .CopyNameToSwitchMonBuffer
ld hl, wPartyMonNicknames
- ld a, [wBuffer3]
+ ld a, [wSwitchMonFrom]
call SkipNames
pop de
push hl
@@ -109,7 +109,7 @@
ld hl, wSwitchMonBuffer
call .CopyName
ld hl, sPartyMail
- ld a, [wBuffer2]
+ ld a, [wSwitchMonTo]
ld bc, MAIL_STRUCT_LENGTH
call AddNTimes
push hl
@@ -119,7 +119,7 @@
call OpenSRAM
call CopyBytes
ld hl, sPartyMail
- ld a, [wBuffer3]
+ ld a, [wSwitchMonFrom]
ld bc, MAIL_STRUCT_LENGTH
call AddNTimes
pop de
--- a/engine/rtc/restart_clock.asm
+++ b/engine/rtc/restart_clock.asm
@@ -1,3 +1,10 @@
+; RestartClock_GetWraparoundTime.WrapAroundTimes indexes
+ const_def 1
+ const RESTART_CLOCK_DAY
+ const RESTART_CLOCK_HOUR
+ const RESTART_CLOCK_MIN
+NUM_RESTART_CLOCK_DIVISIONS EQU const_value - 1
+
RestartClock_GetWraparoundTime:
push hl
dec a
@@ -18,15 +25,16 @@
ret
.WrapAroundTimes:
- dw wBuffer4
- db 7, 4
+; entries correspond to RESTART_CLOCK_* constants
+wraparound_time: MACRO
+ dw \1 ; value pointer
+ db \2 ; maximum value
+ db \3 ; up/down arrow x coord (pairs with wRestartClockUpArrowYCoord)
+ENDM
+ wraparound_time wRestartClockDay, 7, 4
+ wraparound_time wRestartClockHour, 24, 12
+ wraparound_time wRestartClockMin, 60, 15
- dw wBuffer5
- db 24, 12
-
- dw wBuffer6
- db 60, 15
-
RestartClock:
; If we're here, we had an RTC overflow.
ld hl, .ClockTimeMayBeWrongText
@@ -56,18 +64,18 @@
text_end
.SetClock:
- ld a, 1
- ld [wBuffer1], a ; which digit
- ld [wBuffer2], a
+ ld a, RESTART_CLOCK_DAY
+ ld [wRestartClockCurDivision], a
+ ld [wRestartClockPrevDivision], a
ld a, 8
- ld [wBuffer3], a
+ ld [wRestartClockUpArrowYCoord], a
call UpdateTime
call GetWeekday
- ld [wBuffer4], a
+ ld [wRestartClockDay], a
ldh a, [hHours]
- ld [wBuffer5], a
+ ld [wRestartClockHour], a
ldh a, [hMinutes]
- ld [wBuffer6], a
+ ld [wRestartClockMin], a
.loop
call .joy_loop
@@ -79,11 +87,11 @@
call PrintText
call YesNoBox
jr c, .cancel
- ld a, [wBuffer4]
+ ld a, [wRestartClockDay]
ld [wStringBuffer2], a
- ld a, [wBuffer5]
+ ld a, [wRestartClockHour]
ld [wStringBuffer2 + 1], a
- ld a, [wBuffer6]
+ ld a, [wRestartClockMin]
ld [wStringBuffer2 + 2], a
xor a
ld [wStringBuffer2 + 3], a
@@ -92,11 +100,11 @@
ld hl, .ClockHasResetText
call PrintText
call WaitPressAorB_BlinkCursor
- xor a
+ xor a ; FALSE
ret
.cancel
- ld a, $1
+ ld a, TRUE
ret
.ClockIsThisOKText:
@@ -128,17 +136,17 @@
jr .joy_loop
.press_A
- ld a, $0
+ ld a, FALSE
scf
ret
.press_B
- ld a, $1
+ ld a, TRUE
scf
ret
.pressed_up
- ld a, [wBuffer1]
+ ld a, [wRestartClockCurDivision]
call RestartClock_GetWraparoundTime
ld a, [de]
inc a
@@ -145,12 +153,12 @@
ld [de], a
cp b
jr c, .done_scroll
- ld a, $0
+ ld a, 0
ld [de], a
jr .done_scroll
.pressed_down
- ld a, [wBuffer1]
+ ld a, [wRestartClockCurDivision]
call RestartClock_GetWraparoundTime
ld a, [de]
dec a
@@ -163,22 +171,22 @@
jr .done_scroll
.pressed_left
- ld hl, wBuffer1
+ ld hl, wRestartClockCurDivision
dec [hl]
jr nz, .done_scroll
- ld [hl], $3
+ ld [hl], RESTART_CLOCK_MIN
jr .done_scroll
.pressed_right
- ld hl, wBuffer1
+ ld hl, wRestartClockCurDivision
inc [hl]
ld a, [hl]
- cp $4
+ cp NUM_RESTART_CLOCK_DIVISIONS + 1
jr c, .done_scroll
- ld [hl], $1
+ ld [hl], RESTART_CLOCK_DAY
.done_scroll
- xor a
+ xor a ; FALSE
ret
.PrintTime:
@@ -187,27 +195,27 @@
ld c, 18
call Textbox
decoord 1, 8
- ld a, [wBuffer4]
+ ld a, [wRestartClockDay]
ld b, a
farcall PrintDayOfWeek
- ld a, [wBuffer5]
+ ld a, [wRestartClockHour]
ld b, a
- ld a, [wBuffer6]
+ ld a, [wRestartClockMin]
ld c, a
decoord 11, 8
farcall PrintHoursMins
- ld a, [wBuffer2]
+ ld a, [wRestartClockPrevDivision]
lb de, " ", " "
call .PlaceChars
- ld a, [wBuffer1]
+ ld a, [wRestartClockCurDivision]
lb de, "▲", "▼"
call .PlaceChars
- ld a, [wBuffer1]
- ld [wBuffer2], a
+ ld a, [wRestartClockCurDivision]
+ ld [wRestartClockPrevDivision], a
ret
.UnusedPlaceCharsFragment: ; unreferenced
- ld a, [wBuffer3]
+ ld a, [wRestartClockUpArrowYCoord]
ld b, a
call Coord2Tile
ret
@@ -215,7 +223,7 @@
.PlaceChars:
push de
call RestartClock_GetWraparoundTime
- ld a, [wBuffer3]
+ ld a, [wRestartClockUpArrowYCoord]
dec a
ld b, a
call Coord2Tile
--- a/gfx/mail/mail.pal
+++ b/gfx/mail/mail.pal
@@ -1,49 +1,10 @@
- RGB 20, 31, 11
- RGB 31, 19, 00
- RGB 31, 10, 09
- RGB 00, 00, 00
-
- RGB 15, 20, 31
- RGB 30, 26, 00
- RGB 31, 12, 00
- RGB 00, 00, 00
-
- RGB 24, 17, 31
- RGB 30, 26, 00
- RGB 08, 11, 31
- RGB 00, 00, 00
-
- RGB 31, 25, 17
- RGB 31, 18, 04
- RGB 28, 12, 05
- RGB 00, 00, 00
-
- RGB 19, 26, 31
- RGB 31, 05, 08
- RGB 31, 09, 31
- RGB 00, 00, 00
-
- RGB 31, 19, 28
- RGB 31, 21, 00
- RGB 12, 22, 00
- RGB 00, 00, 00
-
- RGB 19, 17, 23
- RGB 30, 26, 00
- RGB 31, 12, 00
- RGB 00, 00, 00
-
- RGB 07, 26, 31
- RGB 26, 26, 27
- RGB 31, 11, 11
- RGB 00, 00, 00
-
- RGB 21, 31, 21
- RGB 30, 26, 00
- RGB 31, 12, 00
- RGB 00, 00, 00
-
- RGB 07, 26, 31
- RGB 31, 31, 00
- RGB 00, 21, 00
- RGB 00, 00, 00
+ RGB 20,31,11, 31,19,00, 31,10,09, 00,00,00 ; FLOWER_MAIL
+ RGB 15,20,31, 30,26,00, 31,12,00, 00,00,00 ; SURF_MAIL
+ RGB 24,17,31, 30,26,00, 08,11,31, 00,00,00 ; LITEBLUEMAIL
+ RGB 31,25,17, 31,18,04, 28,12,05, 00,00,00 ; PORTRAITMAIL
+ RGB 19,26,31, 31,05,08, 31,09,31, 00,00,00 ; LOVELY_MAIL
+ RGB 31,19,28, 31,21,00, 12,22,00, 00,00,00 ; EON_MAIL
+ RGB 19,17,23, 30,26,00, 31,12,00, 00,00,00 ; MORPH_MAIL
+ RGB 07,26,31, 26,26,27, 31,11,11, 00,00,00 ; BLUESKY_MAIL
+ RGB 21,31,21, 30,26,00, 31,12,00, 00,00,00 ; MUSIC_MAIL
+ RGB 07,26,31, 31,31,00, 00,21,00, 00,00,00 ; MIRAGE_MAIL
--- a/maps/PlayersHouse2F.asm
+++ b/maps/PlayersHouse2F.asm
@@ -29,7 +29,7 @@
special ToggleMaptileDecorations
endcallback
- db 0, 0, 0 ; filler
+ db 0, 0, 0 ; unused
Doll1Script::
describedecoration DECODESC_LEFT_DOLL
--- a/wram.asm
+++ b/wram.asm
@@ -2227,7 +2227,7 @@
wForceEvolution:: db
UNION
-; general-purpose buffers
+; unidentified
wBuffer1:: db
wBuffer2:: db
wBuffer3:: db
@@ -2248,13 +2248,78 @@
wCurHPAnimHighHP:: db
NEXTU
+; battle AI
+wEnemyAIMoveScores:: ds NUM_MOVES
+
+NEXTU
+; battle HUD
+wBattleHUDTiles:: ds PARTY_LENGTH
+
+NEXTU
; evolution data
wEvolutionOldSpecies:: db
wEvolutionNewSpecies:: db
-wEvolutionPicOffset:: db
-wEvolutionCanceled:: db
+wEvolutionPicOffset:: db
+wEvolutionCanceled:: db
NEXTU
+; experience
+wExpToNextLevel:: ds 3
+
+NEXTU
+; lucky number show
+wMonIDDigitsBuffer:: ds 5
+
+NEXTU
+; mon submenu
+wMonSubmenuCount:: db
+wMonSubmenuItems:: ds NUM_MONMENU_ITEMS + 1
+
+NEXTU
+; heal machine anim
+wHealMachineAnimType:: db
+wHealMachineTempOBP1:: db
+wHealMachineAnimState:: db
+
+NEXTU
+; decorations
+wCurDecoration:: db
+wSelectedDecorationSide:: db
+wSelectedDecoration:: db
+wOtherDecoration:: db
+wChangedDecorations:: db
+wCurDecorationCategory:: db
+
+NEXTU
+; withdraw/deposit items
+wPCItemQuantityChangeBuffer:: db
+wPCItemQuantity:: db
+
+NEXTU
+wCurMailAuthorID:: dw
+wCurMailIndex:: db
+
+NEXTU
+; kurt
+wKurtApricornCount:: db
+wKurtApricornItems:: ds 10
+
+NEXTU
+; tree mons
+wTreeMonCoordScore:: db
+wTreeMonOTIDScore:: db
+
+NEXTU
+; restart clock
+wRestartClockCurDivision:: db
+wRestartClockPrevDivision:: db
+wRestartClockUpArrowYCoord:: db
+wRestartClockDay:: db
+wRestartClockHour:: db
+wRestartClockMin:: db
+
+NEXTU
; link
ds 9
wLinkBattleRNPreamble:: ds SERIAL_RN_PREAMBLE_LENGTH
@@ -2273,12 +2338,20 @@
wd1f3:: ds 1
NEXTU
-; miscellaneous
-wMagikarpLength:: dw
-wSelectedDecoration:: db
-wOtherDecoration:: db
- ds 3
+; miscellaneous bytes
+wSkipMovesBeforeLevelUp::
+wRegisteredPhoneNumbers::
+wListMovesLineSpacing:: db
+wSwitchMonTo:: db
+wSwitchMonFrom:: db
+ ds 4
wCurEnemyItem:: db
+
+NEXTU
+; miscellaneous words
+wBuySellItemPrice::
+wTempMysteryGiftTimer::
+wMagikarpLength:: dw
ENDU
wTempEnemyMonSpecies:: db
@@ -3254,7 +3327,7 @@
ENDU
UNION
- ds $32
+ ds 50
wBattleAnimEnd::
NEXTU