From b1fd8f941a73deff748a698e988b396ba44817c3 Mon Sep 17 00:00:00 2001 From: xCrystal Date: Sun, 11 Feb 2024 00:25:25 +0100 Subject: [PATCH] Apply e0c278a595bdd0b724607e14398a3c340860b449 from pokecrystal --- constants/collision_constants.asm | 2 +- constants/map_object_constants.asm | 2 +- data/collision/collision_permissions.asm | 4 ++-- docs/bugs_and_glitches.md | 4 ++-- docs/develop/index.md | 2 +- engine/events/overworld.asm | 10 ++++---- engine/overworld/cmd_queue.asm | 2 +- engine/overworld/events.asm | 12 +++++----- engine/overworld/map_objects.asm | 22 ++++++++--------- engine/overworld/movement.asm | 2 +- engine/overworld/npc_movement.asm | 18 +++++++------- engine/overworld/player_movement.asm | 30 ++++++++++++------------ engine/overworld/tile_events.asm | 10 ++++---- home/map.asm | 16 ++++++------- home/map_objects.asm | 20 ++++++++-------- macros/ram.asm | 2 +- ram/wram.asm | 2 +- 17 files changed, 80 insertions(+), 80 deletions(-) diff --git a/constants/collision_constants.asm b/constants/collision_constants.asm index ea222d1c6..f4043fbd4 100644 --- a/constants/collision_constants.asm +++ b/constants/collision_constants.asm @@ -6,7 +6,7 @@ DEF WALL_TILE EQU $0f DEF TALK EQU $10 ; collision data types (see data/tilesets/*_collision.asm) -; TileCollisionTable indexes (see data/collision/collision_permissions.asm) +; CollisionPermissionTable indexes (see data/collision/collision_permissions.asm) DEF COLL_FLOOR EQU $00 DEF COLL_01 EQU $01 ; garbage DEF COLL_03 EQU $03 ; garbage diff --git a/constants/map_object_constants.asm b/constants/map_object_constants.asm index cf49e8dda..04cb45fe4 100644 --- a/constants/map_object_constants.asm +++ b/constants/map_object_constants.asm @@ -14,7 +14,7 @@ DEF OBJECT_STEP_DURATION rb ; 0a DEF OBJECT_ACTION rb ; 0b DEF OBJECT_STEP_FRAME rb ; 0c DEF OBJECT_FACING rb ; 0d -DEF OBJECT_TILE rb ; 0e +DEF OBJECT_TILE_COLLISION rb ; 0e DEF OBJECT_LAST_TILE rb ; 0f DEF OBJECT_MAP_X rb ; 10 DEF OBJECT_MAP_Y rb ; 11 diff --git a/data/collision/collision_permissions.asm b/data/collision/collision_permissions.asm index 34e1613b0..d5d6e3f99 100644 --- a/data/collision/collision_permissions.asm +++ b/data/collision/collision_permissions.asm @@ -1,6 +1,6 @@ -TileCollisionTable:: +CollisionPermissionTable:: ; entries correspond to COLL_* constants - table_width 1, TileCollisionTable + table_width 1, CollisionPermissionTable db LAND_TILE ; COLL_FLOOR db LAND_TILE ; COLL_01 db LAND_TILE ; 02 diff --git a/docs/bugs_and_glitches.md b/docs/bugs_and_glitches.md index dfb58fef8..3bfb0448b 100644 --- a/docs/bugs_and_glitches.md +++ b/docs/bugs_and_glitches.md @@ -1725,7 +1725,7 @@ This bug is why the Lapras in [maps/UnionCaveB2F.asm](https://github.com/pret/po cp PLAYER_SURF_PIKA jr z, .fail call GetFacingTileCoord - call GetTileCollision + call GetTilePermission cp WATER_TILE - jr z, .facingwater + jr nz, .fail @@ -2126,7 +2126,7 @@ If `[wWalkingDirection]` is `STANDING` (`$FF`), this will check `[.EdgeWarps + $ ld d, 0 ld hl, .EdgeWarps add hl, de - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] cp [hl] jr nz, .not_warp diff --git a/docs/develop/index.md b/docs/develop/index.md index 56cb0e45a..cb4bb3084 100755 --- a/docs/develop/index.md +++ b/docs/develop/index.md @@ -141,7 +141,7 @@ 9) When the step finishes (i.e. ``PLAYERSTEP_STOP_F`` becomes set) in some ``HandleMap`` iteration, ``CheckPlayerState`` sets ``wEnabledPlayerEvents`` to $ff and ``wMapEventStatus`` to ``MAPEVENTS_ON``. 10) In the next ``HandleMap`` iteration, ``CheckBoardEvent.board`` is called with ``wEnabledPlayerEvents[4]`` set. - If ``wCurSpaceNextSpace`` matches ``NEXT_SPACE_IS_ANCHOR_POINT``: If player is at a tile with an anchor event, ``wCurSpaceNextSpace`` is updated with the next space byte of salid anchor event. ``wEnabledPlayerEvents[4]`` is reset. **Go back to 7**. - - If player is not above a tile (``wPlayerTile``) with a space collision: ``wEnabledPlayerEvents[4]`` is reset. **Go back to 7**. + - If player is not above a tile (``wPlayerTileCollision``) with a space collision: ``wEnabledPlayerEvents[4]`` is reset. **Go back to 7**. - If player is above a tile, the corresponding space script is queued to be executed by ``ScriptEvents`` in the current ``HandleMap`` iteration. ``wEnabledPlayerEvents[4]`` is reset. **Continue to 11**. 11) The space script loads the value of ``wCurSpaceNextSpace`` into ``wCurSpace``, and loads the new space data to ``wCurSpaceStruct[]``. Unless the space is a Branch Space or a Union Space, ``wSpacesLeft`` is decreased. - If the space is a Branch Space, the branch data is loaded to ``wTempSpaceBranchStruct``. Then the player is prompted to choose a valid direction. ``wCurSpaceNextSpace`` is populated with the next space that corresponds to the chosen direction. **Go back to 6**. diff --git a/engine/events/overworld.asm b/engine/events/overworld.asm index 5df6788b0..6ad186026 100644 --- a/engine/events/overworld.asm +++ b/engine/events/overworld.asm @@ -368,7 +368,7 @@ SurfFunction: cp PLAYER_SURF_PIKA jr z, .alreadyfail call GetFacingTileCoord - call GetTileCollision + call GetTilePermission cp WATER_TILE jr nz, .cannotsurf call CheckDirection @@ -510,7 +510,7 @@ TrySurfOW:: ; Must be facing water. ld a, [wFacingTileID] - call GetTileCollision + call GetTilePermission cp WATER_TILE jr nz, .quit @@ -718,7 +718,7 @@ Script_UsedWaterfall: CheckContinueWaterfall: xor a ldh [hScriptVar], a - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] call CheckWaterfallTile ret z ld a, $1 @@ -1485,7 +1485,7 @@ FishFunction: cp PLAYER_SURF_PIKA jr z, .fail call GetFacingTileCoord - call GetTileCollision + call GetTilePermission cp WATER_TILE jr z, .facingwater .fail @@ -1724,7 +1724,7 @@ BikeFunction: jr z, .nope .ok - call GetPlayerTile + call GetPlayerTilePermission and $f ; lo nybble only jr nz, .nope ; not FLOOR_TILE xor a diff --git a/engine/overworld/cmd_queue.asm b/engine/overworld/cmd_queue.asm index cfc07767d..65b5440e8 100644 --- a/engine/overworld/cmd_queue.asm +++ b/engine/overworld/cmd_queue.asm @@ -271,7 +271,7 @@ CmdQueue_StoneTable: cp SPRITEMOVEDATA_STRENGTH_BOULDER jr nz, .next - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, de ld a, [hl] call CheckPitTile diff --git a/engine/overworld/events.asm b/engine/overworld/events.asm index 00212ee69..08077436a 100644 --- a/engine/overworld/events.asm +++ b/engine/overworld/events.asm @@ -456,11 +456,11 @@ CheckBoardEvent: .next ; space handler - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] and $f0 cp HI_NYBBLE_SPACES jr nz, .no_space_effect - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] and $0f ld e, a ld d, 0 @@ -598,7 +598,7 @@ CheckTileEvent: ret .warp_tile - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] call CheckPitTile jr nz, .not_pit ld a, PLAYEREVENT_FALL @@ -758,7 +758,7 @@ CheckFacingTileEvent: ; Must be facing water. ld a, [wFacingTileID] - call GetTileCollision + call GetTilePermission cp WATER_TILE jr nz, .next_event_1 @@ -1587,7 +1587,7 @@ CanEncounterWildMon:: jr nc, .no .ice_check - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] call CheckIceTile jr z, .no scf @@ -1658,7 +1658,7 @@ ChooseWildEncounter_BugContest:: ret TryWildEncounter_BugContest: - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] call CheckSuperTallGrassTile ld b, 40 percent jr z, .ok diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index fd7d119d1..96d5fb937 100644 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -195,14 +195,14 @@ CopyCoordsTileToLastCoordsTile: ld hl, OBJECT_LAST_MAP_Y add hl, bc ld [hl], a - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] ld hl, OBJECT_LAST_TILE add hl, bc ld [hl], a call SetTallGrassFlags - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] call UselessAndA @@ -228,12 +228,12 @@ UpdateTallGrassFlags: add hl, bc bit OVERHEAD_F, [hl] jr z, .ok - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] call SetTallGrassFlags .ok - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] call UselessAndA @@ -321,9 +321,9 @@ GetNextTile: ld [hl], a ld e, a push bc - call GetCoordTile + call GetCoordTileCollision pop bc - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld [hl], a ret @@ -502,9 +502,9 @@ StepFunction_Reset: add hl, bc ld e, [hl] push bc - call GetCoordTile + call GetCoordTileCollision pop bc - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld [hl], a call CopyCoordsTileToLastCoordsTile @@ -656,7 +656,7 @@ MovementFunction_Strength: dw .stop .start: - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] call CheckPitTile @@ -2278,9 +2278,9 @@ UpdateObjectTile: ld hl, OBJECT_MAP_Y add hl, bc ld e, [hl] - call GetCoordTile + call GetCoordTileCollision pop bc - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld [hl], a call UpdateTallGrassFlags diff --git a/engine/overworld/movement.asm b/engine/overworld/movement.asm index 3129e186e..2251dbfe9 100644 --- a/engine/overworld/movement.asm +++ b/engine/overworld/movement.asm @@ -668,7 +668,7 @@ NormalStep: add hl, bc ld [hl], OBJECT_ACTION_STEP - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] call CheckSuperTallGrassTile diff --git a/engine/overworld/npc_movement.asm b/engine/overworld/npc_movement.asm index 5cdd25935..eea132826 100644 --- a/engine/overworld/npc_movement.asm +++ b/engine/overworld/npc_movement.asm @@ -70,11 +70,11 @@ WillObjectBumpIntoWater: add hl, bc bit OAM_PRIORITY, [hl] jp nz, WillObjectRemainOnWater - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] ld d, a - call GetTileCollision + call GetTilePermission and a ; LAND_TILE jr z, WillObjectBumpIntoTile scf @@ -83,17 +83,17 @@ WillObjectBumpIntoWater: WillObjectBumpIntoLand: call CanObjectLeaveTile ret c - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] - call GetTileCollision + call GetTilePermission cp WATER_TILE jr z, WillObjectBumpIntoTile scf ret WillObjectBumpIntoTile: - ld hl, OBJECT_TILE + ld hl, OBJECT_TILE_COLLISION add hl, bc ld a, [hl] call GetSideWallDirectionMask @@ -210,13 +210,13 @@ WillObjectRemainOnWater: inc e .continue - call GetCoordTile - call GetTileCollision + call GetCoordTileCollision + call GetTilePermission pop de and a ; LAND_TILE jr nz, .not_land - call GetCoordTile - call GetTileCollision + call GetCoordTileCollision + call GetTilePermission and a ; LAND_TILE jr nz, .not_land xor a diff --git a/engine/overworld/player_movement.asm b/engine/overworld/player_movement.asm index 4b362a9ee..8c0d88efe 100644 --- a/engine/overworld/player_movement.asm +++ b/engine/overworld/player_movement.asm @@ -162,14 +162,14 @@ DoPlayerMovement:: ld e, a push de inc e - call GetCoordTile + call GetCoordTileCollision cp COLL_OUT_OF_BOUNDS jr nz, .next1 ld [wTileDown], a .next1 pop de dec e - call GetCoordTile + call GetCoordTileCollision cp COLL_OUT_OF_BOUNDS jr nz, .next2 ld [wTileUp], a @@ -181,14 +181,14 @@ DoPlayerMovement:: ld e, a push de dec d - call GetCoordTile + call GetCoordTileCollision cp COLL_OUT_OF_BOUNDS jr nz, .next3 ld [wTileLeft], a .next3 pop de inc d - call GetCoordTile + call GetCoordTileCollision cp COLL_OUT_OF_BOUNDS jr nz, .next4 ld [wTileRight], a @@ -311,7 +311,7 @@ DoPlayerMovement:: ; Tiles such as waterfalls and warps move the player ; in a given direction, overriding input. - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] ld c, a call CheckWhirlpoolTile jr c, .not_whirlpool @@ -474,7 +474,7 @@ DoPlayerMovement:: cp 2 jr z, .bump - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] call CheckIceTile jr nc, .ice @@ -552,7 +552,7 @@ DoPlayerMovement:: ret .TryJump: - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] ld e, a and $f0 cp HI_NYBBLE_LEDGES @@ -598,7 +598,7 @@ DoPlayerMovement:: ld d, 0 ld hl, .EdgeWarps add hl, de - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] cp [hl] jr nz, .not_warp @@ -790,7 +790,7 @@ DoPlayerMovement:: ld h, [hl] ld l, a ld a, [hl] - ld [wWalkingTile], a + ld [wWalkingTileCollision], a ret MACRO player_action @@ -801,7 +801,7 @@ ENDM .action_table: .action_table_1 - player_action STANDING, FACE_CURRENT, 0, 0, wPlayerTile + player_action STANDING, FACE_CURRENT, 0, 0, wPlayerTileCollision .action_table_1_end player_action RIGHT, FACE_RIGHT, 1, 0, wTileRight player_action LEFT, FACE_LEFT, -1, 0, wTileLeft @@ -891,7 +891,7 @@ ENDM and d jr nz, .NotWalkable - ld a, [wWalkingTile] + ld a, [wWalkingTileCollision] call .CheckWalkable jr c, .NotWalkable @@ -912,7 +912,7 @@ ENDM and d jr nz, .NotSurfable - ld a, [wWalkingTile] + ld a, [wWalkingTileCollision] call .CheckSurfable jr c, .NotSurfable @@ -933,7 +933,7 @@ ENDM .CheckWalkable: ; Return 0 if tile a is land. Otherwise, return carry. - call GetTileCollision + call GetTilePermission and a ; LAND_TILE ret z cp SPACE_TILE @@ -945,7 +945,7 @@ ENDM ; Return 0 if tile a is water, or 1 if land. ; Otherwise, return carry. - call GetTileCollision + call GetTilePermission cp WATER_TILE jr z, .Water ; because this is called during PLAYER_SURF or PLAYER_SURF_PIKA state, @@ -986,7 +986,7 @@ CheckStandingOnIce:: jr z, .not_ice cp $f0 jr z, .not_ice - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] call CheckIceTile jr nc, .yep ld a, [wPlayerState] diff --git a/engine/overworld/tile_events.asm b/engine/overworld/tile_events.asm index d5d07c156..d7ec90f73 100644 --- a/engine/overworld/tile_events.asm +++ b/engine/overworld/tile_events.asm @@ -1,6 +1,6 @@ CheckWarpCollision:: ; Is this tile a warp? - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] cp COLL_PIT jr z, .warp cp COLL_PIT_68 @@ -18,7 +18,7 @@ CheckWarpCollision:: CheckDirectionalWarp:: ; If this is a directional warp, clear carry (press the designated button to warp). ; Else, set carry (immediate warp). - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] cp COLL_WARP_CARPET_DOWN jr z, .directional cp COLL_WARP_CARPET_LEFT @@ -37,7 +37,7 @@ CheckDirectionalWarp:: CheckWarpFacingDown: ld de, 1 ld hl, .blocks - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] call IsInArray ret @@ -54,7 +54,7 @@ CheckWarpFacingDown: db -1 CheckGrassCollision:: - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] ld hl, .blocks ld de, 1 call IsInArray @@ -90,7 +90,7 @@ CheckCutCollision: db -1 GetWarpSFX:: - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] ld de, SFX_ENTER_DOOR cp COLL_DOOR ret z diff --git a/home/map.asm b/home/map.asm index 6bbbfc8a7..e3081dd4e 100644 --- a/home/map.asm +++ b/home/map.asm @@ -1739,12 +1739,12 @@ GetMovementPermissions:: ld d, a ld a, [wPlayerMapY] ld e, a - call GetCoordTile - ld [wPlayerTile], a + call GetCoordTileCollision + ld [wPlayerTileCollision], a call .CheckHiNybble ret nz - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] and 7 ld hl, .MovementPermissionsData add l @@ -1776,13 +1776,13 @@ GetMovementPermissions:: push de inc e - call GetCoordTile + call GetCoordTileCollision ld [wTileDown], a call .Down pop de dec e - call GetCoordTile + call GetCoordTileCollision ld [wTileUp], a call .Up ret @@ -1795,13 +1795,13 @@ GetMovementPermissions:: push de dec d - call GetCoordTile + call GetCoordTileCollision ld [wTileLeft], a call .Left pop de inc d - call GetCoordTile + call GetCoordTileCollision ld [wTileRight], a call .Right ret @@ -1929,7 +1929,7 @@ GetFacingTileCoord:: db 1, 0 dw wTileRight -GetCoordTile:: +GetCoordTileCollision:: ; Get the collision byte for tile d, e call GetBlockLocation ld a, [hl] diff --git a/home/map_objects.asm b/home/map_objects.asm index 10208dd11..33d063da0 100644 --- a/home/map_objects.asm +++ b/home/map_objects.asm @@ -71,9 +71,9 @@ DoesSpriteHaveFacings:: pop de ret -GetPlayerTile:: - ld a, [wPlayerTile] - call GetTileCollision +GetPlayerTilePermission:: + ld a, [wPlayerTileCollision] + call GetTilePermission ld b, a ret @@ -81,8 +81,8 @@ CheckOnWater:: ; return z if on water, nz otherwise. ; if tile permission is SPACE_TILE, wPlayerState dictates whether player is on water or not. ; otherwise the current tile permission being LAND_TILE or WATER_TILE dictates it. - ld a, [wPlayerTile] - call GetTileCollision + ld a, [wPlayerTileCollision] + call GetTilePermission cp SPACE_TILE jr z, .check_player_state sub WATER_TILE @@ -97,20 +97,20 @@ CheckOnWater:: cp PLAYER_SURF_PIKA ret -GetTileCollision:: -; Get the collision type of tile a. +GetTilePermission:: +; Get the permission of tile collision a. push de push hl - ld hl, TileCollisionTable + ld hl, CollisionPermissionTable ld e, a ld d, 0 add hl, de ldh a, [hROMBank] push af - ld a, BANK(TileCollisionTable) + ld a, BANK(CollisionPermissionTable) rst Bankswitch ld e, [hl] pop af @@ -201,7 +201,7 @@ CheckWaterfallTile:: ret CheckStandingOnEntrance:: - ld a, [wPlayerTile] + ld a, [wPlayerTileCollision] cp COLL_DOOR ret z cp COLL_DOOR_79 diff --git a/macros/ram.asm b/macros/ram.asm index 00aec6886..65676186e 100644 --- a/macros/ram.asm +++ b/macros/ram.asm @@ -307,7 +307,7 @@ MACRO object_struct \1Action:: db \1StepFrame:: db \1Facing:: db -\1Tile:: db +\1TileCollision:: db \1LastTile:: db \1MapX:: db \1MapY:: db diff --git a/ram/wram.asm b/ram/wram.asm index 0b3a40786..70cc1adaf 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -1666,7 +1666,7 @@ wWalkingDirection:: db wFacingDirection:: db wWalkingX:: db wWalkingY:: db -wWalkingTile:: db +wWalkingTileCollision:: db ds 7 wPlayerTurningDirection:: db