Identify more uses of wBuffer1-6

This commit is contained in:
Rangi 2020-11-03 19:53:07 -05:00
parent 826e070f04
commit c88c4a8340
29 changed files with 327 additions and 264 deletions

View File

@ -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 @@ AIChooseMove:
; 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,14 +37,14 @@ AIChooseMove:
inc hl
jr .CheckDisabledMove
.ScoreDisabledMove:
ld hl, wBuffer1
ld hl, wEnemyAIMoveScores
ld b, 0
add hl, bc
ld [hl], 80
; 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 @@ AIChooseMove:
; 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 @@ AIChooseMove:
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 @@ AIChooseMove:
; 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

View File

@ -6,7 +6,7 @@ AI_Basic:
; -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 @@ AI_Setup:
; 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 @@ AI_Types:
; 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_Types:
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_Offensive:
AI_Smart:
; Context-specific scoring.
ld hl, wBuffer1
ld hl, wEnemyAIMoveScores
ld de, wEnemyMonMoves
ld b, NUM_MOVES + 1
.checkmove
@ -518,7 +518,7 @@ AI_Smart_LockOn:
.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 @@ AI_Opportunist:
ret c
.lowhp
ld hl, wBuffer1 - 1
ld hl, wEnemyAIMoveScores - 1
ld de, wEnemyMonMoves
ld c, NUM_MOVES + 1
.checkmove
@ -2987,7 +2987,7 @@ AI_Aggressive:
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 @@ AI_Cautious:
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 @@ INCLUDE "data/battle/ai/residual_moves.asm"
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 @@ AI_Risky:
; 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

View File

@ -5358,7 +5358,7 @@ MoveSelectionScreen:
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 @@ LoadEnemyMon:
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 @@ SendOutMonText:
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

View File

@ -47,7 +47,7 @@ ShowOTTrainerMonsRemaining:
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 @@ StageBallTilesData:
dec c
jr nz, .loop1
pop af
ld de, wBuffer1
ld de, wBattleHUDTiles
.loop2
push af
call .GetHUDTile
@ -200,7 +201,7 @@ LinkBattle_TrainerHuds:
jp LoadTrainerHudOAM
LoadTrainerHudOAM:
ld de, wBuffer1
ld de, wBattleHUDTiles
ld c, PARTY_LENGTH
.loop
ld a, [wPlaceBallsY]

View File

@ -616,8 +616,8 @@ DayCare_InitBreeding:
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

View File

@ -17,19 +17,19 @@ HealMachineAnim:
; 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,17 +38,17 @@ HealMachineAnim:
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
jr z, .finish
ld hl, .Jumptable
rst JumpTable
jr .jumpable_loop
jr .jumptable_loop
.finish
ret
@ -237,7 +237,7 @@ INCLUDE "gfx/overworld/heal_machine.pal"
.PlaceHealingMachineTile:
push bc
ld a, [wBuffer1]
ld a, [wHealMachineAnimType]
bcpixel 2, 4
cp HEALMACHINE_ELMS_LAB
jr z, .okay

View File

@ -125,7 +125,7 @@ CheckForLuckyNumberWinners:
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 @@ CheckForLuckyNumberWinners:
ld b, 5
ld c, 0
ld hl, wLuckyNumberDigitsBuffer + 4
ld de, wBuffer1 + 4
ld de, wMonIDDigitsBuffer + 4
.loop
ld a, [de]
cp [hl]

View File

@ -361,15 +361,15 @@ PlayerWithdrawItemMenu:
.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 @@ PlayerDepositItemMenu:
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 @@ PlayerDepositItemMenu:
.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

View File

@ -197,11 +197,11 @@ NoTreeMon:
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

View File

@ -8,9 +8,9 @@ SelectQuantityToBuy:
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 @@ RooftopSale_SelectQuantityToBuy:
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 @@ DisplaySellingPrice:
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

View File

@ -449,6 +449,7 @@ Gen2ToGen2LinkComms:
ld [wOtherTrainerClass], a
call ClearScreen
farcall Link_WaitBGMap
ld hl, wOptions
ld a, [hl]
push af
@ -460,8 +461,6 @@ Gen2ToGen2LinkComms:
ld bc, NAME_LENGTH
call CopyBytes
call ReturnToMapFromSubmenu
; LET'S DO THIS
ld a, [wDisableTextAcceleration]
push af
ld a, 1
@ -478,6 +477,7 @@ Gen2ToGen2LinkComms:
pop af
ldh [rIF], a
; LET'S DO THIS
predef StartBattle
ldh a, [rIF]
@ -492,6 +492,7 @@ Gen2ToGen2LinkComms:
ld [wDisableTextAcceleration], a
pop af
ld [wOptions], a
farcall LoadPokemonData
jp ExitLinkCommunications

View File

@ -206,9 +206,10 @@ StartMenu_PrintBugContestStatus:
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 @@ FindApricornsInBag:
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

View File

@ -10,17 +10,17 @@ _PlayerDecorationMenu:
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 @@ _PlayerDecorationMenu:
call ExitMenu
pop af
ld [wWhichIndexSet], a
ld a, [wBuffer5]
ld a, [wChangedDecorations]
ld c, a
ret
@ -71,7 +71,7 @@ _PlayerDecorationMenu:
xor a
ld [wWhichIndexSet], a
call .ClearStringBuffer2
call .FindOwndDecos
call .FindOwnedDecos
ld a, 7
call .AppendToStringBuffer2
ld hl, wStringBuffer2
@ -98,7 +98,7 @@ _PlayerDecorationMenu:
ld [hl], a
ret
.FindOwndDecos:
.FindOwnedDecos:
ld hl, .dw
.loop
ld a, [hli]
@ -642,12 +642,12 @@ DecoAction_putawaybigdoll:
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_TrySetItUp:
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 @@ DecoAction_SetItUp:
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_SetItUp:
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 @@ DecoAction_setupornament:
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 @@ DecoAction_PutItAway_Ornament:
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 @@ DecoAction_AskWhichSide:
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 @@ DecoAction_AskWhichSide:
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

View File

@ -261,15 +261,15 @@ DoMysteryGiftIfDayHasPassed:
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 @@ DoMysteryGiftIfDayHasPassed:
.not_timed_out
ld a, BANK(sMysteryGiftTimer)
call OpenSRAM
ld hl, wBuffer1
ld hl, wTempMysteryGiftTimer
ld a, [hli]
ld [sMysteryGiftTimer], a
ld a, [hl]

View File

@ -62,7 +62,7 @@ Phone_FindOpenSlot:
GetRemainingSpaceInPhoneList:
xor a
ld [wBuffer1], a
ld [wRegisteredPhoneNumbers], a
ld hl, PermanentNumbers
.loop
ld a, [hli]
@ -76,7 +76,7 @@ GetRemainingSpaceInPhoneList:
ld c, a
call _CheckCellNum
jr c, .permanent
ld hl, wBuffer1
ld hl, wRegisteredPhoneNumbers
inc [hl]
.permanent
pop hl
@ -87,7 +87,7 @@ GetRemainingSpaceInPhoneList:
.done
ld a, CONTACT_LIST_SIZE
ld hl, wBuffer1
ld hl, wRegisteredPhoneNumbers
sub [hl]
ret

View File

@ -509,7 +509,7 @@ FillMoves:
ld a, [wCurPartyLevel]
cp b
jp c, .done
ld a, [wEvolutionOldSpecies]
ld a, [wSkipMovesBeforeLevelUp]
and a
jr z, .CheckMove
ld a, [wPrevPartyLevel]

View File

@ -142,7 +142,7 @@ ForgetMove:
call Textbox
hlcoord 5 + 2, 2 + 2
ld a, SCREEN_WIDTH * 2
ld [wBuffer1], a
ld [wListMovesLineSpacing], a
predef ListMoves
; w2DMenuData
ld a, $4

View File

@ -322,7 +322,8 @@ InitMail:
; 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

View File

@ -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 @@ ReadAnyMail:
call .LoadGFX
call EnableLCD
call WaitBGMap
ld a, [wBuffer3]
ld a, [wCurMailIndex]
ld e, a
farcall LoadMailPalettes
call SetPalettes
@ -72,13 +86,13 @@ ReadAnyMail:
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 @@ ReadAnyMail:
.got_pointer
ld a, c
ld [wBuffer3], a
ld [wCurMailIndex], a
ld a, [hli]
ld h, [hl]
ld l, a
@ -111,6 +125,7 @@ ReadAnyMail:
ret
MailGFXPointers:
; entries correspond to *MAIL_INDEX constants
dbw FLOWER_MAIL, LoadFlowerMailGFX
dbw SURF_MAIL, LoadSurfMailGFX
dbw LITEBLUEMAIL, LoadLiteBlueMailGFX
@ -121,7 +136,7 @@ MailGFXPointers:
dbw BLUESKY_MAIL, LoadBlueSkyMailGFX
dbw MUSIC_MAIL, LoadMusicMailGFX
dbw MIRAGE_MAIL, LoadMirageMailGFX
db -1
db -1 ; end
LoadSurfMailGFX:
push bc
@ -697,12 +712,12 @@ MailGFX_PlaceMessage:
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

View File

@ -1145,7 +1145,7 @@ SetUpMoveList:
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

View File

@ -242,9 +242,9 @@ ListMovePP:
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 @@ ListMovePP:
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 @@ Unused_PlaceEnemyHPLevel:
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 @@ Unused_PlaceEnemyHPLevel:
ret
PlaceStatusString:
; Return nz if the status is not OK
push de
inc de
inc de
@ -381,7 +382,7 @@ PlaceStatusString:
ld de, FntString
call CopyStatusString
pop de
ld a, $1
ld a, TRUE
and a
ret
@ -420,7 +421,7 @@ PlaceNonFaintStatus:
.place
call CopyStatusString
ld a, $1
ld a, TRUE
and a
.no_status
@ -434,9 +435,9 @@ FrzString: db "FRZ@"
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 @@ ListMoves:
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 @@ ListMoves:
.nonmove_loop
push af
ld [hl], "-"
ld a, [wBuffer1]
ld a, [wListMovesLineSpacing]
ld c, a
ld b, 0
add hl, bc

View File

@ -25,8 +25,8 @@ MonSubmenu:
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 @@ MonMenuLoop:
.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 @@ MonMenuLoop:
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 @@ PopulateMonMenu:
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 @@ GetMonSubmenuItems:
call AddMonMenuItem
.skip2
ld a, [wBuffer1]
ld a, [wMonSubmenuCount]
cp NUM_MONMENU_ITEMS
jr z, .ok2
ld a, MONMENUITEM_CANCEL
@ -212,17 +212,17 @@ IsFieldMove:
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 @@ AddMonMenuItem:
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

View File

@ -132,7 +132,7 @@ rept NUM_MOVES - 1
ld [hli], a
endr
ld [hl], a
ld [wEvolutionOldSpecies], a
ld [wSkipMovesBeforeLevelUp], a
predef FillMoves
.next
@ -876,8 +876,8 @@ RetrieveBreedmon:
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

View File

@ -635,7 +635,7 @@ LoadPinkPage:
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 @@ LoadPinkPage:
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 @@ LoadGreenPage:
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

View File

@ -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 @@ _SwitchPartyMons:
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 @@ _SwitchPartyMons:
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 @@ _SwitchPartyMons:
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 @@ _SwitchPartyMons:
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 @@ _SwitchPartyMons:
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 @@ _SwitchPartyMons:
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 @@ _SwitchPartyMons:
call OpenSRAM
call CopyBytes
ld hl, sPartyMail
ld a, [wBuffer3]
ld a, [wSwitchMonFrom]
ld bc, MAIL_STRUCT_LENGTH
call AddNTimes
pop de

View File

@ -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,14 +25,15 @@ endr
ret
.WrapAroundTimes:
dw wBuffer4
db 7, 4
dw wBuffer5
db 24, 12
dw wBuffer6
db 60, 15
; 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
RestartClock:
; If we're here, we had an RTC overflow.
@ -56,18 +64,18 @@ RestartClock:
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 @@ RestartClock:
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 @@ RestartClock:
ld hl, .ClockHasResetText
call PrintText
call WaitPressAorB_BlinkCursor
xor a
xor a ; FALSE
ret
.cancel
ld a, $1
ld a, TRUE
ret
.ClockIsThisOKText:
@ -128,29 +136,29 @@ RestartClock:
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
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 @@ RestartClock:
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 @@ RestartClock:
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 @@ RestartClock:
.PlaceChars:
push de
call RestartClock_GetWraparoundTime
ld a, [wBuffer3]
ld a, [wRestartClockUpArrowYCoord]
dec a
ld b, a
call Coord2Tile

View File

@ -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

View File

@ -29,7 +29,7 @@ PlayersHouse2F_MapScripts:
special ToggleMaptileDecorations
endcallback
db 0, 0, 0 ; filler
db 0, 0, 0 ; unused
Doll1Script::
describedecoration DECODESC_LEFT_DOLL

View File

@ -2227,7 +2227,7 @@ wEvolvableFlags:: flag_array PARTY_LENGTH
wForceEvolution:: db
UNION
; general-purpose buffers
; unidentified
wBuffer1:: db
wBuffer2:: db
wBuffer3:: db
@ -2247,12 +2247,77 @@ wCurHPAnimDeltaHP:: dw
wCurHPAnimLowHP:: db
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
; mail
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
@ -2273,12 +2338,20 @@ wd1f2:: ds 1
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 @@ wBattleAnimTempPalette:: db
ENDU
UNION
ds $32
ds 50
wBattleAnimEnd::
NEXTU