summaryrefslogtreecommitdiff
path: root/engine/map_objects.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/map_objects.asm')
-rw-r--r--engine/map_objects.asm356
1 files changed, 191 insertions, 165 deletions
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index a5d792204..4c2adc9aa 100644
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -1,20 +1,20 @@
INCLUDE "engine/facings.asm"
-ObjectStruct3_Data:: ; 4273
+SpriteMovementData:: ; 4273
; function, facing, ?, ?, ?, ?
db SPRITEMOVEFN_00, DOWN, $01, $02, $00, $00 ; 00
- db SPRITEMOVEFN_06, DOWN, $01, $0c, $00, $00 ; 01
- db SPRITEMOVEFN_03, DOWN, $01, $00, $00, $00 ; 02
- db SPRITEMOVEFN_04, DOWN, $01, $00, $00, $00 ; 03
- db SPRITEMOVEFN_01, DOWN, $01, $00, $00, $00 ; 04
- db SPRITEMOVEFN_02, DOWN, $01, $00, $00, $00 ; 05
- db SPRITEMOVEFN_06, DOWN, $01, $00, $00, $00 ; 06
- db SPRITEMOVEFN_06, UP, $01, $00, $00, $00 ; 07
- db SPRITEMOVEFN_06, LEFT, $01, $00, $00, $00 ; 08
- db SPRITEMOVEFN_06, RIGHT, $01, $00, $00, $00 ; 09
- db SPRITEMOVEFN_05, DOWN, $01, $00, $00, $00 ; 0a
- db SPRITEMOVEFN_07, DOWN, $01, $02, $00, $00 ; 0b
+ db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 01
+ db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $00 ; 02
+ db SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 03
+ db SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, $01, $00, $00, $00 ; 04
+ db SPRITEMOVEFN_RANDOM_WALK_X, DOWN, $01, $00, $00, $00 ; 05
+ db SPRITEMOVEFN_STANDING, DOWN, $01, $00, $00, $00 ; 06
+ db SPRITEMOVEFN_STANDING, UP, $01, $00, $00, $00 ; 07
+ db SPRITEMOVEFN_STANDING, LEFT, $01, $00, $00, $00 ; 08
+ db SPRITEMOVEFN_STANDING, RIGHT, $01, $00, $00, $00 ; 09
+ db SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, $01, $00, $00, $00 ; 0a
+ db SPRITEMOVEFN_OBEY_DPAD, DOWN, $01, $02, $00, $00 ; 0b
db SPRITEMOVEFN_08, DOWN, $01, $00, $00, $00 ; 0c
db SPRITEMOVEFN_09, DOWN, $01, $00, $00, $00 ; 0d
db SPRITEMOVEFN_0A, DOWN, $01, $00, $00, $00 ; 0e
@@ -22,24 +22,24 @@ ObjectStruct3_Data:: ; 4273
db SPRITEMOVEFN_0C, DOWN, $01, $00, $00, $00 ; 10
db SPRITEMOVEFN_0D, DOWN, $01, $00, $00, $00 ; 11
db SPRITEMOVEFN_0E, DOWN, $01, $00, $00, $00 ; 12
- db SPRITEMOVEFN_0F, DOWN, $01, $02, $00, $00 ; 13
- db SPRITEMOVEFN_10, DOWN, $01, $02, $00, $00 ; 14
- db SPRITEMOVEFN_15, DOWN, $09, $2e, $01, $c0 ; 15
- db SPRITEMOVEFN_16, DOWN, $0a, $2e, $00, $00 ; 16
- db SPRITEMOVEFN_06, DOWN, $01, $0c, $00, $00 ; 17
- db SPRITEMOVEFN_06, DOWN, $01, $2e, $10, $00 ; 18
- db SPRITEMOVEFN_11, DOWN, $01, $2e, $00, $40 ; 19
- db SPRITEMOVEFN_12, DOWN, $01, $02, $00, $00 ; 1a
+ db SPRITEMOVEFN_FOLLOW, DOWN, $01, $02, $00, $00 ; 13
+ db SPRITEMOVEFN_SCRIPTED, DOWN, $01, $02, $00, $00 ; 14
+ db SPRITEMOVEFN_BIG_SNORLAX, DOWN, $09, $2e, $01, $c0 ; 15
+ db SPRITEMOVEFN_BOUNCE, DOWN, $0a, $2e, $00, $00 ; 16
+ db SPRITEMOVEFN_STANDING, DOWN, $01, $0c, $00, $00 ; 17
+ db SPRITEMOVEFN_STANDING, DOWN, $01, $2e, $10, $00 ; 18
+ db SPRITEMOVEFN_STRENGTH, DOWN, $01, $2e, $00, $40 ; 19
+ db SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, $01, $02, $00, $00 ; 1a
db SPRITEMOVEFN_13, DOWN, $00, $8e, $01, $00 ; 1b
db SPRITEMOVEFN_14, DOWN, $08, $8e, $02, $00 ; 1c
db SPRITEMOVEFN_17, DOWN, $00, $82, $00, $00 ; 1d
- db SPRITEMOVEFN_19, LEFT, $01, $00, $00, $00 ; 1e
- db SPRITEMOVEFN_18, RIGHT, $01, $00, $00, $00 ; 1f
- db SPRITEMOVEFN_11, DOWN, $0c, $2e, $01, $c0 ; 20
- db SPRITEMOVEFN_11, DOWN, $0d, $2e, $01, $c0 ; 21
+ db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, $01, $00, $00, $00 ; 1e
+ db SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, $01, $00, $00, $00 ; 1f
+ db SPRITEMOVEFN_STRENGTH, DOWN, $0c, $2e, $01, $c0 ; 20
+ db SPRITEMOVEFN_STRENGTH, DOWN, $0d, $2e, $01, $c0 ; 21
db SPRITEMOVEFN_1A, DOWN, $0e, $8e, $01, $00 ; 22
db SPRITEMOVEFN_1B, DOWN, $0f, $8e, $02, $00 ; 23
- db SPRITEMOVEFN_03, DOWN, $01, $00, $00, $20 ; 24
+ db SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, $01, $00, $00, $20 ; 24
db SPRITEMOVEFN_00, DOWN, $01, $00, $00, $00 ; 25
; 4357
@@ -655,7 +655,7 @@ Function467b: ; 467b
ld hl, OBJECT_12
add hl, bc
ld [hl], a
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
rept 3
ld [hli], a
@@ -848,28 +848,28 @@ RestoreDefaultMovement: ; 4769
; 4780
ClearObjectStructField27: ; 4780
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld [hl], 0
ret
; 4787
IncrementObjectStructField27: ; 4787
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
inc [hl]
ret
; 478d
DecrementObjectStructField27: ; 478d
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
dec [hl]
ret
; 4793
JumptoObjectStructField27: ; 4793
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld a, [hl]
pop hl
@@ -937,7 +937,7 @@ Function47bc: ; 47bc
Function47dd: ; 47dd
call ClearObjectStructField28
- call Function1a2f
+ call GetSpriteMovementFunction
ld a, [hl]
ld hl, .Pointers
rst JumpTable
@@ -945,63 +945,63 @@ Function47dd: ; 47dd
; 47e9
.Pointers ; 47e9
- dw Function4821 ; 00
- dw Function4822 ; 01
- dw Function482c ; 02
- dw Function4838 ; 03
- dw Function4842 ; 04
- dw Function4851 ; 05
- dw Function4869 ; 06
- dw Function487c ; 07
- dw Function4882 ; 08
- dw Function4888 ; 09
- dw Function488e ; 0a
- dw Function4891 ; 0b
- dw Function4894 ; 0c
- dw Function4897 ; 0d
- dw Function489d ; 0e
- dw Function48a0 ; 0f
- dw Function48a6 ; 10
- dw Function48ac ; 11
- dw Function48ff ; 12
- dw Function49e5 ; 13
- dw Function4a21 ; 14
- dw Function4958 ; 15
- dw Function496e ; 16
- dw Function4abc ; 17
- dw Function498d ; 18
- dw Function4984 ; 19
- dw Function4a46 ; 1a
- dw Function4a89 ; 1b
+ dw .Null_00 ; 00
+ dw .RandomWalkY ; 01
+ dw .RandomWalkX ; 02
+ dw .RandomWalkXY ; 03
+ dw .RandomSpin1 ; 04
+ dw .RandomSpin2 ; 05
+ dw .Standing ; 06
+ dw .ObeyDPad ; 07
+ dw .Movement08 ; 08
+ dw .Movement09 ; 09
+ dw .Movement0a ; 0a
+ dw .Movement0b ; 0b
+ dw .Movement0c ; 0c
+ dw .Movement0d ; 0d
+ dw .Movement0e ; 0e
+ dw .Follow ; 0f
+ dw .Script ; 10
+ dw .Strength ; 11
+ dw .FollowNotExact ; 12
+ dw .Movement13 ; 13
+ dw .Movement14 ; 14
+ dw .MovementBigStanding ; 15
+ dw .MovementBouncing ; 16
+ dw .Movement17 ; 17
+ dw .MovementSpinClockwise ; 18
+ dw .MovementSpinCounterclockwise ; 19
+ dw .Movement1a ; 1a
+ dw .Movement1b ; 1b
; 4821
-Function4821: ; 4821
+.Null_00: ; 4821
ret
; 4822
-Function4822: ; 4822
+.RandomWalkY: ; 4822
call Random
ld a, [hRandomAdd]
and %00000001
- jp Function4af0
+ jp .RandomWalkContinue
; 482c
-Function482c: ; 482c
+.RandomWalkX: ; 482c
call Random
ld a, [hRandomAdd]
and %00000001
or %00000010
- jp Function4af0
+ jp .RandomWalkContinue
; 4838
-Function4838: ; 4838
+.RandomWalkXY: ; 4838
call Random
ld a, [hRandomAdd]
and %00000011
- jp Function4af0
+ jp .RandomWalkContinue
; 4842
-Function4842: ; 4842
+.RandomSpin1: ; 4842
call Random
ld a, [hRandomAdd]
and %00001100
@@ -1011,7 +1011,7 @@ Function4842: ; 4842
jp Function4b1d
; 4851
-Function4851: ; 4851
+.RandomSpin2: ; 4851
ld hl, OBJECT_FACING
add hl, bc
ld a, [hl]
@@ -1029,7 +1029,7 @@ Function4851: ; 4851
jp Function4b26
; 4869
-Function4869: ; standing?
+.Standing: ; 4869
call Function462a
call Function467b
ld hl, OBJECT_11
@@ -1041,69 +1041,71 @@ Function4869: ; standing?
ret
; 487c
-Function487c: ; 487c
+.ObeyDPad: ; 487c
ld hl, Function5000
- jp Function5041
+ jp HandleMovementData
; 4882
-Function4882: ; 4882
+.Movement08: ; 4882
ld hl, Function5015
- jp Function5041
+ jp HandleMovementData
; 4888
-Function4888: ; 4888
+.Movement09: ; 4888
ld hl, Function5026
- jp Function5041
+ jp HandleMovementData
; 488e
-Function488e: ; 488e
+.Movement0a: ; 488e
jp Function5037
; 4891
-Function4891: ; 4891
+.Movement0b: ; 4891
jp Function5037
; 4894
-Function4894: ; 4894
+.Movement0c: ; 4894
jp Function5037
; 4897
-Function4897: ; 4897
+.Movement0d: ; 4897
ld hl, Function5000
- jp Function5041
+ jp HandleMovementData
; 489d
-Function489d: ; 489d
+.Movement0e: ; 489d
jp Function5037
; 48a0
-Function48a0: ; 48a0
+.Follow: ; 48a0
ld hl, Function54e6
- jp Function5041
+ jp HandleMovementData
; 48a6
-Function48a6: ; 48a6
- ld hl, Function500e ; scripted
- jp Function5041
+.Script: ; 48a6
+ ld hl, Function500e
+ jp HandleMovementData
; 48ac
-Function48ac: ; 48ac
+.Strength: ; 48ac
call JumptoObjectStructField27
- dw Function48b3
- dw Function48f8
+ dw .Strength_Start
+ dw .Strength_Stop
; 48b3
-Function48b3: ; 48b3
+.Strength_Start: ; 48b3
ld hl, OBJECT_STANDING_TILE
add hl, bc
ld a, [hl]
call CheckPitTile
jr z, .on_pit
+
ld hl, OBJECT_FLAGS2
add hl, bc
bit 2, [hl]
res 2, [hl]
jr z, .ok
+
ld hl, OBJECT_32
add hl, bc
ld a, [hl]
@@ -1112,6 +1114,7 @@ Function48b3: ; 48b3
call Function4690
call Function6ec1
jr c, .ok2
+
ld de, SFX_STRENGTH
call PlaySFX
call Function5538
@@ -1135,23 +1138,26 @@ Function48b3: ; 48b3
; fallthrough
; 48f8
-Function48f8: ; 48f8
+.Strength_Stop: ; 48f8
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
ret
; 48ff
-Function48ff: ; 48ff
+.FollowNotExact: ; 48ff
ld hl, OBJECT_MAP_X
add hl, bc
ld d, [hl]
+
ld hl, OBJECT_MAP_Y
add hl, bc
ld e, [hl]
+
ld hl, OBJECT_32
add hl, bc
ld a, [hl]
+
push bc
call GetObjectStruct
ld hl, OBJECT_DIRECTION_WALKING
@@ -1159,6 +1165,7 @@ Function48ff: ; 48ff
ld a, [hl]
cp STANDING
jr z, .standing
+
ld hl, OBJECT_NEXT_MAP_X
add hl, bc
ld a, [hl]
@@ -1206,7 +1213,7 @@ Function48ff: ; 48ff
ret
; 4958
-Function4958: ; 4958
+.MovementBigStanding: ; 4958
call Function467b
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
@@ -1220,7 +1227,7 @@ Function4958: ; 4958
ret
; 496e
-Function496e: ; 496e
+.MovementBouncing: ; 496e
call Function467b
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
@@ -1234,27 +1241,27 @@ Function496e: ; 496e
ret
; 4984
-Function4984: ; 4984
+.MovementSpinCounterclockwise: ; 4984
call JumptoObjectStructField27
- dw Function4996
- dw Function499c
- dw Function49b8
+ dw .MovementSpinInit
+ dw .MovementSpinRepeat
+ dw .MovementSpinTurnLeft
; 498d
-Function498d: ; 498d
+.MovementSpinClockwise: ; 498d
call JumptoObjectStructField27
- dw Function4996
- dw Function499c
- dw Function49c4
+ dw .MovementSpinInit
+ dw .MovementSpinRepeat
+ dw .MovementSpinTurnRight
; 4996
-Function4996: ; 4996
+.MovementSpinInit: ; 4996
call Function467b
call IncrementObjectStructField27
; fallthrough
; 499c
-Function499c: ; 499c
+.MovementSpinRepeat: ; 499c
ld hl, OBJECT_11
add hl, bc
ld [hl], 1
@@ -1272,27 +1279,27 @@ Function499c: ; 499c
ret
; 49b8
-Function49b8: ; 49b8
- ld de, .DirectionData_49c0
- call Function49d0
- jr Function4984
+.MovementSpinTurnLeft: ; 49b8
+ ld de, .DirectionData_Counterclockwise
+ call .MovementSpinNextFacing
+ jr .MovementSpinCounterclockwise
; 49c0
-.DirectionData_49c0 ; 49c0
+.DirectionData_Counterclockwise ; 49c0
db RIGHT << 2, LEFT << 2, DOWN << 2, UP << 2
; 49c4
-Function49c4: ; 49c4
- ld de, .DirectionData_49cc
- call Function49d0
- jr Function498d
+.MovementSpinTurnRight: ; 49c4
+ ld de, .DirectionData_Clockwise
+ call .MovementSpinNextFacing
+ jr .MovementSpinClockwise
; 49cc
-.DirectionData_49cc ; 49cc
+.DirectionData_Clockwise ; 49cc
db LEFT << 2, RIGHT << 2, UP << 2, DOWN << 2
; 49d0
-Function49d0: ; 49d0
+.MovementSpinNextFacing: ; 49d0
ld hl, OBJECT_FACING
add hl, bc
ld a, [hl]
@@ -1310,8 +1317,8 @@ Function49d0: ; 49d0
ret
; 49e5
-Function49e5: ; 49e5
- call Function4aa8
+.Movement13: ; 49e5
+ call ._Movement13_14_1a_1b
ld hl, OBJECT_11
add hl, bc
ld [hl], $7
@@ -1330,12 +1337,12 @@ Function49e5: ; 49e5
and 3
ld d, $e
cp DOWN
- jr z, .ok
+ jr z, .ok_13
cp UP
- jr z, .ok
+ jr z, .ok_13
ld d, $c
-.ok
+.ok_13
ld hl, OBJECT_SPRITE_Y_OFFSET
add hl, bc
ld [hl], d
@@ -1348,9 +1355,9 @@ Function49e5: ; 49e5
ret
; 4a21
-Function4a21: ; 4a21
+.Movement14: ; 4a21
call Function467b
- call Function4aa8
+ call ._Movement13_14_1a_1b
ld hl, OBJECT_11
add hl, bc
ld [hl], 8
@@ -1369,9 +1376,9 @@ Function4a21: ; 4a21
ret
; 4a46
-Function4a46: ; 4a46
+.Movement1a: ; 4a46
call Function467b
- call Function4aa8
+ call ._Movement13_14_1a_1b
ld hl, OBJECT_11
add hl, bc
ld [hl], $e
@@ -1416,9 +1423,9 @@ endr
db -6, 2
; 4a89
-Function4a89: ; 4a89
+.Movement1b: ; 4a89
call Function467b
- call Function4aa8
+ call ._Movement13_14_1a_1b
ld hl, OBJECT_11
add hl, bc
ld [hl], $f
@@ -1435,7 +1442,7 @@ Function4a89: ; 4a89
ret
; 4aa8
-Function4aa8: ; 4aa8
+._Movement13_14_1a_1b: ; 4aa8
ld hl, OBJECT_32
add hl, bc
ld a, [hl]
@@ -1452,7 +1459,7 @@ Function4aa8: ; 4aa8
ret
; 4abc
-Function4abc: ; 4abc
+.Movement17: ; 4abc
call Function467b
ld hl, OBJECT_11
add hl, bc
@@ -1460,7 +1467,7 @@ Function4abc: ; 4abc
ld hl, OBJECT_32
add hl, bc
ld a, [hl]
- call Function4ade
+ call ._Movement17
ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], e
@@ -1473,7 +1480,7 @@ Function4abc: ; 4abc
ret
; 4ade
-Function4ade: ; 4ade
+._Movement17: ; 4ade
ld d, a
and %00111111
ld e, a
@@ -1491,7 +1498,7 @@ Function4ade: ; 4ade
jr .loop
; 4af0
-Function4af0: ; 4af0
+.RandomWalkContinue: ; 4af0
call Function4690
call Function6ec1
jr c, Function4b17
@@ -1502,13 +1509,13 @@ Function4af0: ; 4af0
ld hl, wd4cf
ld a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .ok
+ jr z, .load_6
ld hl, OBJECT_09
add hl, bc
- ld [hl], $7
+ ld [hl], 7
ret
-.ok
+.load_6
ld hl, OBJECT_09
add hl, bc
ld [hl], 6
@@ -2397,11 +2404,14 @@ UpdateJumpPosition: ; 4fd5
; 5000
Function5000: ; unscripted?
+; copy [wc3de] to [wc2df]
ld a, [wc2de]
ld hl, wc2df
ld [hl], a
- ld a, $3e
+; load [wc2de] with movement_step_sleep_1
+ ld a, movement_step_sleep_1
ld [wc2de], a
+; recover the previous value of [wc2de]
ld a, [hl]
ret
; 500e
@@ -2413,7 +2423,7 @@ Function500e: ; scripted
; 5015
Function5015: ; 5015
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld e, [hl]
inc [hl]
@@ -2428,7 +2438,7 @@ Function5015: ; 5015
; 5026
Function5026: ; 5026
- ld hl, OBJECT_27
+ ld hl, OBJECT_MOVEMENT_BYTE_INDEX
add hl, bc
ld e, [hl]
inc [hl]
@@ -2443,16 +2453,16 @@ Function5026: ; 5026
; 5037
Function5037: ; 5037
- ld hl, Function503d
- jp Function5041
+ ld hl, GetMovementPerson
+ jp HandleMovementData
; 503d
-Function503d: ; 503d
+GetMovementPerson: ; 503d
ld a, [wMovementPerson]
ret
; 5041
-Function5041: ; 5041
+HandleMovementData: ; 5041
call CopyMovementPointer
.loop
xor a
@@ -2481,7 +2491,7 @@ GetMovementByte: ; 505e
jp [hl]
; 5065
-Function5065: ; 5065
+ContinueReadingMovement: ; 5065
ld a, 1
ld [wc2ea], a
ret
@@ -2560,7 +2570,8 @@ Function54e6: ; 54e6
.done
call Function550a
ret c
- ld a, $3e
+
+ ld a, movement_step_sleep_1
ret
; 550a
@@ -2582,7 +2593,7 @@ Function550a: ; 550a
.nope
ld a, $ff
ld [wObjectFollow_Follower], a
- ld a, $47
+ ld a, movement_step_end
scf
ret
; 5529
@@ -2693,6 +2704,7 @@ Function5582: ; 5582
Function55ac: ; 55ac
call FindFirstEmptyObjectStruct
ret nc
+
ld d, h
ld e, l
callba Function8286
@@ -2700,11 +2712,14 @@ Function55ac: ; 55ac
; 55b9
Function55b9: ; 55b9
+; load into wc2f0:
+; -1, -1, [de], [de + 1], [de + 2], [hMapObjectIndexBuffer], [MapX], [MapY], -1
ld hl, wc2f0
ld [hl], -1
inc hl
ld [hl], -1
inc hl
+
ld a, [de]
inc de
ld [hli], a
@@ -2713,8 +2728,10 @@ Function55b9: ; 55b9
ld [hli], a
ld a, [de]
ld [hli], a
+
ld a, [hMapObjectIndexBuffer]
ld [hli], a
+
push hl
ld hl, OBJECT_MAP_X
add hl, bc
@@ -2723,6 +2740,7 @@ Function55b9: ; 55b9
add hl, bc
ld e, [hl]
pop hl
+
ld [hl], d
inc hl
ld [hl], e
@@ -2783,17 +2801,21 @@ Function561d: ; 561d
Function5629: ; 5629
cp NUM_OBJECTS
ret nc
+
call GetMapObject
ld hl, MAPOBJECT_OBJECT_STRUCT_ID
add hl, bc
ld a, [hl]
cp -1
ret z
+
cp NUM_OBJECT_STRUCTS
ret nc
+
call GetObjectStruct
call GetObjectSprite
ret z
+
call Function5673
ret
; 5645
@@ -2923,7 +2945,7 @@ Function56cd: ; 56cd
srl a
srl a
srl a
- cp $14
+ cp SCREEN_WIDTH
jr c, .ok3
sub $20
@@ -2974,9 +2996,9 @@ Function56cd: ; 56cd
.ok7
ld a, d
- ld [$ffbf], a
+ ld [hFFBF], a
.loop
- ld a, [$ffbf]
+ ld a, [hFFBF]
ld d, a
ld a, [hUsedSpriteTile]
add e
@@ -2992,7 +3014,7 @@ Function56cd: ; 56cd
jr nc, .ok8
ld c, a
push bc
- call GetTileCoord
+ call Coord2Tile
pop bc
ld a, [hl]
cp $60
@@ -3163,7 +3185,7 @@ SetFollowerIfVisible: ; 582c
ret c
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
- ld [hl], SPRITEMOVEDATA_13
+ ld [hl], SPRITEMOVEDATA_FOLLOWING
ld hl, OBJECT_09
add hl, bc
ld [hl], 0
@@ -3177,7 +3199,7 @@ ResetFollower: ; 5847
cp -1
ret z
call GetObjectStruct
- callba Function58e3
+ callba Function58e3 ; no need to bankswitch
ld a, -1
ld [wObjectFollow_Follower], a
ret
@@ -3291,16 +3313,19 @@ Function58e3: ; 58e3
add hl, bc
ld a, [hl]
cp -1
- jp z, Function5903
+ jp z, Function5903 ; a jr would have been appropriate here
+
push bc
call GetMapObject
ld hl, MAPOBJECT_MOVEMENT
add hl, bc
ld a, [hl]
pop bc
+
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
+
ld hl, OBJECT_09
add hl, bc
ld [hl], 0
@@ -3319,6 +3344,7 @@ Function5903: ; 5903
ld hl, OBJECT_MOVEMENTTYPE
add hl, bc
ld [hl], a
+
ld hl, OBJECT_09
add hl, bc
ld [hl], 0
@@ -3492,7 +3518,7 @@ Function59f3: ; 59f3
.next
ld a, [hli]
ld d, a
- and %11110000
+ and $f0
ret z
cp c
jr nz, .next
@@ -3500,20 +3526,20 @@ Function59f3: ; 59f3
push bc
push hl
ld a, d
- and %00001111
- call Function5ac2
- call Function5a0d
+ and $f
+ call .GetObjectStructPointer
+ call .asm_5a0d
pop hl
pop bc
jr .next
; 5a0d
-Function5a0d: ; 5a0d
+.asm_5a0d: ; 5a0d
ld hl, OBJECT_SPRITE_TILE
add hl, bc
ld a, [hl]
and %01111111
- ld [$ffc1], a
+ ld [hFFC1], a
xor a
bit 7, [hl]
@@ -3547,7 +3573,7 @@ Function5a0d: ; 5a0d
jr z, .skip4
or %10000000
.skip4
- ld [$ffc2], a
+ ld [hFFC2], a
ld hl, OBJECT_SPRITE_X
add hl, bc
@@ -3562,7 +3588,7 @@ Function5a0d: ; 5a0d
ld e, a
ld a, [wd14c]
add e
- ld [$ffbf], a
+ ld [hFFBF], a
ld hl, OBJECT_SPRITE_Y
add hl, bc
@@ -3577,7 +3603,7 @@ Function5a0d: ; 5a0d
ld e, a
ld a, [wd14d]
add e
- ld [$ffc0], a
+ ld [hFFC0], a
ld hl, OBJECT_FACING_STEP
add hl, bc
@@ -3606,14 +3632,14 @@ Function5a0d: ; 5a0d
jr nc, .full
.addsprite
- ld a, [$ffc0]
+ ld a, [hFFC0]
add [hl]
inc hl
ld [bc], a
inc c
- ld a, [$ffbf]
+ ld a, [hFFBF]
add [hl]
inc hl
@@ -3623,7 +3649,7 @@ Function5a0d: ; 5a0d
ld e, [hl]
inc hl
- ld a, [$ffc1]
+ ld a, [hFFC1]
bit 2, e
jr z, .nope1
xor a
@@ -3637,7 +3663,7 @@ Function5a0d: ; 5a0d
ld a, e
bit 1, a
jr z, .nope2
- ld a, [$ffc2]
+ ld a, [hFFC2]
or e
.nope2
and %11110000
@@ -3662,7 +3688,7 @@ Function5a0d: ; 5a0d
ret
; 5ac2
-Function5ac2: ; 5ac2
+.GetObjectStructPointer: ; 5ac2
ld c, a
ld b, 0
ld hl, .Addresses