From e44744c5878137bc7f17f20432c285996ea33a7f Mon Sep 17 00:00:00 2001 From: xCrystal Date: Sun, 11 Feb 2024 00:34:46 +0100 Subject: [PATCH] wVramState -> wStateFlags and define flag constants (from pokecrystal f72f078c0e68736adf81f6c45c84f0c1e127a231) --- constants/wram_constants.asm | 7 +++++++ engine/board/menu.asm | 12 ++++++------ engine/events/celebi.asm | 6 +++--- engine/events/field_moves.asm | 20 ++++++++++---------- engine/events/halloffame.asm | 4 ++-- engine/menus/level_selection_menu.asm | 6 +++--- engine/menus/menu.asm | 2 +- engine/menus/trainer_card.asm | 6 +++--- engine/movie/trade_animation.asm | 4 ++-- engine/overworld/init_map.asm | 2 +- engine/overworld/map_objects.asm | 10 +++++----- engine/overworld/movement.asm | 8 ++++---- engine/overworld/player_object.asm | 2 +- engine/overworld/scripting.asm | 4 ++-- engine/overworld/warp_connection.asm | 4 ++-- engine/pokedex/pokedex.asm | 6 +++--- engine/pokegear/pokegear.asm | 12 ++++++------ engine/pokemon/bills_pc.asm | 18 +++++++++--------- engine/pokemon/breeding.asm | 2 +- engine/sprite_anims/core.asm | 2 +- home/map.asm | 2 +- home/map_objects.asm | 8 ++++---- home/scrolling_menu.asm | 2 +- home/sprite_updates.asm | 8 ++++---- home/time_palettes.asm | 2 +- home/window.asm | 2 +- ram/wram.asm | 9 ++++----- 27 files changed, 88 insertions(+), 82 deletions(-) diff --git a/constants/wram_constants.asm b/constants/wram_constants.asm index 8600a016b..2e7eaaa03 100644 --- a/constants/wram_constants.asm +++ b/constants/wram_constants.asm @@ -100,6 +100,13 @@ DEF RIGHT_MASK EQU 1 << RIGHT shift_const FACE_RIGHT ; 1 DEF FACE_CURRENT EQU 0 +; wStateFlags +DEF SPRITE_UPDATES_DISABLED_F EQU 0 +DEF LAST_12_SPRITE_OAM_STRUCTS_RESERVED_F EQU 1 +DEF DONT_CLEAR_SHADOW_OAM_IN_SPRITE_ANIMS_F EQU 2 +DEF TEXT_STATE_F EQU 6 +DEF SCRIPTED_MOVEMENT_STATE_F EQU 7 + ; wPokemonWithdrawDepositParameter:: DEF PC_WITHDRAW EQU 0 DEF PC_DEPOSIT EQU 1 diff --git a/engine/board/menu.asm b/engine/board/menu.asm index 00c7331ff..bf13ec252 100755 --- a/engine/board/menu.asm +++ b/engine/board/menu.asm @@ -104,8 +104,8 @@ BoardMenuScript:: .EnterViewMapMode: call BackupMapObjectsOnEnterViewMapMode - ld hl, wVramState - res 2, [hl] + ld hl, wStateFlags + res DONT_CLEAR_SHADOW_OAM_IN_SPRITE_ANIMS_F, [hl] ld a, BOARDEVENT_VIEW_MAP_MODE ldh [hCurBoardEvent], a ld a, 100 @@ -347,8 +347,8 @@ BoardMenu_BreakDieAnimation: ld hl, wDisplaySecondarySprites res SECONDARYSPRITES_DIE_ROLL_F, [hl] - ld hl, wVramState - set 2, [hl] ; do not clear wShadowOAM during DoNextFrameForAllSprites + ld hl, wStateFlags + set DONT_CLEAR_SHADOW_OAM_IN_SPRITE_ANIMS_F, [hl] ; animation plays above NPCs so draw the graphics at the beginning of OAM. ; begin placing NPC sprites in OAM after all objects allocated to animations. ld a, [wSpriteAnim2Index] @@ -400,8 +400,8 @@ BoardMenu_BreakDieAnimation: jr .loop2 .done - ld hl, wVramState - res 2, [hl] + ld hl, wStateFlags + res DONT_CLEAR_SHADOW_OAM_IN_SPRITE_ANIMS_F, [hl] farcall ClearSpriteAnims ld hl, wDisplaySecondarySprites set SECONDARYSPRITES_SPACES_LEFT_F, [hl] diff --git a/engine/events/celebi.asm b/engine/events/celebi.asm index 1880c92dc..181645f1c 100644 --- a/engine/events/celebi.asm +++ b/engine/events/celebi.asm @@ -8,10 +8,10 @@ INCBIN "gfx/tilesets/forest-tree/4.2bpp" CelebiShrineEvent: call DelayFrame - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a call LoadCelebiGFX depixel 0, 10, 7, 0 ld a, SPRITE_ANIM_OBJ_CELEBI @@ -49,7 +49,7 @@ CelebiShrineEvent: .done pop af - ld [wVramState], a + ld [wStateFlags], a call .RestorePlayerSprite_DespawnLeaves call CelebiEvent_SetBattleType ret diff --git a/engine/events/field_moves.asm b/engine/events/field_moves.asm index 1a556d4b1..02bbd5af7 100644 --- a/engine/events/field_moves.asm +++ b/engine/events/field_moves.asm @@ -149,11 +149,11 @@ OWCutAnimation_WithCutTreeAsObject: .got_oam_addr ld [wCurSpriteOAMAddr], a ld [wCutTreeOAMAddr], a - ld hl, wVramState - set 2, [hl] ; do not clear wShadowOAM during DoNextFrameForAllSprites + ld hl, wStateFlags + set DONT_CLEAR_SHADOW_OAM_IN_SPRITE_ANIMS_F, [hl] callfar DoNextFrameForAllSprites - ld hl, wVramState - res 2, [hl] + ld hl, wStateFlags + res DONT_CLEAR_SHADOW_OAM_IN_SPRITE_ANIMS_F, [hl] call .OWCutJumptable call DelayFrame jr .loop @@ -448,10 +448,10 @@ Cut_Headbutt_GetPixelFacing: FlyFromAnim: call DelayFrame - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a call FlyFunction_InitGFX depixel 10, 10, 4, 0 ld a, SPRITE_ANIM_OBJ_RED_WALK @@ -477,15 +477,15 @@ FlyFromAnim: .exit pop af - ld [wVramState], a + ld [wStateFlags], a ret FlyToAnim: call DelayFrame - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a call FlyFunction_InitGFX depixel 31, 10, 4, 0 ld a, SPRITE_ANIM_OBJ_RED_WALK @@ -514,7 +514,7 @@ FlyToAnim: .exit pop af - ld [wVramState], a + ld [wStateFlags], a call .RestorePlayerSprite_DespawnLeaves ret diff --git a/engine/events/halloffame.asm b/engine/events/halloffame.asm index 9885ae731..0e777b7a1 100644 --- a/engine/events/halloffame.asm +++ b/engine/events/halloffame.asm @@ -41,7 +41,7 @@ RedCredits:: ld [wMusicFade], a farcall FadeOutToWhite xor a - ld [wVramState], a + ld [wStateFlags], a ldh [hMapAnims], a farcall InitDisplayForRedCredits ld c, 8 @@ -61,7 +61,7 @@ HallOfFame_FadeOutMusic: ld [wMusicFade], a farcall FadeOutToWhite xor a - ld [wVramState], a + ld [wStateFlags], a ldh [hMapAnims], a farcall InitDisplayForHallOfFame ld c, 100 diff --git a/engine/menus/level_selection_menu.asm b/engine/menus/level_selection_menu.asm index c3c67ffe4..2b901e2c8 100755 --- a/engine/menus/level_selection_menu.asm +++ b/engine/menus/level_selection_menu.asm @@ -4,8 +4,8 @@ LevelSelectionMenu:: ldh [hMapAnims], a ldh [hSCY], a ldh [hSCX], a - ld a, 1 << 2 ; do not clear wShadowOAM during DoNextFrameForAllSprites - ld [wVramState], a + ld a, 1 << DONT_CLEAR_SHADOW_OAM_IN_SPRITE_ANIMS_F + ld [wStateFlags], a call ClearBGPalettes call ClearTilemap @@ -306,7 +306,7 @@ LevelSelectionMenu:: farcall ClearSpriteAnims call ClearSprites xor a - ld [wVramState], a + ld [wStateFlags], a ret ; nc LevelSelectionMenu_LoadGFX: diff --git a/engine/menus/menu.asm b/engine/menus/menu.asm index ab7241d7e..dde83721d 100644 --- a/engine/menus/menu.asm +++ b/engine/menus/menu.asm @@ -614,7 +614,7 @@ _ExitMenu:: ret RestoreOverworldMapTiles: ; unreferenced - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z xor a ; sScratch diff --git a/engine/menus/trainer_card.asm b/engine/menus/trainer_card.asm index be54576a2..c09bcf4fe 100644 --- a/engine/menus/trainer_card.asm +++ b/engine/menus/trainer_card.asm @@ -9,10 +9,10 @@ const TRAINERCARDSTATE_QUIT ; 6 TrainerCard: - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a ld hl, wOptions ld a, [hl] push af @@ -34,7 +34,7 @@ TrainerCard: pop af ld [wOptions], a pop af - ld [wVramState], a + ld [wStateFlags], a ret .InitRAM: diff --git a/engine/movie/trade_animation.asm b/engine/movie/trade_animation.asm index c928b9df1..d6442f209 100644 --- a/engine/movie/trade_animation.asm +++ b/engine/movie/trade_animation.asm @@ -128,7 +128,7 @@ RunTradeAnimScript: push af xor a ldh [hMapAnims], a - ld hl, wVramState + ld hl, wStateFlags ld a, [hl] push af res 0, [hl] @@ -148,7 +148,7 @@ RunTradeAnimScript: pop af ld [wOptions], a pop af - ld [wVramState], a + ld [wStateFlags], a pop af ldh [hMapAnims], a ret diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm index 9383cbe0b..5f0ed5e23 100644 --- a/engine/overworld/init_map.asm +++ b/engine/overworld/init_map.asm @@ -17,7 +17,7 @@ ReanchorBGMap_NoOAMUpdate:: pop af ldh [hOAMUpdate], a - ld hl, wVramState + ld hl, wStateFlags set 6, [hl] ret diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index 96d5fb937..cf99183ab 100644 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -2167,7 +2167,7 @@ CopyTempObjectData: ret UpdateAllObjectsFrozen:: - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z ld bc, wObjectStructs @@ -2766,13 +2766,13 @@ SetObjectToRemainHidden: ret _UpdateActiveSpritesAfterOffset:: - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z jr _UpdateActiveSprites.go _UpdateActiveSprites:: - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z xor a @@ -2789,7 +2789,7 @@ _UpdateActiveSprites:: ret .fill - ld a, [wVramState] + ld a, [wStateFlags] bit 1, a ld b, NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH jr z, .ok @@ -3095,7 +3095,7 @@ _UpdateSecondarySprites:: ; which would require to displace primary (NPC) sprites in OAM. ; if it is detected that the size of secondary sprites has increased in the end, ; fall back to calling _UpdateActiveSprites to avoid corruption. - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z ld a, [hUsedSpriteIndex] diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm index 2251dbfe9..d1a6f9cc5 100644 --- a/engine/overworld/movement.asm +++ b/engine/overworld/movement.asm @@ -205,7 +205,7 @@ Movement_step_end: add hl, bc ld [hl], $0 - ld hl, wVramState + ld hl, wStateFlags res 7, [hl] ld hl, OBJECT_STEP_TYPE @@ -232,7 +232,7 @@ Movement_48: add hl, bc ld [hl], STEP_TYPE_SLEEP - ld hl, wVramState + ld hl, wStateFlags res 7, [hl] ret @@ -245,7 +245,7 @@ Movement_remove_object: ld [hl], -1 .not_leading - ld hl, wVramState + ld hl, wStateFlags res 7, [hl] ret @@ -258,7 +258,7 @@ Movement_4b: add hl, bc ld [hl], STEP_TYPE_STANDING - ld hl, wVramState + ld hl, wStateFlags res 7, [hl] ret diff --git a/engine/overworld/player_object.asm b/engine/overworld/player_object.asm index aa69b4092..8a891e529 100644 --- a/engine/overworld/player_object.asm +++ b/engine/overworld/player_object.asm @@ -153,7 +153,7 @@ CopyObjectStruct:: ld d, h ld e, l call CopyMapObjectToObjectStruct - ld hl, wVramState + ld hl, wStateFlags bit 7, [hl] ret z diff --git a/engine/overworld/scripting.asm b/engine/overworld/scripting.asm index ba086a2ae..b130e83fa 100644 --- a/engine/overworld/scripting.asm +++ b/engine/overworld/scripting.asm @@ -44,7 +44,7 @@ WaitScript: WaitScriptMovement: call StopScript - ld hl, wVramState + ld hl, wStateFlags bit 7, [hl] ret nz @@ -939,7 +939,7 @@ ApplyObjectFacing: pop de ld a, e call SetSpriteDirection - ld hl, wVramState + ld hl, wStateFlags bit 6, [hl] jr nz, .text_state call .DisableTextTiles diff --git a/engine/overworld/warp_connection.asm b/engine/overworld/warp_connection.asm index af40d1b31..5fab1d552 100644 --- a/engine/overworld/warp_connection.asm +++ b/engine/overworld/warp_connection.asm @@ -213,7 +213,7 @@ EnterMapWarp: ret LoadMapTimeOfDay: - ld hl, wVramState + ld hl, wStateFlags res 6, [hl] ld a, $1 ld [wSpriteUpdatesEnabled], a @@ -300,7 +300,7 @@ RefreshMapSprites: ld hl, wPlayerSpriteSetupFlags bit PLAYERSPRITESETUP_SKIP_RELOAD_GFX_F, [hl] jr nz, .skip - ld hl, wVramState + ld hl, wStateFlags set 0, [hl] call SafeUpdateSprites .skip diff --git a/engine/pokedex/pokedex.asm b/engine/pokedex/pokedex.asm index 121edf6d2..228419ac6 100644 --- a/engine/pokedex/pokedex.asm +++ b/engine/pokedex/pokedex.asm @@ -30,10 +30,10 @@ Pokedex: ld a, [hl] push af set NO_TEXT_SCROLL, [hl] - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a ldh a, [hInMenu] push af ld a, $1 @@ -64,7 +64,7 @@ Pokedex: pop af ldh [hInMenu], a pop af - ld [wVramState], a + ld [wStateFlags], a pop af ld [wOptions], a pop af diff --git a/engine/pokegear/pokegear.asm b/engine/pokegear/pokegear.asm index ca2407f12..accad5315 100644 --- a/engine/pokegear/pokegear.asm +++ b/engine/pokegear/pokegear.asm @@ -33,10 +33,10 @@ PokeGear: push af ld a, $1 ldh [hInMenu], a - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a call .InitTilemap call DelayFrame .loop @@ -54,7 +54,7 @@ PokeGear: call PlaySFX call WaitSFX pop af - ld [wVramState], a + ld [wStateFlags], a pop af ldh [hInMenu], a pop af @@ -1589,10 +1589,10 @@ _TownMap: ld a, $1 ldh [hInMenu], a - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a call ClearBGPalettes call ClearTilemap @@ -1632,7 +1632,7 @@ _TownMap: .resume pop af - ld [wVramState], a + ld [wStateFlags], a pop af ldh [hInMenu], a pop af diff --git a/engine/pokemon/bills_pc.asm b/engine/pokemon/bills_pc.asm index add4bc7b1..90adbebb0 100644 --- a/engine/pokemon/bills_pc.asm +++ b/engine/pokemon/bills_pc.asm @@ -3,10 +3,10 @@ _DepositPKMN: ld a, [hl] push af set NO_TEXT_SCROLL, [hl] - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a ldh a, [hInMenu] push af ld a, $1 @@ -30,7 +30,7 @@ _DepositPKMN: pop af ldh [hInMenu], a pop af - ld [wVramState], a + ld [wStateFlags], a pop af ld [wOptions], a ret @@ -259,10 +259,10 @@ _WithdrawPKMN: ld a, [hl] push af set NO_TEXT_SCROLL, [hl] - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a ldh a, [hInMenu] push af ld a, $1 @@ -286,7 +286,7 @@ _WithdrawPKMN: pop af ldh [hInMenu], a pop af - ld [wVramState], a + ld [wStateFlags], a pop af ld [wOptions], a ret @@ -497,10 +497,10 @@ _MovePKMNWithoutMail: ld a, [hl] push af set NO_TEXT_SCROLL, [hl] - ld a, [wVramState] + ld a, [wStateFlags] push af xor a - ld [wVramState], a + ld [wStateFlags], a ldh a, [hInMenu] push af ld a, $1 @@ -527,7 +527,7 @@ _MovePKMNWithoutMail: pop af ldh [hInMenu], a pop af - ld [wVramState], a + ld [wStateFlags], a pop af ld [wOptions], a ret diff --git a/engine/pokemon/breeding.asm b/engine/pokemon/breeding.asm index d5fc4ef8f..51e9af310 100644 --- a/engine/pokemon/breeding.asm +++ b/engine/pokemon/breeding.asm @@ -348,7 +348,7 @@ HatchEggs: ; Huh? @ @ text_far Text_BreedHuh text_asm - ld hl, wVramState + ld hl, wStateFlags res 0, [hl] push hl push de diff --git a/engine/sprite_anims/core.asm b/engine/sprite_anims/core.asm index 7afa9c2b9..d70a42123 100644 --- a/engine/sprite_anims/core.asm +++ b/engine/sprite_anims/core.asm @@ -55,7 +55,7 @@ DoNextFrameForAllSprites: dec e jr nz, .loop - ld a, [wVramState] + ld a, [wStateFlags] bit 2, a ret nz diff --git a/home/map.asm b/home/map.asm index e3081dd4e..d6302bcdb 100644 --- a/home/map.asm +++ b/home/map.asm @@ -2203,7 +2203,7 @@ ReturnToMapWithSpeechTextbox:: call ClearSprites call ReloadTilesetAndPalettes call SpeechTextbox ; 1bpp or 2bpp according to wTextboxFlags[TEXT_2BPP_F] - ld hl, wVramState + ld hl, wStateFlags set 0, [hl] call UpdateSprites call WaitBGMap2 diff --git a/home/map_objects.asm b/home/map_objects.asm index 33d063da0..32aa47fbf 100644 --- a/home/map_objects.asm +++ b/home/map_objects.asm @@ -390,7 +390,7 @@ LoadMovementDataPointer:: add hl, bc ld [hl], STEP_TYPE_RESET - ld hl, wVramState + ld hl, wStateFlags set 7, [hl] and a ret @@ -553,7 +553,7 @@ _GetMovementIndex:: ret UpdateSprites:: - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z farcall UpdateAllObjectsFrozen @@ -561,14 +561,14 @@ UpdateSprites:: ret UpdateActiveSprites:: - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z farcall _UpdateActiveSprites ret UpdateSecondarySprites:: - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ret z farcall _UpdateSecondarySprites diff --git a/home/scrolling_menu.asm b/home/scrolling_menu.asm index 64bb52598..a9b2013de 100644 --- a/home/scrolling_menu.asm +++ b/home/scrolling_menu.asm @@ -17,7 +17,7 @@ ScrollingMenu:: ret .UpdatePalettes: - ld hl, wVramState + ld hl, wStateFlags bit 0, [hl] jp nz, UpdateTimePals jp SetDefaultBGPAndOBP diff --git a/home/sprite_updates.asm b/home/sprite_updates.asm index e070a2bbe..4b9706c1d 100644 --- a/home/sprite_updates.asm +++ b/home/sprite_updates.asm @@ -1,9 +1,9 @@ DisableSpriteUpdates:: xor a ldh [hMapAnims], a - ld a, [wVramState] + ld a, [wStateFlags] res 0, a - ld [wVramState], a + ld [wStateFlags], a ld a, $0 ld [wSpriteUpdatesEnabled], a ret @@ -11,9 +11,9 @@ DisableSpriteUpdates:: EnableSpriteUpdates:: ld a, $1 ld [wSpriteUpdatesEnabled], a - ld a, [wVramState] + ld a, [wStateFlags] set 0, a - ld [wVramState], a + ld [wStateFlags], a ld a, $1 ldh [hMapAnims], a ret diff --git a/home/time_palettes.asm b/home/time_palettes.asm index ab7fe91b7..cdb08cec0 100644 --- a/home/time_palettes.asm +++ b/home/time_palettes.asm @@ -7,7 +7,7 @@ UpdateTimeSensitivePals:: ret z ; obj update on? - ld a, [wVramState] + ld a, [wStateFlags] bit 0, a ; obj update ret z diff --git a/home/window.asm b/home/window.asm index 043d16c38..11f2e305f 100644 --- a/home/window.asm +++ b/home/window.asm @@ -35,7 +35,7 @@ CloseText:: pop af ldh [hOAMUpdate], a - ld hl, wVramState + ld hl, wStateFlags res 6, [hl] ret diff --git a/ram/wram.asm b/ram/wram.asm index 70cc1adaf..8f0c7884b 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -1785,13 +1785,12 @@ wBattlePlayerAction:: wSolvedUnownPuzzle:: db -wVramState:: +wStateFlags:: ; bit 0: overworld sprite updating on/off -; bit 1: something to do with sprite updates +; bit 1: last 12 sprite OAM structs reserved ; bit 2: do not clear wShadowOAM during DoNextFrameForAllSprites -; bit 6: something to do with text -; bit 7: on when surf initiates -; flickers when climbing waterfall +; bit 6: in text state +; bit 7: in scripted movement db wBattleResult::