diff options
Diffstat (limited to 'engine/events/pewter_guys.asm')
-rwxr-xr-x | engine/events/pewter_guys.asm | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/engine/events/pewter_guys.asm b/engine/events/pewter_guys.asm new file mode 100755 index 00000000..532fa4bf --- /dev/null +++ b/engine/events/pewter_guys.asm @@ -0,0 +1,102 @@ +PewterGuys: + ld hl, wSimulatedJoypadStatesEnd + ld a, [wSimulatedJoypadStatesIndex] + dec a ; this decrement causes it to overwrite the last byte before $FF in the list + ld [wSimulatedJoypadStatesIndex], a + ld d, 0 + ld e, a + add hl, de + ld d, h + ld e, l + ld hl, PointerTable_37ce6 + ld a, [wWhichPewterGuy] + add a + ld b, 0 + ld c, a + add hl, bc + ld a, [hli] + ld h, [hl] + ld l, a + ld a, [wYCoord] + ld b, a + ld a, [wXCoord] + ld c, a +.findMatchingCoordsLoop + ld a, [hli] + cp b + jr nz, .nextEntry1 + ld a, [hli] + cp c + jr nz, .nextEntry2 + ld a, [hli] + ld h, [hl] + ld l, a +.copyMovementDataLoop + ld a, [hli] + cp $ff + ret z + ld [de], a + inc de + ld a, [wSimulatedJoypadStatesIndex] + inc a + ld [wSimulatedJoypadStatesIndex], a + jr .copyMovementDataLoop +.nextEntry1 + inc hl +.nextEntry2 + inc hl + inc hl + jr .findMatchingCoordsLoop + +PointerTable_37ce6: + dw PewterMuseumGuyCoords + dw PewterGymGuyCoords + +; these are the four coordinates of the spaces below, above, to the left and +; to the right of the museum guy, and pointers to different movements for +; the player to make to get positioned before the main movement. +PewterMuseumGuyCoords: + db 18, 27 + dw .down + db 16, 27 + dw .up + db 17, 26 + dw .left + db 17, 28 + dw .right + +.down + db D_UP, D_UP, $ff +.up + db D_RIGHT, D_LEFT, $ff +.left + db D_UP, D_RIGHT, $ff +.right + db D_UP, D_LEFT, $ff + +; these are the five coordinates which trigger the gym guy and pointers to +; different movements for the player to make to get positioned before the +; main movement +; $00 is a pause +PewterGymGuyCoords: + db 16, 34 + dw .one + db 17, 35 + dw .two + db 18, 37 + dw .three + db 19, 37 + dw .four + db 17, 36 + dw .five + +.one + db D_LEFT, D_DOWN, D_DOWN, D_RIGHT, $ff +.two + db D_LEFT, D_DOWN, D_RIGHT, D_LEFT, $ff +.three + db D_LEFT, D_LEFT, D_LEFT, $00, $00, $00, $00, $00, $00, $00, $00, $ff +.four + db D_LEFT, D_LEFT, D_UP, D_LEFT, $ff +.five + db D_LEFT, D_DOWN, D_LEFT, $00, $00, $00, $00, $00, $00, $00, $00, $ff |