Compare commits

...

222 Commits

Author SHA1 Message Date
Pirx 34f0bb9d49 Merge pull request #113 from pkali/develop
build 148
2022-07-17 22:05:47 -04:00
Pirx f05af218f4 build 148 2022-07-17 22:04:58 -04:00
Pecusx 00b9575bcb Besto of the best laser
And code ordering.
2022-07-17 12:42:54 +02:00
Pecusx 738faec7e2 Better laser timing 2022-07-16 21:10:45 +02:00
Pecusx 6b0d8aa287 Great Laser. #110 2022-07-16 20:15:18 +02:00
Pecusx bc0148eb0f Fix for last fix :) 2022-07-16 14:52:45 +02:00
Pecusx 25dfe09a9d Real fix for rollers bug. 2022-07-16 14:44:12 +02:00
Pecusx 9e695f8fcd Rollers bug (blast radius at right edge of the screen) 2022-07-16 00:40:41 +02:00
Pecusx 12150a47c1 Slight graphic glitches when switching screens. 2022-07-15 10:18:57 +02:00
Pirx b12ad5efed new colors try 2022-07-14 20:35:30 -04:00
Pirx 1b2988069f results sprite fix 2022-07-13 22:59:58 -04:00
Pecusx 99d08367c4 PM code optimisation 2022-07-14 00:13:36 +02:00
Pirx 9acada4e9f FOX PLOTS FASTER 2022-07-13 17:18:34 -04:00
Pirx 85fac6e6cf Merge pull request #109 from pfusik/opt-plot
Optimize plot and point
2022-07-13 17:07:04 -04:00
Pecusx 9806613f2f New PMG for 6 colored tanks
but colors not set to new scheme.
2022-07-13 22:53:54 +02:00
Piotr Fusik af797029f9 Optimize plot and point 2022-07-13 17:58:04 +02:00
Pecusx 9ece051472 IA code optimisation
and "better" shields shapes.
2022-07-13 09:06:37 +02:00
Pecusx 6868eb8626 Better Shooter strategy
Poolshark and Tosser no longer cheat :)
2022-07-11 21:43:07 +02:00
Pecusx e94a356e6d Auto Defence angle fix 2022-07-11 18:26:59 +02:00
Pirx 93b16bd55a Merge pull request #108 from pkali/develop
build 147
2022-07-10 21:14:18 -04:00
Pirx 752b84ae2e version updt 2022-07-10 21:13:18 -04:00
Pirx d751379361 README updt 2022-07-10 21:12:00 -04:00
Pirx 01d941b013 dynamic angle #75 2022-07-10 20:45:08 -04:00
Pirx b63b7a3fb1 tank names for robots #107 2022-07-10 13:17:56 -04:00
Pirx c28d243719 improved mountains heights #86 2022-07-10 12:00:53 -04:00
Pirx 51975ccfbf first cheap attempt mountains heights #86 2022-07-09 22:35:12 -04:00
Pirx 541a7566cb tank names on gfx screen when aiming #107 2022-07-09 21:42:30 -04:00
Pirx 48bfd3824d zero page loading elimination 2022-07-09 08:31:48 -04:00
Pecusx e307f1a14a "New" shape of Force Shield 2022-07-07 20:04:32 +02:00
Pecusx 2fecc8d630 Different shape of Heavy Shield 2022-07-07 19:52:30 +02:00
Pecusx 1998c98784 Leap Frog and Funky Bobmb explosion range 2022-07-07 18:32:31 +02:00
Pecusx 4dc9b4ebb0 Havy and Force Shields swap (for better AI) 2022-07-06 20:55:22 +02:00
Pecusx 8e60cfa723 Better Napalms range calculation 2022-07-06 20:43:24 +02:00
Pecusx 9ee021b1f5 Small Soildown oprimization 2022-07-06 18:21:52 +02:00
Pecusx d738e6a6e8 Small optimisation 2022-07-05 21:16:22 +02:00
Pecusx d0838fa163 Statusbar display improvements - robo-tanks. 2022-07-05 15:02:52 +02:00
Pecusx a353e3bdb9 Better display of robo-tanks names 2022-07-05 14:30:40 +02:00
Pecusx 5933b00153 AI tanks display live angle changes. 2022-07-05 13:26:10 +02:00
Pecusx a5add9d9c4 Old way of displaying angle #105 2022-07-05 13:09:29 +02:00
Pecusx f2c7b9c5a5 Napalm for AI
now with xex :)
2022-07-05 10:22:59 +02:00
Pecusx e87d875467 Revert "Napalm for AI"
This reverts commit 876ea45eaf.
2022-07-05 10:21:19 +02:00
Pecusx 876ea45eaf Napalm for AI 2022-07-05 10:20:25 +02:00
Pecusx b164a79fd4 Napalm and Hot Napalm are working!
And they have new prices.
2022-07-05 09:36:50 +02:00
Pecusx 0984aee64f Napalm and Hot Napalm added
... but something is wrong
2022-07-04 21:25:57 +02:00
Pecusx 51c257c8e8 Better Napalm flames (test)
And AI cosmetics
2022-07-04 14:49:44 +02:00
Pecusx af4eb201b2 Second Napalm test
Only display and clear from screen.
2022-07-04 14:14:23 +02:00
Pecusx 85d0fb4778 First Napalm test
Display test only!
2022-07-04 13:09:07 +02:00
Pecusx 0a7c76f74a Napalm characters (test) 2022-07-04 08:36:45 +02:00
Pirx 6d5f83195f typo 2022-07-03 23:45:40 -04:00
Pirx acd3a6abe6 Merge pull request #101 from pkali/develop
build 146
2022-07-03 23:36:12 -04:00
Pirx bb70b2495a buld 146 2022-07-03 23:35:06 -04:00
Pirx 39433a8cf4 tosser upgr and deathshead fix 2022-07-03 22:35:47 -04:00
Pirx 1765489474 weapon price balance 2022-07-03 14:36:16 -04:00
Pirx 97c01d2c61 Shooter fix 2022-07-03 14:01:51 -04:00
Pirx 3fb83583c3 AI fix and optimization 2022-07-03 13:22:44 -04:00
Pecusx 2a5595f3c9 New AI tank - Toosser and angle bugfixex 2022-07-03 16:43:43 +02:00
Pecusx a860c4dfa1 AI decreases defensive weapon used 2022-07-03 15:34:23 +02:00
Pecusx 7bd7105374 AI uses defensives 2022-07-03 15:16:58 +02:00
Pirx 00099f4c27 tank font fix 2022-07-03 00:09:23 -04:00
Pirx 4caed19cd1 new angles #87 2022-07-03 00:05:03 -04:00
Pirx e9a59b1475 sensible angles work! 2022-07-03 00:02:06 -04:00
Pecusx 011364cbeb Parachute is only shown if tank is really falling 2022-07-02 15:07:01 +02:00
Pecusx 279a47b29f Dead tanks don't fall :)
Lonely parachute bug.
2022-07-02 14:47:27 +02:00
Pirx 6ece26237c laser update 2022-07-02 08:20:32 -04:00
Pecusx 3d159f8439 Small parachute bug in falling procedure 2022-07-02 11:34:53 +02:00
Pecusx 6ac4bbe0cd Falling sfx only if Tank really falls 2022-07-02 11:29:18 +02:00
Pecusx 4583641207 Completly new tank falling procedure (70bytes saved!)
And now the tank loses 2 units of energy per pixel (vertical only)
2022-07-02 00:47:56 +02:00
Pecusx 4a32abdc83 New method of checking the tank falling direction.
New table "SlideLeftTable" (8 bytes) instead "WhereToSlideTable" (256 bytes)
But procedure is not optimal - we need to write a new version.

And now, falling diagonally doesn't take any more energy.
2022-06-28 20:01:24 +02:00
Pecusx d5c1e1e397 Battery activation bug
If you had a different defensive weapon, its energy was gone.
2022-06-28 09:02:58 +02:00
Pirx 4fe360d63c Merge pull request #100 from pkali/develop
build 145
2022-06-26 22:19:22 -04:00
Pirx c9ceb58117 build 145 2022-06-26 22:18:16 -04:00
Pirx e10514debd forgot about rounds... #76 2022-06-26 21:48:46 -04:00
Pirx 2907fe7a91 whiter color of pale #76 2022-06-26 21:26:22 -04:00
Pirx a0d5d22e74 small musique fixum-dyrdum 2022-06-26 11:21:35 -04:00
Pirx 1ea62798c8 sonico a musica nueva 2022-06-25 18:02:50 -04:00
Pirx 42facad64e wrong inventory position fix 2022-06-25 10:29:12 -04:00
Pecusx 2c98d73877 Nuclear Winter optimization - we save 4 bytes
:)
2022-06-22 17:28:31 +02:00
Pecusx 4ae4403448 Battery added! 2022-06-21 13:11:07 +02:00
Pecusx 242bc4586c Optimization - we save 15 bytes 2022-06-21 12:51:49 +02:00
Pecusx eda0e65189 Small bugfix 2022-06-21 12:38:17 +02:00
Pecusx 8613854f80 cosmetics 2022-06-21 11:34:05 +02:00
Pecusx 1c277b0e6f Nuclear Winter added. 2022-06-21 11:25:45 +02:00
Pecusx 623c9c9583 White Flag works! 2022-06-20 21:01:01 +02:00
Pecusx ce55bf0d97 Wrong parachute symbol :) 2022-06-20 14:34:36 +02:00
Pecusx 537f88e4c6 Deactivate defensive weapon now possible.
If you activate previously activated White Flag, you deactivate defensive weapons.
2022-06-20 14:07:53 +02:00
Pecusx 9aaa4fec69 Displaying White Flag and inverse reaction to fire button. 2022-06-20 13:23:36 +02:00
Pecusx 67b5dfb110 Strong Parachute (with energy) added!
and defensive (really all) weapons indexes (numbers) as constans.
2022-06-20 10:43:16 +02:00
Pirx 4200e60d47 Merge pull request #96 from pkali/develop
Develop
2022-06-19 20:23:25 -04:00
Pirx 7324203925 README 2022-06-19 20:23:05 -04:00
Pirx 634c2f83e9 README 2022-06-19 20:21:14 -04:00
Pirx 18f88705e5 Merge pull request #95 from pkali/develop
new xex
2022-06-19 20:05:32 -04:00
Pirx fe6bd17a66 new xex 2022-06-19 20:04:08 -04:00
Pirx 1d8f26d562 Merge pull request #94 from pkali/develop
inflation and supply chains distuption causes weapon price increase
2022-06-19 20:01:20 -04:00
Pirx 2bb8a743e1 inflation and supply chains distuption causes weapon price increase 2022-06-19 20:00:54 -04:00
Pirx 708a7b4aa9 Merge pull request #93 from pkali/develop
Develop
2022-06-19 14:43:03 -04:00
Pirx 8153670711 build 144 2022-06-19 14:42:24 -04:00
Pirx ab140ed5ca short fire - inventory, long fire - fire #75 2022-06-19 14:22:54 -04:00
Pirx cc3e2d1845 power timer 1/2s to speed up #75 2022-06-19 12:02:48 -04:00
Pirx 98e866abdd elaborate fix of a simple issue... #92 2022-06-18 20:17:16 -04:00
Pirx ffa748fb68 font update #26 2022-06-18 11:22:04 -04:00
Pirx de047779ce looks like inventory works... #26 2022-06-18 10:40:00 -04:00
Pirx 3c685b2811 infinite money when purchasing Baby Missile fix #26 2022-06-18 07:07:24 -04:00
Pecusx c86dcd7c59 cosmetics 2022-06-16 18:34:00 +02:00
Pecusx f924868459 Better (not best) collision with tank check
.... and corrected two defensive weapon numbers - Mag Deflector and Auto Defence are working.
2022-06-16 17:52:34 +02:00
Pirx 2992bd40b3 no shoot after inventory select #26 2022-06-15 07:48:57 -04:00
Pirx b19d218670 decrease activated defensives #26 2022-06-15 00:11:01 -04:00
Pirx 8ab450ff48 WIP: almost working... #26 2022-06-14 10:33:01 -04:00
Pirx 5e2ab7f206 defensives activate #26 2022-06-14 09:26:38 -04:00
Pecusx cd69bf22db Shield energy table added.
... for easier activation.
Defensive weapon numbering revised.
2022-06-13 09:18:05 +02:00
Pirx ff8c4d9329 number of shells in inventory #26 2022-06-13 01:35:57 -04:00
Pirx 83e128a1b5 no prices in inventory #26 2022-06-13 01:21:27 -04:00
Pirx cc8688263a Purchase/Activate texts in shop #26 2022-06-12 10:18:13 -04:00
Pirx b5bf6ecc30 joy left change offensive/deffensive #26 2022-06-12 09:48:10 -04:00
Pirx e2c85c98c2 inventory offensive weapons selection #26 2022-06-12 00:39:19 -04:00
Pirx c47a22a833 wip: purchase does not show active weapon #26 2022-06-11 20:08:25 -04:00
Pirx cd4275226a wip: inventory shows active weapon #26 2022-06-11 18:08:25 -04:00
Pirx cb270be865 wip: inventory shows weapons #26 2022-06-11 14:53:28 -04:00
Pirx 7df1d5eff9 isInventory var 2022-06-11 13:08:49 -04:00
Pirx c3f6e2399d to be as it was 2022-06-11 10:04:29 -04:00
Pirx 598860b7d0 infinite purchases fix #26 2022-06-11 09:43:08 -04:00
Pirx c1aa177767 WIP: press I for inventory #26 2022-06-11 05:51:13 -04:00
Pecusx eb7f6369de Collision with tank now checks the shield
We must rewvite CheckCollisionWithTank procedure !!!!
In future :)
2022-06-10 19:37:52 +02:00
Pecusx 41900d7671 Mag Deflector added
Only for test.
Now all players has active Mag Deflector with energy (99) before game.
2022-06-10 18:48:19 +02:00
Pecusx 6a6689b9b7 Auto Defence added
Only for test.
Now all players has active Auto Defence with energy (99) before game.
2022-06-10 11:13:20 +02:00
Pecusx 836c67afcf cosmetics 2022-06-09 20:32:37 +02:00
Pecusx 1b983b8d92 Index of hit tank in HitFlag
For future use.
Easier to check whether the hit tank or ground.
2022-06-09 18:06:31 +02:00
Pecusx 53e9f89012 Shield "horns" drawing.
For future use (defensive but aggressive :) ) weapons.
2022-06-09 14:40:48 +02:00
Pecusx cf40bf905d Slight change. 2022-06-09 12:57:50 +02:00
Pecusx 91b613f166 Shield witch parachute added
Only for test.
Now all players has active Shield with energy (99) and witch parachute before game.
Alo added display name of active defensive weapon on statusbar, and some fixes.
2022-06-09 09:46:09 +02:00
Pecusx eace9eb5cf Shield with energy added
Only for test.
Now all players has active Shield with energy (99) before game.
2022-06-08 21:52:19 +02:00
Pecusx 4c6b56a1e2 Now shield is displayed on a tank without PM
Small bugfix.
2022-06-08 14:40:29 +02:00
Pecusx 7b86fc98cd Simple shield added
Only for test.
Now all players has active Shield before game.
2022-06-08 11:14:03 +02:00
Pecusx 186cacf5ba The first attempt at handling defensive weapons
Only for test.
Now all players has active Parachute berore round.
2022-06-07 10:25:23 +02:00
Pecusx 031416b8e6 "Underground" shot fixed. 2022-06-06 17:59:43 +02:00
Pecusx 1394524a26 FunkyBomb and LeapFrog bugfix #89
Problem was due to the better accuracy of the collision with tank check procedure.
2022-06-06 09:42:22 +02:00
Pirx ea6c621d79 Merge pull request #90 from pkali/develop
build 143
2022-06-06 00:23:46 -04:00
Pirx afd81c08c3 build 143 2022-06-06 00:23:02 -04:00
Pirx a9703609b6 bad tanksequence fix #47 2022-06-06 00:01:02 -04:00
Pirx d8bfda28a0 code size opts 2022-06-05 21:36:38 -04:00
Pirx 743114fd0d some code size optimizations 2022-06-05 09:33:28 -04:00
Pirx 079abc062f done for now #74 2022-06-05 03:17:34 -04:00
Pirx 853a597daf almost done #74 2022-06-05 02:40:07 -04:00
Pirx 1eadc7f63e minor edits 2022-06-04 17:54:15 -04:00
Pirx 081cf282c8 forgot about MIRV #82 2022-06-04 16:15:43 -04:00
Pirx 4c3203854c letting winds #82 2022-06-04 16:07:01 -04:00
Pecusx bf11a9967f Atract mode only for human players 2022-06-03 21:46:04 +02:00
Pecusx 0d7403d1c0 Laser is working properly.
But why!!!
Where do xdraw and ydraw come from in laser procedure!
2022-06-03 11:59:11 +02:00
Pecusx 777f5c341a Additional check for 0 bullets in DecreaseWeapon proc #56 2022-06-03 10:48:08 +02:00
Pecusx 8f0bd8ca81 Liquid Dirt bug and little optimization 2022-06-03 10:30:02 +02:00
Pecusx c12049d0d7 Sometimes no explosion - solved!
A small change after a long analysis of the procedures "Fly" and "draw" - very hard work :)
2022-06-02 23:38:52 +02:00
Pecusx 6013986e51 Minor changes 2022-06-02 21:40:09 +02:00
Pecusx 0fbe3de569 Improved checking collision with the tank.
And other optimizations.
2022-06-02 15:01:49 +02:00
Pecusx 9569b3365a First attempt to 2 bytes Y
Not everywhere yet, but in the most important procedures.
2022-06-02 10:01:06 +02:00
Pecusx 6d9b2907c5 Flight procedure optimization
3 bytes variable (Result) now is unnecessary.
The code is a bit shorter.
2022-06-02 09:12:00 +02:00
Pecusx 94e6caebed MIRV bullets over the screen now are visible 2022-06-01 11:44:53 +02:00
Pecusx 532ee7dc88 MIRV hit procedure completely rewritten.
Now wthout bugs :) and much clearer.
2022-06-01 11:19:14 +02:00
Pecusx 17e653b37d Flashing before tank explodes #84 2022-05-31 10:44:47 +02:00
Pecusx bef3c0f080 MIRV bugfix #66
I think so.
2022-05-30 22:41:45 +02:00
Pirx 7ff3858433 Merge pull request #83 from pkali/develop
build 142
2022-05-30 09:05:04 -04:00
Pirx eae8cb08d8 build 142 2022-05-30 09:04:09 -04:00
Pirx f13d7ac801 death weapons fix 2022-05-30 08:36:30 -04:00
Pecusx 0ddbe41005 Hit one pixel over ground 2022-05-30 14:34:58 +02:00
Pecusx 7cd31450c7 Better ground hit handling and small bugfix
But.... no effect in #66 :(
2022-05-30 14:17:46 +02:00
Pirx a556e50e53 seppuku fix 2022-05-30 07:12:10 -04:00
Pirx 9f1720e970 work in progress... 2022-05-30 05:54:00 -04:00
Pirx 2df28af79c WIP: hunting for #47 2022-05-29 08:00:23 -04:00
Pirx defbde5b87 cosmetics 2022-05-29 00:25:19 -04:00
Pirx 0820124f9f LimitForce added #70 2022-05-28 21:43:55 -04:00
Pirx aa74cf133b draw jmp(indirect) ellimination 2022-05-28 13:42:42 -04:00
Pirx 2c640c370a Shooter shooting too strong #70 2022-05-28 09:42:38 -04:00
Pirx 636e121bf7 funkybomb traces deleted #5 2022-05-28 08:38:46 -04:00
Pirx 3c1b0a02aa cosmetic edits 2022-05-28 01:50:59 -04:00
Pirx be5652074a font4x4 xy check removed 2022-05-27 21:40:15 -04:00
Pirx a425500d4e seppuku turbo mode 2022-05-27 21:26:18 -04:00
Pirx a721b82944 chmod fix 2022-05-27 21:12:46 -04:00
Pirx 762b56567b chmod fix 2022-05-27 21:10:35 -04:00
Pecusx b11d22d1bb Correct x position of 4x4 characters 2022-05-26 09:43:12 +02:00
Pirx c68ba09103 blinking seppuku 2022-05-25 20:47:09 -04:00
Pecusx e399754e0c One unified procedure for 4x4 fonts 2022-05-25 20:36:15 +02:00
Pecusx 381495fb5a Sepuku error :)
4x4 texts were drawn 4 pixels too high
2022-05-25 19:31:09 +02:00
Pecusx 17b57d1ed2 Better (and faster!) 4x4 char handling.
New PutChar4x4FULL proc.
2022-05-25 12:05:24 +02:00
Pecusx 2fb04cabff Description of the EndOfTheBarrel arrays.
Description only. No code changes.
2022-05-23 08:59:45 +02:00
Pirx 457af6d6b9 Merge pull request #78 from pkali/develop
README updt
2022-05-22 22:01:11 -04:00
Pirx bdf0f10cc0 README updt 2022-05-22 22:00:24 -04:00
Pirx 347e59d5a2 Merge pull request #77 from pkali/develop
build 141
2022-05-22 21:55:20 -04:00
Pirx 61ff5e47e1 build 141 2022-05-22 21:54:34 -04:00
Pirx 2d8c71e9ff smalls and #13 2022-05-22 21:23:56 -04:00
Pirx fd1a61c1f9 display fix 2022-05-22 14:14:23 -04:00
Pecusx 571b3c137e Revert "First attempt to 2 bytes Y"
This reverts commit 7e24e44f1b.
2022-05-22 19:17:17 +02:00
Pecusx bd8ecad2dd Merge branch 'develop' of https://github.com/pkali/scorch_src into develop 2022-05-22 19:11:19 +02:00
Pecusx 7e24e44f1b First attempt to 2 bytes Y 2022-05-22 19:10:52 +02:00
Pirx eb8360dcd0 Merge branch 'develop' of github.com:pkali/scorch_src into develop 2022-05-22 13:09:04 -04:00
Pirx 3d8ec72da0 glich #55 2022-05-22 13:08:42 -04:00
Pecusx 2f099897c7 Cleanup 2022-05-22 18:25:31 +02:00
Pirx 26f82b59c1 code cleanup 2022-05-22 11:25:40 -04:00
Pirx 9a3cf1251f ESC updt #74 2022-05-22 10:59:06 -04:00
Pirx ec5838ebaf ESCape from menus #74 2022-05-22 10:12:52 -04:00
Pirx 491dc2861c speed up when [START] #73 2022-05-22 09:39:17 -04:00
Pirx 5e476eb742 [SHIFT] bug #61 2022-05-21 19:21:42 -04:00
Pirx 661d4776c7 cosinus angle fix #65 2022-05-21 18:50:13 -04:00
Pirx 3701accfc9 glitches when switches #72 2022-05-21 18:29:56 -04:00
Pirx fb54230ea7 white flag #62 2022-05-21 13:19:55 -04:00
Pirx fb86876d9f cos table removed #65 2022-05-21 13:12:54 -04:00
Pirx 80bc302689 too much force for AI #70 2022-05-21 11:20:16 -04:00
Pirx d9645b9c37 post intro glitch fix #67 2022-05-21 08:45:26 -04:00
Pecusx 620bcf5aa8 Small bugfix and optymalisation
Bugfix in drawnountains (now ground 0 is possible: ) )
Otymized flight proc - explosions no wrap around screen - why? :)
2022-05-18 20:00:27 +02:00
Pirx d0a9fb0fbe Merge pull request #60 from pkali/develop
build 140
2022-05-15 23:22:19 -04:00
Pirx 68bf4a9541 build 140 2022-05-15 23:21:47 -04:00
Pecusx 7dd3ecd2bf Merge pull request #59 from pkali/develop
Colors on tanks names screen
2022-05-14 20:33:59 +02:00
Pecusx 08f7680563 Colors on tanks names screen 2022-05-14 20:28:14 +02:00
Pirx d9322221a3 Merge pull request #58 from pkali/develop
master reconciliation
2022-05-14 08:14:25 -04:00
Pirx d766088b66 colors upd+weapon change sfx 2022-05-14 08:13:32 -04:00
Pecusx de5bfab2a8 Tank colors bugfix & new DLI for purchase screen
He, he.
The tank colors were not taken from the table :)
2022-05-13 09:18:50 +02:00
Pecusx 91b39e736b Minor optimizations
LiquidDirt and TypeChar (8x8 on graphics screen - like tanks) are little faster now.
2022-05-12 19:45:42 +02:00
Pecusx 572bee982a Test
I'am in develop branch :)
2022-05-12 19:02:26 +02:00
Pirx b37dc73f52 WIP: colors test 2022-05-12 09:53:56 -04:00
Pecusx 11ddf69de9 Merge branch 'master' of https://github.com/pkali/scorch_src 2022-05-11 19:03:42 +02:00
Pecusx 0ba4594712 Playfield in niverse
Playfield is now drawn in inverse for better color control (in future ;) )
Problems in DLI!
2022-05-11 19:03:35 +02:00
Pirx 8556dfe0d7 joytest for real hardware 2022-05-11 10:51:22 -04:00
Pecusx 860d0917ad Fixed bugs in LiqudDirt and Roller
Correct operation of dirt at the edges of the screen, and now dirt counter is two bytes (more and more dirt is possible).
Correction of the roller's (and LiquidDirtoperation on the right side of the screen. (old stiupid error)
2022-05-09 17:58:07 +02:00
Pecusx 2de2c24373 Very old bug fixed!
In the second (and next) round, the ground was drawn one pixel lower than it should have been.
2022-05-09 11:20:42 +02:00
Pirx a6382c5dc0 README UPDT 2022-05-09 01:32:02 -04:00
29 changed files with 3875 additions and 2750 deletions
+2
View File
@@ -0,0 +1,2 @@
*.bak
Executable → Regular
View File
Executable → Regular
+135 -15
View File
@@ -8,14 +8,16 @@ by Tomasz 'Pecus' Pecko and Pawel 'pirx' Kalinowski
Warsaw, Miami 2000, 2001, 2002, 2003, 2009, 2012, 2013, 2022 Warsaw, Miami 2000, 2001, 2002, 2003, 2009, 2012, 2013, 2022
Contributors: Contributors:
Kaz - splash screen, ideas - Kaz - splash screen, ideas
Adam - font, ideas - Miker (@mikerro) - game sfx, ideas, QA
Emkay - splash screen music - Adam (@6502adam) - font, ideas, QA
Miker - game sfx, ideas - Bocianu (@bocianu) - important ideas, FujiNet implementation, QA
Bocianu - important ideas, FujiNet implementation - Emkay - splash screen music
- Fox (@pfusik) - plot and point optimization
You can contact us at pecus@poczta.fm or pirx@5oft.pl QA: Probabilitydragon, KrzysRog, Beeblebrox, EnderDude, lopezpb, Dracon, brad-colbert, archon800, Shaggy the Atarian
home page of this project is https://github.com/pkali/scorch_src
You can contact us via [AtariAge](https://atariage.com) or [AtariOnLine](https://atarionline.pl) forums.
This source code was originally compiled under [OMC65 crossassembler](https://github.com/pkali/omc65) and on 2012-06-21 translated to [mads](https://github.com/tebe6502/Mad-Assembler). This source code was originally compiled under [OMC65 crossassembler](https://github.com/pkali/omc65) and on 2012-06-21 translated to [mads](https://github.com/tebe6502/Mad-Assembler).
@@ -31,12 +33,12 @@ Game source code is split into 5+4 parts:
- display.asm - display lists and text screen definitions - display.asm - display lists and text screen definitions
- ai.asm - artificial stupidity of computer opponents - ai.asm - artificial stupidity of computer opponents
- weapons.asm - general arsenal of tankies - weapons.asm - general arsenal of tankies
- definitions.asm - label definitions, moved to make it work better with Altirra debug. - definitions.asm - label definitions, moved to make it work better with Altirra debug (it doesn't).
We were trying to use as much macros and pseudo-ops as possible. We were trying to use macros, pseudo-ops and simple graphics primitives as much 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 This way it should be relatively easy to port this code to e.g. C64
After those N years of working on this piece of code we are sure it would be much wiser to write it in C, Action! or MadPascal but on the other hand it is so much fun to type 150 chars where all you want to have y=ax+b :) After those N years of working on this piece of code we are sure it would be much wiser to write it in C, Action! or MadPascal but on the other hand it is so much fun to type 150 chars where all you want to have y=a*x+b :)
Originally most variables were in Polish, comments were sparse, but we wanted to release this piece of code to public. Originally most variables were in Polish, comments were sparse, but we wanted to release this piece of code to public.
Because of being always short of time/energy (to finish the game) we decided it must go in 'English' to let other people work on it. Because of being always short of time/energy (to finish the game) we decided it must go in 'English' to let other people work on it.
@@ -46,10 +48,128 @@ With the advent of fujinet (https://fujinet.online/) we are thinking about makin
## Changes: ## Changes:
###### Build 138 ###### Build 148
2022-07-17
WHAT DOES THE FOX SAY?
Fox (x0f, @pfusik) says plots and points can be optimized by 18 clock cycles each and thanks to his 6502 wizardry the game is noticeably nicer. Thank you!
Other changes:
- https://github.com/pkali/scorch_src/issues/99, https://github.com/pkali/scorch_src/issues/98 - tank number 6 has got a color now! No one is monochrome now!
- https://github.com/pkali/scorch_src/issues/110 much improved laser - previously it was almost useless, now it looks and works much better
- fixed an interesting roller bug
- Auto Defense angle fix
- multiple improvements in AI routines, preparation for the final opponents.
###### Build 147
2022-07-10
LOST build. We were watching [LOST party](https://www.lostparty.pl/2022/) streams so maybe a little less done, but still some nice improvements.
- new weapons by @Pecusx - Napalm and Hot Napalm. Fire penetrates all shields, so beware!
- status bar showing outdated info on the beginning of the round fix
- various small optimizations incl. memory usage, soildown, weapon ranges
- improved shapes of Heavy and Force Shields
Issues closed:
- revert to the old but slightly improved version of showing angles (#105)
- zero page loading eliminated (#106)
- active player name appear over his tank when aiming (#107)
- configurable mountain heights (The Netherlands, Belgium, Czechia, Switzerland, Nepal) (#86)
- angle speeds up when joystick / keyboard are pressed (#75)
###### Build 146
2022-07-03
Super heavy rewrite build.
Not much changed visually since the last build, but really large parts of the code were rewritten, optimized and improved. A fresh swath of buggies certainly introduced, too.
- completely new tank falling routine by @Pecusx - over 300 bytes saved, complexity reduced, more just energy deduction when falling.
- silly angle system rewritten to a proper, primary school angling. BTW - I had to dig into 8th grade trig to make it work. About 200 bytes saved, complexity reduced. Next build will have improved angle speed UI. I will also allow for an easier improvement of tank visuals.
- Weapon price and quantity balance - this is our honest attempt to make game more fun. We'll accept any critique and improvement proposals.
- New AI opponent - Tosser! Not much better than Poolshark, but still beats sharks most of the time.
- AI opponents can purchase defensive weapons which make playing against AI somewhat more challenging.
- Improved Laser. It is still not ideal, but better. Still hard to aim :]
- Few small parachute-related bugs fixed
- Death's Head bug fix
Issues closed:
- https://github.com/pkali/scorch_src/issues/87 Angles are reasonable now. PROFIT!!!
###### Build 145
2022-06-26
Possibly last round of weapon additions!
@Pecusx added
- working White Flag -- it is a way to give up while not making opponents richer!
- Battery - a must for every tank with low energy.
- Strong Parachute - like a normal parachute, but stronger (it has energy and can work more than once)
- Nuclear Winter - a quick and efficient solution to global worming, err, warning, WARMING!
@mikerro added new SFX and in-game-tunes.
- Pressing [S] turns on/off SFX (when aiming). Pressing [M] turns on/off in-game tunes.
Tickets closed:
- https://github.com/pkali/scorch_src/issues/54 - holding a joystick up or down speeds up force change. It makes playing with a joystick much nicer.
- https://github.com/pkali/scorch_src/issues/76 - a beginning of visual tweaks by @6502adam
- infinite defensive weapons purchase bug fixed, to the chagrin of some...
###### Build 144
2022-06-19
Father's day release comes with the most anticipated new feature: defensive weapons. Thanks to @Pecus we have 5 completely new weapons and a more reasonably working parachute. The stub of the instruction manual describing these weapons is available here: https://github.com/pkali/scorch_src/wiki/Instruction-manual.
The new inventory system has been added. Call it by pressing the "I" key or short-pressing fire. Select the weapon to use by moving the joystick or cursor keys right. Switch between offensive and defensive weapons by moving the joystick left. Fire/escape to quit inventory.
Another significant playability change is #54 - it is not finished yet, but keeping the joystick up or down makes force increase/decrease faster. Also - short press of fire calls Inventory, long press fires the shell. The timings are experimental, please let me know if this needs a modification/improvement.
Tickets closed:
* https://github.com/pkali/scorch_src/issues/92 - less unnecessary cleaning of the offensive texts
* https://github.com/pkali/scorch_src/issues/89 - improved collisions with tank
* https://github.com/pkali/scorch_src/issues/71 - ditto
* https://github.com/pkali/scorch_src/issues/11, https://github.com/pkali/scorch_src/issues/26, https://github.com/pkali/scorch_src/issues/8, https://github.com/pkali/scorch_src/issues/20 - new inventory system
###### Build 143
2022-06-05
Rewrite build. We redone several important parts of the game to allow for bug fixes and requested features. Generally it was a great success, but some new bugs appeared. This build is nice for the eye, but beware, no mercy for testers again :)
Only visible changes listed, because you are possibly not as excited as we are for the new Flight routine and ground collisions by @Pecusx.
- https://github.com/pkali/scorch_src/issues/84, https://github.com/pkali/scorch_src/issues/63 - tanks now say good bye properly!
- https://github.com/pkali/scorch_src/issues/74 - Press [ESC] to quit the game at any point, with a confirmation when the round has already started. Please note the keyboard is not checked all the time, so press it for a while, especially when AI tanks are ru(i/n)ning the show.
- https://github.com/pkali/scorch_src/issues/56 - there should be no occurrences of frivolous weapon purchases. Please report all tanks getting their munitions from uncertified sources!
- https://github.com/pkali/scorch_src/issues/47 - It seems that the bad sequence of turns has been ameliorated. Fix is trivial, finding the culprit - far from it. Please pay special attention to fairness of shooting in case the fix is still longing for the fjords.
- ATTRACT mode works how it should - screensaver saves screen only when HUMAN should input something.
###### Build 142
2022-05-30
Late build. The bugs we tried to squelch turned out to be more difficult than usual. Some progress has been made though even if it is not yet visible.
- 4x4 font rewritten by @Pecusx as a prep for Y standarization. It makes the messages to appear faster. This is a good change.
- https://github.com/pkali/scorch_src/issues/5 and #80 fixed (again) - no funkybomb traces staying on the screen
- https://github.com/pkali/scorch_src/issues/70 too strong Shooters fixed
- https://github.com/pkali/scorch_src/issues/63 - tank say goodbye when (mostly) visible
- several other small changes and improvements that will pay off in the following releases.
###### Build 141
2022-05-22
Debug build. Thanks to all testers for finding numerous bugs. We tried to fix some of them and we have introduced some new for your enjoyment.
- https://github.com/pkali/scorch_src/issues/73 Fast forward. Press [START] to speed up the game where it can be sped up. Not in many places, mind you.
- https://github.com/pkali/scorch_src/issues/72 Screen glitches improved
- https://github.com/pkali/scorch_src/issues/70 AI shoot with more force than their energy allows. We might still have to revise this one
- https://github.com/pkali/scorch_src/issues/69 Explosions wrapping around the screen
- https://github.com/pkali/scorch_src/issues/67 Screen glitches after intro
- https://github.com/pkali/scorch_src/issues/65 Saved ~90 bytes by removing cosinus table
- https://github.com/pkali/scorch_src/issues/62 Empty list of defensive weapons gets corrupted. Plunged it with a new defensive weapon - "White Flag". Honor of the tank crew prohibits them from buying it (yet)
- https://github.com/pkali/scorch_src/issues/61 [SHIFT] was repeating the last key
- https://github.com/pkali/scorch_src/issues/57 Fire too sensitive on a real machine. Switched to shadow registers. First recorded use of Atari OS :O
- https://github.com/pkali/scorch_src/issues/55 Glitches in the status bar. This one was surprisingly tough.
###### Build 140
2022-05-15
Huge internal changes by @Pecusx. The whole game screen has been inverted - ground is now background color, "sky" and empty areas are in fact pixels. This allowed for introducing better tank colorization, fully devised and lead by Adam. The process started and results are already promising - the colors of tanks and the status bar are closer. We might get even better ones in the next builds.
- few new sfx added (end of round, weapon change, soil eating weapons)
- added colors to tank name and level selection screen
- Bug https://github.com/pkali/scorch_src/issues/57 possibly alleviated by using TRIG0S instead of TRIG0. Please test - it did not show for me.
Other unlisted minor bugs and typos fixed.
"Nightly" version moved to `develop` branch. `master` will be updated with stablish and playablish builds only.
###### Build 139
2022-05-09 2022-05-09
The post midnight release with great, heavy new features: The post midnight release with great, heavy new features:
- https://github.com/pkali/scorch_src/issues/48, https://github.com/pkali/scorch_src/issues/10 - thanks to Miker we have a bunch of fresh sound effects. Not everything is perfectly implemented, but the game definitely got nicer! Thank you again Miker! - https://github.com/pkali/scorch_src/issues/48, https://github.com/pkali/scorch_src/issues/10 - thanks to @mikerro we have a bunch of fresh sound effects. Not everything is perfectly implemented, but the game definitely got nicer! Thank you again Miker!
- https://github.com/pkali/scorch_src/issues/42 New weapon - Liquid Dirt by Pecus. Try it from directly from the weapon store! - https://github.com/pkali/scorch_src/issues/42 New weapon - Liquid Dirt by Pecus. Try it from directly from the weapon store!
- (fix) https://github.com/pkali/scorch_src/issues/53 - non-existing weapons are not displayed. This makes the defense menu empty when you are poor, but it is still better than the old way with "$0" prices - (fix) https://github.com/pkali/scorch_src/issues/53 - non-existing weapons are not displayed. This makes the defense menu empty when you are poor, but it is still better than the old way with "$0" prices
- (fix) https://github.com/pkali/scorch_src/issues/49 - seppuku should always kill now - (fix) https://github.com/pkali/scorch_src/issues/49 - seppuku should always kill now
@@ -91,7 +211,7 @@ Other small fixes:
2022-04-10 2022-04-10
- https://github.com/pkali/scorch_src/issues/34 - plot pointer visible only when missile is out of the screen - https://github.com/pkali/scorch_src/issues/34 - plot pointer visible only when missile is out of the screen
- https://github.com/pkali/scorch_src/issues/33 - Poor AIs do not purchase non-working weapons - https://github.com/pkali/scorch_src/issues/33 - Poor AIs do not purchase non-working weapons
- https://github.com/pkali/scorch_src/issues/32 - Basic is turned off right on the beginning of loading. Dracon reported problems with running the game in Altirra, this was the best idea I had about it. Maybe next will be removing from zero page LZSS routine by @dmsc - https://github.com/pkali/scorch_src/issues/32 - Basic is turned off right on the beginning of loading. Dracon reported problems with running the game in Altirra, this was the best idea I had about it. Maybe next will be removing LZSS routine by @dmsc from zero page
- https://github.com/pkali/scorch_src/issues/31 - STA WSYNC removed from missile flight delay - https://github.com/pkali/scorch_src/issues/31 - STA WSYNC removed from missile flight delay
- https://github.com/pkali/scorch_src/issues/30 - player level remembered between rounds, thx @KrzysRog - https://github.com/pkali/scorch_src/issues/30 - player level remembered between rounds, thx @KrzysRog
- https://github.com/pkali/scorch_src/issues/5 - funkybomb smoke stays on the edges of the screen - https://github.com/pkali/scorch_src/issues/5 - funkybomb smoke stays on the edges of the screen
@@ -102,7 +222,7 @@ Other small fixes:
- enhancement: https://github.com/pkali/scorch_src/issues/15 Add player colors to purchase screen. Still room to improvement! - enhancement: https://github.com/pkali/scorch_src/issues/15 Add player colors to purchase screen. Still room to improvement!
- enhancement: https://github.com/pkali/scorch_src/issues/22 Redesign information panel (top 2 lines of the game screen). Now game might make some sense for a newcomer :) - enhancement: https://github.com/pkali/scorch_src/issues/22 Redesign information panel (top 2 lines of the game screen). Now game might make some sense for a newcomer :)
- change: https://github.com/pkali/scorch_src/issues/28 remove white lines around out-of-the-screen point tracker. Now it is visible and looks better! - change: https://github.com/pkali/scorch_src/issues/28 remove white lines around out-of-the-screen point tracker. Now it is visible and looks better!
- enhancement: https://github.com/pkali/scorch_src/issues/25 Missiles are too fast. Thanks @bocianu and @miker for the hint. Speed of the shell is configurable now, 5 speeds available. - enhancement: https://github.com/pkali/scorch_src/issues/25 Missiles are too fast. Thanks @bocianu and @mikerro for the hint. Speed of the shell is configurable now, 5 speeds available.
- enhancement: https://github.com/pkali/scorch_src/issues/27 Remember game settings between games. - enhancement: https://github.com/pkali/scorch_src/issues/27 Remember game settings between games.
- enhancement: https://github.com/pkali/scorch_src/issues/24 Remember player names between games. Thanks @bocianu - enhancement: https://github.com/pkali/scorch_src/issues/24 Remember player names between games. Thanks @bocianu
-90
View File
@@ -1,90 +0,0 @@
MOVED TO: https://github.com/pkali/scorch_src/issues
TODO and BUGS file
---------------------------------------------------------
Known bugs (+ means bug is fixed)
004. when parachute is on and the tank dies (e.g. hit by a powerful
weapon) the dead (invisible) tank falls on parachute
(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)
017: Observed MIRV loops - it shoots and shoots MIRV all over the screen. Very rare.
020: sometimes leftmost or rightmost remains of the funkybomb smoke do not get cleared
I think it happens when one of the bombs goes out of the screen
023: NEW BUG. After the last change (bug 007) now the last shell of any weapon gets removed and
the game switches to Baby missile.
Fixed:
+001. when bullet goes straight down very fast it misses the tank
it happens only when tank is standing on the bottom of
the screen (no ground below)
+002. points after the round are not calculated correctly
+003. if death's head explodes low, the lowest explosion wraps
and appears on the top of the screen
+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.
+008. After a round the last tank sprite stays on the screen.
This hurts only when the last tank is under the table with results!
+010. Even MORONS shoot their feet too often - increase min. randomised energy.
+011. High flying bullets sometimes cause brief screen garbage - like a DL damaged
for a fraction of a frame.
Update - these are NOT high flying bullets - it just happens during bullet flight
+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),
the next are like missiles
+016: Additional explosions after Frogger do not have falling soil (?)
-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)
+021: check MWA, ADW, SBW macros - bad modifications of bytes found!!!
+009. When result in points is >99 then only 2 first digits are displayed
-022: shooting funkybomb decreases number of bombs too much! (2 instead of 1?)
+007. Decreasing of number of bullets after a shoot does not work correctly
(e.g. 2 bullets are deducted instead of 1) FUNKYBOMB!!!
it looks like it is fixed, although what I did was moving decreasing before jsr shoot
+000, Game crashes from time to time, code and/or screen gets corrupted
---------------------------------------------------------
To do
*004. The game has no end!!! Add ending!!!
A good idea for an ending - a TIP pic - Red Army taking Berlin :)
Another - vector tanks like in BattleZone
Another - stickman tankmen
006. Add sound effects (maybe sampled? or mp0 (sound based on fft))
007. There is no defensive weapon handling (only parachute works,
but also provisionally
009. Make AI in the existing framework (ongoing)
010. It is impossible to look up a number of parachutes left.
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
024. no visual indication of using defensive weapons
Done:
+001. Start each round with a)worst tank or b)random tank
(Worst tank starts first)
+002. Start each round with random angles (not always 45 degrees left)
+003. Add colour of the given tank to the screen
E.g. when a given tank is shooting it's colour could be behind
tank name on the text screen
+005. Add number of rounds to the options menu
+008. No computer operated opponents - make a framework for AI!!!
+011. Colouring the top status lines in a colour of the active tank.
+014. Demo mode - when all tanks are CPUs let them play non-stop!
(replace waiting for a key-press after a round with a small delay)
+015. Switch to mads for easier development (mads speeds it up, no doubt)
+016. Speed up death's head (e.g.: draw each second circle)
-017. Wide screen mode (with scroll?)
+012. Decreased number of bullets should be displayed just after the shoot.
+013. Check LineTable - possibly it is unnecessarily long. Checked. It is OK
+023. Make not implemented weapons raise NotImplementedError :] Done by making it impossible to purchase free weapons (price == $0)
Executable → Regular
+212 -92
View File
@@ -9,7 +9,7 @@
; greeeting to myself 10 years older in 2013-11-09... still no idea ; greeeting to myself 10 years older in 2013-11-09... still no idea
;---------------------------------------------- ;----------------------------------------------
MakeLowResDistances .proc .proc MakeLowResDistances
; create low precision table of positions ; create low precision table of positions
; by dividing positions by 4 ; by dividing positions by 4
@@ -30,18 +30,25 @@ loop
.endp .endp
;---------------------------------------------- ;----------------------------------------------
ArtificialIntelligence .proc ; .proc ArtificialIntelligence ;
; A - skill of the TankNr ; A - skill of the TankNr (in X)
; returns shoot energy and angle in ; returns shoot energy and angle in
; EnergyTable/L/H and AngleTable ; ForceTable/L/H and AngleTable
;---------------------------------------------- ;----------------------------------------------
asl asl
tax tay
:2 dex ;credit KK :2 dey ;credit KK
lda AIRoutines+1,x lda AIRoutines+1,y
pha pha
lda AIRoutines,x lda AIRoutines,y
pha pha
; common values used in AI routines
; address of weapons table (for future use)
lda TanksWeaponsTableL,x
sta temp
lda TanksWeaponsTableH,x
sta temp+1
rts rts
.endp .endp
;---------------- ;----------------
@@ -49,15 +56,14 @@ AIRoutines
.word Moron-1 .word Moron-1
.word Shooter-1 ;Shooter .word Shooter-1 ;Shooter
.word Poolshark-1 ;Poolshark .word Poolshark-1 ;Poolshark
.word Poolshark-1 ;Toosser .word Tosser-1 ;Tosser
.word Poolshark-1 ;Chooser .word Tosser-1 ;Chooser
.word Poolshark-1 ;Spoiler .word Tosser-1 ;Spoiler
.word Poolshark-1 ;Cyborg .word Tosser-1 ;Cyborg
.word Poolshark-1 ;Unknown .word Tosser-1 ;Unknown
;---------------------------------------------- ;----------------------------------------------
Moron .proc .proc Moron
ldx TankNr
jsr RandomizeAngle jsr RandomizeAngle
sta NewAngle sta NewAngle
mwa #80 RandBoundaryLow mwa #80 RandBoundaryLow
@@ -66,98 +72,137 @@ Moron .proc
rts rts
.endp .endp
;---------------------------------------------- ;----------------------------------------------
Shooter .proc .proc Shooter
ldx TankNr
lda PreviousAngle,x lda PreviousAngle,x
ora PreviousEnergyL,x ora PreviousEnergyL,x
ora PreviousEnergyH,x ora PreviousEnergyH,x
beq firstShoot beq firstShoot
lda PreviousAngle,x lda PreviousAngle,x
cmp #90
bcs shootingLeftAtThisMomentOfTime
; shooting right at this moment of time
sec
sbc #5
cmp #10
bcs @+ ;not smaller than 10
bcc firstShoot ; GET THE aim againg
shootingLeftAtThisMomentOfTime
clc clc
adc #5 adc #5
bmi leftQuadrant cmp #170 ; maximum shooter angle
cmp #90 bcs firstShoot
bcc continue @
lda #(-90)
bne continue
leftQuadrant
continue
sta NewAngle sta NewAngle
sec
lda PreviousEnergyL,x lda PreviousEnergyL,x
sta EnergyTableL,x sbc #5
lda PreviousEnergyH,x sta ForceTableL,x
sta EnergyTableH,x lda PreviousEnergyH,x
sbc #0
sta ForceTableH,x
jmp endo jmp endo
firstShoot firstShoot
; compare the x position with the middle of the screen ; compare the x position with the middle of the screen
lda xTanksTableH,x
cmp #>(screenwidth/2)
bne @+
lda xTanksTableL,x lda xTanksTableL,x
sta temp cmp #<(screenwidth/2)
lda xTanksTableH,x @ bcc tankIsOnTheRight
sta temp+1
cpw temp #(screenwidth/2)
bcs tankIsOnTheRight
lda RANDOM
and #$1F
clc
adc #5
;lda #45
; enemy tank is on the left
randomize 95 125
sta NewAngle sta NewAngle
jmp forceNow bne forceNow
tankIsOnTheRight tankIsOnTheRight
lda RANDOM randomize 55 85
and #$1F sta NewAngle
clc
adc #(-85)
;lda #-45
sta NewAngle
forceNow forceNow
mwa #100 RandBoundaryLow mwa #100 RandBoundaryLow
mwa #800 RandBoundaryHigh mwa #800 RandBoundaryHigh
;ldx TankNr ;this is possibly not necessary
jsr RandomizeForce jsr RandomizeForce
endo endo
ldx TankNr ;this is possibly not necessary ;ldx TankNr ;this is possibly not necessary
jsr RandomizeForce.LimitForce
lda NewAngle lda NewAngle
sta PreviousAngle,x sta PreviousAngle,x
lda EnergyTableL,x lda ForceTableL,x
sta PreviousEnergyL,x sta PreviousEnergyL,x
lda EnergyTableH,x lda ForceTableH,x
sta PreviousEnergyH,x sta PreviousEnergyH,x
; choose the best weapon ; choose the best weapon
lda TanksWeaponsTableL,x
sta temp
lda TanksWeaponsTableH,x
sta temp+1
ldy #32 ;the last weapon ldy #32 ;the last weapon
loop loop
dey dey
lda (temp),y lda (temp),y ; this is set up before calling the routine, has address of TanksWeaponsTable
beq loop beq loop
tya tya
sta ActiveWeapon,x sta ActiveWeapon,x
rts rts
.endp .endp
;---------------------------------------------- ;----------------------------------------------
Poolshark .proc .proc Poolshark
; defensives
; if low energy ten use battery
lda Energy,x
cmp #30
bcs EnoughEnergy
; lower than 30 units - check battery
ldy #ind_Battery________
lda (temp),y ; has address of TanksWeaponsTable
beq NoBatteries
; we have batteries - use one
clc
sbc #1
sta (temp),y
lda #99
sta Energy,x
NoBatteries
EnoughEnergy
; use best defensive :)
; but not allways
randomize 1 3
cmp #1
bne NoUseDefensive
; first check check if any is in use
lda ActiveDefenceWeapon,x
bne DefensiveInUse
ldy #ind_Nuclear_Winter_+1 ;the last defensive weapon
@
dey
cpy #ind_Battery________ ;first defensive weapon (White Flag nad Battery - never use)
beq NoUseDefensive
lda (temp),y ; has address of TanksWeaponsTable
beq @-
; decrease in inventory
clc
sbc #1
sta (temp),y ; has address of TanksWeaponsTable
; activate defensive weapon
tya ; number of selectet defensive weapon
sta ActiveDefenceWeapon,x
lda DefensiveEnergy,y
sta ShieldEnergy,x
NoUseDefensive
DefensiveInUse
firstShoot firstShoot
;find nearest tank neighbour ;find nearest tank neighbour
jsr MakeLowResDistances jsr MakeLowResDistances
mva #$ff temp2 ; min possible distance mva #$ff temp2 ; min possible distance
ldx TankNr ;ldx TankNr
ldy NumberOfPlayers ldy NumberOfPlayers
dey dey
@@ -214,10 +259,11 @@ skipThisPlayer
forceNow forceNow
mwa #300 RandBoundaryLow mwa #300 RandBoundaryLow
mwa #700 RandBoundaryHigh mwa #700 RandBoundaryHigh
ldx TankNr
jsr RandomizeForce jsr RandomizeForce
endo endo
ldx TankNr ;this is possibly not necessary ;ldx TankNr ;this is possibly not necessary
; choose the best weapon ; choose the best weapon
@@ -225,7 +271,7 @@ endo
sta temp sta temp
lda TanksWeaponsTableH,x lda TanksWeaponsTableH,x
sta temp+1 sta temp+1
ldy #32 ;the last weapon ldy #ind_Laser__________ ;the last offensive weapon
loop loop
dey dey
lda (temp),y lda (temp),y
@@ -236,11 +282,39 @@ loop
;---------------------------------------------- ;----------------------------------------------
AngleTable ; 16 bytes ;ba w $348b L$3350 AngleTable ; 16 bytes ;ba w $348b L$3350
.by 178,186,194,202,210,218,226,234 .by 106,114,122,130,138,146,154,162
.by 16,24,32,40,48,56,64,72 .by 18,26,34,43,50,58,66,74
.endp .endp
;---------------------------------------------- ;----------------------------------------------
PurchaseAI .proc ; .proc Tosser
; use best defensive :)
; allways
; first check check if any is in use
lda ActiveDefenceWeapon,x
bne DefensiveInUse
ldy #ind_Nuclear_Winter_+1 ;the last defensive weapon
@
dey
cpy #ind_Battery________ ;first defensive weapon (White Flag nad Battery - never use)
beq NoUseDefensive
lda (temp),y ; has address of TanksWeaponsTable
beq @-
; decrease in inventory
clc
sbc #1
sta (temp),y ; has address of TanksWeaponsTable
; activate defensive weapon
tya ; number of selectet defensive weapon
sta ActiveDefenceWeapon,x
lda DefensiveEnergy,y
sta ShieldEnergy,x
DefensiveInUse
NoUseDefensive
; Toosser is like Poolshark but allways uses defensives
jmp Poolshark
.endp
;----------------------------------------------
.proc PurchaseAI ;
; A - skill of the TankNr ; A - skill of the TankNr
; makes purchase for AI opponents ; makes purchase for AI opponents
; results of this routine are not visible on the screen ; results of this routine are not visible on the screen
@@ -260,21 +334,22 @@ PurchaseAIRoutines
.word MoronPurchase-1 .word MoronPurchase-1
.word ShooterPurchase-1 ;ShooterPurchase .word ShooterPurchase-1 ;ShooterPurchase
.word PoolsharkPurchase-1 ;PoolsharkPurchase .word PoolsharkPurchase-1 ;PoolsharkPurchase
.word PoolsharkPurchase-1 ;ToosserPurchase .word TosserPurchase-1 ;TosserPurchase
.word PoolsharkPurchase-1 ;ChooserPurchase .word TosserPurchase-1 ;ChooserPurchase
.word PoolsharkPurchase-1 ;SpoilerPurchase .word TosserPurchase-1 ;SpoilerPurchase
.word PoolsharkPurchase-1 ;CyborgPurchase .word TosserPurchase-1 ;CyborgPurchase
.word PoolsharkPurchase-1 ;UnknownPurchase .word TosserPurchase-1 ;UnknownPurchase
;---------------------------------------------- ;----------------------------------------------
MoronPurchase .proc MoronPurchase
;Moron buys nothing ;Moron buys nothing
rts rts
.endp
;------- ;-------
TryToPurchaseOnePiece .proc .proc TryToPurchaseOnePiece
; A - weapon number, better it will be in range(1,32) ; A - weapon number, better it will be in range(1,32)
; TankNr in X ; TankNr in X
; DOES NOT CHANGE X
tay tay
lda PurchaseMeTable,y lda PurchaseMeTable,y
beq SorryNoPurchase beq SorryNoPurchase
@@ -320,28 +395,73 @@ SorryNoPurchase
;---------------------------------------------- ;----------------------------------------------
ShooterPurchase .proc .proc ShooterPurchase
mva #4 tempXroller; number of purchases to perform ; first try to buy defensives
mva #2 tempXroller; number of offensive purchases to perform
ldx TankNr ldx TankNr
loop @
randomize 1 14 randomize ind_Battery________ ind_StrongParachute
jsr TryToPurchaseOnePiece jsr TryToPurchaseOnePiece
dec tempXroller dec tempXroller
bne loop bne @-
rts ; and now offensives
.endp mva #4 tempXroller; number of offensive purchases to perform
;---------------------------------------------- ;ldx TankNr
PoolsharkPurchase .proc @
mva #8 tempXroller; number of purchases to perform randomize ind_Missile________ ind_Heavy_Roller___
ldx TankNr
loop
randomize 1 30
jsr TryToPurchaseOnePiece jsr TryToPurchaseOnePiece
dec tempXroller dec tempXroller
bne loop bne @-
rts rts
.endp .endp
;----------------------------------------------
.proc PoolsharkPurchase
; first try to buy defensives
mva #3 tempXroller; number of offensive purchases to perform
ldx TankNr
@
randomize ind_Battery________ ind_Auto_Defense___
jsr TryToPurchaseOnePiece
dec tempXroller
bne @-
; and now offensives
mva #8 tempXroller; number of purchases to perform
;ldx TankNr
@
randomize ind_Missile________ ind_Dirt_Charge____
jsr TryToPurchaseOnePiece
dec tempXroller
bne @-
rts
.endp
;----------------------------------------------
.proc TosserPurchase
; what is my money level
ldx TankNr
lda MoneyH,x ; money / 256
sta tempXroller ; perform this many purchase attempts
; first try to buy defensives
mva #3 tempXroller; number of defensive purchases to perform
@
randomize ind_Battery________ ind_Auto_Defense___
jsr TryToPurchaseOnePiece
dec tempXroller
bne @-
; and now offensives
lda MoneyH,x ; money / 256
asl ;*2
sta tempXroller ; perform this many purchase attempts
@
randomize ind_Missile________ ind_Dirt_Charge____
jsr TryToPurchaseOnePiece
dec tempXroller
bne @-
rts
.endp
+49 -21
View File
@@ -23,17 +23,8 @@ bptr .ds 2
cur_pos .ds 1 cur_pos .ds 1
chn_bits .ds 1 chn_bits .ds 1
bit_data .byte 1 bit_data .ds 1
.proc get_byte
lda song_data+1
inc song_ptr
bne skip
inc song_ptr+1
skip
rts
.endp
song_ptr = get_byte + 1
fcnt .ds 2 fcnt .ds 2
@@ -45,11 +36,16 @@ regX .ds 1
regY .ds 1 regY .ds 1
; --- MAIN PROGRAM ; --- MAIN PROGRAM
org $2000 org $2000
ant dta $F0 ant dta $80
dta $42,a(scr),$02,$02,$02,$02,$02,$02,$02,$02,$02,$82,$02,$02,$02,$02,$82 dta $42,a(scr),$02,$02,$02,$02,$02,$02,$02,$02,$02,$82,$02,$02,$02,$02,$82
dta $02,$02,$02,$82,$82,$82,$02,$82,$02,$02,$02,$82,$70 dta $02,$02,$02,$82,$82,$82,$02,$82,$02,$02,$02,$82
dta $42,a(verline)
dta $41,a(ant) dta $41,a(ant)
verline
:37 dta d" "
build
scr ins "HIMARS14.scr" scr ins "HIMARS14.scr"
.ds 2*40 .ds 2*40
@@ -68,7 +64,7 @@ pmg .ds $0300
eif eif
song_data song_data
ins 'mmm_16.lzs' ins 'mmm_16.lzs'
song_end song_end
POKEY = $D200 POKEY = $D200
@@ -81,6 +77,8 @@ buffers
; ;
.proc init_song .proc init_song
mva #1 bit_data
; Example: here initializes song pointer: ; Example: here initializes song pointer:
;mwa #song_data song_ptr ;mwa #song_data song_ptr
@@ -177,18 +175,28 @@ skip_chn:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Check for ending of song and jump to the next frame ; Check for ending of song and jump to the next frame
; ;
.proc check_end_song
lda song_ptr + 1 ; not checking really so the tune gets funky :)))
cmp #>song_end ;lda song_ptr + 1
;cmp #>song_end
;bne wait_frame ;bne wait_frame
lda song_ptr ;lda song_ptr
cmp #<song_end ;cmp #<song_end
;bne wait_frame ;bne wait_frame
.endp
end_loop end_loop
rts rts
song_ptr = get_byte + 1
.proc get_byte
lda song_data+1
inc song_ptr
bne skip
inc song_ptr+1
skip
rts
.endp
main main
jsr init_song jsr init_song
@@ -202,6 +210,19 @@ main
lda:cmp:req $14 ;wait 1 frame lda:cmp:req $14 ;wait 1 frame
; copy system font to $a000
ldx #0
@ lda $e000,x
sta $a000,x
;lda $e100,x ; i need digits only :]
;sta $a100,x
;lda $e200,x
;sta $a200,x
;lda $e300,x
;sta $a300,x
inx
bne @-
sei ;stop IRQ interrupts sei ;stop IRQ interrupts
mva #$00 nmien ;stop NMI interrupts mva #$00 nmien ;stop NMI interrupts
sta dmactl sta dmactl
@@ -249,6 +270,11 @@ stop
@ sta POKEY,x @ sta POKEY,x
dex dex
bpl @- bpl @-
;no glitching please (issue #67)
lda #0
sta $D400 ;dmactl
sta $022F ;dmactls
rts ;return to ... DOS rts ;return to ... DOS
; --- DLI PROGRAM ; --- DLI PROGRAM
@@ -339,8 +365,10 @@ dli7
dli11 dli11
sta regA sta regA
lda #$01 lda #>$a000 ; system font
sta wsync ;line=232 sta wsync ;line=232
sta chbase
lda #$01
sta gtictl sta gtictl
lda regA lda regA
@@ -431,7 +459,7 @@ quit
ini main ini main
; --- ; ---
opt l- ;opt l-
.MACRO SPRITES .MACRO SPRITES
missiles missiles
Executable → Regular
View File
Executable → Regular
View File
Executable → Regular
View File

Before

Width:  |  Height:  |  Size: 190 B

After

Width:  |  Height:  |  Size: 190 B

+20
View File
@@ -0,0 +1,20 @@
icl '../lib/atari.hea'
org $2000
joytest
mva #0 dmactls
@
lda trig0
beq pressed
mva #0 colbak
beq @-
pressed
lda #$0f
;ora jstick0
sta colbak
jmp @-
run joytest
Binary file not shown.
Executable → Regular
+121 -118
View File
@@ -1,125 +1,128 @@
.proc talk .proc talk
L0 dta c"IN TIMES OF TROUBLE, GO WITH WHAT YOU KNOW." L0 dta d"IN TIMES OF TROUBLE, GO WITH WHAT YOU KNOW."
L1 dta c"DIE!" L1 dta d"DIE!"
L2 dta c"EAT MY SHORTS!" L2 dta d"EAT MY SHORTS!"
L3 dta c"YOU'RE TOAST!" L3 dta d"YOU'RE TOAST!"
L4 dta c"BANZAI!" L4 dta d"BANZAI!"
L5 dta c"FROM HELL'S HEART I STAB AT THEE..." L5 dta d"FROM HELL'S HEART I STAB AT THEE..."
L6 dta c"I DIDN'T DO IT. NOBODY SAW ME DO IT." L6 dta d"I DIDN'T DO IT. NOBODY SAW ME DO IT."
L7 dta c"TAKE A HIKE!" L7 dta d"TAKE A HIKE!"
L8 dta c"YOU'RE DEAD MEAT." L8 dta d"YOU'RE DEAD MEAT."
L9 dta c"MAKE MY DAY." L9 dta d"MAKE MY DAY."
L10 dta c"CHARGE!" L10 dta d"CHARGE!"
L11 dta c"ATTACK!" L11 dta d"ATTACK!"
L12 dta c"YOU'RE OUTTA HERE." L12 dta d"YOU'RE OUTTA HERE."
L13 dta c"WATTSA MATTA YOU?" L13 dta d"WATTSA MATTA YOU?"
L14 dta c"FREEZE, OR I'LL SHOOT!" L14 dta d"FREEZE, OR I'LL SHOOT!"
L15 dta c"HA HA HA." L15 dta d"HA HA HA."
L16 dta c"WE COME IN PEACE - SHOOT TO KILL!" L16 dta d"WE COME IN PEACE - SHOOT TO KILL!"
L17 dta c"IN YOUR FACE!" L17 dta d"IN YOUR FACE!"
L18 dta c"DIE COMMIE PIG!" L18 dta d"DIE COMMIE PIG!"
L19 dta c"I LOVE THE SMELL OF NAPALM IN THE MORNING." L19 dta d"I LOVE THE SMELL OF NAPALM IN THE MORNING."
L20 dta c"VICTORY!" L20 dta d"VICTORY!"
L21 dta c"SHOW SOME RESPECT." L21 dta d"SHOW SOME RESPECT."
L22 dta c"JUST WHO DO YOU THINK YOU ARE?" L22 dta d"JUST WHO DO YOU THINK YOU ARE?"
L23 dta c"LOOK OUT BELOW!" L23 dta d"LOOK OUT BELOW!"
L24 dta c"KNOCK, KNOCK." L24 dta d"KNOCK, KNOCK."
L25 dta c"LOOK OVER THERE." L25 dta d"LOOK OVER THERE."
L26 dta c"GUESS WHAT'S COMING FOR DINNER?" L26 dta d"GUESS WHAT'S COMING FOR DINNER?"
L27 dta c"MERRY CHRISTMAS." L27 dta d"MERRY CHRISTMAS."
L28 dta c"OPEN WIDE!" L28 dta d"OPEN WIDE!"
L29 dta c"HERE GOES NOTHING..." L29 dta d"HERE GOES NOTHING..."
L30 dta c"DON'T WORRY, IT ISN'T A LIVE ROUND." L30 dta d"DON'T WORRY, IT ISN'T A LIVE ROUND."
L31 dta c"BLOOD, PAIN, VIOLENCE!" L31 dta d"BLOOD, PAIN, VIOLENCE!"
L32 dta c"TAKE THIS, SISSY!" L32 dta d"TAKE THIS, SISSY!"
L33 dta c"I SHALL FLATTEN YOU!" L33 dta d"I SHALL FLATTEN YOU!"
L34 dta c"I SHALL SMASH YOUR UGLY TANK!" L34 dta d"I SHALL SMASH YOUR UGLY TANK!"
L35 dta c"I WONDER WHAT THIS BUTTON DOES?" L35 dta d"I WONDER WHAT THIS BUTTON DOES?"
L36 dta c"DON'T TAKE THIS PERSONALLY." L36 dta d"DON'T TAKE THIS PERSONALLY."
L37 dta c"WOULD THIS MAKE YOU MAD?" L37 dta d"WOULD THIS MAKE YOU MAD?"
L38 dta c"I TOLD YOU TO LEAVE MY SISTER ALONE!" L38 dta d"I TOLD YOU TO LEAVE MY SISTER ALONE!"
L39 dta c"I COULD SPARE YOU, BUT WHY?" L39 dta d"I COULD SPARE YOU, BUT WHY?"
L40 dta c"MY BOMB IS BIGGER THAN YOURS." L40 dta d"MY BOMB IS BIGGER THAN YOURS."
L41 dta c"DON'T FORGET ABOUT ME!" L41 dta d"DON'T FORGET ABOUT ME!"
L42 dta c"HASTA LA VISTA, BABY!" L42 dta d"HASTA LA VISTA, BABY!"
L43 dta c"THIS IS YOUR BRAIN ON SCORCH." L43 dta d"THIS IS YOUR BRAIN ON SCORCH."
L44 dta c"TAKE THIS!" L44 dta d"TAKE THIS!"
L45 dta c"THIS SCREEN AIN'T BIG ENOUGH FOR THE BOTH OF US." L45 dta d"THIS SCREEN AIN'T BIG ENOUGH FOR THE BOTH OF US."
L46 dta c"DIE, ALIEN SWINE!" L46 dta d"DIE, ALIEN SWINE!"
L47 dta c"SAY ARRGGHHHHH...." L47 dta d"SAY ARRGGHHHHH...."
L48 dta c"I SHALL OIL MY TURRET WITH YOUR BLOOD." L48 dta d"I SHALL OIL MY TURRET WITH YOUR BLOOD."
L49 dta c"DIE, TANK-SCUM!" L49 dta d"DIE, TANK-SCUM!"
L50 dta c"I'M GONNA BREAK YOUR FACE!" L50 dta d"I'M GONNA BREAK YOUR FACE!"
L51 dta c"MAMA SAID KNOCK YOU OUT!" L51 dta d"MAMA SAID KNOCK YOU OUT!"
L52 dta c"I HOPE YOU ENJOY PAIN!" L52 dta d"I HOPE YOU ENJOY PAIN!"
;-------------------------------- ;--------------------------------
L53 dta c"PARTING IS SUCH SWEET SORROW... NOT!" L53 dta d"PARTING IS SUCH SWEET SORROW... NOT!"
L54 dta c"UGH!" L54 dta d"UGH!"
L55 dta c"AARGH!" L55 dta d"AARGH!"
L56 dta c"AAAGGHHH!" L56 dta d"AAAGGHHH!"
L57 dta c"I'M MELTING!" L57 dta d"I'M MELTING!"
L58 dta c"OOF.." L58 dta d"OOF.."
L59 dta c"OH!" L59 dta d"OH!"
L60 dta c"EEEK!" L60 dta d"EEEK!"
L61 dta c"AACCH!" L61 dta d"AACCH!"
L62 dta c"I HATE IT WHEN THAT HAPPENS." L62 dta d"I HATE IT WHEN THAT HAPPENS."
L63 dta c"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY." L63 dta d"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY."
L64 dta c"OH NO!" L64 dta d"OH NO!"
L65 dta c"NOT ME!" L65 dta d"NOT ME!"
L66 dta c"OUCH." L66 dta d"OUCH."
L67 dta c"OH NO, NOT AGAIN." L67 dta d"OH NO, NOT AGAIN."
L68 dta c"ANOTHER ONE BITES THE DUST." L68 dta d"ANOTHER ONE BITES THE DUST."
L69 dta c"GOODBYE." L69 dta d"GOODBYE."
L70 dta c"HELP ME!" L70 dta d"HELP ME!"
L71 dta c"FAREWELL, CRUEL WORLD." L71 dta d"FAREWELL, CRUEL WORLD."
L72 dta c"REMEMBER THE ALAMO!" L72 dta d"REMEMBER THE ALAMO!"
L73 dta c"OH MAN!" L73 dta d"OH MAN!"
L74 dta c"DOOUGH!" L74 dta d"DOOUGH!"
L75 dta c"ANOTHER DAY, ANOTHER BOMB." L75 dta d"ANOTHER DAY, ANOTHER BOMB."
L76 dta c"THIS IS THE END, MY ONLY FRIEND." L76 dta d"THIS IS THE END, MY ONLY FRIEND."
L77 dta c"IT'S ALL OVER." L77 dta d"IT'S ALL OVER."
L78 dta c"THE FAT LADY SANG." L78 dta d"THE FAT LADY SANG."
L79 dta c"WHY DOES EVERYTHING HAPPEN TO ME?" L79 dta d"WHY DOES EVERYTHING HAPPEN TO ME?"
L80 dta c"I'M GOING DOWN." L80 dta d"I'M GOING DOWN."
L81 dta c"I'VE GOT A BAD FEELING ABOUT THIS." L81 dta d"I'VE GOT A BAD FEELING ABOUT THIS."
L82 dta c"CRAPOLA." L82 dta d"CRAPOLA."
L83 dta c"POW!" L83 dta d"POW!"
L84 dta c"BIF!" L84 dta d"BIF!"
L85 dta c"BAM!" L85 dta d"BAM!"
L86 dta c"ZONK!" L86 dta d"ZONK!"
L87 dta c"I SHOULD'VE LISTENED TO MY MOTHER..." L87 dta d"I SHOULD'VE LISTENED TO MY MOTHER..."
L88 dta c"NO... A BUD LIGHT!" L88 dta d"NO... A BUD LIGHT!"
L89 dta c"WHAT WAS THAT NOISE?" L89 dta d"WHAT WAS THAT NOISE?"
L90 dta c"MAMA SAID THERE'D BE DAYS LIKE THIS." L90 dta d"MAMA SAID THERE'D BE DAYS LIKE THIS."
L91 dta c"ITS JUST ONE OF THOSE DAYS..." L91 dta d"ITS JUST ONE OF THOSE DAYS..."
L92 dta c"I SEE A BRIGHT LIGHT..." L92 dta d"I SEE A BRIGHT LIGHT..."
L93 dta c"MOMMY? IS THAT YOU?" L93 dta d"MOMMY? IS THAT YOU?"
L94 dta c"I LET YOU HIT ME!" L94 dta d"I LET YOU HIT ME!"
L95 dta c"SUCKER SHOT!" L95 dta d"SUCKER SHOT!"
L96 dta c"I DIDN'T WANT TO LIVE ANYWAY." L96 dta d"I DIDN'T WANT TO LIVE ANYWAY."
L97 dta c"-<SOB>-" L97 dta d"-<SOB>-"
L98 dta c"WAS THAT AS CLOSE AS I THINK IT WAS?" L98 dta d"WAS THAT AS CLOSE AS I THINK IT WAS?"
L99 dta c"JOIN THE ARMY, SEE THE WORLD THEY SAID." L99 dta d"JOIN THE ARMY, SEE THE WORLD THEY SAID."
L100 dta c"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!" L100 dta d"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!"
L101 dta c"I DIDN'T LIKE VIOLENCE ANYWAY!" L101 dta d"I DIDN'T LIKE VIOLENCE ANYWAY!"
L102 dta c"I THOUGHT YOU LIKED ME?" L102 dta d"I THOUGHT YOU LIKED ME?"
L103 dta c"SUCH SENSELESS VIOLENCE! I DON'T UNDERSTAND IT." L103 dta d"SUCH SENSELESS VIOLENCE! I DON'T UNDERSTAND IT."
L104 dta c"I THINK THIS GUY'S A LITTLE CRAZY." L104 dta d"I THINK THIS GUY'S A LITTLE CRAZY."
L105 dta c"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE." L105 dta d"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE."
L106 dta c"HEY! KILLIN' AIN'T COOL." L106 dta d"HEY! KILLIN' AIN'T COOL."
L107 dta c"GEE... THANKS." L107 dta d"GEE... THANKS."
L108 dta c"I'VE FALLEN AND I CAN'T GET UP!" L108 dta d"I'VE FALLEN AND I CAN'T GET UP!"
L109 dta c"911?" L109 dta d"911?"
L110 dta c"OH NO! HERE I BLOW AGAIN!" L110 dta d"OH NO! HERE I BLOW AGAIN!"
L111 dta c"I'LL BE BACK..." L111 dta d"I'LL BE BACK..."
L112 dta c"HEY - I'VE GOT LAWYERS." L112 dta d"HEY - I'VE GOT LAWYERS."
L113 dta c"TIME TO CALL 1-900-SUE-TANK." L113 dta d"TIME TO CALL 1-900-SUE-TANK."
LEND
OffensiveTextTableL OffensiveTextTableL
dta <L0,<L1,<L2,<L3,<L4,<L5,<L6,<L7,<L8,<L9,<L10,<L11,<L12,<L13,<L14,<L15,<L16,<L17,<L18,<L19,<L20,<L21,<L22,<L23,<L24,<L25,<L26,<L27,<L28,<L29,<L30,<L31,<L32,<L33,<L34,<L35,<L36,<L37,<L38,<L39,<L40,<L41,<L42,<L43,<L44,<L45,<L46,<L47,<L48,<L49,<L50,<L51,<L52,<L53,<L54,<L55,<L56,<L57,<L58,<L59,<L60,<L61,<L62,<L63,<L64,<L65,<L66,<L67,<L68,<L69,<L70,<L71,<L72,<L73,<L74,<L75,<L76,<L77,<L78,<L79,<L80,<L81,<L82,<L83,<L84,<L85,<L86,<L87,<L88,<L89,<L90,<L91,<L92,<L93,<L94,<L95,<L96,<L97,<L98,<L99,<L100,<L101,<L102,<L103,<L104,<L105,<L106,<L107,<L108,<L109,<L110,<L111,<L112,<L113 dta <L0,<L1,<L2,<L3,<L4,<L5,<L6,<L7,<L8,<L9,<L10,<L11,<L12,<L13,<L14,<L15,<L16,<L17,<L18,<L19,<L20,<L21,<L22,<L23,<L24,<L25,<L26,<L27,<L28,<L29,<L30,<L31,<L32,<L33,<L34,<L35,<L36,<L37,<L38,<L39,<L40,<L41,<L42,<L43,<L44,<L45,<L46,<L47,<L48,<L49,<L50,<L51,<L52
dta <L53,<L54,<L55,<L56,<L57,<L58,<L59,<L60,<L61,<L62,<L63,<L64,<L65,<L66,<L67,<L68,<L69,<L70,<L71,<L72,<L73,<L74,<L75,<L76,<L77,<L78,<L79,<L80,<L81,<L82,<L83,<L84,<L85,<L86,<L87,<L88,<L89,<L90,<L91,<L92,<L93,<L94,<L95,<L96,<L97,<L98,<L99,<L100,<L101,<L102,<L103,<L104,<L105,<L106,<L107,<L108,<L109,<L110,<L111,<L112,<L113
dta <LEND
OffensiveTextTableH OffensiveTextTableH
dta >L0,>L1,>L2,>L3,>L4,>L5,>L6,>L7,>L8,>L9,>L10,>L11,>L12,>L13,>L14,>L15,>L16,>L17,>L18,>L19,>L20,>L21,>L22,>L23,>L24,>L25,>L26,>L27,>L28,>L29,>L30,>L31,>L32,>L33,>L34,>L35,>L36,>L37,>L38,>L39,>L40,>L41,>L42,>L43,>L44,>L45,>L46,>L47,>L48,>L49,>L50,>L51,>L52,>L53,>L54,>L55,>L56,>L57,>L58,>L59,>L60,>L61,>L62,>L63,>L64,>L65,>L66,>L67,>L68,>L69,>L70,>L71,>L72,>L73,>L74,>L75,>L76,>L77,>L78,>L79,>L80,>L81,>L82,>L83,>L84,>L85,>L86,>L87,>L88,>L89,>L90,>L91,>L92,>L93,>L94,>L95,>L96,>L97,>L98,>L99,>L100,>L101,>L102,>L103,>L104,>L105,>L106,>L107,>L108,>L109,>L110,>L111,>L112,>L113 dta >L0,>L1,>L2,>L3,>L4,>L5,>L6,>L7,>L8,>L9,>L10,>L11,>L12,>L13,>L14,>L15,>L16,>L17,>L18,>L19,>L20,>L21,>L22,>L23,>L24,>L25,>L26,>L27,>L28,>L29,>L30,>L31,>L32,>L33,>L34,>L35,>L36,>L37,>L38,>L39,>L40,>L41,>L42,>L43,>L44,>L45,>L46,>L47,>L48,>L49,>L50,>L51,>L52
OffensiveTextLengths dta >L53,>L54,>L55,>L56,>L57,>L58,>L59,>L60,>L61,>L62,>L63,>L64,>L65,>L66,>L67,>L68,>L69,>L70,>L71,>L72,>L73,>L74,>L75,>L76,>L77,>L78,>L79,>L80,>L81,>L82,>L83,>L84,>L85,>L86,>L87,>L88,>L89,>L90,>L91,>L92,>L93,>L94,>L95,>L96,>L97,>L98,>L99,>L100,>L101,>L102,>L103,>L104,>L105,>L106,>L107,>L108,>L109,>L110,>L111,>L112,>L113
dta 43,4,14,13,7,35,37,12,17,12,7,7,18,17,22,9,33,13,15,42,8,18,30,15,13,16,31,16,10,20,35,22,17,20,29,31,27,24,36,27,29,22,21,29,10,48,17,20,38,15,26,24,22,36,4,6,9,12,5,3,5,6,28,39,6,7,5,17,27,8,8,22,19,7,7,26,32,14,18,33,15,34,8,4,4,4,5,36,18,20,36,29,23,19,17,12,29,7,36,39,41,30,23,48,34,42,25,14,31,4,26,15,23,28 dta >LEND
NumberOfOffensiveTexts=54 NumberOfOffensiveTexts=54
NumberOfDeffensiveTexts=60 NumberOfDeffensiveTexts=60
.endp .endp
Executable → Regular
BIN
View File
Binary file not shown.
Binary file not shown.
-48
View File
@@ -1,48 +0,0 @@
import sys
from string import strip
lineCount = 0
lengths = []
alltexts = []
for line in open("TALK1.txt"):
lineCount+=1
line = strip(line)
lengths.append(len(line))
alltexts.append(line)
off = lineCount
for line in open("TALK2.txt"):
lineCount+=1
line = strip(line)
lengths.append(len(line))
alltexts.append(line)
tmpNo = 0
for line in alltexts:
print ("L"+str(tmpNo)+' dta "'+line+'"')
tmpNo+= 1
l=""
for i in range(0,lineCount):
l+="<L"+str(i)+","
l=l[:-1]
print ("OffensiveTextTableL")
print (" dta "+l)
l=""
for i in range(0,lineCount):
l+=">L"+str(i)+","
l=l[:-1]
print ("OffensiveTextTableH")
print (" dta "+l)
l=""
for i in range(0,lineCount):
l+=str(lengths[i])+","
l=l[:-1]
print ("OffensiveTextLengths")
print (" dta "+l)
deff = lineCount-off
print ("NumberOfOffensiveTexts="+str(off))
print ("NumberOfDeffensiveTexts="+str(deff))
Executable → Regular
View File
+196 -503
View File
@@ -5,18 +5,24 @@
;=================================================================================== ;===================================================================================
;==========================CONSTANT TABLES, do not erase!=========================== ;==========================CONSTANT TABLES, do not erase!===========================
;=================================================================================== ;===================================================================================
TankColoursTable .BYTE $52,$32,$72,$92,$B2,$02 TankColoursTable .BYTE $86,$46,$c6,$28,$c6,$ee
TankStatusColoursTable .BYTE $80,$40,$c4,$20,$c0,$e4
dliColorsBack
:10 .by $02,$00
dliColorsFore
.by $0a
CashOptionL ;(one zero less than on the screen) CashOptionL ;(one zero less than on the screen)
.by 0,<200,<500,<800,<1000 .by 0,<200,<800,<1200,<2000
CashOptionH CashOptionH
.by 0,>200,>500,>800,>1000 .by 0,>200,>800,>1200,>2000
GravityTable .by 10,20,25,30,40 GravityTable .by 10,20,25,30,40
MaxWindTable .by 5,20,40,60,80 MaxWindTable .by 5,20,40,70,99
RoundsTable .by 10,20,30,40,50 RoundsTable .by 10,20,30,40,50
flyDelayTable .by 255,150,75,35,1 flyDelayTable .by 255,150,75,35,1
seppukuTable .by 255, 45,25,15,9 seppukuTable .by 255, 45,25,15,9
mountainsDeltaTableH .by 0,1,3,5,7
mountainsDeltaTableL .by $1f, $7f, $ff, $7f, $ff
;------------------------------------------------ ;------------------------------------------------
LevelNameBeginL ; begins of level names LevelNameBeginL ; begins of level names
.by <NamesOfLevels,<(NamesOfLevels+10),<(NamesOfLevels+20) .by <NamesOfLevels,<(NamesOfLevels+10),<(NamesOfLevels+20)
.by <(NamesOfLevels+32),<(NamesOfLevels+42),<(NamesOfLevels+52) .by <(NamesOfLevels+32),<(NamesOfLevels+42),<(NamesOfLevels+52)
@@ -30,72 +36,42 @@ TanksWeaponsTableL
.by <TanksWeapon1,<TanksWeapon2,<TanksWeapon3,<TanksWeapon4,<TanksWeapon5,<TanksWeapon6 .by <TanksWeapon1,<TanksWeapon2,<TanksWeapon3,<TanksWeapon4,<TanksWeapon5,<TanksWeapon6
TanksWeaponsTableH TanksWeaponsTableH
.by >TanksWeapon1,>TanksWeapon2,>TanksWeapon3,>TanksWeapon4,>TanksWeapon5,>TanksWeapon6 .by >TanksWeapon1,>TanksWeapon2,>TanksWeapon3,>TanksWeapon4,>TanksWeapon5,>TanksWeapon6
;-----4x4 texts-----
;-----4x4 texts-----
LineTop LineTop
dta d"(%%%%%%%%%%%%)" dta d"(%%%%%%%%%%%%)", $ff
.byte $ff
;# - vertical, () * +, % - horizontal ;# - vertical, () * +, % - horizontal
LineBottom LineBottom
dta d"*%%%%%%%%%%%%+" dta d"*%%%%%%%%%%%%+", $ff
.byte $ff
LineEmpty LineEmpty
dta d"# #" dta d"# #", $ff
.byte $ff
LineHeader2 LineHeader2
dta d"# RESULTS #" dta d"# RESULTS #", $ff
.byte $ff
LineGameOver LineGameOver
dta d"# GAME OVER #" dta d"# GAME OVER #", $ff
.byte $ff
seppukuText seppukuText
dta d"# SEPPUKU! #" dta d"# SEPPUKU! #", $ff
.byte $ff areYouSureText
dta d"# SURE? Y/N #", $ff
lineClear lineClear
dta d" " dta d" ", $ff
.byte $ff
;----------- ;-----------
pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background) pmtableL ; addressess of the P/M memory for 6 tanks
.by <(pmgraph+$400) .by <(pmgraph+$400)
.by <(pmgraph+$500) .by <(pmgraph+$500)
.by <(pmgraph+$600) .by <(pmgraph+$600)
.by <(pmgraph+$700) .by <(pmgraph+$700)
.by <(pmgraph+$300) ; this is a missile background .by <(pmgraph+$300) ; this is a missile background
.by <(pmgraph+$300) ; this is a missile background
pmtableH pmtableH
.by >(pmgraph+$400) .by >(pmgraph+$400)
.by >(pmgraph+$500) .by >(pmgraph+$500)
.by >(pmgraph+$600) .by >(pmgraph+$600)
.by >(pmgraph+$700) .by >(pmgraph+$700)
.by >(pmgraph+$300) .by >(pmgraph+$300)
.by >(pmgraph+$300)
;----------- ;-----------
; this table changes Angle to the appropriate tank character
BarrelTableL
.by $02,$02,$02,$02,$02,$02,$02,$02
.by $04,$04,$04,$04,$04,$04,$04,$04
.by $06,$06,$06,$06,$06,$06,$06,$06,$06
.by $08,$08,$08,$08,$08,$08,$08,$08
.by $0a,$0a,$0a,$0a,$0a,$0a,$0a,$0a
.by $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c
.by $0e,$0e,$0e,$0e,$0e,$0e,$0e,$0e
.by $10,$10,$10,$10,$10,$10,$10,$10
.by $12,$12,$12,$12,$12,$12,$12,$12,$12
.by $14,$14,$14,$14,$14,$14,$14,$14
.by $16,$16,$16,$16,$16,$16,$16,$16
BarrelTableR
.by $2c,$2c,$2c,$2c,$2c,$2c,$2c,$2c
.by $2a,$2a,$2a,$2a,$2a,$2a,$2a,$2a
.by $28,$28,$28,$28,$28,$28,$28,$28,$28
.by $26,$26,$26,$26,$26,$26,$26,$26
.by $24,$24,$24,$24,$24,$24,$24,$24
.by $22,$22,$22,$22,$22,$22,$22,$22,$22
.by $20,$20,$20,$20,$20,$20,$20,$20
.by $1e,$1e,$1e,$1e,$1e,$1e,$1e,$1e
.by $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c
.by $1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a
.by $18,$18,$18,$18,$18,$18,$18,$18
sintable sintable
.by 0 .by 0
.by 4 .by 4
@@ -189,99 +165,6 @@ sintable
.by 255 .by 255
.by 255 ;anti self destruction byte .by 255 ;anti self destruction byte
costable
.by 255 ;anti self destruction byte
.by 255
.by 255
.by 255
.by 255
.by 255
.by 254
.by 254
.by 253
.by 252
.by 252
.by 251
.by 250
.by 249
.by 248
.by 247
.by 246
.by 244
.by 243
.by 242
.by 240
.by 238
.by 237
.by 235
.by 233
.by 232
.by 230
.by 228
.by 226
.by 223
.by 221
.by 219
.by 217
.by 214
.by 212
.by 209
.by 207
.by 204
.by 201
.by 198
.by 196
.by 193
.by 190
.by 187
.by 184
.by 181
.by 177
.by 174
.by 171
.by 167
.by 164
.by 161
.by 157
.by 154
.by 150
.by 146
.by 143
.by 139
.by 135
.by 131
.by 128
.by 124
.by 120
.by 116
.by 112
.by 108
.by 104
.by 100
.by 95
.by 91
.by 87
.by 83
.by 79
.by 74
.by 70
.by 66
.by 61
.by 57
.by 53
.by 48
.by 44
.by 40
.by 35
.by 31
.by 26
.by 22
.by 17
.by 13
.by 8
.by 4
.by 0
linetableL linetableL
:screenheight+1 .by <(display+screenBytes*#) :screenheight+1 .by <(display+screenBytes*#)
linetableH linetableH
@@ -303,328 +186,102 @@ disktance ;tanks distance
; this table is for deciding where a tank should slide ; this table is for deciding where a tank should slide
; accordingly to what is below the tank ; accordingly to what is below the tank
; there are 3 bits used here ; values in table mean that tank is moving to the left
; bit 0 - go down SlideLeftTable
; bit 1 - go left .BY %00000001
; bit 2 - go right .BY %00000010
; position in the table equals to bit pattern of soil below tank .BY %00000011
.BY %00000100
.BY %00000101
.BY %00000110
.BY %00000111
.BY %00001100
WhereToSlideTable ;-----------------------------------------------------------
; we have 3 bits, when set: 2 - go left, 1 - go right, 0 - go down ; this table changes Angle to the appropriate tank character
.BY %001 ; 00000000 BarrelTable
.BY %101 ; 00000001
.BY %100 ; 00000010 .by $2C,$2C,$2C,$2C,$2C,$2C,$2C,$2C,$2A,$2A,
.BY %100 ; 00000011 .by $2A,$2A,$2A,$2A,$2A,$2A,$28,$28,$28,$28,
.BY %100 ; 00000100 .by $28,$28,$28,$28,$28,$26,$26,$26,$26,$26,
.BY %100 ; 00000101 .by $26,$26,$26,$24,$24,$24,$24,$24,$24,$24,
.BY %100 ; 00000110 .by $24,$22,$22,$22,$22,$22,$22,$22,$22,$22,
.BY %100 ; 00000111 .by $20,$20,$20,$20,$20,$20,$20,$20,$1E,$1E,
.BY %000 ; 00001000 .by $1E,$1E,$1E,$1E,$1E,$1E,$1C,$1C,$1C,$1C,
.BY %000 ; 00001001 .by $1C,$1C,$1C,$1C,$1C,$1A,$1A,$1A,$1A,$1A,
.BY %000 ; 00001010 .by $1A,$1A,$1A,$18,$18,$18,$18,$18,$18,$18,
.BY %000 ; 00001011 ;.by $18,
.BY %100 ; 00001100
.BY %000 ; 00001101 .by $16,$16,$16,$16,$16,$16,$16,$16,$14,$14,
.BY %000 ; 00001110 .by $14,$14,$14,$14,$14,$14,$12,$12,$12,$12,
.BY %000 ; 00001111 .by $12,$12,$12,$12,$12,$10,$10,$10,$10,$10,
.BY %000 ; 00010000 .by $10,$10,$10,$0E,$0E,$0E,$0E,$0E,$0E,$0E,
.BY %000 ; 00010001 .by $0E,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,
.BY %000 ; 00010010 .by $0A,$0A,$0A,$0A,$0A,$0A,$0A,$0A,$08,$08,
.BY %000 ; 00010011 .by $08,$08,$08,$08,$08,$08,$06,$06,$06,$06,
.BY %000 ; 00010100 .by $06,$06,$06,$06,$06,$04,$04,$04,$04,$04,
.BY %000 ; 00010101 .by $04,$04,$04,$02,$02,$02,$02,$02,$02,$02,
.BY %000 ; 00010110 .by $02,
.BY %000 ; 00010111
.BY %000 ; 00011000
.BY %000 ; 00011001
.BY %000 ; 00011010
.BY %000 ; 00011011
.BY %000 ; 00011100
.BY %000 ; 00011101
.BY %000 ; 00011110
.BY %000 ; 00011111
.BY %010 ; 00100000
.BY %000 ; 00100001
.BY %000 ; 00100010
.BY %000 ; 00100011
.BY %000 ; 00100100
.BY %000 ; 00100101
.BY %000 ; 00100110
.BY %000 ; 00100111
.BY %000 ; 00101000
.BY %000 ; 00101001
.BY %000 ; 00101010
.BY %000 ; 00101011
.BY %000 ; 00101100
.BY %000 ; 00101101
.BY %000 ; 00101110
.BY %000 ; 00101111
.BY %010 ; 00110000
.BY %000 ; 00110001
.BY %000 ; 00110010
.BY %000 ; 00110011
.BY %000 ; 00110100
.BY %000 ; 00110101
.BY %000 ; 00110110
.BY %000 ; 00110111
.BY %000 ; 00111000
.BY %000 ; 00111001
.BY %000 ; 00111010
.BY %000 ; 00111011
.BY %000 ; 00111100
.BY %000 ; 00111101
.BY %000 ; 00111110
.BY %000 ; 00111111
.BY %010 ; 01000000
.BY %000 ; 01000001
.BY %000 ; 01000010
.BY %000 ; 01000011
.BY %000 ; 01000100
.BY %000 ; 01000101
.BY %000 ; 01000110
.BY %000 ; 01000111
.BY %000 ; 01001000
.BY %000 ; 01001001
.BY %000 ; 01001010
.BY %000 ; 01001011
.BY %000 ; 01001100
.BY %000 ; 01001101
.BY %000 ; 01001110
.BY %000 ; 01001111
.BY %000 ; 01010000
.BY %000 ; 01010001
.BY %000 ; 01010010
.BY %000 ; 01010011
.BY %000 ; 01010100
.BY %000 ; 01010101
.BY %000 ; 01010110
.BY %000 ; 01010111
.BY %000 ; 01011000
.BY %000 ; 01011001
.BY %000 ; 01011010
.BY %000 ; 01011011
.BY %000 ; 01011100
.BY %000 ; 01011101
.BY %000 ; 01011110
.BY %000 ; 01011111
.BY %010 ; 01100000
.BY %000 ; 01100001
.BY %000 ; 01100010
.BY %000 ; 01100011
.BY %000 ; 01100100
.BY %000 ; 01100101
.BY %000 ; 01100110
.BY %000 ; 01100111
.BY %000 ; 01101000
.BY %000 ; 01101001
.BY %000 ; 01101010
.BY %000 ; 01101011
.BY %000 ; 01101100
.BY %000 ; 01101101
.BY %000 ; 01101110
.BY %000 ; 01101111
.BY %000 ; 01110000
.BY %000 ; 01110001
.BY %000 ; 01110010
.BY %000 ; 01110011
.BY %000 ; 01110100
.BY %000 ; 01110101
.BY %000 ; 01110110
.BY %000 ; 01110111
.BY %000 ; 01111000
.BY %000 ; 01111001
.BY %000 ; 01111010
.BY %000 ; 01111011
.BY %000 ; 01111100
.BY %000 ; 01111101
.BY %000 ; 01111110
.BY %000 ; 01111111
.BY %011 ; 10000000
.BY %000 ; 10000001
.BY %000 ; 10000010
.BY %000 ; 10000011
.BY %000 ; 10000100
.BY %000 ; 10000101
.BY %000 ; 10000110
.BY %000 ; 10000111
.BY %000 ; 10001000
.BY %000 ; 10001001
.BY %000 ; 10001010
.BY %000 ; 10001011
.BY %000 ; 10001100
.BY %000 ; 10001101
.BY %000 ; 10001110
.BY %000 ; 10001111
.BY %000 ; 10010000
.BY %000 ; 10010001
.BY %000 ; 10010010
.BY %000 ; 10010011
.BY %000 ; 10010100
.BY %000 ; 10010101
.BY %000 ; 10010110
.BY %000 ; 10010111
.BY %000 ; 10011000
.BY %000 ; 10011001
.BY %000 ; 10011010
.BY %000 ; 10011011
.BY %000 ; 10011100
.BY %000 ; 10011101
.BY %000 ; 10011110
.BY %000 ; 10011111
.BY %010 ; 10100000
.BY %000 ; 10100001
.BY %000 ; 10100010
.BY %000 ; 10100011
.BY %000 ; 10100100
.BY %000 ; 10100101
.BY %000 ; 10100110
.BY %000 ; 10100111
.BY %000 ; 10101000
.BY %000 ; 10101001
.BY %000 ; 10101010
.BY %000 ; 10101011
.BY %000 ; 10101100
.BY %000 ; 10101101
.BY %000 ; 10101110
.BY %000 ; 10101111
.BY %000 ; 10110000
.BY %000 ; 10110001
.BY %000 ; 10110010
.BY %000 ; 10110011
.BY %000 ; 10110100
.BY %000 ; 10110101
.BY %000 ; 10110110
.BY %000 ; 10110111
.BY %000 ; 10111000
.BY %000 ; 10111001
.BY %000 ; 10111010
.BY %000 ; 10111011
.BY %000 ; 10111100
.BY %000 ; 10111101
.BY %000 ; 10111110
.BY %000 ; 10111111
.BY %010 ; 11000000
.BY %000 ; 11000001
.BY %000 ; 11000010
.BY %000 ; 11000011
.BY %000 ; 11000100
.BY %000 ; 11000101
.BY %000 ; 11000110
.BY %000 ; 11000111
.BY %000 ; 11001000
.BY %000 ; 11001001
.BY %000 ; 11001010
.BY %000 ; 11001011
.BY %000 ; 11001100
.BY %000 ; 11001101
.BY %000 ; 11001110
.BY %000 ; 11001111
.BY %000 ; 11010000
.BY %000 ; 11010001
.BY %000 ; 11010010
.BY %000 ; 11010011
.BY %000 ; 11010100
.BY %000 ; 11010101
.BY %000 ; 11010110
.BY %000 ; 11010111
.BY %000 ; 11011000
.BY %000 ; 11011001
.BY %000 ; 11011010
.BY %000 ; 11011011
.BY %000 ; 11011100
.BY %000 ; 11011101
.BY %000 ; 11011110
.BY %000 ; 11011111
.BY %010 ; 11100000
.BY %000 ; 11100001
.BY %000 ; 11100010
.BY %000 ; 11100011
.BY %000 ; 11100100
.BY %000 ; 11100101
.BY %000 ; 11100110
.BY %000 ; 11100111
.BY %000 ; 11101000
.BY %000 ; 11101001
.BY %000 ; 11101010
.BY %000 ; 11101011
.BY %000 ; 11101100
.BY %000 ; 11101101
.BY %000 ; 11101110
.BY %000 ; 11101111
.BY %000 ; 11110000
.BY %000 ; 11110001
.BY %000 ; 11110010
.BY %000 ; 11110011
.BY %000 ; 11110100
.BY %000 ; 11110101
.BY %000 ; 11110110
.BY %000 ; 11110111
.BY %000 ; 11111000
.BY %000 ; 11111001
.BY %000 ; 11111010
.BY %000 ; 11111011
.BY %000 ; 11111100
.BY %000 ; 11111101
.BY %000 ; 11111110
.BY %000 ; 11111111
EndOfTheBarrelX EndOfTheBarrelX
.by 4,4,4,4,4,4,4,4,4,4,4 ; right angles from 0 (horizontally right) to 90 (up)
.by 5,5,5,5,5,5,5,5,5,5
.by 6,6,6,6,6,6,6,6,6
.by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7,7,7,7,7,7
.by 0,0,0,0,0,0,0,0,0,0 .by 7,7,7,7,7,7,7,7,7,7,
.by 0,0,0,0,0,0,0,0,0,0 .by 7,7,7,7,7,7,7,7,7,7,
.by 0,0,0,0,0,0,0,0,0,0 .by 7,7,7,7,7,7,7,7,7,7,
.by 0,0,0,0,0,0,0,0,0,0 .by 7,7,7,7,7,7,7,7,7,7,
.by 0,0,0,0,0,0,0,0,0,0 .by 7,7,7,7,7,7,7,7,7,7,
.by 0,0,0,0,0,0,0,0,0,0 .by 7,7,7,7,7,7,7,7,7,7,
.by 0,0,0,0,0,0,0,0,0,0 .by 7,6,6,6,6,6,6,6,6,6,
.by 0,0,0,0 .by 5,5,5,5,5,5,5,5,5,5,
.by 4,4,4,4,4,4,4,4,4,4,
;.by 4,
.by 0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; left angles from 90 (vertical) to 180 (horizontally left)
.by 0,0,0,0,0,0,0,0,0,0,0,0,0 .by 3,3,3,3,3,3,3,3,3,3,
.by 0,0,0,0,0,0,0,0,0,0 .by 3,2,2,2,2,2,2,2,2,2,
.by 0,0,0,0,0,0,0,0,0 .by 2,1,1,1,1,1,1,1,1,1,
.by 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 .by 0,0,0,0,0,0,0,0,0,0,
.by 1,1,1,1,1,1,1,1,1 .by 0,0,0,0,0,0,0,0,0,0,
.by 2,2,2,2,2,2,2,2,2,2 .by 0,0,0,0,0,0,0,0,0,0,
.by 3,3,3,3,3,3,3,3,3,3,3 .by 0,0,0,0,0,0,0,0,0,0,
.by 0,0,0,0,0,0,0,0,0,0,
.by 0,0,0,0,0,0,0,0,0,0,
.by 0
EndOfTheBarrelY EndOfTheBarrelY
.by 7,7,7,7,7,7,7,7,7,7,7 ; right angles from 0 (horizontally right) to 90 (up)
.by 7,7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7 ; one pixel Up for fix problems with colision check
.by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 ;.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3
.by 6,6,6,6,6,6,6,6,6 .by 4,4,4,4,4,4,4,4,4,4,
.by 5,5,5,5,5,5,5,5,5,5 .by 4,4,4,4,4,4,4,4,4,4,
.by 4,4,4,4,4,4,4,4,4,4,4,4,4 .by 4,4,4,4,4,4,4,5,5,5,
.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3 .by 5,5,5,5,5,5,5,6,6,6,
.by 6,6,6,6,6,6,7,7,7,7,
.by 7,7,7,7,7,7,7,7,7,7,
.by 7,7,7,7,7,7,7,7,7,7,
.by 7,7,7,7,7,7,7,7,7,7,
.by 7,7,7,7,7,7,7,7,7,7,
;.by 7,
; left angles from 90 (vertical) to 180 (horizontally left)
.by 7,7,7,7,7,7,7,7,7,7,
.by 7,7,7,7,7,7,7,7,7,7,
.by 7,7,7,7,7,7,7,7,7,7,
.by 7,7,7,7,7,7,7,7,7,7,
.by 7,7,7,7,7,6,6,6,6,6,
.by 6,6,6,6,5,5,5,5,5,5,
.by 5,5,5,5,4,4,4,4,4,4,
.by 4,4,4,4,4,4,4,4,4,4,
.by 4,4,4,4,4,4,4,4,4,4,
.by 4,
; one pixel Up for fix problems with colision check
;.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0
.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3
.by 4,4,4,4,4,4,4,4,4,4,4,4,4
.by 5,5,5,5,5,5,5,5,5,5
.by 6,6,6,6,6,6,6,6,6
.by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7,7
.by 7,7,7,7,7,7,7,7,7,7,7
;------------------------------------------------- ;-------------------------------------------------
TanksNamesDefault TanksNamesDefault
dta d"1st.Tank" dta d"1st.Tank"
dta d"2nd.Tank" dta d"2nd.Tank"
@@ -633,7 +290,6 @@ TanksNamesDefault
dta d"5th.Tank" dta d"5th.Tank"
dta d"6th.Tank" dta d"6th.Tank"
WeaponPriceH ; weapons prices (tables with prices of weapons) WeaponPriceH ; weapons prices (tables with prices of weapons)
.by >price_Baby_Missile___ .by >price_Baby_Missile___
.by >price_Missile________ .by >price_Missile________
@@ -683,22 +339,22 @@ WeaponPriceH ; weapons prices (tables with prices of weapons)
.by >price______________45 .by >price______________45
.by >price______________46 .by >price______________46
.by >price______________47 .by >price______________47
.by >price_Heat_Guidance__ .by >price_White_Flag_____
.by >price_Battery________
.by >price_Bal_Guidance___ .by >price_Bal_Guidance___
.by >price_Horz_Guidance__ .by >price_Horz_Guidance__
.by >price_Vert_Guidance__ .by >price_Vert_Guidance__
.by >price_Lazy_Boy_______ .by >price_Lazy_Boy_______
.by >price_Parachute______ .by >price_Parachute______
.by >price_Battery________ .by >price_StrongParachute
.by >price_Mag_Deflector__ .by >price_Mag_Deflector__
.by >price_Shield_________ .by >price_Shield_________
.by >price_Force_Shield___
.by >price_Heavy_Shield___ .by >price_Heavy_Shield___
.by >price_Force_Shield___
.by >price_Super_Mag______ .by >price_Super_Mag______
.by >price_Auto_Defense___ .by >price_Auto_Defense___
.by >price_Fuel_Tank______ .by >price_Fuel_Tank______
.by >price_Contact_Trigger .by >price_Nuclear_Winter_
.by >price______________63
WeaponPriceL WeaponPriceL
.by <price_Baby_Missile___ .by <price_Baby_Missile___
@@ -749,22 +405,22 @@ WeaponPriceL
.by <price______________45 .by <price______________45
.by <price______________46 .by <price______________46
.by <price______________47 .by <price______________47
.by <price_Heat_Guidance__ .by <price_White_Flag_____
.by <price_Battery________
.by <price_Bal_Guidance___ .by <price_Bal_Guidance___
.by <price_Horz_Guidance__ .by <price_Horz_Guidance__
.by <price_Vert_Guidance__ .by <price_Vert_Guidance__
.by <price_Lazy_Boy_______ .by <price_Lazy_Boy_______
.by <price_Parachute______ .by <price_Parachute______
.by <price_Battery________ .by <price_StrongParachute
.by <price_Mag_Deflector__ .by <price_Mag_Deflector__
.by <price_Shield_________ .by <price_Shield_________
.by <price_Force_Shield___
.by <price_Heavy_Shield___ .by <price_Heavy_Shield___
.by <price_Force_Shield___
.by <price_Super_Mag______ .by <price_Super_Mag______
.by <price_Auto_Defense___ .by <price_Auto_Defense___
.by <price_Fuel_Tank______ .by <price_Fuel_Tank______
.by <price_Contact_Trigger .by <price_Nuclear_Winter_
.by <price______________63
;------------------------------------------------- ;-------------------------------------------------
; how many units (bulletd) of a given weapon we get for a given price ; how many units (bulletd) of a given weapon we get for a given price
@@ -775,18 +431,18 @@ WeaponPriceL
WeaponUnits WeaponUnits
.by 10 ;Baby_Missile___ .by 10 ;Baby_Missile___
.by 5 ;Missile________ .by 5 ;Missile________
.by 3 ;Baby_Nuke______ .by 2 ;Baby_Nuke______
.by 1 ;Nuke___________ .by 1 ;Nuke___________
.by 2 ;LeapFrog_______ .by 2 ;LeapFrog_______
.by 2 ;Funky_Bomb_____ .by 3 ;Funky_Bomb_____
.by 3 ;MIRV___________ .by 2 ;MIRV___________
.by 1 ;Death_s_Head___ .by 1 ;Death_s_Head___
.by 10 ;Napalm_________ .by 4 ;Napalm_________
.by 2 ;Hot_Napalm_____ .by 2 ;Hot_Napalm_____
.by 20 ;Tracer_________ .by 20 ;Tracer_________
.by 10 ;Smoke_Tracer___ .by 10 ;Smoke_Tracer___
.by 10 ;Baby_Roller____ .by 5 ;Baby_Roller____
.by 5 ;Roller_________ .by 3 ;Roller_________
.by 2 ;Heavy_Roller___ .by 2 ;Heavy_Roller___
.by 5 ;Riot_Charge____ .by 5 ;Riot_Charge____
.by 2 ;Riot_Blast_____ .by 2 ;Riot_Blast_____
@@ -798,9 +454,9 @@ WeaponUnits
.by 10 ;Baby_Sandhog___ .by 10 ;Baby_Sandhog___
.by 5 ;Sandhog________ .by 5 ;Sandhog________
.by 2 ;Heavy_Sandhog__ .by 2 ;Heavy_Sandhog__
.by 10 ;Dirt_Clod______ .by 5 ;Dirt_Clod______
.by 5 ;Dirt_Ball______ .by 3 ;Dirt_Ball______
.by 2 ;Ton_of_Dirt____ .by 1 ;Ton_of_Dirt____
.by 4 ;Liquid_Dirt____ .by 4 ;Liquid_Dirt____
.by 2 ;Dirt_Charge____ .by 2 ;Dirt_Charge____
.by 10 ;Earth_Disrupter .by 10 ;Earth_Disrupter
@@ -821,22 +477,22 @@ WeaponUnits
.by 0 ;_____________45 .by 0 ;_____________45
.by 0 ;_____________46 .by 0 ;_____________46
.by 0 ;_____________47 .by 0 ;_____________47
.by 6 ;Heat_Guidance__ .by 1 ;White_Flag___48
.by 3 ;Battery________
.by 2 ;Bal_Guidance___ .by 2 ;Bal_Guidance___
.by 5 ;Horz_Guidance__ .by 5 ;Horz_Guidance__
.by 5 ;Vert_Guidance__ .by 5 ;Vert_Guidance__
.by 2 ;Lazy_Boy_______ .by 2 ;Lazy_Boy_______
.by 8 ;Parachute______ .by 3 ;Parachute______
.by 10 ;Battery________ .by 2 ;StrongParachute
.by 2 ;Mag_Deflector__ .by 2 ;Mag_Deflector__
.by 3 ;Shield_________ .by 3 ;Shield_________
.by 3 ;Force_Shield___
.by 2 ;Heavy_Shield___ .by 2 ;Heavy_Shield___
.by 3 ;Force_Shield___
.by 2 ;Super_Mag______ .by 2 ;Super_Mag______
.by 1 ;Auto_Defense___ .by 1 ;Auto_Defense___
.by 10 ;Fuel_Tank______ .by 10 ;Fuel_Tank______
.by 25 ;Contact_Trigger .by 1 ;Nuclear_Winter_
.by 0 ;_____________63
PurchaseMeTable ;weapons good to be purchased by the robot PurchaseMeTable ;weapons good to be purchased by the robot
;the comment is an index in the tables ;the comment is an index in the tables
@@ -848,8 +504,8 @@ PurchaseMeTable ;weapons good to be purchased by the robot
dta 1 ;"Funky Bomb " ; 5 dta 1 ;"Funky Bomb " ; 5
dta 1 ;"MIRV " ; 6 dta 1 ;"MIRV " ; 6
dta 1 ;"Death's Head " ; 7 dta 1 ;"Death's Head " ; 7
dta 0 ;"Napalm " ; 8 dta 1 ;"Napalm " ; 8
dta 0 ;"Hot Napalm " ; 9 dta 1 ;"Hot Napalm " ; 9
dta 0 ;"Tracer " ; 10 dta 0 ;"Tracer " ; 10
dta 0 ;"Smoke Tracer " ; 11 dta 0 ;"Smoke Tracer " ; 11
dta 1 ;"Baby Roller " ; 12 dta 1 ;"Baby Roller " ; 12
@@ -888,6 +544,22 @@ PurchaseMeTable ;weapons good to be purchased by the robot
dta 0 ;"----------------" ; 45 dta 0 ;"----------------" ; 45
dta 0 ;"----------------" ; 46 dta 0 ;"----------------" ; 46
dta 0 ;"----------------" ; 47 dta 0 ;"----------------" ; 47
dta 0 ;"White Flag " ; 48
dta 1 ;"Battery " ; 49
dta 0 ;"Bal Guidance " ; 50
dta 0 ;"Horz Guidance " ; 51
dta 0 ;"Vert Guidance " ; 52
dta 0 ;"Lazy Boy " ; 53
dta 1 ;"Parachute " ; 54
dta 1 ;"Strong Parachute" ; 55
dta 1 ;"Mag Deflector " ; 56
dta 1 ;"Shield " ; 57
dta 1 ;"Heavy Shield " ; 58
dta 1 ;"Force Shield " ; 59
dta 0 ;"Super Mag " ; 60
dta 1 ;"Auto Defense " ; 61
dta 0 ;"Fuel Tank " ; 62
dta 0 ;"Nuclear Winter " ; 63
;------------------------------------------------- ;-------------------------------------------------
@@ -899,8 +571,8 @@ WeaponSymbols
.by $58,$59,$5a,$5b,$60,$7b,$7c,$7d .by $58,$59,$5a,$5b,$60,$7b,$7c,$7d
.by $20,$00,$00,$00,$00,$00,$00,$00 .by $20,$00,$00,$00,$00,$00,$00,$00
.by $00,$00,$00,$00,$00,$00,$00,$00 .by $00,$00,$00,$00,$00,$00,$00,$00
.by $02,$03,$06,$1d,$0a,$1b,$1c,$1e .by $5f,$1c,$03,$06,$1d,$0a,$1b,$1b ; defensives
.by $3b,$3c,$3d,$3e,$3f,$5e,$5f,$00 .by $1e,$3b,$3d,$3c,$3e,$3f,$5e,$7d
; Names of weapons (16 chars long) ; Names of weapons (16 chars long)
NamesOfWeapons ;the comment is an index in the tables NamesOfWeapons ;the comment is an index in the tables
@@ -951,26 +623,44 @@ NamesOfWeapons ;the comment is an index in the tables
dta d"----------------" ; 44 dta d"----------------" ; 44
dta d"----------------" ; 45 dta d"----------------" ; 45
dta d"----------------" ; 46 dta d"----------------" ; 46
dta d"----------------" ; 47 dta d" " ; 47 ; special (no weapon) name to simplify display
dta d"Heat Guidance " ; 48 ($30) dta d"White Flag " ; 48 ($30)
dta d"Bal Guidance " ; 49 dta d"Battery " ; 49
dta d"Horz Guidance " ; 50 dta d"Bal Guidance " ; 50
dta d"Vert Guidance " ; 51 dta d"Horz Guidance " ; 51
dta d"Lazy Boy " ; 52 dta d"Vert Guidance " ; 52
dta d"Parachute " ; 53 dta d"Lazy Boy " ; 53
dta d"Battery " ; 54 dta d"Parachute " ; 54 - no energy
dta d"Mag Deflector " ; 55 dta d"Strong Parachute" ; 55 - with energy (earlier Battery)
dta d"Shield " ; 56 dta d"Mag Deflector " ; 56 - with shield and energy
dta d"Force Shield " ; 57 dta d"Shield " ; 57 - shield for one shot - no energy
dta d"Heavy Shield " ; 58 dta d"Heavy Shield " ; 58 - shield with energy
dta d"Super Mag " ; 59 dta d"Force Shield " ; 59 - shield with energy and parachute
dta d"Auto Defense " ; 60 dta d"Super Mag " ; 60
dta d"Fuel Tank " ; 61 dta d"Auto Defense " ; 61 - with shield and energy
dta d"Contact Trigger " ; 62 dta d"Fuel Tank " ; 62
dta d"----------------" ; 63 dta d"Nuclear Winter " ; 63
DefensiveEnergy = * - 48
.by 00 ; White Flag
.by 00 ; Heat Guidance
.by 00 ; Bal Guidance
.by 00 ; Horz Guidance
.by 00 ; Vert Guidance
.by 00 ; Lazy Boy
.by 00 ; Parachute
.by 99 ; Strong Parachute
.by 99 ; Mag Deflector
.by 00 ; Shield
.by 99 ; Heavy Shield
.by 99 ; Force Shield
.by 00 ; Super Mag
.by 99 ; Auto Defense
.by 00 ; Fuel Tank
.by 00 ; Nuclear Winter
weaponsOfDeath weaponsOfDeath
dta 0,1,2,3,7,8,9,15,16,17,18,19,20,21,22,23,24,25,26,27 dta 1,2,3,7,17,18,19,20,21,22,23,24,25,26,27
weaponsOfDeathEnd
joyToKeyTable joyToKeyTable
; .by 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15 ; .by 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15
.by $ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$ff,$ff,$ff,$06,$ff,$0f,$0e,$ff .by $ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$ff,$ff,$ff,$06,$ff,$0f,$0e,$ff
@@ -989,7 +679,10 @@ scrcodes
dta d"qrstuvwx" dta d"qrstuvwx"
dta d"yz123456" dta d"yz123456"
dta d"7890." ; "-" dta d"7890." ; "-"
dliColors ;-----------------------------------
:10 .by $02,$00 gameOverSpritesTop
; end of the Gover sprites by number of players
; 1 2 3 4 5 6
.by 130,130,136,142,148,154
.endif .endif
+142 -64
View File
@@ -3,12 +3,16 @@
screenheight = 200 screenheight = 200
screenBytes = 40 screenBytes = 40
screenwidth = screenBytes*8 ; Max screenwidth = 512!!! screenwidth = screenBytes*8 ; Max screenwidth = 512!!!
margin = 48 ;mountain drawing Y variable margin margin = 40 ;mountain drawing Y variable margin
display = $1010 ;screen takes $2K due to clearing routine display = $1010 ;screen takes $2K due to clearing routine
MaxPlayers = 6 MaxPlayers = 6
maxOptions = 7 ;number of all options maxOptions = 8 ;number of all options
PMOffset = $23 ; P/M to graphics offset PMOffsetX = $2C ; P/M to graphics offset
PMOffsetY = $23 ; P/M to graphics offset
napalmRadius = 10
TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor
TextForegroundColor = $0c
;Weapon prices (*10 on screen) ;Weapon prices (*10 on screen)
price_Baby_Missile___ = 0 ;_0 price_Baby_Missile___ = 0 ;_0
@@ -19,31 +23,31 @@ price_LeapFrog_______ = 192 ;_4
price_Funky_Bomb_____ = 293 ;_5 price_Funky_Bomb_____ = 293 ;_5
price_MIRV___________ = 456 ;_6 price_MIRV___________ = 456 ;_6
price_Death_s_Head___ = 337 ;_7 price_Death_s_Head___ = 337 ;_7
price_Napalm_________ = $ffff ;496 ;_8 price_Napalm_________ = 125 ;_8
price_Hot_Napalm_____ = $ffff ;511 ;_9 price_Hot_Napalm_____ = 162 ;_9
price_Tracer_________ = 102 ;_10 price_Tracer_________ = 102 ;_10
price_Smoke_Tracer___ = 291 ;_11 price_Smoke_Tracer___ = 291 ;_11
price_Baby_Roller____ = 689 ;_12 price_Baby_Roller____ = 211 ;_12
price_Roller_________ = 600 ;_13 price_Roller_________ = 244 ;_13
price_Heavy_Roller___ = 592 ;_14 price_Heavy_Roller___ = 326 ;_14
price_Riot_Charge____ = 330 ;_15 price_Riot_Charge____ = 230 ;_15
price_Riot_Blast_____ = 341 ;_16 price_Riot_Blast_____ = 241 ;_16
price_Riot_Bomb______ = 369 ;_17 price_Riot_Bomb______ = 259 ;_17
price_Heavy_Riot_Bomb = 322 ;_18 price_Heavy_Riot_Bomb = 272 ;_18
price_Baby_Digger____ = 336 ;_19 price_Baby_Digger____ = 136 ;_19
price_Digger_________ = 276 ;_20 price_Digger_________ = 176 ;_20
price_Heavy_Digger___ = 253 ;_21 price_Heavy_Digger___ = 207 ;_21
price_Baby_Sandhog___ = 218 ;_22 price_Baby_Sandhog___ = 158 ;_22
price_Sandhog________ = 191 ;_23 price_Sandhog________ = 191 ;_23
price_Heavy_Sandhog__ = 305 ;_24 price_Heavy_Sandhog__ = 223 ;_24
price_Dirt_Clod______ = 104 ;_25 price_Dirt_Clod______ = 104 ;_25
price_Dirt_Ball______ = 130 ;_26 price_Dirt_Ball______ = 130 ;_26
price_Ton_of_Dirt____ = 171 ;_27 price_Ton_of_Dirt____ = 171 ;_27
price_Liquid_Dirt____ = 530 ;_28 price_Liquid_Dirt____ = 330 ;_28
price_Dirt_Charge____ = 581 ;_29 price_Dirt_Charge____ = 343 ;_29
price_Earth_Disrupter = $ffff ;430 ;_30 price_Earth_Disrupter = $ffff ;430 ;_30
price_Plasma_Blast___ = $ffff ;274 ;_31 price_Plasma_Blast___ = $ffff ;274 ;_31
price_Laser__________ = 577 ;_32 price_Laser__________ = 277 ;_32
price______________33 = 0 price______________33 = 0
price______________34 = 0 price______________34 = 0
price______________35 = 0 price______________35 = 0
@@ -59,50 +63,124 @@ price______________44 = 0
price______________45 = 0 price______________45 = 0
price______________46 = 0 price______________46 = 0
price______________47 = 0 price______________47 = 0
price_Heat_Guidance__ = $ffff ;_48_($30) price_White_Flag_____ = $0 ;_48_($30)
price_Bal_Guidance___ = $ffff ;_49 price_Battery________ = 300 ;_49
price_Horz_Guidance__ = $ffff ;_50 price_Bal_Guidance___ = $ffff ;_50
price_Vert_Guidance__ = $ffff ;_51 price_Horz_Guidance__ = $ffff ;_51
price_Lazy_Boy_______ = $ffff ;_52 price_Vert_Guidance__ = $ffff ;_52
price_Parachute______ = 1100 ;_53 price_Lazy_Boy_______ = $ffff ;_53
price_Battery________ = $ffff ;_54 price_Parachute______ = 234 ;_54
price_Mag_Deflector__ = $ffff ;_55 price_StrongParachute = 1000 ;_55
price_Shield_________ = $ffff ;_56 price_Mag_Deflector__ = 745 ;_56
price_Force_Shield___ = $ffff ;_57 price_Shield_________ = 224 ;_57
price_Heavy_Shield___ = $ffff ;_58 price_Heavy_Shield___ = 628 ;_58
price_Super_Mag______ = $ffff ;_59 price_Force_Shield___ = 1100 ;_59
price_Auto_Defense___ = $ffff ;_60 price_Super_Mag______ = $ffff ;_60
price_Fuel_Tank______ = $ffff ;_61 price_Auto_Defense___ = 512 ;_61
price_Contact_Trigger = $ffff ;_62 price_Fuel_Tank______ = $ffff ;_62
price______________63 = $ffff price_Nuclear_Winter_ = 1000 ;_63
;Weapon indexes (numbers)
ind_Baby_Missile___ = 0
ind_Missile________ = 1
ind_Baby_Nuke______ = 2
ind_Nuke___________ = 3
ind_LeapFrog_______ = 4
ind_Funky_Bomb_____ = 5
ind_MIRV___________ = 6
ind_Death_s_Head___ = 7
ind_Napalm_________ = 8
ind_Hot_Napalm_____ = 9
ind_Tracer_________ = 10
ind_Smoke_Tracer___ = 11
ind_Baby_Roller____ = 12
ind_Roller_________ = 13
ind_Heavy_Roller___ = 14
ind_Riot_Charge____ = 15
ind_Riot_Blast_____ = 16
ind_Riot_Bomb______ = 17
ind_Heavy_Riot_Bomb = 18
ind_Baby_Digger____ = 19
ind_Digger_________ = 20
ind_Heavy_Digger___ = 21
ind_Baby_Sandhog___ = 22
ind_Sandhog________ = 23
ind_Heavy_Sandhog__ = 24
ind_Dirt_Clod______ = 25
ind_Dirt_Ball______ = 26
ind_Ton_of_Dirt____ = 27
ind_Liquid_Dirt____ = 28
ind_Dirt_Charge____ = 29
ind_Earth_Disrupter = 30
ind_Plasma_Blast___ = 31
ind_Laser__________ = 32
ind______________33 = 0
ind______________34 = 0
ind______________35 = 0
ind______________36 = 0
ind______________37 = 0
ind______________38 = 0
ind______________39 = 0
ind______________40 = 0
ind______________41 = 0
ind______________42 = 0
ind______________43 = 0
ind______________44 = 0
ind______________45 = 0
ind______________46 = 0
ind______________47 = 0
ind_White_Flag_____ = 48
ind_Battery________ = 49
ind_Bal_Guidance___ = 50
ind_Horz_Guidance__ = 51
ind_Vert_Guidance__ = 52
ind_Lazy_Boy_______ = 53
ind_Parachute______ = 54
ind_StrongParachute = 55
ind_Mag_Deflector__ = 56
ind_Shield_________ = 57
ind_Heavy_Shield___ = 58
ind_Force_Shield___ = 59
ind_Super_Mag______ = 60
ind_Auto_Defense___ = 61
ind_Fuel_Tank______ = 62
ind_Nuclear_Winter_ = 63
;-------------------------------- ;--------------------------------
; names of RMT instruments (sfx) ; names of RMT instruments (sfx)
;-------------------------------- ;--------------------------------
sfx_set_power_1 = $00 sfx_set_power_1 = $00 ;A
sfx_set_power_2 = $01 sfx_set_power_2 = $01 ;b
sfx_lightning = $02 sfx_lightning = $02 ;c
sfx_dunno = $03 sfx_dunno = $03 ;d
sfx_nuke = $04 sfx_nuke = $04 ;e
sfx_baby_missile= $05 sfx_baby_missile= $05 ;f
sfx_death_begin = $06 sfx_death_begin = $06 ;g
sfx_plasma_1_2 = $07 sfx_plasma_1_2 = $07 ;h
sfx_plasma_2_2 = $08 sfx_plasma_2_2 = $08 ;i
sfx_napalm = $09 sfx_napalm = $09 ;j
sfx_dirt_charge = $0a sfx_dirt_charge = $0a ;k
sfx_missile_hit = $0b sfx_missile_hit = $0b ;l
sfx_funky_hit = $0c sfx_funky_hit = $0c ;m
sfx_shield_on = $0d sfx_shield_on = $0d ;n
sfx_shield_off = $0e sfx_shield_off = $0e ;o
sfx_parachute = $0f sfx_parachute = $0f ;p
sfx_smoke_cloud = $10 sfx_smoke_cloud = $10 ;q
sfx_riot_blast = $11 sfx_riot_blast = $11 ;r
sfx_sandhog = $12 sfx_sandhog = $12 ;s
sfx_dirt_chrg_s = $13 sfx_dirt_chrg_s = $13 ;t
sfx_digger = $14 sfx_digger = $14 ;u
sfx_silencer = $15 sfx_silencer = $15 ;v
sfx_next_player = $16 sfx_next_player = $16 ;w
sfx_purchase = $17 sfx_purchase = $17 ;x
sfx_keyclick = $18 sfx_keyclick = $18 ;y
sfx_shoot = $19 sfx_shoot = $19 ;z
sfx_seppuku = $1a sfx_seppuku = $1a ;1
sfx_liquid_dirt = $1b sfx_liquid_dirt = $1b ;2
sfx_battery = $1c ;3
sfx_white_flag = $1d ;4
;--------------------------------
; RMT songs (lines)
;--------------------------------
song_silencio = $00
song_end_round = $02
song_ingame = $06
song_game_over = $0b
Executable → Regular
+19 -12
View File
@@ -40,8 +40,8 @@ NameDL
.byte $42 .byte $42
.word NameScreen .word NameScreen
.byte $30 .byte $30
.byte $02,$30,$2 .byte $02,$30+$80,$02
.byte $10,2,2,2,$30,2,2 .byte $10,$02,$02,$02,$30,$02,$02
.byte $41 .byte $41
.word NameDL .word NameDL
; ------------------------------------------------- ; -------------------------------------------------
@@ -89,7 +89,7 @@ dl ; MAIN game display list
.by $0f+$80 ; DLI (black to end);1 .by $0f+$80 ; DLI (black to end);1
:38 .byte $0f ;35 ..... = 200 :38 .byte $0f ;35 ..... = 200
.by $4f .by $4f
.wo LastLine ; additional line of ground .wo EmptyLine ; additional line of ground
.byte $41 .byte $41
.word dl .word dl
;----------------------------------------------- ;-----------------------------------------------
@@ -104,12 +104,13 @@ OptionsScreen
OptionsHere OptionsHere
; 0123456789012345678901234567890123456789 ; 0123456789012345678901234567890123456789
dta d"Players : 2 3 4 5 6 " dta d"Players : 2 3 4 5 6 "
dta d"Cash : none 2K 5K 8K 10K " dta d"Cash : none 2K 8K 12K 20K "
dta d"Gravity : 0.2G 0.5G 1G 2G 4G " dta d"Gravity : 0.2G 0.5G 1G 2G 4G "
dta d"Wind : 1B 3B 5B 7B 9B " dta d"Wind : 1B 3B 5B 7B 9B "
dta d"Rounds : 10 20 30 40 50 " dta d"Rounds : 10 20 30 40 50 "
dta d"Missiles : slug slow norm fast hare " dta d"Missiles : slug slow norm fast hare "
dta d"Seppuku : nevr rare norm oftn alws " dta d"Seppuku : nevr rare norm oftn alws "
dta d"Mountains: NL BE CZ CH NP "
OptionsScreenEnd OptionsScreenEnd
;----------------------------------------------- ;-----------------------------------------------
MoreUp MoreUp
@@ -136,13 +137,13 @@ WeaponsDescription
dta d" - Defensive/Offensive weapon " dta d" - Defensive/Offensive weapon "
dta d" " dta d" "
dta d"Space"* dta d"Space"*
dta d" - Purchase " dta d" - "
purchaseActivate
dta d"Purchase "
dta d"Return"* dta d"Return"*
dta d" - Finish " dta d" - Finish "
EmptyLine EmptyLine
dta d" " dta d" "
LastLine
:40 dta $ff
; ------------------------------------------------- ; -------------------------------------------------
.ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!!
NameScreen NameScreen
@@ -154,7 +155,7 @@ NameAdr
dta d" " dta d" "
NamesOfLevels NamesOfLevels
dta d" HUMAN Moron Shooter " dta d" HUMAN Moron Shooter "
dta d" Poolshark Toosser Chooser " dta d" Poolshark Tosser Chooser "
dta d" Spoiler Cyborg Unknown " dta d" Spoiler Cyborg Unknown "
dta d" " dta d" "
dta d"Tab"* dta d"Tab"*
@@ -166,11 +167,17 @@ NamesOfLevels
textbuffer textbuffer
; 0123456789012345678901234567890123456789 ; 0123456789012345678901234567890123456789
dta d"Player: " dta d"Player: "
dta d"Energy: 99 Angle: <99> Force: 9999 " dta d"Energy: Angle: Force: "
dta d" Round: 99 Wind: <99> " dta d"Round: Wind: "
textbuffer2 textbuffer2
dta d"Player: ******** Cash: 99990 " dta d"Player: Cash: 0 " ; ZERO TO MAKE YOU RICHER ON THE SCREEN
dta d"----------------------------------------" dta d"----------------------------------------"
;---------------------------------------------------
activateText
dta d"Activate"
activateTextEnd
purchaseText
dta d"Purchase"
purchaseTextEnd
.endif .endif
Executable → Regular
+796 -342
View File
File diff suppressed because it is too large Load Diff
+20 -19
View File
@@ -1,33 +1,33 @@
.enum @dmactl .enum @dmactl
blank = %00 blank = %00
narrow = %01 narrow = %01
standard= %10 standard= %10
wide = %11 wide = %11
missiles= %100 missiles= %100
players = %1000 players = %1000
lineX1 = %10000 lineX1 = %10000
lineX2 = %00000 lineX2 = %00000
dma = %100000 dma = %100000
.ende .ende
scr48 = @dmactl(wide|dma|players|missiles|lineX1) ;screen 48b scr48 = @dmactl(wide|dma|players|missiles|lineX1)
scr40 = @dmactl(standard|dma|players|missiles|lineX1) ;screen 40b scr40 = @dmactl(standard|dma|players|missiles|lineX1)
scr32 = @dmactl(narrow|dma|players|missiles|lineX1) ;screen 32b scr32 = @dmactl(narrow|dma|players|missiles|lineX1)
.enum @pmcntl .enum @pmcntl
missiles= %1 missiles= %1
players = %10 players = %10
trigs = %100 trigs = %100
.ende .ende
.enum @gtictl .enum @gtictl
prior0 = %0 prior0 = %0
prior1 = %1 prior1 = %1
prior2 = %10 prior2 = %10
prior4 = %100 prior4 = %100
prior8 = %1000 prior8 = %1000
ply5 = %10000 ; Fifth Player Enable ply5 = %10000 ; Fifth Player Enable
mlc = %100000 ; Multiple Color Player Enable mlc = %100000 ; Multiple Color Player Enable
mode9 = %01000000 mode9 = %01000000
mode10 = %10000000 mode10 = %10000000
mode11 = %11000000 mode11 = %11000000
@@ -147,6 +147,7 @@ NMIST = $D40F ; rejestr statusu przerwa NMI
;------------------------------------- ;-------------------------------------
;additional system variables ;additional system variables
;------------------------------------- ;-------------------------------------
ATRACT = $004D
COLPM0S = $02C0 ;- - shadow register COLPM0 COLPM0S = $02C0 ;- - shadow register COLPM0
COLPM1S = $02C1 ;- - shadow register COLPM1 COLPM1S = $02C1 ;- - shadow register COLPM1
COLPM2S = $02C2 ;- - shadow register COLPM2 COLPM2S = $02C2 ;- - shadow register COLPM2
+7
View File
@@ -76,6 +76,9 @@
.MACRO WAIT .MACRO WAIT
; WAIT ; WAIT
; waits one frame (1/50 s(PAL) or 1/60s(NTSC)) ; waits one frame (1/50 s(PAL) or 1/60s(NTSC))
lda CONSOL
cmp #6 ; START KEY
beq ?nowait
LDA VCOUNT LDA VCOUNT
ldy vcount ldy vcount
?WA cpy VCOUNT ?WA cpy VCOUNT
@@ -83,6 +86,7 @@
?wframe ?wframe
cmp vcount cmp vcount
bne ?wframe bne ?wframe
?nowait
.ENDM .ENDM
;------------------------------------- ;-------------------------------------
.macro negw .macro negw
@@ -100,6 +104,9 @@
.macro randomize .macro randomize
;usage: randomize floor ceiling ;usage: randomize floor ceiling
;returns (in A) a random .byte between "floor" and "ceiling" ;returns (in A) a random .byte between "floor" and "ceiling"
.if :2 < :1
.error "floor higher than ceiling"
.endif
?rand ?rand
lda random lda random
cmp #:1 ;floor cmp #:1 ;floor
+473 -310
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
Executable → Regular
+718 -354
View File
File diff suppressed because it is too large Load Diff
Executable → Regular
+88 -75
View File
@@ -8,31 +8,35 @@
; compilation to e.g. cartridge ; compilation to e.g. cartridge
; zero page variables are declared in program.s65 module ; zero page variables are declared in program.s65 module
;===================================================== ;=====================================================
;--------------------------------------------------
;Variables
;--------------
TanksNames ; DO NOT ZERO - ticket #24 TanksNames ; DO NOT ZERO - ticket #24
:6 dta d" " :6 dta d" "
;---------------------------- ;----------------------------------------------------
;Options DO NOT ZERO - ticket #27 ;Options DO NOT ZERO - ticket #27
OptionsTable .by 0,0,2,2,0,1,4 OptionsTable .by 0,1,2,2,0,1,3,2
RoundsInTheGame .by 10 ;how many rounds in the current game RoundsInTheGame .by 10 ;how many rounds in the current game
seppukuVal .by 75 seppukuVal .by 75
;-------------------------------------------------- mountainDeltaH .by 3
mountainDeltaL .by $ff
;----------------------------------------------------
skilltable ; computer controlled players' skills (1-8), 0 - human (no cleaning, ticket #30) skilltable ; computer controlled players' skills (1-8), 0 - human (no cleaning, ticket #30)
.DS [MaxPlayers] .DS [MaxPlayers]
;----------------------------------- ;----------------------------------------------------
noMusic .by 0 ; 0 - play music, $ff - do not play music
noSfx .by 0 ; 0 - play SFX, $ff - do not play SFX
; 4x4 text buffer ; 4x4 text buffer
ResultLineBuffer ResultLineBuffer
dta d" " dta d" ", $ff
.byte $ff
LineHeader1 LineHeader1
dta d"# ROUND: " dta d"# ROUND: "
RoundNrDisplay RoundNrDisplay
dta d" #" dta d" #", $ff
.byte $ff
;=====================================================
variablesStart ; zeroing starts here variablesStart ; zeroing starts here
;=====================================================
isInventory .ds 1 ; 0 - purchase, $ff - inventory
;--------------
drawFunction .ds 1 ; 0 - plot, %10000000 - LineLength (N), %01000000 - DrawCheck (V)
;-------------- ;--------------
sfx_effect .ds 1 sfx_effect .ds 1
;-------------- ;--------------
@@ -43,31 +47,33 @@ flyDelay .ds 1
;-------------- ;--------------
NumberOfPlayers .DS 1 ;current number of players (counted from 1) NumberOfPlayers .DS 1 ;current number of players (counted from 1)
TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round
GameIsOver .DS 1 ; 1 - it was the last round in the game GameIsOver .DS 1 ; 1 means it was the last round in the game
;----------------------------------- ;----------------------------------------------------
moneyH ;we place zero at the end of prices and money moneyH ;we place zero at the end of prices and money
;and have range from 0 to 99990 (not too much) ;and have range from 0 to 99990 (not too much)
;money players have (maybe one more byte is needed?) ;money players have (maybe one more byte is needed?)
.DS [MaxPlayers] .DS [MaxPlayers]
moneyL moneyL
.DS [MaxPlayers] .DS [MaxPlayers]
;----------------------------------- ;----------------------------------------------------
gainH ;how much money player gets after the round gainH ;how much money player gets after the round
;it is gathered during the round basing on energy ;it is gathered during the round basing on energy
;opponents loose after player's shoots ;opponents lose after player's shoots
.DS [MaxPlayers] .DS [MaxPlayers]
gainL gainL
.DS [MaxPlayers] .DS [MaxPlayers]
;----------------------------------- ;----------------------------------------------------
looseH ;how much player looses after the round loseH ;how much player looses after the round
;calculated from REAL energy loss ;calculated from REAL energy loss
;(not only to zero energy) ;(not only to zero energy)
.DS [MaxPlayers] .DS [MaxPlayers]
looseL loseL
.DS [MaxPlayers] .DS [MaxPlayers]
;----------------------------------- ;----------------------------------------------------
Energy Energy
.DS [MaxPlayers] .DS [MaxPlayers]
ShieldEnergy
.DS [MaxPlayers]
EnergyDecrease .DS 1 EnergyDecrease .DS 1
eXistenZ eXistenZ
.DS [MaxPlayers] .DS [MaxPlayers]
@@ -78,66 +84,67 @@ ResultsTable ;the results in the gameeeeee
.DS [MaxPlayers] .DS [MaxPlayers]
TempResults TempResults
.DS [MaxPlayers] .DS [MaxPlayers]
CurrentResult ;----------------------------------------------------
.DS 1 ForceTableL ;shooting Force of the tank during the round
;-----------------------------------
EnergyTableL ;shooting Force of the tank during the round
.DS [MaxPlayers] .DS [MaxPlayers]
EnergyTableH ForceTableH
.DS [MaxPlayers] ;maxplayers=6 .DS [MaxPlayers] ;maxplayers=6
MaxEnergyTableL ;Energy of the tank during the round MaxForceTableL ;Energy of the tank during the round
;(limes superior force of the Shoot) ;(limes superior force of the Shoot)
.DS [MaxPlayers] ;1000 is the default .DS [MaxPlayers] ;1000 is the default
MaxEnergyTableH MaxForceTableH
.DS [MaxPlayers] .DS [MaxPlayers]
;----------------------------------- ;----------------------------------------------------
AngleTable ;Angle of the barrel of each tank during the round AngleTable ;Angle of the barrel of each tank during the round
.DS [MaxPlayers] .DS [MaxPlayers]
NewAngle .DS 1 NewAngle .DS 1
;----------------------------------- ;----------------------------------------------------
ActiveWeapon ;number of the selected weapon ActiveWeapon ;number of the selected weapon
.DS [MaxPlayers] .DS [MaxPlayers]
ActiveDefenceWeapon ;number of the activated defence weapon - 0
.DS [MaxPlayers]
WeaponDepleted .DS 1 ; if 0 deactivate the weapon and switch to Baby Missile WeaponDepleted .DS 1 ; if 0 deactivate the weapon and switch to Baby Missile
;----------------------------------- ;----------------------------------------------------
;format of the 3-byte static point number used in the game ;format of the 3-byte static point number used in the game
; 20203.5 => 128 : <20203 : >20203 ; 20203.5 => 128 : <20203 : >20203
;----------------------------------- ;----------------------------------------------------
L1 .DS 1 ; variable used in multiplications (by 10:) L1 .DS 1 ; variable used in multiplications (by 10:)
gravity .DS 1 ;only the decimal part (1/10 = 25) gravity .DS 1 ;only the decimal part (1/10 = 25)
;----------------------------------- ;----------------------------------------------------
Wind .ds 2 ;walue displayed on the screen Wind .ds 4 ;format: 0000.hhll
;multiplied by 16 (decimal part only) ;walue displayed on the screen is
;----------------------------------- ;decimal portion divided by 16 (>>4)
;----------------------------------------------------
MaxWind .ds 1 ; MaxWind .ds 1 ;
WindOrientation .DS 1 ;(0-right,1-left) WindOrientation .DS 1 ;(0-right,1-left)
;----------------------------------- ;----------------------------------------------------
Counter .DS 1 ;temporary Counter for outside loops Counter .DS 1 ;temporary Counter for outside loops
HitFlag .DS 1 ;1 when missile hit anything HitFlag .DS 1 ;$ff when missile hit ground, $00 when no hit, $01-$06 tank index+1 when hit tank
;----------------------------------- ;----------------------------------------------------
xtankstableL ;X positions of tanks (lower left point) xtankstableL ;X positions of tanks (lower left point)
.DS [MaxPlayers] .DS [MaxPlayers]
xtankstableH xtankstableH
.DS [MaxPlayers] .DS [MaxPlayers]
ytankstable ;Y positions of tanks (lower left point) ytankstable ;Y positions of tanks (lower left point)
.DS [MaxPlayers] .DS [MaxPlayers]
LowResDistances ; coarse stank positions divided by 4 (to be in just one byte) LowResDistances ; coarse tank positions divided by 4 (to be in just one byte)
.DS [MaxPlayers] .DS [MaxPlayers]
;----------------------------------- ;----------------------------------------------------
Erase .DS 1 ; if 1 only mask of the character is printed Erase .DS 1 ; if 1 only mask of the character is printed
; on the graphics screen. if 0 character is printed normally ; on the graphics screen. if 0 character is printed normally
;----------------------------------- ;----------------------------------------------------
RangeLeft .DS 2 ;range of the soil to be fallen down RangeLeft .DS 2 ;range of the soil to be fallen down
RangeRight .DS 2 ;it is being set by all Explosions RangeRight .DS 2 ;it is being set by all Explosions
;----------------------------------- ;----------------------------------------------------
WeaponRangeLeft .DS 2 ;Range of the Explosion of the given weapon WeaponRangeLeft .DS 2 ;Range of the Explosion of the given weapon
WeaponRangeRight .DS 2 WeaponRangeRight .DS 2
;-------------------------------------------------- ;----------------------------------------------------
;xroller ;xroller
HowMuchToFall .ds 1 HowMuchToFall .ds 1
HeightRol .DS 1 HeightRol .DS 1
@@ -152,13 +159,12 @@ digtabyL .DS [8]
digtabyH .DS [8] digtabyH .DS [8]
; liquiddirt ; liquiddirt
TempXfill .ds 2 TempXfill .ds 2
FillCounter .ds 1 FillCounter .ds 2
;sandhog ;sandhog
sandhogflag .DS 1 ; (0 digger, 8 sandhog) sandhogflag .DS 1 ; (0 digger, 8 sandhog)
;ofdirt ;ofdirt
magic .DS 2 ; was tempor2, but it was not compiling!!! (bug in OMC65) magic .DS 2 ; was tempor2, but it was not compiling!!! (bug in OMC65)
;draw ;draw
DrawJumpAddr .DS 2
HowToDraw .DS 1 HowToDraw .DS 1
; bits here mean ; bits here mean
; 0 - negative X (go up) ; 0 - negative X (go up)
@@ -171,14 +177,14 @@ LineLength .DS 2
;circle ;circle
radius .DS 1 radius .DS 1
xcircle .DS 2 xcircle .DS 2
ycircle .DS 1 ycircle .DS 2
tempcir .DS 2 tempcir .DS 2
;TankFalls ;TankFalls
IfFallDown .DS 1 FallingSoundBit .DS 1
PreviousFall .DS 1 PreviousFall .DS 1
EndOfTheFallFlag .DS 1 ; in case of the infinite fall EndOfTheFallFlag .DS 1 ; in case of the infinite fall
Parachute .DS 1 ; are you insured with parachute? Parachute .DS 1 ; are you insured with parachute?
; ------------------------------------------------- ;----------------------------------------------------
;Flight ;Flight
;variables for 5 missiles (used for mirv) ;variables for 5 missiles (used for mirv)
xtraj00 .DS [5] ; 3 bytes of xtraj times 5. Lowest byte xtraj00 .DS [5] ; 3 bytes of xtraj times 5. Lowest byte
@@ -191,7 +197,10 @@ vx03 .DS [5]
MirvDown .DS [5] ; is given missile down? MirvDown .DS [5] ; is given missile down?
MirvMissileCounter .DS 1 ; missile Counter (mainly for X) MirvMissileCounter .DS 1 ; missile Counter (mainly for X)
SmokeTracerFlag .DS 1 ; if Smoketracer SmokeTracerFlag .DS 1 ; if Smoketracer
; ------------------------------------------------- LaserFlag .DS 1 ; $ff if Laser
XposFlag .DS 1 ; bullet positon X (0 - on screen , %1000000 - off-screen)
YposFlag .DS 1 ; bullet positon Y (0 - on screen , %1000000 - over the screen , %0100000 - under the screen)
;----------------------------------------------------
;CheckCollisionWithTank ;CheckCollisionWithTank
vx .ds 4 ; 0,0,0,0 ;two decimal bytes, two whole bytes (DC.BA) vx .ds 4 ; 0,0,0,0 ;two decimal bytes, two whole bytes (DC.BA)
vy .ds 4 ;0,0,0,0 vy .ds 4 ;0,0,0,0
@@ -203,12 +212,8 @@ Angle .DS 1
Force .ds 3 ; 0,0,0 Force .ds 3 ; 0,0,0
Multiplier .ds 3 ; 0,0,0 Multiplier .ds 3 ; 0,0,0
Multiplee .ds 2 ; 0,0 Multiplee .ds 2 ; 0,0
Result .ds 3 ; 0,0,0
goleft .DS 1 ;if 1 then flights left goleft .DS 1 ;if 1 then flights left
;-------------------------------------------------- ;----------------------------------------------------
;SoilDown2
IsEndOfTheFallFlag .DS 1
; -------------------------------------------------
;unPlot ;unPlot
WhichUnPlot .DS 1 WhichUnPlot .DS 1
; max 5 concurrent unPlots ; max 5 concurrent unPlots
@@ -222,7 +227,7 @@ xtrajfb .DS 2
ytrajfb .DS 2 ytrajfb .DS 2
; ;
tracerflag .DS 1 tracerflag .DS 1
; ------------------------------------------------- ;----------------------------------------------------
;TypeChar ;TypeChar
mask1 .DS [8] mask1 .DS [8]
mask2 .DS [8] mask2 .DS [8]
@@ -240,24 +245,22 @@ UpNdown .DS 1
temptankX .DS 2 temptankX .DS 2
temptankNr .DS 1 temptankNr .DS 1
; ------------------------------------------------- ;----------------------------------------------------
;Variables from textproc.s65 ;Variables from textproc.s65
; tables with numbers of weapons on the right lists ; tables with indexes of weapons on the right lists
; to be honest - I do not know at the moment what the above
; comment was supposed to mean...
; OK (2022) so, L1 is list of offensive weapons, L2 - defensive ; OK (2022) so, L1 is list of offensive weapons, L2 - defensive
NubersOfWeaponsL1 IndexesOfWeaponsL1
.ds 8*5 ; :(8*5) .by $ff .ds 8*5 ; max 40 offensive weapons. this is wrong, should be 48, still only 32 defined.
NubersOfWeaponsL2 IndexesOfWeaponsL2
.ds 8*2 ; :(8*2) .by $ff .ds 8*2 ; max 16 defensive weapons.
; ------------------------------------------------- ;----------------------------------------------------
; variables storing amount of weapons on the first and second ; variables storing amount of weapons on the first and second
; list and pointer position ; list and pointer position
HowManyOnTheList1 HowManyOnTheListOff
.DS 1 .DS 1
HowManyOnTheList2 HowManyOnTheListDef
.DS 1 .DS 1
PositionOnTheList ; pointer position on the list being displayed PositionOnTheList ; pointer position on the list being displayed
.DS 1 .DS 1
@@ -273,14 +276,14 @@ WhichList ; list currently on the screen
OffsetDL1 ; offset of the list screen (how many lines).... OffsetDL1 ; offset of the list screen (how many lines)....
.DS 1 .DS 1
; ------------------------------------------------- ;----------------------------------------------------
;mark the level ;mark the level
PositionInName ; cursor position in name of the player when name input PositionInName ; cursor position in name of the player when name input
.DS 1 .DS 1
DifficultyLevel ; Difficulty Level (human/cpu) DifficultyLevel ; Difficulty Level (human/cpu)
.DS 1 .DS 1
;------------------------------------------------- ;----------------------------------------------------
;displaydecimal ;displaydecimal
decimal .DS 2 decimal .DS 2
decimalresult .DS 4 decimalresult .DS 4
@@ -295,7 +298,7 @@ FallDown2 .DS 1
LeapFrogAngle .DS 1 LeapFrogAngle .DS 1
;laser ;laser
LaserCoordinate .DS 8 ; 2,2,2,2 LaserCoordinate .DS 8 ; 2,2,2,2
; ------------------------------------------------- ;----------------------------------------------------
; Here go tables with weapons possesed by a given tank ; Here go tables with weapons possesed by a given tank
; Index in the table means weapon type ; Index in the table means weapon type
; number entered means ammo for given weapon possessed (max 99) ; number entered means ammo for given weapon possessed (max 99)
@@ -322,7 +325,7 @@ mountaintable2 ;table of mountains (size=screenwidth)
.DS [screenwidth] .DS [screenwidth]
.DS 1 ; additional byte for fallout (sometimes 1 pixel) .DS 1 ; additional byte for fallout (sometimes 1 pixel)
MountaintableEnd ;good for table clearing MountaintableEnd ;good for table clearing
;---------------------------------------------- ;----------------------------------------------------
TextPositionX .DS 2 TextPositionX .DS 2
TextPositionY .DS 1 TextPositionY .DS 1
TextAddress .DS 2 TextAddress .DS 2
@@ -331,7 +334,16 @@ TextNumberOff .DS 1
;-------------- ;--------------
TankTempY TankTempY
.DS 1 .DS 1
;----------------------------------------------------
;-------------- single round variables -------------- ;-------------- single round variables --------------
;----------------------------------------------------
singleRoundVars
;--------------
escFlag .ds 1
;--------------
CurrentResult
.DS 1
;--------------
previousAngle previousAngle
.DS [MaxPlayers] .DS [MaxPlayers]
previousEnergyL previousEnergyL
@@ -349,9 +361,9 @@ RandBoundaryHigh
AngleTablePointer AngleTablePointer
.DS 1 .DS 1
singleRoundVarsEnd singleRoundVarsEnd
;---------------------------------------------- ;----------------------------------------------------
; 4x4 texts ; 4x4 texts
;---------------------------------------------- ;----------------------------------------------------
LineAddress4x4 LineAddress4x4
.DS 2 .DS 2
LineCharNr LineCharNr
@@ -369,8 +381,9 @@ ResultY
ResultOfTankNr ResultOfTankNr
.DS 1 .DS 1
;---------------------------- ;----------------------------------------------------
;PutChar4x4 ;PutChar4x4
;----------------------------------------------------
LoopCounter4x4 .DS 1 LoopCounter4x4 .DS 1
y4x4 .DS 1 y4x4 .DS 1
StoreA4x4 .DS 1 StoreA4x4 .DS 1
@@ -382,6 +395,6 @@ plot4x4color .DS 1 ;1-white, 0-background
variablesEnd variablesEnd
;---------------------------- ;----------------------------------------------------
.endif .endif
Executable → Regular
+877 -687
View File
File diff suppressed because it is too large Load Diff