From c3b4c297ecc6a7210b9cf6e45ee5ac61115ee61b Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sun, 31 Dec 2017 21:24:10 -0500 Subject: [PATCH] mode7: update starfield --- mode7/mode7.dsk | Bin 143360 -> 143360 bytes mode7/starfield_demo.s | 26 ++- mode7_demo/starfield_demo.s | 331 ++++++++++++++++++++++++++++++++++++ 3 files changed, 352 insertions(+), 5 deletions(-) create mode 100644 mode7_demo/starfield_demo.s diff --git a/mode7/mode7.dsk b/mode7/mode7.dsk index 66b15f50009d0daf7cd88533cfad66bf4a58efb7..d501d1f9361dc7d43fd36e44ff1823db11ae268e 100644 GIT binary patch delta 4737 zcmeI0dyG_99mnsv=f39Nb02fg?983_z0=yT3vH)ODNUQemX_3(tpXZ}#s@VL-K2@3 zDpbhKtI|5OTmP?W0CP<6?Mr-Hf2k;B|!p` zC_zb*WU1eu&RK{!Htb9<*@5$zg6@jXdg_29*S7Z!#)B)gCq5Xz{em-l^un$S-S8aj z+Z+$p&c00@jMpCKJHEI%uaC#wi+xZ%*P(ZHL23{!mDNMKT~#hHTxy{bxfbZ{eXT8(`R`dz;qq26-?LTV8xOi za|qKK@B9SQJvjJjU-r&}(NPESvgnK^rsw&NOPF5f^(v<0yb6Ru5}aF7Za?T9zuq?< zl%MReo*<`R7B(L_(_BoNkC5PNPxcHn2;EQUTZFzt9-pAUAoKvC#|b@6b`8*95qgBs z_xQqLLVr)_1v0eef&IefapA@N!r-{@J$i+-zf&dAZh^$m+D`KtX*VY(_o0Ma6Z(b9 z^Wop%?N_>kdEfbC^}$PEef_mhF9J+#cdLeA07Ena|L0tM=H9OY6oaO2R((h09b5-r zFhtcfP0O?qlYFxddMCuaO93)1_OVUD1g2<0Qwq=@PSwGx2{60`iAfvUk}cbct=gI$ zvvu3Bk!`XAj@LnXLf_Hi_eU8^uz)36(2^|KQY_WdteB-+hQ;r7H1vYyD30oAPR!9A z!{Pl?AL@ho|9c-4Zuwxz&Fcfla%@|$1Aiq~y;TQGC%{$*lz~yb#{t>ExGfz&CtUx5 zjg=1A!o(k|ng!sC$gY+Ppe5R3wOnN1ZM*s@UM;h_l2-=uZM-5-eJ!kN^>`5!fmWaR zoCzQn+3X2z7@008JTwwHu-A~Ps2k{ksE;vAOu(VLfH?d(0wxg&BodK{LR3=qUyjB^ z(V3}uDePTxyxXVFh(<)!AE0(!7%dAOFV80YZO7=o^IomIHeyp}Pq^MCk80$$v&T+W*2A zUTp(^I>|>S34N{u?J@FilE2ewzB{?^eKM8gF9gS4neiVeU!W147z7c{*t2yI7?MTo zgpdFUF#!`&Law3(fC0K}7*+HHNWw0qEAYSn7LPE7S#>@G&NH=14X_*-229GyP9kZK zfTWg;C3V(~1_QGQlVvPvCat8M5>jpFpa%FhU~vYfq?DXeQff+LOUJmWw4yUt@p`bQ z#=SXHWqCN1<-ACitx%Q&&rO$Q)QB?6jA@zWu+z82@#Gt27Jhz|Syr?&i_2IY#Jy3c zFU>PcD^fWxOy#Y_l*}@7Qs*?%IlW%z8zY@lu5-47>-=h4=hq^gpShvV=V5O{B+l?^ ziq4WiwzSxInmV4EdkwPgm)k(!niA?NWuHXV!bfGJ`va7hN ztGO{Z@IQGXlziGnuIXB?ofgs{Ev8{wO3P^_t)@9OnF$72py|@nMjEBfw3W6qLIz~S z49xJHf4l*H0FWUn8RnQU7B#?bfJ8Nx(KAMdXA)*P<_A4vW$dhw1zC~x#u{Lln?cIT zStYAxwQMZQp6K-dj}drixn+c#)d*RXHM3T>>VGAi`)woSKu*lToRpJuN>0sbxmZrm zacr~K+Wm~}u9>rPc3#MXyqJf1DKF=hyqeeYjMK~rhnNu(MjqwOyp^{LLID)S0xU>{ zx_{-kwD%}5RZ%T;vIcH|5pD#%U=&axoIMRN3Xr7PMS+DIvDnTuY%q**FUUous1~(i ztf&_|vm|=2J@{YVYd?CPpFSf#@_X&AJbyF4*A~s9RkS?@;bu46Px53>@l;Rq zVxI099tSsL`(?&<*Ya#%@L4?fp)dKeulTC3`7xgXo4Ept%oWHteap8?LJ5?_5-dq2 qxzu34+b~=71Ej)|R%&M*W{bRt#H!gN{-ZAT>MXzCE$ZxUXZ{6x|AJ`% delta 2655 zcmeH}Ux*b|9LMK(&Y8dGocX(Z@67!>bCpPoT%jPWG=reb!au~Sy(p0()k~CtRJ#(Z zp*tc?HVFnMx!{Y?UfEH|6f5vW3VSHjxGO4}v}>iAiMpM+cenDT*LrXs?(fcT=KRj@ zoca8I=i5K3^^a;hdq(B~qb_EcV-s7hPe|#TwRe8uhhf(DC@>>nlrhGc$t)^Spon5hs7w`_L_1F9Ya+v6Fp`wU z&Wk8!6M898xxp!CJc)kILwB6r++q>~h8Sjq$xLA?(^w{UpasL1-Ry&Nb=w%SzYVP(+6&vb8pB z<48d%uR(-lCGDxfEu^!wr!MX_EnS*hRY}+8R*}=~ZEK{Tpjp>rQpbK^3t~A>I52(`8 zTxfrpntcU_4>;j9JABODBMpoX3=Z_~w8G4O*S;PuNa~9t*e76{=52I0`D?lcE`M_7 zfV6pFy&rCL({;Z=NzLqq+w9OzK3rUz{++!ru!jZ@-tTRfHeG0&&AFK|Z@V;j;dWXd z&Zi3(IN>&D51IP6QaF43-Q#OW{Du>+bJjromJ|2qcB2z-%5Ch#Tb*S6Gc);KC;l|| z>~rGGNk4ua%J&}Y#5(4z>;$>$#DCAi!})|=A%F?f^rvFS~^bZ=<=loL-m)xX~B^87v0 z8foC2_HXjT+!@K775$TCt)*-M6w<~C7|qZ;fd}bUyM=QZi25C+yikw}NYKeCjiw`+18HM9dRJ1c4Ml zfC3zlKn|2Z4YWWHjDQAd1n5)-gTQ!~8CWH$1SM3$B~p@0N=Yp>qp=nm*#TTfMk$RB zw;PO`!I0?Z3NM)@t1PA&?{uOvD&sOK%jG0`E@w?ZwO2r;Xl1=@l&40Ucfk6;x1t=Z zyc>0wdD$#m6{!LhRKXQekt<528SQA{kuQM@+A2ncR#=5s%!*Z&s!&B$TqV_1oW269 zV>wo8RjcY%qe`o+%ByD8s!6qGw6>*>oE678!nLV$OJH?A$4aTGHBERs63NWqA_(n7 zYplj=X3a_?0zYNw5(wcW4$?ZVlX^a1n>b|OYOANuoAZ17@Z>UtRvHvIzS><^>sno} z8+BS|bzV2?Rw#u@wDxp{5E5mALlVlN5~`sV>Y)+RkcB)n!@Rkk%!IUHJoPy8Aj)AD zqn79GIpR@UU1e}L66s3~XrRWVN-;Z?(U2QTLv3h{sa17^U&>~pt4-8v2%$I&8Pt|- O#a3<2*6m!ywf+P*ZxGo4 diff --git a/mode7/starfield_demo.s b/mode7/starfield_demo.s index 034644b5..77a9be24 100644 --- a/mode7/starfield_demo.s +++ b/mode7/starfield_demo.s @@ -15,8 +15,9 @@ NUMSTARS EQU 16 ; Clear screen and setup graphics ;================================ - jsr clear_screens ; clear top/bottom of page 0/1 + jsr clear_screens_notext ; clear top/bottom of page 0/1 jsr set_gr_page0 + bit FULLGR ; Initialize the 2kB of multiply lookup tables jsr init_multiply_tables @@ -49,7 +50,7 @@ starfield_loop: ;=============== ; clear screen ;=============== - jsr clear_top ; 6+ + jsr clear_all ; 6+ ; 6047 ;=============== ; draw stars @@ -158,7 +159,7 @@ no_adjust: ; ldy YPOS bmi new_star ; 2nt/3 - cpy #40 ; 2 + cpy #48 ; 2 bpl new_star ; if < 0 or > 40 then done ; 2nt/3 lda XPOS ; 3 @@ -224,6 +225,19 @@ starfield_keyboard: skipskip: + + lda #>ship_forward + sta INH + lda # 40 then done ; 2nt/3 + + lda XPOS ; 3 + bmi new_star ; 2nt/3 + cmp #40 ; 2 + bpl new_star ; if < 0 or > 40 then done ; 2nt/3 + + ; FIXME: sort out all of these jumps to be more efficient + bmi plot_star ; 2 + +new_star: + ldy XX ; 3 + jsr random_star ; 6 + + jmp plot_star_continue ; 3 + +plot_star: + jsr plot ; 6 + +plot_star_continue: + + ;============================== + ldx XX ; 3 + + dex ; 2 + bmi move_stars ; 2nt/3 + bpl draw_stars ; 2nt/3 +; jmp draw_stars + + + ;============================= + ; Move stars +move_stars: + ldy #(NUMSTARS-1) ; 2 +move_stars_loop: + ; increment z + clc ; if z >= 64 new star ; 2 + lda star_z,Y ; 4 + adc #1 ; 2 + sta star_z,Y ; 4 + and #64 ; 2 + beq move_loop_skip ; 2nt/3 + + jsr random_star ; new random star ; 6 + +move_loop_skip: + dey ; 2 + bpl move_stars_loop ; 2nt/3 + + + +starfield_keyboard: + +; jsr get_key ; get keypress ; 6 + +; lda LASTKEY ; 3 + +; beq starfield_keyboard + +; cmp #('Q') ; if quit, then return +; bne skipskip +; rts + +skipskip: + + + lda #>ship_forward + sta INH + lda #