diff --git a/README.md b/README.md index 95fce0b..51bb77b 100644 --- a/README.md +++ b/README.md @@ -36,12 +36,20 @@ we decided it must go in 'English' to let other people work on it ## Changes: -Build 125 + +###### Build 126 +2022-01-30 +- fixed bug 006 (After some attacks the OffensiveText stays on the screen) +- fixed bug 015 (Only first shoot of FunkyBomb is correct +- fixed bug 016 (No falling soil after leapfrog) + + +##### Build 125 2022-01-23 - included splash screen by KAZ -Build 124 +##### Build 124 2013-12-21 - removed large chunk of redundant 4x4 print code and table generation code, over 1kb gained. @@ -51,7 +59,7 @@ Build 124 - screen memory moved to low area ($1010), making the game start at $3010 and easier to be loaded. Other minor memory layout modifications. -Build 123 +##### Build 123 2013-12-10 - fixed bug 013: sometimes demo mode does not work (it stops on results display) - fixed bug 012: (newly introduced) Death explosions are offset right and possibly up. @@ -63,108 +71,108 @@ Build 123 funkyBomb angle changed from -8..+8 to -16..+16 - speeded up explosions by drawing only odd circles. Not bad visually and 2x faster. -Build 122 +##### Build 122 2013-11-17 - tank expend 1 energy with each shoot to avoid endless shooting loops - small visual glitch with background colour fixed - death messages "defensive texts" in source do not stay on screen after some explosions -Build 121 +##### Build 121 2013-11-10 - Poolshark and Shooter can buy weapons - Purchase screen moved to the beginning of the round -Build 120 +##### Build 120 2013-11-09 SillyVenture 2K13 joint effort to bring artificial intelligence into life: - Shooter and Poolshark shooting programmed - several small bugfixes and improvements as proposed by SillyVenture crowd -Build 119 +##### Build 119 2012-06-17 Scorch sources translated to MADS with the sweet repl.sh script. MISSING UPDATE INFORMATION... POSSIBLY NOTHING IMPORTANT HAPPENED HERE. -Build 115 +##### Build 115 2009-08-25 - fixed bug 001 (lack of explosions on the empty ground) - fixed bug 003 (wrapping death's head explosions) - fixed plot (faster explosions) - fukk, just 6 years and we are back!!! This game is pretty addictive :) + TO DO: - send our wives and kids away much more often :)))) -Build 114 +##### Build 114 2003-08-22 - Results after each round are displayed in the right sequence, i.e. the best one is on the top - during second and following rounds shooting sequence is such that the worst tank shoots first + The above changes does not look terrific, but there was a lot of thinking to do it correctly. What is the most important the overall game feeling improved a lot! program.s65 - * added routine SortSequence -textproc.s65 - * changed routine DisplayResults to show - round results in correct order +- added routine SortSequence -Build 113 +textproc.s65 +- changed routine DisplayResults to show round results in correct order + +##### Build 113 2003-08-17 - 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 - "Deffensive" text i.e. text before death + "Defensive" text i.e. text before death program.s65 - * added routine MoveBarrelToNewPosition - which rotates barrel of the tank until - it sits at the right (newly randomized) angle +- added routine MoveBarrelToNewPosition which rotates barrel of the tank until it sits at the right (newly randomized) angle + textproc.s65 - * added routine PurchaseAI - it is a framework for all AI purchases +- added routine PurchaseAI it is a framework for all AI purchases + SHORTSYS.S65 - * new macro PAUSE (waits given number of frames) +- new macro PAUSE (waits given number of frames) -Bulid 112 +##### Build 112 2003-08-15 First attempts to create a framework for intelligent opponents (AI). Right now there is only one level -of "intelligence" - Moron. Moron shoots at random angle -with random force. +of "intelligence" - Moron. + +Moron shoots at random angle with random force. program.s65 - * routine Round checks the Skill level - and if it is not human branches to - ArtificialIntelligence routine. - * new routines: - - ArtificialIntelligence - - RandomizeForce - - RandomizeAngle +- routine Round checks the Skill level and if it is not human branches to ArtificialIntelligence routine. +- new routines: + - ArtificialIntelligence + - RandomizeForce + - RandomizeAngle TO DO: - * nice rotating barrel of AI tank - * AI weapon purchase and usage - * AI better than Moronic... (but how...) - * tanks' shooting seqence shoud be from - weakest to the strongest, not random +- nice rotating barrel of AI tank +- AI weapon purchase and usage +- AI better than Moronic... (but how...) +- tanks' shooting sequence should be from weakest to the strongest, not random -Bulid 111 +##### Build 111 2003-07-27 program.s65: - * added sequentional shooting - (not necessarily tank no. 1 shoots first) - * added routine "RandomizeSequence" that is called - before each round - * initial angle of the tank's barrel is randomized - (was always 45 degrees right) +- added sequential shooting (not necessarily tank no. 1 shoots first) +- added routine "RandomizeSequence" that is called before each round +- initial angle of the tank's barrel is randomized (was always 45 degrees right) + variables.s65 - * added table "TankSequence" +- added table "TankSequence" + grafproc.s65 - * shorter delay during Flight \ No newline at end of file +- shorter delay during Flight + +...older history missing... \ No newline at end of file diff --git a/TODO.txt b/TODO.txt index 6057581..21c133b 100644 --- a/TODO.txt +++ b/TODO.txt @@ -14,7 +14,7 @@ Known bugs (+ means bug is fixed) (and uses one parachute more than necessary) 005. tank stands still on a one pixel spike - it should fall (possibly all that is necessary is adjust of WhereToSlideTable) -006. After some attacks (like MIRV and leapfrog the OffensiveText ++006. After some attacks (like MIRV and leapfrog the OffensiveText stays on the screen (and becomes a static decoration) It possibly happens when a tank kills itself with mirv or leapfrog. 007. Decreasing of number of bullets after a shoot does not work correctly @@ -29,9 +29,9 @@ Known bugs (+ means bug is fixed) +012. (newly introduced) Death explosions are offset right and possibly up. +013. sometimes demo mode does not work (it stops on results display) +014: FunkyBomb shoots with too high angle -015: Only first shoot of FunkyBomb is correct (with smoke and fast), ++015: Only first shoot of FunkyBomb is correct (with smoke and fast), the next are like missiles -016: Additional explosions after Frogger are not fallen down ++016: Additional explosions after Frogger do not have falling soil (?) 017: Observed MIRV loops - it shoots and shoots MIRV all over the screen. Very rare. -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) @@ -50,7 +50,7 @@ To do Another - stickman tankmen 005. Add number of rounds to the options menu 006. Add sound effects (maybe sampled? or mp0 (sound based on fft)) -007. There is no deffensive weapon handling (only parachute works, +007. There is no defensive weapon handling (only parachute works, but also provisionally +008. No computer operated opponents - make a frame for AI!!! 009. Make AI in the existing frame diff --git a/display.asm b/display.asm index a7bd9d0..f98cabc 100644 --- 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. 125 (un)2000-2022" + dta d"Welcome to Scorch ver. 126 (un)2000-2022" dta d" Please select option with cursor keys " dta d" and press (Return) to proceed " OptionsHere diff --git a/scorch.xex b/scorch.xex index 54403ae..674d106 100644 Binary files a/scorch.xex and b/scorch.xex differ diff --git a/textproc.asm b/textproc.asm index 7c3af7f..9a9ed3d 100644 --- a/textproc.asm +++ b/textproc.asm @@ -1175,7 +1175,7 @@ DisplayOffensiveTextNr ; ;now we have HALF length in pixels ;stored in temp2 - sbw temp temp2 ; here begin of the text is in TEMP !!!! + sbw temp temp2 ; here begin of the text is in TEMP !!!! ;now we should check overflows lda temp+1 bpl DOTNnotLessThanZero diff --git a/weapons.asm b/weapons.asm index 1e191df..fd82058 100644 --- a/weapons.asm +++ b/weapons.asm @@ -34,6 +34,12 @@ leapfrog jsr xmissile ; soil must fall down now! there is no other way... + + ;first clean the offensive text... + ldy TankNr + mva #0 plot4x4color + jsr DisplayOffensiveTextNr + ; hide tanks or they fall down with soil lda TankNr @@ -98,7 +104,6 @@ mirv ; the whole mirv is performed by Flight routine rts ; ------------------------ funkybomb ; - mva #1 tracerflag mwa xtraj+1 xtrajfb mwa ytraj+1 ytrajfb inc FallDown2 @@ -107,12 +112,16 @@ funkybomb ; jsr CalculateExplosionRange0 jsr xmissile + ldy TankNr + mva #0 plot4x4color + jsr DisplayOffensiveTextNr + lda TankNr pha mva #1 Erase jsr drawtanks mva #0 Erase - + jsr SoilDown2 ; mva #1 Erase @@ -123,11 +132,11 @@ funkybomb ; mva #5 FunkyBombCounter FunkyBombLoop + mva #1 tracerflag ;force randomization (range: 256-511) lda random sta Force - lda #1 - sta Force+1 + mva #1 Force+1 ;Angle randomization Range: (-16..+16) lda random lsr @@ -1617,8 +1626,8 @@ EndOfFlight2 .endp SecondFlight .proc -; ---------------- przekopiowany fragment sprzed odpalenie strza�u malo kulturalne..... -; ---------------- ponownie wyznacza parametry strza�u +; ---------------- copied code fragment from before firing. not too elegant. +; ---------------- get fire parameters again ldx TankNr lda EnergyTableL,x sta Force @@ -1660,8 +1669,8 @@ SecondFlight .proc sta ytraj+2 ldy #100 - lda #1 ; nie wiem (to znaczy wydaje mi sie ze wiem ;) ) - sta tracerflag ; ..... + lda #1 ; I do not know (I mean I think I know ;) ) + sta tracerflag ; 10 years later - I do not know!!! jmp Flight.RepeatIfSmokeTracer .endp @@ -1771,7 +1780,7 @@ mrLoopix sbc vy+3 sta ytraj+2 - ;vy=vy-g (also without least significan byte of vy) + ;vy=vy-g (also without least significant byte of vy) sec lda vy+1 sbc gravity @@ -1783,9 +1792,8 @@ mrLoopix sbc #0 sta vy+3 - ; 3 waits for 5 bullets (will be faster) + ; 2 waits for 5 bullets wait - ;wait wait MIRVdoNotChangeY @@ -1994,6 +2002,11 @@ MIRValreadyAll ; we must do it manually because of the VOID pointer + ;first clean the offensive text... + ldy TankNr + mva #0 plot4x4color + jsr DisplayOffensiveTextNr + ; temporary removing tanks from the screen (otherwise they will fall down with soil) mva TankNr tempor2 mva #1 Erase