Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
237 changes: 138 additions & 99 deletions constants/collision_constants.asm
Original file line number Diff line number Diff line change
Expand Up @@ -8,137 +8,176 @@
; What exactly flag means or if it
; means anything is up to Type.
; Old Types:
; ???
; 0 - Regular 8 - Cuttable
; 1 - ??? 9 - unused
; 2 - Water A - unused
; 3 - ??? B - unused
; 4 - Water 2 C - unused
; 5 - Pits D - unused
; 6 - Warps E - unused
; 7 - Special Talk Act F - unused
; New Types:
; 0 - Regular 8 - ???
; 1 - Trees, Grass etc. 9 - Special Talk Action
; 0 - Regular 8 - Minigame Talk Action
; 1 - Cuttable 9 - Special Talk Action
; 2 - Water A - Jump Action
; 3 - Water 2 B - unused
; 4 - Land C - unused
; 5 - Land 2 D - unused
; 6 - ??? E - unused
; 6 - Pits E - unused
; 7 - Warps F - unused

; TODO: Replace all instances of COLLISION with COLL for consistency with pokegold.

DEF COLLISION_TYPE_MASK EQU $f0
DEF COLLISION_SUBTYPE_MASK EQU $07
DEF COLLISION_WATER_SUBTYPE_MASK EQU $03

DEF COLLISION_FLAG EQU $08
MACRO tilecoll
; used in data/tilesets/*_collision.inc
db COLL_\1, COLL_\2, COLL_\3, COLL_\4
ENDM

DEF COLLMASK_TYPE EQU $f0
DEF COLLMASK_SUBTYPE EQU $07 ; LO_NYBBLE_GRASS in final
DEF COLLMASK_WATER_SUBTYPE EQU $03

DEF COLLFLAG_ENCOUNTER EQU $08 ; enables encounters or special actions depending on the type.

; old collision data type nybbles for "COLLMASK_TYPE"
DEF COLLMASK_TYPE_OLD_WATER EQU $20 ; matches COLLMASK_TYPE_WATER
DEF COLLMASK_TYPE_OLD_WATER_ALT EQU $40
DEF COLLMASK_TYPE_OLD_PITS EQU $50
DEF COLLMASK_TYPE_OLD_WARPS EQU $60
DEF COLLMASK_TYPE_OLD_SPECIAL EQU $70
DEF COLLMASK_TYPE_OLD_TALL_GRASS EQU $80

; collision data type nybbles for "COLLMASK_TYPE"
DEF COLLMASK_TYPE_TALL_GRASS EQU $10
DEF COLLMASK_TYPE_WATER EQU $20
DEF COLLMASK_TYPE_WATER_ALT EQU $30 ; HI_NYBBLE_CURRENT in final
DEF COLLMASK_TYPE_WALK EQU $40
DEF COLLMASK_TYPE_WALK_ALT EQU $50
DEF COLLMASK_TYPE_PITS EQU $60
DEF COLLMASK_TYPE_WARPS EQU $70
DEF COLLMASK_TYPE_MINIGAME EQU $80
DEF COLLMASK_TYPE_SPECIAL EQU $90
DEF COLLTYPE_LEDGES EQU $a0

; old collision constants

DEF OLD_HI_NYBBLE_TALL_GRASS EQU $10
DEF OLD_HI_NYBBLE_WATER EQU $20
DEF OLD_HI_NYBBLE_WATER_ALT EQU $40

DEF OLD_COLLISION_WALKABLE EQU $00
DEF OLD_COLLISION_SOLID EQU $01
DEF OLD_COLLISION_FLOOR EQU $03
DEF OLD_COLLISION_WALL EQU $04

DEF OLD_COLLISION_LEDGE EQU $11

DEF OLD_COLLISION_WATER2_S EQU $40

DEF OLD_COLLISION_ROCK EQU $51

DEF OLD_COLLISION_CARPET EQU $60
DEF OLD_COLLISION_DOOR EQU $61

DEF OLD_COLLISION_SIGNPOST EQU $70
DEF OLD_COLLISION_SHOP_SIGN EQU $71
DEF OLD_COLLISION_MART_ITEM EQU $72
DEF OLD_COLLISION_COUNTER EQU $73

DEF OLD_COLLISION_CUT_TREE EQU $80
DEF OLD_COLLISION_GRASS EQU $82
DEF COLL_OLD_FLOOR EQU $00 ; matches COLL_FLOOR
DEF COLL_OLD_WALL EQU $01
DEF COLL_OLD_FLOOR_INSIDE EQU $03
DEF COLL_OLD_WALL_INSIDE EQU $04

; $10 (old)
DEF COLL_OLD_LEDGE EQU $11
DEF COLL_OLD_STEPS EQU $13

; water collisions (old)
DEF COLL_OLD_WATER EQU $21 ; matches COLL_WATER
DEF COLL_OLD_WATER_ENCOUNTER EQU $24

; water collisions (hm) (old)
DEF COLL_OLD_WATERFALL EQU $40 ; HM07
DEF COLL_OLD_MUDPIT EQU $41 ; NEWTYPE
DEF COLL_OLD_42 EQU $42 ; ???
DEF COLL_OLD_43 EQU $43 ; ???
DEF COLL_OLD_WHIRLPOOL EQU $44 ; HM06

; falling warp collisions (old)
DEF COLL_OLD_PIT EQU $50
DEF COLL_OLD_PIT_SKATE EQU $51
DEF COLL_OLD_PIT_CAVE EQU $57

; warp collisions (old)
DEF COLL_OLD_CARPET EQU $60
DEF COLL_OLD_DOOR EQU $61
DEF COLL_OLD_LADDER EQU $62

; special collisions (old)
DEF COLL_OLD_SIGNPOST EQU $70
DEF COLL_OLD_SHOP_SIGN EQU $71
DEF COLL_OLD_MART_ITEM EQU $72
DEF COLL_OLD_COUNTER EQU $73

; cuttable tiles (old)
DEF COLL_OLD_CUT_TREE EQU $80
DEF COLL_OLD_GRASS_81 EQU $81
DEF COLL_OLD_GRASS_82 EQU $82
DEF COLL_OLD_GRASS EQU $83

; new collision constants

DEF COLLISION_WALKABLE EQU $00
DEF COLLISION_SOLID EQU $07
DEF COLLISION_08 EQU $08 ; triggers wild encounters
DEF COLLISION_CUT_TREE EQU $12
DEF COLLISION_GRASS EQU $18
DEF COLL_FLOOR EQU $00
DEF COLL_OOB EQU $05 ; first block in TILESET_SILENT_HILL and TILESET_ROCKET_HOUSE
DEF COLL_WALL EQU $07

; water collisions
; cuttable collisions
DEF COLL_GRASS EQU $10
DEF COLL_CUT_TREE EQU $12

DEF COLLISION_WATER_21 EQU $21
DEF COLLISION_WATERFALL EQU $22
DEF COLLISION_WATER_SOLID EQU $27
DEF COLLISION_WATER_28 EQU $28 ; triggers wild encounters
DEF COLLISION_WATER EQU $29
; water collisions
DEF COLL_WATER_20 EQU $20
DEF COLL_WATER EQU $21
DEF COLL_WATERFALL EQU $22
DEF COLL_WATER_SOLID EQU $27

; water collisions 2
DEF COLLISION_WATER2_E EQU $30
DEF COLLISION_WATER2_W EQU $31
DEF COLLISION_WATER2_N EQU $32
DEF COLLISION_WATER2_S EQU $33
; $34..$37 will behave like COLLISION_WATER2_E..COLLISION_WATER2_S
DEF COLL_WATER2_E EQU $30
DEF COLL_WATER2_W EQU $31
DEF COLL_WATER2_N EQU $32
DEF COLL_WATER2_S EQU $33
; $34..$37 will behave like COLL_WATER2_E..COLL_WATER2_S

; land collisions
DEF COLLISION_LAND_SLOW EQU $40
DEF COLLISION_LAND_E EQU $41
DEF COLLISION_LAND_W EQU $42
DEF COLLISION_LAND_N EQU $43
DEF COLLISION_LAND_S EQU $44
; $45..$47 will behave like COLLISION_LAND_E

; All of these are listed in CheckGrassCollision. That's about all we know.
DEF COLLISION_48 EQU $48
DEF COLLISION_49 EQU $49
DEF COLLISION_4A EQU $4A
DEF COLLISION_4B EQU $4B
DEF COLLISION_4C EQU $4C
DEF COLL_LAND_SLOW EQU $40
DEF COLL_LAND_E EQU $41
DEF COLL_LAND_W EQU $42
DEF COLL_LAND_N EQU $43
DEF COLL_LAND_S EQU $44
; $45..$47 will behave like COLL_LAND_E

; land collisions 2
DEF COLLISION_LAND2_E EQU $50
DEF COLLISION_LAND2_W EQU $51
DEF COLLISION_LAND2_N EQU $52
DEF COLLISION_LAND2_S EQU $53
; $54..$57 will behave like COLLISION_LAND2_E
DEF COLL_LAND2_E EQU $50
DEF COLL_LAND2_W EQU $51
DEF COLL_LAND2_N EQU $52
DEF COLL_LAND2_S EQU $53
; $54..$57 will behave like COLL_LAND2_E

; falling warp collisions
DEF COLL_PIT EQU $60
DEF COLL_PIT_VB EQU $61 ; Why is this a pit?

; warp collisions
DEF COLLISION_CARPET EQU $70
DEF COLLISION_DOOR EQU $71
DEF COLLISION_STEPS EQU $72
DEF COLL_CARPET EQU $70
DEF COLL_DOOR EQU $71
DEF COLL_LADDER EQU $72
DEF COLL_CAVE EQU $73
DEF COLL_STAIRS EQU $75

; special collisions
DEF COLLISION_COUNTER EQU $90
DEF COLLISION_BOOKCASE EQU $91
DEF COLLISION_PC EQU $93
DEF COLLISION_RADIO EQU $94
DEF COLLISION_SIGNPOST EQU $95
DEF COLLISION_STRAIGHT_SIGNPOST EQU $97
DEF COLLISION_COUNTER_98 EQU $98
; minigame collisions
DEF COLL_SLOTS EQU $80
DEF COLL_CONSOLE EQU $83

; special collisions
DEF COLL_COUNTER EQU $90
DEF COLL_BOOKCASE EQU $91
DEF COLL_VENDING_MACHINE EQU $92
DEF COLL_PC EQU $93
DEF COLL_RADIO EQU $94
DEF COLL_SIGNPOST EQU $95
DEF COLL_STRAIGHT_SIGNPOST EQU $97

; jump collisions
; perform jump in marked direction, else
; regular walking
DEF COLLISION_JUMP_E EQU $a0
DEF COLLISION_JUMP_W EQU $a1
DEF COLLISION_JUMP_N EQU $a2
DEF COLLISION_JUMP_S EQU $a3
DEF COLLISION_JUMP_SE EQU $a4
DEF COLLISION_JUMP_SW EQU $a5
DEF COLLISION_JUMP_NE EQU $a6
DEF COLLISION_JUMP_NW EQU $a7
DEF COLL_JUMP_E EQU $a0
DEF COLL_JUMP_W EQU $a1
DEF COLL_JUMP_N EQU $a2
DEF COLL_JUMP_S EQU $a3
DEF COLL_JUMP_SE EQU $a4
DEF COLL_JUMP_SW EQU $a5
DEF COLL_JUMP_NE EQU $a6
DEF COLL_JUMP_NW EQU $a7

DEF COLL_FF EQU $ff

DEF NEVER_SOLID EQU 0
DEF SOMETIMES_SOLID EQU 1
DEF ALWAYS_SOLID EQU 15

; collision data type nybbles
DEF LO_NYBBLE_GRASS EQU $07
DEF HI_NYBBLE_TALL_GRASS EQU $10
DEF HI_NYBBLE_WATER EQU $20
DEF HI_NYBBLE_WATER_ALT EQU $30 ; HI_NYBBLE_CURRENT in final
DEF HI_NYBBLE_WALK EQU $40
DEF HI_NYBBLE_WALK_ALT EQU $50
DEF HI_NYBBLE_WARPS EQU $70
DEF HI_NYBBLE_SPECIAL EQU $90
DEF HI_NYBBLE_LEDGES EQU $a0
4 changes: 2 additions & 2 deletions constants/map_object_constants.asm
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ DEF OW_RIGHT EQU RIGHT << 2
shift_const WONT_DELETE ; 1
shift_const FIXED_FACING ; 2
shift_const SLIDING ; 3
shift_const COLLISION_TILES ; 4
shift_const NOCLIP_TILES ; 4
shift_const NOCLIP_NOT_SET ; 5
shift_const COLLISION_OBJS ; 6
shift_const NOCLIP_OBJS ; 6
shift_const CENTERED_OBJECT ; 7

; object_struct OBJECT_FLAGS2 bit flags
Expand Down
Binary file removed data/tilesets/aquarium_collision.bin
Binary file not shown.
64 changes: 64 additions & 0 deletions data/tilesets/aquarium_collision.inc
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
tilecoll FF, FF, FF, FF,
tilecoll WALL, WALL, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll SLOTS, SLOTS, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER,
tilecoll COUNTER, COUNTER, FLOOR, FLOOR,
tilecoll COUNTER, WALL, FLOOR, FLOOR,
tilecoll WALL, COUNTER, FLOOR, FLOOR,
tilecoll STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER, FLOOR, FLOOR,
tilecoll WALL, WALL, COUNTER, FLOOR,
tilecoll WALL, WALL, FLOOR, COUNTER,
tilecoll FLOOR, WALL, FLOOR, WALL,
tilecoll FLOOR, FLOOR, CARPET, CARPET,
tilecoll WALL, FLOOR, WALL, FLOOR,
tilecoll SLOTS, SLOTS, SLOTS, SLOTS,
tilecoll FLOOR, WALL, FLOOR, WALL,
tilecoll WALL, WALL, WALL, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER,
tilecoll WALL, WALL, WALL, WALL,
tilecoll WALL, WALL, WALL, FLOOR,
tilecoll COUNTER, COUNTER, FLOOR, FLOOR,
tilecoll WALL, WALL, COUNTER, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll WALL, WALL, WALL, WALL,
tilecoll WALL, WALL, WALL, WALL,
tilecoll FLOOR, FLOOR, STAIRS, FLOOR,
tilecoll FLOOR, FLOOR, STAIRS, FLOOR,
tilecoll WALL, WALL, WALL, WALL,
tilecoll WALL, WALL, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER, WALL,
tilecoll WALL, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll WALL, WALL, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER, FLOOR,
tilecoll SLOTS, SLOTS, SLOTS, SLOTS,
tilecoll WALL, FLOOR, WALL, FLOOR,
tilecoll WALL, WALL, WALL, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER,
tilecoll WALL, FLOOR, FLOOR, WALL,
tilecoll WALL, STRAIGHT_SIGNPOST | COLLFLAG_ENCOUNTER, FLOOR, FLOOR,
tilecoll WALL, WALL, FLOOR, FLOOR,
tilecoll COUNTER, FLOOR, WALL, FLOOR,
tilecoll FF, FF, FF, FF,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
tilecoll FLOOR, FLOOR, FLOOR, FLOOR,
Binary file removed data/tilesets/birdon_collision.bin
Binary file not shown.
Loading