flyer: get to fit

This commit is contained in:
Vince Weaver 2022-01-12 15:58:21 -05:00
parent d97f42e3b8
commit 8769952043
2 changed files with 39 additions and 26 deletions

View File

@ -16,20 +16,25 @@
; 504 bytes -- tail call in xdraw ; 504 bytes -- tail call in xdraw
; 512 bytes -- switch color with music ; 512 bytes -- switch color with music
; 510 bytes -- unneeded reload of A ; 510 bytes -- unneeded reload of A
; 517 bytes -- made flyer go back and forth
; 512 bytes -- removed extra cc, merged to common ZP zero init
; zero page locations ; zero page locations
AY_REGS = $70 AY_REGS = $70
SONG_OFFSET = $82 FRAME = $80
SONG_COUNTDOWN = $83 SONG_OFFSET = $81
SONG_COUNTDOWN = $82
HGR_COLOR = $E4 HGR_COLOR = $E4
HGR_PAGE = $E6 HGR_PAGE = $E6
HGR_SCALE = $E7 HGR_SCALE = $E7
HGR_ROTATION = $F9 HGR_ROTATION = $F9
FRAME2 = $DC
HORIZON_Y = $FD HORIZON_Y = $FD
HORIZON_LINE = $FE HORIZON_LINE = $FE
FRAME = $FF
; soft-switches ; soft-switches
KEYPRESS = $C000 KEYPRESS = $C000
@ -58,7 +63,8 @@ XDRAW0 = $F65D
flyer: flyer:
jsr HGR2 ; HGR2 HGR_PAGE=$40 jsr HGR2 ; HGR2 HGR_PAGE=$40
sta FRAME ; A=0, Y=0 after HGR2 ; sta FRAME ; A=0, Y=0 after HGR2
; init by mockingboard init
;=================== ;===================
; music Player Setup ; music Player Setup
@ -186,15 +192,20 @@ horizon_lines_loop:
lda #2 lda #2
sta HGR_SCALE ; SCALE=2 sta HGR_SCALE ; SCALE=2
; set X based on frame ;====================
; FIXME: would really prefer sine ; move ship
lda FRAME inc FRAME2
and #$f lda FRAME2
clc ; not necessary? and #$7
adc #140 ; X=140+frame&15 tay
ldx positions,Y
;=========================
; draw ship
; ldx #140
tax
lda #180 ; Y=180 lda #180 ; Y=180
jsr xdraw jsr xdraw
@ -209,15 +220,18 @@ horizon_lines_loop:
cmp #84 ; if (J>84) then J=0 cmp #84 ; if (J>84) then J=0
bcc no_reset_frame ; bge bcc no_reset_frame ; bge
lda #$F4 ; -12 ; we know carry is set here
lda #$F3 ; (-13) -12-C
no_reset_frame: no_reset_frame:
clc ; J=J+12 ; we know carry is clear here
adc #12 adc #12 ; J=J+12
sta FRAME sta FRAME
;=======================
; check for keypress
check_keypress: check_keypress:
lda KEYPRESS lda KEYPRESS
bmi quiet bmi quiet
@ -229,12 +243,7 @@ quiet:
sta AY_REGS+7 sta AY_REGS+7
end: end:
bne end brk ; end?
@ -274,8 +283,12 @@ ship_table:
.byte $0E ; 00 001 110 NDN RT X .byte $0E ; 00 001 110 NDN RT X
.byte $0 .byte $0
positions:
; +4 +8 +8 +4
.byte 170,174,182,190,194,190,182,174
.include "interrupt_handler.s"
.include "mockingboard_constants.s"
; music ; music
.include "mA2E_3.s" .include "mA2E_3.s"
.include "interrupt_handler.s"
; must be last
.include "mockingboard_constants.s"

View File

@ -3,10 +3,10 @@ tracker_init:
; setup initial ay-3-8910 values (this depends on song) ; setup initial ay-3-8910 values (this depends on song)
init_registers_to_zero: init_registers_to_zero:
ldx #13 ldx #$13 ; init past end to zero others too
lda #0 lda #0
sta SONG_OFFSET ; also init song stuff ; sta SONG_OFFSET ; also init song stuff
sta SONG_COUNTDOWN ; sta SONG_COUNTDOWN
init_loop: init_loop:
sta AY_REGS,X sta AY_REGS,X
dex dex