mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-03-04 04:30:18 +00:00
fish: hook up fish state machine
This commit is contained in:
parent
111a233a5b
commit
62762718ca
@ -222,10 +222,10 @@ load_background:
|
||||
sta SCORE_H
|
||||
|
||||
; init fish
|
||||
lda #$FF
|
||||
sta RED_FISH_STATE
|
||||
sta GREY_FISH_STATE
|
||||
sta GREEN_FISH_STATE
|
||||
lda #FISH_NONE
|
||||
sta RED_FISH_STATE_PTR
|
||||
sta GREY_FISH_STATE_PTR
|
||||
sta GREEN_FISH_STATE_PTR
|
||||
|
||||
|
||||
; start at least 8k in?
|
||||
@ -363,12 +363,17 @@ draw_common_animation:
|
||||
handle_fish:
|
||||
|
||||
handle_red_fish:
|
||||
lda RED_FISH_STATE
|
||||
lda RED_FISH_STATE_PTR
|
||||
bpl done_handle_fish ; positive means fish is active
|
||||
|
||||
; create new red fish
|
||||
lda #0
|
||||
sta RED_FISH_STATE
|
||||
sta RED_FISH_STATE_PTR
|
||||
|
||||
lda #17
|
||||
sta RED_FISH_X
|
||||
lda #180
|
||||
sta RED_FISH_Y
|
||||
|
||||
done_handle_fish:
|
||||
|
||||
@ -376,52 +381,18 @@ done_handle_fish:
|
||||
; draw red fish
|
||||
|
||||
draw_red_fish:
|
||||
ldx RED_FISH_STATE
|
||||
|
||||
ldx RED_FISH_STATE_PTR
|
||||
bmi draw_grey_fish ; negative means no fish
|
||||
|
||||
lda #<big_fish_sprite
|
||||
sta INL
|
||||
lda #>big_fish_sprite
|
||||
sta INH
|
||||
ldy red_fish_behavior,X
|
||||
|
||||
lda #<red_fish_mask
|
||||
sta MASKL
|
||||
lda #>red_fish_mask
|
||||
sta MASKH
|
||||
ldx #0 ; which fish
|
||||
|
||||
lda red_fish_x,X
|
||||
sta SPRITE_X
|
||||
|
||||
lda red_fish_y,X
|
||||
bne red_fish_still_good
|
||||
|
||||
; red fish done
|
||||
|
||||
lda #$ff ; disable fish
|
||||
sta RED_FISH_STATE
|
||||
bmi done_draw_red_fish ; bra
|
||||
|
||||
|
||||
red_fish_still_good:
|
||||
sta SPRITE_Y
|
||||
|
||||
jsr hgr_draw_sprite_mask
|
||||
|
||||
inc RED_FISH_STATE
|
||||
|
||||
done_draw_red_fish:
|
||||
|
||||
; red fish
|
||||
; 120,183? (bottom)
|
||||
; u 14? to maybe 160? pause 5?
|
||||
; r 8? blow bubble? pause 8?
|
||||
; r quickly through reeds, off screen
|
||||
;
|
||||
jsr draw_fish
|
||||
|
||||
draw_grey_fish:
|
||||
|
||||
draw_green_fish:
|
||||
|
||||
.if 0
|
||||
|
||||
lda #<left_fish_sprite
|
||||
@ -629,6 +600,97 @@ score_values:
|
||||
.byte $05, $10, $40, $50
|
||||
|
||||
|
||||
;============================
|
||||
;============================
|
||||
; draw_fish
|
||||
;============================
|
||||
;============================
|
||||
; X=which fish
|
||||
; Y=current fish behavior
|
||||
|
||||
draw_fish:
|
||||
|
||||
; update fish state, use jump table
|
||||
update_fish:
|
||||
lda fish_state_dest_h,Y
|
||||
pha
|
||||
lda fish_state_dest_l,Y
|
||||
pha
|
||||
rts
|
||||
done_update_fish:
|
||||
inc RED_FISH_STATE_PTR,X ; point to next
|
||||
|
||||
; set up sprite
|
||||
|
||||
lda #<big_fish_sprite
|
||||
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
|
||||
sta SPRITE_X
|
||||
|
||||
lda RED_FISH_Y,X
|
||||
sta SPRITE_Y
|
||||
|
||||
jsr hgr_draw_sprite_mask
|
||||
|
||||
inc RED_FISH_STATE_PTR,X
|
||||
|
||||
no_draw_fish:
|
||||
rts
|
||||
|
||||
fish_state_dest_l:
|
||||
.byte <(move_fish_pause-1),<(move_fish_up-1),<(move_fish_bubble-1)
|
||||
.byte <(move_fish_right-1),<(move_fish_fast_right-1)
|
||||
.byte <(move_fish_left_up-1),<(move_fish_left_down-1)
|
||||
.byte <(move_fish_flip-1)
|
||||
.byte <(move_fish_done-1)
|
||||
|
||||
fish_state_dest_h:
|
||||
.byte >(move_fish_pause-1),>(move_fish_up-1),>(move_fish_bubble-1)
|
||||
.byte >(move_fish_right-1),>(move_fish_fast_right-1)
|
||||
.byte >(move_fish_left_up-1),>(move_fish_left_down-1)
|
||||
.byte >(move_fish_flip-1)
|
||||
.byte >(move_fish_done-1)
|
||||
|
||||
move_fish_done:
|
||||
lda #FISH_NONE ; disable fish
|
||||
sta RED_FISH_STATE_PTR,X
|
||||
jmp no_draw_fish
|
||||
|
||||
move_fish_up:
|
||||
dec RED_FISH_Y,X ; move up by two
|
||||
dec RED_FISH_Y,X
|
||||
jmp done_update_fish
|
||||
|
||||
move_fish_right:
|
||||
inc RED_FISH_X,X
|
||||
jmp done_update_fish
|
||||
|
||||
|
||||
move_fish_fast_right:
|
||||
move_fish_left_up:
|
||||
move_fish_left_down:
|
||||
move_fish_bubble:
|
||||
move_fish_flip:
|
||||
move_fish_pause:
|
||||
jmp done_update_fish
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
boat_sprites_l:
|
||||
.byte <boat2_sprite,<boat1_sprite,<boat3_sprite,<boat1_sprite
|
||||
|
||||
@ -722,12 +784,27 @@ bg_data:
|
||||
; r quickly through reeds, off screen
|
||||
;
|
||||
|
||||
red_fish_x:
|
||||
.byte 17
|
||||
.byte 17,17,17,17,17,17,17,17,17,17,17,17,17,17
|
||||
red_fish_y:
|
||||
.byte 184
|
||||
.byte 182,180,178,176,174,172,170,168,166,164,162,160,158,156,0
|
||||
red_fish_behavior:
|
||||
; up 14
|
||||
.byte FISH_UP,FISH_UP,FISH_UP,FISH_UP
|
||||
.byte FISH_UP,FISH_UP,FISH_UP,FISH_UP
|
||||
.byte FISH_UP,FISH_UP,FISH_UP,FISH_UP
|
||||
.byte FISH_UP,FISH_UP,FISH_UP
|
||||
; pause 5
|
||||
.byte FISH_PAUSE,FISH_PAUSE,FISH_PAUSE,FISH_PAUSE,FISH_PAUSE
|
||||
; slow right 4
|
||||
.byte FISH_RIGHT,FISH_PAUSE,FISH_RIGHT,FISH_PAUSE
|
||||
.byte FISH_RIGHT,FISH_PAUSE,FISH_RIGHT,FISH_PAUSE
|
||||
; bubble
|
||||
.byte FISH_BUBBLE
|
||||
; pause 8
|
||||
.byte FISH_PAUSE,FISH_PAUSE,FISH_PAUSE,FISH_PAUSE
|
||||
.byte FISH_PAUSE,FISH_PAUSE,FISH_PAUSE,FISH_PAUSE
|
||||
; fast right 12
|
||||
.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_DONE
|
||||
|
||||
; left fish, (grey) appears in reeds
|
||||
; 218,170 or so
|
||||
|
@ -140,19 +140,19 @@ CURRENT_DISK = $DC
|
||||
SCORE_L = $E0
|
||||
SCORE_H = $E1
|
||||
|
||||
RED_FISH_STATE = $E2
|
||||
GREEN_FISH_STATE = $E3
|
||||
GREY_FISH_STATE = $E4
|
||||
FISH_STATE_NONE = $FF
|
||||
FISH_STATE_PAUSE = $00
|
||||
FISH_STATE_UP = $01
|
||||
FISH_STATE_BUBBLE = $02
|
||||
FISH_STATE_RIGHT = $03
|
||||
FISH_STATE_FAST_RIGHT = $04
|
||||
FISH_STATE_LEFT_UP = $05
|
||||
FISH_STATE_LEFT_DOWN = $06
|
||||
FISH_STATE_FLIP = $07
|
||||
|
||||
RED_FISH_STATE_PTR = $E2
|
||||
GREEN_FISH_STATE_PTR = $E3
|
||||
GREY_FISH_STATE_PTR = $E4
|
||||
FISH_NONE = $FF
|
||||
FISH_PAUSE = $00
|
||||
FISH_UP = $01
|
||||
FISH_BUBBLE = $02
|
||||
FISH_RIGHT = $03
|
||||
FISH_FAST_RIGHT = $04
|
||||
FISH_LEFT_UP = $05
|
||||
FISH_LEFT_DOWN = $06
|
||||
FISH_FLIP = $07
|
||||
FISH_DONE = $08
|
||||
|
||||
RED_FISH_X = $E5
|
||||
GREEN_FISH_X = $E6
|
||||
|
Loading…
x
Reference in New Issue
Block a user