diff --git a/README.md b/README.md index e2ae151..cbd1098 100755 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Scorch is a multi-player, turn-based, artillery video game. Tanks do turn-based battle in two-dimensional terrain, with each player adjusting the angle and power of their tank turret before each shot. -by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski +by Tomasz 'Pecus' Pecko and Pawel 'pirx' Kalinowski Warsaw, Miami 2000, 2001, 2002, 2003, 2009, 2012, 2013, 2022 @@ -15,7 +15,7 @@ This source code was originally compiled under [OMC65 crossassembler](https://gi Compilation: `mads scorch.asm -o:scorch.xex` -Game source code is split into 5+3 parts: +Game source code is split into 5+4 parts: - scorch.asm is the main game code (with many assorted routines) - grafproc.asm - graphics routines like line or circle - textproc.asm - text routines like list of weapons and shop @@ -24,6 +24,7 @@ Game source code is split into 5+3 parts: - display.asm - display lists and text screen definitions - ai.asm - artificial stupidity of computer opponents - weapons.asm - general arsenal of tankies +- definitions.asm - label definitions, moved to make it work better with Altirra debug. We were trying to use as much macros and pseudo-ops as possible. They are defined in atari.hea and macro.hea files together with many atari constants. This way it should be relatively easy to port this code to e.g. C64 @@ -38,6 +39,16 @@ With the advent of fujinet (https://fujinet.online/) we are thinking about makin ## Changes: +###### Build 136 +2022-04-24 +This is a very important release because we had a chance to work a bit as an original team (Pecus and pirx). Let's cheer for Pecus for joining the task force again! Changes: +- another sneaky memory corrupting bug found and fixed. The game seems to be as stable as an Ikea table! No bug number because it was super elusive. +- MIRV loops https://github.com/pkali/scorch_src/issues/6 - a very interesting one. It happened when MIRV killed tank exploded with LeapFrog or FunkyBomb. +- Nicer font https://github.com/pkali/scorch_src/issues/37 - Thank you Adam for dugging up the font you made in 2008 :) +- Explosions are 2 times faster and look equally good or maybe even a bit better. This was a drag because of the Death's Head +- Memory map reorganized to extract some free RAM. Currentish map here: https://github.com/pkali/scorch_src/wiki +- Adam shared an archive that preserved a couple of the old build comments! Added below. + ###### Build 135 2022-04-17 Happy Easter! This is a "premature ejacu.." err... "premature optimization" build. I got into an optimization fewer and got the code messed up, having to revert to the base. One important ticket closed: @@ -185,10 +196,11 @@ textproc.s65 ##### Build 113 2003-08-17 +Again you dear reader made us to do a significant improvement in Atari 8-bit Scorch. Build 113 released! There is a framework for AI ready and you can play with the most stupid opponent - the Mighty Moron!!! Give him a kick and play a little bit! - AI Opponents move barrels to the right position before firing a bullet. - Purchase screen is not displayed for AI opponents. -- There is 2 sec delay after displaying +- There is a 2 sec delay after displaying "Defensive" text i.e. text before death program.s65 @@ -236,4 +248,14 @@ variables.s65 grafproc.s65 - shorter delay during Flight +##### Build 110 +2003-07-21 +Previous release was a mistake. Build 110 is more or less playable, the "only" problem for now is such: in every round there is the same sequence of shooting (1st, 2nd, 3rd tank and so on). It should be like the weakest tank shoots first. + +##### Build 103 +2003-07-09 +For the first time Scorched Earth for Atari XL/XE (build 103) published. +Together with Pecus we were working on this piece of code for four years and it does not look like it is accelerating so we decided to publish what we have. Last few weeks I was translating source code comments and labels to English to let other people work on this project with us. In other words Scorched Earth becomes an open source project :) +Now it's your turn to help this idea happen! + ...transmission error...former history missing... \ No newline at end of file diff --git a/constants.asm b/constants.asm index 6addc74..d9afc43 100644 --- a/constants.asm +++ b/constants.asm @@ -319,7 +319,7 @@ WhereToSlideTable .BY %100 ; 00000101 .BY %100 ; 00000110 .BY %100 ; 00000111 - .BY %100 ; 00001000 + .BY %000 ; 00001000 .BY %000 ; 00001001 .BY %000 ; 00001010 .BY %000 ; 00001011 @@ -327,7 +327,7 @@ WhereToSlideTable .BY %000 ; 00001101 .BY %000 ; 00001110 .BY %000 ; 00001111 - .BY %010 ; 00010000 + .BY %000 ; 00010000 .BY %000 ; 00010001 .BY %000 ; 00010010 .BY %000 ; 00010011 @@ -633,6 +633,7 @@ TanksNamesDefault dta d"5th.Tank" dta d"6th.Tank" + WeaponPriceH ; weapons prices (tables with prices of weapons) .by >price_Baby_Missile___ .by >price_Missile________ diff --git a/display.asm b/display.asm index 6639b3b..a904e18 100755 --- a/display.asm +++ b/display.asm @@ -67,7 +67,7 @@ dl ; MAIN game display list ;Screen displays go first to avoid crossing 4kb barrier ;----------------------------------------------- OptionsScreen - dta d"Welcome to Scorch ver. 135 (un)2000-2022" + dta d"Welcome to Scorch ver. 136 (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 03b7b88..3951674 100755 --- a/grafproc.asm +++ b/grafproc.asm @@ -679,7 +679,8 @@ NoMissile ; clear sprite and put 3 lines on the tank at the same time ldy #$00 tya -ClearPM cpy temp +ClearPM + cpy temp bne ZeroesToGo lda #$03 ; (2 bits set) we set on two pixels in three lines sta (xbyte),y @@ -701,6 +702,7 @@ DoNotDrawTankNr ;-------------------------------------------------- drawmountains .proc ;-------------------------------------------------- + mwa #0 xdraw mwa #mountaintable modify diff --git a/scorch.asm b/scorch.asm index 25f36f7..88c2136 100644 --- a/scorch.asm +++ b/scorch.asm @@ -86,7 +86,7 @@ displayposition = modify ;Screen displays go first to avoid crossing 4kb barrier ;----------------------------------------------- icl 'display.asm' - ;---------------------------------------------- +;---------------------------------------------- .ALIGN $400 WeaponFont ins 'artwork/weapons_AW4.fnt' ; 'artwork/weapons.fnt' @@ -620,7 +620,7 @@ PlayerXdeath .proc ; routine lda random - and #%00011111 ; range 0-31 + and #%00011011 ; range 0-31, no Funkybomb, no leapfrog, no others as well :] jsr ExplosionDirect ; jump to after explosion routines (soil fallout, etc.) diff --git a/scorch.xex b/scorch.xex index 6754486..ec31e18 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/weapons.asm b/weapons.asm index 97c043b..a43839b 100755 --- a/weapons.asm +++ b/weapons.asm @@ -115,16 +115,6 @@ VOID pla sta TankNr - - ; this is to fix bug MIRV loops #6 - ; the issue was that after MIRV the flight routine called here - ; was mirving. This happened when a tank dies by MIRV and then - ; leapfrogs - tax - lda #4 ; leapfrog - sta ActiveWeapon,x - - ; it looks like force is divided by 4 here BUT" ; in Flight routine force is multiplied by 2 and left ; so, we have Force divided by 2 here (not accurately) @@ -204,13 +194,6 @@ EndOfLeapping pla sta TankNr - ; this is to fix bug MIRV loops #6 - ; the issue was that after MIRV the flight routine called here - ; was mirving. This happened when a tank dies by MIRV and then - ; leapfrogs - tax - lda #5 ; fynkybomb - sta ActiveWeapon,x mva #5 FunkyBombCounter FunkyBombLoop mva #1 tracerflag @@ -560,24 +543,16 @@ LaserMisses lda #1 sta radius sta color - ;ora ExplosionRadius ;making sure the ExplosionRadius is odd - ;sta ExplosionRadius ExplosionLoop jsr circle - inc ydraw - jsr circle - dec ydraw - inc:inc radius + :2 inc radius lda radius cmp ExplosionRadius - bne ExplosionLoop + bcc ExplosionLoop lda #0 sta color ExplosionLoop2 jsr circle - inc ydraw - jsr circle - dec ydraw dec radius lda radius bne ExplosionLoop2