summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants/map_constants.asm5
-rw-r--r--constants/sprite_constants.asm48
-rw-r--r--engine/events.asm2
-rw-r--r--engine/facings.asm4
-rw-r--r--engine/map_objects.asm228
-rw-r--r--engine/movement.asm64
-rw-r--r--engine/scripting.asm2
-rwxr-xr-xevent/forced_movement.asm24
-rw-r--r--home/map_objects.asm2
-rw-r--r--macros/movement.asm22
-rw-r--r--main.asm27
-rw-r--r--wram.asm3
12 files changed, 218 insertions, 213 deletions
diff --git a/constants/map_constants.asm b/constants/map_constants.asm
index 71a877c4c..bdc1319ae 100644
--- a/constants/map_constants.asm
+++ b/constants/map_constants.asm
@@ -530,7 +530,7 @@ const_value SET 1
const OBJECT_STEP_TYPE
const OBJECT_STEP_DURATION
const OBJECT_ACTION
- const OBJECT_12
+ const OBJECT_STEP_FRAME
const OBJECT_FACING_STEP
const OBJECT_NEXT_TILE
const OBJECT_STANDING_TILE
@@ -652,7 +652,10 @@ NUM_SPAWNS EQU const_value
const PALETTE_MORN
const PALETTE_DARK
+INVISIBLE EQU 0
FIXED_FACING EQU 2
+SLIDING EQU 3
+EMOTE_OBJECT EQU 7
const_def
const PERSONTYPE_SCRIPT
diff --git a/constants/sprite_constants.asm b/constants/sprite_constants.asm
index f507ad6f6..438e4cb54 100644
--- a/constants/sprite_constants.asm
+++ b/constants/sprite_constants.asm
@@ -269,20 +269,20 @@ MAX_OUTDOOR_SPRITES EQU 23
const_def
const STEP_TYPE_00
- const STEP_TYPE_01 ; standing
+ const STEP_TYPE_01
const STEP_TYPE_02 ; walking
- const STEP_TYPE_03 ; bumping
+ const STEP_TYPE_03 ; stationary
const STEP_TYPE_04
const STEP_TYPE_05
const STEP_TYPE_06
const STEP_TYPE_07
const STEP_TYPE_08
const STEP_TYPE_09
- const STEP_TYPE_0A
- const STEP_TYPE_0B
- const STEP_TYPE_0C
- const STEP_TYPE_0D
- const STEP_TYPE_0E
+ const STEP_TYPE_0A ; half step
+ const STEP_TYPE_0B ; bump
+ const STEP_TYPE_TELEPORT_FROM
+ const STEP_TYPE_TELEPORT_TO
+ const STEP_TYPE_SKYFALL
const STEP_TYPE_0F
const STEP_TYPE_10
const STEP_TYPE_11
@@ -313,3 +313,37 @@ MAX_OUTDOOR_SPRITES EQU 23
const PERSON_ACTION_0E
const PERSON_ACTION_0F
const PERSON_ACTION_10
+
+ const_def
+ const FACING_00
+ const FACING_01
+ const FACING_02
+ const FACING_03
+ const FACING_04
+ const FACING_05
+ const FACING_06
+ const FACING_07
+ const FACING_08
+ const FACING_09
+ const FACING_0A
+ const FACING_0B
+ const FACING_0C
+ const FACING_0D
+ const FACING_0E
+ const FACING_0F
+ const FACING_10
+ const FACING_11
+ const FACING_12
+ const FACING_13
+ const FACING_14
+ const FACING_15
+ const FACING_16
+ const FACING_17
+ const FACING_18
+ const FACING_19
+ const FACING_1A
+ const FACING_1B
+ const FACING_1C
+ const FACING_1D
+ const FACING_1E
+ const FACING_1F
diff --git a/engine/events.asm b/engine/events.asm
index 8538d9ec9..95c002042 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -245,7 +245,7 @@ Function967d1: ; 967d1
; 967e1
Function967e1: ; 967e1
- callba RefreshMapAppearDisappear
+ callba _UpdateSprites
callba Functiond4d2
callba PlaceMapNameSign
ret
diff --git a/engine/facings.asm b/engine/facings.asm
index 9f516a306..f807e77f8 100644
--- a/engine/facings.asm
+++ b/engine/facings.asm
@@ -185,7 +185,7 @@ Facing21: ; shadow
db 0, 8, 4 | X_FLIP, $fc
; 41a3
-Facing23: ; big doll
+Facing23: ; big snorlax or lapras doll
db 16 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
@@ -221,7 +221,7 @@ Facing27: ; 41f5
db 8, 0, X_FLIP, $07
; 4206
-Facing22: ; 4206
+Facing22: ; big doll other than snorlax or lapras
db 14 ; #
db 0, 0, 0, $00
db 0, 8, 0, $01
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index 0c83b1986..58b0f7493 100644
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -196,7 +196,7 @@ Function43f3: ; 43f3
Function4427: ; 4427
ld hl, OBJECT_FLAGS1
add hl, bc
- bit 0, [hl]
+ bit INVISIBLE, [hl]
jr nz, SetFacingStanding
ld hl, OBJECT_FLAGS2
@@ -214,11 +214,8 @@ Function4427: ; 4427
Function4440: ; 4440
ld hl, OBJECT_FLAGS1
add hl, bc
- bit 0, [hl]
+ bit INVISIBLE, [hl]
jr nz, SetFacingStanding
- ; fallthrough
-; 4448
-
Function4448: ; 4448
ld de, Pointers445f + 2
jr Function444d
@@ -290,10 +287,10 @@ Function44b5: ; 44b5
Function44c1: ; 44c1
ld hl, OBJECT_FLAGS1
add hl, bc
- bit 3, [hl]
+ bit SLIDING, [hl]
jp nz, SetFacingCurrent
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
inc a
@@ -304,6 +301,7 @@ Function44c1: ; 44c1
rrca
and %00000011
ld d, a
+
call GetSpriteDirection
or 0 ; useless
or d
@@ -316,18 +314,21 @@ Function44c1: ; 44c1
Function44e4: ; 44e4
ld hl, OBJECT_FLAGS1
add hl, bc
- bit 3, [hl]
+ bit SLIDING, [hl]
jp nz, SetFacingCurrent
- ld hl, OBJECT_12
+
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
add 2
and %00001111
ld [hl], a
+
rrca
rrca
and %00000011
ld d, a
+
call GetSpriteDirection
or 0 ; useless
or d
@@ -340,17 +341,20 @@ Function44e4: ; 44e4
Function4508: ; 4508
ld hl, OBJECT_FLAGS1
add hl, bc
- bit 3, [hl]
+ bit SLIDING, [hl]
jp nz, SetFacingCurrent
- ld hl, OBJECT_12
+
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
inc [hl]
+
ld a, [hl]
rrca
rrca
rrca
and %00000011
ld d, a
+
call GetSpriteDirection
or 0 ; useless
or d
@@ -378,17 +382,19 @@ Function4539: ; 4539
; 453f
Function453f: ; 453f
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
and %11110000
ld e, a
+
ld a, [hl]
inc a
and %00001111
ld d, a
cp 4
jr c, .ok
+
ld d, 0
ld a, e
add $10
@@ -399,6 +405,7 @@ Function453f: ; 453f
ld a, d
or e
ld [hl], a
+
swap e
ld d, 0
ld hl, .Directions
@@ -428,26 +435,26 @@ Function456e: ; 456e
Function457b: ; 457b
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], $15
+ ld [hl], FACING_15
ret
; 4582
Function4582: ; 4582
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], $14
+ ld [hl], FACING_14
ret
; 4589
Function4589: ; 4589
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], $17
+ ld [hl], FACING_17
ret
; 4590
Function4590: ; 4590
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
inc a
@@ -457,7 +464,7 @@ Function4590: ; 4590
jr z, Function45a4
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], $4
+ ld [hl], FACING_04
ret
; 45a4
@@ -469,7 +476,7 @@ Function45a4: ; 45a4
; 45ab
Function45ab: ; 45ab
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
inc a
@@ -487,18 +494,18 @@ Function45ab: ; 45ab
Function45be: ; 45be
ld hl, OBJECT_FACING_STEP
add hl, bc
- ld [hl], $16
+ ld [hl], FACING_16
ret
; 45c5
Function45c5: ; 45c5
ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS]
- ld d, $17
+ ld d, FACING_17
cp SPRITE_BIG_SNORLAX
jr z, .ok
cp SPRITE_BIG_LAPRAS
jr z, .ok
- ld d, $16
+ ld d, FACING_16
.ok
ld hl, OBJECT_FACING_STEP
@@ -508,7 +515,7 @@ Function45c5: ; 45c5
; 45da
Function45da: ; 45da
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
inc [hl]
ld a, [hl]
@@ -516,25 +523,25 @@ Function45da: ; 45da
ld hl, OBJECT_FACING_STEP
add hl, bc
and 2
- ld a, $1c
+ ld a, FACING_1C
jr z, .ok
- inc a
+ inc a ; FACING_1D
.ok
ld [hl], a
ret
; 45ed
Function45ed: ; 45ed
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
inc [hl]
ld a, [hl]
ld hl, OBJECT_FACING_STEP
add hl, bc
and 4
- ld a, $1e
+ ld a, FACING_1E
jr z, .ok
- inc a
+ inc a ; FACING_1F
.ok
ld [hl], a
@@ -641,7 +648,7 @@ UselessAndA: ; 4679
Function467b: ; 467b
xor a
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], a
ld hl, OBJECT_MOVEMENT_BYTE_INDEX
@@ -1300,7 +1307,7 @@ Function47dd: ; 47dd
; 49e5
.MovementShadow: ; 49e5
- call ._MovementShadow_14_1a_1b
+ call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_07
@@ -1339,7 +1346,7 @@ Function47dd: ; 47dd
.MovementEmote: ; 4a21
call Function467b
- call ._MovementShadow_14_1a_1b
+ call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_08
@@ -1360,7 +1367,7 @@ Function47dd: ; 47dd
.MovementBoulderDust: ; 4a46
call Function467b
- call ._MovementShadow_14_1a_1b
+ call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_0E
@@ -1407,7 +1414,7 @@ endr
.MovementShakingGrass: ; 4a89
call Function467b
- call ._MovementShadow_14_1a_1b
+ call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_0F
@@ -1424,7 +1431,7 @@ endr
ret
; 4aa8
-._MovementShadow_14_1a_1b: ; 4aa8
+._MovementShadow_Grass_Emote_BoulderDust: ; 4aa8
ld hl, OBJECT_RANGE
add hl, bc
ld a, [hl]
@@ -1520,9 +1527,6 @@ RandomStepDuration_Fast: ; 4b26
call Random
ld a, [hRandomAdd]
and %00011111
- ; fallthrough
-; 4b2d
-
SetRandomStepDuration: ; 4b2d
ld hl, OBJECT_STEP_DURATION
add hl, bc
@@ -1630,9 +1634,6 @@ Function4bca: ; 4bca
ld hl, wPlayerStepFlags
set 7, [hl]
call IncrementObjectStructField28
-; fallthrough
-; 4bd2
-
Function4bd2: ; 4bd2
call UpdateJumpPosition
call Function4738
@@ -1656,9 +1657,6 @@ Function4bf2: ; 4bf2
ld hl, wPlayerStepFlags
set 7, [hl]
call IncrementObjectStructField28
-; fallthrough
-; 4bfd
-
Function4bfd: ; 4bfd
call UpdateJumpPosition
call Function4738
@@ -1685,16 +1683,13 @@ Function4c18: ; 4c18
; 4c23
Function4c23: ; 4c23
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], $10
call IncrementObjectStructField28
-; fallthrough
-; 4c32
-
Function4c32: ; 4c32
ld hl, OBJECT_ACTION
add hl, bc
@@ -1708,7 +1703,7 @@ Function4c32: ; 4c32
; 4c42
Function4c42: ; 4c42
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_31
@@ -1721,9 +1716,6 @@ Function4c42: ; 4c42
add hl, bc
res 3, [hl]
call IncrementObjectStructField28
-; fallthrough
-; 4c5d
-
Function4c5d: ; 4c5d
ld hl, OBJECT_ACTION
add hl, bc
@@ -1743,7 +1735,7 @@ Function4c5d: ; 4c5d
add hl, bc
dec [hl]
ret nz
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
@@ -1781,11 +1773,8 @@ Function4caa: ; 4caa
dec [hl]
ret nz
call IncrementObjectStructField28
-; fallthrough
-; 4cb3
-
Function4cb3: ; 4cb3
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_31
@@ -1818,9 +1807,6 @@ Function4cc9: ; 4cc9
dec [hl]
ret nz
call IncrementObjectStructField28
-; fallthrough
-; 4ceb
-
Function4ceb: ; 4ceb
ld hl, OBJECT_STEP_DURATION
add hl, bc
@@ -1837,10 +1823,8 @@ Function4cf5: ; 4cf5
add hl, bc
dec [hl]
ret nz
-; 4d01
-
Function4d01: ; 4d01
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_SPRITE_Y_OFFSET
@@ -1869,9 +1853,6 @@ Function4d1f: ; 4d1f
add hl, bc
ld [hl], $10
call IncrementObjectStructField28
-; fallthrough
-; 4d2e
-
Function4d2e: ; 4d2e
ld hl, OBJECT_STEP_DURATION
add hl, bc
@@ -1880,7 +1861,7 @@ Function4d2e: ; 4d2e
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_02
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_31
@@ -1890,9 +1871,6 @@ Function4d2e: ; 4d2e
add hl, bc
ld [hl], $10
call IncrementObjectStructField28
-; fallthrough
-; 4d4f
-
Function4d4f: ; 4d4f
ld hl, OBJECT_31
add hl, bc
@@ -1910,11 +1888,8 @@ Function4d4f: ; 4d4f
dec [hl]
ret nz
call IncrementObjectStructField28
-; fallthrough
-; 4d6b
-
Function4d6b: ; 4d6b
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_SPRITE_Y_OFFSET
@@ -1941,9 +1916,6 @@ Function4d85: ; 4d85
add hl, bc
ld [hl], 0
call IncrementObjectStructField28
- ; fallthrough
-; 4d94
-
Function4d94: ; 4d94
ld hl, OBJECT_SPRITE_Y_OFFSET
add hl, bc
@@ -2050,9 +2022,6 @@ Function4e13: ; 4e13
add hl, bc
ld [hl], a
call IncrementObjectStructField28
- ; fallthrough
-; 4e21
-
Function4e21: ; 4e21
call Function4fb2
ld hl, OBJECT_DIRECTION_WALKING
@@ -2100,9 +2069,6 @@ Function4e5d: ; 4e5d
ld hl, wPlayerStepFlags
set 7, [hl]
call IncrementObjectStructField28
- ; fallthrough
-; 4e65
-
Function4e65: ; 4e65
call Function4738
ld hl, OBJECT_STEP_DURATION
@@ -2135,7 +2101,7 @@ Function4e8e: ; 4e8e
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld a, [hl]
ld [hl], 2
@@ -2143,18 +2109,12 @@ Function4e8e: ; 4e8e
add hl, bc
ld [hl], 2
call IncrementObjectStructField28
- ; fallthrough
-; 4ea4
-
Function4ea4: ; 4ea4
ld hl, OBJECT_STEP_DURATION
add hl, bc
dec [hl]
ret nz
call IncrementObjectStructField28
- ; fallthrough
-; 4ead
-
Function4ead: ; 4ead
ld hl, OBJECT_29
add hl, bc
@@ -2166,9 +2126,6 @@ Function4ead: ; 4ead
add hl, bc
ld [hl], $2
call IncrementObjectStructField28
- ; fallthrough
-; 4ec0
-
Function4ec0: ; 4ec0
ld hl, OBJECT_STEP_DURATION
add hl, bc
@@ -2260,9 +2217,6 @@ Function4f3a: ; 4f3a
add hl, bc
ld [hl], a
call IncrementObjectStructField28
- ; fallthrough
-; 4f43
-
Function4f43: ; 4f43
ld hl, OBJECT_29
add hl, bc
@@ -2338,7 +2292,7 @@ Function4f99: ; 4f99
ld hl, OBJECT_SPRITE_Y_OFFSET
add hl, bc
ld [hl], $60
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
@@ -2674,7 +2628,7 @@ DespawnEmote: ; 5579
push af
ld hl, OBJECT_FLAGS1
add hl, de
- bit 7, [hl]
+ bit EMOTE_OBJECT, [hl]
jr z, .next
ld hl, OBJECT_SPRITE
add hl, de
@@ -2784,7 +2738,7 @@ Function5602: ; 5602
call Function5629
.ok
- call RefreshMapAppearDisappear
+ call _UpdateSprites
ret
; 561d
@@ -2792,7 +2746,7 @@ Function561d: ; 561d
call Function5645
ld a, 0
call Function5629
- call RefreshMapAppearDisappear
+ call _UpdateSprites
ret
; 5629
@@ -3076,11 +3030,11 @@ Function579d: ; 579d
ld [wc2df], a
xor a
ld [wd04e], a
- ld [PlayerObject12], a
+ ld [PlayerObjectStepFrame], a
call Function57bc
callba CheckWarpCollision
call c, SpawnInFacingDown
- call Function57ca
+ call SpawnInCustomFacing
ret
; 57bc
@@ -3096,7 +3050,7 @@ Function57bc: ; 57bc
ret
; 57ca
-Function57ca: ; 57ca
+SpawnInCustomFacing: ; 57ca
ld hl, wPlayerSpriteSetupFlags
bit 5, [hl]
ret z
@@ -3105,15 +3059,12 @@ Function57ca: ; 57ca
rept 2
add a
endr
- jr Function57db
+ jr ContinueSpawnFacing
; 57d9
SpawnInFacingDown: ; 57d9
ld a, 0
- ; fallthrough
-; 57db
-
-Function57db: ; 57db
+ContinueSpawnFacing: ; 57db
ld bc, PlayerStruct
call SetSpriteDirection
ret
@@ -3355,7 +3306,7 @@ Function5903: ; 5903
db SPRITEMOVEDATA_STANDING_RIGHT
; 5920
-RefreshMapAppearDisappear:: ; 5920
+_UpdateSprites:: ; 5920
ld a, [VramState]
bit 0, a
ret z
@@ -3365,29 +3316,29 @@ RefreshMapAppearDisappear:: ; 5920
push af
ld a, 1
ld [hOAMUpdate], a
- call Function5991
- call Function593a
+ call InitSprites
+ call .fill
pop af
ld [hOAMUpdate], a
ret
; 593a
-Function593a: ; 593a
+.fill: ; 593a
ld a, [VramState]
bit 1, a
- ld b, $a0
+ ld b, SpritesEnd % $100
jr z, .ok
- ld b, $70
+ ld b, 28 * 4
.ok
ld a, [hUsedSpriteIndex]
cp b
ret nc
ld l, a
- ld h, $c4
- ld de, OBJECT_FLAGS1
+ ld h, Sprites / $100
+ ld de, 4
ld a, b
- ld c, $a0
+ ld c, SCREEN_HEIGHT_PX + 16
.loop
ld [hl], c
add hl, de
@@ -3442,26 +3393,29 @@ Function5958: ; 5958
ret
; 5991
-Function5991: ; 5991
- call Function59a4
- ld c, $30
- call Function59f3
- ld c, $20
- call Function59f3
- ld c, $10
- call Function59f3
+InitSprites: ; 5991
+PRIORITY_LOW EQU $10
+PRIORITY_NORM EQU $20
+PRIORITY_HIGH EQU $30
+ call .DeterminePriorities
+ ld c, PRIORITY_HIGH
+ call .InitSpritesByPriority
+ ld c, PRIORITY_NORM
+ call .InitSpritesByPriority
+ ld c, PRIORITY_LOW
+ call .InitSpritesByPriority
ret
; 59a4
-Function59a4: ; 59a4
+.DeterminePriorities: ; 59a4
xor a
- ld hl, wMovementPointer
- ld bc, 13
+ ld hl, wc2eb
+ ld bc, NUM_OBJECT_STRUCTS
call ByteFill
ld d, 0
ld bc, ObjectStructs
- ld hl, wMovementPointer
+ ld hl, wc2eb
.loop
push hl
call GetObjectSprite
@@ -3470,19 +3424,19 @@ Function59a4: ; 59a4
ld hl, OBJECT_FACING_STEP
add hl, bc
ld a, [hl]
- cp -1
+ cp STANDING
jr z, .skip
; Define the sprite priority.
- ld e, $10
+ ld e, PRIORITY_LOW
ld hl, OBJECT_FLAGS2
add hl, bc
bit 0, [hl]
jr nz, .add
- ld e, $20
+ ld e, PRIORITY_NORM
bit 1, [hl]
jr z, .add
- ld e, $30
+ ld e, PRIORITY_HIGH
jr .add
.skip
@@ -3511,28 +3465,28 @@ Function59a4: ; 59a4
ret
; 59f3
-Function59f3: ; 59f3
+.InitSpritesByPriority: ; 59f3
ld hl, wMovementPointer
-.next
+.next_sprite
ld a, [hli]
ld d, a
and $f0
ret z
cp c
- jr nz, .next
+ jr nz, .next_sprite
push bc
push hl
ld a, d
and $f
call .GetObjectStructPointer
- call .asm_5a0d
+ call .InitSprite
pop hl
pop bc
- jr .next
+ jr .next_sprite
; 5a0d
-.asm_5a0d: ; 5a0d
+.InitSprite: ; 5a0d
ld hl, OBJECT_SPRITE_TILE
add hl, bc
ld a, [hl]
diff --git a/engine/movement.asm b/engine/movement.asm
index bce6fdd92..07bdc37c7 100644
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -59,7 +59,7 @@ MovementPointers: ; 5075
dw Movement_39 ; 39
dw Movement_remove_fixed_facing ; 3a
dw Movement_fix_facing ; 3b
- dw Movement_3c ; 3c
+ dw Movement_show_person ; 3c
dw Movement_hide_person ; 3d
dw Movement_step_sleep_1 ; 3e
dw Movement_step_sleep_2 ; 3f
@@ -78,8 +78,8 @@ MovementPointers: ; 5075
dw Movement_teleport_from ; 4c
dw Movement_teleport_to ; 4d
dw Movement_skyfall ; 4e
- dw Movement_step_wait5 ; 4f
- dw Movement_step_bump ; 50
+ dw Movement_step_dig ; 4f
+ dw Movement_step_bump ; 50
dw Movement_fish_got_bite ; 51
dw Movement_fish_cast_rod ; 52
dw Movement_hide_emote ; 53
@@ -87,7 +87,7 @@ MovementPointers: ; 5075
dw Movement_step_shake ; 55
dw Movement_56 ; 56
dw Movement_rock_smash ; 57
- dw Movement_58 ; 58
+ dw Movement_return_dig ; 58
dw Movement_59 ; 59
; 5129
@@ -95,21 +95,21 @@ MovementPointers: ; 5075
Movement_teleport_from: ; 5129
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_0C
+ ld [hl], STEP_TYPE_TELEPORT_FROM
ret
; 5130
Movement_teleport_to: ; 5130
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_0D
+ ld [hl], STEP_TYPE_TELEPORT_TO
ret
; 5137
Movement_skyfall: ; 5137
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_0E
+ ld [hl], STEP_TYPE_SKYFALL
ret
; 513e
@@ -120,11 +120,11 @@ Movement_59: ; 513e
ret
; 5145
-Movement_step_wait5: ; 5145
+Movement_step_dig: ; 5145
call GetSpriteDirection
rlca
rlca
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], a
ld hl, OBJECT_ACTION
@@ -143,11 +143,11 @@ Movement_step_wait5: ; 5145
ret
; 516a
-Movement_58: ; 516a
+Movement_return_dig: ; 516a
call GetSpriteDirection
rlca
rlca
- ld hl, OBJECT_12
+ ld hl, OBJECT_STEP_FRAME
add hl, bc
ld [hl], a
call GetMovementByte
@@ -334,16 +334,19 @@ Movement_step_sleep_common: ; 5247
; 525f
Movement_step_bump: ; 525f
- ld a, $1
+ ld a, 1
ld hl, OBJECT_STEP_DURATION
add hl, bc
ld [hl], a
+
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_0B
+
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_03
+
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
@@ -373,14 +376,14 @@ Movement_56: ; 5279
Movement_38: ; 5293
ld hl, OBJECT_FLAGS1
add hl, bc
- res 3, [hl]
+ res SLIDING, [hl]
jp ContinueReadingMovement
; 529c
Movement_39: ; 529c
ld hl, OBJECT_FLAGS1
add hl, bc
- set 3, [hl]
+ set SLIDING, [hl]
jp ContinueReadingMovement
; 52a5
@@ -398,17 +401,17 @@ Movement_fix_facing: ; 52ae
jp ContinueReadingMovement
; 52b7
-Movement_3c: ; 52b7
+Movement_show_person: ; 52b7
ld hl, OBJECT_FLAGS1
add hl, bc
- res 0, [hl]
+ res INVISIBLE, [hl]
jp ContinueReadingMovement
; 52c0
Movement_hide_person: ; 52c0
ld hl, OBJECT_FLAGS1
add hl, bc
- set 0, [hl]
+ set INVISIBLE, [hl]
jp ContinueReadingMovement
; 52c9
@@ -760,14 +763,14 @@ NormalStep: ; 5412
ld hl, wd4cf
ld a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .asm_543f
+ jr z, .step_type_06
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_02
ret
-.asm_543f
+.step_type_06
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_06
@@ -777,19 +780,22 @@ NormalStep: ; 5412
TurningStep: ; 5446
call Function4690
call Function463f
+
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_04
+
ld hl, wd4cf
ld a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .asm_5461
+ jr z, .step_type_06
+
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_02
ret
-.asm_5461
+.step_type_06
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_06
@@ -800,19 +806,22 @@ TurningStep: ; 5446
SlideStep: ; 5468
call Function4690
call Function463f
+
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_01
+
ld hl, wd4cf
ld a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .asm_5483
+ jr z, .step_type_06
+
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_02
ret
-.asm_5483
+.step_type_06
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_06
@@ -825,23 +834,28 @@ JumpStep: ; 548a
ld hl, OBJECT_31
add hl, bc
ld [hl], $0
+
ld hl, OBJECT_FLAGS2
add hl, bc
res 3, [hl]
+
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_02
+
call SpawnShadow
+
ld hl, wd4cf
ld a, [hMapObjectIndexBuffer]
cp [hl]
- jr z, .asm_54b1
+ jr z, .step_type_09
+
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_08
ret
-.asm_54b1
+.step_type_09
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_09
diff --git a/engine/scripting.asm b/engine/scripting.asm
index 720ea1de4..60618abab 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -1284,7 +1284,7 @@ Script_disappear: ; 0x972ee
ld a, [hMapObjectIndexBuffer]
ld b, 1 ; set
call ApplyEventActionAppearDisappear
- callba RefreshMapAppearDisappear
+ callba _UpdateSprites
ret
; 0x9730b
diff --git a/event/forced_movement.asm b/event/forced_movement.asm
index 89a776d60..b6e6091ff 100755
--- a/event/forced_movement.asm
+++ b/event/forced_movement.asm
@@ -28,41 +28,33 @@ Script_ForcedMovement:: ; 0x1253d
; 0x12564
.MovementData_up: ; 0x12564
- step_wait5
- big_step_down
+ step_dig 16
turn_in_down
- step_wait5
- big_step_down
+ step_dig 16
turn_head_down
step_end
; 0x1256b
.MovementData_down: ; 0x1256b
- step_wait5
- big_step_down
+ step_dig 16
turn_in_up
- step_wait5
- big_step_down
+ step_dig 16
turn_head_up
step_end
; 0x12572
.MovementData_right: ; 0x12572
- step_wait5
- big_step_down
+ step_dig 16
turn_in_left
- step_wait5
- big_step_down
+ step_dig 16
turn_head_left
step_end
; 0x12579
.MovementData_left: ; 0x12579
- step_wait5
- big_step_down
+ step_dig 16
turn_in_right
- step_wait5
- big_step_down
+ step_dig 16
turn_head_right
step_end
; 0x12580
diff --git a/home/map_objects.asm b/home/map_objects.asm
index 1437c1cde..17ea916ab 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -649,7 +649,7 @@ UpdateSprites:: ; 1ad2
bit 0, a
ret z
callba Function55e0
- callba RefreshMapAppearDisappear
+ callba _UpdateSprites
ret
; 1ae5
diff --git a/macros/movement.asm b/macros/movement.asm
index 0b018f7d6..c354b0d5c 100644
--- a/macros/movement.asm
+++ b/macros/movement.asm
@@ -292,10 +292,9 @@ fix_facing: macro
db movement_fix_facing ; $3b
endm
- enum movement_return_dig
-return_dig: macro
- db movement_return_dig
- db \1
+ enum movement_show_person
+show_person: macro
+ db movement_show_person ; $3c
endm
enum movement_hide_person
@@ -354,6 +353,8 @@ step_end: macro
db movement_step_end ; $47
endm
+; Whatever Movement_48 is, it takes a one-byte parameter
+
__enum__ = $49
enum movement_remove_person
@@ -383,9 +384,10 @@ skyfall: macro
db movement_skyfall ; $4e
endm
- enum movement_step_wait5
-step_wait5: macro
- db movement_step_wait5 ; $4f
+ enum movement_step_dig
+step_dig: macro
+ db movement_step_dig ; $4f
+ db \1
endm
enum movement_step_bump
@@ -425,3 +427,9 @@ rock_smash: macro
db movement_rock_smash ; $57
db \1
endm
+
+ enum movement_return_dig
+return_dig: macro
+ db movement_return_dig ; $58
+ db \1
+ endm
diff --git a/main.asm b/main.asm
index 95bedcaa9..f38ab3749 100644
--- a/main.asm
+++ b/main.asm
@@ -1522,7 +1522,7 @@ Function6473: ; 6473
xor a
ld [hBGMapMode], a
ld [hWY], a
- callba Function64db ; no need to callba
+ callba Function64db ; no need to farcall
ld a, VBGMap0 / $100
call Function64b9
xor a
@@ -5571,26 +5571,25 @@ UsedDigOrEscapeRopeScript: ; 0xcc3c
closetext
loadmovesprites
playsound SFX_WARP_TO
- applymovement PLAYER, MovementData_0xcc59
+ applymovement PLAYER, .DigOut
farscall Script_AbortBugContest
special WarpToSpawnPoint
writecode VAR_MOVEMENT, $0
newloadmap MAPSETUP_DOOR
playsound SFX_WARP_FROM
- applymovement PLAYER, MovementData_0xcc5d
+ applymovement PLAYER, .DigReturn
end
; 0xcc59
-MovementData_0xcc59: ; 0xcc59
- step_wait5
- turn_away_down
+.DigOut: ; 0xcc59
+ step_dig 32
hide_person
step_end
; 0xcc5d
-MovementData_0xcc5d: ; 0xcc5d
- return_dig $58
- turn_away_down
+.DigReturn: ; 0xcc5d
+ show_person
+ return_dig 32
step_end
; 0xcc61
@@ -5669,22 +5668,22 @@ Script_UsedTeleport: ; 0xccbb
reloadmappart
loadmovesprites
playsound SFX_WARP_TO
- applymovement PLAYER, MovementData_0xcce1
+ applymovement PLAYER, .TeleportFrom
farscall Script_AbortBugContest
special WarpToSpawnPoint
writecode VAR_MOVEMENT, $0
newloadmap MAPSETUP_TELEPORT
playsound SFX_WARP_FROM
- applymovement PLAYER, MovementData_0xcce3
+ applymovement PLAYER, .TeleportTo
end
; 0xcce1
-MovementData_0xcce1: ; cce1
+.TeleportFrom: ; cce1
teleport_from
step_end
; cce3
-MovementData_0xcce3: ; cce3
+.TeleportTo: ; cce3
teleport_to
step_end
; cce5
@@ -50690,7 +50689,7 @@ LoadMapTimeOfDay: ; 104750
ret
Function104770: ; 104770 (41:4770)
- ld a, $98
+ ld a, VBGMap0 / $100
ld [wBGMapAnchor + 1], a
xor a
ld [wBGMapAnchor], a
diff --git a/wram.asm b/wram.asm
index 5d5d861ff..149c40cba 100644
--- a/wram.asm
+++ b/wram.asm
@@ -325,6 +325,7 @@ wMovementPerson:: ds 1
wMovementDataPointer:: ds 3 ; dba
wc2e6:: ds 4
wc2ea:: ds 1
+wc2eb::
wMovementPointer:: ds 2 ; c2eb
ds 3
@@ -2219,7 +2220,7 @@ object_struct: MACRO
\1StepType:: ds 1
\1StepDuration:: ds 1
\1Action:: ds 1
-\1Object12:: ds 1
+\1ObjectStepFrame:: ds 1
\1Facing:: ds 1
\1NextTile:: ds 1 ; collision
\1StandingTile:: ds 1 ; collision