diff options
-rw-r--r-- | constants/map_constants.asm | 5 | ||||
-rw-r--r-- | constants/sprite_constants.asm | 48 | ||||
-rw-r--r-- | engine/events.asm | 2 | ||||
-rw-r--r-- | engine/facings.asm | 4 | ||||
-rw-r--r-- | engine/map_objects.asm | 228 | ||||
-rw-r--r-- | engine/movement.asm | 64 | ||||
-rw-r--r-- | engine/scripting.asm | 2 | ||||
-rwxr-xr-x | event/forced_movement.asm | 24 | ||||
-rw-r--r-- | home/map_objects.asm | 2 | ||||
-rw-r--r-- | macros/movement.asm | 22 | ||||
-rw-r--r-- | main.asm | 27 | ||||
-rw-r--r-- | wram.asm | 3 |
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 @@ -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 @@ -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 |