diff options
author | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-18 16:00:37 -0400 |
---|---|---|
committer | pikalaxalt <PikalaxALT@gmail.com> | 2016-06-18 16:00:37 -0400 |
commit | ce39e05e3234f43a6a7ecdde4b48e9e5d2eaac98 (patch) | |
tree | 3a774def35dced8a73e17a4a9058e0ff32830f6c /engine/movement_pattern.asm | |
parent | 42e609cb48486c055cc3657e5f3306946367f7c1 (diff) |
Map object step types
Diffstat (limited to 'engine/movement_pattern.asm')
-rwxr-xr-x | engine/movement_pattern.asm | 651 |
1 files changed, 651 insertions, 0 deletions
diff --git a/engine/movement_pattern.asm b/engine/movement_pattern.asm new file mode 100755 index 00000000..0b7617ca --- /dev/null +++ b/engine/movement_pattern.asm @@ -0,0 +1,651 @@ +RestoreDefaultMovement: + ld hl, $1 + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_4756 + push bc + call GetMapObject + ld hl, $4 + add hl, bc + ld a, [hl] + pop bc + ret + +.asm_4756 + ld a, $6 + ret + +ClearObjectMovementByteIndex: + ld hl, $1b + add hl, bc + ld [hl], $0 + ret + +IncrementObjectMovementByteIndex: + ld hl, $1b + add hl, bc + inc [hl] + ret + +DecrementObjectMovementByteIndex: + ld hl, $1b + add hl, bc + dec [hl] + ret + +MovementAnonymousJumptable: + ld hl, $1b + add hl, bc + ld a, [hl] + pop hl + rst JumpTable + ret + +ClearObjectStructField28: + ld hl, $1c + add hl, bc + ld [hl], $0 + ret + +IncrementObjectStructField28: + ld hl, $1c + add hl, bc + inc [hl] + ret + +Object28AnonymousJumptable: + ld hl, $1c + add hl, bc + ld a, [hl] + pop hl + rst JumpTable + ret + +GetValueObjectStructField28: + ld hl, $1c + add hl, bc + ld a, [hl] + ret + +SetValueObjectStructField28: + ld hl, $1c + add hl, bc + ld [hl], a + ret + +ObjectMovementReset: ; 4795 (1:4795) + ld hl, $10 + add hl, bc + ld d, [hl] + ld hl, $11 + add hl, bc + ld e, [hl] + push bc + call GetCoordTile + pop bc + ld hl, $e + add hl, bc + ld [hl], a + call CopyNextCoordsTileToStandingCoordsTile + call EndSpriteMovement + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +MapObjectMovementPattern: ; 47b6 (1:47b6) + call ClearObjectStructField28 + call GetSpriteMovementFunction + ld a, [hl] + ld hl, .Pointers + rst JumpTable + ret + +.Pointers: + dw Function47fa + dw Function47fb + dw Function4805 + dw Function4811 + dw Function481b + dw Function482a + dw Function4842 + dw Function4855 + dw Function485b + dw Function4861 + dw Function4867 + dw Function486a + dw Function486d + dw Function4870 + dw Function4876 + dw Function4879 + dw Function487f + dw Function4885 + dw Function48d8 + dw Function49be + dw Function49fa + dw Function4931 + dw Function4947 + dw Function4a95 + dw Function4966 + dw Function495d + dw Function4a1f + dw Function4a62 + +Function47fa: + ret + +Function47fb: ; 47fb (1:47fb) + call Random + ld a, [hRandom] + and $1 + jp Function4ac9 + +Function4805: ; 4805 (1:4805) + call Random + ld a, [hRandom] + and $1 + or $2 + jp Function4ac9 + +Function4811: ; 4811 (1:4811) + call Random + ld a, [hRandom] + and $3 + jp Function4ac9 + +Function481b: ; 481b (1:481b) + call Random + ld a, [hRandom] + and $c + ld hl, $8 + add hl, bc + ld [hl], a + jp Function4af6 + +Function482a: ; 482a (1:482a) + ld hl, $8 + add hl, bc + ld a, [hl] + and $c + ld d, a + call Random + ld a, [hRandom] + and $c + cp d + jr nz, .asm_483e + xor $c +.asm_483e + ld [hl], a + jp Function4aff + +Function4842: ; 4842 (1:4842) + call Function4603 + call EndSpriteMovement + ld hl, $b + add hl, bc + ld [hl], $1 + ld hl, $9 + add hl, bc + ld [hl], $5 + ret + +Function4855: ; 4855 (1:4855) + ld hl, $4fa8 + jp Function4fe9 + +Function485b: ; 485b (1:485b) + ld hl, $4fbd + jp Function4fe9 + +Function4861: ; 4861 (1:4861) + ld hl, $4fce + jp Function4fe9 + +Function4867: ; 4867 (1:4867) + jp Function4fdf + +Function486a: ; 486a (1:486a) + jp Function4fdf + +Function486d: ; 486d (1:486d) + jp Function4fdf + +Function4870: ; 4870 (1:4870) + ld hl, $4fa8 + jp Function4fe9 + +Function4876: ; 4876 (1:4876) + jp Function4fdf + +Function4879: ; 4879 (1:4879) + ld hl, $5485 + jp Function4fe9 + +Function487f: ; 487f (1:487f) + ld hl, $4fb6 + jp Function4fe9 + +Function4885: ; 4885 (1:4885) + call MovementAnonymousJumptable + dw .asm_488c + dw .asm_48d1 + +.asm_488c + ld hl, $e + add hl, bc + ld a, [hl] + call CheckPitTile + jr z, .asm_48ce + ld hl, $5 + add hl, bc + bit 2, [hl] + res 2, [hl] + jr z, .asm_48c7 + ld hl, $20 + add hl, bc + ld a, [hl] + and $3 + or $0 + call InitStep + call CheckNPCMovementPermissions + jr c, .asm_48c4 + ld de, $1b + call PlaySFX + call Function54d7 + call UpdateGrassPriority + ld hl, $9 + add hl, bc + ld [hl], $f + ret + +.asm_48c4 + call Function4603 +.asm_48c7 + ld hl, $7 + add hl, bc + ld [hl], $ff + ret + +.asm_48ce + call IncrementObjectMovementByteIndex +.asm_48d1 + ld hl, $7 + add hl, bc + ld [hl], $ff + ret + +Function48d8: ; 48d8 (1:48d8) + ld hl, $10 + add hl, bc + ld d, [hl] + ld hl, $11 + add hl, bc + ld e, [hl] + ld hl, $20 + add hl, bc + ld a, [hl] + push bc + call GetObjectStruct + ld hl, $7 + add hl, bc + ld a, [hl] + cp $ff + jr z, .asm_4923 + ld hl, $12 + add hl, bc + ld a, [hl] + cp d + jr z, .asm_4906 + jr c, .asm_4902 + ld a, $3 + jr .asm_4916 + +.asm_4902 + ld a, $2 + jr .asm_4916 + +.asm_4906 + ld hl, $13 + add hl, bc + ld a, [hl] + cp e + jr z, .asm_4923 + jr c, .asm_4914 + ld a, $0 + jr .asm_4916 + +.asm_4914 + ld a, $1 +.asm_4916 + ld d, a + ld hl, $7 + add hl, bc + ld a, [hl] + and $c + or d + pop bc + jp Function53b1 + +.asm_4923 + pop bc + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $b + add hl, bc + ld [hl], $1 + ret + +Function4931: ; 4931 (1:4931) + call EndSpriteMovement + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $b + add hl, bc + ld [hl], $9 + ld hl, $9 + add hl, bc + ld [hl], $4 + ret + +Function4947: ; 4947 (1:4947) + call EndSpriteMovement + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $b + add hl, bc + ld [hl], $a + ld hl, $9 + add hl, bc + ld [hl], $4 + ret + +Function495d: ; 495d (1:495d) + call MovementAnonymousJumptable + dw Function496f + dw Function4975 + dw Function4991 + +Function4966: ; 4966 (1:4966) + call MovementAnonymousJumptable + dw Function496f + dw Function4975 + dw Function499d + +Function496f: + call EndSpriteMovement + call IncrementObjectMovementByteIndex +Function4975: + ld hl, $b + add hl, bc + ld [hl], $1 + ld hl, $20 + add hl, bc + ld a, [hl] + ld a, $10 + ld hl, $a + add hl, bc + ld [hl], a + ld hl, $9 + add hl, bc + ld [hl], $3 + call IncrementObjectMovementByteIndex + ret + +Function4991: + ld de, .data + call Function49a9 + jr Function495d + +.data + db OW_RIGHT, OW_LEFT, OW_DOWN, OW_UP + +Function499d: + ld de, .data + call Function49a9 + jr Function4966 + +.data + db OW_LEFT, OW_RIGHT, OW_UP, OW_DOWN + +Function49a9: ; 49a9 (1:49a9) + ld hl, $8 + add hl, bc + ld a, [hl] + and $c + rrca + rrca + push hl + ld l, a + ld h, $0 + add hl, de + ld a, [hl] + pop hl + ld [hl], a + call DecrementObjectMovementByteIndex + ret + +Function49be: ; 49be (1:49be) + call Function4a81 + ld hl, $b + add hl, bc + ld [hl], $7 + ld hl, $a + add hl, de + ld a, [hl] + inc a + add a + add $0 + ld hl, $a + add hl, bc + ld [hl], a + ld hl, $7 + add hl, de + ld a, [hl] + and $3 + ld d, $e + cp $0 + jr z, .asm_49e8 + cp $1 + jr z, .asm_49e8 + ld d, $c +.asm_49e8 + ld hl, $1a + add hl, bc + ld [hl], d + ld hl, $19 + add hl, bc + ld [hl], $0 + ld hl, $9 + add hl, bc + ld [hl], $13 + ret + +Function49fa: ; 49fa (1:49fa) + call EndSpriteMovement + call Function4a81 + ld hl, $b + add hl, bc + ld [hl], $8 + ld hl, $a + add hl, bc + ld [hl], $0 + ld hl, $1a + add hl, bc + ld [hl], $f0 + ld hl, $19 + add hl, bc + ld [hl], $0 + ld hl, $9 + add hl, bc + ld [hl], $13 + ret + +Function4a1f: ; 4a1f (1:4a1f) + call EndSpriteMovement + call Function4a81 + ld hl, $b + add hl, bc + ld [hl], $e + ld hl, $a + add hl, de + ld a, [hl] + inc a + add a + ld hl, $a + add hl, bc + ld [hl], a + ld hl, $7 + add hl, de + ld a, [hl] + and $3 + ld e, a + ld d, $0 + ld hl, .data + add hl, de + add hl, de + ld d, [hl] + inc hl + ld e, [hl] + ld hl, $19 + add hl, bc + ld [hl], d + ld hl, $1a + add hl, bc + ld [hl], e + ld hl, $9 + add hl, bc + ld [hl], $13 + ret + +.data + ; x, y + db 0, -4 + db 0, 8 + db 6, 2 + db -6, 2 + +Function4a62: ; 4a62 (1:4a62) + call EndSpriteMovement + call Function4a81 + ld hl, $b + add hl, bc + ld [hl], $f + ld hl, $a + add hl, de + ld a, [hl] + add $ff + ld hl, $a + add hl, bc + ld [hl], a + ld hl, $9 + add hl, bc + ld [hl], $13 + ret + +Function4a81: ; 4a81 (1:4a81) + ld hl, $20 + add hl, bc + ld a, [hl] + push bc + call GetObjectStruct + ld d, b + ld e, c + pop bc + ld hl, $1d + add hl, bc + ld [hl], e + inc hl + ld [hl], d + ret + +Function4a95: ; 4a95 (1:4a95) + call EndSpriteMovement + ld hl, $b + add hl, bc + ld [hl], $0 + ld hl, $20 + add hl, bc + ld a, [hl] + call Function4ab7 + ld hl, $a + add hl, bc + ld [hl], e + ld hl, $1e + add hl, bc + ld [hl], a + ld hl, $9 + add hl, bc + ld [hl], $15 + ret + +Function4ab7: ; 4ab7 (1:4ab7) + ld d, a + and $3f + ld e, a + ld a, d + rlca + rlca + and $3 + ld d, a + inc d + ld a, $1 +.asm_4ac4 + dec d + ret z + add a + jr .asm_4ac4 + +Function4ac9: ; 4ac9 (1:4ac9) + call InitStep + call CheckNPCMovementPermissions + jr c, .asm_4af0 + call UpdateGrassPriority + ld hl, $b + add hl, bc + ld [hl], $2 + ld hl, wCenteredObject + ld a, [hConnectionStripLength] + cp [hl] + jr z, .asm_4ae9 + ld hl, $9 + add hl, bc + ld [hl], $7 + ret + +.asm_4ae9 + ld hl, $9 + add hl, bc + ld [hl], $6 + ret + +.asm_4af0 + call EndSpriteMovement + call Function4603 +Function4af6: ; 4af6 (1:4af6) + call Random + ld a, [hRandom] + and $7f + jr asm_4b06 + +Function4aff: ; 4aff (1:4aff) + call Random + ld a, [hRandomAdd] + and $1f +asm_4b06 + ld hl, $a + add hl, bc + ld [hl], a + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $b + add hl, bc + ld [hl], $1 + ld hl, $9 + add hl, bc + ld [hl], $3 + ret |