Merge pull request #608 from Rangi42/master

Identify more collision-related constants and data
This commit is contained in:
Rangi 2019-03-03 14:27:39 -05:00 committed by GitHub
commit e96330e66a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 102 additions and 70 deletions

View File

@ -102,6 +102,18 @@ COLL_RIGHT_WALL EQU $b0
COLL_LEFT_WALL EQU $b1 COLL_LEFT_WALL EQU $b1
COLL_UP_WALL EQU $b2 COLL_UP_WALL EQU $b2
COLL_DOWN_WALL EQU $b3 ; unused COLL_DOWN_WALL EQU $b3 ; unused
COLL_DOWN_RIGHT_WALL EQU $b4 ; unused
COLL_DOWN_LEFT_WALL EQU $b5 ; unused
COLL_UP_RIGHT_WALL EQU $b6 ; unused
COLL_UP_LEFT_WALL EQU $b7 ; unused
COLL_RIGHT_BUOY EQU $c0 ; unused
COLL_LEFT_BUOY EQU $c1 ; unused
COLL_UP_BUOY EQU $c2 ; unused
COLL_DOWN_BUOY EQU $c3 ; unused
COLL_DOWN_RIGHT_BUOY EQU $c4 ; unused
COLL_DOWN_LEFT_BUOY EQU $c5 ; unused
COLL_UP_RIGHT_BUOY EQU $c6 ; unused
COLL_UP_LEFT_BUOY EQU $c7 ; unused
COLL_FF EQU $ff ; garbage COLL_FF EQU $ff ; garbage
; collision data type nybbles ; collision data type nybbles
@ -114,4 +126,4 @@ HI_NYBBLE_WALK_ALT EQU $50
HI_NYBBLE_WARPS EQU $70 HI_NYBBLE_WARPS EQU $70
HI_NYBBLE_LEDGES EQU $a0 HI_NYBBLE_LEDGES EQU $a0
HI_NYBBLE_SIDE_WALLS EQU $b0 HI_NYBBLE_SIDE_WALLS EQU $b0
HI_NYBBLE_UNUSED_C0 EQU $c0 HI_NYBBLE_SIDE_BUOYS EQU $c0

View File

@ -86,6 +86,14 @@ RETVAR_EXECUTE EQU (2 << 6)
const PLAYEREVENT_JOYCHANGEFACING const PLAYEREVENT_JOYCHANGEFACING
NUM_PLAYER_EVENTS EQU const_value NUM_PLAYER_EVENTS EQU const_value
; script data sizes (see macros/scripts/maps.asm)
SCENE_SCRIPT_SIZE EQU 4 ; scene_script
CALLBACK_SIZE EQU 3 ; callback
WARP_EVENT_SIZE EQU 5 ; warp_event
COORD_EVENT_SIZE EQU 8 ; coord_event
BG_EVENT_SIZE EQU 5 ; bg_event
OBJECT_EVENT_SIZE EQU 13 ; object_event
; bg_event types ; bg_event types
; TryBGEvent arguments (see engine/overworld/events.asm) ; TryBGEvent arguments (see engine/overworld/events.asm)
const_def const_def

View File

@ -183,10 +183,10 @@ TileCollisionTable::
NONTALKABLE LANDTILE ; COLL_LEFT_WALL NONTALKABLE LANDTILE ; COLL_LEFT_WALL
NONTALKABLE LANDTILE ; COLL_UP_WALL NONTALKABLE LANDTILE ; COLL_UP_WALL
NONTALKABLE LANDTILE ; COLL_DOWN_WALL NONTALKABLE LANDTILE ; COLL_DOWN_WALL
NONTALKABLE LANDTILE ; b4 NONTALKABLE LANDTILE ; COLL_DOWN_RIGHT_WALL
NONTALKABLE LANDTILE ; b5 NONTALKABLE LANDTILE ; COLL_DOWN_LEFT_WALL
NONTALKABLE LANDTILE ; b6 NONTALKABLE LANDTILE ; COLL_UP_RIGHT_WALL
NONTALKABLE LANDTILE ; b7 NONTALKABLE LANDTILE ; COLL_UP_LEFT_WALL
NONTALKABLE LANDTILE ; b8 NONTALKABLE LANDTILE ; b8
NONTALKABLE LANDTILE ; b9 NONTALKABLE LANDTILE ; b9
NONTALKABLE LANDTILE ; ba NONTALKABLE LANDTILE ; ba
@ -195,14 +195,14 @@ TileCollisionTable::
NONTALKABLE LANDTILE ; bd NONTALKABLE LANDTILE ; bd
NONTALKABLE LANDTILE ; be NONTALKABLE LANDTILE ; be
NONTALKABLE LANDTILE ; bf NONTALKABLE LANDTILE ; bf
NONTALKABLE WATERTILE ; c0 NONTALKABLE WATERTILE ; COLL_RIGHT_BUOY
NONTALKABLE WATERTILE ; c1 NONTALKABLE WATERTILE ; COLL_LEFT_BUOY
NONTALKABLE WATERTILE ; c2 NONTALKABLE WATERTILE ; COLL_UP_BUOY
NONTALKABLE WATERTILE ; c3 NONTALKABLE WATERTILE ; COLL_DOWN_BUOY
NONTALKABLE WATERTILE ; c4 NONTALKABLE WATERTILE ; COLL_DOWN_RIGHT_BUOY
NONTALKABLE WATERTILE ; c5 NONTALKABLE WATERTILE ; COLL_DOWN_LEFT_BUOY
NONTALKABLE WATERTILE ; c6 NONTALKABLE WATERTILE ; COLL_UP_RIGHT_BUOY
NONTALKABLE WATERTILE ; c7 NONTALKABLE WATERTILE ; COLL_UP_LEFT_BUOY
NONTALKABLE WATERTILE ; c8 NONTALKABLE WATERTILE ; c8
NONTALKABLE WATERTILE ; c9 NONTALKABLE WATERTILE ; c9
NONTALKABLE WATERTILE ; ca NONTALKABLE WATERTILE ; ca

View File

@ -84,4 +84,4 @@ MapScenes::
scene_var MOUNT_MOON_SQUARE, wMountMoonSquareSceneID scene_var MOUNT_MOON_SQUARE, wMountMoonSquareSceneID
scene_var MOBILE_TRADE_ROOM, wMobileTradeRoomSceneID scene_var MOBILE_TRADE_ROOM, wMobileTradeRoomSceneID
scene_var MOBILE_BATTLE_ROOM, wMobileBattleRoomSceneID scene_var MOBILE_BATTLE_ROOM, wMobileBattleRoomSceneID
db -1 db -1 ; end

View File

@ -60,7 +60,7 @@ CheckForHiddenItems:
.next .next
; Restore the bg_event pointer and increment it by the length of a bg_event. ; Restore the bg_event pointer and increment it by the length of a bg_event.
pop hl pop hl
ld bc, 5 ld bc, BG_EVENT_SIZE
add hl, bc add hl, bc
; Restore the BG event counter and decrement it. If it hits zero, there are no hidden items in range. ; Restore the BG event counter and decrement it. If it hits zero, there are no hidden items in range.
ld a, [wBuffer2] ld a, [wBuffer2]

View File

@ -418,7 +418,7 @@ RunSceneScript:
ld a, [hli] ld a, [hli]
ld h, [hl] ld h, [hl]
ld l, a ld l, a
rept 4 rept SCENE_SCRIPT_SIZE
add hl, de add hl, de
endr endr

View File

@ -114,7 +114,10 @@ WillObjectBumpIntoTile:
ret ret
.data_6f5b .data_6f5b
db DOWN_MASK, UP_MASK, RIGHT_MASK, LEFT_MASK db DOWN_MASK ; DOWN
db UP_MASK ; UP
db RIGHT_MASK ; LEFT
db LEFT_MASK ; RIGHT
Function6f5f: Function6f5f:
ld hl, OBJECT_STANDING_TILE ld hl, OBJECT_STANDING_TILE
@ -137,19 +140,22 @@ Function6f5f:
ret ret
.data_6f7b .data_6f7b
db UP_MASK, DOWN_MASK, LEFT_MASK, RIGHT_MASK db UP_MASK ; DOWN
db DOWN_MASK ; UP
db LEFT_MASK ; LEFT
db RIGHT_MASK ; RIGHT
Function6f7f: Function6f7f:
ld d, a ld d, a
and $f0 and $f0
cp HI_NYBBLE_SIDE_WALLS cp HI_NYBBLE_SIDE_WALLS
jr z, .done jr z, .continue
cp HI_NYBBLE_UNUSED_C0 cp HI_NYBBLE_SIDE_BUOYS
jr z, .done jr z, .continue
xor a xor a
ret ret
.done .continue
ld a, d ld a, d
and 7 and 7
ld e, a ld e, a
@ -161,8 +167,14 @@ Function6f7f:
ret ret
.data_6f99 .data_6f99
db 8, 4, 1, 2 db RIGHT_MASK ; COLL_RIGHT_WALL/BUOY
db 10, 6, 9, 5 db LEFT_MASK ; COLL_LEFT_WALL/BUOY
db DOWN_MASK ; COLL_UP_WALL/BUOY
db UP_MASK ; COLL_DOWN_WALL/BUOY
db UP_MASK | RIGHT_MASK ; COLL_DOWN_RIGHT_WALL/BUOY
db UP_MASK | LEFT_MASK ; COLL_DOWN_LEFT_WALL/BUOY
db DOWN_MASK | RIGHT_MASK ; COLL_UP_RIGHT_WALL/BUOY
db DOWN_MASK | LEFT_MASK ; COLL_UP_LEFT_WALL/BUOY
Function6fa1: Function6fa1:
ld hl, OBJECT_DIRECTION_WALKING ld hl, OBJECT_DIRECTION_WALKING
@ -493,7 +505,7 @@ Unreferenced_Function7113:
cp d cp d
jr nz, .check_current_coords jr nz, .check_current_coords
ldh a, [hObjectStructIndexBuffer] ldh a, [hObjectStructIndexBuffer]
cp $0 cp PLAYER_OBJECT
jr z, .next jr z, .next
jr .yes jr .yes

View File

@ -46,8 +46,8 @@ GetCurrentMapSceneID::
ret ret
GetMapSceneID:: GetMapSceneID::
; Searches the scene script table for the map group and number loaded in bc, and returns the wram pointer in de. ; Searches the scene_var table for the map group and number loaded in bc, and returns the wram pointer in de.
; If the map is not in the scene script table, returns carry. ; If the map is not in the scene_var table, returns carry.
push bc push bc
ldh a, [hROMBank] ldh a, [hROMBank]
push af push af
@ -59,7 +59,7 @@ GetMapSceneID::
push hl push hl
ld a, [hli] ; map group, or terminator ld a, [hli] ; map group, or terminator
cp -1 cp -1
jr z, .end ; the current map is not in the scene script table jr z, .end ; the current map is not in the scene_var table
cp b cp b
jr nz, .next ; map group did not match jr nz, .next ; map group did not match
ld a, [hli] ; map number ld a, [hli] ; map number
@ -69,7 +69,7 @@ GetMapSceneID::
.next .next
pop hl pop hl
ld de, 4 ; scene_script size ld de, 4 ; scene_var size
add hl, de add hl, de
jr .loop jr .loop
@ -275,7 +275,7 @@ GetDestinationWarpNumber::
.next .next
pop hl pop hl
ld a, 5 ld a, WARP_EVENT_SIZE
add l add l
ld l, a ld l, a
jr nc, .okay jr nc, .okay
@ -325,7 +325,7 @@ CopyWarpData::
ld l, a ld l, a
ld a, c ld a, c
dec a dec a
ld bc, 5 ; warp size ld bc, WARP_EVENT_SIZE
call AddNTimes call AddNTimes
ld bc, 2 ; warp number ld bc, 2 ; warp number
add hl, bc add hl, bc
@ -487,7 +487,7 @@ GetMapConnection::
ret ret
ReadMapSceneScripts:: ReadMapSceneScripts::
ld a, [hli] ; scene script count ld a, [hli] ; scene_script count
ld c, a ld c, a
ld [wCurMapSceneScriptCount], a ld [wCurMapSceneScriptCount], a
ld a, l ld a, l
@ -498,7 +498,7 @@ ReadMapSceneScripts::
and a and a
ret z ret z
ld bc, 4 ; scene_script size ld bc, SCENE_SCRIPT_SIZE
call AddNTimes call AddNTimes
ret ret
@ -514,7 +514,7 @@ ReadMapCallbacks::
and a and a
ret z ret z
ld bc, 3 ld bc, CALLBACK_SIZE
call AddNTimes call AddNTimes
ret ret
@ -529,7 +529,7 @@ ReadWarps::
ld a, c ld a, c
and a and a
ret z ret z
ld bc, 5 ld bc, WARP_EVENT_SIZE
call AddNTimes call AddNTimes
ret ret
@ -546,7 +546,7 @@ ReadCoordEvents::
and a and a
ret z ret z
ld bc, 8 ld bc, COORD_EVENT_SIZE
call AddNTimes call AddNTimes
ret ret
@ -563,7 +563,7 @@ ReadBGEvents::
and a and a
ret z ret z
ld bc, 5 ld bc, BG_EVENT_SIZE
call AddNTimes call AddNTimes
ret ret
@ -622,7 +622,7 @@ CopyMapObjectEvents::
push hl push hl
ld a, $ff ld a, $ff
ld [hli], a ld [hli], a
ld b, MAPOBJECT_E - MAPOBJECT_SPRITE ld b, OBJECT_EVENT_SIZE
.loop2 .loop2
ld a, [de] ld a, [de]
inc de inc de
@ -664,14 +664,14 @@ RestoreFacingAfterWarp::
ld a, [hli] ld a, [hli]
ld h, [hl] ld h, [hl]
ld l, a ld l, a
inc hl ; get to the warp coords rept 3 ; get to the warp coords
inc hl ; get to the warp coords inc hl
inc hl ; get to the warp coords endr
ld a, [wWarpNumber] ld a, [wWarpNumber]
dec a dec a
ld c, a ld c, a
ld b, 0 ld b, 0
ld a, 5 ld a, WARP_EVENT_SIZE
call AddNTimes call AddNTimes
ld a, [hli] ld a, [hli]
ld [wYCoord], a ld [wYCoord], a
@ -981,7 +981,7 @@ RunMapCallback::
ld l, a ld l, a
or h or h
ret z ret z
ld de, 3 ld de, CALLBACK_SIZE
.loop .loop
ld a, [hl] ld a, [hl]
cp b cp b
@ -1261,7 +1261,7 @@ UpdateBGMapRow::
push de push de
call .iteration call .iteration
pop de pop de
ld a, $20 ld a, BG_MAP_WIDTH
add e add e
ld e, a ld e, a
@ -1295,7 +1295,7 @@ UpdateBGMapColumn::
ld [hli], a ld [hli], a
ld a, d ld a, d
ld [hli], a ld [hli], a
ld a, $20 ld a, BG_MAP_WIDTH
add e add e
ld e, a ld e, a
jr nc, .skip jr nc, .skip
@ -1344,11 +1344,11 @@ LoadTilesetGFX::
ldh a, [rVBK] ldh a, [rVBK]
push af push af
ld a, $1 ld a, BANK(vTiles5)
ldh [rVBK], a ldh [rVBK], a
ld hl, wDecompressScratch + $60 tiles ld hl, wDecompressScratch + $60 tiles
ld de, vTiles2 ld de, vTiles5
ld bc, $60 tiles ld bc, $60 tiles
call CopyBytes call CopyBytes
@ -1573,12 +1573,12 @@ GetMovementPermissions::
call .CheckHiNybble call .CheckHiNybble
ret nz ret nz
ld a, [wTileDown] ld a, [wTileDown]
and 7 and %111
cp $2 cp COLL_UP_WALL & %111 ; COLL_UP_BUOY & %111
jr z, .ok_down jr z, .ok_down
cp $6 cp COLL_UP_RIGHT_WALL & %111 ; COLL_UP_RIGHT_BUOY & %111
jr z, .ok_down jr z, .ok_down
cp $7 cp COLL_UP_LEFT_WALL & %111 ; COLL_UP_LEFT_BUOY & %111
ret nz ret nz
.ok_down .ok_down
@ -1591,12 +1591,12 @@ GetMovementPermissions::
call .CheckHiNybble call .CheckHiNybble
ret nz ret nz
ld a, [wTileUp] ld a, [wTileUp]
and 7 and %111
cp $3 cp COLL_DOWN_WALL & %111 ; COLL_DOWN_BUOY & %111
jr z, .ok_up jr z, .ok_up
cp $4 cp COLL_DOWN_RIGHT_WALL & %111 ; COLL_DOWN_RIGHT_BUOY & %111
jr z, .ok_up jr z, .ok_up
cp $5 cp COLL_DOWN_LEFT_WALL & %111 ; COLL_DOWN_LEFT_BUOY & %111
ret nz ret nz
.ok_up .ok_up
@ -1609,12 +1609,12 @@ GetMovementPermissions::
call .CheckHiNybble call .CheckHiNybble
ret nz ret nz
ld a, [wTileRight] ld a, [wTileRight]
and 7 and %111
cp $1 cp COLL_LEFT_WALL & %111 ; COLL_LEFT_BUOY & %111
jr z, .ok_right jr z, .ok_right
cp $5 cp COLL_DOWN_LEFT_WALL & %111 ; COLL_DOWN_LEFT_BUOY & %111
jr z, .ok_right jr z, .ok_right
cp $7 cp COLL_UP_LEFT_WALL & %111 ; COLL_UP_LEFT_BUOY & %111
ret nz ret nz
.ok_right .ok_right
@ -1627,12 +1627,12 @@ GetMovementPermissions::
call .CheckHiNybble call .CheckHiNybble
ret nz ret nz
ld a, [wTileLeft] ld a, [wTileLeft]
and 7 and %111
cp $0 cp COLL_RIGHT_WALL & %111 ; COLL_RIGHT_BUOY & %111
jr z, .ok_left jr z, .ok_left
cp $4 cp COLL_DOWN_RIGHT_WALL & %111 ; COLL_DOWN_RIGHT_BUOY & %111
jr z, .ok_left jr z, .ok_left
cp $6 cp COLL_UP_RIGHT_WALL & %111 ; COLL_UP_RIGHT_BUOY & %111
ret nz ret nz
.ok_left .ok_left
@ -1645,7 +1645,7 @@ GetMovementPermissions::
and $f0 and $f0
cp HI_NYBBLE_SIDE_WALLS cp HI_NYBBLE_SIDE_WALLS
ret z ret z
cp HI_NYBBLE_UNUSED_C0 cp HI_NYBBLE_SIDE_BUOYS
ret ret
GetFacingTileCoord:: GetFacingTileCoord::
@ -1799,7 +1799,7 @@ CheckIfFacingTileCoordIsBGEvent::
.next .next
pop hl pop hl
ld a, 5 ; BG event event length ld a, BG_EVENT_SIZE
add l add l
ld l, a ld l, a
jr nc, .nocarry jr nc, .nocarry
@ -1814,7 +1814,7 @@ CheckIfFacingTileCoordIsBGEvent::
.copysign .copysign
pop hl pop hl
ld de, wCurBGEventYCoord ld de, wCurBGEventYCoord
ld bc, 5 ; BG event event length ld bc, BG_EVENT_SIZE
call CopyBytes call CopyBytes
scf scf
ret ret
@ -1871,7 +1871,7 @@ CheckCurrentMapCoordEvents::
.next .next
pop hl pop hl
ld a, $8 ; coord event size ld a, COORD_EVENT_SIZE
add l add l
ld l, a ld l, a
jr nc, .nocarry jr nc, .nocarry
@ -1886,7 +1886,7 @@ CheckCurrentMapCoordEvents::
.copy_coord_event .copy_coord_event
pop hl pop hl
ld de, wCurCoordEventSceneID ld de, wCurCoordEventSceneID
ld bc, 8 ; coord event size ld bc, COORD_EVENT_SIZE
call CopyBytes call CopyBytes
scf scf
ret ret

View File

@ -76,7 +76,7 @@ HandleStoneQueue::
jr .found_warp jr .found_warp
.not_on_warp .not_on_warp
ld a, 5 ld a, WARP_EVENT_SIZE
add l add l
ld l, a ld l, a
jr nc, .no_carry jr nc, .no_carry

View File

@ -32,7 +32,7 @@ coord_event: MACRO
db \3, \2, \1 db \3, \2, \1
db 0 ; filler db 0 ; filler
dw \4 dw \4
db 0, 0 ; filler dw 0 ; filler
ENDM ENDM
bg_event: MACRO bg_event: MACRO