From ce6f7b3406b6d249b9b307dcc58858cfc9c39e95 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Mon, 15 May 2023 18:15:56 +0200 Subject: [PATCH] Better C64 code --- C64/textproc.asm | 230 +---------------------------------------------- scorchC64.prg | Bin 39675 -> 39679 bytes 2 files changed, 4 insertions(+), 226 deletions(-) diff --git a/C64/textproc.asm b/C64/textproc.asm index 991f3aa..877c1f8 100644 --- a/C64/textproc.asm +++ b/C64/textproc.asm @@ -55,66 +55,6 @@ NoGradientLoop rts .endp -; -------------------------------------- -; Sets the appropriate variables based on the options table -; -.proc SetVariablesFromOptions - ;first option - ldy OptionsTable - iny - iny - sty NumberOfPlayers ;1=1 player (but minimum is 2) - - ;second option (cash) - - - ldy OptionsTable+1 - ldx #0 -@ - lda CashOptionL,y - sta moneyL,x - lda CashOptionH,y - sta moneyH,x - inx - cpx NumberOfPlayers - bne @- - - ;third option (gravity) - ldy OptionsTable+2 - lda GravityTable,y - sta gravity - - ;fourth option (wind) - ldy OptionsTable+3 - lda MaxWindTable,y - sta MaxWind - - ;fifth option (no of rounds) - ldy OptionsTable+4 - lda RoundsTable,y - sta RoundsInTheGame - - ;6th option (shell speed) - ldy OptionsTable+5 - lda flyDelayTable,y - sta flyDelay - - ;7th option (Airstrike after how many missess) - ldy OptionsTable+6 - lda seppukuTable,y - sta seppukuVal - - ;8th option (how aggressive are mountains) - ldy OptionsTable+7 - lda mountainsDeltaTableH,y - sta mountainDeltaH - lda mountainsDeltaTableL,y - sta mountainDeltaL - - - rts -.endp - ;------------------------------------------- ; call of the purchase (and activate) screens for each tank .proc CallPurchaseForEveryTank @@ -364,177 +304,15 @@ displayloop1 rts .endp - -;-------------------------------- -.proc DisplayResults ; -;displays results of the round -;using 4x4 font - - - mva #$ff plot4x4color - - ;centering the result screen - mva #((ScreenHeight/2)-(8*4)) ResultY - - - ;upper frame - mva ResultY LineYdraw - jsr TL4x4_top - - adb ResultY #4 ;next line - - ;Header1 - ;Displays round number - lda CurrentRoundNr - cmp RoundsInTheGame - beq GameOver4x4 - - sta decimal - mwa #RoundNrDisplay displayposition - jsr displaybyte ;decimal (byte), displayposition (word) - - mwa #LineHeader1 LineAddress4x4 - mwa #((ScreenWidth/2)-(8*4)) LineXdraw - mva ResultY LineYdraw - jsr TypeLine4x4 - beq @+ ;unconditional jump, because TypeLine4x4 ends with beq - -GameOver4x4 - RmtSong song_round_over - mwa #LineGameOver LineAddress4x4 - mwa #((ScreenWidth/2)-(8*4)) LineXdraw - mva ResultY LineYdraw - jsr TypeLine4x4 - mva #1 GameIsOver - -@ - adb ResultY #4 ;next line - - ;Empty line - mva ResultY LineYdraw - jsr TL4x4_empty - - adb ResultY #2 ;next line - - - ;Header2 - mwa #LineHeader2 LineAddress4x4 - mwa #((ScreenWidth/2)-(8*4)) LineXdraw - mva ResultY LineYdraw - jsr TypeLine4x4 - - adb ResultY #4 ;next line - - ;Empty line - mva ResultY LineYdraw - jsr TL4x4_empty - - sbb ResultY #2 ;next line (was empty) - - ldx NumberOfPlayers ;we start from the highest (best) tank - dex ;and it is the last one - stx ResultOfTankNr ;in TankSequence table - - mwa #TanksNames tempXROLLER - -ResultOfTheNextPlayer - ldx ResultOfTankNr ;we are after a round, so we can use TankNr - lda TankSequence,x ;and we keep here real number if the tank - sta TankNr ;for which we are displaying results - - - - - adb ResultY #4 ;next line - - ;there are at least 2 players, so we can safely - ;start displaying the result - - lda #3 ;it means | - sta ResultLineBuffer - - ldy TankNr - lda ResultsTable,y - sta decimal - mva #0 decimal+1 - mwa #(ResultLineBuffer+8) displayposition - jsr displaydec5 ;decimal (byte), displayposition (word) - - ; overwrite the second digit of the points (max 255) - ;it means ":" - mva #26 ResultLineBuffer+9 - - ldx #0 - lda TankNr - asl - asl ; times 8, because it is lengtgh - asl ; of the names of the tanks - tay - -TankNameCopyLoop - lda (tempXROLLER),y ;XROLLER is not working now - and #$3f ;always CAPITAL letters - inx - sta ResultLineBuffer,x - iny - cpx #8 ; end of name - bne TankNameCopyLoop - ; last letter of tank name overwrites first digit of the points (max 255) - - - ;just after the digits - ;it means | - mva #$3 ResultLineBuffer+13 - - ;result line display - mwa #ResultLineBuffer LineAddress4x4 - mwa #((ScreenWidth/2)-(8*4)) LineXdraw - mva ResultY LineYdraw - jsr TypeLine4x4 - - adb ResultY #4 ;next line - - ;Empty line - mva ResultY LineYdraw - jsr TL4x4_empty - - dec ResultOfTankNr - bmi FinishResultDisplay - - sbb ResultY #2 ;distance between lines is smaller - - jmp ResultOfTheNextPlayer - -FinishResultDisplay - mva ResultY LineYdraw - ;jmp TL4x4_bottom ; just go -.endp - -.proc TL4x4_bottom - ;bottom of the frame - mwa #LineBottom LineAddress4x4 - mwa #((ScreenWidth/2)-(8*4)) LineXdraw - jmp TypeLine4x4 ; jsr:rts -.endp - -.proc TL4x4_top - ;bottom of the frame - mwa #LineTop LineAddress4x4 - mwa #((ScreenWidth/2)-(8*4)) LineXdraw - jmp TypeLine4x4 ; jsr:rts -.endp - -.proc TL4x4_empty - ;empty frame - mwa #LineEmpty LineAddress4x4 - mwa #((ScreenWidth/2)-(8*4)) LineXdraw - jmp TypeLine4x4 ; jsr:rts +;------------------------------------------------- +.proc RoundOverSprites + ; fill sprites with bytes + rts .endp ;-------------------------------------------------- .proc GameOverScreen ;-------------------------------------------------- - rts .endp ;------------------------------------------------- diff --git a/scorchC64.prg b/scorchC64.prg index 303910fd0630673435c79cad281e2a1bd5100fba..1dbe01dc76ad678ec2cd6551e5ff88c1e0800b31 100644 GIT binary patch delta 5782 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 delta 5811 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 aMN8TBSo-V!@V=}?9Wn6N1k%1Q^?w1_5FLvE