engine: disassemble player movement (WIP)

Signed-off-by: Tauwasser <Tauwasser@tauwasser.eu>
This commit is contained in:
Tauwasser
2018-06-24 23:15:07 +02:00
parent 57481cc942
commit 906ea8bdfc
8 changed files with 1286 additions and 3 deletions

View File

@@ -24,6 +24,8 @@ INCLUDE "constants/landmark_constants.asm"
INCLUDE "constants/map_constants.asm"
INCLUDE "constants/map_setup_constants.asm"
INCLUDE "constants/tileset_constants.asm"
INCLUDE "constants/collision_constants.asm"
INCLUDE "constants/metatile_constants.asm"
INCLUDE "constants/map_data_constants.asm"
INCLUDE "constants/script_constants.asm"

View File

@@ -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

View File

@@ -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

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1679,7 +1679,7 @@ Function2b87::
call GetJoypad
call OverworldStartButtonCheck
ret nz
callab Functionc000
callab OverworldMovementCheck
call Function2ba8
jr nc, .asm_2b87
callba Function824c

View File

@@ -58,7 +58,6 @@
02:528B Function928b
02:5695 CheckSGB
03:4000 Functionc000
03:47D5 SpawnPoints
03:488D Tilesets
03:54E6 Functiond4e6

View File

@@ -343,7 +343,10 @@ wMovementBufferObject:: db ; cc3b
wMovementBuffer:: ; cc3f
ds 55
SECTION "CC9C", WRAM0[$CC9C]
SECTION "CC9A", WRAM0[$CC9A]
wSkatingDirection:: db ; cc9a
wCompanionCollisionFrameCounter:: db ; cc9b
wUnknownWordcc9c:: ; cc9c
dw
@@ -735,6 +738,10 @@ wRivalsName:: ds 6 ; d258
SECTION "PlayerState", WRAM0[$D264]
wPlayerState:: db ; d264
; 00 - walking
; 01 - bicycle
; 02 - skateboard
; 04 - surfing
SECTION "D4AB", WRAM0[$D4A9]