dos33fsprogs/games/sb/duck_pond.s

229 lines
2.8 KiB
ArmAsm
Raw Permalink Normal View History

2023-03-07 05:28:45 +00:00
; gr duck pond
;
; by deater (Vince Weaver) <vince@deater.net>
; todo
; videlectrix/ f to feed message
; F feeds
; A anvil (what happens when land on duck)
; Y drain pond
; ESC exit
; S spawn new duck
; N night (twilight?)
; J jump in pond
2023-03-13 19:29:05 +00:00
; D/G throw short vs long?
; replace "bread" with "food"
2023-03-07 05:28:45 +00:00
2023-03-11 17:14:26 +00:00
;123456789012345678901234567890123456789
; *** VIDELECTRIX ***
;
; PRESS "F" TO THROW BREAD
; PRESS SPACEBAR TO START
2023-03-07 05:28:45 +00:00
.include "zp.inc"
.include "hardware.inc"
duck_pond:
;===================
; set graphics mode
;===================
jsr HOME
bit LORES
bit FULLGR
bit SET_GR
2023-03-13 19:29:05 +00:00
bit PAGE1
2023-03-07 05:28:45 +00:00
2023-03-15 06:02:51 +00:00
lda #$4
2023-03-10 05:28:36 +00:00
sta DRAW_PAGE
2023-03-15 06:02:51 +00:00
lda #$0
sta FRAME
sta FRAMEH
sta DISP_PAGE
2023-03-07 05:28:45 +00:00
;===================
2023-03-12 03:43:40 +00:00
; TITLE SCREEN
2023-03-07 05:28:45 +00:00
;===================
2023-03-12 03:43:40 +00:00
title_screen:
2023-03-07 05:28:45 +00:00
lda #<title_data
sta ZX0_src
lda #>title_data
sta ZX0_src+1
2023-05-26 04:18:33 +00:00
lda #$c ; load at $C00
2023-03-07 05:28:45 +00:00
jsr full_decomp
2023-03-10 05:28:36 +00:00
jsr gr_copy_to_current
2023-03-11 17:14:26 +00:00
bit TEXTGR
2023-03-07 05:28:45 +00:00
2023-03-15 06:02:51 +00:00
jsr page_flip
2023-03-07 05:28:45 +00:00
wait_until_keypress:
lda KEYPRESS ; 4
bpl wait_until_keypress ; 3
bit KEYRESET ; clear the keyboard buffer
2023-03-12 03:43:40 +00:00
;===================
; INIT GAME
;===================
init_game:
lda #0
sta D1_SCORE
sta D1_SCORE_H
sta D2_SCORE
sta D2_SCORE_H
2023-03-13 19:29:05 +00:00
lda #1
sta D1_STATE
sta D2_STATE
lda #10
sta D1_XPOS
sta D1_YPOS
lda #14
sta D2_XPOS
sta D2_YPOS
lda #$FF
sta D1_XSPEED
sta D1_YSPEED
sta D2_XSPEED
sta D2_YSPEED
; load background
2023-03-07 05:28:45 +00:00
lda #<main_data
sta ZX0_src
lda #>main_data
sta ZX0_src+1
2023-05-26 04:18:33 +00:00
lda #$c
2023-03-07 05:28:45 +00:00
jsr full_decomp
2023-03-10 05:28:36 +00:00
jsr gr_copy_to_current
2023-03-07 05:28:45 +00:00
2023-03-11 17:14:26 +00:00
bit FULLGR
2023-03-12 03:43:40 +00:00
;===================
; MAIN LOOP
;===================
main_loop:
2023-03-13 19:29:05 +00:00
jsr gr_copy_to_current
2023-03-12 03:43:40 +00:00
; copy over background
; draw arm animation
; draw food
2023-03-13 19:29:05 +00:00
; draw ducks
2023-03-12 03:43:40 +00:00
2023-03-13 19:29:05 +00:00
jsr draw_duck1
jsr draw_duck2
2023-03-12 03:43:40 +00:00
; draw anvil/splash
; draw score
jsr draw_score
2023-03-13 19:29:05 +00:00
; flip page
jsr page_flip
2023-03-12 03:43:40 +00:00
; move food
; move arm
; move anvil
; move ducks
2023-03-13 19:29:05 +00:00
jsr move_ducks
2023-03-12 03:43:40 +00:00
; drain water
; check keyboard
2023-03-07 05:28:45 +00:00
wait_until_keypress2:
lda KEYPRESS ; 4
2023-03-12 03:43:40 +00:00
bpl done_loop
2023-03-07 05:28:45 +00:00
bit KEYRESET ; clear the keyboard buffer
2023-03-12 03:43:40 +00:00
and #$7f ; clear high bit
cmp #' ' ; don't lose space
beq was_space
and #$df ; convert lowercase to uppercase
was_space:
check_bracket:
cmp #'S'
2023-06-09 20:16:43 +00:00
bne check_escape
2023-03-12 03:43:40 +00:00
jsr score_inc_d1
2023-03-13 19:29:05 +00:00
lda #$ff
sta D1_XSPEED
2023-06-09 20:16:43 +00:00
jmp done_keyboard
check_escape:
cmp #27
bne done_keyboard
lda #0
sta WHICH_LOAD
rts
2023-03-13 19:29:05 +00:00
2023-03-12 03:43:40 +00:00
done_keyboard:
2023-03-07 05:28:45 +00:00
2023-03-15 06:02:51 +00:00
; increment frame
inc FRAME
bne frame_noflo
inc FRAMEH
frame_noflo:
2023-03-07 05:28:45 +00:00
2023-03-12 03:43:40 +00:00
done_loop:
jmp main_loop
2023-03-07 05:28:45 +00:00
.include "zx02_optim.s"
2023-03-10 05:28:36 +00:00
.include "gr_copy.s"
.include "gr_offsets.s"
2023-03-07 05:28:45 +00:00
2023-03-14 03:55:12 +00:00
.include "gr_putsprite_mask.s"
2023-03-13 19:29:05 +00:00
.include "gr_pageflip.s"
2023-03-12 03:43:40 +00:00
.include "duck_score.s"
2023-03-13 19:29:05 +00:00
.include "draw_ducks.s"
.include "move_ducks.s"
2023-03-12 03:43:40 +00:00
2023-03-07 05:28:45 +00:00
title_data:
2023-06-02 03:25:42 +00:00
.incbin "duck_graphics/a2_duckpond_title.gr.zx02"
2023-03-07 05:28:45 +00:00
main_data:
2023-06-02 03:25:42 +00:00
.incbin "duck_graphics/a2_duckpond.gr.zx02"
2023-03-12 03:43:40 +00:00
2023-06-02 03:25:42 +00:00
.include "duck_graphics/num_sprites.inc"
.include "duck_graphics/duck_sprites.inc"