Fix inaccurate denotations to the concepts of tile, tile collision, and collision permission (#1078)

This commit is contained in:
xCrystal
2024-01-07 14:51:27 +01:00
parent 7f3b87950a
commit e0c278a595
17 changed files with 76 additions and 76 deletions

View File

@@ -5,7 +5,7 @@ DEF WALL_TILE EQU $0f
DEF TALK EQU $10 DEF TALK EQU $10
; collision data types (see data/tilesets/*_collision.asm) ; 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_FLOOR EQU $00
DEF COLL_01 EQU $01 ; garbage DEF COLL_01 EQU $01 ; garbage
DEF COLL_03 EQU $03 ; garbage DEF COLL_03 EQU $03 ; garbage

View File

@@ -14,7 +14,7 @@ DEF OBJECT_STEP_DURATION rb ; 0a
DEF OBJECT_ACTION rb ; 0b DEF OBJECT_ACTION rb ; 0b
DEF OBJECT_STEP_FRAME rb ; 0c DEF OBJECT_STEP_FRAME rb ; 0c
DEF OBJECT_FACING rb ; 0d DEF OBJECT_FACING rb ; 0d
DEF OBJECT_TILE rb ; 0e DEF OBJECT_TILE_COLLISION rb ; 0e
DEF OBJECT_LAST_TILE rb ; 0f DEF OBJECT_LAST_TILE rb ; 0f
DEF OBJECT_MAP_X rb ; 10 DEF OBJECT_MAP_X rb ; 10
DEF OBJECT_MAP_Y rb ; 11 DEF OBJECT_MAP_Y rb ; 11

View File

@@ -1,6 +1,6 @@
TileCollisionTable:: CollisionPermissionTable::
; entries correspond to COLL_* constants ; entries correspond to COLL_* constants
table_width 1, TileCollisionTable table_width 1, CollisionPermissionTable
db LAND_TILE ; COLL_FLOOR db LAND_TILE ; COLL_FLOOR
db LAND_TILE ; COLL_01 db LAND_TILE ; COLL_01
db LAND_TILE ; 02 db LAND_TILE ; 02

View File

@@ -1727,7 +1727,7 @@ This bug is why the Lapras in [maps/UnionCaveB2F.asm](https://github.com/pret/po
cp PLAYER_SURF_PIKA cp PLAYER_SURF_PIKA
jr z, .fail jr z, .fail
call GetFacingTileCoord call GetFacingTileCoord
call GetTileCollision call GetTilePermission
cp WATER_TILE cp WATER_TILE
- jr z, .facingwater - jr z, .facingwater
+ jr nz, .fail + jr nz, .fail
@@ -2144,7 +2144,7 @@ If `[wWalkingDirection]` is `STANDING` (`$FF`), this will check `[.EdgeWarps + $
ld d, 0 ld d, 0
ld hl, .EdgeWarps ld hl, .EdgeWarps
add hl, de add hl, de
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
cp [hl] cp [hl]
jr nz, .not_warp jr nz, .not_warp

View File

@@ -356,7 +356,7 @@ SurfFunction:
cp PLAYER_SURF_PIKA cp PLAYER_SURF_PIKA
jr z, .alreadyfail jr z, .alreadyfail
call GetFacingTileCoord call GetFacingTileCoord
call GetTileCollision call GetTilePermission
cp WATER_TILE cp WATER_TILE
jr nz, .cannotsurf jr nz, .cannotsurf
call CheckDirection call CheckDirection
@@ -494,7 +494,7 @@ TrySurfOW::
; Must be facing water. ; Must be facing water.
ld a, [wFacingTileID] ld a, [wFacingTileID]
call GetTileCollision call GetTilePermission
cp WATER_TILE cp WATER_TILE
jr nz, .quit jr nz, .quit
@@ -686,7 +686,7 @@ Script_UsedWaterfall:
.CheckContinueWaterfall: .CheckContinueWaterfall:
xor a xor a
ld [wScriptVar], a ld [wScriptVar], a
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call CheckWaterfallTile call CheckWaterfallTile
ret z ret z
farcall StubbedTrainerRankings_Waterfall farcall StubbedTrainerRankings_Waterfall
@@ -1449,7 +1449,7 @@ FishFunction:
cp PLAYER_SURF_PIKA cp PLAYER_SURF_PIKA
jr z, .fail jr z, .fail
call GetFacingTileCoord call GetFacingTileCoord
call GetTileCollision call GetTilePermission
cp WATER_TILE cp WATER_TILE
jr z, .facingwater jr z, .facingwater
.fail .fail
@@ -1693,7 +1693,7 @@ BikeFunction:
jr .nope jr .nope
.ok .ok
call GetPlayerTile call GetPlayerTilePermission
and $f ; lo nybble only and $f ; lo nybble only
jr nz, .nope ; not FLOOR_TILE jr nz, .nope ; not FLOOR_TILE
xor a xor a

View File

@@ -272,7 +272,7 @@ CmdQueue_StoneTable:
cp SPRITEMOVEDATA_STRENGTH_BOULDER cp SPRITEMOVEDATA_STRENGTH_BOULDER
jr nz, .next jr nz, .next
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, de add hl, de
ld a, [hl] ld a, [hl]
call CheckPitTile call CheckPitTile

View File

@@ -346,7 +346,7 @@ CheckTileEvent:
ret ret
.warp_tile .warp_tile
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call CheckPitTile call CheckPitTile
jr nz, .not_pit jr nz, .not_pit
ld a, PLAYEREVENT_FALL ld a, PLAYEREVENT_FALL
@@ -1186,7 +1186,7 @@ CanEncounterWildMonInThisTile::
jr nc, .no jr nc, .no
.ice_check .ice_check
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call CheckIceTile call CheckIceTile
jr z, .no jr z, .no
scf scf
@@ -1257,7 +1257,7 @@ ChooseWildEncounter_BugContest::
ret ret
TryWildEncounter_BugContest: TryWildEncounter_BugContest:
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call CheckSuperTallGrassTile call CheckSuperTallGrassTile
ld b, 40 percent ld b, 40 percent
jr z, .ok jr z, .ok

View File

@@ -195,14 +195,14 @@ CopyCoordsTileToLastCoordsTile:
ld hl, OBJECT_LAST_MAP_Y ld hl, OBJECT_LAST_MAP_Y
add hl, bc add hl, bc
ld [hl], a ld [hl], a
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
ld hl, OBJECT_LAST_TILE ld hl, OBJECT_LAST_TILE
add hl, bc add hl, bc
ld [hl], a ld [hl], a
call SetTallGrassFlags call SetTallGrassFlags
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
call UselessAndA call UselessAndA
@@ -228,12 +228,12 @@ UpdateTallGrassFlags:
add hl, bc add hl, bc
bit OVERHEAD_F, [hl] bit OVERHEAD_F, [hl]
jr z, .ok jr z, .ok
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
call SetTallGrassFlags call SetTallGrassFlags
.ok .ok
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
call UselessAndA call UselessAndA
@@ -321,9 +321,9 @@ GetNextTile:
ld [hl], a ld [hl], a
ld e, a ld e, a
push bc push bc
call GetCoordTile call GetCoordTileCollision
pop bc pop bc
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld [hl], a ld [hl], a
ret ret
@@ -502,9 +502,9 @@ StepFunction_Reset:
add hl, bc add hl, bc
ld e, [hl] ld e, [hl]
push bc push bc
call GetCoordTile call GetCoordTileCollision
pop bc pop bc
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld [hl], a ld [hl], a
call CopyCoordsTileToLastCoordsTile call CopyCoordsTileToLastCoordsTile
@@ -656,7 +656,7 @@ MovementFunction_Strength:
dw .stop dw .stop
.start: .start:
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
call CheckPitTile call CheckPitTile
@@ -2278,9 +2278,9 @@ UpdateObjectTile:
ld hl, OBJECT_MAP_Y ld hl, OBJECT_MAP_Y
add hl, bc add hl, bc
ld e, [hl] ld e, [hl]
call GetCoordTile call GetCoordTileCollision
pop bc pop bc
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld [hl], a ld [hl], a
farcall UpdateTallGrassFlags ; no need to farcall farcall UpdateTallGrassFlags ; no need to farcall

View File

@@ -97,11 +97,11 @@ SkipUpdateMapSprites:
CheckUpdatePlayerSprite: CheckUpdatePlayerSprite:
nop nop
call .CheckBiking call .CheckForcedBiking
jr c, .ok jr c, .ok
call .CheckSurfing call .CheckSurfing
jr c, .ok jr c, .ok
call .CheckSurfing2 call .ResetSurfingOrBikingState
jr c, .ok jr c, .ok
ret ret
@@ -109,7 +109,7 @@ CheckUpdatePlayerSprite:
call UpdatePlayerSprite call UpdatePlayerSprite
ret ret
.CheckBiking: .CheckForcedBiking:
and a and a
ld hl, wBikeFlags ld hl, wBikeFlags
bit BIKEFLAGS_ALWAYS_ON_BIKE_F, [hl] bit BIKEFLAGS_ALWAYS_ON_BIKE_F, [hl]
@@ -119,7 +119,7 @@ CheckUpdatePlayerSprite:
scf scf
ret ret
.CheckSurfing2: .ResetSurfingOrBikingState:
ld a, [wPlayerState] ld a, [wPlayerState]
cp PLAYER_NORMAL cp PLAYER_NORMAL
jr z, .nope jr z, .nope

View File

@@ -668,7 +668,7 @@ NormalStep:
add hl, bc add hl, bc
ld [hl], OBJECT_ACTION_STEP ld [hl], OBJECT_ACTION_STEP
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
call CheckSuperTallGrassTile call CheckSuperTallGrassTile

View File

@@ -70,11 +70,11 @@ WillObjectBumpIntoWater:
add hl, bc add hl, bc
bit OAM_PRIORITY, [hl] bit OAM_PRIORITY, [hl]
jp nz, WillObjectRemainOnWater jp nz, WillObjectRemainOnWater
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
ld d, a ld d, a
call GetTileCollision call GetTilePermission
and a ; LAND_TILE and a ; LAND_TILE
jr z, WillObjectBumpIntoTile jr z, WillObjectBumpIntoTile
scf scf
@@ -83,17 +83,17 @@ WillObjectBumpIntoWater:
WillObjectBumpIntoLand: WillObjectBumpIntoLand:
call CanObjectLeaveTile call CanObjectLeaveTile
ret c ret c
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
call GetTileCollision call GetTilePermission
cp WATER_TILE cp WATER_TILE
jr z, WillObjectBumpIntoTile jr z, WillObjectBumpIntoTile
scf scf
ret ret
WillObjectBumpIntoTile: WillObjectBumpIntoTile:
ld hl, OBJECT_TILE ld hl, OBJECT_TILE_COLLISION
add hl, bc add hl, bc
ld a, [hl] ld a, [hl]
call GetSideWallDirectionMask call GetSideWallDirectionMask
@@ -210,13 +210,13 @@ WillObjectRemainOnWater:
inc e inc e
.continue .continue
call GetCoordTile call GetCoordTileCollision
call GetTileCollision call GetTilePermission
pop de pop de
and a ; LAND_TILE and a ; LAND_TILE
jr nz, .not_land jr nz, .not_land
call GetCoordTile call GetCoordTileCollision
call GetTileCollision call GetTilePermission
and a ; LAND_TILE and a ; LAND_TILE
jr nz, .not_land jr nz, .not_land
xor a xor a

View File

@@ -114,7 +114,7 @@ DoPlayerMovement::
; Tiles such as waterfalls and warps move the player ; Tiles such as waterfalls and warps move the player
; in a given direction, overriding input. ; in a given direction, overriding input.
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
ld c, a ld c, a
call CheckWhirlpoolTile call CheckWhirlpoolTile
jr c, .not_whirlpool jr c, .not_whirlpool
@@ -270,7 +270,7 @@ DoPlayerMovement::
cp 2 cp 2
jr z, .bump jr z, .bump
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call CheckIceTile call CheckIceTile
jr nc, .ice jr nc, .ice
@@ -352,7 +352,7 @@ DoPlayerMovement::
ret ret
.TryJump: .TryJump:
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
ld e, a ld e, a
and $f0 and $f0
cp HI_NYBBLE_LEDGES cp HI_NYBBLE_LEDGES
@@ -398,7 +398,7 @@ DoPlayerMovement::
ld d, 0 ld d, 0
ld hl, .EdgeWarps ld hl, .EdgeWarps
add hl, de add hl, de
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
cp [hl] cp [hl]
jr nz, .not_warp jr nz, .not_warp
@@ -592,7 +592,7 @@ DoPlayerMovement::
ld h, [hl] ld h, [hl]
ld l, a ld l, a
ld a, [hl] ld a, [hl]
ld [wWalkingTile], a ld [wWalkingTileCollision], a
ret ret
MACRO player_action MACRO player_action
@@ -603,7 +603,7 @@ ENDM
.action_table: .action_table:
.action_table_1 .action_table_1
player_action STANDING, FACE_CURRENT, 0, 0, wPlayerTile player_action STANDING, FACE_CURRENT, 0, 0, wPlayerTileCollision
.action_table_1_end .action_table_1_end
player_action RIGHT, FACE_RIGHT, 1, 0, wTileRight player_action RIGHT, FACE_RIGHT, 1, 0, wTileRight
player_action LEFT, FACE_LEFT, -1, 0, wTileLeft player_action LEFT, FACE_LEFT, -1, 0, wTileLeft
@@ -693,7 +693,7 @@ ENDM
and d and d
jr nz, .NotWalkable jr nz, .NotWalkable
ld a, [wWalkingTile] ld a, [wWalkingTileCollision]
call .CheckWalkable call .CheckWalkable
jr c, .NotWalkable jr c, .NotWalkable
@@ -714,7 +714,7 @@ ENDM
and d and d
jr nz, .NotSurfable jr nz, .NotSurfable
ld a, [wWalkingTile] ld a, [wWalkingTileCollision]
call .CheckSurfable call .CheckSurfable
jr c, .NotSurfable jr c, .NotSurfable
@@ -735,7 +735,7 @@ ENDM
.CheckWalkable: .CheckWalkable:
; Return 0 if tile a is land. Otherwise, return carry. ; Return 0 if tile a is land. Otherwise, return carry.
call GetTileCollision call GetTilePermission
and a ; LAND_TILE and a ; LAND_TILE
ret z ret z
scf scf
@@ -745,7 +745,7 @@ ENDM
; Return 0 if tile a is water, or 1 if land. ; Return 0 if tile a is water, or 1 if land.
; Otherwise, return carry. ; Otherwise, return carry.
call GetTileCollision call GetTilePermission
cp WATER_TILE cp WATER_TILE
jr z, .Water jr z, .Water
@@ -789,7 +789,7 @@ CheckStandingOnIce::
jr z, .not_ice jr z, .not_ice
cp $f0 cp $f0
jr z, .not_ice jr z, .not_ice
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call CheckIceTile call CheckIceTile
jr nc, .yep jr nc, .yep
ld a, [wPlayerState] ld a, [wPlayerState]

View File

@@ -1,6 +1,6 @@
CheckWarpCollision:: CheckWarpCollision::
; Is this tile a warp? ; Is this tile a warp?
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
cp COLL_PIT cp COLL_PIT
jr z, .warp jr z, .warp
cp COLL_PIT_68 cp COLL_PIT_68
@@ -18,7 +18,7 @@ CheckWarpCollision::
CheckDirectionalWarp:: CheckDirectionalWarp::
; If this is a directional warp, clear carry (press the designated button to warp). ; If this is a directional warp, clear carry (press the designated button to warp).
; Else, set carry (immediate warp). ; Else, set carry (immediate warp).
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
cp COLL_WARP_CARPET_DOWN cp COLL_WARP_CARPET_DOWN
jr z, .directional jr z, .directional
cp COLL_WARP_CARPET_LEFT cp COLL_WARP_CARPET_LEFT
@@ -37,7 +37,7 @@ CheckDirectionalWarp::
CheckWarpFacingDown: CheckWarpFacingDown:
ld de, 1 ld de, 1
ld hl, .blocks ld hl, .blocks
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call IsInArray call IsInArray
ret ret
@@ -54,7 +54,7 @@ CheckWarpFacingDown:
db -1 db -1
CheckGrassCollision:: CheckGrassCollision::
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
ld hl, .blocks ld hl, .blocks
ld de, 1 ld de, 1
call IsInArray call IsInArray
@@ -90,7 +90,7 @@ CheckCutCollision:
db -1 db -1
GetWarpSFX:: GetWarpSFX::
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
ld de, SFX_ENTER_DOOR ld de, SFX_ENTER_DOOR
cp COLL_DOOR cp COLL_DOOR
ret z ret z

View File

@@ -1518,12 +1518,12 @@ GetMovementPermissions::
ld d, a ld d, a
ld a, [wPlayerMapY] ld a, [wPlayerMapY]
ld e, a ld e, a
call GetCoordTile call GetCoordTileCollision
ld [wPlayerTile], a ld [wPlayerTileCollision], a
call .CheckHiNybble call .CheckHiNybble
ret nz ret nz
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
and 7 and 7
ld hl, .MovementPermissionsData ld hl, .MovementPermissionsData
add l add l
@@ -1555,13 +1555,13 @@ GetMovementPermissions::
push de push de
inc e inc e
call GetCoordTile call GetCoordTileCollision
ld [wTileDown], a ld [wTileDown], a
call .Down call .Down
pop de pop de
dec e dec e
call GetCoordTile call GetCoordTileCollision
ld [wTileUp], a ld [wTileUp], a
call .Up call .Up
ret ret
@@ -1574,13 +1574,13 @@ GetMovementPermissions::
push de push de
dec d dec d
call GetCoordTile call GetCoordTileCollision
ld [wTileLeft], a ld [wTileLeft], a
call .Left call .Left
pop de pop de
inc d inc d
call GetCoordTile call GetCoordTileCollision
ld [wTileRight], a ld [wTileRight], a
call .Right call .Right
ret ret
@@ -1708,7 +1708,7 @@ GetFacingTileCoord::
db 1, 0 db 1, 0
dw wTileRight dw wTileRight
GetCoordTile:: GetCoordTileCollision::
; Get the collision byte for tile d, e ; Get the collision byte for tile d, e
call GetBlockLocation call GetBlockLocation
ld a, [hl] ld a, [hl]

View File

@@ -71,34 +71,34 @@ DoesSpriteHaveFacings::
pop de pop de
ret ret
GetPlayerTile:: GetPlayerTilePermission::
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call GetTileCollision call GetTilePermission
ld b, a ld b, a
ret ret
CheckOnWater:: CheckOnWater::
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
call GetTileCollision call GetTilePermission
sub WATER_TILE sub WATER_TILE
ret z ret z
and a and a
ret ret
GetTileCollision:: GetTilePermission::
; Get the collision type of tile a. ; Get the permission of tile collision a.
push de push de
push hl push hl
ld hl, TileCollisionTable ld hl, CollisionPermissionTable
ld e, a ld e, a
ld d, 0 ld d, 0
add hl, de add hl, de
ldh a, [hROMBank] ldh a, [hROMBank]
push af push af
ld a, BANK(TileCollisionTable) ld a, BANK(CollisionPermissionTable)
rst Bankswitch rst Bankswitch
ld e, [hl] ld e, [hl]
pop af pop af
@@ -189,7 +189,7 @@ CheckWaterfallTile::
ret ret
CheckStandingOnEntrance:: CheckStandingOnEntrance::
ld a, [wPlayerTile] ld a, [wPlayerTileCollision]
cp COLL_DOOR cp COLL_DOOR
ret z ret z
cp COLL_DOOR_79 cp COLL_DOOR_79

View File

@@ -306,7 +306,7 @@ MACRO object_struct
\1Action:: db \1Action:: db
\1StepFrame:: db \1StepFrame:: db
\1Facing:: db \1Facing:: db
\1Tile:: db \1TileCollision:: db
\1LastTile:: db \1LastTile:: db
\1MapX:: db \1MapX:: db
\1MapY:: db \1MapY:: db

View File

@@ -2208,7 +2208,7 @@ wWalkingDirection:: db
wFacingDirection:: db wFacingDirection:: db
wWalkingX:: db wWalkingX:: db
wWalkingY:: db wWalkingY:: db
wWalkingTile:: db wWalkingTileCollision:: db
ds 6 ds 6
wPlayerTurningDirection:: db wPlayerTurningDirection:: db