starfield: more opt

This commit is contained in:
Vince Weaver 2021-06-11 23:02:52 -04:00
parent 0fa717f912
commit 01aa12e0f1
1 changed files with 34 additions and 28 deletions

View File

@ -9,6 +9,8 @@
; 173 bytes - move variables to 0 page. limits to 16 stars but that's fine?
; 171 bytes - adjust random # generator
; 170 bytes - can do sty zp,x
; 163 bytes - lose the cool HGR intro
; 161 bytes - re-arrange RNG location
COLOR = $30
@ -44,7 +46,7 @@ small_starfield:
;0GR:DIMV(64,48):FORZ=1TO48:FORX=0TO64:V(X,Z)=(X*4-128)/Z+20:NEXTX,Z
jsr HGR
jsr SETGR
; init the X/Z tables
@ -102,8 +104,8 @@ to2_smc:
; draw the stars
;===================================
bit LORES
jsr SETGR
; bit LORES
; jsr SETGR
;===================================
; starloop
@ -151,30 +153,9 @@ xload2_smc:
;Z(P)=Z(P)-1
dec star_z,X
bne draw_star ; if Z!=0, draw star
beq new_star ; if Z=0 new star
new_star:
;IFX<0ORX>39ORY<0ORY>39ORZ(P)<1THEN
; A(P)=RND(1)*64
; B(P)=RND(1)*64
; Z(P)=RND(1)*48+1:GOTO7
ldy FRAME
lda $F000,Y
sta star_x,X ; random XX
lda $F001,Y
sta star_y,X ; random YY
lda $F002,Y
and #$3f ; random ZZ 0..63
ora #$1 ; avoid 0
sta star_z,X
iny
sty FRAME
jmp done_star
; draw the star
draw_star:
@ -201,6 +182,29 @@ draw_star:
sta oldy,X
jsr PLOT ; PLOT AT Y,A
; a should be F0 or 0F here?
bne done_star
new_star:
;IFX<0ORX>39ORY<0ORY>39ORZ(P)<1THEN
; A(P)=RND(1)*64
; B(P)=RND(1)*64
; Z(P)=RND(1)*48+1:GOTO7
ldy FRAME
lda $F000,Y
sta star_x,X ; random XX
lda $F001,Y
sta star_y,X ; random YY
lda $F002,Y
and #$3f ; random ZZ 0..63
ora #$1 ; avoid 0
sta star_z,X
inc FRAME
done_star:
;7NEXT
@ -209,11 +213,13 @@ done_star:
bpl star_loop
lda #100
jsr WAIT
jsr WAIT ; A is 0 after
; GOTO2
jmp big_loop
beq big_loop ; bra
; for BASIC bot load
; need this to be at $3F5
jmp small_starfield