From f93046503b9329359617b68b02ee7b98120d2ef3 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Tue, 3 Dec 2024 12:32:28 +0100 Subject: [PATCH] Make level from text --- averybreakout.asm | 87 ++++++++++++++++++++++++++++++++++++++-------- averybreakout.xex | Bin 4743 -> 5450 bytes 2 files changed, 72 insertions(+), 15 deletions(-) diff --git a/averybreakout.asm b/averybreakout.asm index 7e789ec..69c6151 100644 --- a/averybreakout.asm +++ b/averybreakout.asm @@ -32,7 +32,8 @@ maxBrickLines = 14 ; maximum number of lines of bricks to be eradicated ;this static point precision is emulated with .word calcs, just a result is the high byte .zpvar currBall collisionCheck racquetPos MyClok eXistenZstackPtr .byte .zpvar xMemAddr yMemAddr .word ; address where to store memories of the current ball - .zpvar temp .word + .zpvar temp .word + .zpvar inlevel .word .zpvar clearCount clearBallNr .byte .zpvar DLI_A DLI_X dliCount .byte .zpvar AutoPlay .byte ; Auto Play flag ($80 - auto) @@ -979,7 +980,8 @@ initialize jsr ScoreClear mva #"9" Lives jsr clearscreen - jsr drawBricks + ;jsr drawBricks + jsr BuildLevelFromBuffer lda dmactls and #$fc @@ -1134,30 +1136,85 @@ randomStart sta dyTableL,x rts ;-------------------------------------------------- -Level000_data - .byte "100",155 ; number of bricks in ATASCII - .byte "1",155 ; brick size in pixels +.proc BuildLevelFromBuffer + mwa #Menu_data inlevel + ;mwa #Level000_data inlevel + ldy #0 +nextnumber + lda (inlevel),y + inw inlevel + cmp #155 + bne nextnumber +nextnumber2 + lda (inlevel),y + inw inlevel + cmp #155 + bne nextnumber2 +; make bricks + + mva #8 color + mva #margin*2 ypos +drawBricksLoopY + mva #0 xpos +drawBricksLoop + ; get data + ldy #0 + lda (inlevel),y + beq LevelDataEnd ; if end of data + inw inlevel + cmp #155 + beq EndOfLine ; next line + cmp #' ' + beq NoBrick ; if no brick + jsr fatplot +NoBrick + inc xpos + lda xpos + cmp #screenWidth + bne drawBricksLoop +EndOfLine + inc ypos + lda ypos + cmp #maxBrickLines+margin*2 + bne drawBricksLoopY +LevelDataEnd + rts +.endp +;-------------------------------------------------- +Menu_data + .byte '200',155 ; number of bricks in ATASCII + .byte '1',155 ; brick size in pixels ; 0 1 2 3 4 5 6 7 ; 01234567890123456789012345678901234567890123456789012345678901234567890123456789 .byte 155 - .byte " #### ## ## ####### ###### ## ##",155 - .byte " ###### ## ## ## ## ## ## ##",155 - .byte " ## ## ## ## ##### ###### ####",155 - .byte " ######## #### ## ## ## ##",155 - .byte " ## ## ## ####### ## ## ##",155 + .byte ' #### ## ## ####### ###### ## ##',155 + .byte ' ###### ## ## ## ## ## ## ##',155 + .byte ' ## ## ## ## ##### ###### ####',155 + .byte ' ######## #### ## ## ## ##',155 + .byte ' ## ## ## ####### ## ## ##',155 .byte 155 - .byte " ##### ###### ####### #### ## ## ###### ## ## ########",155 - .byte " ## ## ## ## ## ###### ## ## ## ## ## ## ##",155 - .byte " ##### ###### ##### ## ## #### ## ## ## ## ##",155 - .byte " ## ## ## ## ## ######## ## ## ## ## ## ## ##",155 - .byte " ###### ## ## ####### ## ## ## ## ###### ###### ## ",155 + .byte ' ##### ###### ####### #### ## ## ###### ## ## ########',155 + .byte ' ## ## ## ## ## ###### ## ## ## ## ## ## ##',155 + .byte ' ##### ###### ##### ## ## #### ## ## ## ## ##',155 + .byte ' ## ## ## ## ## ######## ## ## ## ## ## ## ##',155 + .byte ' ###### ## ## ####### ## ## ## ## ###### ###### ##',155 .byte 155 .byte 0 +Level000_data + .byte '952',155 ; number of bricks in ATASCII + .byte '2',155 ; brick size in pixels + ; 0 1 2 3 + ; 0123456789012345678901234567890123456789 + .byte 155,155,155 + :14 .byte ' ##################################',155 + .byte 0 LevelFileBuff .ds (screenWidth*maxLines)+20 ; Buffer for data from the level file ;-------------------------------------------------- BricksInLevel .word 0 +Numbers + .byte "0123456789" lineAdrL :margin .byte 7&-6&{kZNKvx2cBO=Nn`FDIP)nq!8M|?vLlK6ISXE#gAqT^U!dU+(v48+J z9KdkVA5cFdQIf}6+o~-`*@ULGG*{>v(xq??EZjo^QGh&)Rt=Iv03}ESIY0y+T3E8( zsBd>iBo!-&&#oUn&3^A^-n@C789=M6h^Ig2qYFavHI#Nhfk+G#NIL@sa+-kxNi$F& z(+m_yk%0mUTya2wL>MTLV+<6C!a#xCV4y(e87L56#sLKqW}rY0Fi;>#1_~s{K!KPH z6v#3I1;Sr-K!LO}P#`B5D3DPG3gjjO1+vIMfpFsvD3HAj6o||~futBHkVys#W1v731`6Z`0|heAK!NzK zIiNto3>3%#1_~s}K!M~KC=io@0$FCDK=_;k3Z#{Rw&q^HAiRut^w5&D7K%6b0>^^e*WJgK=3;O41sLHI#l6jBfndu{=A)l?aPI?ymh(`A6uYE<@ z0-YDgSwR;%5g8UV(iU>T021g7lb7Ne3DsLH64w!aSKmxF%_R_rE#r^q% zQJl*6Me#uXdK3@l8{&aZSHWw#b)+`LC-TcJSjn%p;B)!vI6j}>9LE>Nho;U?Oeq+* zhs49<8U~p4_@u zM_&!#0T>7Ipzg8FFDkD$sbR12j0x@XB!1rnp)XB70S&tC;h>lgyC%JX&Kme^2hXpS zCT(bZc>41DvEJbcDD_k<(HLBx_m_~jYi+rH+z-p8a0-^|0`oq_uA*#y)iSr`vOVQ3 zWqY-*kjvaYHGYsWJcBY*P6${Ct2Np}Xp0yptrv%4QU+~!uC~uEqMQADRRc(-K z`Y@$%>q<*#&sutEanJ)DDb5b6G=6syBr6A&8n{8WA6yYy?YCQ9^zgfzjfRNnxz!lC z)er%?xe>HPE~xbuTxNWHxETH5{aDIsvkTg+CDo6kT9^85RO?oQF|9}47c>0-;Jo^( zdN68kf}n#@FsOT?K(E`hFPa@1AJV$cDO%6D^BZN*`XOFR!BlNP?Tc!IF!Q6KuqSaw z%(&o$7dU0*wtu#EPPqred5>n4>8WZWD3wBdpTzXcX=EeXbwP~eJN(^Bs++XsI# z1TLO5Lzy8j*=E9KGw~Vozlq-jwIrN@?saD%31`4RHNsAS49xk-WeqMswyzvpc?IN5 zb>C=qbi?a&*}6MZ=W!qZb?~E6?o)ZGPBiMo!VdElog;PPQmtszTIvg+){0Ah(ePVp z5LCaoR3jQSmii>9HR6&_G<=ro1Jx%kc|}?0GF7TqoZ;@u#vNhSD=NFqu(2%6`b1@? z88lXe*&0!K&isjSSD5vSO0&7mxF^ikii&9ZjQhfDov1t`8(xvz5g<2N7GOcLB0v@7 zt^lQxdjix;?hCSxCRCJG(G?YCRCHBE<0{frlvU9+73CJqFXVLf2X9K3WhuqofrqJg zp%;#o&#cm2xEEZqbouXYa9w{xGCCvz<57upNX8L~9F>g25;-Cnha_@XGGvJylFrJK zyv1Er?eo{M57H62>E`Pt{SRaso(cRe-`%WlCrbkVO*4NfWbAZ@?$@}SN>XzJp^Mbo`-sW4{#yONg{L^x?h z6@R)GSFA7a@KCTK+Re{d5&x2Rg~MadkB#vUiU?v^%cErhu}sdl?A#zhDX205TgEn3 z+8>->_SzM&8IaVeX{`XKn2n~F*0;+o?}Tm1Nn|S<&8~=Nkxo8)_bi1IV>i!sIy$SY z6z)`5&R5=vwUxE~I8oLls~XG7;wm*OiM^YWuROhC5=#mnCl@6B&cu?%u{%jE&X%<^ ztj%KPwYo~aQV}e`D&DfK{rzArC)|!_lPWSikjM6|--uoA*cf{8ge>ulkf5Ge>5Z>PdjqOmW(4;Z5g*kb0llaHAix}T>R0HVm)%XJyn~ky*|Y8;YhoD xB3WO2sQ(!s2R-h<;|@H+9XNTU3U+t&v_1aL8V?_O>#esf@{ls`{@nd1@qY{i>{b8( literal 4743 zcmeHIe`p)m9Y0BqCChGnNol8KOMBe8_K6ju5z=L}ny$Ihd7iqa{VR}^UE*kqppYzq zk+E(_vY#zmdGRIoGN!cWnNnWi5E44Nl91{uyz8jO=@N zPqLh4EPr?T^5N<8{qerv?|b*&)BXDl_w@7J-Wz=Cb*A8g01+t&kbM*c$SDc}q(DJ{ zEKm?2bqWF`bkPL?B2f?^M=1ypm4X1dLP3D6P!J%2q6-2fLP3D+ryxL56a+|_f&j57 z2#_@j0))Hdf&l5KAV7{&5FpbO1jtni0%Vnf0AXib5FmRf2oQyW0LfAiAafK1$VU_e z2&20oKtu`xWFG|qa*BcgDNqm~3ls!Moq_-fm0S=Y5(NQrl!5?JDF~1&6a>f$1pyMc z?1BJ^P!J&dDF~1h1p!i~AV4e%0%VPX0O86m2#|gX(qDdal7E@um`9eBEsqraeDY_B zliQi6>|k-%c7}BXlwE_zP9&Q8Z<)VLhuf@<5?=ACzQqwd9S%5J|D11i1nYQ@@%ra@ zAe5ZMXLy58GI)a5@j%!E14t+t!SBdA4tLw^m$Jd2ca10TrseqI&(O4y!e6({&gEbb z2bb}7OP`jwVPoyekeNY5n3P(~k0jH4lasOp{Dvd3UP zA46j>j-zqI=a|2vzS)zH_|0c6*e+lE7d;Rfn|m5I=%$Z_Wo)mwocVpgfL*8_w+$b7_a#@sxa%nLCP<6UkH@{|^2g;?P^(B>t z^>o-{ZJVD$r^DSlj>5|H)8TqGRrf)$xaT>?QQz?+*U?=KI1Xs<1=Wtwv+Qg7INS3< zR%JJ|7T2G%^=5Iy zM1ekW5VUx?S0Ao=tXF3y>U-b+M9SLR?1638Q`(b~p4MKJ^o%wr=|fshGJ}6+{ltunhVr#Oqm@s*h>cV){7D{4f{s#ZL=G z51jBStKPmDTCqw4i}&_vL4%d1(ag@ z$obOwhhCrG*mr0C92()i=>70K`>|5%63i~4y4`xkU~!jF>lDmRTip$6r%($DX3$o9 zK@AGE4#DiO)vtltA=Cnb8L-s=r~#qo7ZignwrPH0k-ejsxA-N$pzg9F<{G~g5Y(Mk zuX&qa>JZd#THi45@Jm5K?X$L;clo7GK^3fkd5>S}64YlE(=Xs#Jmkh}JQT#YdFTS) z;h{Brmxq4wJzg=GS&b=Z%tehUYRn~#nb8?f zqO#fB)*c9U(I3WO@KrC@EgJ9O1$ZXVyIiKv*oJF7_m4iVKWy&whVONF@lNpJh}Yoo zx4ea9Q82EaX1r%SUc7nP*o1e>#>@C6+1P<)+1QH*%SpU3{(KFSp)=lFI zJ`gp0_+V6V?xi6@RpS{b+Ij=;Lqniniz!=JHoqmGcmCUaAU0VaZ3~EPa(~yI&XlIP zb&8XV2DaMm8SA=39knHOqljD3ozSe|G_l?v&E{rwlm`kls?p}1RWw_$ozAlVv$|W5 z?nFz&PRBG^Gmq`36MT*ObX5;FxN+)(iCcAuY_1)$v`&OtuB9>B#ckeLt*y1jG;`62 zroS