From d54c38d0bf152a2775a51c4be55f000516359d37 Mon Sep 17 00:00:00 2001 From: pkali Date: Sat, 19 Feb 2022 15:56:26 -0500 Subject: [PATCH] build 128 --- README.md | 11 +++++++++- TODO.txt | 8 ++++++++ display.asm | 2 +- grafproc.asm | 48 ++++++++++++++++++++++---------------------- scorch.asm | 8 ++++---- scorch.xex | Bin 32220 -> 32050 bytes textproc.asm | 54 +++++++++++++++++++++++++++++--------------------- variables.asm | 7 ++++--- weapons.asm | 14 ++++++------- 9 files changed, 89 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 3342a3b..465379c 100755 --- a/README.md +++ b/README.md @@ -32,10 +32,19 @@ where you want to have y=ax+b :) originally most variables were in Polish, comments were sparse but we wanted to release this piece of code to public and due to being always short of time/energy (to finish the game) -we decided it must go in 'English' to let other people work on it +we decided it must go in 'English' to let other people work on it. +it never happened, but we got some encouraging comments and we are still +trying to do something from time to time. + +with the advent of fujinet (https://fujinet.online/) we are thinking about making the game interplanetary, err, with multiplayer over the net. we'll see. ## Changes: +###### Build 127 +2022-02-19 +- fixed a bug making it harder to select AI level, unfortunately now player names can not include hyphen +- fixed numerous mistakes in handling bytes and words - possibly some of the crashes eliminated +- adw addr #1 --> inw addr. 200 bytes shorter code (and maybe very slightly faster) ###### Build 127 2022-02-14 diff --git a/TODO.txt b/TODO.txt index a623349..577d436 100755 --- a/TODO.txt +++ b/TODO.txt @@ -36,6 +36,10 @@ Known bugs (+ means bug is fixed) -018: MINOR: ydraw, yhit, ybyte variable is sometimes treated as WORD, sometimes as BYTE. Making it consistent would save both time and space (not much) REJECTED: too much work - different routines depend on checking high byte. ++019: AI menu does not recognize keyboard up (prints "-" in tank name) +020: sometimes leftmost or rightmost remains of the funkybomb smoke do not get cleared +021: check MWA, ADW, SBW macros - bad modifications of bytes found!!! +022: shooting funkybomb decreases number of bombs too much! (2 instead of 1?) --------------------------------------------------------- To do +001. Start each round with a)worst tank or b)random tank @@ -65,3 +69,7 @@ To do -017. Wide screen mode (with scroll?) 018. Speed up soil down after soil eating weapons - correctly calculate ranges as now range is very broad even when very little soil is eaten. +019. Purchase impossible with joystick only. Add buy on e.g. joystick right. +020. Not a bug per se, but ydraw variable is word, possibly it can be switched to byte +021. Add player colors to purchase screen +022. Make colors more contrasting diff --git a/display.asm b/display.asm index 47f8b77..acd2ff3 100755 --- a/display.asm +++ b/display.asm @@ -77,7 +77,7 @@ PlotLine = display + screenHeight*screenBytes ; the last line is plot pointer ;Screen displays go first to avoid crossing 4kb barrier ;----------------------------------------------- OptionsScreen - dta d"Welcome to Scorch ver. 127 (un)2000-2022" + dta d"Welcome to Scorch ver. 128 (un)2000-2022" dta d" Please select option with cursor keys " dta d" and press (Return) to proceed " OptionsHere diff --git a/grafproc.asm b/grafproc.asm index 7ebb578..115a4fd 100755 --- a/grafproc.asm +++ b/grafproc.asm @@ -113,7 +113,7 @@ CheckDirectionFactor ; 'a' factor is fire, so we copy parameters ; XK=DX mwa DX XK - ; i kasowanie bitu 2 + ; and clearing bit 2 ; and bit 2 clear ; (is not needed because already cleared) ;lda HowToDraw @@ -168,7 +168,7 @@ DrawLoop ; DI=DI+DD ; YI=YI+1 adw DI DD - adw YI #1 + inw YI jmp drplot DINegative ; ELSE @@ -219,7 +219,7 @@ PutPixelinDraw ; XI=XI+1 ; UNTIL XI=XK - adw XI #1 + inw XI cpw XI XK jne DrawLoop @@ -234,7 +234,7 @@ DrawJumpPad Drawplot jmp plot DrawLen - adw LineLength #1 + inw LineLength rts DrawCheck .proc @@ -729,8 +729,8 @@ drawmountainsloop lda (modify),y sta ydraw jsr DrawLine - adw modify #1 - adw xdraw #1 + inw modify + inw xdraw cpw xdraw #screenwidth bne drawmountainsloop @@ -747,8 +747,8 @@ drawmountainspixelloop lda (modify),y sta ydraw jsr plot - adw modify #1 - adw xdraw #1 + inw modify + inw xdraw cpw xdraw #screenwidth bne drawmountainspixelloop @@ -807,9 +807,9 @@ StillNothing cmp #screenheight bne NextPoint1 FoundPeek1 - adw tempor2 #1 - adw tempor3 #1 - adw xdraw #1 + inw tempor2 + inw tempor3 + inw xdraw ;vcmp xdraw,screenwidth,NextColumn1 cpw xdraw RangeRight bcc NextColumn1 @@ -823,7 +823,7 @@ MainFallout2 adw RangeLeft #mountaintable2 tempor2 adw RangeLeft #mountaintable3 tempor3 - mwa #1 IsEndOfTheFallFlag + mva #1 IsEndOfTheFallFlag FalloutOfLine ldy #0 @@ -860,10 +860,10 @@ FalloutOfLine ThereIsPixelHere ColumnIsReady - adw temp #1 - adw tempor2 #1 - adw tempor3 #1 - adw xdraw #1 + inw temp + inw tempor2 + inw tempor3 + inw xdraw ;vcmp xdraw,screenwidth,FalloutOfLine cpw xdraw RangeRight bcc FalloutOfLine @@ -883,9 +883,9 @@ ColumnIsReady CopyHeights lda (tempor3),y sta (temp),y - adw temp #1 - adw tempor3 #1 - adw xdraw #1 + inw temp + inw tempor3 + inw xdraw ;vcmp xdraw,screenwidth,CopyHeights cpw xdraw RangeRight bcc CopyHeights @@ -981,7 +981,7 @@ ToBottom Skip01 sta ydraw - adw xdraw #1 + inw xdraw cpw xdraw #screenwidth beq EndDrawing @@ -1430,13 +1430,13 @@ EmptyPixel ;anyway we assume the text is being drawn ;over an empty space Loop4x4Continued - adw xdraw #1 + inw xdraw lda StoreA4x4 dec Xcounter4x4 ldx Xcounter4x4 bne uppernibble ; here we have on screen one line of the char - adw ydraw #1 + inw ydraw sbw xdraw #4 sbw y4x4 #32 dec:lda LoopCounter4x4 @@ -1494,13 +1494,13 @@ EmptyPixelFULL ;of course it is slower Loop4x4ContinuedFULL - adw xdraw #1 + inw xdraw lda StoreA4x4 dec Xcounter4x4 ldx Xcounter4x4 bne uppernibbleFULL ; here we have on screen one line of the char - adw ydraw #1 + inw ydraw sbw xdraw #4 sbw y4x4 #32 dec:lda LoopCounter4x4 diff --git a/scorch.asm b/scorch.asm index 10aa046..38accc4 100644 --- a/scorch.asm +++ b/scorch.asm @@ -35,7 +35,7 @@ ;we decided it must go in 'English' to let other people work on it .zpvar xdraw .word = $80 ;variable X for plot - .zpvar ydraw .word;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen) + .zpvar ydraw .word ;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen) .zpvar xbyte .word .zpvar ybyte .word @@ -46,8 +46,8 @@ .zpvar oldplot .word .zpvar xc .word .zpvar temp .word ;temporary word for the most embeded loops only - .zpvar temp2 .word;same as above - .zpvar tempXROLLER .word;same as above for XROLLER routine + .zpvar temp2 .word ;same as above + .zpvar tempXROLLER .word ;same as above for XROLLER routine ;(used also in result display routine) .zpvar xtempDRAW .word ;same as above for XDRAW routine .zpvar ytempDRAW .word ;same as above for XDRAW routine @@ -84,7 +84,7 @@ MaxPlayers = 6 icl 'artwork/HIMARS14.asm' ;Game loading address - ORG $3010 ;two hex thousands for screen + ORG $3010 ;one hex thousands for screen ;----------------------------------------------- ;Screen displays go first to avoid crossing 4kb barrier ;----------------------------------------------- diff --git a/scorch.xex b/scorch.xex index 13edbb8555c44108135b269c1696e5a8dd49ea09..2a6b0f48c7f4febb5db85e697ae7c5ed24eca3f2 100644 GIT binary patch delta 10604 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 F{68m_JX-(& diff --git a/textproc.asm b/textproc.asm index 7ae99a3..3e1bd6a 100755 --- a/textproc.asm +++ b/textproc.asm @@ -164,16 +164,18 @@ skip10 ; inversing selected option (cursor) ;-------- OptionsInversion + ;clean options loop + ;TODO: (optionally) - convert to single byte loop if no new options mwa #OptionsHere temp ldy #0 OptionsInversionLoop1 lda (temp),y and #$7F sta (temp),y - adw temp #1 + inw temp cpw temp #OptionsScreenEnd bne OptionsInversionLoop1 -;here all past inversions are gone... + ;here all past inversions are gone... mwa #OptionsHere temp mva #0 temp2 ;option number pointer @@ -202,7 +204,7 @@ OptionSetLoop ;inversing the first few chars of the selected line (OptionsY) mva OptionsY temp - mwa #0 temp+1 + mva #0 temp+1 asl temp rol temp+1 asl temp @@ -215,7 +217,7 @@ OptionSetLoop asl temp rol temp+1 ;here is 32*OptionsY - adw temp temp2 + adw temp temp2 ;in temp is 40*OptionsY adw temp #OptionsHere ;now in temp is adres of the line to be inversed @@ -877,8 +879,8 @@ LoopName01 sta NameAdr CheckKeys jsr getkey - ; is if the char to be recorded? - ldx #37 ; table is 38 chars long + ; is the char to be recorded? + ldx #keycodesEnd-keycodes ;table was 38 chars long IsLetter cmp keycodes,x beq YesLetter @@ -905,7 +907,7 @@ NotFirstLetter jmp CheckKeys CheckFurtherX01 ; here we check Tab, Return and Del cmp #$0c ; Return - beq EndOfNick + jeq EndOfNick cmp #$2c ; Tab beq ChangeOfLevelUp cmp #$7 ;cursor right @@ -914,6 +916,8 @@ CheckFurtherX01 ; here we check Tab, Return and Del beq ChangeOfLevelDown cmp #$f ;cursor down beq ChangeOfLevel3Up + cmp #$e ;cursor up + beq ChangeOfLevel3Down cmp #$34 ; Backspace (del) bne CheckKeys @@ -947,21 +951,25 @@ DoNotLoopLevelDown jmp CheckKeys ;---- ChangeOfLevel3Up - ;adw DifficultyLevel #3 - clc - lda DifficultyLevel - adc #3 - sta DifficultyLevel + adb DifficultyLevel #3 cmp #9 bcc DoNotLoopLevel3Up - sbw DifficultyLevel #9 + sbb DifficultyLevel #9 DoNotLoopLevel3Up jsr SelectLevel jmp CheckKeys ;---- +ChangeOfLevel3Down + sbb DifficultyLevel #3 + bpl @+ + adb DifficultyLevel #9 +@ + jsr SelectLevel + jmp CheckKeys +;---- EndOfNick ; storing name of the player and its level @@ -1185,8 +1193,8 @@ DisplayOffensiveTextNr ; ;now we should check overflows lda temp+1 bpl DOTNnotLessThanZero - ;less than zero, so should be zero - mwa #0 temp + ;less than zero, so should be zero + mwa #0 temp beq DOTNnoOverflow DOTNnotLessThanZero @@ -1350,7 +1358,7 @@ DisplayResults ; mva #1 plot4x4color jsr TypeLine4x4 - adw ResultY #4 ;next line + adb ResultY #4 ;next line ;Header1 ;Displays round number @@ -1378,7 +1386,7 @@ GameOver4x4 mva #1 GameIsOver @ - adw ResultY #4 ;next line + adb ResultY #4 ;next line ;Empty line mwa #LineEmpty LineAddress4x4 @@ -1387,7 +1395,7 @@ GameOver4x4 mva #1 plot4x4color jsr TypeLine4x4 - adw ResultY #2 ;next line + adb ResultY #2 ;next line ;Header2 @@ -1397,7 +1405,7 @@ GameOver4x4 mva #1 plot4x4color jsr TypeLine4x4 - adw ResultY #4 ;next line + adb ResultY #4 ;next line ;Empty line mwa #LineEmpty LineAddress4x4 @@ -1406,7 +1414,7 @@ GameOver4x4 mva #1 plot4x4color jsr TypeLine4x4 - sbw ResultY #2 ;next line (was empty) + sbb ResultY #2 ;next line (was empty) ldx NumberOfPlayers ;we start from the highest (best) tank dex ;and it is the last one @@ -1422,7 +1430,7 @@ ResultOfTheNextPlayer - adw ResultY #4 ;next line + adb ResultY #4 ;next line ;there are at least 2 players, so we can safely ;start displaying the result @@ -1474,7 +1482,7 @@ TankNameCopyLoop mva #1 plot4x4color jsr TypeLine4x4 - adw ResultY #4 ;next line + adb ResultY #4 ;next line ;Empty line mwa #LineEmpty LineAddress4x4 @@ -1489,7 +1497,7 @@ TankNameCopyLoop bmi FinishResultDisplay - sbw ResultY #2 ;distance between lines is smaller + sbb ResultY #2 ;distance between lines is smaller jmp ResultOfTheNextPlayer diff --git a/variables.asm b/variables.asm index 3731b9b..21bfb6d 100755 --- a/variables.asm +++ b/variables.asm @@ -96,18 +96,19 @@ ytankstable ;Y positions of tanks (lower left point) LowResDistances ; coarse stank positions divided by 4 (to be in just one byte) :MaxPlayers .by 0 ;----------------------------------- -keycodes ;tables for calculating KeyCode to Screen Code (38 characters) +keycodes ;tables for calculating KeyCode to Screen Code (38 -1 characters) .byte $3f,$15,$12,$3a,$2a,$38,$3d,$39 .byte $0d,$01,$05,$00,$25,$23,$08,$0a .byte $2f,$28,$3e,$2d,$0b,$10,$2e,$16 .byte $2b,$17,$1f,$1e,$1a,$18,$1d,$1b - .byte $33,$35,$30,$32,$22,$0e + .byte $33,$35,$30,$32,$22 ;,$0e <-- hyphen removed from the table, sorry hyphen lovers +keycodesEnd scrcodes dta d"abcdefgh" dta d"ijklmnop" dta d"qrstuvwx" dta d"yz123456" - dta d"7890.-" + dta d"7890." ; "-" ;----------------------------------- Erase .byte 0 ; if 1 only mask of the character is printed ; on the graphics screen. if 0 character is printed normally diff --git a/weapons.asm b/weapons.asm index fd82058..c126702 100755 --- a/weapons.asm +++ b/weapons.asm @@ -182,7 +182,7 @@ deathshead bcs NoUpperCircle jsr xmissile NoUpperCircle - adw ydraw #70 + adb ydraw #70 ;jsr CalculateExplosionRange cpw ydraw #screenHeight bcs NoLowerCircle @@ -593,7 +593,7 @@ PositiveVelocity adw tempXROLLER xdraw SeekLeft - sbw tempXROLLER #1 + dew tempXROLLER lda (tempXROLLER),y ;fukk! beware of Y value cmp HeightRol bne HowMuchToFallLeft @@ -610,7 +610,7 @@ GoRightNow mwa #mountaintable tempXROLLER adw tempXROLLER xdraw SeekRight - adw tempXROLLER #1 + inw tempXROLLER lda (tempXROLLER),y cmp HeightRol bne HowMuchToFallRight @@ -673,14 +673,14 @@ UpNotYet lda HowMuchToFall cmp #1 beq HowMuchToFallRight2 - sbw xdraw #1 + dew xdraw lda xdraw bne RollinContinues lda xdraw+1 jne RollinContinues beq ExplodeNow HowMuchToFallRight2 - adw xdraw #1 + inw xdraw cpw xdraw screenwidth jne RollinContinues ExplodeNow @@ -717,7 +717,7 @@ NextLine jsr plot ldy magic+1 DoNotPlot - adw xdraw #1 + inw xdraw dey bne NextLine dec ydraw ; 1 line up @@ -1086,7 +1086,7 @@ EmptyPoint2 clc ROLPoint2 rol mask1 - adw xdraw #1 + inw xdraw dec mask2 bne ByteBelowTank ldx mask1