From 34401d1dac0979e69930e34003233df895f70482 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 2 Jun 2023 16:37:01 -0400 Subject: [PATCH] sb: start using big sprites --- games/sb/Makefile | 2 + games/sb/asplode.s | 106 ++++++++++++++++++++--- games/sb/asplode_graphics/Makefile | 11 ++- games/sb/asplode_graphics/sb_sprites.png | Bin 0 -> 18268 bytes games/sb/asplode_graphics/sb_zone.png | Bin 2218 -> 15361 bytes games/sb/hgr_sprite_big.s | 91 +++++++++++++++++++ games/sb/zp.inc | 2 + 7 files changed, 201 insertions(+), 11 deletions(-) create mode 100644 games/sb/asplode_graphics/sb_sprites.png create mode 100644 games/sb/hgr_sprite_big.s diff --git a/games/sb/Makefile b/games/sb/Makefile index 249fcaa8..33eb2b81 100644 --- a/games/sb/Makefile +++ b/games/sb/Makefile @@ -60,6 +60,8 @@ ASPLODE: asplode.o asplode.o: asplode.s zx02_optim.s \ asplode_graphics/sb_title.hgr.zx02 \ asplode_graphics/sb_zone.hgr.zx02 \ + asplode_graphics/sb_sprites.inc \ + hgr_sprite_big.s \ zp.inc hardware.inc ca65 -o asplode.o asplode.s -l asplode.lst diff --git a/games/sb/asplode.s b/games/sb/asplode.s index 4f220f21..2cc35c0b 100644 --- a/games/sb/asplode.s +++ b/games/sb/asplode.s @@ -1,3 +1,5 @@ +; Strongbad Zone +; ; Yet Another HR project ; ; by deater (Vince Weaver) @@ -19,7 +21,13 @@ hires_start: bit SET_GR bit PAGE1 + ;==================== + ; set up tables + ;==================== + lda #$20 + sta HGR_PAGE + jsr hgr_make_tables ;========================== ; Load Title @@ -38,18 +46,14 @@ load_title: jsr wait_until_keypress ;=================== - ; Load graphics + ; setup game ;=================== -load_loop: - - ;============================= - ;========================== - ; Load Image + ; Load Background ;=========================== -load_image: +load_background: ; size in ldsizeh:ldsizel (f1/f0) @@ -64,9 +68,88 @@ load_image: jsr full_decomp - jsr wait_until_keypress + lda #16 + sta STRONGBAD_X + sta PLAYER_X -which_ok: + ;========================== + ; main loop + ;=========================== +main_loop: + + ;========================== + ; draw head + ;=========================== + + lda #head_sprite + sta INH + lda STRONGBAD_X + sta SPRITE_X + lda #36 + sta SPRITE_Y + jsr hgr_draw_sprite + + ;========================== + ; draw player + ;=========================== + + lda #player_sprite + sta INH + lda PLAYER_X + sta SPRITE_X + lda #138 + sta SPRITE_Y + jsr hgr_draw_sprite + +check_keypress: + lda KEYPRESS + bpl check_keypress + bit KEYRESET ; clear the keyboard strobe + + ; clear high bit + and #$7f + + ; FIXME: adjust for lowercase too + cmp #'Q' + beq done_game + + cmp #27 ; escape + beq done_game + + cmp #'A' ; shield left + cmp #'S' ; shield center + cmp #'D' ; shield right + + cmp #8 ; left + beq move_left + + cmp #$15 + beq move_right ; right + + +done_keyboard_check: + jmp check_keypress + +move_left: + dec PLAYER_X + jmp main_loop + +move_right: + inc PLAYER_X + jmp main_loop + + + + + ;========================== + ; done game + ;========================== + +done_game: lda #0 sta WHICH_LOAD rts @@ -80,8 +163,11 @@ wait_until_keypress: bit KEYRESET ; clear the keyboard buffer rts - + .include "hgr_tables.s" .include "zx02_optim.s" + .include "hgr_sprite_big.s" + + .include "asplode_graphics/sb_sprites.inc" title_data: .incbin "asplode_graphics/sb_title.hgr.zx02" diff --git a/games/sb/asplode_graphics/Makefile b/games/sb/asplode_graphics/Makefile index a3f6a0f4..7a4ced95 100644 --- a/games/sb/asplode_graphics/Makefile +++ b/games/sb/asplode_graphics/Makefile @@ -10,7 +10,7 @@ PNG2GR = ../../../utils/gr-utils/png2gr PNG2SPRITES = ../../../utils/gr-utils/png2sprites HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite -all: sb_zone.hgr.zx02 sb_title.hgr.zx02 +all: sb_zone.hgr.zx02 sb_title.hgr.zx02 sb_sprites.inc #### @@ -29,6 +29,15 @@ sb_title.hgr: sb_title.png $(PNG_TO_HGR) sb_title.png > sb_title.hgr +#### + +sb_sprites.inc: sb_sprites.png + $(HGR_SPRITE) -s -l head_sprite sb_sprites.png 84 36 132 92 > sb_sprites.inc + $(HGR_SPRITE) -s -l player_sprite sb_sprites.png 112 138 167 192 >> sb_sprites.inc + + + + #### clean: diff --git a/games/sb/asplode_graphics/sb_sprites.png b/games/sb/asplode_graphics/sb_sprites.png new file mode 100644 index 0000000000000000000000000000000000000000..b665a4e3a1afea6daca5f0fad719bd11b204b7d7 GIT binary patch literal 18268 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 BeW(Bc literal 0 HcmV?d00001 diff --git a/games/sb/asplode_graphics/sb_zone.png b/games/sb/asplode_graphics/sb_zone.png index b27d87c3ea3b9d942c73a5f39b3313fc2d9ba083..5e131b93c996a6f4ca0f63d3f74d6f02a339ebbf 100644 GIT binary patch literal 15361 zcmeHtbx@m6+b-_zF2Oy)wYWPyff$g_hu$fp1tMTd#}Csp54qwYilXvVo_lsARyqXswn6nARtmazIUP^KR$Ur zf>jX^*ucJeMsOXl7lVtNvyD9r$^iFqfigh7?QIYcyqBt8*=Nv*q*OgvleVECM7WAk zjQdFJZC`p3%Bpdfm9w;wRb&kfVtC=$cmcCYB_8e{-rw^5IuP^8baO1u+_>hunAu#* z-I0D6z4SWyc7K1Zd>cp}81S{~*w%lGWwRpS*W%{oMbCjhefz`r)!Z=p;|JG*H(pf! znJ;g+JX*WGP9I_R$~1~KA{*eIB**-KUwr z+n04z>bwQ4zqBUjO~hB5_H?0AUcWR>&6oOqxsM%((?9$=og2*BsI`3EF*;?NR`QUG z+n#ah1^)!PyF!0y8|%C-WjaLA+;!P~DWT7^b3DJ(By=P4aG!4PEXQN#rE#Jbb!*j<>B} z0m)52Bu?finvK?&95XpX>W zupbRKf{v$e2rul_rcDwkn^ZXRaBaoEB;s-|YjYQ>J)6R$8LR)ZWZAM_=X38<&3Fo` zMYqplnP%?8Qi)cI*@kL7A-m72N^%^^8iWn~Xh%(6w4@uDI<&>pwIZ&zq?Wc_tPHG` zgmU3Ok@D`L5YWoC-!ZnybMzD$0Qei2_@wI_ng+zvHaQacXPSF02P6{X6~L#4N?-Xd zeX})_J6h5dS#_&uJ^CpT_BvLK6pLXec3bJBRtS*67oipw$!i<93PNjjN7D5yR!>rmKfm zcP-OPa*Yi8bo>VQP;HL(ut{Ga*kW#qrPd} zP(2`=UNcF*>2;CCs?eN4y)AtA+={#AxaFer_UC%&&}t?ATYWPup@b*LaipqlSkuN3 z_9m=tqDYC|*8UNxxo@}oP4ga3#|0Pl}|z zF~YFgodsgEl{k-u`B904_X~b_VzfUKMdIvz#*LL1nU__k=&1FbjuYxSXw zT^+uzj^jWbjr*CxhdfiB%bv3t?W&VxiK!<{^ixPT>paw2&6BHeC%WV;%rZVh&Vm50 z&{i|Hh@Ox)q6_6PFAHA(&BICshRNvh5fmG;tvg}Vf zi0-{tuRE@0A2at83qIEtl9)DT;Ea99W>n+$vB^krY6zLzkua0$<}+55VHex@pgQRE zy0$czi!JyKzl|6ow~dfN#)wG|dA*0KSvPA$m&x|rVI72tEt0@&?(8t2T8LMSd2(~W zhG&!cwfI^mx_cYSe(f;lQGnd@7=)icBYaJzoH9gzFoeqxqwJZW3V9_%oAA$KU*fk4 z+n|eS`01JQMS@ql3g1Ze2@SJl&a?D?xOESua3qTLQe)><&lFYpcIb^c&NQT1NY=6Q zzW072IFm}VxidNStE{f9j&&4IN9+UNoH#|HDHnUOh z5rdH~=Whl8BduTT!=9x`%!{vO?L(>w35u`L_IKoe5>f?_1;}`-W{lPjn0?iHF2;id z_o#Yi9@JqQzEC{vE9EyMAROg^B|}kz!2}8$V`GTK3Sk1_%VnZE%5BOu*J8Tb?%5s7 zP@PW-=XR65H^+~Xc}H32vZLn}#!gLLt~s3EtoUjS1@!hsW~R~Xp3%rr0ie^S1nU#j z0Lyzmj|x^xl*Sohg~QdAsIYE%FdgRlnoOgw+ZCz#+AP*#EJ%)NpP$UElu^p%M4Sfj+E0z(pp!Zm+GY$ zF~3&&ka5ICz;T379vPYjG$S(`%26)1l%%HI!hHI*3*WU=u->teeBaHU3j52%>rT?o z;ipwP1q6+e`jGs*GR+OoP!$D&t<@&!doqd?$#RnsNt$)AIe5VE*P@EkqwzMZk zA}hd=opPA;4BAHz&2aU01y&eic*<7=21~re>O)rTV1l4G!8%TGPOa@O6t(qacXfbn zfQbLC1$(y;BQn!l4_Q6-^ypEsBvzZK4BYh6y2c1mzTDv(8B;x zfDIe7T(Gmnj>JME|FwE!7#oq(_|3koc^JKVm*IJXP`#OZ zLhSnW8GZlB0l^n(dimjXFD93%-Uk>?2VU3x573=B%H{aLU&@|pd6x(O|EZwr8L?dr z7fGs&)LZ8jkqT55C&I=1?4`Ogf{n0>YSetzjw=@u&iC5;#ABNYrOrb5oExdLNwgEJ z@y6SsgYlbYR-FKGR4y-$u7w9StwnD27c_A2>!=_3CKENyVd1dO*ezEUx{06YaZ7=W zS_&`CdlTV;5{ zmTZ~6a{8i%PoUScf6CZ6;XfIKbWChc#`~DGqULur$2#~E5%~$xx*nu8qMv)$`>Qt9 z)ZC_K>!)&b#wfux@$jZzP zzK7n(aRXUG9srd1lHvoh1M`g_x;FmM)(P}hQP@bTFA8K;U4{bKHm zSzWnXcNW1h24JXG4Q$_v)zyoNEKfsQ(xf{8W17(pR=GQu+kbNMZCQvWtXA$B8re-= zjFM5drj5Wy4x%hVdS0J-L2O+bnDk@~%W&}nPegPm^CH%_XzzX1w1iz(H4~?Z|)gjIGV&_Args){z*7;mnm^76+7`9WhPV_q>i&~4MZz3<+$ zeFEB~9$m6oBqh`(TTGYR%^Osmt77Sn5$vIVJ86vn^UWy_Kq8Yg=|%f0b7UAkjA-tv zD2f(=U#9*OfvjgUu#RxCz#-`=0WtvN>+ERFff!Dlmi4F47;EjL`-on9!N4kq0i6W~ zq?$pT-NpX*I^T5m^nK8>pphi0T73#sow%W$IPPQES8Fmdr}lnF(NwSB){igfj^JhX zeX9wA@!wF>?k$B9RK$)T5iPV2;SU>3BHNNqB$2%rkrV7RT@#Pe5FMu!Dhn^PSP1%# zVM-*k(m1=6MQGiNe|_kq}&EMJ2Qso>gbBF_mVBl!nk=lw;6t)=3e~1AH8gE0|7AI0{5CECX&g^R zCM1X;nU;2;QCxo`;w7a86I8K zB`C11jSh~HFv2^LxTv&=4P3PqJqT+I^dTFh&j^CLFd5eH_@5aK@{b!; z-F&6v!N9~{Q9d?QBZ1~#&WjCG~dP*+~n!~wq*vNUtC2oVFbiS{$god+nR7wj(zg}M# z>)%lil0xu7?IAp=WT(QilY3^%OH>c^!>J^|xOKWYD-xgDC(r83ZO?ts^ zMVG<2y^B=0?%|D8jYeEaqPoXtk9VC+(UCE9oCp_*ovLv0A5b#4ze38X&MBusLMo`V- z9Zk(-`a?hO`-oc>)1@VUS%Z7;Ff$H}245Y&zt$~Rg-wN|3-jARVW;qw|Eg!SmqX#Z zXcGPNNUJDqk}|nzJ+tArWFuu~Hjs6e3e4LyGfQihuIyjg>@eXsc_-Oz@ob^dDzppa zeoN?UMW0ugO^9LENe{$sCME-Qe!nc=Jx64+jjBd>qA*+$bJx_j>cZp=Mjf}|bSKpZ zP1skGFXaL0@f2Qb3wIMgrwww2vxX32to2tCa+r3*M$&MI9m%2PV@TJhOnjDf6dn-z zEuD~gVM1YjRDd7T-iguc*IU_YF~i!F61rWOB%(sH-R1s0=vRR=R$+UVRC%`impzh- z3Stb#NmfhLD^YjBm=i4u+RTE6Fcnnlfv7ka3>EJr9F0n#PB_l0wvN2QdH8K&nQFei z>dQ6$=ZORC=E`m{a=igFxw^11nU`*aEW%+Cy}?>iPHpw-2n_9d+16U5XAF0;vP0qD z6OH^GCWkRX%|qk6A}RqL^WQ9vuA+mtE-RNm(v+Ny8>+pU6gp5jLuj zBLPBWtb$0BRqhdVmnq_K4zK+s%>Q(Tp!LICnA58Uz>e(9^ zlu*daSQJSUz{?nI4qPIJ&nQH*y&M_n6~m6nLVJR9+yp99OR!w5Y66BB1Ox_KeRqes z=)t(R{WG8HULrd=Oxn)bv>C!D6lK>zNeubA*}0Uqs-7;XZz~t!+UcY_X8I#e%~63V z$~su9HB2z+pK+?Fc{@BDLKJk$F!9|U42=x>ud5!fJs8AG5?2uDOA<5-UdD;M*x+`j z)J!8xL1-N$9qan|s(^{Z09m|iTrS_0oTOtS$)`3Em9SkllbcNx~STv?qIpK$ii-ih)+NqM~orJQ64 z^9Ho|6J_zh0;nWGTCiwT$PVU zWYAT65F`~StE|W%(|!U~Y0|KCVT}SF;<1?a0Y0G4p9h}6YFJTvg?UEVi56jG*)~>G z`4V-P`Wk(v@Vh&$k8hh+o4j}5_S1S2eF8kG{ZV$CQ17-AoW;=*h{xA;k6xrgF^@88 zrQ2CpF%0Z`HkIzCTtqzE`KDYg0%yL~NUpCCT00%8&*=XwyIIRfjg;Q)c~5AYOm7*> z{A5~Xx5Q9?mk$lAaGO{VrE^hV?YuRjTag-8>l+VkszkPxaj_m`CDzF4dad%C*)KX> z-(a*$t*@h#UL#_rQB%D>Nh{66vh5F1+sm=&blv0>b}I;?!9Z3JVhmnTXbj0==Go`1 z_^v+FS>7VmfIYnjD}1LEoZQ8KG9T>d?7f5e)&1iX2^VF$`k2FeQrxMUWFU?74sHld zeQTFwM$tDQX3f;Ioy~_i!k?yr+EoUf-Qrr?FIV=RY?et&N9G#jA>e`-uI+`Z!D2!)f}mBviBdWR$5Mo=TA{^huxV25o7yYP_uN9Cl*)x+2Mx`#N@oeDWC?uon% zf_c0_&y}~bg$;J7U+FS0+57;>9H6*@RGDpmI1^tly(ICs55oE>* z2GAA&+XLf{H`3SZC4Ln{ET;J~HMXTsoE-1y-(q4+iW~J%HBPUb zUT`7Qgr?}|eps+#U<>odB}|Uu(l<}Ssk>b0?%R%Xr5ONEQw7Sh6;Ny!2r$v)RI3#X z-Fh72^!Sw#&XmUuPRMegoEZS%4Dk#h67U$Y2_|mTSi~E)u8A%|*(6e-RmtOix%}}8 z6(>e&^dZgfh~z5Xp)gKf+$nAhC&Dax@gHP2GLFcVqMY4XUj+L3inP@CJ1q#eYgcPm z5qubaFv`|xk|B(K){Z+0l0$Gilc6Qy?At$w<+O%TjHoIp`iE$`it<2lPb^@p_ssh+DFFB=#@Ecw~&8u|n z=TG9i9WmUkbO5l-A}EsY9KQ4|y%*{%cP zB*0xd&Uay-7np6U2LldyU|K1`^$LbB{E-M)s)cpt%GS$O9~dSC7{(+!$0g~BdJ@ce zG?P92(g~px`x6nJ@!Tji)xroRicM$>;bmnaSS>0h@AR(6RA-!nY#gVi3};sAMd2Eyq-3+I8o*jmuV) ziCkrb>tA9)ugg#R5<3sT5)@(TNw@F%xwB|=)XuyFS`(6OC9asoP~PLu^kdwiK1Y&s zxhKo!J8@c-m(0O1bInTVu9LsqQ*WjhPL}DTW|?gdXQu#J*%m&PB?9DZpVaAU$I_@~ zfy>PcsY?9HZk2SWWhLnO!A!4s7F}v{fvfvZSN~9h_vJwjn>4oWeWK!khQf zk4isAo=-v`RZT-3EM(?JlIaD`rj`<3&MiI_1t%LGQU#gSqQag|p|vx$9h?7hNi~VW zrXV9#K=X_qUG?TiI1o*;eUE5)4mT!`TRe@e?{Xr#GHO z31n?KB0=<5mF2VF^xe8wl2oLLo69U5t@qIoJM$0G^z^WsDmrxt(o|OR%PDd?G@ioM zRfDsv)jD1H(u_lPi!f+ECZ*%Tq*ofZ7l3|mgs@_o5XvmogiqQLQFXM?Y0%k_%M*L! z*G(EE@-{>wm1-_Iw8?_E~&dr4fu<=vO=WmB@JI(ZL_(lqtL(LSvu`Y zFMcQ0`C)no@PESDdyH|)Z)#~~QdIt(Fo?g-NluDXs@qCJkJLga(E>udUsl z>`z!h_MOz%FxAJY*01&CvKa0T+}$XK?$0IpYA=9p663~2<#1p5EmGQaM_Nc3$@x3# zWwu+0eBVxktMeX{H`6HFEF)H$-5_^bPM982vODr6=&5Y?15P@K@ZcjI-rMX k* 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 delta 1744 zcmV;>1~2)6c&ZVQBNYLJX+uL$Nkc;*aB^>EX>4Tx04R~Or6+X(1VCP<$djTrKL-&l z2+_%>E0gFpCw~TZNklE(N<`F@&LD@;S{ zZkl*9{`>Hs;hF}_P8qX=If-UpSB=Vbz-*%Fl&fZaZVB-h%MykOOfk;;1G^y!@xYV^ z)xS?;XcBZ!+@aTY74(+DvMnQSspD$Z;)Ur&Qzv7ZFq$aBqu?^(yoYF?eia253Fk<3 zPW{e$l7CM&zWQjr(poaQf-7Mp1|w6LqM$}R`PWqN7MNZ#ctxYDEDAG9CJaLjjHzED z3NC~p0y7oOV+{=9!nQ-w$`U%XI&f8E$0Ge%)v!4#9?Fz zr@mY0r5Sn zKYxM${ZI3=({=_er(!)B3?ywXi^50>h7qPI`W!?l7<3q0G%d_0YaE``0~65iLNpAa zOgnYR!59`K0@Fm36DFkJMGj{0Y_!%k2(y%ot>6*n(?&j+kYsEH4=}u>d;vz1Fq~nU ze-Rk3WNZbGFnmUW$6?;hl7U(4cj(0CJ%4i;3BeGU@{g=7%vr!kszWxx%q@-7z$jH< zFN|0)O)N!V@C^oGn66Z~1E%XnrE=9MYt_<|fieywJ{T%s^!N5KV!^;?mhFQf2LnS5 z0<$7|1xBJU-RxjcAyF7YEn}7I`&Dw>Fz0YucCiPh&86<0NIHx>0K+vHbePvf@_#i) zApjFmFj|`FVBTR(>uJhiP+;WTO*DoacQ=uNnML+ktNP3iJk`zwjCf%>^Xr5WCDFu# ziJ<|{Rk{F-c(R^%UHb$h5g4jr-cu*si_GYWCI-UXX@)8oF2FQn_Omdu0Y>~VrnUM47-^PqF2jsFox(6|fmtRRGqU%h)&^OQX>Mn9=ARCE&;V9t?Uupc-Q+vqR_+sIo5J50pRG&7or6bzeScM$#~9ZKe*!45!Ib%6y)EiAJf>%wf0#W|?S| zG~=I6`(eZlGnA$(4_l3~t-#0)FgO#97TL9D;?A-CC=9+tGfgufl`K7sAsQvkRG*{t zIT|I+)F0}+0wc16#*S?z&3}9sj64FP)}za5risRrX12pj6OEQ;>K`c>*#*Ngw!aW& z;%2t=)52cOV7A@;U=`a_m`mwI9ZK9VEzy;RSsi}16V2q<&OVsg7DDAShAqJEi=RIT z(@3oL19kh)F2R_qQQ#^VRl%&~?WobTFtQD%>nC+m*=mMp?g$%+-+x0RHcaYXVA06) zz%)c8zG)7IY8crIBU@p_3nM9*jL2R$E~ zU_-(JCNV`hZh8_|&SIMs3BUQ?Ie3hYNyDeNIboP?{40iuMm3V~W0*NDWyHHxmuL_g z0hpT=kRQ8UFsT8X%zse7gh{%G#EoGL7%~>`boR6wh9nFL7;G34Fl4())-aNTN%(TZ z;wJCs*PM2ZzgKOVJPcVFS;1rq4)Q%P=?RNrBFIRv>(@jLTe)bi);ivNAknU6FzwmK z%!-f&lMJQycyOY^H=P>fl1y`4I@dHcFvltBV``9^TPiTA?0@??ZJL5%K7-3OjC}UJ zrJKg{ny+CFm~_*iInqQgA#E=uBwPT4(B9_c=p`=0Kw7?yW|I9hF0yk4MlQfe84S%m z-+?liOcZb$waJZ^EM9OA1rx#xo+#_mz7EFuYGA^ihQXOogD@%kO6YZeKRpa1-vtxC m$K*yBxelZ3>KXr^!2AVegT(sAQ~1#U0000 1 page + bne sprite_no_page_cross + inc sprite_smc1+2 + +sprite_no_page_cross: + iny ; increment output position + + +sprite_width_end_smc: + cpy #6 ; see if reached end of row + bne sprite_inner_loop ; if not, loop + + + inc CURRENT_ROW ; row + lda CURRENT_ROW ; row + +sprite_ysize_smc: + cmp #31 ; see if at end + bne hgr_sprite_yloop ; if not, loop + + rts + diff --git a/games/sb/zp.inc b/games/sb/zp.inc index 07270d7b..1cec88e5 100644 --- a/games/sb/zp.inc +++ b/games/sb/zp.inc @@ -62,6 +62,8 @@ SOUND_STATUS = $67 MENU_ITEM = $68 OLD_MENU_ITEM = $69 NOT_FIRST_TIME = $6A +STRONGBAD_X = $6B +PLAYER_X = $6C .if 0 REGISTER_DUMP = $70