shithub: pokecrystal

Download patch

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