ref: e96330e66a6017f558d83004a15906edf70b2da9
parent: e671636bba211b30a15b86bf748989b6e61dcf0a
parent: 79dc22c769a5a84b561884508e2643747cf9ec08
author: Rangi <[email protected]>
date: Sun Mar 3 09:27:39 EST 2019
Merge pull request #608 from Rangi42/master Identify more collision-related constants and data
--- a/constants/collision_constants.asm
+++ b/constants/collision_constants.asm
@@ -102,6 +102,18 @@
COLL_LEFT_WALL EQU $b1
COLL_UP_WALL EQU $b2
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
; collision data type nybbles
@@ -114,4 +126,4 @@
HI_NYBBLE_WARPS EQU $70
HI_NYBBLE_LEDGES EQU $a0
HI_NYBBLE_SIDE_WALLS EQU $b0
-HI_NYBBLE_UNUSED_C0 EQU $c0
+HI_NYBBLE_SIDE_BUOYS EQU $c0
--- a/constants/script_constants.asm
+++ b/constants/script_constants.asm
@@ -86,6 +86,14 @@
const PLAYEREVENT_JOYCHANGEFACING
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
; TryBGEvent arguments (see engine/overworld/events.asm)
const_def
--- a/data/collision_permissions.asm
+++ b/data/collision_permissions.asm
@@ -183,10 +183,10 @@
NONTALKABLE LANDTILE ; COLL_LEFT_WALL
NONTALKABLE LANDTILE ; COLL_UP_WALL
NONTALKABLE LANDTILE ; COLL_DOWN_WALL
- NONTALKABLE LANDTILE ; b4
- NONTALKABLE LANDTILE ; b5
- NONTALKABLE LANDTILE ; b6
- NONTALKABLE LANDTILE ; b7
+ NONTALKABLE LANDTILE ; COLL_DOWN_RIGHT_WALL
+ NONTALKABLE LANDTILE ; COLL_DOWN_LEFT_WALL
+ NONTALKABLE LANDTILE ; COLL_UP_RIGHT_WALL
+ NONTALKABLE LANDTILE ; COLL_UP_LEFT_WALL
NONTALKABLE LANDTILE ; b8
NONTALKABLE LANDTILE ; b9
NONTALKABLE LANDTILE ; ba
@@ -195,14 +195,14 @@
NONTALKABLE LANDTILE ; bd
NONTALKABLE LANDTILE ; be
NONTALKABLE LANDTILE ; bf
- NONTALKABLE WATERTILE ; c0
- NONTALKABLE WATERTILE ; c1
- NONTALKABLE WATERTILE ; c2
- NONTALKABLE WATERTILE ; c3
- NONTALKABLE WATERTILE ; c4
- NONTALKABLE WATERTILE ; c5
- NONTALKABLE WATERTILE ; c6
- NONTALKABLE WATERTILE ; c7
+ NONTALKABLE WATERTILE ; COLL_RIGHT_BUOY
+ NONTALKABLE WATERTILE ; COLL_LEFT_BUOY
+ NONTALKABLE WATERTILE ; COLL_UP_BUOY
+ NONTALKABLE WATERTILE ; COLL_DOWN_BUOY
+ NONTALKABLE WATERTILE ; COLL_DOWN_RIGHT_BUOY
+ NONTALKABLE WATERTILE ; COLL_DOWN_LEFT_BUOY
+ NONTALKABLE WATERTILE ; COLL_UP_RIGHT_BUOY
+ NONTALKABLE WATERTILE ; COLL_UP_LEFT_BUOY
NONTALKABLE WATERTILE ; c8
NONTALKABLE WATERTILE ; c9
NONTALKABLE WATERTILE ; ca
--- a/data/maps/scenes.asm
+++ b/data/maps/scenes.asm
@@ -84,4 +84,4 @@
scene_var MOUNT_MOON_SQUARE, wMountMoonSquareSceneID
scene_var MOBILE_TRADE_ROOM, wMobileTradeRoomSceneID
scene_var MOBILE_BATTLE_ROOM, wMobileBattleRoomSceneID
- db -1
+ db -1 ; end
--- a/engine/events/checkforhiddenitems.asm
+++ b/engine/events/checkforhiddenitems.asm
@@ -60,7 +60,7 @@
.next
; Restore the bg_event pointer and increment it by the length of a bg_event.
pop hl
- ld bc, 5
+ ld bc, BG_EVENT_SIZE
add hl, bc
; Restore the BG event counter and decrement it. If it hits zero, there are no hidden items in range.
ld a, [wBuffer2]
--- a/engine/overworld/events.asm
+++ b/engine/overworld/events.asm
@@ -418,7 +418,7 @@
ld a, [hli]
ld h, [hl]
ld l, a
-rept 4
+rept SCENE_SCRIPT_SIZE
add hl, de
endr
--- a/engine/overworld/npc_movement.asm
+++ b/engine/overworld/npc_movement.asm
@@ -114,7 +114,10 @@
ret
.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:
ld hl, OBJECT_STANDING_TILE
@@ -137,19 +140,22 @@
ret
.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:
ld d, a
and $f0
cp HI_NYBBLE_SIDE_WALLS
- jr z, .done
- cp HI_NYBBLE_UNUSED_C0
- jr z, .done
+ jr z, .continue
+ cp HI_NYBBLE_SIDE_BUOYS
+ jr z, .continue
xor a
ret
-.done
+.continue
ld a, d
and 7
ld e, a
@@ -161,8 +167,14 @@
ret
.data_6f99
- db 8, 4, 1, 2
- db 10, 6, 9, 5
+ db RIGHT_MASK ; COLL_RIGHT_WALL/BUOY
+ 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:
ld hl, OBJECT_DIRECTION_WALKING
@@ -493,7 +505,7 @@
cp d
jr nz, .check_current_coords
ldh a, [hObjectStructIndexBuffer]
- cp $0
+ cp PLAYER_OBJECT
jr z, .next
jr .yes
--- a/home/map.asm
+++ b/home/map.asm
@@ -46,8 +46,8 @@
ret
GetMapSceneID::
-; Searches the scene script 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.
+; 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_var table, returns carry.
push bc
ldh a, [hROMBank]
push af
@@ -59,7 +59,7 @@
push hl
ld a, [hli] ; map group, or terminator
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
jr nz, .next ; map group did not match
ld a, [hli] ; map number
@@ -69,7 +69,7 @@
.next
pop hl
- ld de, 4 ; scene_script size
+ ld de, 4 ; scene_var size
add hl, de
jr .loop
@@ -275,7 +275,7 @@
.next
pop hl
- ld a, 5
+ ld a, WARP_EVENT_SIZE
add l
ld l, a
jr nc, .okay
@@ -325,7 +325,7 @@
ld l, a
ld a, c
dec a
- ld bc, 5 ; warp size
+ ld bc, WARP_EVENT_SIZE
call AddNTimes
ld bc, 2 ; warp number
add hl, bc
@@ -487,7 +487,7 @@
ret
ReadMapSceneScripts::
- ld a, [hli] ; scene script count
+ ld a, [hli] ; scene_script count
ld c, a
ld [wCurMapSceneScriptCount], a
ld a, l
@@ -498,7 +498,7 @@
and a
ret z
- ld bc, 4 ; scene_script size
+ ld bc, SCENE_SCRIPT_SIZE
call AddNTimes
ret
@@ -514,7 +514,7 @@
and a
ret z
- ld bc, 3
+ ld bc, CALLBACK_SIZE
call AddNTimes
ret
@@ -529,7 +529,7 @@
ld a, c
and a
ret z
- ld bc, 5
+ ld bc, WARP_EVENT_SIZE
call AddNTimes
ret
@@ -546,7 +546,7 @@
and a
ret z
- ld bc, 8
+ ld bc, COORD_EVENT_SIZE
call AddNTimes
ret
@@ -563,7 +563,7 @@
and a
ret z
- ld bc, 5
+ ld bc, BG_EVENT_SIZE
call AddNTimes
ret
@@ -622,7 +622,7 @@
push hl
ld a, $ff
ld [hli], a
- ld b, MAPOBJECT_E - MAPOBJECT_SPRITE
+ ld b, OBJECT_EVENT_SIZE
.loop2
ld a, [de]
inc de
@@ -664,14 +664,14 @@
ld a, [hli]
ld h, [hl]
ld l, a
- inc hl ; get to the warp coords
- inc hl ; get to the warp coords
- inc hl ; get to the warp coords
+rept 3 ; get to the warp coords
+ inc hl
+endr
ld a, [wWarpNumber]
dec a
ld c, a
ld b, 0
- ld a, 5
+ ld a, WARP_EVENT_SIZE
call AddNTimes
ld a, [hli]
ld [wYCoord], a
@@ -981,7 +981,7 @@
ld l, a
or h
ret z
- ld de, 3
+ ld de, CALLBACK_SIZE
.loop
ld a, [hl]
cp b
@@ -1261,7 +1261,7 @@
push de
call .iteration
pop de
- ld a, $20
+ ld a, BG_MAP_WIDTH
add e
ld e, a
@@ -1295,7 +1295,7 @@
ld [hli], a
ld a, d
ld [hli], a
- ld a, $20
+ ld a, BG_MAP_WIDTH
add e
ld e, a
jr nc, .skip
@@ -1344,11 +1344,11 @@
ldh a, [rVBK]
push af
- ld a, $1
+ ld a, BANK(vTiles5)
ldh [rVBK], a
ld hl, wDecompressScratch + $60 tiles
- ld de, vTiles2
+ ld de, vTiles5
ld bc, $60 tiles
call CopyBytes
@@ -1573,12 +1573,12 @@
call .CheckHiNybble
ret nz
ld a, [wTileDown]
- and 7
- cp $2
+ and %111
+ cp COLL_UP_WALL & %111 ; COLL_UP_BUOY & %111
jr z, .ok_down
- cp $6
+ cp COLL_UP_RIGHT_WALL & %111 ; COLL_UP_RIGHT_BUOY & %111
jr z, .ok_down
- cp $7
+ cp COLL_UP_LEFT_WALL & %111 ; COLL_UP_LEFT_BUOY & %111
ret nz
.ok_down
@@ -1591,12 +1591,12 @@
call .CheckHiNybble
ret nz
ld a, [wTileUp]
- and 7
- cp $3
+ and %111
+ cp COLL_DOWN_WALL & %111 ; COLL_DOWN_BUOY & %111
jr z, .ok_up
- cp $4
+ cp COLL_DOWN_RIGHT_WALL & %111 ; COLL_DOWN_RIGHT_BUOY & %111
jr z, .ok_up
- cp $5
+ cp COLL_DOWN_LEFT_WALL & %111 ; COLL_DOWN_LEFT_BUOY & %111
ret nz
.ok_up
@@ -1609,12 +1609,12 @@
call .CheckHiNybble
ret nz
ld a, [wTileRight]
- and 7
- cp $1
+ and %111
+ cp COLL_LEFT_WALL & %111 ; COLL_LEFT_BUOY & %111
jr z, .ok_right
- cp $5
+ cp COLL_DOWN_LEFT_WALL & %111 ; COLL_DOWN_LEFT_BUOY & %111
jr z, .ok_right
- cp $7
+ cp COLL_UP_LEFT_WALL & %111 ; COLL_UP_LEFT_BUOY & %111
ret nz
.ok_right
@@ -1627,12 +1627,12 @@
call .CheckHiNybble
ret nz
ld a, [wTileLeft]
- and 7
- cp $0
+ and %111
+ cp COLL_RIGHT_WALL & %111 ; COLL_RIGHT_BUOY & %111
jr z, .ok_left
- cp $4
+ cp COLL_DOWN_RIGHT_WALL & %111 ; COLL_DOWN_RIGHT_BUOY & %111
jr z, .ok_left
- cp $6
+ cp COLL_UP_RIGHT_WALL & %111 ; COLL_UP_RIGHT_BUOY & %111
ret nz
.ok_left
@@ -1645,7 +1645,7 @@
and $f0
cp HI_NYBBLE_SIDE_WALLS
ret z
- cp HI_NYBBLE_UNUSED_C0
+ cp HI_NYBBLE_SIDE_BUOYS
ret
GetFacingTileCoord::
@@ -1799,7 +1799,7 @@
.next
pop hl
- ld a, 5 ; BG event event length
+ ld a, BG_EVENT_SIZE
add l
ld l, a
jr nc, .nocarry
@@ -1814,7 +1814,7 @@
.copysign
pop hl
ld de, wCurBGEventYCoord
- ld bc, 5 ; BG event event length
+ ld bc, BG_EVENT_SIZE
call CopyBytes
scf
ret
@@ -1871,7 +1871,7 @@
.next
pop hl
- ld a, $8 ; coord event size
+ ld a, COORD_EVENT_SIZE
add l
ld l, a
jr nc, .nocarry
@@ -1886,7 +1886,7 @@
.copy_coord_event
pop hl
ld de, wCurCoordEventSceneID
- ld bc, 8 ; coord event size
+ ld bc, COORD_EVENT_SIZE
call CopyBytes
scf
ret
--- a/home/stone_queue.asm
+++ b/home/stone_queue.asm
@@ -76,7 +76,7 @@
jr .found_warp
.not_on_warp
- ld a, 5
+ ld a, WARP_EVENT_SIZE
add l
ld l, a
jr nc, .no_carry
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -32,7 +32,7 @@
db \3, \2, \1
db 0 ; filler
dw \4
- db 0, 0 ; filler
+ dw 0 ; filler
ENDM
bg_event: MACRO