pokered/engine/events/pewter_guys.asm

103 lines
1.9 KiB
NASM
Raw Normal View History

2016-06-12 00:24:04 +00:00
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
2014-05-22 22:13:20 +00:00
ld d, 0
ld e, a
add hl, de
ld d, h
ld e, l
ld hl, PointerTable_37ce6
2015-07-26 02:26:54 +00:00
ld a, [wWhichPewterGuy]
2014-05-22 22:13:20 +00:00
add a
ld b, 0
ld c, a
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
2015-08-31 02:38:41 +00:00
ld a, [wYCoord]
2014-05-22 22:13:20 +00:00
ld b, a
2015-08-31 02:38:41 +00:00
ld a, [wXCoord]
2014-05-22 22:13:20 +00:00
ld c, a
2015-07-26 02:26:54 +00:00
.findMatchingCoordsLoop
2014-05-22 22:13:20 +00:00
ld a, [hli]
cp b
2015-07-26 02:26:54 +00:00
jr nz, .nextEntry1
2014-05-22 22:13:20 +00:00
ld a, [hli]
cp c
2015-07-26 02:26:54 +00:00
jr nz, .nextEntry2
2014-05-22 22:13:20 +00:00
ld a, [hli]
ld h, [hl]
ld l, a
2015-07-26 02:26:54 +00:00
.copyMovementDataLoop
2014-05-22 22:13:20 +00:00
ld a, [hli]
cp $ff
ret z
ld [de], a
inc de
ld a, [wSimulatedJoypadStatesIndex]
2014-05-22 22:13:20 +00:00
inc a
ld [wSimulatedJoypadStatesIndex], a
2015-07-26 02:26:54 +00:00
jr .copyMovementDataLoop
.nextEntry1
2014-05-22 22:13:20 +00:00
inc hl
2015-07-26 02:26:54 +00:00
.nextEntry2
2014-05-22 22:13:20 +00:00
inc hl
inc hl
2015-07-26 02:26:54 +00:00
jr .findMatchingCoordsLoop
2014-05-22 22:13:20 +00:00
2016-06-12 00:24:04 +00:00
PointerTable_37ce6:
2014-05-22 22:13:20 +00:00
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.
2016-06-12 00:24:04 +00:00
PewterMuseumGuyCoords:
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
.up
db D_RIGHT, D_LEFT, $ff
2014-05-22 22:13:20 +00:00
.left
db D_UP, D_RIGHT, $ff
2014-05-22 22:13:20 +00:00
.right
db D_UP, D_LEFT, $ff
2014-05-22 22:13:20 +00:00
; 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
2016-06-12 00:24:04 +00:00
PewterGymGuyCoords:
2014-05-22 22:13:20 +00:00
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
2014-05-22 22:13:20 +00:00
.two
db D_LEFT, D_DOWN, D_RIGHT, D_LEFT, $ff
2014-05-22 22:13:20 +00:00
.three
db D_LEFT, D_LEFT, D_LEFT, $00, $00, $00, $00, $00, $00, $00, $00, $ff
2014-05-22 22:13:20 +00:00
.four
db D_LEFT, D_LEFT, D_UP, D_LEFT, $ff
2014-05-22 22:13:20 +00:00
.five
db D_LEFT, D_DOWN, D_LEFT, $00, $00, $00, $00, $00, $00, $00, $00, $ff