diff options
| author | dannye <33dannye@gmail.com> | 2026-01-17 22:38:33 -0600 |
|---|---|---|
| committer | dannye <33dannye@gmail.com> | 2026-01-17 22:38:33 -0600 |
| commit | bc2354dd6626ce28bb9561547ed2107cfa56c18e (patch) | |
| tree | 5902d4c3389253c76b7c3351e0d7dfecb551c28d /engine/overworld | |
| parent | Identify characters in `_OakSpeechText2B` and `Printer_GetMonStats.IDNo` (#144) (diff) | |
| parent | Use macros for `WildMonEncounterSlotChances` (#562) (diff) | |
| download | pokeyellow-bc2354dd6626ce28bb9561547ed2107cfa56c18e.tar.gz pokeyellow-bc2354dd6626ce28bb9561547ed2107cfa56c18e.tar.xz pokeyellow-bc2354dd6626ce28bb9561547ed2107cfa56c18e.zip | |
Merge branch 'master' of https://github.com/pret/pokered
Diffstat (limited to 'engine/overworld')
| -rw-r--r-- | engine/overworld/advance_player_sprite.asm | 4 | ||||
| -rw-r--r-- | engine/overworld/auto_movement.asm | 8 | ||||
| -rw-r--r-- | engine/overworld/cut.asm | 6 | ||||
| -rw-r--r-- | engine/overworld/cut2.asm | 6 | ||||
| -rw-r--r-- | engine/overworld/dust_smoke.asm | 4 | ||||
| -rw-r--r-- | engine/overworld/hidden_events.asm (renamed from engine/overworld/hidden_objects.asm) | 32 | ||||
| -rw-r--r-- | engine/overworld/ledges.asm | 2 | ||||
| -rw-r--r-- | engine/overworld/movement.asm | 13 | ||||
| -rw-r--r-- | engine/overworld/pathfinding.asm | 4 | ||||
| -rw-r--r-- | engine/overworld/player_animations.asm | 12 | ||||
| -rw-r--r-- | engine/overworld/push_boulder.asm | 2 | ||||
| -rw-r--r-- | engine/overworld/toggleable_objects.asm (renamed from engine/overworld/missable_objects.asm) | 87 | ||||
| -rw-r--r-- | engine/overworld/unused_load_toggleable_object_data.asm (renamed from engine/overworld/unused_load_missable_object_data.asm) | 18 |
13 files changed, 100 insertions, 98 deletions
diff --git a/engine/overworld/advance_player_sprite.asm b/engine/overworld/advance_player_sprite.asm index 4ebdac84..314883dd 100644 --- a/engine/overworld/advance_player_sprite.asm +++ b/engine/overworld/advance_player_sprite.asm @@ -3,7 +3,7 @@ _AdvancePlayerSprite:: ld b, a ld a, [wSpritePlayerStateData1XStepVector] ld c, a - ld hl, wWalkCounter ; walking animation counter + ld hl, wWalkCounter dec [hl] jr nz, .afterUpdateMapCoords ; if it's the end of the animation, update the player's map coordinates @@ -16,7 +16,7 @@ _AdvancePlayerSprite:: add c ld [wXCoord], a .afterUpdateMapCoords - ld a, [wWalkCounter] ; walking animation counter + ld a, [wWalkCounter] cp $07 jp nz, .scrollBackgroundAndSprites ; if this is the first iteration of the animation diff --git a/engine/overworld/auto_movement.asm b/engine/overworld/auto_movement.asm index cdc7e28a..2266e866 100644 --- a/engine/overworld/auto_movement.asm +++ b/engine/overworld/auto_movement.asm @@ -1,6 +1,6 @@ PlayerStepOutFromDoor:: - ld hl, wStatusFlags5 ; should this be wMovementFlags? - res BIT_EXITING_DOOR, [hl] + ld hl, wStatusFlags5 + res BIT_UNKNOWN_5_1, [hl] call IsPlayerStandingOnDoorTile jr nc, .notStandingOnDoor ld a, PAD_SELECT | PAD_START | PAD_CTRL_PAD @@ -153,8 +153,8 @@ PalletMovementScript_Done: ld a, [wSimulatedJoypadStatesIndex] and a ret nz - ld a, HS_PALLET_TOWN_OAK - ld [wMissableObjectIndex], a + ld a, TOGGLE_PALLET_TOWN_OAK + ld [wToggleableObjectIndex], a predef HideObject ld hl, wStatusFlags5 res BIT_SCRIPTED_MOVEMENT_STATE, [hl] diff --git a/engine/overworld/cut.asm b/engine/overworld/cut.asm index 1b5b85bd..dea23cc5 100644 --- a/engine/overworld/cut.asm +++ b/engine/overworld/cut.asm @@ -101,13 +101,13 @@ InitCutAnimOAM: call LoadCutGrassAnimationTilePattern call WriteCutOrBoulderDustAnimationOAMBlock ld hl, wShadowOAMSprite36Attributes - ld de, 4 - ld a, $30 + ld de, OBJ_SIZE + ld a, OAM_XFLIP | OAM_PAL1 ld c, e .loop ld [hl], a add hl, de - xor $60 + xor OAM_YFLIP | OAM_XFLIP dec c jr nz, .loop ret diff --git a/engine/overworld/cut2.asm b/engine/overworld/cut2.asm index a6effff5..9d6124e4 100644 --- a/engine/overworld/cut2.asm +++ b/engine/overworld/cut2.asm @@ -79,13 +79,13 @@ AnimCutGrass_UpdateOAMEntries: AnimCutGrass_SwapOAMEntries: ld hl, wShadowOAMSprite36 ld de, wBuffer - ld bc, $8 + ld bc, 2 * OBJ_SIZE call CopyData ld hl, wShadowOAMSprite38 ld de, wShadowOAMSprite36 - ld bc, $8 + ld bc, 2 * OBJ_SIZE call CopyData ld hl, wBuffer ld de, wShadowOAMSprite38 - ld bc, $8 + ld bc, 2 * OBJ_SIZE jp CopyData diff --git a/engine/overworld/dust_smoke.asm b/engine/overworld/dust_smoke.asm index 669e1166..2e6576a8 100644 --- a/engine/overworld/dust_smoke.asm +++ b/engine/overworld/dust_smoke.asm @@ -72,7 +72,7 @@ LoadSmokeTileFourTimes:: push hl call LoadSmokeTile pop hl - ld bc, 1 tiles + ld bc, TILE_SIZE add hl, bc pop bc dec c @@ -81,7 +81,7 @@ LoadSmokeTileFourTimes:: LoadSmokeTile: ld de, SSAnneSmokePuffTile - lb bc, BANK(SSAnneSmokePuffTile), (SSAnneSmokePuffTileEnd - SSAnneSmokePuffTile) / $10 + lb bc, BANK(SSAnneSmokePuffTile), (SSAnneSmokePuffTileEnd - SSAnneSmokePuffTile) / TILE_SIZE jp CopyVideoData SSAnneSmokePuffTile: diff --git a/engine/overworld/hidden_objects.asm b/engine/overworld/hidden_events.asm index 84108986..b7c803e5 100644 --- a/engine/overworld/hidden_objects.asm +++ b/engine/overworld/hidden_events.asm @@ -1,12 +1,12 @@ -; if a hidden object was found, stores $00 in [hDidntFindAnyHiddenObject], else stores $ff -CheckForHiddenObject:: +; if a hidden event was found, stores $00 in [hDidntFindAnyHiddenEvent], else stores $ff +CheckForHiddenEvent:: ld hl, hItemAlreadyFound xor a ld [hli], a ; [hItemAlreadyFound] ld [hli], a ; [hSavedMapTextPtr] ld [hli], a ; [hSavedMapTextPtr + 1] - ld [hl], a ; [hDidntFindAnyHiddenObject] - ld hl, HiddenObjectMaps + ld [hl], a ; [hDidntFindAnyHiddenEvent] + ld hl, HiddenEventMaps ld de, 3 ld a, [wCurMap] call IsInArray @@ -16,46 +16,46 @@ CheckForHiddenObject:: ld h, [hl] ld l, a push hl - ld hl, wHiddenObjectFunctionArgument + ld hl, wHiddenEventFunctionArgument xor a ld [hli], a ld [hli], a ld [hl], a pop hl -.hiddenObjectLoop +.hiddenEventLoop ld a, [hli] cp $ff jr z, .noMatch - ld [wHiddenObjectY], a + ld [wHiddenEventY], a ld b, a ld a, [hli] - ld [wHiddenObjectX], a + ld [wHiddenEventX], a ld c, a call CheckIfCoordsInFrontOfPlayerMatch ldh a, [hCoordsInFrontOfPlayerMatch] and a - jr z, .foundMatchingObject + jr z, .foundMatchingEvent inc hl inc hl inc hl inc hl push hl - ld hl, wHiddenObjectIndex + ld hl, wHiddenEventIndex inc [hl] pop hl - jr .hiddenObjectLoop -.foundMatchingObject + jr .hiddenEventLoop +.foundMatchingEvent ld a, [hli] - ld [wHiddenObjectFunctionArgument], a + ld [wHiddenEventFunctionArgument], a ld a, [hli] - ld [wHiddenObjectFunctionRomBank], a + ld [wHiddenEventFunctionRomBank], a ld a, [hli] ld h, [hl] ld l, a ret .noMatch ld a, $ff - ldh [hDidntFindAnyHiddenObject], a + ldh [hDidntFindAnyHiddenEvent], a ret ; checks if the coordinates in front of the player's sprite match Y in b and X in c @@ -104,4 +104,4 @@ CheckIfCoordsInFrontOfPlayerMatch: ldh [hCoordsInFrontOfPlayerMatch], a ret -INCLUDE "data/events/hidden_objects.asm" +INCLUDE "data/events/hidden_events.asm" diff --git a/engine/overworld/ledges.asm b/engine/overworld/ledges.asm index 9f8de983..5cb2d5fc 100644 --- a/engine/overworld/ledges.asm +++ b/engine/overworld/ledges.asm @@ -59,7 +59,7 @@ INCLUDE "data/tilesets/ledge_tiles.asm" LoadHoppingShadowOAM: ld hl, vChars1 tile $7f ld de, LedgeHoppingShadow - lb bc, BANK(LedgeHoppingShadow), (LedgeHoppingShadowEnd - LedgeHoppingShadow) / $8 + lb bc, BANK(LedgeHoppingShadow), (LedgeHoppingShadowEnd - LedgeHoppingShadow) / TILE_1BPP_SIZE call CopyVideoDataDouble ld hl, LedgeHoppingShadowOAM ld de, wShadowOAMSprite36 diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm index fbe8e5df..165208eb 100644 --- a/engine/overworld/movement.asm +++ b/engine/overworld/movement.asm @@ -125,7 +125,7 @@ UpdateNPCSprite: ld b, a ld a, [wFontLoaded] bit BIT_FONT_LOADED, a - jp nz, notYetMoving + jp nz, NotYetMoving ld a, b cp $2 jp z, UpdateSpriteMovementDelay ; [x#SPRITESTATEDATA1_MOVEMENTSTATUS] == 2 @@ -347,14 +347,15 @@ UpdateSpriteMovementDelay: jr .moving .tickMoveCounter dec [hl] ; x#SPRITESTATEDATA2_MOVEMENTDELAY - jr nz, notYetMoving + jr nz, NotYetMoving .moving dec h ldh a, [hCurrentSpriteOffset] inc a ld l, a ld [hl], $1 ; [x#SPRITESTATEDATA1_MOVEMENTSTATUS] = 1 (mark as ready to move) -notYetMoving: + ; fallthrough +NotYetMoving: ld h, HIGH(wSpriteStateData1) ldh a, [hCurrentSpriteOffset] add SPRITESTATEDATA1_ANIMFRAMECOUNTER @@ -369,7 +370,7 @@ MakeNPCFacePlayer: ; disabled. This is only done when rubbing the S.S. Anne captain's back. ld a, [wStatusFlags3] bit BIT_NO_NPC_FACE_PLAYER, a - jr nz, notYetMoving + jr nz, NotYetMoving res BIT_FACE_PLAYER, [hl] ld a, [wPlayerDirection] bit PLAYER_DIR_BIT_UP, a @@ -393,7 +394,7 @@ MakeNPCFacePlayer: add $9 ld l, a ld [hl], c ; [x#SPRITESTATEDATA1_FACINGDIRECTION]: set facing direction - jr notYetMoving + jr NotYetMoving InitializeSpriteStatus: ld [hl], $1 ; [x#SPRITESTATEDATA1_MOVEMENTSTATUS] = ready @@ -448,7 +449,7 @@ Func_5033: ; tests if sprite is off screen or otherwise unable to do anything CheckSpriteAvailability: predef IsObjectHidden - ldh a, [hIsHiddenMissableObject] + ldh a, [hIsToggleableObjectOff] and a jp nz, .spriteInvisible ld h, HIGH(wSpriteStateData2) diff --git a/engine/overworld/pathfinding.asm b/engine/overworld/pathfinding.asm index 878ca07d..d6e0d009 100644 --- a/engine/overworld/pathfinding.asm +++ b/engine/overworld/pathfinding.asm @@ -94,7 +94,7 @@ CalcPositionOfPlayerRelativeToNPC: ld a, [hli] ; NPC sprite screen Y position in pixels call CalcDifference jr nc, .NPCSouthOfOrAlignedWithPlayer -.NPCNorthOfPlayer +; NPC north of player push hl ld hl, hNPCPlayerRelativePosFlags bit BIT_PLAYER_LOWER_Y, [hl] @@ -122,7 +122,7 @@ CalcPositionOfPlayerRelativeToNPC: ld a, [hl] ; NPC sprite screen X position in pixels call CalcDifference jr nc, .NPCEastOfOrAlignedWithPlayer -.NPCWestOfPlayer +; NPC west of player push hl ld hl, hNPCPlayerRelativePosFlags bit BIT_PLAYER_LOWER_X, [hl] diff --git a/engine/overworld/player_animations.asm b/engine/overworld/player_animations.asm index b63b12cc..1948f68d 100644 --- a/engine/overworld/player_animations.asm +++ b/engine/overworld/player_animations.asm @@ -213,13 +213,13 @@ LeaveMapThroughHoleAnim: ld [wShadowOAMSprite02TileID], a ld a, [wShadowOAMSprite01TileID] ld [wShadowOAMSprite03TileID], a - ld a, $a0 + ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS ld [wShadowOAMSprite00YCoord], a ld [wShadowOAMSprite01YCoord], a ld c, 2 call DelayFrames ; hide upper half of player's sprite - ld a, $a0 + ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS ld [wShadowOAMSprite02YCoord], a ld [wShadowOAMSprite03YCoord], a call GBFadeOutToWhite @@ -270,7 +270,7 @@ InitFacingDirectionList: ld [wSavedPlayerScreenY], a ld hl, PlayerSpinningFacingOrder ld de, wFacingDirectionList - ld bc, 4 + ld bc, OBJ_SIZE call CopyData ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images) ld hl, wFacingDirectionList @@ -294,7 +294,7 @@ SpinPlayerSprite: push hl ld hl, wFacingDirectionList ld de, wFacingDirectionList - 1 - ld bc, 4 + ld bc, OBJ_SIZE call CopyData ld a, [wFacingDirectionList - 1] ld [wFacingDirectionList + 3], a @@ -400,7 +400,7 @@ FishingAnim: ld hl, FishingRodOAM add hl, bc ld de, wShadowOAMSprite39 - ld bc, $4 + ld bc, OBJ_SIZE call CopyData ld c, 100 call DelayFrames @@ -430,7 +430,7 @@ FishingAnim: ld a, [wSpritePlayerStateData1ImageIndex] ; (image index is locked to standing images) cp SPRITE_FACING_UP jr nz, .skipHidingFishingRod - ld a, $a0 + ld a, SCREEN_HEIGHT_PX + OAM_Y_OFS ld [wShadowOAMSprite39YCoord], a .skipHidingFishingRod diff --git a/engine/overworld/push_boulder.asm b/engine/overworld/push_boulder.asm index 2328b07a..5e7393d2 100644 --- a/engine/overworld/push_boulder.asm +++ b/engine/overworld/push_boulder.asm @@ -43,7 +43,7 @@ TryPushingBoulder:: jr z, .pushBoulderLeft cp SPRITE_FACING_RIGHT jr z, .pushBoulderRight -.pushBoulderDown +; push boulder down bit B_PAD_DOWN, b ret z ld de, PushBoulderDownMovementData diff --git a/engine/overworld/missable_objects.asm b/engine/overworld/toggleable_objects.asm index bcaa731b..a97f2bd2 100644 --- a/engine/overworld/missable_objects.asm +++ b/engine/overworld/toggleable_objects.asm @@ -1,4 +1,4 @@ -MarkTownVisitedAndLoadMissableObjects:: +MarkTownVisitedAndLoadToggleableObjects:: ld a, [wCurMap] cp FIRST_ROUTE_MAP jr nc, .notInTown @@ -7,22 +7,23 @@ MarkTownVisitedAndLoadMissableObjects:: ld hl, wTownVisitedFlag ; mark town as visited (for flying) predef FlagActionPredef .notInTown - ld hl, MapHSPointers + ld hl, ToggleableObjectMapPointers ld a, [wCurMap] ld b, $0 ld c, a add hl, bc add hl, bc - ld a, [hli] ; load missable objects pointer in hl + ld a, [hli] ; load toggleable objects pointer in hl ld h, [hl] ld l, a push hl ld a, l - sub LOW(MissableObjects) ; calculate difference between out pointer and the base pointer + sub LOW(ToggleableObjectStates) ; calculate difference between out pointer and the base pointer ld l, a ld a, h - sbc HIGH(MissableObjects) + sbc HIGH(ToggleableObjectStates) ld h, a + ; divide difference by 3, resulting in the global offset (number of toggleable items before ours) ld a, h ldh [hDividend], a ld a, l @@ -33,14 +34,14 @@ MarkTownVisitedAndLoadMissableObjects:: ld a, $3 ldh [hDivisor], a ld b, $2 - call Divide ; divide difference by 3, resulting in the global offset (number of missable items before ours) + call Divide ld a, [wCurMap] ld b, a ldh a, [hDividend+3] ld c, a ; store global offset in c - ld de, wMissableObjectList + ld de, wToggleableObjectList pop hl -.writeMissableObjectsListLoop +.writeToggleableObjectsListLoop ld a, [hli] cp -1 jr z, .done ; end of list @@ -52,92 +53,92 @@ MarkTownVisitedAndLoadMissableObjects:: inc de ld a, c inc c - ld [de], a ; write (global) missable object index + ld [de], a ; write (global) toggleable object index inc de - jr .writeMissableObjectsListLoop + jr .writeToggleableObjectsListLoop .done ld a, -1 ld [de], a ; write sentinel ret -InitializeMissableObjectsFlags: - ld hl, wMissableObjectFlags - ld bc, wMissableObjectFlagsEnd - wMissableObjectFlags +InitializeToggleableObjectsFlags: + ld hl, wToggleableObjectFlags + ld bc, wToggleableObjectFlagsEnd - wToggleableObjectFlags xor a - call FillMemory ; clear missable objects flags - ld hl, MissableObjects + call FillMemory ; clear toggleable objects flags + ld hl, ToggleableObjectStates xor a - ld [wMissableObjectCounter], a -.missableObjectsLoop + ld [wToggleableObjectCounter], a +.toggleableObjectsLoop ld a, [hli] - cp -1 ; end of list + cp -1 ; end of list ret z push hl inc hl ld a, [hl] - cp HIDE + cp OFF jr nz, .skip - ld hl, wMissableObjectFlags - ld a, [wMissableObjectCounter] + ld hl, wToggleableObjectFlags + ld a, [wToggleableObjectCounter] ld c, a ld b, FLAG_SET - call MissableObjectFlagAction ; set flag if Item is hidden + call ToggleableObjectFlagAction ; set flag if object is toggled off .skip - ld hl, wMissableObjectCounter + ld hl, wToggleableObjectCounter inc [hl] pop hl inc hl inc hl - jr .missableObjectsLoop + jr .toggleableObjectsLoop -; tests if current sprite is a missable object that is hidden/has been removed +; tests if current object is toggled off/has been hidden IsObjectHidden: ldh a, [hCurrentSpriteOffset] swap a ld b, a - ld hl, wMissableObjectList + ld hl, wToggleableObjectList .loop ld a, [hli] cp -1 - jr z, .notHidden ; not missable -> not hidden + jr z, .notHidden ; not toggleable -> not hidden cp b ld a, [hli] jr nz, .loop ld c, a ld b, FLAG_TEST - ld hl, wMissableObjectFlags - call MissableObjectFlagAction + ld hl, wToggleableObjectFlags + call ToggleableObjectFlagAction ld a, c and a jr nz, .hidden .notHidden xor a .hidden - ldh [hIsHiddenMissableObject], a + ldh [hIsToggleableObjectOff], a ret -; adds missable object (items, leg. pokemon, etc.) to the map -; [wMissableObjectIndex]: index of the missable object to be added (global index) +; adds toggleable object (items, leg. pokemon, etc.) to the map +; [wToggleableObjectIndex]: index of the toggleable object to be added (global index) ShowObject: ShowObject2: - ld hl, wMissableObjectFlags - ld a, [wMissableObjectIndex] + ld hl, wToggleableObjectFlags + ld a, [wToggleableObjectIndex] ld c, a ld b, FLAG_RESET - call MissableObjectFlagAction ; reset "removed" flag + call ToggleableObjectFlagAction ; reset "removed" flag jp UpdateSprites -; removes missable object (items, leg. pokemon, etc.) from the map -; [wMissableObjectIndex]: index of the missable object to be removed (global index) +; removes toggleable object (items, leg. pokemon, etc.) from the map +; [wToggleableObjectIndex]: index of the toggleable object to be removed (global index) HideObject: - ld hl, wMissableObjectFlags - ld a, [wMissableObjectIndex] + ld hl, wToggleableObjectFlags + ld a, [wToggleableObjectIndex] ld c, a ld b, FLAG_SET - call MissableObjectFlagAction ; set "removed" flag + call ToggleableObjectFlagAction ; set "removed" flag jp UpdateSprites -MissableObjectFlagAction: +ToggleableObjectFlagAction: ; identical to FlagAction push hl @@ -174,10 +175,10 @@ MissableObjectFlagAction: ld a, b and a jr z, .reset - cp 2 + cp FLAG_TEST jr z, .read -.set +; set ld a, [hl] ld b, a ld a, d diff --git a/engine/overworld/unused_load_missable_object_data.asm b/engine/overworld/unused_load_toggleable_object_data.asm index 8a519350..cf53f80a 100644 --- a/engine/overworld/unused_load_missable_object_data.asm +++ b/engine/overworld/unused_load_toggleable_object_data.asm @@ -1,9 +1,9 @@ Func_f0a54: ; unreferenced ret -LoadMissableObjectData:: +LoadToggleableObjectData:: ; farcalled by an unreferenced function - ld hl, .MissableObjectsMaps + ld hl, .ToggleableObjectsMaps .loop ld a, [hli] cp -1 @@ -24,23 +24,23 @@ LoadMissableObjectData:: ld a, [hli] ld h, [hl] ld l, a - ld de, wMissableObjectList + ld de, wToggleableObjectList call CopyData ret -MACRO missable_object_map +MACRO toggleable_object_map db \1 db \3 - \2 dw \2 ENDM -.MissableObjectsMaps: - missable_object_map BLUES_HOUSE, .BluesHouse, .BluesHouseEnd +.ToggleableObjectsMaps: + toggleable_object_map BLUES_HOUSE, .BluesHouse, .BluesHouseEnd db -1 ; end .BluesHouse: - db 1, HS_DAISY_SITTING_COPY - db 2, HS_DAISY_WALKING_COPY - db 3, HS_TOWN_MAP_COPY + db 1, TOGGLE_DAISY_SITTING_COPY + db 2, TOGGLE_DAISY_WALKING_COPY + db 3, TOGGLE_TOWN_MAP_COPY db -1 ; end .BluesHouseEnd: |
