mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-20 16:29:14 +00:00
ootw: more work on guard issues
this code will actually crash
This commit is contained in:
parent
78cd78f27e
commit
db650f467d
61
ootw/alien.s
61
ootw/alien.s
@ -32,6 +32,8 @@ A_WALKING = 1
|
|||||||
A_RUNNING = 2
|
A_RUNNING = 2
|
||||||
A_CROUCHING = 3
|
A_CROUCHING = 3
|
||||||
A_TURNING = 4
|
A_TURNING = 4
|
||||||
|
A_YELLING = 5
|
||||||
|
A_SHOOTING_UP = 6
|
||||||
|
|
||||||
;=======================================
|
;=======================================
|
||||||
; Move alien based on current state
|
; Move alien based on current state
|
||||||
@ -46,13 +48,21 @@ move_alien:
|
|||||||
|
|
||||||
lda alien_state+ALIEN_STATE,X
|
lda alien_state+ALIEN_STATE,X
|
||||||
|
|
||||||
cmp #P_WALKING
|
cmp #A_WALKING
|
||||||
beq move_alien_walking
|
beq move_alien_walking
|
||||||
cmp #P_RUNNING
|
cmp #A_RUNNING
|
||||||
beq move_alien_running
|
beq move_alien_running
|
||||||
|
cmp #A_YELLING
|
||||||
|
beq move_alien_yelling
|
||||||
done_move_alien:
|
done_move_alien:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;======================
|
||||||
|
; yelling
|
||||||
|
move_alien_yelling:
|
||||||
|
inc alien_state+ALIEN_GAIT,X ; cycle through animation
|
||||||
|
rts
|
||||||
|
|
||||||
;======================
|
;======================
|
||||||
; walking
|
; walking
|
||||||
|
|
||||||
@ -109,6 +119,7 @@ astate_table_lo:
|
|||||||
.byte <alien_running ; 02
|
.byte <alien_running ; 02
|
||||||
.byte <alien_crouching ; 03
|
.byte <alien_crouching ; 03
|
||||||
.byte <alien_turning ; 04
|
.byte <alien_turning ; 04
|
||||||
|
.byte <alien_yelling ; 05
|
||||||
|
|
||||||
astate_table_hi:
|
astate_table_hi:
|
||||||
.byte >alien_standing ; 00
|
.byte >alien_standing ; 00
|
||||||
@ -116,6 +127,7 @@ astate_table_hi:
|
|||||||
.byte >alien_running ; 02
|
.byte >alien_running ; 02
|
||||||
.byte >alien_crouching ; 03
|
.byte >alien_crouching ; 03
|
||||||
.byte >alien_turning ; 04
|
.byte >alien_turning ; 04
|
||||||
|
.byte >alien_yelling ; 05
|
||||||
|
|
||||||
; Urgh, make sure this doesn't end up at $FF or you hit the
|
; Urgh, make sure this doesn't end up at $FF or you hit the
|
||||||
; NMOS 6502 bug
|
; NMOS 6502 bug
|
||||||
@ -279,6 +291,51 @@ alien_draw_turning:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; Yelling
|
||||||
|
;================================
|
||||||
|
|
||||||
|
alien_yelling:
|
||||||
|
lda alien_state+ALIEN_GAIT,X
|
||||||
|
and #$10
|
||||||
|
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
and #2
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda alien_yell_progression,Y
|
||||||
|
sta INL
|
||||||
|
|
||||||
|
lda alien_yell_progression+1,Y
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jmp finally_draw_alien
|
||||||
|
|
||||||
|
|
||||||
|
;===============================
|
||||||
|
; Shooting Upward
|
||||||
|
;================================
|
||||||
|
|
||||||
|
alien_shooting_up:
|
||||||
|
lda alien_state+ALIEN_GAIT,X
|
||||||
|
and #$10
|
||||||
|
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
and #2
|
||||||
|
tay
|
||||||
|
|
||||||
|
lda alien_shoot_up_progression,Y
|
||||||
|
sta INL
|
||||||
|
|
||||||
|
lda alien_shoot_up_progression+1,Y
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
jmp finally_draw_alien
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;=============================
|
;=============================
|
||||||
; Actually Draw Alien
|
; Actually Draw Alien
|
||||||
;=============================
|
;=============================
|
||||||
|
@ -69,6 +69,8 @@ cage_loop:
|
|||||||
sta YPOS
|
sta YPOS
|
||||||
|
|
||||||
lda CAGE_AMPLITUDE
|
lda CAGE_AMPLITUDE
|
||||||
|
cmp #3
|
||||||
|
beq cage_amp_2
|
||||||
cmp #2
|
cmp #2
|
||||||
beq cage_amp_2
|
beq cage_amp_2
|
||||||
cmp #1
|
cmp #1
|
||||||
@ -171,15 +173,44 @@ patrolling_right:
|
|||||||
sta alien0_state
|
sta alien0_state
|
||||||
|
|
||||||
patrolling_move:
|
patrolling_move:
|
||||||
jsr move_alien
|
|
||||||
|
|
||||||
jsr draw_alien
|
lda CAGE_AMPLITUDE
|
||||||
|
cmp #2
|
||||||
|
beq guard_yelling
|
||||||
|
cmp #3
|
||||||
|
beq guard_shooting
|
||||||
|
|
||||||
|
jmp guard_move_and_draw
|
||||||
|
|
||||||
|
guard_yelling:
|
||||||
|
|
||||||
|
lda alien0_x
|
||||||
|
cmp #21
|
||||||
|
bne guard_move_and_draw
|
||||||
|
|
||||||
|
lda #A_YELLING
|
||||||
|
sta alien0_state
|
||||||
|
jmp guard_move_and_draw
|
||||||
|
|
||||||
guard_shooting:
|
guard_shooting:
|
||||||
|
|
||||||
; guard shooting
|
; guard shooting
|
||||||
|
|
||||||
|
lda alien0_x
|
||||||
|
cmp #21
|
||||||
|
bne guard_move_and_draw
|
||||||
|
|
||||||
|
lda #A_SHOOTING_UP
|
||||||
|
sta alien0_state
|
||||||
|
jmp guard_move_and_draw
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
guard_move_and_draw:
|
||||||
|
|
||||||
|
jsr move_alien
|
||||||
|
jsr draw_alien
|
||||||
|
jmp done_cage_guard
|
||||||
|
|
||||||
|
|
||||||
done_cage_guard:
|
done_cage_guard:
|
||||||
@ -204,10 +235,15 @@ check_amp1:
|
|||||||
check_amp2:
|
check_amp2:
|
||||||
cmp #2
|
cmp #2
|
||||||
bne check_amp3
|
bne check_amp3
|
||||||
|
; if amp=2, guard shouts
|
||||||
|
jmp cage_continue
|
||||||
|
|
||||||
check_amp3:
|
check_amp3:
|
||||||
cmp #3
|
cmp #3
|
||||||
|
bne check_amp4 ; if amp=3, guard shoots
|
||||||
|
|
||||||
|
check_amp4:
|
||||||
|
cmp #4 ; if amp=4, cage falls
|
||||||
bne cage_continue
|
bne cage_continue
|
||||||
|
|
||||||
|
|
||||||
|
@ -395,3 +395,60 @@ alien_turning_sprite:
|
|||||||
.byte $aa,$77,$55,$aa,$aa
|
.byte $aa,$77,$55,$aa,$aa
|
||||||
.byte $07,$aa,$05,$aa,$aa
|
.byte $07,$aa,$05,$aa,$aa
|
||||||
.byte $00,$aa,$00,$aa,$aa
|
.byte $00,$aa,$00,$aa,$aa
|
||||||
|
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
;=====================
|
||||||
|
; YELLING
|
||||||
|
;=====================
|
||||||
|
;=====================
|
||||||
|
|
||||||
|
alien_yell_progression:
|
||||||
|
.word alien_yelling_1
|
||||||
|
.word alien_yelling_2
|
||||||
|
|
||||||
|
alien_yelling_1:
|
||||||
|
.byte $5,$8
|
||||||
|
.byte $aa,$7a,$57,$75,$aa
|
||||||
|
.byte $0a,$a7,$07,$00,$aa
|
||||||
|
.byte $00,$aa,$00,$77,$aa
|
||||||
|
.byte $aa,$55,$10,$77,$7a
|
||||||
|
.byte $aa,$aa,$00,$00,$a7
|
||||||
|
.byte $aa,$aa,$55,$77,$aa
|
||||||
|
.byte $aa,$aa,$a5,$07,$aa
|
||||||
|
.byte $aa,$0a,$00,$00,$aa
|
||||||
|
|
||||||
|
alien_yelling_2:
|
||||||
|
.byte $5,$8
|
||||||
|
.byte $aa,$7a,$57,$75,$aa
|
||||||
|
.byte $00,$77,$07,$00,$aa
|
||||||
|
.byte $0a,$5a,$00,$77,$aa
|
||||||
|
.byte $aa,$a5,$10,$77,$7a
|
||||||
|
.byte $aa,$aa,$00,$00,$a7
|
||||||
|
.byte $aa,$aa,$55,$77,$aa
|
||||||
|
.byte $aa,$aa,$a5,$07,$aa
|
||||||
|
.byte $aa,$0a,$00,$00,$aa
|
||||||
|
|
||||||
|
|
||||||
|
;=====================
|
||||||
|
;=====================
|
||||||
|
; SHOOTING UPWARD
|
||||||
|
;=====================
|
||||||
|
;=====================
|
||||||
|
|
||||||
|
alien_shoot_up_progression:
|
||||||
|
.word alien_shooting_up_sprite
|
||||||
|
.word alien_shooting_up_sprite
|
||||||
|
.word alien_yelling_1
|
||||||
|
.word alien_yelling_2
|
||||||
|
|
||||||
|
alien_shooting_up_sprite:
|
||||||
|
.byte $5,$8
|
||||||
|
.byte $00,$7a,$57,$75,$aa
|
||||||
|
.byte $00,$77,$07,$00,$aa
|
||||||
|
.byte $55,$aa,$00,$77,$aa
|
||||||
|
.byte $aa,$55,$10,$77,$7a
|
||||||
|
.byte $aa,$aa,$00,$00,$a7
|
||||||
|
.byte $aa,$aa,$55,$77,$aa
|
||||||
|
.byte $aa,$aa,$a5,$07,$aa
|
||||||
|
.byte $aa,$0a,$00,$00,$aa
|
||||||
|
Loading…
x
Reference in New Issue
Block a user