From 36a340a863f1c36bfc7359103f6f06aef02aa41e Mon Sep 17 00:00:00 2001 From: Pecusx Date: Wed, 4 Dec 2024 18:40:00 +0100 Subject: [PATCH] Better code --- averybreakout.asm | 129 +++++++++++++++++++++++++++++----------------- averybreakout.xex | Bin 5939 -> 5968 bytes 2 files changed, 81 insertions(+), 48 deletions(-) diff --git a/averybreakout.asm b/averybreakout.asm index 0e9ba98..be77954 100644 --- a/averybreakout.asm +++ b/averybreakout.asm @@ -220,10 +220,78 @@ JNotFire .endp ;-------------------------------------------------- main +;-------------------------------------------------- jsr initialize mva #$0 AutoPlay -loop + +gameloop + jsr PlayLevel + bit EndLevelFlag ; reason for end level + bmi EndOfLife ; end of life :) + ; end of level (level up) + jsr NextLevel + jmp gameloop +EndOfLife + dec Lives ; decrease Lives + lda Lives + cmp #"0" + beq gameOver ; if no lives - game over + jsr NextLive + jmp gameloop +gameOver + ;game over + jsr HiScoreCheckWrite +@ lda RANDOM + and #$07 + sta COLPM0 + jmp @- +;-------------------------------------------------- +.proc NextLive +;-------------------------------------------------- + ldy #maxBalls + sty eXistenZstackPtr + ;OK, one ball starts! + lda eXistenZstack,Y + dey + sty eXistenZstackPtr + tax + jsr randomStart ;just one random pixxxel + ;previously the whole band of ballz + rts +.endp +;-------------------------------------------------- +.proc NextLevel +;-------------------------------------------------- + lda LevelType + beq level000 + bmi levelTitle + ; load level from disk +loadNext + jsr FileUp + jsr LoadLevelData +levelTitle + jsr clearscreen + jsr BuildLevelFromBuffer + jsr initialize.ClearTables + jsr cyclecolorsReset + rts ; start level +level000 + mva #1 LevelType ; switch to files + ; reset file number to 000 + ldx #2 +@ lda StartLevelNumber,x + sta LevelNumber,x + dex + bpl @- + jmp loadNext +.endp + + +;-------------------------------------------------- +.proc PlayLevel +;-------------------------------------------------- +loop mva #maxBalls-1 currBall jsr cyclecolors @@ -679,29 +747,10 @@ NoAuto cmp #maxBalls jne loop -DecreaseLives - dec Lives - lda Lives - cmp #"0" - beq gameOver -NextLive - ldy #maxBalls - sty eXistenZstackPtr - ;OK, one ball starts! - lda eXistenZstack,Y - dey - sty eXistenZstackPtr - tax - jsr randomStart ;just one random pixxxel - ;previously the whole band of ballz - jmp loop - ;game over -gameOver - jsr HiScoreCheckWrite - lda RANDOM - and #$07 - sta COLPM0 - jmp gameOver + ; level over + mva #$ff EndLevelFlag + rts + ;------------------- ballDoesNotexist @@ -711,30 +760,12 @@ delayLoop dex bne delayLoop jmp endOfBallzLoop -;------------------- + GoNextLevel - lda LevelType - beq level000 - bmi levelTitle - ; load level from disk -loadNext - jsr FileUp - jsr LoadLevelData -levelTitle - jsr clearscreen - jsr BuildLevelFromBuffer - jsr initialize.ClearTables - jsr cyclecolorsReset - jmp NextLive ; start level -level000 - mva #1 LevelType ; switch to files - ; reset file number to 000 - ldx #2 -@ lda StartLevelNumber,x - sta LevelNumber,x - dex - bpl @- - jmp loadNext + mva #0 EndLevelFlag ; level ended! + rts + +.endp ;-------------------------------------------------- .proc fatplot ; xpos, ypos (.byte) - pixel position @@ -1164,7 +1195,7 @@ drawBricksLoop lda #40 sta xposTableH,x ;randomize margin*2+maxBrickLines maxLines-margin*4 - lda #30 + lda #50 sta yposTableH,x ; random initial speed and direction @@ -1409,6 +1440,8 @@ StartLevelNumber fname .byte 'D:LEVEL000.DAT',EOLA ;-------------------------------------------------- +EndLevelFlag + .byte 0 ; $ff - level over, $00 - level ended BigBrickFlag .byte 0 BricksInLevel diff --git a/averybreakout.xex b/averybreakout.xex index 0f6fba23066e5e289770b2aebab57a373fa3ecae..e8a0accdc6fedd3d0ad9a2aa2f6f45282292f92e 100644 GIT binary patch delta 1772 zcmc&!&2JM|5Z`#$PH+;kg;udmDJ$$G>ySp~qdWPC@g+nUw7ZlY_ z;zu0ETb%5g4~dncD9_4EwIC}T+DeP4LQpqI>9(AzQi%gZRIMzBuh2tD$2J05q4rX# zdzhWyd-G=Ao8QdLb-Uf(wKYbti{4gtOM@w~6qzzhIkS(YjQK9BespV!r}ZXc=_P$X z`*EYJ5G~pg7>H>-`V1RRFj2~2Q`i~lYDF=h;ESl&!b_#CR%xrlmwm!&7_jh~X!(DL z)@vJF^|$b(m^%3tk<+P@vqD2>+}ec7ufWOIJB34?!e^pT=oC^>VN#6KI&Bl0^4MNv zde9=jsy0Vx2ObkHh=noxxa_j(+Z~_SHzb_2IT;VyT{0fB56gJiJ|N){yI;a-J1gN) z`=W$1c1Q^f)H(I82i_G@X6?tlIA?nmJZ?8Bc*5SOV10V5I5AtyVca)kwRELEP*>Y2Q$ZxzH&YmTMlo=f1kU_L;|XJN&}tOL2^2%5EcQ z6wbV`l+IS_$XA@eCxlP+nflw@Bk}BtKHkuJbVWS-jVH~oo?jKMhoT1Zfv7zct^1<( zK(y|O+I`WwD{A*dYem%Vil48D@%0|g*Whn@@?+o?mp#xS^tkpdlrugjY!qowD{Y1L zfxS&gDCo`W+7e6J<6bIjUWG1eO$zPNHY!t00IoYAnrppK`~!^XQv%Qcu+XeP55U69 z%AK1&_s1zF1GGVUffvXu2n_}50N2fgZm5pQVSx=Y9Rz24l$?*Zs`v2`g{?rK}5h=DPH1`#UW>(+e%{^ zhe|B6*a~a_$fA-5RY%ANu|qH_JjiURj0$=Q8#IRVlLO3|abwwVJ&&`{v-$1MpoSgz^r`2nn^e0fa)znE)yYcBsCL2WA z5YlabYy4GI_AT;{)a%>U2T^wjL62a=3L%`Y;hGE(<5&K)QZ7G2CU5&j51Bmz4o|H-nmHc+Winppkrr&qJu4a0V zdmaKW;)7eMrFoG21BKlr zd(CE(X*QWzqu2qvc+*T^l*NK=VNju#PNZQF;#VtZ(anmo4zx8EcTLaEO8sab3%w6# z&N=tobM866-yN&tbcc6o$;Ez|^ENYU?yDT5VU=ezkJ`g%F7+Ko+;cnY*J{;WjFy$R zGy5A+HG|mZzCu>^9O|MAh2J2rHwh5n~^3F=8oXoaIQ|Sl~#%(ZrJhqmw6t z#u|X|=#*GI8nJ^v-L_RT+o0!R^ z3F(UR;vsDF!OC<)ih61wnF?uQ~M3vlo(S=jaQeqHlFI)s|F& zv%C-_aNtnaaG*{)Y9BW>a$ixcrnPj5mXGK@}Q%C-lT1P9q%1w|%>^}MX+B=?K(9wBWuWLRq zkB**qC;f{je@6OsB!Rq!r0Yn(ill2uzk;NzNWYAvD@dP5(q;7dJc_Pxdwg{b%btE* znoBz8hVHb_q#uFZq-Fy04cx;Py&pA3_t}S0?+^+RN*GF zZb(D?Y)TylVg30cRvIGmPxb3!o7?hn8aI2aKk@@~z+7eB)xMERSYxCzjyg2c5Tw;! zgRIXJY6&WW-N!|X1*{jaxy@?UB2obt7qGriG3&rwz{Na{R^Wd>@*aSk$LentkhLsP zv_GI`uJTEe4coI9L93}q(G<@WF9G5cM!!S2b{e{^FB+rC-< zBk|1o6(!tJt~@)U=w(bYRl6z!R5@6}Fc_LSSjI4$K&on|nPM4>XWB;}KdZ3OZZJ2& zPvp${xyM-E-6*{M82f$IE)xm1GV%@J@j4m|f4B9WGyG2LBow}ovAl4J3rf0yDo#Zx z7j>E!zdC)h@wO+N$DedZoW*Su`8~V{dIyI;Jm!KG*|=%*>u+r7-1_FuopRCN8Qb~) PuI~S;{OS8EKlc6w%6;@d