From bc77ab6f399d4fbb7bfd963edaed1e80dfaaa2d1 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 3 Nov 2023 18:49:00 -0400 Subject: [PATCH] second: move intro to start at $8000 tight fit but frees up $6000 --- demos/second/part01_intropan/Makefile | 4 +- .../second/part01_intropan/graphics/Makefile | 10 +++- .../part01_intropan/graphics/ship_sprites.png | Bin 0 -> 5435 bytes demos/second/part01_intropan/hgr_partial.s | 46 ++++++++++++++++++ demos/second/part01_intropan/intro.s | 3 ++ demos/second/part10_lens_rotozoom/Makefile | 2 +- demos/second/qload.s | 6 +-- demos/second/start.s | 2 +- 8 files changed, 65 insertions(+), 8 deletions(-) create mode 100644 demos/second/part01_intropan/graphics/ship_sprites.png create mode 100644 demos/second/part01_intropan/hgr_partial.s diff --git a/demos/second/part01_intropan/Makefile b/demos/second/part01_intropan/Makefile index 35bdac36..dff32f13 100644 --- a/demos/second/part01_intropan/Makefile +++ b/demos/second/part01_intropan/Makefile @@ -11,13 +11,13 @@ all: INTRO #### INTRO: intro.o - ld65 -o INTRO intro.o -C $(LINKER_SCRIPTS)/apple2_6000.inc + ld65 -o INTRO intro.o -C $(LINKER_SCRIPTS)/apple2_8000.inc intro.o: intro.s ../zx02_optim.s \ graphics/igl.hgr.zx02 \ graphics/igr.hgr.zx02 \ graphics/fc_sr_logo.hgr.zx02 \ - horiz_scroll.s \ + horiz_scroll.s hgr_partial.s \ ../zp.inc ../hardware.inc ../qload.inc ca65 -o intro.o intro.s -l intro.lst diff --git a/demos/second/part01_intropan/graphics/Makefile b/demos/second/part01_intropan/graphics/Makefile index 5b781011..8cb3cf1c 100644 --- a/demos/second/part01_intropan/graphics/Makefile +++ b/demos/second/part01_intropan/graphics/Makefile @@ -6,7 +6,7 @@ PNG2GR = ../../../../utils/gr-utils/png2gr all: igl.hgr.zx02 igr.hgr.zx02 fc_sr_logo.hgr.zx02 \ demosplash.hgr.zx02 mockingboard.hgr.zx02 \ - vmw.hgr.zx02 + vmw.hgr.zx02 ship_sprites.hgr.zx02 #### @@ -26,6 +26,14 @@ igl.hgr: igl.png #### +ship_sprites.hgr.zx02: ship_sprites.hgr + $(ZX02) ship_sprites.hgr ship_sprites.hgr.zx02 + +ship_sprites.hgr: ship_sprites.png + $(PNG_TO_HGR) ship_sprites.png > ship_sprites.hgr + +#### + mockingboard.hgr.zx02: mockingboard.hgr $(ZX02) mockingboard.hgr mockingboard.hgr.zx02 diff --git a/demos/second/part01_intropan/graphics/ship_sprites.png b/demos/second/part01_intropan/graphics/ship_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..0e352d5acfb069fe7f70e6fb5ca5a072625c1440 GIT binary patch literal 5435 zcmbVQg-;xS&d1$dhU;Mm!x=D~Lxv6+KHQxl!-kE+{RSI0oP%S?;S3n=dN3Rg7(U#F zeY`L4FL+Jbw9T(gnl^1xu#T20As!tb3JMCL8c0bG1qGGnS?|I@dzLy^2mH^DNGC-_ z9W_NoW>0SqdnZ>r6cp~%kW?8^kKBtsOZ^f(9wID0WJ=+Oy7)MWIUb5ag>p(0KS8F4 z2u?z^xcH)V6VDTy+WmE86*Lmcj1wB(+$sTR1%aP5@c6BzCH@YyeN1liN13k#Y)><-BPV#JfC9;_w(ei{?Zlr8Y_zQ6hK<-p58VMs35A8@oc@rX>-Tg}9P9EnnA zscoOYWP^Uw1h|Rf-g0_}px&%eR<@Q8ffJuKE-S{MV?i99E4w2?tv03PAtO0#_A-7e zZO9;6AqjJ~P~Q8&D(s}q6e=RR$Dynz_Y}VwoPb_vUa;c(?bv3(DIcZVVO{qHxN(8s%L&9Y9W)*9~~hwadf=dR#-g5LR{px~4Lhfz^-zWt|R*uH9S zl(Bd4(W$sZ#rPYaapW3mO7d?57LUx|1T9MtQ5yKgNk}Rsr;mEOPh!V%jj*pRm-;_& z)E{~gO*ZY;x_HMn2jgej%d4v3q@g{@;~Lk_c&o9W-k^|RAP~89SNy~^KtR~zS?FO2 zTd*wrQ6w|Z(BSs&xB5kdcc`%c6sGLjJD(4gZ_1rVKvRMOwaxt@34+sk;8Mv@4fr6QSgLo)5oXpzhY#zq$q|*Stw&3x$!rIwDWOop~Z_37d{`Dug|PZ)OAuKKBS42o(cTn+?pC2bBVY z@5s5o$&w90^we?GZ9VR7PSmlOPkl?2lyXkA$x<$~UG#M%)NP>@6nKRo6|(2NG`C8T zTx1}8YNzf~Tto0yl~@jkd;gm{Y%Am^-zWEg2Lzhk0}XbPHKuD!VLj*OjOPog#~}rI z<0DG@FMKr{KWO_tLuk_UfM5je6f~nXOx$ek&l3$iFxvi?#xhMsQSZLMB=o9a?w5ue zcCmepWiFA|)$E>1$Dt-`UTmUr*oC`bu1)Jp5T8Vdz2b+wBQRz_8JtxY=h5syGlYlyJoClg6R)@F_Lb{ z3E_z-u&-jnn%QAvh{Ml{v6TYrfR{W|cw^-xg_dbI`~Mh@9j9us>BpH=AzJ!*#j&Yq zrtev^`6g&H*>>rt*G#KNl0C4AP9tS$0B9hR=`l$jOhgL^uuD%jP5OY4S?tixS%x1h zd@Ev=*x0z_fV57ojlYwZJkcI5-a;iyTBIeF-VBKzongTG=RB>;Qh{34jLd?@# znOsOKZ@(k)$WI?(^mlsMU=Y0j0E>&EDBf`wzNyWLU%{Y9hQG}y`mpOliYwNDp-mN5 z%Fn_5RJ5RdcS?&nBtvXxLfrPNr_2?#tFOUyCFRWm-C_(ATzkji{83w&NsVb2;gD{o zLBTY;{SYHV!oc?vU3G%oJsRtl=vG}xiG5PX!qv`6bbQ8VOpI&QDNG27tL zXFUpCa@K$}?Jq{Zgio)EvU!o~rV^P2iv@kRGPiFrk%qWVc--F|V`m#CGuTRoKRyIS zD2rfMDD$wMDT;`Ae$pVr#MKAK-gpq>$iiJfUKKgoP+1Vn$;-1%f2`&g^^Gc@>;PDD!w$0PoOkAn{^WsY-=ZS(j7;IGgk^t~?u(7;LT+%;*-{eJEuq`;&0WxtE1H{&nP>zYrCs&SNZ zPohK`^bcgM{Y^OscT2mPncKf+v}ge}4secSZkaz+?8_da^Pr*teP4~7$m8w>(*q+q z0alq6XRS}_z%~`XpTbEs>VmWk_SAS>X;w>)=IBX!+& zK=Y#-qaxnN2D%PLNVuNdujR`daK`83ATs)_&`4C+B=U2{dP94jvrY`E;SZ-A!@tu9 zq##4dmGbB!LCcoWKBaWc-(X>CWuRy8%1DlP)fMOOi38J}*kVoGKitg@dO_H15U#nn z*E0ig<4y=FQN`|t4t-YF#?wfZZ7sc$!?m5oJO2lw&!bZJgh5SZ_J{My0&K)Ar#&CM zthM*`8qTVwS(k>rUS>*n`+cP9Dwstk4xd&E)54=mIqUt)60cE`>=N_Z^3HCZJ-8)F1@9=c{ogeiQS}=} zQ5GIqy<+3@4H>AM<6QpQnqwwI+1f#vkrGEF^c6w_OKrFP8n4(nHLDqwqx9YYC(erM zyI^ttz=^xI^|C9M+&<@TD~{{l@no9>Ns)>3Tf(90;cd2-@do5Q`hD?J_W1*2JxTRB zjB*rYQN(MUisVxHXH}l9j{8@1_O zuuTd;1+>{2&p1T4!X+kA?S%qKg~<99nkt!b63O(Z_)>WYPJDW)ofRnMix%?`c9wZ$tBziNq3pzrHOG_N&i znVugxOZURGr-{u3AS2t>3?wBKP51{7GzWII!u`@Fl=0{l;5h-5C9EgUNF9vP-|D6c zOF4FfA1L=o6|lY;E*M8)Tq^C`Vz%V`u|6hwxxO_tW>?NK;?U)BfE5@ZH&eaOXuirX zAKSU{nR?iF)HstxSMi_yIoZPJP#nV7A6y$3EnxTyU*FD^ylE*bq>2c&B2LJddet|j zm1j>QmLvet=qN@cvUoCk^mS#vYM_wOR#ESKgAmmT$w0*$(*N{S@sUezm~-2CH;!LjDA5@$&!fkw+U8EA03ivfDf)2Nc~7>DIwaB)7{YMyTh zy92eMYM}v!!r%mmfY`nU?bUo?WUd6ooF2a0KU%MF=>}&7NrO2#R=R+Y+_2ImG>b3@lXL2SMPwWX@Re$wy>B$J|$Q}6v(14R(@EPf*0U_^r$ zt>dd()7L~l!<}Z4DUxx2js;pkLz- z^Wf-T2T)eqaNZH2815bN%BI#Z8-CR{GbV)}chK|wfaRWmVUfTZlW@o^DOv*f04^@%E})KVqiY9&BY=&Iu{JZN#2nQc>vC=2GGAPYW>e z%a_#0`?2XUGEBY2@7x^)YeFG7SiYCrlNXP)P^PLSlMy!Kksui3(`S6<6!Yyj-t@axWVVPegwbOPwg{T8}=J?3ftW&HM#Rj)mEd9H&(#V3@v;d2# zaX*G!ty~1g&#M|`axbK@Ms1^=I?{goBX4!)_e_StD}TIOb<61WNc=t;<;~%X8MllC_2X)QXLJNq zBFu`H1Ui+Qp02g;)N2w&?%VCLI!fA17~cR&>a$M#8wtIQ2@{<;l)!j%?Nax(%aimL z*qW!lgh5w@O>{Q>yjI0TJcQpUS3WRMBc77pH@0(>_rmb6D2OYSq7q@bgt@iPtJF>0 zJPEOian}-nQvx9&U@6Z@iMLwXW+QcDglgNROgrzc!7*;MU(h{4Q@G|JkWWXstn4jE zUd4yhy7p+lzBGkcOym;0m?93ei{isHPwd*`&7KuE>~XBu zhT-FnF@+vo#Fz8to^0dGRI4Ss_1lf8%>WYi=i%)n>N&ZTvmJN-?t^~=e7ey7e!M>Q z#!R#QT-t*P)MFAyvR&TtXe#y1Y@#cW;dL#2`E$uVg7;?wB5%lX;u0*|HQNOG ziGr9Vl36HHD9Uvf|Is&OA{XU{trw?&Z1J)PQ{jr}og>XQ6ta+^cdqnE%RYIWI3j5| z=G#OW))a!1fF!O`;y({<`2>q(hA*CMV{NiRKcp^4Q{t4;w@F1bd2L#4E_QkY5y%t1L>dtbDyx2MaqSl%9;bzDApH>8P-9x z;2%&yANfJM=IM@%2eba=wA6%)Zbt{wd6qaaG;?STuYNZ%%gwPsbPNkdyEta2>g&jv zXyn<$y6_xE35)Idyy#%WcfEwS-TB}xO{aT5>l*Gna(k|Pkb@Ak29+Q?pH=ns<(xN+t z!5CZ^Nl6>|b;Lt9RBE>7w|%uTUV6yMYSLc`EE?PK*f;eh$3b#tW>F8^1b23R#@iTS z<4W+upGr7>`X=Q=izx?lY)B1r*~pP7-Uox5=2s=uq@poZ-xAgaB|WTw*@RyA>l2Zq zpn;$=#I~@Ndj&2FHTA|7*-bzD-nCxVQ?IM*i(&`UtJK#~d4JEQ4i}uFFPVL&wm*~^ zrE55VUIS@W%#p3`M>SmLnT1|`KmJ;yET4v#ww3w)B3n4GAiq1n6K)Q0@*@|+RA8vi zjK8)(GR`W|*Bz7B_4Z9~GnCX^c;U&PE)-1m(8H2Q>RGS&z`aY?-LlY_jgr3dobXKg zvQG}aVVCJ^HDw#BTH!zE_DgK?v69TetWuQcT0 zXIFag5H+n!r5!xXSnkT>Gf2Z486FD(du}ah({-loS;$);%jf0Y zq1zVXoXM7%=3uoJBo~-{Dfgp#1v1>{Xcuc0k^4@%rBv6*?Yx27r?yhy*8zc<0>GUI zt!3A@X#IiiRp+lNmF1D>fCJGX*jG>;(6yKM6J#PheA%|xHWdndzhdUjwz@MZlq0zj zmE-zC<{j*^97DQ+wuPK|-KkDCkRtkTNU8Zxb+aScxWn5hSK~j4f_naj=#6pI`a1oU zWc2jy z1_?vU(gPSREP1eZ_b1+^U)#6r(e~iJoX%>Ftv>j)!Or`!MjmqzMDzA#+ht-fc+oG0 zHB6|Qqp8cl^LyKpp>efkB)>B?Ne=;BtqSHT>f;5?A|T?r2`O^}!B!d*?rjKPySBW5 zJf%yuN(Xq(?nZJ|oxpTqsAXJ@ZZ*q4FH6l2299@WqECVIP2K2=b5arSe!Zq-eY|l! zqoixi@F79<+r2fg7F_*1m2JaNebmA2e(q9`Wy@sL@d}zvEp>+2Py2`9+?1Hvo6Q+X zuBM@814E`u?haai9S$XNy)FJhMOj-p&Zs3qdOUwJYl3GA^CY^#`WC=#I6vn%S41h= zeZiEh+$1-S7~{y^z4vm37eXYwpcMymp&Np~p)=h^PL literal 0 HcmV?d00001 diff --git a/demos/second/part01_intropan/hgr_partial.s b/demos/second/part01_intropan/hgr_partial.s new file mode 100644 index 00000000..54f8fc3d --- /dev/null +++ b/demos/second/part01_intropan/hgr_partial.s @@ -0,0 +1,46 @@ +; copy partial part of screen from $6000 to DRAW_PAGE + ; HGR_X1,HGR_Y1 to HGR_X2,HGR_Y2 source + ; destination = Y at HGR_DEST + +hgr_partial: + lda HGR_DEST + sta dest_y_smc+1 + + ldx HGR_Y1 ; Y1 +hgr_partial_outer_loop: + lda hposn_low,X + sta INL + lda hposn_high,X + ora #$40 ; convert to $6000 + sta INH + + txa + pha + +dest_y_smc: + ldx #100 ; DEST_Y + lda hposn_low,X + sta OUTL + lda hposn_high,X + clc + adc DRAW_PAGE + sta OUTH + + pla + tax + + ldy HGR_X1 ; X1 +hgr_partial_inner_loop: + lda (INL),Y + sta (OUTL),Y + iny + cpy HGR_X2 ; X2 + bne hgr_partial_inner_loop + + inc dest_y_smc+1 + + inx + cpx HGR_Y2 ; Y2 + bne hgr_partial_outer_loop + + rts diff --git a/demos/second/part01_intropan/intro.s b/demos/second/part01_intropan/intro.s index fff1aca8..42387a45 100644 --- a/demos/second/part01_intropan/intro.s +++ b/demos/second/part01_intropan/intro.s @@ -182,6 +182,7 @@ done_intro: .include "../hgr_table.s" .include "../hgr_clear_screen.s" .include "horiz_scroll.s" + .include "hgr_partial.s" .include "../irq_wait.s" @@ -198,3 +199,5 @@ fc_sr_logo_data: .incbin "graphics/fc_sr_logo.hgr.zx02" vmw_data: .incbin "graphics/vmw.hgr.zx02" +sprite_data: + .incbin "graphics/ship_sprites.hgr.zx02" diff --git a/demos/second/part10_lens_rotozoom/Makefile b/demos/second/part10_lens_rotozoom/Makefile index e96f5567..a272bac3 100644 --- a/demos/second/part10_lens_rotozoom/Makefile +++ b/demos/second/part10_lens_rotozoom/Makefile @@ -33,4 +33,4 @@ graphics/lens_sprites.inc: clean: rm -f *~ *.o *.lst LENS cd graphics && make clean - cd audio && make clean + diff --git a/demos/second/qload.s b/demos/second/qload.s index d9ec95ec..6ef6260c 100644 --- a/demos/second/qload.s +++ b/demos/second/qload.s @@ -169,13 +169,13 @@ which_disk_array: .byte 1,1 ; POLAR,FAKE_BIOS load_address_array: - .byte $D0,$D0,$60,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS + .byte $D0,$D0,$80,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte $60,$60,$60,$60 ; GORILLA,LEAVES,LENS,PLASMA .byte $60,$60,$60,$60 ; CUBE,DOTS,SPHERES,OCEAN .byte $60,$60 ; POLAR,FAKE_BIOS start_address: - .byte $D0,$D0,$60,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS + .byte $D0,$D0,$80,$80 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte $60,$60,$60,$80 ; GORILLA,LEAVES,LENS,PLASMA .byte $80,$80,$80,$60 ; CUBE,DOTS,SPHERES,OCEAN .byte $80,$60 ; POLAR,FAKE_BIOS @@ -200,7 +200,7 @@ sector_array: length_array: - .byte 32,48,80,48 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS + .byte 32,48,64,48 ; MUSIC_INTRO, MUSIC_MAIN, INTRO, CHESS .byte 32,32,16,16 ; GORILLA,LEAVES,LENS,PLASMA .byte 16,16,16,96 ; CUBE,DOTS,SPHERES,OCEAN .byte 16,16 ; POLAR,FAKE_BIOS diff --git a/demos/second/start.s b/demos/second/start.s index 25000166..7ffa841e 100644 --- a/demos/second/start.s +++ b/demos/second/start.s @@ -154,7 +154,7 @@ load_program_loop: cli ; start music - jsr $6000 + jsr $8000 ;=======================