Identify and eliminate wEngineBuffer1-5

This commit is contained in:
Rangi
2019-04-08 18:50:10 -04:00
parent ec8869584f
commit 2184b60a0c
19 changed files with 194 additions and 164 deletions

View File

@@ -28,7 +28,7 @@ Elevator::
.LoadFloors:
ld de, wCurElevator
ld bc, 4
ld bc, wElevatorDataEnd - wElevatorData
ld hl, wElevatorPointer
ld a, [hli]
ld h, [hl]
@@ -104,12 +104,12 @@ Elevator_GoToFloor:
ld l, a
inc hl
pop af
ld bc, 4
ld bc, wElevatorDataEnd - wElevatorData
call AddNTimes
inc hl
ld de, wBackupWarpNumber
ld a, [wElevatorPointerBank]
ld bc, 3
ld bc, wElevatorDataEnd - wElevatorData - 1
call FarCopyBytes
ret

View File

@@ -40,14 +40,14 @@ FindItemInBallScript::
.TryReceiveItem:
xor a
ld [wScriptVar], a
ld a, [wEngineBuffer1]
ld a, [wItemBallItemID]
ld [wNamedObjectIndexBuffer], a
call GetItemName
ld hl, wStringBuffer3
call CopyName2
ld a, [wEngineBuffer1]
ld a, [wItemBallItemID]
ld [wCurItem], a
ld a, [wCurFruit]
ld a, [wItemBallQuantity]
ld [wItemQuantityChangeBuffer], a
ld hl, wNumItems
call ReceiveItem

View File

@@ -12,7 +12,7 @@ RepelWoreOffScript::
HiddenItemScript::
opentext
readmem wEngineBuffer3
readmem wHiddenItemID
getitemname STRING_BUFFER_3, USE_SCRIPT_VAR
writetext .found_text
giveitem ITEM_FROM_MEM
@@ -42,7 +42,7 @@ HiddenItemScript::
text_end
SetMemEvent:
ld hl, wEngineBuffer1
ld hl, wHiddenItemEvent
ld a, [hli]
ld d, [hl]
ld e, a

View File

@@ -39,13 +39,13 @@ MomTriesToBuySomething::
.ok
ld a, PHONE_MOM
ld [wCurCaller], a
ld bc, wEngineBuffer2
ld hl, 0
ld bc, wCallerContact
ld hl, PHONE_CONTACT_TRAINER_CLASS
add hl, bc
ld [hl], 0
ld [hl], TRAINER_NONE
inc hl
ld [hl], 1
ld hl, wPhoneScriptPointer - wEngineBuffer2
ld [hl], PHONE_MOM
ld hl, PHONE_CONTACT_SCRIPT2_BANK
add hl, bc
ld a, BANK(Mom_GetScriptPointer)
ld [hli], a

View File

@@ -500,7 +500,7 @@ TrySurfOW::
jr z, .quit
; Must be facing water.
ld a, [wEngineBuffer1]
ld a, [wFacingTileID]
call GetTileCollision
cp WATERTILE
jr nz, .quit

View File

@@ -4,29 +4,29 @@ DoPoisonStep::
jr z, .no_faint
xor a
ld c, 7
ld hl, wEngineBuffer1
.loop_clearEngineBuffer1
ld c, wPoisonStepDataEnd - wPoisonStepData
ld hl, wPoisonStepData
.loop_clearPoisonStepData
ld [hli], a
dec c
jr nz, .loop_clearEngineBuffer1
jr nz, .loop_clearPoisonStepData
xor a
ld [wCurPartyMon], a
.loop_check_poison
call .DamageMonIfPoisoned
jr nc, .not_poisoned
; the output flag is stored in c, copy it to the ([wCurPartyMon] + 2)nd EngineBuffer
; and set the corresponding flag in wEngineBuffer1
; the output flag is stored in c, copy it to [wPoisonStepPartyFlags + [wCurPartyMon]]
; and set the corresponding flag in wPoisonStepFlagSum
ld a, [wCurPartyMon]
ld e, a
ld d, 0
ld hl, wEngineBuffer2
ld hl, wPoisonStepPartyFlags
add hl, de
ld [hl], c
ld a, [wEngineBuffer1]
ld a, [wPoisonStepFlagSum]
or c
ld [wEngineBuffer1], a
ld [wPoisonStepFlagSum], a
.not_poisoned
ld a, [wPartyCount]
@@ -35,10 +35,10 @@ DoPoisonStep::
cp [hl]
jr nz, .loop_check_poison
ld a, [wEngineBuffer1]
ld a, [wPoisonStepFlagSum]
and %10
jr nz, .someone_has_fainted
ld a, [wEngineBuffer1]
ld a, [wPoisonStepFlagSum]
and %01
jr z, .no_faint
call .PlayPoisonSFX
@@ -120,7 +120,7 @@ DoPoisonStep::
.CheckWhitedOut:
xor a
ld [wCurPartyMon], a
ld de, wEngineBuffer2
ld de, wPoisonStepPartyFlags
.party_loop
push de
ld a, [de]

View File

@@ -9,9 +9,9 @@
OpenMartDialog::
call GetMart
ld a, c
ld [wEngineBuffer1], a
ld [wMartType], a
call LoadMartPointer
ld a, [wEngineBuffer1]
ld a, [wMartType]
ld hl, .dialogs
rst JumpTable
ret
@@ -24,10 +24,10 @@ OpenMartDialog::
dw RooftopSale
MartDialog:
ld a, 0
ld [wEngineBuffer1], a
ld a, MARTTYPE_STANDARD
ld [wMartType], a
xor a ; STANDARDMART_HOWMAYIHELPYOU
ld [wEngineBuffer5], a
ld [wMartJumptableIndex], a
call StandardMart
ret
@@ -105,8 +105,8 @@ LoadMartPointer:
xor a
ld bc, wCurMartEnd - wCurMart
call ByteFill
xor a
ld [wEngineBuffer5], a
xor a ; STANDARDMART_HOWMAYIHELPYOU
ld [wMartJumptableIndex], a
ld [wBargainShopFlags], a
ld [wFacingDirection], a
ret
@@ -138,13 +138,15 @@ GetMart:
const STANDARDMART_QUIT ; 4
const STANDARDMART_ANYTHINGELSE ; 5
STANDARDMART_EXIT EQU -1
StandardMart:
.loop
ld a, [wEngineBuffer5]
ld a, [wMartJumptableIndex]
ld hl, .MartFunctions
rst JumpTable
ld [wEngineBuffer5], a
cp -1
ld [wMartJumptableIndex], a
cp STANDARDMART_EXIT
jr nz, .loop
ret
@@ -202,7 +204,7 @@ StandardMart:
call ExitMenu
ld hl, Text_Mart_ComeAgain
call MartTextBox
ld a, -1
ld a, STANDARDMART_EXIT
ret
.AnythingElse:
@@ -346,7 +348,7 @@ BuyMenu:
LoadBuyMenuText:
; load text from a nested table
; which table is in wEngineBuffer1
; which table is in wMartType
; which entry is in register a
push af
call GetMartDialogGroup ; gets a pointer from GetMartDialogGroup.MartTextFunctionPointers
@@ -376,7 +378,7 @@ MartAskPurchaseQuantity:
jp RooftopSaleAskPurchaseQuantity
GetMartDialogGroup:
ld a, [wEngineBuffer1]
ld a, [wMartType]
ld e, a
ld d, 0
ld hl, .MartTextFunctionPointers

View File

@@ -602,8 +602,8 @@ TryObjectEvent:
ld h, [hl]
ld l, a
call GetMapScriptsBank
ld de, wEngineBuffer1
ld bc, 2
ld de, wItemBallData
ld bc, wItemBallDataEnd - wItemBallData
call FarCopyBytes
ld a, PLAYEREVENT_ITEMBALL
scf
@@ -638,7 +638,7 @@ TryBGEvent:
ret
.is_bg_event:
ld a, [wEngineBuffer3]
ld a, [wCurBGEventType]
ld hl, .bg_events
rst JumpTable
ret
@@ -675,7 +675,7 @@ TryBGEvent:
.read
call PlayTalkObject
ld hl, wEngineBuffer4
ld hl, wCurBGEventScriptAddr
ld a, [hli]
ld h, [hl]
ld l, a
@@ -689,8 +689,8 @@ TryBGEvent:
jp nz, .dontread
call PlayTalkObject
call GetMapScriptsBank
ld de, wEngineBuffer1
ld bc, 3
ld de, wHiddenItemData
ld bc, wHiddenItemDataEnd - wHiddenItemData
call FarCopyBytes
ld a, BANK(HiddenItemScript)
ld hl, HiddenItemScript
@@ -702,8 +702,8 @@ TryBGEvent:
call CheckBGEventFlag
jr nz, .dontread
call GetMapScriptsBank
ld de, wEngineBuffer1
ld bc, 3
ld de, wHiddenItemData
ld bc, wHiddenItemDataEnd - wHiddenItemData
call FarCopyBytes
jr .dontread
@@ -734,7 +734,7 @@ TryBGEvent:
ret
CheckBGEventFlag:
ld hl, wEngineBuffer4
ld hl, wCurBGEventScriptAddr
ld a, [hli]
ld h, [hl]
ld l, a
@@ -1076,7 +1076,7 @@ LoadScriptBDE::
TryTileCollisionEvent::
call GetFacingTileCoord
ld [wEngineBuffer1], a
ld [wFacingTileID], a
ld c, a
farcall CheckFacingTileForStdScript
jr c, .done
@@ -1087,21 +1087,21 @@ TryTileCollisionEvent::
jr .done
.whirlpool
ld a, [wEngineBuffer1]
ld a, [wFacingTileID]
call CheckWhirlpoolTile
jr nz, .waterfall
farcall TryWhirlpoolOW
jr .done
.waterfall
ld a, [wEngineBuffer1]
ld a, [wFacingTileID]
call CheckWaterfallTile
jr nz, .headbutt
farcall TryWaterfallOW
jr .done
.headbutt
ld a, [wEngineBuffer1]
ld a, [wFacingTileID]
call CheckHeadbuttTreeTile
jr nz, .surf
farcall TryHeadbuttOW

View File

@@ -4,7 +4,7 @@ DoPlayerMovement::
ld a, movement_step_sleep
ld [wMovementAnimation], a
xor a
ld [wd041], a
ld [wWalkingIntoEdgeWarp], a
call .TranslateIntoMovement
ld c, a
ld a, [wMovementAnimation]
@@ -98,7 +98,7 @@ DoPlayerMovement::
jr z, .Standing
; Walking into an edge warp won't bump.
ld a, [wEngineBuffer4]
ld a, [wWalkingIntoEdgeWarp]
and a
jr nz, .CantMove
call .BumpSound
@@ -321,17 +321,17 @@ DoPlayerMovement::
.TrySurf:
call .CheckSurfPerms
ld [wd040], a
ld [wWalkingIntoLand], a
jr c, .surf_bump
call .CheckNPC
ld [wd03f], a
ld [wWalkingIntoNPC], a
and a
jr z, .surf_bump
cp 2
jr z, .surf_bump
ld a, [wd040]
ld a, [wWalkingIntoLand]
and a
jr nz, .ExitWater
@@ -395,7 +395,7 @@ DoPlayerMovement::
.CheckWarp:
; Bug: Since no case is made for STANDING here, it will check
; [.edgewarps + $ff]. This resolves to $3e at $8035a.
; This causes wd041 to be nonzero when standing on tile $3e,
; This causes wWalkingIntoEdgeWarp to be nonzero when standing on tile $3e,
; making bumps silent.
ld a, [wWalkingDirection]
@@ -409,8 +409,8 @@ DoPlayerMovement::
cp [hl]
jr nz, .not_warp
ld a, 1
ld [wd041], a
ld a, TRUE
ld [wWalkingIntoEdgeWarp], a
ld a, [wWalkingDirection]
; This is in the wrong place.
cp STANDING

View File

@@ -518,7 +518,7 @@ TrainerWalkToPlayer:
call InitMovementBuffer
ld a, movement_step_sleep
call AppendToMovementBuffer
ld a, [wd03f]
ld a, [wWalkingIntoNPC]
dec a
jr z, .TerminateStep
ldh a, [hLastTalked]

View File

@@ -637,7 +637,7 @@ PocketIsFullText:
Script_pokemart:
; script command 0x94
; parameters: dialog_id, mart_id
; parameters: mart_type, mart_id
call GetScriptByte
ld c, a
@@ -765,7 +765,7 @@ Script_trainertext:
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [wEngineBuffer1]
ld a, [wSeenTrainerBank]
ld b, a
call MapTextbox
ret
@@ -777,7 +777,7 @@ Script_scripttalkafter:
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [wEngineBuffer1]
ld a, [wSeenTrainerBank]
ld b, a
jp ScriptJump
@@ -787,7 +787,7 @@ Script_trainerflagaction:
xor a
ld [wScriptVar], a
ld hl, wd041
ld hl, wTempTrainerEventFlag
ld e, [hl]
inc hl
ld d, [hl]

View File

@@ -163,12 +163,13 @@ CheckPhoneContactTimeOfDay:
ChooseRandomCaller:
; If no one is available to call, don't return anything.
ld a, [wEngineBuffer3]
ld a, [wNumAvailableCallers]
and a
jr z, .NothingToSample
; Sample a random number between 0 and 31.
; Store the number of available callers in c.
ld c, a
; Sample a random number between 0 and 31.
call Random
ldh a, [hRandomAdd]
swap a
@@ -178,7 +179,7 @@ ChooseRandomCaller:
; Return the caller ID you just sampled.
ld c, a
ld b, 0
ld hl, wEngineBuffer4
ld hl, wAvailableCallers
add hl, bc
ld a, [hl]
scf
@@ -191,23 +192,23 @@ ChooseRandomCaller:
GetAvailableCallers:
farcall CheckTime
ld a, c
ld [wEngineBuffer1], a
ld hl, wEngineBuffer3
ld bc, 11
ld [wCheckedTime], a
ld hl, wNumAvailableCallers
ld bc, CONTACT_LIST_SIZE + 1
xor a
call ByteFill
ld de, wPhoneList
ld a, CONTACT_LIST_SIZE
.loop
ld [wEngineBuffer2], a
ld [wPhoneListIndex], a
ld a, [de]
and a
jr z, .not_good_for_call
ld hl, PhoneContacts + PHONE_CONTACT_SCRIPT2_TIME
ld bc, PHONE_TABLE_WIDTH
ld bc, PHONE_CONTACT_SIZE
call AddNTimes
ld a, [wEngineBuffer1]
ld a, [wCheckedTime]
and [hl]
jr z, .not_good_for_call
ld bc, PHONE_CONTACT_MAP_GROUP - PHONE_CONTACT_SCRIPT2_TIME
@@ -220,18 +221,18 @@ GetAvailableCallers:
cp [hl]
jr z, .not_good_for_call
.different_map
ld a, [wEngineBuffer3]
ld a, [wNumAvailableCallers]
ld c, a
ld b, $0
inc a
ld [wEngineBuffer3], a
ld hl, wEngineBuffer4
ld [wNumAvailableCallers], a
ld hl, wAvailableCallers
add hl, bc
ld a, [de]
ld [hl], a
.not_good_for_call
inc de
ld a, [wEngineBuffer2]
ld a, [wPhoneListIndex]
dec a
jr nz, .loop
ret
@@ -261,7 +262,7 @@ CheckSpecialPhoneCall::
push hl
call LoadCallerScript
pop hl
ld de, wPhoneScriptPointer
ld de, wCallerContact + PHONE_CONTACT_SCRIPT2_BANK
ld a, [hli]
ld [de], a
inc de
@@ -323,7 +324,7 @@ Function90199:
ld a, b
ld [wCurCaller], a
ld hl, PhoneContacts
ld bc, PHONE_TABLE_WIDTH
ld bc, PHONE_CONTACT_SIZE
call AddNTimes
ld d, h
ld e, l
@@ -398,13 +399,13 @@ LoadCallerScript:
.actualcaller
ld hl, PhoneContacts
ld bc, 12
ld bc, PHONE_CONTACT_SIZE
ld a, e
call AddNTimes
ld a, BANK(PhoneContacts)
.proceed
ld de, wEngineBuffer2
ld bc, 12
ld de, wCallerContact
ld bc, PHONE_CONTACT_SIZE
call FarCopyBytes
ret
@@ -422,7 +423,7 @@ WrongNumber:
Script_ReceivePhoneCall:
refreshscreen
callasm RingTwice_StartCall
memcall wPhoneScriptPointer
memcall wCallerContact + PHONE_CONTACT_SCRIPT2_BANK
waitbutton
callasm HangUp
closetext
@@ -620,7 +621,7 @@ CheckCanDeletePhoneNumber:
GetCallerTrainerClass:
push hl
ld hl, PhoneContacts + PHONE_CONTACT_TRAINER_CLASS
ld bc, PHONE_TABLE_WIDTH
ld bc, PHONE_CONTACT_SIZE
call AddNTimes
ld a, [hli]
ld b, [hl]
@@ -687,7 +688,7 @@ GetCallerLocation:
push de
ld a, [wCurCaller]
ld hl, PhoneContacts + PHONE_CONTACT_MAP_GROUP
ld bc, PHONE_TABLE_WIDTH
ld bc, PHONE_CONTACT_SIZE
call AddNTimes
ld b, [hl]
inc hl