diff options
Diffstat (limited to 'engine/map_objects.asm')
-rw-r--r-- | engine/map_objects.asm | 996 |
1 files changed, 212 insertions, 784 deletions
diff --git a/engine/map_objects.asm b/engine/map_objects.asm index cd272bdc9..ce83ba9f2 100644 --- a/engine/map_objects.asm +++ b/engine/map_objects.asm @@ -2,53 +2,9 @@ INCLUDE "engine/facings.asm" SpriteMovementData:: ; 4273 +INCLUDE "data/map_objects.asm" -sprite_movement_data: macro - db \1, \2, \3, \4, \5 - dn \6, 0 - endm - ; function, facing, action, flags1, flags2, palette flags - sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 00 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 01 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 02 - sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 03 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 04 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 05 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 06 - sprite_movement_data SPRITEMOVEFN_STANDING, UP, PERSON_ACTION_STAND, $00, $00, %0000 ; 07 - sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 08 - sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 09 - sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0a - sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 0b - sprite_movement_data SPRITEMOVEFN_08, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0c - sprite_movement_data SPRITEMOVEFN_09, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0d - sprite_movement_data SPRITEMOVEFN_0A, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0e - sprite_movement_data SPRITEMOVEFN_0B, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 0f - sprite_movement_data SPRITEMOVEFN_0C, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 10 - sprite_movement_data SPRITEMOVEFN_0D, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 11 - sprite_movement_data SPRITEMOVEFN_0E, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 12 - sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 13 - sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 14 - sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, PERSON_ACTION_09, $2e, $01, %1100 ; 15 - sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, PERSON_ACTION_0A, $2e, $00, %0000 ; 16 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $0c, $00, %0000 ; 17 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, PERSON_ACTION_STAND, $2e, $10, %0000 ; 18 - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_STAND, $2e, $00, %0100 ; 19 - sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, PERSON_ACTION_STAND, $02, $00, %0000 ; 1a - sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, PERSON_ACTION_00, $8e, $01, %0000 ; 1b - sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, PERSON_ACTION_EMOTE, $8e, $02, %0000 ; 1c - sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, PERSON_ACTION_00, $82, $00, %0000 ; 1d - sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1e - sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, PERSON_ACTION_STAND, $00, $00, %0000 ; 1f - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0C, $2e, $01, %1100 ; 20 - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, PERSON_ACTION_0D, $2e, $01, %1100 ; 21 - sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, PERSON_ACTION_0E, $8e, $01, %0000 ; 22 - sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, PERSON_ACTION_0F, $8e, $02, %0000 ; 23 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, PERSON_ACTION_STAND, $00, $00, %0010 ; 24 - sprite_movement_data SPRITEMOVEFN_00, DOWN, PERSON_ACTION_STAND, $00, $00, %0000 ; 25 ; 4357 - - DeleteMapObject:: ; 4357 push bc ld hl, OBJECT_MAP_OBJECT_INDEX @@ -69,7 +25,6 @@ DeleteMapObject:: ; 4357 ld hl, OBJECT_SPRITE add hl, bc ld [hl], -1 - .ok pop bc ret @@ -78,12 +33,11 @@ DeleteMapObject:: ; 4357 Function437b: ; 437b call .CheckObjectStillVisible ret c - call Function43f3 - call Function4427 + call .HandleStepType + call .HandleObjectAction ret -; 4386 -.CheckObjectStillVisible: ; 4386 +.CheckObjectStillVisible ld hl, OBJECT_FLAGS2 add hl, bc res 6, [hl] @@ -133,7 +87,6 @@ Function437b: ; 437b jr c, .ok2 cp MAPOBJECT_SCREEN_HEIGHT jr nc, .ok2 - .yes and a ret @@ -153,23 +106,20 @@ Function437b: ; 437b set 6, [hl] and a ret -; 43f3 -Function43f3: ; 43f3 +.HandleStepType ld hl, OBJECT_STEP_TYPE add hl, bc ld a, [hl] and a jr z, .zero - ld hl, OBJECT_FLAGS2 add hl, bc bit 5, [hl] jr nz, .bit5 - cp STEP_TYPE_SLEEP jr z, .one - jr .ok + jr .ok3 .zero call ObjectMovementReset @@ -177,10 +127,8 @@ Function43f3: ; 43f3 add hl, bc bit 5, [hl] jr nz, .bit5 - .one call MapObjectMovementPattern - ld hl, OBJECT_STEP_TYPE add hl, bc ld a, [hl] @@ -188,32 +136,27 @@ Function43f3: ; 43f3 ret z cp STEP_TYPE_SLEEP ret z - -.ok +.ok3 ld hl, Pointers4b45 rst JumpTable ret .bit5 ret -; 4427 -Function4427: ; 4427 +.HandleObjectAction ld hl, OBJECT_FLAGS1 add hl, bc bit INVISIBLE, [hl] jr nz, SetFacingStanding - ld hl, OBJECT_FLAGS2 add hl, bc bit 6, [hl] jr nz, SetFacingStanding - bit 5, [hl] - jr nz, Function4448 - - ld de, Pointers445f - jr Function444d + jr nz, asm_4448 + ld de, Pointers445f ; use first column + jr asm_444d ; 4440 Function4440: ; 4440 @@ -221,385 +164,55 @@ Function4440: ; 4440 add hl, bc bit INVISIBLE, [hl] jr nz, SetFacingStanding -Function4448: ; 4448 +asm_4448 ; use second column ld de, Pointers445f + 2 - jr Function444d + jr asm_444d ; 444d -Function444d: ; 444d +asm_444d ; call [4 * ObjectStructs[ObjInd, OBJECT_ACTION] + de] - ld hl, OBJECT_ACTION - add hl, bc - ld a, [hl] - ld l, a - ld h, 0 - add hl,hl - add hl,hl - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - call _hl_ - ret -; 445f - -Pointers445f: ; 445f - dw SetFacingStanding, SetFacingStanding ; 00 - dw Function44b5, SetFacingCurrent ; 01 standing? - dw Function44c1, SetFacingCurrent ; 02 walking? - dw Function4508, SetFacingCurrent ; 03 bumping? - dw Function4529, SetFacingCurrent ; 04 - dw Function4539, SetFacingStanding ; 05 - dw Function456e, Function456e ; 06 - dw Function457b, SetFacingStanding ; 07 - dw Function4582, Function4582 ; 08 - dw Function4589, Function4589 ; 09 - dw Function4590, Function45a4 ; 0a - dw Function45ab, SetFacingCurrent ; 0c - dw Function45be, Function45be ; 0b - dw Function45c5, Function45c5 ; 0d - dw Function45da, SetFacingStanding ; 0e - dw Function45ed, SetFacingStanding ; 0f - dw Function44e4, SetFacingCurrent ; 10 -; 44a3 - -SetFacingStanding: ; 44a3 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], STANDING - ret -; 44aa - -SetFacingCurrent: ; 44aa - call GetSpriteDirection - or 0 ; useless - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], a - ret -; 44b5 - -Function44b5: ; 44b5 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld a, [hl] - and 1 - jr nz, Function44c1 - jp SetFacingCurrent -; 44c1 - -Function44c1: ; 44c1 - ld hl, OBJECT_FLAGS1 - add hl, bc - bit SLIDING, [hl] - jp nz, SetFacingCurrent - - ld hl, OBJECT_STEP_FRAME - add hl, bc - ld a, [hl] - inc a - and %00001111 - ld [hl], a - - rrca - rrca - and %00000011 - ld d, a - - call GetSpriteDirection - or 0 ; useless - or d - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], a - ret -; 44e4 - -Function44e4: ; 44e4 - ld hl, OBJECT_FLAGS1 - add hl, bc - bit SLIDING, [hl] - jp nz, SetFacingCurrent - - 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 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], a - ret -; 4508 - -Function4508: ; 4508 - ld hl, OBJECT_FLAGS1 - add hl, bc - bit SLIDING, [hl] - jp nz, SetFacingCurrent - - 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 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], a - ret -; 4529 - -Function4529: ; 4529 - call Function453f - ld hl, OBJECT_FACING - add hl, bc - ld a, [hl] - or 0 ; useless - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], a - ret -; 4539 - -Function4539: ; 4539 - call Function453f - jp SetFacingStanding -; 453f - -Function453f: ; 453f - 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 - and %00110000 - ld e, a - -.ok - ld a, d - or e - ld [hl], a - - swap e - ld d, 0 - ld hl, .Directions - add hl, de - ld a, [hl] - ld hl, OBJECT_FACING - add hl, bc - ld [hl], a - ret -; 456a - -.Directions ; 456a - db OW_DOWN, OW_RIGHT, OW_UP, OW_LEFT -; 456e - -Function456e: ; 456e - call GetSpriteDirection - rrca - rrca - add $10 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], a - ret -; 457b - -Function457b: ; 457b - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], FACING_15 - ret -; 4582 - -Function4582: ; 4582 emote - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], FACING_EMOTE - ret -; 4589 - -Function4589: ; 4589 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], FACING_17 - ret -; 4590 - -Function4590: ; 4590 - ld hl, OBJECT_STEP_FRAME - add hl, bc - ld a, [hl] - inc a - and %00001111 - ld [hl], a - and %00001000 - jr z, Function45a4 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], FACING_04 - ret -; 45a4 - -Function45a4: ; 45a4 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], 0 - ret -; 45ab - -Function45ab: ; 45ab - ld hl, OBJECT_STEP_FRAME - add hl, bc - ld a, [hl] - inc a - ld [hl], a - and %00001100 - rrca - rrca - add $18 - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], a - ret -; 45be - -Function45be: ; 45be - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], FACING_16 - ret -; 45c5 - -Function45c5: ; 45c5 - ld a, [VariableSprites + SPRITE_BIG_DOLL - SPRITE_VARS] - ld d, FACING_17 - cp SPRITE_BIG_SNORLAX - jr z, .ok - cp SPRITE_BIG_LAPRAS - jr z, .ok - ld d, FACING_16 - -.ok - ld hl, OBJECT_FACING_STEP - add hl, bc - ld [hl], d - ret -; 45da - -Function45da: ; 45da - ld hl, OBJECT_STEP_FRAME - add hl, bc - inc [hl] - ld a, [hl] - - ld hl, OBJECT_FACING_STEP - add hl, bc - and 2 - ld a, FACING_1C - jr z, .ok - inc a ; FACING_1D -.ok - ld [hl], a - ret -; 45ed - -Function45ed: ; 45ed - 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, FACING_1E - jr z, .ok - inc a ; FACING_1F - -.ok - ld [hl], a - ret -; 4600 +INCLUDE "engine/map_object_action.asm" CopyNextCoordsTileToStandingCoordsTile: ; 4600 - ld hl, OBJECT_NEXT_MAP_X add hl, bc ld a, [hl] ld hl, OBJECT_MAP_X add hl, bc ld [hl], a - ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld a, [hl] ld hl, OBJECT_MAP_Y add hl, bc ld [hl], a - ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] ld hl, OBJECT_STANDING_TILE add hl, bc ld [hl], a - call SetTallGrassFlags ld hl, OBJECT_NEXT_TILE add hl, bc ld a, [hl] - call UselessAndA ret ; 462a Function462a: ; 462a - ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] ld hl, OBJECT_NEXT_MAP_X add hl, bc ld [hl], a - ld hl, OBJECT_MAP_Y add hl, bc ld a, [hl] ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld [hl], a - ret ; 463f @@ -612,7 +225,6 @@ UpdateTallGrassFlags: ; 463f add hl, bc ld a, [hl] call SetTallGrassFlags - .ok ld hl, OBJECT_NEXT_TILE add hl, bc @@ -631,7 +243,6 @@ SetTallGrassFlags: ; 4661 jr z, .set call CheckGrassTile jr c, .reset - .set ld hl, OBJECT_FLAGS2 add hl, bc @@ -683,11 +294,9 @@ InitStep: ; 4690 ld [hl], a GetNextTile: ; 46a6 call GetStepVector - ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], a - ld a, d call GetStepVectorSign ld hl, OBJECT_MAP_X @@ -697,7 +306,6 @@ GetNextTile: ; 46a6 add hl, bc ld [hl], a ld d, a - ld a, e call GetStepVectorSign ld hl, OBJECT_MAP_Y @@ -707,34 +315,27 @@ GetNextTile: ; 46a6 add hl, bc ld [hl], a ld e, a - push bc call GetCoordTile pop bc - ld hl, OBJECT_NEXT_TILE add hl, bc ld [hl], a - ret ; 46d7 AddStepVector: ; 46d7 - call GetStepVector - ld hl, OBJECT_SPRITE_X add hl, bc ld a, [hl] add d ld [hl], a - ld hl, OBJECT_SPRITE_Y add hl, bc ld a, [hl] add e ld [hl], a - ret ; 46e9 @@ -777,18 +378,14 @@ StepVectors: ; 4700 db -4, 0, 4, 4 db 4, 0, 4, 4 ; 4730 - GetStepVectorSign: ; 4730 add a ret z ; 0 or 128 - ld a, 1 ret nc ; 1 - 127 - ld a, -1 ret ; 129 - 255 ; 4738 - UpdatePlayerStep: ; 4738 ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -808,6 +405,7 @@ UpdatePlayerStep: ; 4738 ; 4759 Function4759: ; 4759 +; unreferenced push bc ld e, a ld d, 0 @@ -836,7 +434,7 @@ RestoreDefaultMovement: ; 4769 ret .ok - ld a, 6 + ld a, SPRITEMOVEFN_STANDING ret ; 4780 @@ -885,7 +483,6 @@ IncrementObjectStructField28: ; 47a2 ; 47a8 Object28AnonymousJumptable: ; 47a8 -; anonymous dw ld hl, OBJECT_28 add hl, bc ld a, [hl] @@ -936,10 +533,8 @@ MapObjectMovementPattern: ; 47dd ld hl, .Pointers rst JumpTable ret -; 47e9 .Pointers ; 47e9 - dw .Null_00 ; 00 dw .RandomWalkY ; 01 dw .RandomWalkX ; 02 @@ -968,35 +563,30 @@ MapObjectMovementPattern: ; 47dd dw .MovementSpinCounterclockwise ; 19 dw .MovementBoulderDust ; 1a dw .MovementShakingGrass ; 1b -; 4821 -.Null_00: ; 4821 +.Null_00 ret -; 4822 -.RandomWalkY: ; 4822 +.RandomWalkY call Random ld a, [hRandomAdd] and %00000001 jp .RandomWalkContinue -; 482c -.RandomWalkX: ; 482c +.RandomWalkX call Random ld a, [hRandomAdd] and %00000001 or %00000010 jp .RandomWalkContinue -; 4838 -.RandomWalkXY: ; 4838 +.RandomWalkXY call Random ld a, [hRandomAdd] and %00000011 jp .RandomWalkContinue -; 4842 -.RandomSpin1: ; 4842 +.RandomSpin1 call Random ld a, [hRandomAdd] and %00001100 @@ -1004,9 +594,8 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], a jp RandomStepDuration_Slow -; 4851 -.RandomSpin2: ; 4851 +.RandomSpin2 ld hl, OBJECT_FACING add hl, bc ld a, [hl] @@ -1018,13 +607,11 @@ MapObjectMovementPattern: ; 47dd cp d jr nz, .keep xor %00001100 - .keep ld [hl], a jp RandomStepDuration_Fast -; 4869 -.Standing: ; 4869 +.Standing call Function462a call EndSpriteMovement ld hl, OBJECT_ACTION @@ -1034,73 +621,59 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_05 ret -; 487c -.ObeyDPad: ; 487c +.ObeyDPad ld hl, Function5000 jp HandleMovementData -; 4882 -.Movement08: ; 4882 +.Movement08 ld hl, Function5015 jp HandleMovementData -; 4888 -.Movement09: ; 4888 +.Movement09 ld hl, Function5026 jp HandleMovementData -; 488e -.Movement0a: ; 488e - jp Function5037 -; 4891 +.Movement0a + jp _GetMovementPerson -.Movement0b: ; 4891 - jp Function5037 -; 4894 +.Movement0b + jp _GetMovementPerson -.Movement0c: ; 4894 - jp Function5037 -; 4897 +.Movement0c + jp _GetMovementPerson -.Movement0d: ; 4897 +.Movement0d ld hl, Function5000 jp HandleMovementData -; 489d -.Movement0e: ; 489d - jp Function5037 -; 48a0 +.Movement0e + jp _GetMovementPerson -.Follow: ; 48a0 - ld hl, Function54e6 +.Follow + ld hl, GetFollowerNextMovementByte jp HandleMovementData -; 48a6 -.Script: ; 48a6 - ld hl, Function500e +.Script + ld hl, GetMovementByte jp HandleMovementData -; 48ac -.Strength: ; 48ac +.Strength call MovementAnonymousJumptable dw .Strength_Start dw .Strength_Stop -; 48b3 -.Strength_Start: ; 48b3 +.Strength_Start ld hl, OBJECT_NEXT_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_RANGE add hl, bc ld a, [hl] @@ -1109,7 +682,6 @@ MapObjectMovementPattern: ; 47dd call InitStep call Function6ec1 jr c, .ok2 - ld de, SFX_STRENGTH call PlaySFX call SpawnStrengthBoulderDust @@ -1121,7 +693,6 @@ MapObjectMovementPattern: ; 47dd .ok2 call Function462a - .ok ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -1130,27 +701,22 @@ MapObjectMovementPattern: ; 47dd .on_pit call IncrementObjectMovementByteIndex - -.Strength_Stop: ; 48f8 +.Strength_Stop ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING ret -; 48ff -.FollowNotExact: ; 48ff +.FollowNotExact ld hl, OBJECT_NEXT_MAP_X add hl, bc ld d, [hl] - ld hl, OBJECT_NEXT_MAP_Y add hl, bc ld e, [hl] - ld hl, OBJECT_RANGE add hl, bc ld a, [hl] - push bc call GetObjectStruct ld hl, OBJECT_DIRECTION_WALKING @@ -1158,7 +724,6 @@ MapObjectMovementPattern: ; 47dd ld a, [hl] cp STANDING jr z, .standing - ld hl, OBJECT_MAP_X add hl, bc ld a, [hl] @@ -1184,7 +749,6 @@ MapObjectMovementPattern: ; 47dd .less2 ld a, 1 - .done ld d, a ld hl, OBJECT_DIRECTION_WALKING @@ -1204,9 +768,8 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], PERSON_ACTION_STAND ret -; 4958 -.MovementBigStanding: ; 4958 +.MovementBigStanding call EndSpriteMovement ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -1218,9 +781,8 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_04 ret -; 496e -.MovementBouncing: ; 496e +.MovementBouncing call EndSpriteMovement ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -1232,26 +794,23 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_04 ret -; 4984 -.MovementSpinCounterclockwise: ; 4984 +.MovementSpinCounterclockwise call MovementAnonymousJumptable dw .MovementSpinInit dw .MovementSpinRepeat dw .MovementSpinTurnLeft -; 498d -.MovementSpinClockwise: ; 498d +.MovementSpinClockwise call MovementAnonymousJumptable dw .MovementSpinInit dw .MovementSpinRepeat dw .MovementSpinTurnRight -; 4996 -.MovementSpinInit: ; 4996 +.MovementSpinInit call EndSpriteMovement call IncrementObjectMovementByteIndex -.MovementSpinRepeat: ; 499c +.MovementSpinRepeat ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_STAND @@ -1267,29 +826,24 @@ MapObjectMovementPattern: ; 47dd ld [hl], STEP_TYPE_03 call IncrementObjectMovementByteIndex ret -; 49b8 -.MovementSpinTurnLeft: ; 49b8 +.MovementSpinTurnLeft ld de, .DirectionData_Counterclockwise call .MovementSpinNextFacing jr .MovementSpinCounterclockwise -; 49c0 .DirectionData_Counterclockwise ; 49c0 db OW_RIGHT, OW_LEFT, OW_DOWN, OW_UP -; 49c4 -.MovementSpinTurnRight: ; 49c4 +.MovementSpinTurnRight ld de, .DirectionData_Clockwise call .MovementSpinNextFacing jr .MovementSpinClockwise -; 49cc .DirectionData_Clockwise ; 49cc db OW_LEFT, OW_RIGHT, OW_UP, OW_DOWN -; 49d0 -.MovementSpinNextFacing: ; 49d0 +.MovementSpinNextFacing ld hl, OBJECT_FACING add hl, bc ld a, [hl] @@ -1305,9 +859,8 @@ MapObjectMovementPattern: ; 47dd ld [hl], a call DecrementObjectMovementByteIndex ret -; 49e5 -.MovementShadow: ; 49e5 +.MovementShadow call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION add hl, bc @@ -1331,7 +884,6 @@ MapObjectMovementPattern: ; 47dd cp UP jr z, .ok_13 ld d, 1 * 8 + 4 - .ok_13 ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc @@ -1343,9 +895,8 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_TRACKING_OBJECT ret -; 4a21 -.MovementEmote: ; 4a21 +.MovementEmote call EndSpriteMovement call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION @@ -1364,9 +915,8 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_TRACKING_OBJECT ret -; 4a46 -.MovementBoulderDust: ; 4a46 +.MovementBoulderDust call EndSpriteMovement call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION @@ -1387,8 +937,8 @@ MapObjectMovementPattern: ; 47dd ld e, a ld d, 0 ld hl, .data_4a81 - add hl,de - add hl,de + add hl, de + add hl, de ld d, [hl] inc hl ld e, [hl] @@ -1402,7 +952,6 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_TRACKING_OBJECT ret -; 4a81 .data_4a81 ; 4a81 ; x, y @@ -1410,9 +959,8 @@ MapObjectMovementPattern: ; 47dd db 0, 8 db 6, 2 db -6, 2 -; 4a89 -.MovementShakingGrass: ; 4a89 +.MovementShakingGrass call EndSpriteMovement call ._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_ACTION @@ -1429,9 +977,8 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_TRACKING_OBJECT ret -; 4aa8 -._MovementShadow_Grass_Emote_BoulderDust: ; 4aa8 +._MovementShadow_Grass_Emote_BoulderDust ld hl, OBJECT_RANGE add hl, bc ld a, [hl] @@ -1446,9 +993,8 @@ MapObjectMovementPattern: ; 47dd inc hl ld [hl], d ret -; 4abc -.MovementScreenShake: ; 4abc +.MovementScreenShake call EndSpriteMovement ld hl, OBJECT_ACTION add hl, bc @@ -1467,9 +1013,8 @@ MapObjectMovementPattern: ; 47dd add hl, bc ld [hl], STEP_TYPE_15 ret -; 4ade -._MovementScreenShake: ; 4ade +._MovementScreenShake ld d, a and %00111111 ld e, a @@ -1485,23 +1030,19 @@ MapObjectMovementPattern: ; 47dd ret z add a jr .loop -; 4af0 -.RandomWalkContinue: ; 4af0 +.RandomWalkContinue call InitStep call Function6ec1 ; check whether the object can move in that direction jr c, .NewDuration - call UpdateTallGrassFlags ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_STEP - ld hl, wCenteredObject ld a, [hMapObjectIndexBuffer] cp [hl] jr z, .load_6 - ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_07 @@ -1513,7 +1054,7 @@ MapObjectMovementPattern: ; 47dd ld [hl], STEP_TYPE_PLAYER_WALK ret -.NewDuration: ; 4b17 +.NewDuration call EndSpriteMovement call Function462a RandomStepDuration_Slow: ; 4b1d @@ -1545,36 +1086,35 @@ SetRandomStepDuration: ; 4b2d Pointers4b45: ; 4b45 ; These pointers use OBJECT_STEP_TYPE. See constants/sprite_constants.asm - dw ObjectMovementReset ; 00 - dw MapObjectMovementPattern ; 01 + dw MapObjectMovementPattern ; unused dw NPCStep ; 02 npc walk - dw Function4ddd ; 03 - dw Function4e21 ; 04 - dw Function4e0c ; 05 + dw StepType03 ; 03 + dw StepType04 ; 04 + dw StepType05 ; 05 dw PlayerStep ; 06 player walk - dw Function4e47 ; 07 + dw StepType07 ; 07 dw NPCJump ; 08 npc jump step dw PlayerJump ; 09 player jump step - dw PlayerOrNPCHalfStep ; 0a half step - dw Function4dff ; 0b + dw PlayerOrNPCTurnStep ; 0a half step + dw StepTypeBump ; 0b dw TeleportFrom ; 0c teleport from dw TeleportTo ; 0d teleport to dw Skyfall ; 0e skyfall - dw Function4ecd ; 0f + dw StepType0f ; 0f dw GotBiteStep ; 10 dw RockSmashStep ; 11 dw ReturnDigStep ; 12 - dw Function4f04 ; 13 - dw Function4f33 ; 14 - dw Function4f33 ; 15 - dw Function4f77 ; 16 - dw Function4f7a ; 17 - dw Function4df0 ; 18 + dw StepTypeTrackingObject ; 13 + dw StepType14 ; 14 + dw StepType15 ; 15 + dw StepType16 ; 16 + dw StepType17 ; 17 + dw StepType18 ; 18 dw SkyfallTop ; 19 ; 4b79 -Function4b79: ; 4b79 +WaitStep_InPlace: ; 4b79 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -1588,11 +1128,10 @@ Function4b79: ; 4b79 NPCJump: ; 4b86 call Object28AnonymousJumptable ; anonymous dw - dw Function4b8d - dw Function4ba9 -; 4b8d + dw .Jump + dw .Land -Function4b8d: ; 4b8d +.Jump call AddStepVector call UpdateJumpPosition ld hl, OBJECT_STEP_DURATION @@ -1606,9 +1145,8 @@ Function4b8d: ; 4b8d res 3, [hl] call IncrementObjectStructField28 ret -; 4ba9 -Function4ba9: ; 4ba9 +.Land call AddStepVector call UpdateJumpPosition ld hl, OBJECT_STEP_DURATION @@ -1629,13 +1167,12 @@ PlayerJump: ; 4bbf dw .stepjump dw .initland dw .stepland -; 4bca -.initjump: ; 4bca +.initjump ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -.stepjump: ; 4bd2 +.stepjump call UpdateJumpPosition call UpdatePlayerStep ld hl, OBJECT_STEP_DURATION @@ -1651,14 +1188,13 @@ PlayerJump: ; 4bbf set 4, [hl] call IncrementObjectStructField28 ret -; 4bf2 -.initland: ; 4bf2 +.initland call GetNextTile ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -.stepland: ; 4bfd +.stepland call UpdateJumpPosition call UpdatePlayerStep ld hl, OBJECT_STEP_DURATION @@ -1677,21 +1213,21 @@ PlayerJump: ; 4bbf TeleportFrom: ; 4c18 call Object28AnonymousJumptable ; anonymous dw - dw Function4c23 - dw Function4c32 - dw Function4c42 - dw Function4c5d + dw .InitSpin + dw .DoSpin + dw .InitSpinRise + dw .DoSpinRise ; 4c23 -Function4c23: ; 4c23 +.InitSpin ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 call IncrementObjectStructField28 -Function4c32: ; 4c32 +.DoSpin ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_SPIN @@ -1701,9 +1237,8 @@ Function4c32: ; 4c32 ret nz call IncrementObjectStructField28 ret -; 4c42 -Function4c42: ; 4c42 +.InitSpinRise ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 @@ -1712,12 +1247,12 @@ Function4c42: ; 4c42 ld [hl], $10 ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 ld hl, OBJECT_FLAGS2 add hl, bc res 3, [hl] call IncrementObjectStructField28 -Function4c5d: ; 4c5d +.DoSpinRise ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_SPIN @@ -1748,33 +1283,33 @@ Function4c5d: ; 4c5d TeleportTo: ; 4c89 call Object28AnonymousJumptable ; anonymous dw - dw Function4c9a - dw Function4caa - dw Function4cb3 - dw Function4cc9 - dw Function4ceb - dw Function4cf5 - dw Function4d01 + dw .InitWait + dw .DoWait + dw .InitDescent + dw .DoDescent + dw .InitFinalSpin + dw .DoFinalSpin + dw .FinishStep ; 4c9a -Function4c9a: ; 4c9a +.InitWait ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_00 ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 call IncrementObjectStructField28 ret ; 4caa -Function4caa: ; 4caa +.DoWait ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz call IncrementObjectStructField28 -Function4cb3: ; 4cb3 +.InitDescent ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 @@ -1783,12 +1318,12 @@ Function4cb3: ; 4cb3 ld [hl], 0 ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 call IncrementObjectStructField28 ret ; 4cc9 -Function4cc9: ; 4cc9 +.DoDescent ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_SPIN @@ -1808,15 +1343,15 @@ Function4cc9: ; 4cc9 dec [hl] ret nz call IncrementObjectStructField28 -Function4ceb: ; 4ceb +.InitFinalSpin ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 call IncrementObjectStructField28 ret ; 4cf5 -Function4cf5: ; 4cf5 +.DoFinalSpin ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_SPIN @@ -1824,7 +1359,7 @@ Function4cf5: ; 4cf5 add hl, bc dec [hl] ret nz -Function4d01: ; 4d01 +.FinishStep ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 @@ -1840,21 +1375,21 @@ Function4d01: ; 4d01 Skyfall: ; 4d14 call Object28AnonymousJumptable ; anonymous dw - dw Function4d1f - dw Function4d2e - dw Function4d4f - dw Function4d6b + dw .Init + dw .Step + dw .Fall + dw .Finish ; 4d1f -Function4d1f: ; 4d1f +.Init ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_00 ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 call IncrementObjectStructField28 -Function4d2e: ; 4d2e +.Step ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -1870,9 +1405,9 @@ Function4d2e: ; 4d2e ld [hl], 0 ld hl, OBJECT_STEP_DURATION add hl, bc - ld [hl], $10 + ld [hl], 16 call IncrementObjectStructField28 -Function4d4f: ; 4d4f +.Fall ld hl, OBJECT_31 add hl, bc inc [hl] @@ -1889,7 +1424,7 @@ Function4d4f: ; 4d4f dec [hl] ret nz call IncrementObjectStructField28 -Function4d6b: ; 4d6b +.Finish ld hl, OBJECT_STEP_FRAME add hl, bc ld [hl], 0 @@ -1905,11 +1440,11 @@ Function4d6b: ; 4d6b GotBiteStep: ; 4d7e call Object28AnonymousJumptable ; anonymous dw - dw Function4d85 - dw Function4d94 + dw .Init + dw .Run ; 4d85 -Function4d85: ; 4d85 +.Init ld hl, OBJECT_STEP_DURATION add hl, bc ld [hl], 8 @@ -1917,7 +1452,7 @@ Function4d85: ; 4d85 add hl, bc ld [hl], 0 call IncrementObjectStructField28 -Function4d94: ; 4d94 +.Run ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc ld a, [hl] @@ -1937,11 +1472,11 @@ Function4d94: ; 4d94 ; 4daf RockSmashStep: ; 4daf - call Function4db5 - jp Function4b79 + call .Step + jp WaitStep_InPlace ; 4db5 -Function4db5: ; 4db5 +.Step ld hl, OBJECT_STEP_DURATION add hl, bc ld a, [hl] @@ -1949,7 +1484,6 @@ Function4db5: ; 4db5 ld a, PERSON_ACTION_STAND jr z, .yes ld a, PERSON_ACTION_00 - .yes ld hl, OBJECT_ACTION add hl, bc @@ -1965,15 +1499,14 @@ ReturnDigStep: ; 4dc8 ld a, PERSON_ACTION_SPIN jr z, .yes ld a, PERSON_ACTION_SPIN_FLICKER - .yes ld hl, OBJECT_ACTION add hl, bc ld [hl], a - jp Function4b79 + jp WaitStep_InPlace ; 4ddd -Function4ddd: ; 4ddd +StepType03: ; 4ddd ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -1987,7 +1520,7 @@ Function4ddd: ; 4ddd ret ; 4df0 -Function4df0: ; 4df0 +StepType18: ; 4df0 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -1998,7 +1531,7 @@ Function4df0: ; 4df0 jp DeleteMapObject ; 4dff -Function4dff: ; 4dff +StepTypeBump: ; 4dff ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -2009,21 +1542,20 @@ Function4dff: ; 4dff ret ; 4e0c -Function4e0c: ; 4e0c +StepType05: ; 4e0c call Object28AnonymousJumptable ; anonymous dw - dw Function4e13 - dw Function4e21 -; 4e13 + dw .Reset + dw StepType04 -Function4e13: ; 4e13 +.Reset call RestoreDefaultMovement call GetInitialFacing ld hl, OBJECT_FACING add hl, bc ld [hl], a call IncrementObjectStructField28 -Function4e21: ; 4e21 +StepType04: ; 4e21 call MobileFn_4fb2 ld hl, OBJECT_DIRECTION_WALKING add hl, bc @@ -2048,7 +1580,7 @@ NPCStep: ; 4e2b ret ; 4e47 -Function4e47: ; 4e47 +StepType07: ; 4e47 call AddStepVector ld hl, OBJECT_STEP_DURATION add hl, bc @@ -2064,19 +1596,17 @@ PlayerStep: ; 4e56 ; anonymous dw dw .init dw .step -; 4e5d -.init: ; 4e5d +.init ld hl, wPlayerStepFlags set 7, [hl] call IncrementObjectStructField28 -.step: ; 4e65 +.step call UpdatePlayerStep ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz - ld hl, wPlayerStepFlags set 6, [hl] call CopyNextCoordsTileToStandingCoordsTile @@ -2089,16 +1619,15 @@ PlayerStep: ; 4e56 ret ; 4e83 -PlayerOrNPCHalfStep: ; 4e83 +PlayerOrNPCTurnStep: ; 4e83 call Object28AnonymousJumptable ; anonymous dw dw .init1 dw .step1 dw .init2 dw .step2 -; 4e8e -.init1: ; 4e8e +.init1 ld hl, OBJECT_DIRECTION_WALKING add hl, bc ld [hl], STANDING @@ -2110,13 +1639,13 @@ PlayerOrNPCHalfStep: ; 4e83 add hl, bc ld [hl], 2 call IncrementObjectStructField28 -.step1: ; 4ea4 +.step1 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] ret nz call IncrementObjectStructField28 -.init2: ; 4ead +.init2 ld hl, OBJECT_29 ; new facing add hl, bc ld a, [hl] @@ -2127,7 +1656,7 @@ PlayerOrNPCHalfStep: ; 4e83 add hl, bc ld [hl], 2 call IncrementObjectStructField28 -.step2: ; 4ec0 +.step2 ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -2138,7 +1667,7 @@ PlayerOrNPCHalfStep: ; 4e83 ret ; 4ecd -Function4ecd: ; 4ecd +StepType0f: ; 4ecd call AddStepVector ld hl, OBJECT_STEP_DURATION add hl, bc @@ -2170,7 +1699,7 @@ Function4ecd: ; 4ecd ret ; 4f04 -Function4f04: ; 4f04 +StepTypeTrackingObject: ; 4f04 ld hl, OBJECT_29 add hl, bc ld e, [hl] @@ -2200,25 +1729,24 @@ Function4f04: ; 4f04 ret z dec [hl] ret nz - .nope jp DeleteMapObject ; 4f33 -Function4f33: ; 4f33 +StepType14: ; 4f33 +StepType15: ; 4f33 call Object28AnonymousJumptable ; anonymous dw - dw Function4f3a - dw Function4f43 -; 4f3a + dw .Init + dw .Run -Function4f3a: ; 4f3a +.Init xor a ld hl, OBJECT_29 add hl, bc ld [hl], a call IncrementObjectStructField28 -Function4f43: ; 4f43 +.Run ld hl, OBJECT_29 add hl, bc ld d, [hl] @@ -2230,7 +1758,7 @@ Function4f43: ; 4f43 dec [hl] jr z, .ok ld a, [hl] - call Function4f6c + call .GetSign ld hl, OBJECT_29 add hl, bc ld [hl], a @@ -2243,9 +1771,8 @@ Function4f43: ; 4f43 .ok call DeleteMapObject ret -; 4f6c -Function4f6c: ; 4f6c +.GetSign ld hl, OBJECT_30 add hl, bc and 1 @@ -2256,26 +1783,25 @@ Function4f6c: ; 4f6c ret ; 4f77 -Function4f77: ; 4f77 +StepType16: ; 4f77 call Object28AnonymousJumptable ; ???? ; 4f7a - -Function4f7a: ; 4f7a +StepType17: ; 4f7a call Object28AnonymousJumptable ; anonymous dw - dw SkyfallTop - dw SkyfallTop - dw SkyfallTop + dw .null + dw .null + dw .null +.null ; 4f83 SkyfallTop: ; 4f83 call Object28AnonymousJumptable ; anonymous dw - dw Function4f8a - dw Function4f99 -; 4f8a + dw .Init + dw .Run -Function4f8a: ; 4f8a +.Init ld hl, OBJECT_ACTION add hl, bc ld [hl], PERSON_ACTION_10 @@ -2283,9 +1809,8 @@ Function4f8a: ; 4f8a add hl, bc ld [hl], 16 call IncrementObjectStructField28 -; 4f99 -Function4f99: ; 4f99 +.Run: ld hl, OBJECT_STEP_DURATION add hl, bc dec [hl] @@ -2319,12 +1844,10 @@ MobileFn_4fb2: mobile add hl, bc ld [hl], a ret -; 4fcd .y ; 4fcd db 0, -1, -2, -3, -4, -3, -2, -1 ; 4fd5 - UpdateJumpPosition: ; 4fd5 call GetStepVector ld a, h @@ -2343,29 +1866,27 @@ UpdateJumpPosition: ; 4fd5 add hl, bc ld [hl], a ret -; 4ff0 .y ; 4ff0 db -4, -6, -8, -10, -11, -12, -12, -12 db -11, -10, -9, -8, -6, -4, 0, 0 ; 5000 - Function5000: ; unscripted? -; copy [wc2de] to [wc2df] - ld a, [wc2de] - ld hl, wc2df +; copy [wPlayerNextMovement] to [wPlayerMovement] + ld a, [wPlayerNextMovement] + ld hl, wPlayerMovement ld [hl], a -; load [wc2de] with movement_step_sleep_1 +; load [wPlayerNextMovement] with movement_step_sleep_1 ld a, movement_step_sleep_1 - ld [wc2de], a -; recover the previous value of [wc2de] + ld [wPlayerNextMovement], a +; recover the previous value of [wPlayerNextMovement] ld a, [hl] ret ; 500e -Function500e: ; scripted +GetMovementByte: ld hl, wMovementDataPointer - call Function1aae + call _GetMovementByte ret ; 5015 @@ -2375,7 +1896,7 @@ Function5015: ; 5015 ld e, [hl] inc [hl] ld d, 0 - ld hl, wMovementPerson + ld hl, wc2e2 ld a, [hli] ld h, [hl] ld l, a @@ -2399,7 +1920,7 @@ Function5026: ; 5026 ret ; 5037 -Function5037: ; 5037 +_GetMovementPerson: ; 5037 ld hl, GetMovementPerson jp HandleMovementData ; 503d @@ -2410,19 +1931,18 @@ GetMovementPerson: ; 503d ; 5041 HandleMovementData: ; 5041 - call CopyMovementPointer + call .StorePointer .loop xor a - ld [wc2ea], a - call GetMovementByte + ld [wMovementByteWasControlSwitch], a + call JumpMovementPointer call DoMovementFunction - ld a, [wc2ea] + ld a, [wMovementByteWasControlSwitch] and a jr nz, .loop ret -; 5055 -CopyMovementPointer: ; 5055 +.StorePointer ld a, l ld [wMovementPointer], a ld a, h @@ -2430,7 +1950,7 @@ CopyMovementPointer: ; 5055 ret ; 505e -GetMovementByte: ; 505e +JumpMovementPointer: ; 505e ld hl, wMovementPointer ld a, [hli] ld h, [hl] @@ -2440,7 +1960,7 @@ GetMovementByte: ; 505e ContinueReadingMovement: ; 5065 ld a, 1 - ld [wc2ea], a + ld [wMovementByteWasControlSwitch], a ret ; 506b @@ -2453,12 +1973,9 @@ DoMovementFunction: ; 506b ret ; 5075 - -; 5075 INCLUDE "engine/movement.asm" ; 54b8 - ApplyMovementToFollower: ; 54b8 ld e, a ld a, [wObjectFollow_Follower] @@ -2470,30 +1987,30 @@ ApplyMovementToFollower: ; 54b8 cp d ret nz ld a, e - cp $3e + cp movement_step_sleep_1 ret z - cp $47 + cp movement_step_end ret z - cp $4b + cp movement_step_4b ret z - cp $50 + cp movement_step_bump ret z - cp $8 + cp movement_turn_step_right + 1 ret c push af - ld hl, wd4d0 + ld hl, wFollowerMovementQueueLength inc [hl] ld e, [hl] ld d, 0 - ld hl, wd4d1 + ld hl, wFollowMovementQueue add hl, de pop af ld [hl], a ret ; 54e6 -Function54e6: ; 54e6 - ld hl, wd4d0 +GetFollowerNextMovementByte: ; 54e6 + ld hl, wFollowerMovementQueueLength ld a, [hl] and a jr z, .done @@ -2502,7 +2019,7 @@ Function54e6: ; 54e6 dec [hl] ld e, a ld d, 0 - ld hl, wd4d1 + ld hl, wFollowMovementQueue add hl, de inc e ld a, -1 @@ -2515,14 +2032,12 @@ Function54e6: ; 54e6 ret .done - call Function550a + call .CancelFollowIfLeaderMissing ret c - ld a, movement_step_sleep_1 ret -; 550a -Function550a: ; 550a +.CancelFollowIfLeaderMissing ld a, [wObjectFollow_Leader] cp -1 jr z, .nope @@ -2538,7 +2053,7 @@ Function550a: ; 550a ret .nope - ld a, $ff + ld a, -1 ld [wObjectFollow_Follower], a ld a, movement_step_end scf @@ -2557,7 +2072,6 @@ SpawnShadow: ; 5529 ; vtile, palette, movement db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SHADOW ; 5538 - SpawnStrengthBoulderDust: ; 5538 push bc ld de, .BoulderDustObject @@ -2569,7 +2083,6 @@ SpawnStrengthBoulderDust: ; 5538 .BoulderDustObject db $00, PAL_OW_SILVER, SPRITEMOVEDATA_BOULDERDUST ; 5547 - SpawnEmote: ; 5547 push bc ld de, .EmoteObject @@ -2581,7 +2094,6 @@ SpawnEmote: ; 5547 .EmoteObject db $00, PAL_OW_SILVER, SPRITEMOVEDATA_EMOTE ; 5556 - ShakeGrass: ; 5556 push bc ld de, .data_5562 @@ -2593,7 +2105,6 @@ ShakeGrass: ; 5556 .data_5562 db $00, PAL_OW_TREE, SPRITEMOVEDATA_GRASS ; 5565 - ShakeScreen: ; 5565 push bc push af @@ -2608,7 +2119,6 @@ ShakeScreen: ; 5565 .ScreenShakeObject db $00, PAL_OW_SILVER, SPRITEMOVEDATA_SCREENSHAKE ; 5579 - DespawnEmote: ; 5579 push bc ld a, [hMapObjectIndexBuffer] @@ -2616,9 +2126,8 @@ DespawnEmote: ; 5579 call .DeleteEmote pop bc ret -; 5582 -.DeleteEmote: ; 5582 +.DeleteEmote ld de, ObjectStructs ld a, NUM_OBJECT_STRUCTS .loop @@ -2637,7 +2146,6 @@ DespawnEmote: ; 5579 ld bc, OBJECT_STRUCT_LENGTH call ByteFill pop bc - .next ld hl, OBJECT_STRUCT_LENGTH add hl, de @@ -2652,7 +2160,6 @@ DespawnEmote: ; 5579 InitTempObject: ; 55ac call FindFirstEmptyObjectStruct ret nc - ld d, h ld e, l callba CopyTempObjectToObjectStruct @@ -2668,7 +2175,6 @@ CopyTempObjectData: ; 55b9 inc hl ld [hl], -1 inc hl - ld a, [de] inc de ld [hli], a @@ -2677,10 +2183,8 @@ CopyTempObjectData: ; 55b9 ld [hli], a ld a, [de] ld [hli], a - ld a, [hMapObjectIndexBuffer] ld [hli], a - push hl ld hl, OBJECT_NEXT_MAP_X add hl, bc @@ -2689,7 +2193,6 @@ CopyTempObjectData: ; 55b9 add hl, bc ld e, [hl] pop hl - ld [hl], d inc hl ld [hl], e @@ -2702,7 +2205,6 @@ Function55e0:: ; 55e0 ld a, [VramState] bit 0, a ret z - ld bc, ObjectStructs xor a .loop @@ -2710,7 +2212,6 @@ Function55e0:: ; 55e0 call GetObjectSprite jr z, .ok call Function565c - .ok ld hl, OBJECT_STRUCT_LENGTH add hl, bc @@ -2727,16 +2228,13 @@ Function5602: ; 5602, called at battle start call Function5645 ; clear sprites ld a, PLAYER call Function5629 ; respawn player - ld a, [wBattleScriptFlags] bit 7, a jr z, .ok - ld a, [hLastTalked] and a jr z, .ok call Function5629 ; respawn opponent - .ok call _UpdateSprites ret @@ -2753,21 +2251,17 @@ 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 @@ -2851,7 +2345,6 @@ Function56a3: ; 56a3 add $b cp d jr c, .nope - .equal_x ld a, [YCoord] cp e @@ -2860,7 +2353,6 @@ Function56a3: ; 56a3 add $a cp e jr c, .nope - .equal_y xor a ret @@ -2884,14 +2376,12 @@ Function56cd: ; 56cd jr nc, .ok1 cp $a0 jp nc, .nope - .ok1 and %00000111 ld d, 2 cp 4 jr c, .ok2 ld d, 3 - .ok2 ld a, [hl] srl a @@ -2900,7 +2390,6 @@ Function56cd: ; 56cd cp SCREEN_WIDTH jr c, .ok3 sub $20 - .ok3 ld [hUsedSpriteIndex], a ld a, [wFollowNotExactPersonY] @@ -2916,14 +2405,12 @@ Function56cd: ; 56cd jr nc, .ok4 cp $90 jr nc, .nope - .ok4 and %00000111 ld e, 2 cp 4 jr c, .ok5 ld e, 3 - .ok5 ld a, [hl] srl a @@ -2932,7 +2419,6 @@ Function56cd: ; 56cd cp $12 jr c, .ok6 sub $20 - .ok6 ld [hUsedSpriteTile], a ld hl, OBJECT_PALETTE @@ -2945,7 +2431,6 @@ Function56cd: ; 56cd ld a, e add 2 ld e, a - .ok7 ld a, d ld [hFFBF], a @@ -2971,11 +2456,9 @@ Function56cd: ; 56cd ld a, [hl] cp $60 jr nc, .nope - .ok8 dec d jr nz, .next - .ok9 dec e jr nz, .loop @@ -2991,9 +2474,8 @@ Function576a:: ; 576a call .ResetStepVector call Function5781 ret -; 5771 -.ResetStepVector: ; 5771 +.ResetStepVector xor a ld [wPlayerStepVectorX], a ld [wPlayerStepVectorY], a @@ -3011,7 +2493,6 @@ Function5781: ; 5781 call GetObjectSprite jr z, .next call Function437b - .next ld hl, OBJECT_STRUCT_LENGTH add hl, bc @@ -3026,8 +2507,8 @@ Function5781: ; 5781 Function579d: ; 579d ld a, $3e - ld [wc2de], a - ld [wc2df], a + ld [wPlayerNextMovement], a + ld [wPlayerMovement], a xor a ld [wd04e], a ld [PlayerObjectStepFrame], a @@ -3073,14 +2554,12 @@ SetPlayerPalette: ; 57e2 ld a, d and %10000000 ret z - ld bc, 0 ; debug? ld hl, OBJECT_FACING add hl, bc ld a, [hl] or d ld [hl], a - ld a, d swap a and %00000111 @@ -3103,7 +2582,7 @@ StartFollow:: ; 5803 ret c ld a, c call SetFollowerIfVisible - callba Function848a + callba QueueFollowerFirstStep ret ; 5815 @@ -3189,7 +2668,6 @@ Function587a: ; 587a ld hl, OBJECT_FLAGS2 add hl, bc set 5, [hl] - .next ld hl, OBJECT_STRUCT_LENGTH add hl, bc @@ -3235,7 +2713,6 @@ Function58b9:: ; 58b9 ld hl, OBJECT_FLAGS2 add hl, bc res 5, [hl] - .next ld hl, OBJECT_STRUCT_LENGTH add hl, bc @@ -3264,18 +2741,15 @@ Function58e3: ; 58e3 ld a, [hl] cp -1 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_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_00 @@ -3294,7 +2768,6 @@ Function5903: ; 5903 ld hl, OBJECT_MOVEMENTTYPE add hl, bc ld [hl], a - ld hl, OBJECT_STEP_TYPE add hl, bc ld [hl], STEP_TYPE_00 @@ -3306,7 +2779,6 @@ Function5903: ; 5903 db SPRITEMOVEDATA_STANDING_LEFT db SPRITEMOVEDATA_STANDING_RIGHT ; 5920 - _UpdateSprites:: ; 5920 ld a, [VramState] bit 0, a @@ -3322,15 +2794,13 @@ _UpdateSprites:: ; 5920 pop af ld [hOAMUpdate], a ret -; 593a -.fill: ; 593a +.fill ld a, [VramState] bit 1, a ld b, SpritesEnd % $100 jr z, .ok ld b, 28 * 4 - .ok ld a, [hUsedSpriteIndex] cp b @@ -3358,24 +2828,20 @@ Function5958: ; 5958 ld e, a ld bc, ObjectStructs ld a, NUM_OBJECT_STRUCTS - .loop push af call GetObjectSprite jr z, .skip - ld hl, OBJECT_SPRITE_X add hl, bc ld a, [hl] add d ld [hl], a - ld hl, OBJECT_SPRITE_Y add hl, bc ld a, [hl] add e ld [hl], a - .skip ld hl, OBJECT_STRUCT_LENGTH add hl, bc @@ -3384,7 +2850,6 @@ Function5958: ; 5958 pop af dec a jr nz, .loop - xor a ld [wFollowNotExactPersonX], a ld [wFollowNotExactPersonY], a @@ -3406,28 +2871,24 @@ PRIORITY_HIGH EQU $30 ld c, PRIORITY_LOW call .InitSpritesByPriority ret -; 59a4 -.DeterminePriorities: ; 59a4 +.DeterminePriorities xor a - ld hl, wc2eb + ld hl, wMovementPointer ld bc, NUM_OBJECT_STRUCTS call ByteFill - ld d, 0 ld bc, ObjectStructs - ld hl, wc2eb + ld hl, wMovementPointer .loop push hl call GetObjectSprite jr z, .skip - ld hl, OBJECT_FACING_STEP add hl, bc ld a, [hl] cp STANDING jr z, .skip - ; Define the sprite priority. ld e, PRIORITY_LOW ld hl, OBJECT_FLAGS2 @@ -3457,16 +2918,14 @@ PRIORITY_HIGH EQU $30 ld a, d or e ld [hli], a - .next inc d ld a, d cp NUM_OBJECT_STRUCTS jr nz, .loop ret -; 59f3 -.InitSpritesByPriority: ; 59f3 +.InitSpritesByPriority ld hl, wMovementPointer .next_sprite ld a, [hli] @@ -3475,7 +2934,6 @@ PRIORITY_HIGH EQU $30 ret z cp c jr nz, .next_sprite - push bc push hl ld a, d @@ -3485,21 +2943,18 @@ PRIORITY_HIGH EQU $30 pop hl pop bc jr .next_sprite -; 5a0d -.InitSprite: ; 5a0d +.InitSprite ld hl, OBJECT_SPRITE_TILE add hl, bc ld a, [hl] and %01111111 ld [hFFC1], a - xor a bit 7, [hl] jr nz, .skip1 or %00001000 .skip1 - ld hl, OBJECT_FLAGS2 add hl, bc ld e, [hl] @@ -3507,12 +2962,10 @@ PRIORITY_HIGH EQU $30 jr z, .skip2 or %10000000 .skip2 - bit 4, e jr z, .skip3 or %00010000 .skip3 - ld hl, OBJECT_PALETTE add hl, bc ld d, a @@ -3520,44 +2973,34 @@ PRIORITY_HIGH EQU $30 and %00000111 or d ld d, a - xor a bit 3, e jr z, .skip4 or %10000000 .skip4 ld [hFFC2], a - ld hl, OBJECT_SPRITE_X add hl, bc ld a, [hl] - ld hl, OBJECT_SPRITE_X_OFFSET add hl, bc add [hl] - add 8 - ld e, a ld a, [wFollowNotExactPersonX] add e ld [hFFBF], a - ld hl, OBJECT_SPRITE_Y add hl, bc ld a, [hl] - ld hl, OBJECT_SPRITE_Y_OFFSET add hl, bc add [hl] - add 12 - ld e, a ld a, [wFollowNotExactPersonY] add e ld [hFFC0], a - ld hl, OBJECT_FACING_STEP add hl, bc ld a, [hl] @@ -3565,7 +3008,6 @@ PRIORITY_HIGH EQU $30 jp z, .done cp NUM_FACINGS jp nc, .done - ld l, a ld h, 0 add hl, hl @@ -3574,7 +3016,6 @@ PRIORITY_HIGH EQU $30 ld a, [hli] ld h, [hl] ld l, a - ld a, [hUsedSpriteIndex] ld c, a ld b, Sprites / $100 @@ -3583,25 +3024,19 @@ PRIORITY_HIGH EQU $30 add c cp SpritesEnd % $100 jr nc, .full - .addsprite ld a, [hFFC0] add [hl] inc hl - ld [bc], a inc c - ld a, [hFFBF] add [hl] inc hl - ld [bc], a inc c - ld e, [hl] inc hl - ld a, [hFFC1] bit 2, e jr z, .nope1 @@ -3609,10 +3044,8 @@ PRIORITY_HIGH EQU $30 .nope1 add [hl] inc hl - ld [bc], a inc c - ld a, e bit 1, a jr z, .nope2 @@ -3623,15 +3056,12 @@ PRIORITY_HIGH EQU $30 or d ld [bc], a inc c - ld a, [hUsedSpriteTile] dec a ld [hUsedSpriteTile], a jr nz, .addsprite - ld a, c ld [hUsedSpriteIndex], a - .done xor a ret @@ -3639,19 +3069,17 @@ PRIORITY_HIGH EQU $30 .full scf ret -; 5ac2 -.GetObjectStructPointer: ; 5ac2 +.GetObjectStructPointer ld c, a ld b, 0 ld hl, .Addresses - add hl,bc - add hl,bc + add hl, bc + add hl, bc ld c, [hl] inc hl ld b, [hl] ret -; 5ace .Addresses ; 5ace dw PlayerStruct |