mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-02-05 21:34:30 +00:00
fish: more fish state tables
This commit is contained in:
parent
62762718ca
commit
e4f2f591b1
@ -355,26 +355,67 @@ draw_common_animation:
|
|||||||
|
|
||||||
jsr hgr_draw_sprite_big
|
jsr hgr_draw_sprite_big
|
||||||
|
|
||||||
|
;============================
|
||||||
;============================
|
;============================
|
||||||
; handle fish
|
; handle fish
|
||||||
;============================
|
;============================
|
||||||
|
;============================
|
||||||
|
|
||||||
|
|
||||||
|
;============================
|
||||||
|
; deploy fish
|
||||||
|
;============================
|
||||||
; TODO: if fish not out, randomly start one?
|
; TODO: if fish not out, randomly start one?
|
||||||
handle_fish:
|
handle_fish:
|
||||||
|
|
||||||
handle_red_fish:
|
handle_red_fish:
|
||||||
lda RED_FISH_STATE_PTR
|
lda RED_FISH_STATE_PTR
|
||||||
bpl done_handle_fish ; positive means fish is active
|
bpl handle_grey_fish ; positive means fish is active
|
||||||
|
|
||||||
; create new red fish
|
; create new red fish
|
||||||
lda #0
|
lda #0
|
||||||
sta RED_FISH_STATE_PTR
|
sta RED_FISH_STATE_PTR
|
||||||
|
|
||||||
|
lda #FISH_SPRITE_LONG
|
||||||
|
sta RED_FISH_SPRITE
|
||||||
|
|
||||||
lda #17
|
lda #17
|
||||||
sta RED_FISH_X
|
sta RED_FISH_X
|
||||||
lda #180
|
lda #180
|
||||||
sta RED_FISH_Y
|
sta RED_FISH_Y
|
||||||
|
|
||||||
|
handle_grey_fish:
|
||||||
|
lda GREY_FISH_STATE_PTR
|
||||||
|
bpl handle_green_fish ; positive means fish is active
|
||||||
|
|
||||||
|
; create new grey fish
|
||||||
|
; lda #0
|
||||||
|
; sta GREY_FISH_STATE_PTR
|
||||||
|
|
||||||
|
lda #FISH_SPRITE_LEFT
|
||||||
|
sta GREY_FISH_SPRITE
|
||||||
|
|
||||||
|
lda #31
|
||||||
|
sta GREY_FISH_X
|
||||||
|
lda #170
|
||||||
|
sta GREY_FISH_Y
|
||||||
|
|
||||||
|
handle_green_fish:
|
||||||
|
lda GREEN_FISH_STATE_PTR
|
||||||
|
bpl done_handle_fish ; positive means fish is active
|
||||||
|
|
||||||
|
; create new green fish
|
||||||
|
; lda #0
|
||||||
|
; sta GREEN_FISH_STATE_PTR
|
||||||
|
|
||||||
|
lda #FISH_SPRITE_RIGHT
|
||||||
|
sta GREEN_FISH_SPRITE
|
||||||
|
|
||||||
|
lda #11
|
||||||
|
sta GREEN_FISH_X
|
||||||
|
lda #146
|
||||||
|
sta GREEN_FISH_Y
|
||||||
|
|
||||||
done_handle_fish:
|
done_handle_fish:
|
||||||
|
|
||||||
|
|
||||||
@ -393,31 +434,30 @@ draw_red_fish:
|
|||||||
|
|
||||||
draw_grey_fish:
|
draw_grey_fish:
|
||||||
|
|
||||||
.if 0
|
ldx GREY_FISH_STATE_PTR ; negative means no fish
|
||||||
|
bmi draw_green_fish
|
||||||
|
|
||||||
lda #<left_fish_sprite
|
ldy grey_fish_behavior,X
|
||||||
sta INL
|
|
||||||
lda #>left_fish_sprite
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
lda #<grey_fish_mask
|
ldx #1 ; which fish
|
||||||
sta MASKL
|
|
||||||
lda #>grey_fish_mask
|
|
||||||
sta MASKH
|
|
||||||
|
|
||||||
|
jsr draw_fish
|
||||||
|
|
||||||
lda #18
|
draw_green_fish:
|
||||||
sta SPRITE_X
|
|
||||||
|
|
||||||
lda #150
|
ldx GREEN_FISH_STATE_PTR ; negative means no fish
|
||||||
sta SPRITE_Y
|
bmi done_draw_fish
|
||||||
|
|
||||||
jsr hgr_draw_sprite_mask
|
ldy green_fish_behavior,X
|
||||||
.endif
|
|
||||||
|
|
||||||
|
ldx #2 ; which fish
|
||||||
|
|
||||||
|
jsr draw_fish
|
||||||
|
|
||||||
|
done_draw_fish:
|
||||||
|
|
||||||
;============================
|
;============================
|
||||||
; draw reed (over fish)
|
; draw bubbles
|
||||||
|
|
||||||
;==========================
|
;==========================
|
||||||
; draw score
|
; draw score
|
||||||
@ -618,21 +658,10 @@ update_fish:
|
|||||||
pha
|
pha
|
||||||
rts
|
rts
|
||||||
done_update_fish:
|
done_update_fish:
|
||||||
inc RED_FISH_STATE_PTR,X ; point to next
|
|
||||||
|
|
||||||
; set up sprite
|
inc RED_FISH_STATE_PTR,X ; point to next state
|
||||||
|
|
||||||
lda #<big_fish_sprite
|
; set up co-ords
|
||||||
sta INL
|
|
||||||
lda #>big_fish_sprite
|
|
||||||
sta INH
|
|
||||||
|
|
||||||
; set up mask
|
|
||||||
|
|
||||||
lda #<red_fish_mask
|
|
||||||
sta MASKL
|
|
||||||
lda #>red_fish_mask
|
|
||||||
sta MASKH
|
|
||||||
|
|
||||||
lda RED_FISH_X,X
|
lda RED_FISH_X,X
|
||||||
sta SPRITE_X
|
sta SPRITE_X
|
||||||
@ -640,9 +669,24 @@ done_update_fish:
|
|||||||
lda RED_FISH_Y,X
|
lda RED_FISH_Y,X
|
||||||
sta SPRITE_Y
|
sta SPRITE_Y
|
||||||
|
|
||||||
jsr hgr_draw_sprite_mask
|
|
||||||
|
|
||||||
inc RED_FISH_STATE_PTR,X
|
; set up sprite
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
lda fish_sprite_table_l,X
|
||||||
|
sta INL
|
||||||
|
lda fish_sprite_table_h,X
|
||||||
|
sta INH
|
||||||
|
|
||||||
|
; set up mask
|
||||||
|
|
||||||
|
lda fish_mask_table_l,X
|
||||||
|
sta MASKL
|
||||||
|
lda fish_mask_table_h,X
|
||||||
|
sta MASKH
|
||||||
|
|
||||||
|
jsr hgr_draw_sprite_mask
|
||||||
|
|
||||||
no_draw_fish:
|
no_draw_fish:
|
||||||
rts
|
rts
|
||||||
@ -672,22 +716,46 @@ move_fish_up:
|
|||||||
jmp done_update_fish
|
jmp done_update_fish
|
||||||
|
|
||||||
move_fish_right:
|
move_fish_right:
|
||||||
inc RED_FISH_X,X
|
inc RED_FISH_X,X ; move right
|
||||||
jmp done_update_fish
|
jmp done_update_fish
|
||||||
|
|
||||||
|
move_fish_left_up:
|
||||||
|
dec RED_FISH_Y,X ; move up by one
|
||||||
|
; dec RED_FISH_Y,X
|
||||||
|
dec RED_FISH_X,X ; move left
|
||||||
|
jmp done_update_fish
|
||||||
|
|
||||||
|
move_fish_left_down:
|
||||||
|
inc RED_FISH_Y,X ; move down by one
|
||||||
|
; inc RED_FISH_Y,X
|
||||||
|
dec RED_FISH_X,X ; move left
|
||||||
|
jmp done_update_fish
|
||||||
|
|
||||||
|
move_fish_flip:
|
||||||
|
lda #FISH_SPRITE_RIGHT
|
||||||
|
sta RED_FISH_SPRITE,X
|
||||||
|
jmp done_update_fish
|
||||||
|
|
||||||
move_fish_fast_right:
|
move_fish_fast_right:
|
||||||
move_fish_left_up:
|
|
||||||
move_fish_left_down:
|
|
||||||
move_fish_bubble:
|
move_fish_bubble:
|
||||||
move_fish_flip:
|
|
||||||
move_fish_pause:
|
move_fish_pause:
|
||||||
jmp done_update_fish
|
jmp done_update_fish
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
fish_sprite_table_l:
|
||||||
|
.byte <big_fish_sprite,<left_fish_sprite,<right_fish_sprite
|
||||||
|
.byte <red_fish_sprite,<grey_fish_sprite,<green_fish_sprite
|
||||||
|
fish_sprite_table_h:
|
||||||
|
.byte >big_fish_sprite,>left_fish_sprite,>right_fish_sprite
|
||||||
|
.byte >red_fish_sprite,>grey_fish_sprite,>green_fish_sprite
|
||||||
|
fish_mask_table_l:
|
||||||
|
.byte <red_fish_mask,<grey_fish_mask,<green_fish_mask
|
||||||
|
.byte <red_fish_mask,<grey_fish_mask,<green_fish_mask
|
||||||
|
fish_mask_table_h:
|
||||||
|
.byte >red_fish_mask,>grey_fish_mask,>green_fish_mask
|
||||||
|
.byte >red_fish_mask,>grey_fish_mask,>green_fish_mask
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -814,10 +882,53 @@ red_fish_behavior:
|
|||||||
; 5 frames right (center of boat) blows bubble
|
; 5 frames right (center of boat) blows bubble
|
||||||
; 15 frames to move off right side
|
; 15 frames to move off right side
|
||||||
|
|
||||||
|
grey_fish_behavior:
|
||||||
|
; LEFT UP 8, gradually
|
||||||
|
.byte FISH_LEFT_UP,FISH_PAUSE,FISH_LEFT_UP,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_UP,FISH_PAUSE,FISH_LEFT_UP,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_UP,FISH_PAUSE,FISH_LEFT_UP,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_UP,FISH_PAUSE,FISH_LEFT_UP,FISH_PAUSE
|
||||||
|
; bubble
|
||||||
|
.byte FISH_BUBBLE
|
||||||
|
; LEFT DOWN 12, gradually
|
||||||
|
.byte FISH_LEFT_DOWN,FISH_PAUSE,FISH_LEFT_DOWN,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_DOWN,FISH_PAUSE,FISH_LEFT_DOWN,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_DOWN,FISH_PAUSE,FISH_LEFT_DOWN,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_DOWN,FISH_PAUSE,FISH_LEFT_DOWN,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_DOWN,FISH_PAUSE,FISH_LEFT_DOWN,FISH_PAUSE
|
||||||
|
.byte FISH_LEFT_DOWN,FISH_PAUSE,FISH_LEFT_DOWN,FISH_PAUSE
|
||||||
|
; turn right
|
||||||
|
.byte FISH_PAUSE
|
||||||
|
.byte FISH_FLIP
|
||||||
|
.byte FISH_PAUSE
|
||||||
|
; slow right 5
|
||||||
|
.byte FISH_RIGHT,FISH_PAUSE,FISH_RIGHT,FISH_PAUSE
|
||||||
|
.byte FISH_RIGHT,FISH_PAUSE,FISH_RIGHT,FISH_PAUSE
|
||||||
|
.byte FISH_RIGHT,FISH_PAUSE
|
||||||
|
; bubble
|
||||||
|
.byte FISH_BUBBLE
|
||||||
|
; fast right 15
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_DONE
|
||||||
|
|
||||||
|
|
||||||
; right fish (green) appears in left reeds approx 76, 146
|
; right fish (green) appears in left reeds approx 76, 146
|
||||||
; blows bubble
|
; blows bubble
|
||||||
; right 12 off screen
|
; right 12 off screen
|
||||||
|
|
||||||
|
green_fish_behavior:
|
||||||
|
; bubble
|
||||||
|
.byte FISH_BUBBLE
|
||||||
|
; fast right 15
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_RIGHT,FISH_RIGHT,FISH_RIGHT
|
||||||
|
.byte FISH_DONE
|
||||||
|
|
||||||
; bubbles
|
; bubbles
|
||||||
; go medium/large/medium
|
; go medium/large/medium
|
||||||
; some go mostly up, some wiggle left right
|
; some go mostly up, some wiggle left right
|
||||||
|
@ -141,8 +141,9 @@ SCORE_L = $E0
|
|||||||
SCORE_H = $E1
|
SCORE_H = $E1
|
||||||
|
|
||||||
RED_FISH_STATE_PTR = $E2
|
RED_FISH_STATE_PTR = $E2
|
||||||
GREEN_FISH_STATE_PTR = $E3
|
GREY_FISH_STATE_PTR = $E3
|
||||||
GREY_FISH_STATE_PTR = $E4
|
GREEN_FISH_STATE_PTR = $E4
|
||||||
|
|
||||||
FISH_NONE = $FF
|
FISH_NONE = $FF
|
||||||
FISH_PAUSE = $00
|
FISH_PAUSE = $00
|
||||||
FISH_UP = $01
|
FISH_UP = $01
|
||||||
@ -155,17 +156,22 @@ GREY_FISH_STATE_PTR = $E4
|
|||||||
FISH_DONE = $08
|
FISH_DONE = $08
|
||||||
|
|
||||||
RED_FISH_X = $E5
|
RED_FISH_X = $E5
|
||||||
GREEN_FISH_X = $E6
|
GREY_FISH_X = $E6
|
||||||
GREY_FISH_X = $E7
|
GREEN_FISH_X = $E7
|
||||||
|
|
||||||
RED_FISH_Y = $E8
|
RED_FISH_Y = $E8
|
||||||
GREEN_FISH_Y = $E9
|
GREY_FISH_Y = $E9
|
||||||
GREY_FISH_Y = $EA
|
GREEN_FISH_Y = $EA
|
||||||
|
|
||||||
RED_FISH_SPRITE = $EB
|
RED_FISH_SPRITE = $EB
|
||||||
GREEN_FISH_SPRITE= $EC
|
GREY_FISH_SPRITE= $EC
|
||||||
GREY_FISH_SPRITE= $ED
|
GREEN_FISH_SPRITE= $ED
|
||||||
|
FISH_SPRITE_LONG = $00
|
||||||
|
FISH_SPRITE_LEFT = $01
|
||||||
|
FISH_SPRITE_RIGHT = $02
|
||||||
|
FISH_SPRITE_RED = $03
|
||||||
|
FISH_SPRITE_GREY = $04
|
||||||
|
FISH_SPRITE_GREEN = $05
|
||||||
|
|
||||||
DISP_PAGE = $EE
|
DISP_PAGE = $EE
|
||||||
DRAW_PAGE = $EF
|
DRAW_PAGE = $EF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user