mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-11 16:31:16 +00:00
ootw: start work on ceiling slugs
This commit is contained in:
parent
0a24ac5d86
commit
abac1ff1d6
@ -1,46 +1,62 @@
|
|||||||
; Sluggy Freelance
|
; Sluggy Freelance
|
||||||
|
|
||||||
|
|
||||||
|
; slug behavior:
|
||||||
|
; cavern1: three slugs: 2 on ceiling
|
||||||
|
; cavern2: four slugs: 1 on ceiling, but 3 more will respawn on ceiling
|
||||||
|
|
||||||
|
; Crawl forward. When close, attack.
|
||||||
|
; Ceiling: crawl until within X of physicist
|
||||||
|
; then swing a few times and fall
|
||||||
|
; face toward physicist when start crawling
|
||||||
|
; Attacks: only attack if on ground and physicist is on ground
|
||||||
|
; will attempt to attack if you jump over
|
||||||
|
; Off edge of screen: will disappear but will respawn if leave/re-enter
|
||||||
|
|
||||||
;==================================
|
;==================================
|
||||||
; draw slugs
|
; draw slugs
|
||||||
;==================================
|
;==================================
|
||||||
|
|
||||||
SLUG_STRUCT_SIZE = 7
|
SLUG_STRUCT_SIZE = 8
|
||||||
|
|
||||||
; out-state 0=dead 1=normal (2=falling?)
|
; TODO: use less space? merge some of these?
|
||||||
|
|
||||||
slugg0_out: .byte 1 ; 0
|
slugg0_out: .byte 1 ; 0
|
||||||
slugg0_attack: .byte 0 ; 1
|
slugg0_attack: .byte 0 ; 1
|
||||||
slugg0_dying: .byte 0 ; 2
|
slugg0_dying: .byte 0 ; 2
|
||||||
slugg0_x: .byte 30 ; 3
|
slugg0_x: .byte 30 ; 3
|
||||||
slugg0_y: .byte 30 ; 3
|
slugg0_y: .byte 30 ; 4
|
||||||
slugg0_dir: .byte $ff ; 4
|
slugg0_dir: .byte $ff ; 5
|
||||||
slugg0_gait: .byte 0 ; 5
|
slugg0_gait: .byte 0 ; 6
|
||||||
|
slugg0_falling: .byte 0 ; 7
|
||||||
|
|
||||||
slugg1_out: .byte 1 ; 6
|
slugg1_out: .byte 1 ; 8
|
||||||
slugg1_attack: .byte 0
|
slugg1_attack: .byte 0
|
||||||
slugg1_dying: .byte 0
|
slugg1_dying: .byte 0
|
||||||
slugg1_x: .byte 30
|
slugg1_x: .byte 30
|
||||||
slugg1_y: .byte 30
|
slugg1_y: .byte 30
|
||||||
slugg1_dir: .byte $ff
|
slugg1_dir: .byte $ff
|
||||||
slugg1_gait: .byte 0
|
slugg1_gait: .byte 0
|
||||||
|
slugg1_falling: .byte 0
|
||||||
|
|
||||||
slugg2_out: .byte 1
|
slugg2_out: .byte 1
|
||||||
slugg2_attack: .byte 0
|
slugg2_attack: .byte 0
|
||||||
slugg2_dying: .byte 0
|
slugg2_dying: .byte 0
|
||||||
slugg2_x: .byte 30
|
slugg2_x: .byte 30
|
||||||
slugg2_y: .byte 30
|
slugg2_y: .byte 0
|
||||||
slugg2_dir: .byte $ff
|
slugg2_dir: .byte $ff
|
||||||
slugg2_gait: .byte 0
|
slugg2_gait: .byte 0
|
||||||
|
slugg2_falling: .byte 0
|
||||||
|
|
||||||
|
|
||||||
slugg3_out: .byte 1 ; 0
|
slugg3_out: .byte 1 ; 0
|
||||||
slugg3_attack: .byte 0 ; 1
|
slugg3_attack: .byte 0 ; 1
|
||||||
slugg3_dying: .byte 0 ; 2
|
slugg3_dying: .byte 0 ; 2
|
||||||
slugg3_x: .byte 30 ; 3
|
slugg3_x: .byte 30 ; 3
|
||||||
slugg3_y: .byte 30 ; 3
|
slugg3_y: .byte 30 ; 4
|
||||||
slugg3_dir: .byte $ff ; 4
|
slugg3_dir: .byte $ff ; 5
|
||||||
slugg3_gait: .byte 0 ; 5
|
slugg3_gait: .byte 0 ; 6
|
||||||
|
slugg3_falling: .byte 0 ; 7
|
||||||
|
|
||||||
slugg4_out: .byte 1 ; 6
|
slugg4_out: .byte 1 ; 6
|
||||||
slugg4_attack: .byte 0
|
slugg4_attack: .byte 0
|
||||||
@ -49,6 +65,7 @@ slugg4_x: .byte 30
|
|||||||
slugg4_y: .byte 30
|
slugg4_y: .byte 30
|
||||||
slugg4_dir: .byte $ff
|
slugg4_dir: .byte $ff
|
||||||
slugg4_gait: .byte 0
|
slugg4_gait: .byte 0
|
||||||
|
slugg4_falling: .byte 0
|
||||||
|
|
||||||
slugg5_out: .byte 1
|
slugg5_out: .byte 1
|
||||||
slugg5_attack: .byte 0
|
slugg5_attack: .byte 0
|
||||||
@ -57,23 +74,25 @@ slugg5_x: .byte 30
|
|||||||
slugg5_y: .byte 30
|
slugg5_y: .byte 30
|
||||||
slugg5_dir: .byte $ff
|
slugg5_dir: .byte $ff
|
||||||
slugg5_gait: .byte 0
|
slugg5_gait: .byte 0
|
||||||
|
slugg5_falling: .byte 0
|
||||||
|
|
||||||
slugg6_out: .byte 1
|
slugg6_out: .byte 1
|
||||||
slugg6_attack: .byte 0
|
slugg6_attack: .byte 0
|
||||||
slugg6_dying: .byte 0
|
slugg6_dying: .byte 0
|
||||||
slugg6_x: .byte 30
|
slugg6_x: .byte 30
|
||||||
slugg6_y: .byte 30
|
slugg6_y: .byte 0
|
||||||
slugg6_dir: .byte $ff
|
slugg6_dir: .byte $ff
|
||||||
slugg6_gait: .byte 0
|
slugg6_gait: .byte 0
|
||||||
|
slugg6_falling: .byte 0
|
||||||
|
|
||||||
slugg7_out: .byte 1
|
slugg7_out: .byte 1
|
||||||
slugg7_attack: .byte 0
|
slugg7_attack: .byte 0
|
||||||
slugg7_dying: .byte 0
|
slugg7_dying: .byte 0
|
||||||
slugg7_x: .byte 30
|
slugg7_x: .byte 30
|
||||||
slugg7_y: .byte 30
|
slugg7_y: .byte 0
|
||||||
slugg7_dir: .byte $ff
|
slugg7_dir: .byte $ff
|
||||||
slugg7_gait: .byte 0
|
slugg7_gait: .byte 0
|
||||||
|
slugg7_falling: .byte 0
|
||||||
|
|
||||||
|
|
||||||
;========================
|
;========================
|
||||||
@ -144,7 +163,7 @@ slugx_not_too_high:
|
|||||||
draw_slugs:
|
draw_slugs:
|
||||||
|
|
||||||
ds_smc1:
|
ds_smc1:
|
||||||
ldx #0
|
ldx #0 ; loop through all. self-modify
|
||||||
stx WHICH_SLUG
|
stx WHICH_SLUG
|
||||||
draw_slugs_loop:
|
draw_slugs_loop:
|
||||||
ldx WHICH_SLUG
|
ldx WHICH_SLUG
|
||||||
@ -157,6 +176,10 @@ check_kicked:
|
|||||||
cmp #1
|
cmp #1
|
||||||
bne check_attack
|
bne check_attack
|
||||||
|
|
||||||
|
lda slugg0_y,X ; only kick if on ground
|
||||||
|
cmp #30
|
||||||
|
bne check_attack
|
||||||
|
|
||||||
;==================
|
;==================
|
||||||
; see if kicked
|
; see if kicked
|
||||||
|
|
||||||
@ -184,10 +207,18 @@ check_attack:
|
|||||||
;==================
|
;==================
|
||||||
; see if attack
|
; see if attack
|
||||||
|
|
||||||
lda slugg0_out,X
|
lda slugg0_out,X ; only attack if out
|
||||||
cmp #1
|
cmp #1
|
||||||
bne no_attack
|
bne no_attack
|
||||||
|
|
||||||
|
lda slugg0_y,X ; only attack if on ground
|
||||||
|
cmp #30
|
||||||
|
bne no_attack
|
||||||
|
|
||||||
|
lda PHYSICIST_Y ; only attack if physicist on ground
|
||||||
|
cmp #22
|
||||||
|
bne no_attack
|
||||||
|
|
||||||
lda PHYSICIST_X
|
lda PHYSICIST_X
|
||||||
sec
|
sec
|
||||||
sbc slugg0_x,X ; -2 to +2
|
sbc slugg0_x,X ; -2 to +2
|
||||||
|
@ -10,11 +10,21 @@ slug1:
|
|||||||
.byte $0a,$0a,$0a,$0a
|
.byte $0a,$0a,$0a,$0a
|
||||||
|
|
||||||
slug2:
|
slug2:
|
||||||
.byte $4,$4
|
.byte $3,$4
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $0a,$a0,$0a,$aa
|
.byte $0a,$a0,$0a
|
||||||
|
|
||||||
|
;===============
|
||||||
|
;===============
|
||||||
|
; slug on roof
|
||||||
|
; swings a bit, then falls
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;=======================
|
||||||
|
; slug dying
|
||||||
|
|
||||||
slug_die_progression:
|
slug_die_progression:
|
||||||
.word slug_die4 ; 0
|
.word slug_die4 ; 0
|
||||||
@ -25,18 +35,18 @@ slug_die_progression:
|
|||||||
.word slug_die1 ; 10
|
.word slug_die1 ; 10
|
||||||
|
|
||||||
slug_die1:
|
slug_die1:
|
||||||
.byte $4,$4
|
.byte $2,$4
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa
|
||||||
.byte $0a,$aa,$aa,$aa
|
.byte $0a,$aa
|
||||||
.byte $aa,$0a,$aa,$aa
|
.byte $aa,$0a
|
||||||
|
|
||||||
slug_die2:
|
slug_die2:
|
||||||
.byte $4,$4
|
.byte $3,$4
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $0a,$aa,$aa,$aa
|
.byte $0a,$aa,$aa
|
||||||
.byte $aa,$0a,$aa,$aa
|
.byte $aa,$0a,$aa
|
||||||
.byte $aa,$aa,$a0,$aa
|
.byte $aa,$aa,$a0
|
||||||
|
|
||||||
slug_die3:
|
slug_die3:
|
||||||
.byte $4,$4
|
.byte $4,$4
|
||||||
@ -52,7 +62,9 @@ slug_die4:
|
|||||||
.byte $aa,$aa,$aa,$aa,$a0
|
.byte $aa,$aa,$aa,$aa,$a0
|
||||||
.byte $aa,$aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa,$aa,$aa
|
||||||
|
|
||||||
|
;===============
|
||||||
|
;===============
|
||||||
|
; slug attacking
|
||||||
|
|
||||||
slug_attack_progression:
|
slug_attack_progression:
|
||||||
.word slug_attack0
|
.word slug_attack0
|
||||||
@ -65,60 +77,39 @@ slug_attack_progression:
|
|||||||
.word slug_attack3
|
.word slug_attack3
|
||||||
|
|
||||||
slug_attack0:
|
slug_attack0:
|
||||||
.byte $4,$4
|
.byte $3,$4
|
||||||
.byte $aa,$aa,$00,$aa
|
.byte $aa,$aa,$00
|
||||||
.byte $aa,$aa,$00,$aa
|
.byte $aa,$aa,$00
|
||||||
.byte $aa,$aa,$00,$aa
|
.byte $aa,$aa,$00
|
||||||
.byte $aa,$aa,$00,$aa
|
.byte $aa,$aa,$00
|
||||||
|
|
||||||
slug_attack1:
|
slug_attack1:
|
||||||
.byte $4,$4
|
.byte $3,$4
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $00,$aa,$aa,$aa
|
.byte $00,$aa,$aa
|
||||||
.byte $aa,$00,$aa,$aa
|
.byte $aa,$00,$aa
|
||||||
.byte $aa,$aa,$00,$aa
|
.byte $aa,$aa,$00
|
||||||
|
|
||||||
slug_attack2:
|
slug_attack2:
|
||||||
.byte $4,$4
|
.byte $3,$4
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $00,$00,$00,$aa
|
.byte $00,$00,$00
|
||||||
|
|
||||||
slug_attack3:
|
slug_attack3:
|
||||||
.byte $4,$4
|
.byte $3,$4
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa,$aa,$aa
|
||||||
.byte $aa,$aa,$00,$aa
|
.byte $aa,$aa,$00
|
||||||
.byte $aa,$00,$aa,$aa
|
.byte $aa,$00,$aa
|
||||||
.byte $00,$aa,$aa,$aa
|
.byte $00,$aa,$aa
|
||||||
|
|
||||||
slug_attack4:
|
slug_attack4:
|
||||||
.byte $4,$4
|
.byte $1,$4
|
||||||
.byte $aa,$aa,$aa,$aa
|
.byte $aa
|
||||||
.byte $00,$aa,$aa,$aa
|
.byte $00
|
||||||
.byte $00,$aa,$aa,$aa
|
.byte $00
|
||||||
.byte $00,$aa,$aa,$aa
|
.byte $00
|
||||||
|
|
||||||
;slug_attack5:
|
|
||||||
; .byte $4,$4
|
|
||||||
; .byte $aa,$aa,$aa,$aa
|
|
||||||
; .byte $00,$aa,$aa,$aa
|
|
||||||
; .byte $aa,$00,$aa,$aa
|
|
||||||
; .byte $aa,$aa,$00,$aa
|
|
||||||
|
|
||||||
;slug_attack6:
|
|
||||||
; .byte $4,$4
|
|
||||||
; .byte $aa,$aa,$aa,$aa
|
|
||||||
; .byte $aa,$aa,$aa,$aa
|
|
||||||
; .byte $aa,$aa,$aa,$aa
|
|
||||||
; .byte $00,$00,$00,$aa
|
|
||||||
|
|
||||||
;slug_attack7:
|
|
||||||
; .byte $4,$4
|
|
||||||
; .byte $aa,$aa,$aa,$aa
|
|
||||||
; .byte $aa,$aa,$00,$aa
|
|
||||||
; .byte $aa,$00,$aa,$aa
|
|
||||||
; .byte $00,$aa,$aa,$aa
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user