From ef7b8df63c17beb411bf552e8cad079f2ec19050 Mon Sep 17 00:00:00 2001 From: Pawel Kalinowski Date: Sun, 30 Jan 2022 13:13:44 -0500 Subject: [PATCH] build 126 --- README.md | 98 ++++++++++++++++++++++++++++----------------------- TODO.txt | 8 ++--- display.asm | 2 +- scorch.xex | Bin 32057 -> 32087 bytes textproc.asm | 2 +- weapons.asm | 35 ++++++++++++------ 6 files changed, 83 insertions(+), 62 deletions(-) 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 54403ae2780d3a1ba14e75ec0ca138f7e0e8e01d..674d10635072fdbe820a8c9e380d87c8912362f1 100644 GIT binary patch delta 3528 zcma)84OCQh7Uw_1mwd?ZAq@<|L&~HON7{1K-g}^Y4Db*Xtx&*$5g3pV2QW!mW(MBM z01v@`U!E1?6oWkKd1$H5VYfNeZi@{Cy=~j=%P4Jir7fCjJ7-hVz3WRhI#*Y zfA`~m@BQEZy)$_UeQ*hlM@6ITiDl6&LeUeyz3pVO?`vj07h5wT(Pg|dBNlDJEg1=c z<|ZQV0P$cGZqHa2TWltFloC`kkGRVuajld0k=9N#u^qpi@pk;lra>Dyt(pe7R)#Nj z5QUw@=wV`rC9dI@Hf6WJ(Z@|GoCN6(BkFqz|7OC}PM9rBWEpX$gBYnE>6yzTopzGY znS>`vcOF<`Xs&=JjOD{UKy1|$tJ@qs?8)mMI8L$>ewh>sXt$Dx`i;!=VS9*oOc#0_ zJu@++_-{$bqrOzqC(iBns^i0(??Kn_A2u^+H4e-q;F+9R-`=~sYxf4jRQXi-7(Aah zykdAmrrt4pY`AFn$q-SYsnk|xRqm`bRUW9ED({5vRQb_L!$JYg2XnbJQMsQPGfGtW zA}VGPm9U8NN)ltn_8UXhUyoFd5(0#@o7kQ$Hmbo&30r8+LJ{^lDOsEOFv(#4elX$a z`TzBT`B0A@xGY6rz|Su017r}#v2#B zrqs2Hpdil%r-G>NWF$uEoFUY_?_db!jH2d!2BRqE8Qh+8H+mO8pL0+6wF=YNwCdb! zFa_FLC1b|l z@uBU44IWdr1sw(df{vQWrNxV&awBtA=7DD9G01M zBysWQ`I=}ju%2Qq!Ul@93L7cbCf`;Z&gf7w&SM@9lv@%J&EnUXl{;E$Tt`GDGhE|( z0hZ;aWZJdVo$d;AA9DEv@M?`K0G7ELS0XIyOs*7IuGTPf)xtqVau~=3j7}aaV*F|Z zl_>i0iSWkE;SB|GNh8(HHgd3$bRHlF>qtgwe$F~lT^j^c|6i^)l1wpfEzs3&3EkIY&rYiR_%(xexd{X3D-XvY1ik0FZ~RB@OeXXMB==!VZfRB9>*S*}z&X z-*H8RLeq^uEZn5zHQlh)WfC^Igj$ep^S^a)nS%9&N7_~F6we)ROjT=5Eo zIE;2Ap(1?8j&0Cv4(?c+*V5=@q$-Q(zmxZ2Ev%J44TVzG#T;*N=1{Kme$~ye&`OEF z0v^{wfhu=^^4=Ew{f_(Ms=7|qQIPrL4U#*@8*Ws_Sr2GqWC0!xR#DITI;$wR-?ZvK zT1g&Uj#&rFu=h=6dt-CH#Xy8nf!}}N%CbxQT|Q8FK5(YIamZ)jB?BDK#Q6sk5bDH! zB^yx<&L}x0CH&hGA}XC_{F|YwRDbmr6p;9ioo`k?(Ly}l>0{12?=e790Pg?jmw}-?10+QS&O*Mw1chn;WBAr4wsZ=A}2mkMxu}KnKJ9zu2v}^ z>AEUfT_Nr;xYi+XUDMzqf5D`-8iWYi9XhL`Rm&kP70oo`zVh2N%?BlX*@B7|RP;<3 zEoxr~qq}-#{_Ewd)G|L8aS^l_%74Kv*Yfvp@meP7=%c8qfp9xv?Ok$h3LP%-jvS=Y&rlKS&n-+3p%3nyqLdDt$ugW>EiUhkWenjc` z%gT+>&K|XJHnY~3JDb_BTsW7x@OdV4+hcg6F-;Ni7~W@0fRj67Op*xo9<8)oFv^RU z%G*;75-)mKfW<~UHk+QM4c7^D*1UqFv%vrKET;X}{CBv(NJs_>t28llhoF(dPe{2G zcuvab{hku&sLFwAdb?_cVz~u>QhC5`A~H$`U$^ReJ@JIfi+2}3a8YhK%*$B z*^b`Fr)pNBtN3s5T!F9DB!y?&bdIOa53m-;)8~(}R-zGWO)*iUR>xBk#9AH4Sev1K z4aFqmGE+=wvK{87xXIB0!|OZTVLFIP@D-CfZga=fu+A|wAIJ_lp3|KlocC2%4YAKL zAss{s*4Ey=GTE+!`E-658jtk4o;rU-9$WK1uqjx*Uz%OX*jlT(E_&n_(cxQ&PW-WU zHIi?7U2NntEKCkScb_LOiukKA< z+GckL5BWH311AT@m|b{7eP4W=UDU_}fXJ{9`MfyB+Fl$}*P?;3UYPnB_(J_=)Qj(W zco=j4f7gLY!-op2`yXa z-(qdhGCLsJnSC*S$#y2F8~S#+Dn3PG+tsZTJdPF-r3r#H+1!m_U3TEd|+suY~s2|z6gJ7jzllx zBjzk delta 3657 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 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