diff options
Diffstat (limited to 'engine/step_types.asm')
-rwxr-xr-x | engine/step_types.asm | 754 |
1 files changed, 754 insertions, 0 deletions
diff --git a/engine/step_types.asm b/engine/step_types.asm new file mode 100755 index 00000000..27602b5b --- /dev/null +++ b/engine/step_types.asm @@ -0,0 +1,754 @@ +StepTypesJumptable: ; 4b1e + dw ObjectMovementReset + dw MapObjectMovementPattern + dw Function4e02 + dw Function4db4 + dw Function4df8 + dw Function4de3 + dw Function4e2d + dw Function4e1e + dw Function4b5d + dw Function4b96 + dw Function4e5a + dw Function4dd6 + dw Function4bef + dw Function4c60 + dw Function4ceb + dw Function4ea4 + dw Function4d55 + dw Function4d86 + dw Function4d9f + dw Function4edb + dw Function4f0a + dw Function4f0a + dw Function4f4e + dw Function4f51 + dw Function4dc7 + +Function4b50: ; 4b50 (1:4b50) + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4b5d: ; 4b5d (1:4b5d) + call Object28AnonymousJumptable + dw Function4b64 + dw Function4b80 + +Function4b64: + call AddStepVector + call Function4f7d + ld hl, $a + add hl, bc + dec [hl] + ret nz + call CopyNextCoordsTileToStandingCoordsTile + call GetNextTile + ld hl, $5 + add hl, bc + res 3, [hl] + call IncrementObjectStructField28 + ret + +Function4b80: + call AddStepVector + call Function4f7d + ld hl, $a + add hl, bc + dec [hl] + ret nz + call CopyNextCoordsTileToStandingCoordsTile + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4b96: ; 4b96 (1:4b96) + call Object28AnonymousJumptable + dw Function4ba1 + dw Function4ba9 + dw Function4bc9 + dw Function4bd4 + +Function4ba1: + ld hl, wPlayerStepFlags + set 7, [hl] + call IncrementObjectStructField28 +Function4ba9: + call Function4f7d + call UpdatePlayerStep + ld hl, $a + add hl, bc + dec [hl] + ret nz + call CopyNextCoordsTileToStandingCoordsTile + ld hl, $5 + add hl, bc + res 3, [hl] + ld hl, wPlayerStepFlags + set 6, [hl] + set 4, [hl] + call IncrementObjectStructField28 + ret + +Function4bc9: + call GetNextTile + ld hl, wPlayerStepFlags + set 7, [hl] + call IncrementObjectStructField28 +Function4bd4: + call Function4f7d + call UpdatePlayerStep + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, wPlayerStepFlags + set 6, [hl] + call CopyNextCoordsTileToStandingCoordsTile + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4bef: ; 4bef (1:4bef) + call Object28AnonymousJumptable + dw Function4bfa + dw Function4c09 + dw Function4c19 + dw Function4c34 + +Function4bfa: + ld hl, $c + add hl, bc + ld [hl], $0 + ld hl, $a + add hl, bc + ld [hl], $10 + call IncrementObjectStructField28 +Function4c09: + ld hl, $b + add hl, bc + ld [hl], $4 + ld hl, $a + add hl, bc + dec [hl] + ret nz + call IncrementObjectStructField28 + ret + +Function4c19: + ld hl, $c + add hl, bc + ld [hl], $0 + ld hl, $1f + add hl, bc + ld [hl], $10 + ld hl, $a + add hl, bc + ld [hl], $10 + ld hl, $5 + add hl, bc + res 3, [hl] + call IncrementObjectStructField28 +Function4c34: + ld hl, $b + add hl, bc + ld [hl], $4 + ld hl, $1f + add hl, bc + inc [hl] + ld a, [hl] + ld d, $60 + call Sine + ld a, h + sub $60 + ld hl, $1a + add hl, bc + ld [hl], a + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, $c + add hl, bc + ld [hl], $0 + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4c60: ; 4c60 (1:4c60) + call Object28AnonymousJumptable + dw Function4c71 + dw Function4c81 + dw Function4c8a + dw Function4ca0 + dw Function4cc2 + dw Function4ccc + dw Function4cd8 + +Function4c71: + ld hl, $b + add hl, bc + ld [hl], $0 + ld hl, $a + add hl, bc + ld [hl], $10 + call IncrementObjectStructField28 + ret + +Function4c81: + ld hl, $a + add hl, bc + dec [hl] + ret nz + call IncrementObjectStructField28 +Function4c8a: + ld hl, $c + add hl, bc + ld [hl], $0 + ld hl, $1f + add hl, bc + ld [hl], $0 + ld hl, $a + add hl, bc + ld [hl], $10 + call IncrementObjectStructField28 + ret + +Function4ca0: + ld hl, $b + add hl, bc + ld [hl], $4 + ld hl, $1f + add hl, bc + inc [hl] + ld a, [hl] + ld d, $60 + call Sine + ld a, h + sub $60 + ld hl, $1a + add hl, bc + ld [hl], a + ld hl, $a + add hl, bc + dec [hl] + ret nz + call IncrementObjectStructField28 +Function4cc2: + ld hl, $a + add hl, bc + ld [hl], $10 + call IncrementObjectStructField28 + ret + +Function4ccc: + ld hl, $b + add hl, bc + ld [hl], $4 + ld hl, $a + add hl, bc + dec [hl] + ret nz +Function4cd8: + ld hl, $c + add hl, bc + ld [hl], $0 + ld hl, $1a + add hl, bc + ld [hl], $0 + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4ceb: ; 4ceb (1:4ceb) + call Object28AnonymousJumptable + dw Function4cf6 + dw Function4d05 + dw Function4d26 + dw Function4d42 + +Function4cf6: + ld hl, $b + add hl, bc + ld [hl], $0 + ld hl, $a + add hl, bc + ld [hl], $10 + call IncrementObjectStructField28 +Function4d05: + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, $b + add hl, bc + ld [hl], $2 + ld hl, $c + add hl, bc + ld [hl], $0 + ld hl, $1f + add hl, bc + ld [hl], $0 + ld hl, $a + add hl, bc + ld [hl], $10 + call IncrementObjectStructField28 +Function4d26: + ld hl, $1f + add hl, bc + inc [hl] + ld a, [hl] + ld d, $60 + call Sine + ld a, h + sub $60 + ld hl, $1a + add hl, bc + ld [hl], a + ld hl, $a + add hl, bc + dec [hl] + ret nz + call IncrementObjectStructField28 +Function4d42: + ld hl, $c + add hl, bc + ld [hl], $0 + ld hl, $1a + add hl, bc + ld [hl], $0 + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4d55: ; 4d55 (1:4d55) + call Object28AnonymousJumptable + dw Function4d5c + dw Function4d6b + +Function4d5c: + ld hl, $a + add hl, bc + ld [hl], $8 + ld hl, $1a + add hl, bc + ld [hl], $0 + call IncrementObjectStructField28 +Function4d6b: + ld hl, $1a + add hl, bc + ld a, [hl] + xor $1 + ld [hl], a + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, $1a + add hl, bc + ld [hl], $0 + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4d86: ; 4d86 (1:4d86) + call Function4d8c + jp Function4b50 + +Function4d8c: ; 4d8c (1:4d8c) + ld hl, $a + add hl, bc + ld a, [hl] + and $1 + ld a, $1 + jr z, .asm_4d99 + ld a, $0 +.asm_4d99 + ld hl, $b + add hl, bc + ld [hl], a + ret + +Function4d9f: ; 4d9f (1:4d9f) + ld hl, $a + add hl, bc + ld a, [hl] + and $1 + ld a, $4 + jr z, .asm_4dac + ld a, $5 +.asm_4dac + ld hl, $b + add hl, bc + ld [hl], a + jp Function4b50 + +Function4db4: ; 4db4 (1:4db4) + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4dc7: ; 4dc7 (1:4dc7) + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $a + add hl, bc + dec [hl] + ret nz + jp DeleteMapObject + +Function4dd6: ; 4dd6 (1:4dd6) + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4de3: ; 4de3 (1:4de3) + call Object28AnonymousJumptable + dw Function4dea + dw Function4df8 + +Function4dea: + call RestoreDefaultMovement + call GetInitialFacing + ld hl, $8 + add hl, bc + ld [hl], a + call IncrementObjectStructField28 +Function4df8: ; 4df8 (1:4df8) + call Function4f5a + ld hl, $7 + add hl, bc + ld [hl], $ff + ret + +Function4e02: ; 4e02 (1:4e02) + call Function4f5a + call AddStepVector + ld hl, $a + add hl, bc + dec [hl] + ret nz + call CopyNextCoordsTileToStandingCoordsTile + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4e1e: ; 4e1e (1:4e1e) + call AddStepVector + ld hl, $a + add hl, bc + dec [hl] + ret nz + call CopyNextCoordsTileToStandingCoordsTile + jp Function4af6 + +Function4e2d: ; 4e2d (1:4e2d) + call Object28AnonymousJumptable + dw Function4e34 + dw Function4e3c + +Function4e34: + ld hl, wPlayerStepFlags + set 7, [hl] + call IncrementObjectStructField28 +Function4e3c: + call UpdatePlayerStep + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, wPlayerStepFlags + set 6, [hl] + call CopyNextCoordsTileToStandingCoordsTile + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4e5a: ; 4e5a (1:4e5a) + call Object28AnonymousJumptable + dw Function4e65 + dw Function4e7b + dw Function4e84 + dw Function4e97 + +Function4e65: + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $c + add hl, bc + ld a, [hl] + ld [hl], $2 + ld hl, $a + add hl, bc + ld [hl], $2 + call IncrementObjectStructField28 +Function4e7b: + ld hl, $a + add hl, bc + dec [hl] + ret nz + call IncrementObjectStructField28 +Function4e84: + ld hl, $1d + add hl, bc + ld a, [hl] + ld hl, $8 + add hl, bc + ld [hl], a + ld hl, $a + add hl, bc + ld [hl], $2 + call IncrementObjectStructField28 +Function4e97: + ld hl, $a + add hl, bc + dec [hl] + ret nz + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4ea4: ; 4ea4 (1:4ea4) + call AddStepVector + ld hl, $a + add hl, bc + dec [hl] + ret nz + push bc + ld hl, $10 + add hl, bc + ld d, [hl] + ld hl, $11 + add hl, bc + ld e, [hl] + ld hl, $1 + add hl, bc + ld a, [hl] + ld b, a + ld a, $2 + ld hl, UselessAndA + 1 + rst FarCall + pop bc + ld hl, $5 + add hl, bc + res 2, [hl] + call CopyNextCoordsTileToStandingCoordsTile + ld hl, $7 + add hl, bc + ld [hl], $ff + ld hl, $9 + add hl, bc + ld [hl], $1 + ret + +Function4edb: ; 4edb (1:4edb) + ld hl, $1d + add hl, bc + ld e, [hl] + inc hl + ld d, [hl] + ld hl, $0 + add hl, de + ld a, [hl] + and a + jr z, .asm_4f07 + ld hl, $17 + add hl, de + ld a, [hl] + ld hl, $17 + add hl, bc + ld [hl], a + ld hl, $18 + add hl, de + ld a, [hl] + ld hl, $18 + add hl, bc + ld [hl], a + ld hl, $a + add hl, bc + ld a, [hl] + and a + ret z + dec [hl] + ret nz +.asm_4f07 + jp DeleteMapObject + +Function4f0a: ; 4f0a (1:4f0a) + call Object28AnonymousJumptable + dw Function4f11 + dw Function4f1a + +Function4f11: + xor a + ld hl, $1d + add hl, bc + ld [hl], a + call IncrementObjectStructField28 +Function4f1a: + ld hl, $1d + add hl, bc + ld d, [hl] + ld a, [wPlayerStepVectorY] + sub d + ld [wPlayerStepVectorY], a + ld hl, $a + add hl, bc + dec [hl] + jr z, .asm_4f3f + ld a, [hl] + call Function4f43 + ld hl, $1d + add hl, bc + ld [hl], a + ld d, a + ld a, [wPlayerStepVectorY] + add d + ld [wPlayerStepVectorY], a + ret + +.asm_4f3f + call DeleteMapObject + ret + +Function4f43: ; 4f43 (1:4f43) + ld hl, $1e + add hl, bc + and $1 + ld a, [hl] + ret z + cpl + inc a + ret + +Function4f4e: ; 4f4e (1:4f4e) + call Object28AnonymousJumptable +Function4f51: ; 4f51 (1:4f51) + call Object28AnonymousJumptable + dw Function4f5a + dw Function4f5a + dw Function4f5a + +Function4f5a: ; 4f5a (1:4f5a) + ret + +Function4f5b: + ld hl, $1d + add hl, bc + inc [hl] + ld a, [hl] + srl a + srl a + and $7 + ld l, a + ld h, $0 + ld de, .data + add hl, de + ld a, [hl] + ld hl, $1a + add hl, bc + ld [hl], a + ret + +.data + db 0, -1, -2, -3, -4, -3, -2, -1 + +Function4f7d: ; 4f7d (1:4f7d) + call GetStepVector + ld a, h + ld hl, $1f + add hl, bc + ld e, [hl] + add e + ld [hl], a + nop + srl e + ld d, $0 + ld hl, .data + add hl, de + ld a, [hl] + ld hl, $1a + add hl, bc + ld [hl], a + ret + +.data + db -4, -6, -8, -10, -11, -12, -12, -12 + db -11, -10, -9, -8, -6, -4, 0, 0 + +Function4fa8: + ld a, [wce87] + ld hl, wce88 + ld [hl], a + ld a, $3e + ld [wce87], a + ld a, [hl] + ret + +GetMovementByte: + ld hl, wMovementDataPointerBank + call GetMovementByte_ + ret + +Function4fbd: + ld hl, $1b + add hl, bc + ld e, [hl] + inc [hl] + ld d, $0 + ld hl, wMovementPerson + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + ld a, [hl] + ret + +Function4fce: + ld hl, $1b + add hl, bc + ld e, [hl] + inc [hl] + ld d, $0 + ld hl, wce8f + ld a, [hli] + ld h, [hl] + ld l, a + add hl, de + ld a, [hl] + ret |