From 906ea8bdfcf024cb5011948a319764047f8fa41f Mon Sep 17 00:00:00 2001 From: Tauwasser Date: Sun, 24 Jun 2018 23:15:07 +0200 Subject: engine: disassemble player movement (WIP) Signed-off-by: Tauwasser --- constants/collision_constants.asm | 128 ++++++++++++++++++++++++++++++++++++++ constants/metatile_constants.asm | 32 ++++++++++ 2 files changed, 160 insertions(+) create mode 100644 constants/collision_constants.asm create mode 100644 constants/metatile_constants.asm (limited to 'constants') diff --git a/constants/collision_constants.asm b/constants/collision_constants.asm new file mode 100644 index 0000000..580d397 --- /dev/null +++ b/constants/collision_constants.asm @@ -0,0 +1,128 @@ +; collision IDs are built like this: +; 76543210 +; \__/|\_/ +; | | \-- SubType +; | \---- Flag +; \------ Type +; +; What exactly flag means or if it +; means anything is up to Type. +; Old Types: +; ??? +; New Types: +; 0 - Regular 8 - ??? +; 1 - Trees, Grass etc. 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 +; 7 - Warps F - unused + +COLLISION_TYPE_MASK EQU $f0 +COLLISION_SUBTYPE_MASK EQU $07 +COLLISION_WATER_SUBTYPE_MASK EQU $03 + +COLLISION_FLAG EQU $08 + +; old collision constants + +OLD_COLLISION_TYPE_REGULAR EQU $00 +OLD_COLLISION_TYPE_SCENERY EQU $10 +OLD_COLLISION_TYPE_WATER EQU $20 +OLD_COLLISION_TYPE_WATER2 EQU $40 + +OLD_COLLISION_WALKABLE EQU $00 +OLD_COLLISION_SOLID EQU $01 +OLD_COLLISION_FLOOR EQU $03 +OLD_COLLISION_WALL EQU $04 + +OLD_COLLISION_LEDGE EQU $11 + +OLD_COLLISION_WATER2_S EQU $40 + +OLD_COLLISION_ROCK EQU $51 + +OLD_COLLISION_CARPED EQU $60 +OLD_COLLISION_DOOR EQU $61 + +OLD_COLLISION_SIGNPOST EQU $70 +OLD_COLLISION_SHOP_SIGN EQU $71 +OLD_COLLISION_MART_ITEM EQU $72 +OLD_COLLISION_COUNTER EQU $73 + +OLD_COLLISION_CUT_TREE EQU $80 +OLD_COLLISION_GRASS EQU $82 + +; new collision constants + +COLLISION_TYPE_REGULAR EQU $00 +COLLISION_TYPE_SCENERY EQU $10 +COLLISION_TYPE_WATER EQU $20 +COLLISION_TYPE_WATER2 EQU $30 +COLLISION_TYPE_LAND EQU $40 +COLLISION_TYPE_LAND2 EQU $50 +COLLISION_TYPE_UNK EQU $60 +COLLISION_TYPE_WARPS EQU $70 +COLLISION_TYPE_UNKN2 EQU $80 +COLLISION_TYPE_SPECIAL EQU $90 +COLLISION_TYPE_JUMP EQU $A0 + +COLLISION_WALKABLE EQU $00 +COLLISION_SOLID EQU $07 +COLLISION_CUT_TREE EQU $12 +COLLISION_GRASS EQU $18 + +; water collisions + +COLLISION_WATER EQU $21 +COLLISION_WATERFALL EQU $22 +COLLISION_WATER_SOLID EQU $27 + +; water collisions 2 +COLLISION_WATER2_E EQU $30 +COLLISION_WATER2_W EQU $31 +COLLISION_WATER2_N EQU $32 +COLLISION_WATER2_S EQU $33 +; $34..$37 will behave like COLLISION_WATER2_E..COLLISION_WATER2_S + +; land collisions +COLLISION_LAND_SLOW EQU $40 +COLLISION_LAND_E EQU $41 +COLLISION_LAND_W EQU $42 +COLLISION_LAND_N EQU $43 +COLLISION_LAND_S EQU $44 +; $45..$47 will behave like COLLISION_LAND_E + +; land collisions 2 +COLLISION_LAND2_E EQU $50 +COLLISION_LAND2_W EQU $51 +COLLISION_LAND2_N EQU $52 +COLLISION_LAND2_S EQU $53 +; $54..$57 will behave like COLLISION_LAND2_E + + +; warp collisions +COLLISION_CARPET EQU $70 +COLLISION_DOOR EQU $71 +COLLISION_STEPS EQU $72 + +; special collisions +COLLISION_COUNTER EQU $90 +COLLISION_BOOKCASE EQU $91 +COLLISION_PC EQU $93 +COLLISION_RADIO EQU $94 +COLLISION_SIGNPOST EQU $95 +COLLISION_STRAIGHT_SIGNPOST EQU $97 + +; jump collisions +; perform jump in marked direction, else +; regular walking +COLLISION_JUMP_E EQU $a0 +COLLISION_JUMP_W EQU $a1 +COLLISION_JUMP_N EQU $a2 +COLLISION_JUMP_S EQU $a3 +COLLISION_JUMP_SE EQU $a4 +COLLISION_JUMP_SW EQU $a5 +COLLISION_JUMP_NE EQU $a6 +COLLISION_JUMP_NW EQU $a7 diff --git a/constants/metatile_constants.asm b/constants/metatile_constants.asm new file mode 100644 index 0000000..8d86ac5 --- /dev/null +++ b/constants/metatile_constants.asm @@ -0,0 +1,32 @@ + +; all outside tileset share certain metatiles +; this is used in overworld code when editing the map +; D - dirt +; L - lawn +; T - small tree +; C - cut tree +; G - grass +METATILE_GROUND EQU $01 ; DD + ; DD +METATILE_LAWN EQU $04 ; LL + ; LL +METATILE_SMALL_TREES_N EQU $25 ; TT + ; LL +METATILE_SMALL_TREES_W EQU $28 ; TL + ; TL +METATILE_SMALL_TREES_E EQU $2a ; LT + ; LT +METATILE_CUT_SE_TREES_N EQU $30 ; TT + ; LC +METATILE_CUT_NW_TREES_E EQU $31 ; CT + ; LT +METATILE_CUT_NE_TREE_NW EQU $32 ; TC + ; LL +METATILE_CUT_NE_TREE_SE EQU $33 ; LC + ; LT +METATILE_SMALL_TREE_NW EQU $34 ; TL + ; LL +METATILE_SMALL_TREE_SE EQU $35 ; TL + ; LL +METATILE_GRASS EQU $3b ; GG + ; GG -- cgit v1.2.3 From 3c966f7df4170f58f8274f444977c5a29225d9be Mon Sep 17 00:00:00 2001 From: Pokeglitch Date: Mon, 25 Jun 2018 22:43:31 -0400 Subject: Disassembled all routines related to sprite movement/collisions. Added in constants --- constants/collision_constants.asm | 4 ++++ constants/map_object_constants.asm | 4 ++++ constants/metatile_constants.asm | 1 - constants/movement_constants.asm | 44 ++++++++++++++++++++++++++++++++++++++ constants/sprite_constants.asm | 2 ++ 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100755 constants/movement_constants.asm (limited to 'constants') diff --git a/constants/collision_constants.asm b/constants/collision_constants.asm index 580d397..ebe3856 100644 --- a/constants/collision_constants.asm +++ b/constants/collision_constants.asm @@ -126,3 +126,7 @@ COLLISION_JUMP_SE EQU $a4 COLLISION_JUMP_SW EQU $a5 COLLISION_JUMP_NE EQU $a6 COLLISION_JUMP_NW EQU $a7 + +NEVER_SOLID EQU 0 +SOMETIMES_SOLID EQU 1 +ALWAYS_SOLID EQU 15 diff --git a/constants/map_object_constants.asm b/constants/map_object_constants.asm index c9bce93..81c52a3 100644 --- a/constants/map_object_constants.asm +++ b/constants/map_object_constants.asm @@ -70,3 +70,7 @@ MAPOBJECTTEMPLATE_SCRIPT_POINTER rb 1 ; 9 MAPOBJECTTEMPLATE_POINTER_HI rb 1 ; a MAPOBJECTTEMPLATE_EVENT_FLAG rw 1 ; b MAP_OBJECT_TEMPLATE_LENGTH SET _RS + +PLAYER_OBJECT_INDEX EQU 1 +COMPANION_OBJECT_INDEX EQU 2 +NUM_OBJECT_STRUCTS EQU 10 diff --git a/constants/metatile_constants.asm b/constants/metatile_constants.asm index 8d86ac5..88d54ab 100644 --- a/constants/metatile_constants.asm +++ b/constants/metatile_constants.asm @@ -1,4 +1,3 @@ - ; all outside tileset share certain metatiles ; this is used in overworld code when editing the map ; D - dirt diff --git a/constants/movement_constants.asm b/constants/movement_constants.asm new file mode 100755 index 0000000..f0c1a88 --- /dev/null +++ b/constants/movement_constants.asm @@ -0,0 +1,44 @@ + const_def + const FACE_DOWN ; $00 + const FACE_UP ; $01 + const FACE_LEFT ; $02 + const FACE_RIGHT ; $03 + const SLOW_STEP_DOWN ; $04 + const SLOW_STEP_UP ; $05 + const SLOW_STEP_LEFT ; $06 + const SLOW_STEP_RIGHT ; $07 + const STEP_DOWN ; $08 + const STEP_UP ; $09 + const STEP_LEFT ; $0a + const STEP_RIGHT ; $0b + const FAST_STEP_DOWN ; $0c + const FAST_STEP_UP ; $0d + const FAST_STEP_LEFT ; $0e + const FAST_STEP_RIGHT ; $0f + const FAST_STEP_DOWN2 ; $10 + const FAST_STEP_UP2 ; $11 + const FAST_STEP_LEFT2 ; $12 + const FAST_STEP_RIGHT2 ; $13 + const SLOW_JUMP_DOWN ; $14 + const SLOW_JUMP_UP ; $15 + const SLOW_JUMP_LEFT ; $16 + const SLOW_JUMP_RIGHT ; $17 + const JUMP_DOWN ; $18 + const JUMP_UP ; $19 + const JUMP_LEFT ; $1a + const JUMP_RIGHT ; $1b + const FAST_JUMP_DOWN ; $1c + const FAST_JUMP_UP ; $1d + const FAST_JUMP_LEFT ; $1e + const FAST_JUMP_RIGHT ; $1f + const FAST_JUMP_DOWN2 ; $20 + const FAST_JUMP_UP2 ; $21 + const FAST_JUMP_LEFT2 ; $22 + const FAST_JUMP_RIGHT2 ; $23 + const MOVEMENT_24 ; $24 + const MOVEMENT_25 ; $25 + const MOVEMENT_26 ; $26 + const MOVEMENT_27 ; $27 + const MOVEMENT_28 ; $28 + const MOVEMENT_29 ; $29 + const NO_MOVEMENT ; $2a diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm index 50b5d84..c53866b 100644 --- a/constants/sprite_constants.asm +++ b/constants/sprite_constants.asm @@ -91,3 +91,5 @@ const SPRITE_59 ; 59 duplicate SPRITE_OLD_LINK_RECEPTIONIST const SPRITE_EGG ; 5a const SPRITE_BOULDER ; 5b + +SPRITE_TILE_SIZE EQU 64 -- cgit v1.2.3