diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-10 20:57:58 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-10 20:57:58 -0400 |
commit | 364289640d4b60708a86f67282480a44ec1862c3 (patch) | |
tree | c6add0cd9d8cfc7f9049b156cffdb8960c450718 | |
parent | 0bdf3896b28213f139578c1927945d7184ca6a91 (diff) |
home/movement.asm
-rw-r--r-- | home/movement.asm | 129 | ||||
-rw-r--r-- | wram.asm | 9 |
2 files changed, 134 insertions, 4 deletions
diff --git a/home/movement.asm b/home/movement.asm new file mode 100644 index 0000000..212a4b3 --- /dev/null +++ b/home/movement.asm @@ -0,0 +1,129 @@ +INCLUDE "constants.asm" + +SECTION "Movement ROM0", ROM0 [$19d1] + +InitMovementBuffer:: + ld [wMovementBufferObject], a + xor a + ld [wMovementBufferCount], a + ld a, BANK(wMovementBuffer) + ld [wMovementBufferPointerBank], a + ld a, LOW(wMovementBuffer) + ld [wMovementBufferPointerAddr], a + ld a, HIGH(wMovementBuffer) + ld [wMovementBufferPointerAddr + 1], a + ret + +DecrementMovementBufferCount:: + ld a, [wMovementBufferCount] + and a + ret z + dec a + ld [wMovementBufferCount], a + ret + +AppendToMovementBuffer:: ; 00:19f2 + push hl + push de + ld hl, wMovementBufferCount + ld e, [hl] + inc [hl] + ld d, $0 + ld hl, wMovementBuffer + add hl, de + ld [hl], a + pop de + pop hl + ret + +AppendToMovementBufferNTimes:: ; 00:1a03 + push af + ld a, c + and a + jr nz, .asm_1a0a + pop af + ret + +.asm_1a0a: ; 00:1a0a + pop af +.asm_1a0b: ; 00:1a0b + call AppendToMovementBuffer + dec c + jr nz, .asm_1a0b + ret + +ComputePathToWalkToPlayer:: + push af + ld a, b + sub d + ld h, LEFT + jr nc, .asm_1a1d + dec a + cpl + ld h, RIGHT +.asm_1a1d: ; 00:1a1d + ld d, a + ld a, c + sub e + ld l, UP + jr nc, .asm_1a28 + dec a + cpl + ld l, DOWN +.asm_1a28: ; 00:1a28 + ld e, a + cp d + jr nc, .asm_1a32 + ld a, h + ld h, l + ld l, a + ld a, d + ld d, e + ld e, a +.asm_1a32: ; 00:1a32 + pop af + ld b, a + ld a, h + call .GetMovementData + ld c, d + call AppendToMovementBufferNTimes + ld a, l + call .GetMovementData + ld c, e + call AppendToMovementBufferNTimes + ret + +.GetMovementData: ; 00:1a45 + push de + push hl + ld l, b + ld h, $0 + add hl, hl + add hl, hl + ld e, a + ld d, $0 + add hl, de + ld de, .Data + add hl, de + ld a, [hl] + pop hl + pop de + ret + +.Data: ; 00:1a58 + db $04, $05, $06, $07 + db $08, $09, $0a, $0b + db $0c, $0d, $0e, $0f + +; slow_step DOWN +; slow_step UP +; slow_step LEFT +; slow_step RIGHT +; step DOWN +; step UP +; step LEFT +; step RIGHT +; big_step DOWN +; big_step UP +; big_step LEFT +; big_step RIGHT @@ -314,10 +314,11 @@ wTitleSequenceOpeningType:: ; cc38 wDebugWarpSelection:: ; cc39 db - ds 6 - -wcc40:: ; cc40 - db +wMovementBufferCount:: db ; cc3a +wMovementBufferObject:: db ; cc3b + ptrba wMovementBufferPointer ; cc3c +wMovementBuffer:: ; cc3f + ds 55 SECTION "CC9C", WRAM0[$CC9C] |