dos33fsprogs/games/sb/fn.s

233 lines
3.8 KiB
ArmAsm
Raw Normal View History

2023-05-02 01:14:07 +00:00
; Animation from SBEMAIL #152
;
; Yet Another HR project
;
; by deater (Vince Weaver) <vince@deater.net>
.include "zp.inc"
.include "hardware.inc"
fortnight_start:
2023-05-02 04:50:49 +00:00
lda #$20
sta HGR_PAGE
jsr hgr_make_tables
2023-05-02 01:14:07 +00:00
;===================
; set graphics mode
;===================
jsr HOME
bit HIRES
bit FULLGR
bit SET_GR
bit PAGE1
2023-05-03 02:10:19 +00:00
ldx #0
sta FRAME
sta FRAMEH
2023-05-02 01:14:07 +00:00
;==========================
; Floppy Animation
;===========================
floppy_animation:
2023-05-03 02:10:19 +00:00
; decompress background to page1
2023-05-02 01:14:07 +00:00
lda #<fn_image
sta ZX0_src
lda #>fn_image
sta ZX0_src+1
lda #$20
2023-05-03 02:10:19 +00:00
jsr full_decomp
; decompress background to page2
; would it be faster to copy?
lda #<fn_image
sta ZX0_src
lda #>fn_image
sta ZX0_src+1
lda #$40
2023-05-02 01:14:07 +00:00
jsr full_decomp
2023-05-03 02:10:19 +00:00
2023-05-02 05:06:29 +00:00
reset_floppy_loop:
lda #0
sta XPOS
floppy_loop:
ldx XPOS
2023-05-02 04:50:49 +00:00
2023-05-02 05:06:29 +00:00
lda floppy_x,X
2023-05-02 04:50:49 +00:00
sta CURSOR_X
2023-05-02 05:06:29 +00:00
lda #4
2023-05-02 04:50:49 +00:00
sta CURSOR_Y
2023-05-02 05:06:29 +00:00
lda floppy_sprite_l,X
2023-05-02 04:50:49 +00:00
sta INL
2023-05-02 05:06:29 +00:00
lda floppy_sprite_h,X
2023-05-02 04:50:49 +00:00
sta INH
2023-05-02 05:06:29 +00:00
lda floppy_mask_l,X
2023-05-02 04:50:49 +00:00
sta MASKL
2023-05-02 05:06:29 +00:00
lda floppy_mask_h,X
2023-05-02 04:50:49 +00:00
sta MASKH
2023-05-03 02:10:19 +00:00
; draw sprite
jsr hgr_draw_sprite_mask_and_save
time_loop:
lda KEYPRESS ; 4
bmi done_floppy
lda #160
jsr WAIT
; jsr wait_until_keypress
; see if end
inc FRAME
bne no_frame_oflo
inc FRAMEH
no_frame_oflo:
lda FRAMEH
cmp #3
beq done_floppy
lda FRAME
and #$3
bne time_loop
; erase sprite
lda #<backup_sprite
sta INL
lda #>backup_sprite
sta INH
2023-05-02 04:50:49 +00:00
jsr hgr_draw_sprite
2023-05-03 02:10:19 +00:00
; move sprite
2023-05-02 01:14:07 +00:00
2023-05-02 05:06:29 +00:00
inc XPOS
lda XPOS
2023-05-03 01:18:43 +00:00
cmp #18
2023-05-02 05:06:29 +00:00
bcc floppy_loop
bcs reset_floppy_loop
2023-05-03 02:10:19 +00:00
done_floppy:
bit KEYRESET ; clear the keyboard buffer
2023-05-02 01:14:07 +00:00
;==========================
; "breakdancing" rat
;==========================
load_rats:
lda #<rat1_image
sta ZX0_src
lda #>rat1_image
sta ZX0_src+1
lda #$20
jsr full_decomp
lda #<rat2_image
sta ZX0_src
lda #>rat2_image
sta ZX0_src+1
lda #$40
jsr full_decomp
2023-05-02 04:50:49 +00:00
;=============================
; play music and animate rat
;=============================
play_music:
lda #<music
sta MADDRL
lda #>music
sta MADDRH
jsr play_ed
2023-05-02 01:14:07 +00:00
rat_loop:
2023-05-02 04:50:49 +00:00
; bit PAGE1
; jsr wait_until_keypress
; bit PAGE2
2023-05-02 01:14:07 +00:00
jsr wait_until_keypress
2023-05-02 04:50:49 +00:00
; jmp rat_loop
2023-05-02 01:14:07 +00:00
2023-05-02 04:50:49 +00:00
jmp fortnight_start
2023-05-02 01:14:07 +00:00
wait_until_keypress:
lda KEYPRESS ; 4
bpl wait_until_keypress ; 3
bit KEYRESET ; clear the keyboard buffer
rts
.include "zx02_optim.s"
2023-05-03 02:10:19 +00:00
.include "hgr_sprite.s"
2023-05-02 04:50:49 +00:00
.include "hgr_sprite_mask.s"
.include "hgr_tables.s"
.align $100
.include "duet.s"
music:
.incbin "fn_sound/fortnight.ed"
2023-05-02 01:14:07 +00:00
fn_image:
.incbin "fn_graphics/a2_fortnight.hgr.zx02"
rat1_image:
.incbin "fn_graphics/a2_fortnight_rat1.hgr.zx02"
rat2_image:
.incbin "fn_graphics/a2_fortnight_rat2.hgr.zx02"
2023-05-02 04:50:49 +00:00
.include "fn_graphics/disk_sprites.inc"
2023-05-02 05:06:29 +00:00
floppy_x:
.byte 10,12,14,16
.byte 18,20,22,24
2023-05-03 01:18:43 +00:00
.byte 26,26,24,22
.byte 20,18,16,14,12,10
2023-05-02 05:06:29 +00:00
floppy_sprite_l:
.byte <disk_sprite0,<disk_sprite1,<disk_sprite2,<disk_sprite3
.byte <disk_sprite4,<disk_sprite5,<disk_sprite6,<disk_sprite7
2023-05-03 01:18:43 +00:00
.byte <disk_sprite0,<disk_sprite0,<disk_sprite7,<disk_sprite6
.byte <disk_sprite5,<disk_sprite4,<disk_sprite3,<disk_sprite2
.byte <disk_sprite1,<disk_sprite0
2023-05-02 05:06:29 +00:00
floppy_sprite_h:
.byte >disk_sprite0,>disk_sprite1,>disk_sprite2,>disk_sprite3
.byte >disk_sprite4,>disk_sprite5,>disk_sprite6,>disk_sprite7
2023-05-03 01:18:43 +00:00
.byte >disk_sprite0,>disk_sprite0,>disk_sprite7,>disk_sprite6
.byte >disk_sprite5,>disk_sprite4,>disk_sprite3,>disk_sprite2
.byte >disk_sprite1,>disk_sprite0
2023-05-02 05:06:29 +00:00
floppy_mask_l:
.byte <disk_mask0,<disk_mask1,<disk_mask2,<disk_mask3
.byte <disk_mask4,<disk_mask5,<disk_mask6,<disk_mask7
2023-05-03 01:18:43 +00:00
.byte <disk_mask0,<disk_mask0,<disk_mask7,<disk_mask6
.byte <disk_mask5,<disk_mask4,<disk_mask3,<disk_mask2
.byte <disk_mask1,<disk_mask0
2023-05-02 05:06:29 +00:00
floppy_mask_h:
.byte >disk_mask0,>disk_mask1,>disk_mask2,>disk_mask3
.byte >disk_mask4,>disk_mask5,>disk_mask6,>disk_mask7
2023-05-03 01:18:43 +00:00
.byte >disk_mask0,>disk_mask0,>disk_mask7,>disk_mask6
.byte >disk_mask5,>disk_mask4,>disk_mask3,>disk_mask2
.byte >disk_mask1,>disk_mask0