Compare commits

..

248 Commits

Author SHA1 Message Date
Pirx d474ba7af8 README updt 2022-08-13 17:47:49 -04:00
Pirx 802b67673b Merge pull request #116 from pkali/developXL
Develop xl
2022-08-13 17:34:35 -04:00
Pecusx 5070b11be3 Battery lottery 2022-08-12 22:34:56 +02:00
Pirx 0d210b8d88 basic off 2022-08-12 10:59:15 -04:00
Pirx 171f37c73f intro colors fix 2022-08-12 09:52:51 -04:00
Pecusx cee53fd257 Now splash screen works on classic Atari 800 :) 2022-08-12 15:23:23 +02:00
Pecusx 224588eaa9 Manual PL fix :) 2022-08-12 13:49:25 +02:00
Pecusx 4cd864e47e Polish manual update 2022-08-12 13:44:05 +02:00
Pecusx 710570ae8a Press O to Game Over and small bugfix 2022-08-12 13:40:04 +02:00
Pirx 2820f66467 credits updt 2022-08-11 22:28:23 -04:00
Pecusx c84aecc886 Polish instruction 2022-08-11 22:52:16 +02:00
Pecusx 25ed106e02 Financial bonus for the winner 2022-08-11 21:23:34 +02:00
Pecusx bc65dafdac Long Schlong new price and SFX and minor fix 2022-08-11 18:21:45 +02:00
Pirx fd15ed9bb6 correct song during gameplay and version 1.00 2022-08-11 10:57:30 -04:00
Pirx 028c34bf31 cleanup 2022-08-11 10:43:45 -04:00
Pirx 3b0388fdaf Scorch50 splash 2022-08-11 10:15:38 -04:00
Pecusx 9d14950ef9 AI selected weapons on statusbar 2022-08-11 14:31:33 +02:00
Pecusx a205c37dc0 Atract and next player SFX fix 2022-08-11 11:10:23 +02:00
Pecusx 950d6922b4 New funky defensive weapon - Long Barrel 2022-08-11 10:46:23 +02:00
Pirx 22785ecdd5 kolorki Adama, 2022-07-21 2022-08-11 01:20:45 -04:00
Pirx 268d99ffaf Boucy Castle sfx 2022-08-11 00:54:00 -04:00
Pirx bb826b680d Auto Defense -> Bouncy Castle 2022-08-11 00:34:21 -04:00
Pecusx f45d2c8446 Better SFX, music for purchase and Credits fix 2022-08-10 20:52:26 +02:00
Pecusx 1f576a0c49 Preventing compilation of unused procedures. 2022-08-10 19:58:07 +02:00
Pecusx 054c5df5d7 New music file and Song change fixed! 2022-08-10 18:39:37 +02:00
Pecusx 1b4a73c362 RMT Player bug fix !!! 2022-08-10 13:30:30 +02:00
Pecusx f807fe8876 WaitOneFrame fixed 2022-08-10 00:56:56 +02:00
Pecusx f14b64a7f6 SFX audio channel corrected 2022-08-09 23:40:56 +02:00
Pecusx e45cc3e609 Preventing double RTM calls - but still hangs 2022-08-09 23:28:46 +02:00
Pecusx 192b1b01dc New old RMT player and bugfix 2022-08-09 22:32:16 +02:00
Pecusx 664dc1568d Variables initialization on strart 2022-08-09 13:30:21 +02:00
Pecusx 234fbc5a4a Tanks and mountains on Oprions screen but RMT still hangs 2022-08-09 10:10:44 +02:00
Pecusx 2f57c1f774 Game Over and Credits - but RTM problems 2022-08-08 21:18:47 +02:00
Pecusx 2d274b05d0 Clear variables optimisation and better text screen init 2022-08-07 16:01:09 +02:00
Pecusx 5b90bc571e Purchase AI uses bit tables instead bytes 2022-08-07 13:50:38 +02:00
Pirx c1b16cd1d1 missing MSX file added 2022-08-07 07:47:37 -04:00
Pirx cf08093cee FEAT update 2022-08-06 16:31:51 -04:00
Pirx e6d37e8410 song 0h1 2022-08-06 16:24:18 -04:00
Pirx 56ed83fbac PAUSE ellimintation 2022-08-06 16:16:47 -04:00
Pirx 2cda0bfb12 music v0g 2022-08-06 14:06:09 -04:00
Pirx e5ce864254 new song, VBL fix 2022-08-06 01:03:01 -04:00
Pirx 312bca4866 shorter ClearScreen 2022-08-05 23:56:27 -04:00
Pecusx 2bec64c38e Macro "wait" as procedure. 2022-08-05 17:13:13 +02:00
Pecusx d448eb2e1e Better? AI purchases and new WAIT macro 2022-08-05 12:04:14 +02:00
Pecusx 05409fa301 Diferent Cyborg purchase strategy 2022-08-05 10:12:44 +02:00
Pecusx e60776fd57 New optimized DisplayDec5 proc 2022-08-03 18:13:07 +02:00
Pecusx eed446545e 5 digits decimal display added 2022-08-03 15:00:07 +02:00
Pecusx 54cc76464e DirectHits and EarnedMoney counters added (for summary) 2022-08-03 14:36:03 +02:00
Pecusx 3ac678e68b Game Over screen exit 2022-08-03 00:17:11 +02:00
Pecusx 823be97490 Tank names and points on Game Over screen 2022-08-02 20:52:22 +02:00
Pecusx 8775e0b42e Colored lines on Game Over screen 2022-08-02 19:49:51 +02:00
Pecusx cd41f59175 Better set PM width (prepare to new Game Over screen) 2022-08-02 14:40:12 +02:00
Pecusx 91d5172fe2 To high parachute bug fixed! 2022-08-02 11:20:51 +02:00
Pecusx 3a836fa072 Better aiming (lower tank position - more force) 2022-08-01 23:26:06 +02:00
Pecusx 84da6fb7a0 Cyborg aiming fix 2022-08-01 23:12:48 +02:00
Pecusx 9eb0f8adff Faster AI (and fixed)
Correcion for barrel wider tjan tank (2 pixels)
2022-08-01 21:54:41 +02:00
Pecusx 2f1f016ce0 Fix for Blue Zombie tank :) 2022-08-01 10:12:23 +02:00
Pecusx 8e0aa974e7 Small loop ptimisation 2022-07-31 23:56:47 +02:00
Pecusx 6a0c3a91e9 AI optimisations 2022-07-31 22:49:34 +02:00
Pecusx 025afbce91 MagDeflector disappears properly 2022-07-31 21:29:03 +02:00
Pecusx edbfddf090 MagDeflector is working properly
And an attempt to repair the blue zombie tank.
2022-07-31 20:34:44 +02:00
Pecusx d7501b5c7c All AI tanks works but... 2022-07-31 18:35:51 +02:00
Pecusx 1945dd5e88 AI optimisations 2022-07-31 16:44:18 +02:00
Pecusx c725fd3827 New Cyborg AI 2022-07-31 16:14:01 +02:00
Pecusx c8ffba4603 AI internals 2022-07-29 13:27:59 +02:00
Pecusx 16f24793f6 Small memory optimisations 2022-07-28 22:08:43 +02:00
Pecusx f9fc25ec0f Preparing for better AI (invisible shot) 2022-07-28 21:38:38 +02:00
Pecusx 4d090f1766 All 3 tank shapes visible 2022-07-28 17:54:38 +02:00
Pecusx 9df4a49abe 3 tank shapes 2022-07-28 17:42:49 +02:00
Pecusx 0a68184f7c New (smaller) 8x8 font file and optimisations.
Second tank shape added.
2022-07-28 09:53:01 +02:00
Pecusx 807da90fda AI ​​uses White Flag 2022-07-27 22:40:53 +02:00
Pecusx 3855b0e2cf Robotanks barrel angle sound 2022-07-27 21:46:35 +02:00
Pecusx a01af2a608 New (drawto) barrels finished 2022-07-27 20:55:14 +02:00
Pecusx 47dcfa1af4 Final Shields fix
Now shields are draw ONLY in DrawTankNr proc.
2022-07-27 18:01:33 +02:00
Pecusx 02ff63d524 Game Over animation fix 2022-07-27 14:00:34 +02:00
Pecusx 9b42e79b61 Shields fix 2022-07-27 13:44:20 +02:00
Pecusx 2c3b4d148e Barrels optimisation and more 2022-07-27 13:03:10 +02:00
Pirx 513f13c5fc broken inventory rollback 2022-07-25 09:50:49 -04:00
Pirx 27bc443581 WIP: broken inventory 2022-07-25 00:50:16 -04:00
Pirx 992130f267 WIP: barrels anew 2022-07-24 09:19:03 -04:00
Pirx 1de19dfd26 WIP: drawto barrels 2022-07-23 15:42:22 -04:00
Pirx 960675d4ac WIP: drawto barrels 2022-07-23 15:20:19 -04:00
Pirx dc9e2de8df WIP: drawto barrels 2022-07-23 15:14:47 -04:00
Pirx a7e1bd519e WIP: drawto barrels 2022-07-23 15:14:00 -04:00
Pecusx 616452a01e Texts and more colours on Game Over screen 2022-07-19 10:37:09 +02:00
Pirx f20ce14dc3 moving GameoverDL to stop shaking 2022-07-18 23:51:05 -04:00
Pecusx d9012f4485 Good Game Over animation 2022-07-18 16:37:56 +02:00
Pecusx 5c38b7b12a Game Over animation - still not good. 2022-07-18 13:47:57 +02:00
Pirx 6cb817d463 sprites down the memory lane 2022-07-18 07:02:09 -04:00
Pecusx 19200be905 Game Over "animation" - TEST ONLY! 2022-07-18 12:44:33 +02:00
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
41 changed files with 6158 additions and 3167 deletions
+2
View File
@@ -1,2 +1,4 @@
*.bak *.bak
scorch.lab
scorch.lst
+117 -2
View File
@@ -13,10 +13,11 @@ Contributors:
- Adam (@6502adam) - font, ideas, QA - Adam (@6502adam) - font, ideas, QA
- Bocianu (@bocianu) - important ideas, FujiNet implementation, QA - Bocianu (@bocianu) - important ideas, FujiNet implementation, QA
- Emkay - splash screen music - Emkay - splash screen music
- Fox (@pfusik) - plot and point optimization
QA: Probabilitydragon, KrzysRog, Beeblebrox, EnderDude, lopezpb, Dracon, brad-colbert QA: Probabilitydragon, KrzysRog, Beeblebrox, EnderDude, lopezpb, Dracon, brad-colbert, archon800, Shaggy the Atarian
You can contact us at pecus@poczta.fm or pirx@5oft.pl 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).
@@ -47,6 +48,120 @@ With the advent of fujinet (https://fujinet.online/) we are thinking about makin
## Changes: ## Changes:
###### Version 1.00
2022-08-13
Silly Version 1.00
This is an official Silly Venture Summer Edition Atari 50 release. The game reached version 1.00.
The game manual is available at https://github.com/pkali/scorch_src/wiki
All 48KB+ 8-bit Atari computers are supported.
Thank you @Pecusx and @Miker for your hard work over the last few weeks - I was almost entirely absent because of the real-world attack.
Most important changes:
* New Game Over screen with a summary of wins, direct hits and earned cash. https://github.com/pkali/scorch_src/issues/9
* Tank barrels are drawn procedurally to make aiming easier..
* Various SFX and music updates with new tunes for all parts of the game. https://github.com/pkali/scorch_src/issues/112
* AI can use White Flag.
* 3 different tank shapes https://github.com/pkali/scorch_src/issues/64.
* All AI levels are programmed. Cyborg is tough! https://github.com/pkali/scorch_src/issues/40
* New weapon - Long Schlong!
* New splash screen.
* Game mechanics improved.
* [O] key skips to the Game Over screen.
* The game works on Atari 800.
* Huge amount of optimizations to squeeze the game into 48K.
And now the new adventure begins!
###### 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 ###### Build 142
2022-05-30 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. 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.
+799 -115
View File
File diff suppressed because it is too large Load Diff
-498
View File
@@ -1,498 +0,0 @@
; @com.wudsn.ide.asm.mainsourcefile=../scorch.asm
/***************************************/
/* Use MADS http://mads.atari8.info/ */
/* Mode: DLI (char mode) */
/***************************************/
;icl "HIMARS14.h"
;ICL '../lib/atari.hea'
WIDTH = 40
HEIGHT = 30
; --- BASIC switch OFF
org $2000\ mva #$ff portb\ rts\ ini $2000
; --- dmsc LZSS player routine on zero page
org $80
chn_copy .ds 9
chn_pos .ds 9
bptr .ds 2
cur_pos .ds 1
chn_bits .ds 1
bit_data .byte 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
fadr .ds 2
fhlp .ds 2
cloc .ds 1
regA .ds 1
regX .ds 1
regY .ds 1
; --- MAIN PROGRAM
org $2000
ant dta $80
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
dta $42,a(verline)
dta $41,a(ant)
verline
:37 dta d" "
build
scr ins "HIMARS14.scr"
.ds 2*40
.ALIGN $0400
fnt ins "HIMARS14.fnt"
ift USESPRITES
.ALIGN $0800
pmg .ds $0300
ift FADECHR = 0
SPRITES
els
.ds $500
eif
eif
song_data
ins 'mmm_16.lzs'
song_end
POKEY = $D200
buffers
.ds 256 * 9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Song Initialization - this runs in the first tick:
;
.proc init_song
; Example: here initializes song pointer:
;mwa #song_data song_ptr
; Init all channels:
ldx #8
ldy #0
clear
; Read just init value and store into buffer and POKEY
jsr get_byte
sta POKEY, x
sty chn_copy, x
cbuf
sta buffers + 255
inc cbuf + 2
dex
bpl clear
; Initialize buffer pointer:
sty bptr
sty cur_pos
rts
.endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Wait for next frame
;
.proc wait_frame
lda 20
delay
cmp 20
beq delay
.endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Play one frame of the song
;
.proc play_frame
lda #>buffers
sta bptr+1
lda song_data
sta chn_bits
ldx #8
; Loop through all "channels", one for each POKEY register
chn_loop:
lsr chn_bits
bcs skip_chn ; C=1 : skip this channel
lda chn_copy, x ; Get status of this stream
bne do_copy_byte ; If > 0 we are copying bytes
; We are decoding a new match/literal
lsr bit_data ; Get next bit
bne got_bit
jsr get_byte ; Not enough bits, refill!
ror ; Extract a new bit and add a 1 at the high bit (from C set above)
sta bit_data ;
got_bit:
jsr get_byte ; Always read a byte, it could mean "match size/offset" or "literal byte"
bcs store ; Bit = 1 is "literal", bit = 0 is "match"
sta chn_pos, x ; Store in "copy pos"
jsr get_byte
sta chn_copy, x ; Store in "copy length"
; And start copying first byte
do_copy_byte:
dec chn_copy, x ; Decrease match length, increase match position
inc chn_pos, x
ldy chn_pos, x
; Now, read old data, jump to data store
lda (bptr), y
store:
ldy cur_pos
sta POKEY, x ; Store to output and buffer
sta (bptr), y
skip_chn:
; Increment channel buffer pointer
inc bptr+1
dex
bpl chn_loop ; Next channel
inc cur_pos
.endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Check for ending of song and jump to the next frame
;
.proc check_end_song
lda song_ptr + 1
cmp #>song_end
;bne wait_frame
lda song_ptr
cmp #<song_end
;bne wait_frame
.endp
end_loop
rts
main
jsr init_song
; --- init PMG
ift USESPRITES
mva >pmg pmbase ;missiles and players data address
mva #$03 pmcntl ;enable players and missiles
eif
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
mva #$00 nmien ;stop NMI interrupts
sta dmactl
mva #$fe portb ;switch off ROM to get 16k more ram
mwa #NMI $fffa ;new NMI handler
mva #$c0 nmien ;switch on NMI+DLI again
ift CHANGES ;if label CHANGES defined
_lp lda trig0 ; FIRE #0
beq stop
lda trig1 ; FIRE #1
beq stop
lda consol ; START
and #1
beq stop
lda skctl
and #$04
bne _lp ;wait to press any key; here you can put any own routine
els
null jmp DLI.dli1 ;CPU is busy here, so no more routines allowed
eif
stop
mva #$00 pmcntl ;PMG disabled
tax
sta:rne hposp0,x+
mva #$ff portb ;ROM switch on
mva #$40 nmien ;only NMI interrupts, DLI disabled
cli ;IRQ enabled
lda #0
ldx #8
@ sta POKEY,x
dex
bpl @-
;no glitching please (issue #67)
lda #0
sta $D400 ;dmactl
sta $022F ;dmactls
rts ;return to ... DOS
; --- DLI PROGRAM
.local DLI
?old_dli = *
ift !CHANGES
dli1 lda trig0 ; FIRE #0
beq stop
lda trig1 ; FIRE #1
beq stop
lda consol ; START
and #1
beq stop
lda skctl
and #$04
beq stop
lda vcount
cmp #$02
bne dli1
:3 sta wsync
DLINEW dli10
eif
dli_start
dli10
sta regA
c4 lda #$04
sta wsync ;line=8
sta color0
sta gtictl
DLINEW DLI.dli2 1 0 0
dli2
sta regA
lda >fnt+$400*$01
sta wsync ;line=96
sta chbase
DLINEW dli3 1 0 0
dli3
sta regA
lda >fnt+$400*$02
sta wsync ;line=136
sta chbase
DLINEW dli4 1 0 0
dli4
sta regA
lda >fnt+$400*$01
sta wsync ;line=168
sta chbase
DLINEW dli5 1 0 0
dli5
sta regA
lda >fnt+$400*$02
sta wsync ;line=176
sta chbase
DLINEW dli6 1 0 0
dli6
sta regA
lda >fnt+$400*$03
sta wsync ;line=184
sta chbase
DLINEW dli7 1 0 0
dli7
sta regA
lda >fnt+$400*$00
sta wsync ;line=200
sta chbase
DLINEW dli11 1 0 0
dli11
sta regA
lda #>$a000 ; system font
sta wsync ;line=232
sta chbase
lda #$01
sta gtictl
lda regA
rti
.endl
; ---
CHANGES = 1
FADECHR = 0
SCHR = 127
; ---
.proc NMI
bit nmist
bpl VBL
jmp DLI.dli_start
dliv equ *-2
VBL
sta regA
stx regX
sty regY
sta nmist ;reset NMI flag
mwa #ant dlptr ;ANTIC address program
mva #@dmactl(standard|dma|lineX1) dmactl ;set new screen width
inc cloc ;little timer
; Initial values
lda >fnt+$400*$00
sta chbase
c0 lda #$00
sta colbak
lda #$02
sta chrctl
lda #$01
sta gtictl
c1 lda #$0C
sta color1
c2 lda #$02
sta color2
c3 lda #$0E
sta color3
x0 lda #$00
sta hposp0
sta hposp1
sta hposp2
sta hposp3
sta hposm0
sta hposm1
sta hposm2
sta hposm3
sta sizep0
sta sizep1
sta sizep2
sta sizep3
sta sizem
sta colpm0
sta colpm1
sta colpm2
sta colpm3
sta color0
mwa #DLI.dli_start dliv ;set the first address of DLI interrupt
;this area is for yours routines
jsr play_frame
quit
lda regA
ldx regX
ldy regY
rti
.endp
; ---
ini main
; ---
opt l-
.MACRO SPRITES
missiles
.ds $100
player0
.ds $100
player1
.ds $100
player2
.ds $100
player3
.ds $100
.ENDM
USESPRITES = 0
.MACRO DLINEW
mva <:1 NMI.dliv
ift [>?old_dli]<>[>:1]
mva >:1 NMI.dliv+1
eif
ift :2
lda regA
eif
ift :3
ldx regX
eif
ift :4
ldy regY
eif
rti
.def ?old_dli = *
.ENDM
Binary file not shown.
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.
+877
View File
@@ -0,0 +1,877 @@
/***************************************/
/* Use MADS http://mads.atari8.info/ */
/* Mode: DLI (char mode) */
/***************************************/
;icl "Scorch50.h"
; --- dmsc LZSS player routine on zero page
org $80
chn_copy .ds 9
chn_pos .ds 9
bptr .ds 2
cur_pos .ds 1
chn_bits .ds 1
bit_data .ds 1
fcnt .ds 2
fadr .ds 2
fhlp .ds 2
cloc .ds 1
regA .ds 1
regX .ds 1
regY .ds 1
WIDTH = 40
HEIGHT = 30
; --- BASIC switch OFF
org $2000\ mva #$ff portb\ rts\ ini $2000
; --- MAIN PROGRAM
org $2000
ant dta $C2,a(scr)
dta $02,$82,$02,$02,$82,$02,$82,$02,$82,$02,$02,$02,$82,$02,$82,$82
dta $02,$02,$82,$02,$02,$82,$02,$02,$82,$82,$02,$82,$22
;dta $42,a(verline)
dta $41,a(ant)
;verline
; :37 dta d" "
; dta build
scr ins "Scorch50.scr"
.ds 0*40
.ALIGN $0400
fnt ins "Scorch50.fnt"
ift USESPRITES
.ALIGN $0800
pmg .ds $0300
ift FADECHR = 0
SPRITES
els
.ds $500
eif
eif
song_data
ins 'mmm_16.lzs'
song_end
POKEY = $D200
buffers
.ds 256 * 9
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Song Initialization - this runs in the first tick:
;
.proc init_song
mva #1 bit_data
; Example: here initializes song pointer:
;mwa #song_data song_ptr
; Init all channels:
ldx #8
ldy #0
clear
; Read just init value and store into buffer and POKEY
jsr get_byte
sta POKEY, x
sty chn_copy, x
cbuf
sta buffers + 255
inc cbuf + 2
dex
bpl clear
; Initialize buffer pointer:
sty bptr
sty cur_pos
rts
.endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Wait for next frame
;
.proc wait_frame
lda 20
delay
cmp 20
beq delay
.endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Play one frame of the song
;
.proc play_frame
lda #>buffers
sta bptr+1
lda song_data
sta chn_bits
ldx #8
; Loop through all "channels", one for each POKEY register
chn_loop:
lsr chn_bits
bcs skip_chn ; C=1 : skip this channel
lda chn_copy, x ; Get status of this stream
bne do_copy_byte ; If > 0 we are copying bytes
; We are decoding a new match/literal
lsr bit_data ; Get next bit
bne got_bit
jsr get_byte ; Not enough bits, refill!
ror ; Extract a new bit and add a 1 at the high bit (from C set above)
sta bit_data ;
got_bit:
jsr get_byte ; Always read a byte, it could mean "match size/offset" or "literal byte"
bcs store ; Bit = 1 is "literal", bit = 0 is "match"
sta chn_pos, x ; Store in "copy pos"
jsr get_byte
sta chn_copy, x ; Store in "copy length"
; And start copying first byte
do_copy_byte:
dec chn_copy, x ; Decrease match length, increase match position
inc chn_pos, x
ldy chn_pos, x
; Now, read old data, jump to data store
lda (bptr), y
store:
ldy cur_pos
sta POKEY, x ; Store to output and buffer
sta (bptr), y
skip_chn:
; Increment channel buffer pointer
inc bptr+1
dex
bpl chn_loop ; Next channel
inc cur_pos
.endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Check for ending of song and jump to the next frame
;
; not checking really so the tune gets funky :)))
;lda song_ptr + 1
;cmp #>song_end
;bne wait_frame
;lda song_ptr
;cmp #<song_end
;bne wait_frame
end_loop
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
jsr init_song
; ; 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 @-
; --- init PMG
ift USESPRITES
mva >pmg pmbase ;missiles and players data address
mva #$03 pmcntl ;enable players and missiles
eif
lda:cmp:req $14 ;wait 1 frame
sei ;stop IRQ interrupts
mva #$00 nmien ;stop NMI interrupts
sta dmactl
;mva #$fe portb ;switch off ROM to get 16k more ram
;mwa #NMI $fffa ;new NMI handler
sta colbaks
lda #$0E
sta colpf1s
lda #$84
sta colpf2s
lda #$0E
sta colpf3s
lda #$02
VMAIN NMI.vbl,6 ;jsr SetVBL
VDLI DLI.dli_start
mva #1 vscrol
mva #$c0 nmien ;switch on NMI+DLI again
_lp lda trig0 ; FIRE #0
beq stop
lda trig1 ; FIRE #1
beq stop
lda consol ; START
and #1
beq stop
lda skctl
and #$04
bne _lp ;wait to press any key; here you can put any own routine
stop
cli
vmain sysvbv,6
mva #$00 pmcntl ;PMG disabled
tax
sta:rne hposp0,x+
;mva #$ff portb ;ROM switch on
mva #$40 nmien ;only NMI interrupts, DLI disabled
;cli ;IRQ enabled
lda #0
ldx #8
@ sta POKEY,x
dex
bpl @-
;no glitching please (issue #67)
lda #0
sta $D400 ;dmactl
sta $022F ;dmactls
rts ;return to ... DOS
; --- DLI PROGRAM
.local DLI
?old_dli = *
dli_start
dli13
sta regA
sta wsync ;line=8
sta wsync ;line=9
sta wsync ;line=10
sta wsync ;line=11
sta wsync ;line=12
sta wsync ;line=13
c9 lda #$14
sta wsync ;line=14
sta colpm3
DLINEW DLI.dli2 1 0 0
dli2
sta regA
lda >fnt+$400*$01
sta wsync ;line=24
sta chbase
DLINEW dli3 1 0 0
dli3
sta regA
lda >fnt+$400*$02
sta wsync ;line=48
sta chbase
sta wsync ;line=49
sta wsync ;line=50
sta wsync ;line=51
s3 lda #$07
sta wsync ;line=52
sta sizem
DLINEW dli14 1 0 0
dli14
sta regA
stx regX
sty regY
x8 lda #$A3
sta wsync ;line=64
sta hposp3
x9 lda #$AB
sta wsync ;line=65
sta hposm3
sta wsync ;line=66
sta wsync ;line=67
sta wsync ;line=68
sta wsync ;line=69
sta wsync ;line=70
s4 lda #$13
x10 ldx #$A6
sta wsync ;line=71
sta sizem
stx hposm2
s5 lda #$01
x11 ldx #$72
x12 ldy #$62
sta wsync ;line=72
sta sizep2
sta sizep3
stx hposp2
sty hposp3
x13 lda #$A9
sta wsync ;line=73
sta hposp1
DLINEW dli4 1 1 1
dli4
sta regA
lda >fnt+$400*$03
sta wsync ;line=80
sta chbase
DLINEW dli5 1 0 0
dli5
sta regA
stx regX
lda >fnt+$400*$04
sta wsync ;line=112
sta chbase
sta wsync ;line=113
sta wsync ;line=114
sta wsync ;line=115
sta wsync ;line=116
sta wsync ;line=117
sta wsync ;line=118
s6 lda #$07
x14 ldx #$A3
sta wsync ;line=119
sta sizem
stx hposm1
s7 lda #$01
x15 ldx #$93
sta wsync ;line=120
sta sizep1
stx hposp1
DLINEW dli15 1 1 0
dli15
sta regA
stx regX
sta wsync ;line=128
sta wsync ;line=129
sta wsync ;line=130
sta wsync ;line=131
x16 lda #$4A
sta wsync ;line=132
sta hposp1
c10 lda #$D4
sta wsync ;line=133
sta color2
s8 lda #$C3
x17 ldx #$5A
sta wsync ;line=134
sta sizem
stx hposm3
DLINEW dli6 1 1 0
dli6
sta regA
stx regX
sty regY
lda >fnt+$400*$05
sta wsync ;line=136
sta chbase
sta wsync ;line=137
sta wsync ;line=138
sta wsync ;line=139
sta wsync ;line=140
sta wsync ;line=141
sta wsync ;line=142
s9 lda #$C7
x18 ldx #$A9
sta wsync ;line=143
sta sizem
stx hposm1
s10 lda #$D7
x19 ldx #$9E
c11 ldy #$02
sta wsync ;line=144
sta sizem
stx hposm2
sty colpm2
sta wsync ;line=145
c12 lda #$04
sta wsync ;line=146
sta colpm1
sta wsync ;line=147
sta wsync ;line=148
sta wsync ;line=149
s11 lda #$00
x20 ldx #$74
c13 ldy #$02
sta wsync ;line=150
sta sizep3
stx hposp3
sty colpm3
sta wsync ;line=151
sta wsync ;line=152
sta wsync ;line=153
sta wsync ;line=154
sta wsync ;line=155
sta wsync ;line=156
sta wsync ;line=157
c14 lda #$04
sta wsync ;line=158
sta color0
DLINEW dli7 1 1 1
dli7
sta regA
lda >fnt+$400*$06
sta wsync ;line=160
sta chbase
DLINEW dli8 1 0 0
dli8
sta regA
stx regX
sty regY
lda >fnt+$400*$07
sta wsync ;line=184
sta chbase
sta wsync ;line=185
s12 lda #$00
x21 ldx #$8E
c15 ldy #$08
sta wsync ;line=186
sta sizep2
stx hposp2
sty colpm2
x22 lda #$4C
c16 ldx #$0E
sta wsync ;line=187
sta hposp3
stx colpm3
c17 lda #$0A
c18 ldx #$34
sta wsync ;line=188
sta color1
stx colpm3
s13 lda #$43
x23 ldx #$49
sta wsync ;line=189
sta sizem
stx hposm3
c19 lda #$08
c20 ldx #$34
sta wsync ;line=190
sta color1
stx colpm2
sta wsync ;line=191
c21 lda #$0A
sta wsync ;line=192
sta color1
c22 lda #$08
sta wsync ;line=193
sta color1
c23 lda #$0A
sta wsync ;line=194
sta color1
c24 lda #$34
sta wsync ;line=195
sta color2
c25 lda #$0C
sta wsync ;line=196
sta color1
c26 lda #$0A
sta wsync ;line=197
sta color1
c27 lda #$0C
sta wsync ;line=198
sta color1
sta wsync ;line=199
sta wsync ;line=200
c28 lda #$0E
sta wsync ;line=201
sta color1
c29 lda #$0C
sta wsync ;line=202
sta color1
c30 lda #$0E
sta wsync ;line=203
sta color1
c31 lda #$0C
sta wsync ;line=204
sta color1
c32 lda #$0E
sta wsync ;line=205
sta color1
DLINEW dli16 1 1 1
dli16
sta regA
sta wsync ;line=208
sta wsync ;line=209
c33 lda #$0C
sta wsync ;line=210
sta color1
c34 lda #$0E
sta wsync ;line=211
sta color1
c35 lda #$0C
sta wsync ;line=212
sta color1
DLINEW dli9 1 0 0
dli9
sta regA
stx regX
sty regY
lda >fnt+$400*$08
c36 ldx #$0A
sta wsync ;line=216
sta chbase
stx color1
c37 lda #$0C
sta wsync ;line=217
sta color1
c38 lda #$0A
x24 ldx #$9D
c39 ldy #$34
sta wsync ;line=218
sta color1
stx hposm1
sty colpm1
s14 lda #$03
x25 ldx #$7D
sta wsync ;line=219
sta sizep3
stx hposp3
c40 lda #$08
s15 ldx #$13
x26 ldy #$45
sta wsync ;line=220
sta color1
stx sizem
sty hposm2
s16 lda #$03
x27 ldx #$59
sta wsync ;line=221
sta sizep2
stx hposp2
s17 lda #$53
x28 ldx #$49
x29 ldy #$79
sta wsync ;line=222
sta sizem
stx hposp1
sty hposm3
c41 lda #$06
c42 ldx #$00
sta wsync ;line=223
sta color1
stx color2
lda >fnt+$400*$01
s18 ldx #$50
x30 ldy #$44
sta wsync ;line=224
sta chbase
stx sizem
sty hposm0
sta wsync ;line=225
c43 lda #$08
sta wsync ;line=226
sta color1
c44 lda #$0C
sta wsync ;line=227
sta color1
sta wsync ;line=228
sta wsync ;line=229
c45 lda #$0E
sta wsync ;line=230
sta color1
DLINEW dli10 1 1 1
dli10
sta regA
lda >fnt+$400*$00
sta wsync ;line=232
sta chbase
;DLINEW dli11 1 0 0
lda regA
rti
;dli11
; sta regA
;
; lda #>$a000 ; system font
; sta wsync ;line=232
; sta chbase
; lda #$01
; sta gtictl
;
; lda regA
; rti
.endl
; ---
CHANGES = 1
FADECHR = 0
SCHR = 127
dliv = $0200
; ---
.proc NMI
bit nmist
bpl VBL
jmp DLI.dli_start
VBL
sta regA
stx regX
sty regY
;sta nmist ;reset NMI flag
mwa #ant dlptr ;ANTIC address program
mva #@dmactl(standard|dma|lineX1|players|missiles) dmactl ;set new screen width
inc cloc ;little timer
; Initial values
lda >fnt+$400*$00
sta chbase
c0 lda #$00
sta colbak
c1 lda #$0E
sta color1
c2 lda #$84
sta color2
c3 lda #$0E
sta color3
lda #$02
sta chrctl
lda #$01
sta gtictl
sta sizep0
s0 lda #$03
sta sizem
x0 lda #$D0
sta hposp0
x1 lda #$28
sta hposm0
c4 lda #$00
sta colpm0
x2 lda #$A2
sta hposm3
c5 lda #$0E
sta colpm3
s1 lda #$00
sta sizep2
sta sizep3
x3 lda #$92
sta hposp2
x4 lda #$8A
sta hposp3
c6 lda #$14
sta colpm2
s2 lda #$00
sta sizep1
x5 lda #$9A
sta hposp1
c7 lda #$14
sta colpm1
x6 lda #$A4
sta hposm2
x7 lda #$A6
sta hposm1
c8 lda #$00
sta color0
mwa #DLI.dli_start dliv ;set the first address of DLI interrupt
;this area is for yours routines
jsr play_frame
quit
lda regA
ldx regX
ldy regY
jmp sysvbv
.endp
; ---
ini main
; ---
opt l-
.MACRO SPRITES
missiles
.he 00 00 00 00 00 00 00 00 03 03 C3 03 03 03 03 03
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
.he 03 03 03 03 03 03 03 03 03 83 83 83 C3 C3 C3 C3
.he C3 C3 C3 C3 C3 E3 E3 E3 E3 E3 E3 F3 F3 F3 F3 FB
.he FB FB FB FB FF FF FF FF F3 33 83 83 83 83 C3 D3
.he D3 D3 13 03 03 03 03 03 03 03 03 03 03 03 03 03
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 0F
.he 0F 0F 0F 0F 0F 0F 0F 0F 0F 0F 03 03 03 03 C3 C3
.he C3 C3 C3 C3 C3 C3 C3 C3 C3 D3 FF FF 3F 3F 3F 3F
.he 3F 3F 33 13 03 03 03 03 03 03 03 03 03 03 03 03
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
.he 03 03 03 03 03 03 03 43 43 C3 C3 C3 C3 03 03 03
.he 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
.he 03 03 0F 0F 3F 3F FF FC FE FE FF DB 03 03 03 03
.he 03 03 03 03 03 03 03 03 00 00 00 00 00 00 00 00
player0
.he 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
player1
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 F0 FC FE FE FF FF FF FF
.he FF 0F 0F 0F 0F 0F 0F 0F 0F 0F 07 07 07 07 07 07
.he 03 03 03 FF FF FF FF FF CF CF FF FF FF FF FF 9F
.he 9F FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
.he 00 F0 F0 F0 F0 78 F8 78 78 78 78 38 78 38 3C 3C
.he 3C 3C 1C 3C 1C 1C 1C 1C 1E 1E 1E 1E 0E 1E 0E 0E
.he 0E 0F 07 0F 07 0F 07 07 07 07 07 07 06 06 06 06
.he FF FF FF FF FF FF FF FF FF FF FF 00 00 3E 3F 7F
.he 7F 7F 7F 7F 7F 7F 7F 3F 3F 3F 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 FF FF FF FF FF FF 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
player2
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 FF FF FF FF FF FF FF FF
.he FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 FF FF FF FF FF 99 99 FF FF FF FF FF 33
.he 33 FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00
.he 00 00 80 F0 F8 F8 F8 FC FC FC FC FC FC FC FC FC
.he FC FE FE FE FE FE FE FF FF FF FF FF FF FF FE FC
.he F8 F8 F8 F8 F0 F0 F0 F0 F0 F0 F0 F0 E0 E0 E0 E0
.he E0 E0 E0 FC FE FE FF FF 8F 87 87 87 07 07 07 07
.he 07 07 07 07 07 07 07 03 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 F8 FC FC FE FE FF FF 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 FF FF FF FF FF FF 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
player3
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 01 07 0F 1F 1F 3F 3F 7F
.he 7F 78 78 F0 F0 F0 F0 F8 F8 F8 78 7C 7C 7C 3C 3E
.he 3E 3E 1E 1F 1F 1F 0F 0F 0F 0F 0F 1F 1F 1F 1F 1F
.he 1F 3F 3F 3F 3F 3F 3F 3F FF 7F 7F 3F 3F 1F 1F 0F
.he 1F 1F 1F 3F 3F 3F 3F 3F 3F 3B 30 30 30 30 30 30
.he 30 30 30 30 38 3E 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
.he 7F 7F 7F 7F 7F 7F 7F FF FF FF FF FF FF FF FF FF
.he FF FF FF FF FF FF FF FF 7F 7F 7F 7F 7F 7F FF FF
.he FF FF FF FF FE FE FE FE FE FE FE FE FC 1C FF 7E
.he 7E FE FE FE FE FF FF FF 7F 7E 7E 3C 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 00 00 7C FE FE FF FF FF 00 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.he 00 00 00 FF FF FF FF FF FF FF FF FF 00 00 00 00
.he 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
.ENDM
USESPRITES = 1
.MACRO DLINEW
mva <:1 dliv
ift [>?old_dli]<>[>:1]
mva >:1 dliv+1
eif
ift :2
lda regA
eif
ift :3
ldx regX
eif
ift :4
ldy regY
eif
rti
.def ?old_dli = *
.ENDM
Binary file not shown.
Binary file not shown.
-54
View File
@@ -1,54 +0,0 @@
IN TIMES OF TROUBLE, GO WITH WHAT YOU KNOW.
DIE!
EAT MY SHORTS!
YOU'RE TOAST!
BANZAI!
FROM HELL'S HEART I STAB AT THEE...
I DIDN'T DO IT. NOBODY SAW ME DO IT.
TAKE A HIKE!
YOU'RE DEAD MEAT.
MAKE MY DAY.
CHARGE!
ATTACK!
YOU'RE OUTTA HERE.
WATTSA MATTA YOU?
FREEZE, OR I'LL SHOOT!
HA HA HA.
WE COME IN PEACE - SHOOT TO KILL!
IN YOUR FACE!
DIE COMMIE PIG!
I LOVE THE SMELL OF NAPALM IN THE MORNING.
VICTORY!
SHOW SOME RESPECT.
JUST WHO DO YOU THINK YOU ARE?
LOOK OUT BELOW!
KNOCK, KNOCK.
LOOK OVER THERE.
GUESS WHAT'S COMING FOR DINNER?
MERRY CHRISTMAS.
OPEN WIDE!
HERE GOES NOTHING...
DON'T WORRY, IT ISN'T A LIVE ROUND.
BLOOD, PAIN, VIOLENCE!
TAKE THIS, SISSY!
I SHALL FLATTEN YOU!
I SHALL SMASH YOUR UGLY TANK!
I WONDER WHAT THIS BUTTON DOES?
DON'T TAKE THIS PERSONALLY.
WOULD THIS MAKE YOU MAD?
I TOLD YOU TO LEAVE MY SISTER ALONE!
I COULD SPARE YOU, BUT WHY?
MY BOMB IS BIGGER THAN YOURS.
DON'T FORGET ABOUT ME!
HASTA LA VISTA, BABY!
THIS IS YOUR BRAIN ON SCORCH.
TAKE THIS!
THIS SCREEN AIN'T BIG ENOUGH FOR THE BOTH OF US.
DIE, ALIEN SWINE!
SAY 'ARRGGHHHHH....'
I SHALL OIL MY TURRET WITH YOUR BLOOD.
DIE, TANK-SCUM!
I'M GONNA BREAK YOUR FACE!
MAMA SAID KNOCK YOU OUT!
I HOPE YOU ENJOY PAIN!
PARTING IS SUCH SWEET SORROW... NOT!
-60
View File
@@ -1,60 +0,0 @@
UGH!
AARGH!
AAAGGHHH!
I'M MELTING!
OOF..
OH!
EEEK!
AACCH!
I HATE IT WHEN THAT HAPPENS.
ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY.
OH NO!
NOT ME!
OUCH.
OH NO, NOT AGAIN.
ANOTHER ONE BITES THE DUST.
GOODBYE.
HELP ME!
FAREWELL, CRUEL WORLD.
REMEMBER THE ALAMO!
OH MAN!
DOOUGH!
ANOTHER DAY, ANOTHER BOMB.
THIS IS THE END, MY ONLY FRIEND.
IT'S ALL OVER.
THE FAT LADY SANG.
WHY DOES EVERYTHING HAPPEN TO ME?
I'M GOING DOWN.
I'VE GOT A BAD FEELING ABOUT THIS.
CRAPOLA.
POW!
BIF!
BAM!
ZONK!
I SHOULD'VE LISTENED TO MY MOTHER...
NO... A BUD LIGHT!
WHAT WAS THAT NOISE?
MAMA SAID THERE'D BE DAYS LIKE THIS.
ITS JUST ONE OF THOSE DAYS...
I SEE A BRIGHT LIGHT...
MOMMY? IS THAT YOU?
I LET YOU HIT ME!
SUCKER SHOT!
I DIDN'T WANT TO LIVE ANYWAY.
-<SOB>-
WAS THAT AS CLOSE AS I THINK IT WAS?
JOIN THE ARMY, SEE THE WORLD THEY SAID.
IT WASN'T JUST A JOB IT WAS AN ADVENTURE!
I DIDN'T LIKE VIOLENCE ANYWAY!
I THOUGHT YOU LIKED ME?
SUCH SENSELESS VIOLENCE! I DON'T UNDERSTAND IT.
I THINK THIS GUY'S A LITTLE CRAZY.
SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE.
HEY! KILLIN' AIN'T COOL.
GEE... THANKS.
I'VE FALLEN AND I CAN'T GET UP!
911?
OH NO! HERE I BLOW AGAIN!
I'LL BE BACK...
HEY - I'VE GOT LAWYERS.
TIME TO CALL 1-900-SUE-TANK.
+41
View File
@@ -0,0 +1,41 @@
STEREOMODE equ 0
;* --------BEGIN--------
;* C:\Atari\rmt\rmt128\schorch_str.rmt
FEAT_SFX equ 1
FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable
FEAT_NOSTARTINGSONGLINE equ 0
FEAT_INSTRSPEED equ 1
FEAT_CONSTANTSPEED equ 0 ;(19 times)
FEAT_COMMAND1 equ 1 ;(18 times)
FEAT_COMMAND2 equ 0 ;(0 times)
FEAT_COMMAND3 equ 0 ;(0 times)
FEAT_COMMAND4 equ 0 ;(0 times)
FEAT_COMMAND5 equ 0 ;(0 times)
FEAT_COMMAND6 equ 0 ;(0 times)
FEAT_COMMAND7SETNOTE equ 0 ;(0 times)
FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times)
FEAT_PORTAMENTO equ 0 ;(0 times)
FEAT_FILTER equ 1 ;(44 times)
FEAT_FILTERG0L equ 1 ;(13 times)
FEAT_FILTERG1L equ 1 ;(22 times)
FEAT_FILTERG0R equ 0 ;(0 times)
FEAT_FILTERG1R equ 0 ;(0 times)
FEAT_BASS16 equ 0 ;(0 times)
FEAT_BASS16G1L equ 0 ;(0 times)
FEAT_BASS16G3L equ 0 ;(0 times)
FEAT_BASS16G1R equ 0 ;(0 times)
FEAT_BASS16G3R equ 0 ;(0 times)
FEAT_VOLUMEONLYG0L equ 0 ;(0 times)
FEAT_VOLUMEONLYG2L equ 0 ;(0 times)
FEAT_VOLUMEONLYG3L equ 0 ;(0 times)
FEAT_VOLUMEONLYG0R equ 0 ;(0 times)
FEAT_VOLUMEONLYG2R equ 0 ;(0 times)
FEAT_VOLUMEONLYG3R equ 0 ;(0 times)
FEAT_TABLETYPE equ 0 ;(0 times)
FEAT_TABLEMODE equ 0 ;(0 times)
FEAT_TABLEGO equ 1 ;(1 times)
FEAT_AUDCTLMANUALSET equ 1 ;(6 times)
FEAT_VOLUMEMIN equ 0 ;(0 times)
FEAT_EFFECTVIBRATO equ 1 ;(3 times)
FEAT_EFFECTFSHIFT equ 1 ;(11 times)
;* --------END--------
+41
View File
@@ -0,0 +1,41 @@
STEREOMODE equ 0
;* --------BEGIN--------
;* C:\Atari\rmt\rmt128\schorch_str2.rmt
FEAT_SFX equ 1
FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable
FEAT_NOSTARTINGSONGLINE equ 0
FEAT_INSTRSPEED equ 1
FEAT_CONSTANTSPEED equ 0 ;(19 times)
FEAT_COMMAND1 equ 1 ;(18 times)
FEAT_COMMAND2 equ 0 ;(0 times)
FEAT_COMMAND3 equ 0 ;(0 times)
FEAT_COMMAND4 equ 0 ;(0 times)
FEAT_COMMAND5 equ 0 ;(0 times)
FEAT_COMMAND6 equ 0 ;(0 times)
FEAT_COMMAND7SETNOTE equ 0 ;(0 times)
FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times)
FEAT_PORTAMENTO equ 0 ;(0 times)
FEAT_FILTER equ 1 ;(44 times)
FEAT_FILTERG0L equ 1 ;(13 times)
FEAT_FILTERG1L equ 1 ;(22 times)
FEAT_FILTERG0R equ 0 ;(0 times)
FEAT_FILTERG1R equ 0 ;(0 times)
FEAT_BASS16 equ 0 ;(0 times)
FEAT_BASS16G1L equ 0 ;(0 times)
FEAT_BASS16G3L equ 0 ;(0 times)
FEAT_BASS16G1R equ 0 ;(0 times)
FEAT_BASS16G3R equ 0 ;(0 times)
FEAT_VOLUMEONLYG0L equ 0 ;(0 times)
FEAT_VOLUMEONLYG2L equ 0 ;(0 times)
FEAT_VOLUMEONLYG3L equ 0 ;(0 times)
FEAT_VOLUMEONLYG0R equ 0 ;(0 times)
FEAT_VOLUMEONLYG2R equ 0 ;(0 times)
FEAT_VOLUMEONLYG3R equ 0 ;(0 times)
FEAT_TABLETYPE equ 0 ;(0 times)
FEAT_TABLEMODE equ 0 ;(0 times)
FEAT_TABLEGO equ 1 ;(2 times)
FEAT_AUDCTLMANUALSET equ 1 ;(6 times)
FEAT_VOLUMEMIN equ 0 ;(0 times)
FEAT_EFFECTVIBRATO equ 1 ;(3 times)
FEAT_EFFECTFSHIFT equ 1 ;(11 times)
;* --------END--------
-40
View File
@@ -1,40 +0,0 @@
;* --------BEGIN--------
;* Z:\home\pkalinowski\Seafile\atari\projects\scorch_src\artwork\sfx\scorch_trial07_stripped.rmt
FEAT_SFX equ 1
FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable
FEAT_NOSTARTINGSONGLINE equ 0
FEAT_INSTRSPEED equ 1
FEAT_CONSTANTSPEED equ 16 ;(0 times)
FEAT_COMMAND1 equ 1 ;(4 times)
FEAT_COMMAND2 equ 0 ;(0 times)
FEAT_COMMAND3 equ 0 ;(0 times)
FEAT_COMMAND4 equ 0 ;(0 times)
FEAT_COMMAND5 equ 0 ;(0 times)
FEAT_COMMAND6 equ 0 ;(0 times)
FEAT_COMMAND7SETNOTE equ 0 ;(0 times)
FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times)
FEAT_PORTAMENTO equ 0 ;(0 times)
FEAT_FILTER equ 1 ;(22 times)
FEAT_FILTERG0L equ 0 ;(0 times)
FEAT_FILTERG1L equ 0 ;(0 times)
FEAT_FILTERG0R equ 0 ;(0 times)
FEAT_FILTERG1R equ 0 ;(0 times)
FEAT_BASS16 equ 0 ;(0 times)
FEAT_BASS16G1L equ 0 ;(0 times)
FEAT_BASS16G3L equ 0 ;(0 times)
FEAT_BASS16G1R equ 0 ;(0 times)
FEAT_BASS16G3R equ 0 ;(0 times)
FEAT_VOLUMEONLYG0L equ 0 ;(0 times)
FEAT_VOLUMEONLYG2L equ 0 ;(0 times)
FEAT_VOLUMEONLYG3L equ 0 ;(0 times)
FEAT_VOLUMEONLYG0R equ 0 ;(0 times)
FEAT_VOLUMEONLYG2R equ 0 ;(0 times)
FEAT_VOLUMEONLYG3R equ 0 ;(0 times)
FEAT_TABLETYPE equ 0 ;(0 times)
FEAT_TABLEMODE equ 0 ;(0 times)
FEAT_TABLEGO equ 1 ;(1 times)
FEAT_AUDCTLMANUALSET equ 1 ;(4 times)
FEAT_VOLUMEMIN equ 0 ;(0 times)
FEAT_EFFECTVIBRATO equ 0 ;(0 times)
FEAT_EFFECTFSHIFT equ 1 ;(7 times)
;* --------END--------
@@ -1,4 +1,3 @@
.echo *
;* ;*
;* Raster Music Tracker, RMT Atari routine version 1.20090108 ;* Raster Music Tracker, RMT Atari routine version 1.20090108
;* (c) Radek Sterba, Raster/C.P.U., 2002 - 2009 ;* (c) Radek Sterba, Raster/C.P.U., 2002 - 2009
@@ -17,18 +16,40 @@
;* ;*
;* 3. Because of RMTplayer provides a lot of effects, it spent a lot of CPU time. ;* 3. Because of RMTplayer provides a lot of effects, it spent a lot of CPU time.
;* ;*
STEREOMODE equ 0 ;0 => compile RMTplayer for 4 tracks mono ;* STEREOMODE equ 0..3 ;0 => compile RMTplayer for 4 tracks mono
;* ;1 => compile RMTplayer for 8 tracks stereo ;* ;1 => compile RMTplayer for 8 tracks stereo
;* ;2 => compile RMTplayer for 4 tracks stereo L1 R2 R3 L4 ;* ;2 => compile RMTplayer for 4 tracks stereo L1 R2 R3 L4
;* ;3 => compile RMTplayer for 4 tracks stereo L1 L2 R3 R4 ;* ;3 => compile RMTplayer for 4 tracks stereo L1 L2 R3 R4
;* ;*
; IFT STEREOMODE==1 IFT STEREOMODE==1
;TRACKS equ 8 TRACKS equ 8
; ELS ELS
TRACKS equ 4 TRACKS equ 4
; EIF EIF
;* ;*
PLAYER = * ;*PLAYER equ $3400
;*
;* RMT FEATures definitions file
;* For optimizations of RMT player routine to concrete RMT modul only!
icl "feat.txt"
;*
;* RMT ZeroPage addresses
org RMT_Zero_Page_V
p_tis
p_instrstable org *+2
p_trackslbstable org *+2
p_trackshbstable org *+2
p_song org *+2
ns org *+2
nr org *+2
nt org *+2
reg1 org *+1
reg2 org *+1
reg3 org *+1
tmp org *+1
IFT FEAT_COMMAND2
frqaddcmd2 org *+1
EIF
IFT TRACKS>4 IFT TRACKS>4
org PLAYER-$400+$40 org PLAYER-$400+$40
ELS ELS
@@ -745,8 +766,9 @@ ei4
IFT 1==[FEAT_COMMAND1+FEAT_COMMAND2+FEAT_COMMAND3+FEAT_COMMAND4+FEAT_COMMAND5+FEAT_COMMAND6+[FEAT_COMMAND7SETNOTE||FEAT_COMMAND7VOLUMEONLY]] IFT 1==[FEAT_COMMAND1+FEAT_COMMAND2+FEAT_COMMAND3+FEAT_COMMAND4+FEAT_COMMAND5+FEAT_COMMAND6+[FEAT_COMMAND7SETNOTE||FEAT_COMMAND7VOLUMEONLY]]
beq cmd0 beq cmd0
ELS ELS
lsr @ ; lsr @
lsr @ ; lsr @
lda #0 ; my fix :)
sta jmx+1 sta jmx+1
jmx bcc * jmx bcc *
jmp cmd0 jmp cmd0
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+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
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))
Binary file not shown.
+209 -474
View File
@@ -2,28 +2,46 @@
.IF *>0 ;this is a trick that prevents compiling this file alone .IF *>0 ;this is a trick that prevents compiling this file alone
; initial values for some variables
initialvaluesStart
I_OptionsTable .by 0,1,2,2,0,1,3,2
I_RoundsInTheGame .by 10 ;how many rounds in the current game
I_seppukuVal .by 75
I_mountainDeltaH .by 3
I_mountainDeltaL .by $ff
;----------------------------------------------------
; 4x4 text buffer
I_ResultLineBuffer
dta d" ", $ff
I_LineHeader1
dta d"# ROUND: "
I_RoundNrDisplay
dta d" #", $ff
initialvaluesCount = *-initialvaluesstart ; MAX 128 bytes !
;=================================================================================== ;===================================================================================
;==========================CONSTANT TABLES, do not erase!=========================== ;==========================CONSTANT TABLES, do not erase!===========================
;=================================================================================== ;===================================================================================
TankColoursTable .BYTE $88,$cc,$38,$1c,$6a,$02 TankColoursTable .BYTE $58,$2a,$96,$ca,$7a,$de
TankStatusColoursTable .BYTE $80,$c0,$30,$10,$60,$00 TankStatusColoursTable .BYTE $54,$24,$94,$c4,$74,$d4
TankShapesTable .BYTE char_tank1___________,char_tank2___________,char_tank3___________
.BYTE char_tank1___________,char_tank2___________,char_tank3___________
dliColorsBack dliColorsBack
:10 .by $02,$00 :10 .by $02,$00
dliColorsFore dliColorsFore
.by $0a .by $0a
TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor
TextForegroundColor = $0c
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,70,99 MaxWindTable .by 5,20,40,70,99
RoundsTable .by 10,20,30,40,50 RoundsTable .by 10,20,30,40,50
AIForceTable .wo 375,470,630,720,820 ; starting shoot forces for different gravity
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)
@@ -37,72 +55,46 @@ 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
;--------------
XtankOffsetGO_L
.by 6,56,106,156,206,0
XtankOffsetGO_H
.by 0,0,0,0,0,1
;-----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
@@ -217,332 +209,18 @@ 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
.BY %001 ; 00000000
.BY %101 ; 00000001
.BY %100 ; 00000010
.BY %100 ; 00000011
.BY %100 ; 00000100
.BY %100 ; 00000101
.BY %100 ; 00000110
.BY %100 ; 00000111
.BY %000 ; 00001000
.BY %000 ; 00001001
.BY %000 ; 00001010
.BY %000 ; 00001011
.BY %100 ; 00001100
.BY %000 ; 00001101
.BY %000 ; 00001110
.BY %000 ; 00001111
.BY %000 ; 00010000
.BY %000 ; 00010001
.BY %000 ; 00010010
.BY %000 ; 00010011
.BY %000 ; 00010100
.BY %000 ; 00010101
.BY %000 ; 00010110
.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
; right angles from 0 (vertically up) to 90 (horizontally to the right)
.by 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,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 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0 ; not used
; left angles from 90 (horizontally to the left) to 1 (vertically up)
.by 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,0,0,0
.by 0,0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0
.by 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
.by 1,1,1,1,1,1,1,1,1
.by 2,2,2,2,2,2,2,2,2,2
.by 3,3,3,3,3,3,3,3,3,3,3
EndOfTheBarrelY
; right angles from 0 (vertically up) to 90 (horizontally to the right)
.by 7,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
.by 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
.by 6,6,6,6,6,6,6,6,6
.by 5,5,5,5,5,5,5,5,5,5
.by 4,4,4,4,4,4,4,4,4,4,4,4,4
.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 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0,0,0,0,0,0,0 ; not used
.by 0,0,0,0 ; not used
; left angles from 90 (horizontally to the left) to 1 (vertically up)
.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"
@@ -551,7 +229,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________
@@ -601,22 +278,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_Bouncy_Castle__
.by >price_Fuel_Tank______ .by >price_Long_Barrel____
.by >price_Contact_Trigger .by >price_Nuclear_Winter_
.by >price_White_Flag_____
WeaponPriceL WeaponPriceL
.by <price_Baby_Missile___ .by <price_Baby_Missile___
@@ -667,22 +344,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_Bouncy_Castle__
.by <price_Fuel_Tank______ .by <price_Long_Barrel____
.by <price_Contact_Trigger .by <price_Nuclear_Winter_
.by <price_White_Flag_____
;------------------------------------------------- ;-------------------------------------------------
; 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
@@ -693,18 +370,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_____
@@ -716,9 +393,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
@@ -739,74 +416,70 @@ 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 2 ;Long_Barrel____
.by 25 ;Contact_Trigger .by 1 ;Nuclear_Winter_
.by 1 ;_____________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
dta 1 ;"Baby Missile " ; 0 ; "Baby Missile ","Missile ","Baby Nuke ","Nuke "
dta 1 ;"Missile " ; 1 ; "LeapFrog ","Funky Bomb ","MIRV ","Death's Head "
dta 1 ;"Baby Nuke " ; 2 .by %01111111
dta 1 ;"Nuke " ; 3 ; "Napalm ","Hot Napalm ","Tracer ","Smoke Tracer "
dta 1 ;"LeapFrog " ; 4 ; "Baby Roller ","Roller ","Heavy Roller ","Riot Charge "
dta 1 ;"Funky Bomb " ; 5 .by %11001110
dta 1 ;"MIRV " ; 6 ; "Riot Blast ","Riot Bomb ","Heavy Riot Bomb ","Baby Digger "
dta 1 ;"Death's Head " ; 7 ; "Digger ","Heavy Digger ","Baby Sandhog ","Sandhog "
dta 0 ;"Napalm " ; 8 .by %00000000
dta 0 ;"Hot Napalm " ; 9 ; "Heavy Sandhog ","Dirt Clod ","Dirt Ball ","Ton of Dirt "
dta 0 ;"Tracer " ; 10 ; "Liquid Dirt ","Dirt Charge ","Earth Disrupter ","Plasma Blast "
dta 0 ;"Smoke Tracer " ; 11 .by %00000000
dta 1 ;"Baby Roller " ; 12 ; "Laser "
dta 1 ;"Roller " ; 13 .by %00000000
dta 1 ;"Heavy Roller " ; 14 .by 0 ; offset to defensives
dta 0 ;"Riot Charge " ; 15 ; "White Flag ","Battery ","Bal Guidance ","Horz Guidance "
dta 0 ;"Riot Blast " ; 16 ; "Vert Guidance ","Lazy Boy ","Parachute ","Strong Parachute"
dta 0 ;"Riot Bomb " ; 17 .by %01000011
dta 0 ;"Heavy Riot Bomb " ; 18 ; "Mag Deflector ","Shield ","Heavy Shield ","Force Shield "
dta 0 ;"Baby Digger " ; 19 ; "Super Mag ","Bouncy Castle ","Long Barrel ","Nuclear Winter "
dta 0 ;"Digger " ; 20 .by %11110100
dta 0 ;"Heavy Digger " ; 21
dta 0 ;"Baby Sandhog " ; 22
dta 0 ;"Sandhog " ; 23
dta 0 ;"Heavy Sandhog " ; 24
dta 0 ;"Dirt Clod " ; 25
dta 0 ;"Dirt Ball " ; 26
dta 0 ;"Ton of Dirt " ; 27
dta 0 ;"Liquid Dirt " ; 28
dta 0 ;"Dirt Charge " ; 29
dta 0 ;"Earth Disrupter " ; 30
dta 0 ;"Plasma Blast " ; 31
dta 1 ;"Laser " ; 32
dta 0 ;"----------------" ; 33
dta 0 ;"----------------" ; 34
dta 0 ;"----------------" ; 35
dta 0 ;"----------------" ; 36
dta 0 ;"----------------" ; 37
dta 0 ;"----------------" ; 38
dta 0 ;"----------------" ; 39
dta 0 ;"----------------" ; 40
dta 0 ;"----------------" ; 41
dta 0 ;"----------------" ; 42
dta 0 ;"----------------" ; 43
dta 0 ;"----------------" ; 44
dta 0 ;"----------------" ; 45
dta 0 ;"----------------" ; 46
dta 0 ;"----------------" ; 47
PurchaseMeTable2 ;weapons good to be purchased by the robot (Cyborg)
;the comment is an index in the tables
; "Baby Missile ","Missile ","Baby Nuke ","Nuke "
; "LeapFrog ","Funky Bomb ","MIRV ","Death's Head "
.by %00110001
; "Napalm ","Hot Napalm ","Tracer ","Smoke Tracer "
; "Baby Roller ","Roller ","Heavy Roller ","Riot Charge "
.by %01000000
; "Riot Blast ","Riot Bomb ","Heavy Riot Bomb ","Baby Digger "
; "Digger ","Heavy Digger ","Baby Sandhog ","Sandhog "
.by %00000000
; "Heavy Sandhog ","Dirt Clod ","Dirt Ball ","Ton of Dirt "
; "Liquid Dirt ","Dirt Charge ","Earth Disrupter ","Plasma Blast "
.by %00000000
; "Laser "
.by %00000000
.by 0 ; offset to defensives
; "White Flag ","Battery ","Bal Guidance ","Horz Guidance "
; "Vert Guidance ","Lazy Boy ","Parachute ","Strong Parachute"
.by %01000001
; "Mag Deflector ","Shield ","Heavy Shield ","Force Shield "
; "Super Mag ","Bouncy Castle ","Long Barrel ","Nuclear Winter "
.by %10110100
;------------------------------------------------- ;-------------------------------------------------
; Screen codes of icons (chars) representing a given weapon ; Screen codes of icons (chars) representing a given weapon
@@ -817,8 +490,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,$1d,$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
@@ -869,26 +542,43 @@ 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"Bouncy Castle " ; 61 - with shield and energy
dta d"Contact Trigger " ; 62 dta d"Long Schlong " ; 62
dta d"White Flag " ; 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 ; Bouncy Castle
.by 00 ; Long Barrel
.by 00 ; Nuclear Winter
weaponsOfDeath weaponsOfDeath
dta 1,2,3,7,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 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
@@ -908,5 +598,50 @@ scrcodes
dta d"qrstuvwx" dta d"qrstuvwx"
dta d"yz123456" dta d"yz123456"
dta d"7890." ; "-" dta d"7890." ; "-"
;-----------------------------------
gameOverSpritesTop
; end of the Gover sprites by number of players
; 1 2 3 4 5 6
.by 130,130,136,142,148,154
;-------decimal constans
zero
digits dta d"0123456789"
nineplus dta d"9"+1
space dta d" "
;------credits
CreditsStart
dta d" "*
dta d"You were playin",d"g"*
dta d"Scorc",d"h"*
dta d"Warsaw, Miam",d"i"*
dta d"2000-202",d"2"*
dta d" "*
dta d"B",d"y"*
dta d" "*
dta d"Programmin",d"g"*
dta d"Tomasz 'Pecus' Peck",d"o"*
dta d"Pawel 'pirx' Kalinowsk",d"i"*
dta d" "*
dta d"SFX, Music and Suppor",d"t"*
dta d"Michal 'Miker' Szpilowsk",d"i"*
dta d" "*
dta d"Additional Musi",d"c"*
dta d"Mario 'Emkay' Kri",d"x"*
dta d" "*
dta d"Code Optimizatio",d"n"*
dta d"Piotr '0xF' Fusi",d"k"*
dta d" "*
dta d"Ar",d"t"*
dta d"Adam Wachowsk",d"i"*
dta d"Krzysztof 'Kaz' Ziembi",d"k"*
dta d" "*
dta d"Ideas and Q",d"A"*
dta d"Bocianu, Probabilitydragon, EnderDude",d","*
dta d"Beeblebrox, KrzysRog, lopezpb, Dracon",d","*
dta d"brad-colbert, archon800, nowy80",d","*
dta d"Shaggy the Atarian, RetroBorsuk, ZP",d"H"*
dta d" "*
dta d"Stay tuned for the FujiNet version",d"!"*
dta d" "*
CreditsEnd
.endif .endif
+138 -37
View File
@@ -1,14 +1,38 @@
; @com.wudsn.ide.asm.mainsourcefile=scorch.asm ; @com.wudsn.ide.asm.mainsourcefile=scorch.asm
;----------------------------------------------
; Player/missile memory
PMGraph = $0800
display = $1010 ;screen takes $2K due to clearing routine
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
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
StandardBarrel = 6 ; standard tank barrel length
LongBarrel = 20 ; long barrel length
TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor
TextForegroundColor = $0A
;character codes for symbols (tank, parachute, etc. )
char_parachute_______ = $02
char_flag____________ = $1e
char_flame___________ = $14
char_clear_flame_____ = $1c
char_digger__________ = $04
char_sandhog_________ = $0c
char_sandhog_offset = char_sandhog_________ - char_digger__________
char_tank1___________ = $20
char_tank2___________ = $24
char_tank3___________ = $28
;Weapon prices (*10 on screen) ;Weapon prices (*10 on screen)
price_Baby_Missile___ = 0 ;_0 price_Baby_Missile___ = 0 ;_0
@@ -19,31 +43,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,22 +83,87 @@ 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_Bouncy_Castle__ = 512 ;_61
price_Contact_Trigger = $ffff ;_62 price_Long_Barrel____ = 2100 ;_62
price_White_Flag_____ = $0 ;_63 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_Bouncy_Castle__ = 61
ind_Long_Barrel____ = 62
ind_Nuclear_Winter_ = 63
;-------------------------------- ;--------------------------------
; names of RMT instruments (sfx) ; names of RMT instruments (sfx)
;-------------------------------- ;--------------------------------
@@ -106,3 +195,15 @@ sfx_keyclick = $18 ;y
sfx_shoot = $19 ;z sfx_shoot = $19 ;z
sfx_seppuku = $1a ;1 sfx_seppuku = $1a ;1
sfx_liquid_dirt = $1b ;2 sfx_liquid_dirt = $1b ;2
sfx_battery = $1c ;3
sfx_white_flag = $1d ;4
sfx_long_barrel = $1e
;--------------------------------
; RMT songs (lines)
;--------------------------------
song_silencio = $00
song_main_menu = $02
song_ingame = $06
song_round_over = $0b
song_ending_looped = $0e
song_supermarket = $1b
+62 -11
View File
@@ -31,6 +31,11 @@ OptionsDL
.word OptionsScreen .word OptionsScreen
.byte $30,$02,$02,$70 .byte $30,$02,$02,$70
:maxOptions .by $02,$10 :maxOptions .by $02,$10
:(9-maxOptions) .by $70,$10
.byte $80
.byte $4f
.word (display+140*40)
:21 .by $0f ;76
.byte $41 .byte $41
.word OptionsDL .word OptionsDL
;------------------------ ;------------------------
@@ -89,27 +94,28 @@ 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
;----------------------------------------------- ;-----------------------------------------------
;Screen displays go first to avoid crossing 4kb barrier ;Screen displays go first to avoid crossing 4kb barrier
;----------------------------------------------- ;-----------------------------------------------
OptionsScreen OptionsScreen
dta d"Welcome to Scorch ver. " dta d"Welcome to Scorch v. "
build ; 3 bytes from scorch.asm (fancy method) :) build ; 4 bytes from scorch.asm (fancy method) :)
dta d" (un)2000-2022" dta d" (un)2000-2022"
dta d" Please select option with cursor keys " dta d" Please select option with cursor keys "
dta d" and press (Return) to proceed " dta d" and press (Return) to proceed "
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
@@ -127,6 +133,7 @@ MoreDown
ListOfWeapons ListOfWeapons
:36 dta d" " :36 dta d" "
ListOfWeapons1End ListOfWeapons1End
;GameOverResults ; reuse after game (remember to clear on start new)
ListOfDefensiveWeapons ListOfDefensiveWeapons
:16 dta d" " :16 dta d" "
ListOfDefensiveWeaponsEnd ;constant useful when clearing ListOfDefensiveWeaponsEnd ;constant useful when clearing
@@ -136,15 +143,50 @@ 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 $00
; ------------------------------------------------- ; -------------------------------------------------
.ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!!
;-----------------------------------------------
GameOverResults = display+$0ff0 ; reuse after game
Credits = GameOverResults +(6*40)
CreditsLastLine = Credits + (41*40)
GameOverDL
.byte $70,$40
.byte $47 ; 16 gr8 lines
.word GameOverTitle
.byte $4f ; 1 line
.word display+(40*72)
:28 .byte $0f ; 28 lines
.byte $0f+$80
.byte $4f ; 1 line
.word display+(40*32)
:30 .byte $0f ; 30 lines
.byte $0f+$80 ; 1 line
.byte $4f ; 1 line
.word display+(40*72)
:7 .byte $0f ; 7 lines
.byte $00+$80 ; 1 line
.byte $42 ; 7 tekst lines
.word GameOverTitle2
.byte $00+$80
.byte $42
.word GameOverResults
:5 .byte $00+$80,$02
.byte $70+$80
.byte $42+$20 ; VSCRL
DLCreditsAddr
.word Credits
:6 .byte $02+$20
.byte $02
.byte $41
.word GameOverDL
NameScreen NameScreen
dta d" Enter names of players " dta d" Enter names of players "
dta d" Tank 01 Name:" dta d" Tank 01 Name:"
@@ -167,10 +209,19 @@ textbuffer
; 0123456789012345678901234567890123456789 ; 0123456789012345678901234567890123456789
dta d"Player: " dta d"Player: "
dta d"Energy: Angle: Force: " dta d"Energy: Angle: Force: "
dta d" Round: Wind: " dta d"Round: Wind: "
textbuffer2 textbuffer2
dta d"Player: Cash: " 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
GameOverTitle
dta d" game over "*
GameOverTitle2
dta d" Player Points Hits Earned Money "
.endif .endif
+756 -117
View File
File diff suppressed because it is too large Load Diff
+157
View File
@@ -0,0 +1,157 @@
Podstawowa instrukcja:
Grać można przy użyciu klawiatury (wszystkie funkcjonalności) lub joysticka (wszystkie funkcjonalności niezbędne w rozgrywce).
1 Wybór opcji gry.
Na pierwszym ekranie możemy skonfigurować opcje rozgrywwki:
- ilość graczy (2 - 6) obejmuje tak ludzi jak graczy sterowanych przez komputer
- początkową ilość gotówki każdego z graczy (8k to wybrana przez nas wartość optymalna, jecz przy krótkich rozgrywkach warto wybrać większą wartość)
- grawitacja
- maksymalna siła wiatru (wiatr jest losowany na początku każdej z rund, tu możemy wybrać jak silny może być)
- ilość rozgrywanych rund
- szybkość lotu pocisków (nie ma wpływu na tor lotu - zmienia jedynie widoczną prędkość rysowania - nie zmienia nic w samej rozgrywce)
- częstotliwość samobójstw :) - jeśli przez ileś tur gra nie odnotowała trafień (czołgi ciągle strzelają niecelnie) jeden z takich pudłujących czołgów popełnia samobójstwo - tu określamy jak długo mogą “strzelać w próżnię” :) - jeśli grają tylko ludzie optymalne ustawienie to “norm”, w przypadku graczy sterowanych przez komputer… wedle uznania.
- wysokość (i pofałdowanie) gór od prawie płaskich (NL), do strzelistych i wysokich (NP)
Wybór opcji klawiszami kursora lub joystickiem.
klawisz [RETURN] lub przycisk Joysticka przechodzi do następnego ekranu.
2. Wprowadzanie nazwy graczy i wybór poziomu graczy sterowanych przez komputer
Drugi ekran powtarza się dla każdego z graczy można na nim klawiszami kursora lub joysticjiem wybrać czy danym czołgiem będzie kierował człowiek (opcja HUMAN) czy też kompute (pozostałe opcje). Jednocześnie z klawiatury można wprowadzić nazwę wybranego gracza.
Po naciśnięciu klawisza [RETURN] lub przycisku Joysticka ekran przechodzi na następnego gracza aż zostaną wybrane poziomy trudności dla każdego z nich.
Jeśli nazwa nie zostanie wpisana (bo np operujemy wyłącznie joystickiem), to zostanie uzupełniona nazwą domyślną.
3. Ekran zakupów (przed każdą rundą)
Na tym ekranie można dokonywać zakupów broni ofensywnych i defensywnych. Widoczne są tylko te bronie na które gracza stać wraz z informacją o cenie i ilości jednostek danej broni, którą za ten cenę otrzymamy. Informacje na ekranie nie wymagają chyba więcej opisu. Po listach poruszamy się klawiszami kursora (góra i dół) lub joystickiem, klawisz [TAB] lub strzałka w lewo czy też ruch joystickiem w lewo zmieniają ekran na bronie defensywne lub ofensywne, klawisz [SPACJA] lub strzałka w prawo a także joystick w prawo realizują zakup wskazanej broni.
Klawisz [RETURN] lub przycisk joysticka przechodzi do ekranu zakupów następnego gracza.
(oczywiście dla graczy komputerowych ten ekran się nie pojawia)
4. Główny ekran gry
W linii statusowej widoczna jest informacja o tym który z graczy aktualnie może oddać strzał oraz zestaw innych informacji:
- nazwa czołgu gracza
- wybrana aktualnie broń ofensywna
- pozostała ilość punktów energii gracza i jeśli ma on aktywną broń defensywną posiadającą swój zasób energii - w nawiasie ten zasób
- ustawiony przez gracza kąt nachylenia lufy i kierunek jej nachylenia
- ustawiona przez gracza siła strzału (maksymalna siła strzału jest ograniczana przez energię gracza - nie może przekroczyć energii * 10 . Oznacza to, że mając małą ilość energii możemy oddać słabsze strzały
- numer aktualnej rundy rozgrywki
- prędkość i kierunek wiatru
- w nawiasie nazwę aktywnej broni defensywnej - jeśli jest jakaś aktywowana przez gracz
Tutaj klawiszologia jest prosta, klawisze kursora lub joustick: lewo/prawo - zmiana kąta nachylenia lufy, góra/dół - zmiana ustawienia siły strzału.
[SPACJA] lub przycisk joysticka naciśnięte krótko - oddanie strzału
[TAB] - wybór broni ofensywnej (ta opcja nie jest dostępna bezpośrednio joystickiem - trzeba wybrać Inventory)
klawisz [I] lub dłuższe przytrzymanie przycisku joysticka - przejście do Inventory
Inventory to ekran (a w zasadzie dwa) bliźniaczo podobny do ekranu zakupów. Zasady poruszania się są identyczne z tym, że tu nie kupujemy broni, ale wybieramy jedną z ofensywnych, którą będziemy strzelać lub aktywujemy broń defensywną.
Klawisz [M] - wyłączenie/włączenie muzyki w tle
Klawisz [S] - wyłączenie/włączenie dźwięków efektów.
Klawisz [O] - wymuszenie zakończenia gry (Game Over). W podsumowaniu wyników nie jest brana pod uwagę przerwana właśnie runda rozgrywki, a wyłącznie rundy zakończone wcześniej. Odpowiada to wciśnięciu klawisza [ESC] z tą różnicą, że wyświetlane jest podsumowanie oraz creditsy.
W czasie całej gry w dowolnym momencie (chyba że akurat gra komputer, wtedy czasem trzeba chwilę poczekać) można nacisnąć klawisz [ESC], który umożliwia przerwanie gry i powrót na początek (oczywiście jest zabezpieczenie przed przypadkowym naciśnięciem).
A tutaj zręby opisu działania poszczególnych broni, zasad punktacji itp:
—-----------------------
Najpierw co wiemy o energii czołgów
- Czołgi mają energię (a Ogry warstwy - jak cebula) - na starcie 99 jednostek
- Energii czołgom ubywa na 3 sposoby:
1. 1 jednostka po oddaniu każdego strzału
2. w czasie spadania (jeden piksel w dół 2 jednostki)
3. w chwili trafienia w czołg lub obok niego jakiegoś pocisku - i tu ilość odejmowanej energii zależy od odległości od centrum eksplozji i typu/siły rażenia pocisku.
Jak działa odejmowanie energii (i zarabianie kasy!)
Po każdej rundzie wyliczana jest ilość zdobytych/straconych pieniędzy robione jest to na podstawie dwóch zmiennych gromadzonych przez każdy z czołgów w trakcie rundy. Te zmienne to:
gain - energia "przechwycona" od trafionych czołgów (także jeśli trafimy w samego siebie :) i tu haczyk, jeśli pozostało nam bardzo mało energii opłacalne może być trafienie w siebie mocną bronią!
loose - energia stracona w wyniku eksplozji/upadku (i tu ważne liczona jest całkowita utrata energii nawet jeśli czołg ma w chwili trafienia mniej).
Dodatkowo czołg który wygrał rundę ma parametr gain (przechwyconej od trafionych czołgów energii) zwiększany o pozostałą mu na koniec rundy energię (bo nie zginął i powinien ją mieć - choć bywa też inaczej :) )
Konkretnie:
Po każdej rundzie:
money = money + (2 * (gain+energy))
money = money - loose
if money <0 then money=0
(na starcie każdej rundy gain i loose mają wartość 0)
W czasie rundy, jeśli w wyniku strzału oddanego przez czołg inny czołg zostanie trafiony, czołg oddający strzał "dostaje energię" zabraną czołgowi trafionemu.
czołg oddający strzał:
gain = gain + EnergyDecrease
czołg trafiony:
loose = loose + EnergyDecrease
gdzie EnergyDecrease to utrata energii w wyniku trafienia.
Oczywiście jednocześnie trafiony czołg traci ilość energii zapisaną w EnergyDecrease, z tym że tutaj strata nie może przekroczyć posiadanej energii.
Uwaga! Ekranowa reprezentacja pieniędzy ma na końcu dopisane dodatkowe 0 więc faktyczne mamy 10 razy więcej kasy niż wynika z powyższych obliczeń :)
Jak działa trafienie.
Każda broń, która skutkuje eksplozją, ma swój promień rażenia (ExplosionRadius).
Po eksplozji każdy czołg w jej zasięgu traci energię.
Działa to tak, że obliczana jest odległość trafianego czołgu od centrum eksplozji, zmniejszony o tę odległość ExplosionRadius jest mnożony przez 8 i w wyniku otrzymujemy EnergyDecrease.
Czyli w przypadku trafienia centralnie w czołg:
EnergyDecrease = ExplosionRadius * 8
a z każdym pikselem dalej od centrum ubywa o 8 jednostek mniej.
Nie wiem czy to zrozumiałe - ja rozumiem :)
Przykładowo, jeśli czołg zostanie trafiony centralnie przy pomocy Baby Missile - odejmowane jest mu 88 jednostek energii (11 * 8), co także oznacza, że przy trafieniu tym pociskiem w odległości 12 pikseli od czołgu - nie traci on energii wcale.
A oto wartości promienia rażenia (ExplosionRadius) dla poszczególnych broni:
Baby Missile - 11
Missile - 17
Baby Nuke - 25
Nuke - 31
LeapFrog - 17 15 13
Funky Bomb - 21 11 (* 5)
MIRV - 17 (* 5)
Death's Head - 31 (* 5)
Napalm - x 40 (ta broń jest inna i nie jest wyznaczana odległość od centrum, po prostu każdy czołg znajdujący się w zasięgu płomieni traci 40 jednostek energii - zmienna ExplosionRadius nie jest używana)
Hot Napalm - x 80 (zasada taka jak w Napalm)
Baby Roller - 11
Roller - 21
Heavy Roller - 31
Riot Charge - 31
Riot Blast - 0 (tak na prawdę - 61 ale przy tych broniach nie jest brana pod uwagę przy liczeniu ubytku energii tylko szerokości gruntu do opadnięcia)
Riot Bomb - 17
Heavy Riot Bomb - 29
Baby Digger - 0 (60 - jak w Riot Blast)
Digger - 0 (60 - jak wyżej)
Heavy Digger - 0 (60 - jak wyżej)
Baby Sandhog - 0 (60 - jak wyżej)
Sandhog - 0 (60 - jak wyżej)
Heavy Sandhog - 0 (60 - jak wyżej)
Dirt Clod - 12
Dirt Ball - 22
Ton of Dirt - 31
Liquid Dirt - 0 (może warto to zmienić?)
Dirt Charge - 0 (61 - jak wyżej)
Laser - x 100 (ale tu także jest inaczej - równo 100 tylko w przypadku bezpośredniego trafienia, zmienna ExplosionRadius nie jest używana, więc nie ma mnożenia przez 8 - po prostu odejmujemy 100 jednostek energii - czyli czołg zawsze ginie).
Duże punkty otrzymane przez gracza to ilość czołgów, które zginęły wcześniej niż on. Jeśli któryś z innych czołgów skapitulował wcześniej (Biała Flaga) nie jest doliczany do tych które zginęły i nie daje punktów.
Tylko te punkty decydują o kolejności w podsumowaniu
A teraz bronie defensywne:
White Flag - powoduje poddanie gracza (może czasem przydać się w sytuacji beznadziejnej). Zaletą jest to, że poddając się nie dajemy dużego punktu przeciwnikom i nie powodujemy, że któryś zyska na tym, że nas zgładzi, ograniczamy też stratę swojej energii czyli także kasy. I tu także ważna uwaga - to jedyna broń defensywna, którą można deaktywować. Wystarczy ponownie wejść do inventory i jeszcze raz wybrać jej aktywację.
Battery - w momencie aktywacji doładowuje energię czołgu do pełna (99 jednostek) i jednocześnie jest to jedyna broń defensywna, która nie deaktywuje innych broni defensywnych w przypadku jej użycia.
Parachute - nie chroni przed ubytkiem energii z powodu sąsiedniej eksplozji, powoduje że nie ubywa energii w czasie JEDNEGO spadania. Po takim upadku deaktywuje się i trzeba aktywować nowy spadochron.
Shield - najprostsza osłona działa dokładnie przeciwnie niż Parachute, nie chroni przed ubytkiem energii w czasie spadania, chroni za to przed ubytkiem energii spowodowanym JEDNĄ sąsiednią eksplozją. Chroni jednorazowo, bez znaczenia jak silna jest eksplozja (czy jest to tylko "draśnięcie", czy też bezpośrednie trafienie atomówką) i od razu po niej deaktywuje się.
Heavy Shield - osłona z własną energią (na starcie 99 jednostek), działa tak samo jak Shield (nie chroni przed upadkiem) z tym wyjątkiem, że ma własny zasób energii. Przy eksplozji w pierwszej kolejności zmniejszana jest energia tej osłony i jeśli dojdzie ona do 0 to osłona deaktywuje się i dalej zmniejszana jest energia czołgu. W związku z takim działaniem, czołg z tym typem osłony można "zabić" podkopując go, bo spadanie zmniejsza energię czołgu a nie osłony.
Force Shield - najmocniejsza osłona - działa tak jak Heavy Shield tyle że połączona z Parachute. Co ważne w jej przypadku upadek nie zabiera energii osłonie ani czołgowi. Zabierają ją tylko trafienia.
Bouncy Castle - broń agresywna :) . Działa następująco. W przypadku bezpośredniego trafienia w czołg (i osłonę) powoduje "odbicie" pocisku w przeciwnym kierunku z tą samą siłą z jaką był wystrzelony. W przypadku braku wiatru i różnicy poziomów broń trafia wtedy w czołg, który ją wystrzelił. Po takim odbiciu deaktywuje się. W związku z tym, że broń ta reaguje w ten sposób tylko na precyzyjne trafienia, jest także osłoną odpowiadającą działaniu Heavy Shield i ma na starcie 99 jednostek (prawdopodobnie trzeba będzie przemyśleć tę wartość i dać tu mniejszą).
Mag Deflector - druga broń agresywna :) . W przypadku bezpośredniego trafienia w czołg (i osłonę) powoduje przesunięcie punktu trafienia losowo w lewo lub prawą stronę chronionego czołgu, ale niezbyt daleko, więc można dostać "odłamkiem" przy silniejszej broni. Tak jak w przypadku Bouncy Castle jest także osłoną odpowiadającą działaniu Heavy Shield i ma na starcie 99 jednostek (prawdopodobnie i tutaj trzeba będzie przemyśleć tę wartość i dać mniejszą).
Nuclear Winter - nic nie dodaje, nic nie zabiera :) - w zasadzie to broń nie tyle defensywna co obosieczna. Zasypuje teren opadem "radioaktywnym", który jest zwyczajną glebą. Jeśli nie mamy pod ręką żadnej broni odkopującej teren i do tego osłony (najlepiej jednorazowej), to po takim "opadzie" będzie trzeba strzelić do siebie - bo będąc pod ziemią inaczej się nie da. Ewentualnie pozostaje zawsze White Flag.
Long Schlong - broń specjalna :) - kosztuje dużo, nie bardzo w czymkolwiek pomaga (poza ewentualnym odkopaniem się ale tylko przy niewielkim przysypaniu ale fanie się nazywa i wygląda :) - Można ją aktywować niezależnie od innych broni defensywnych i pozostaje aktywna do końca rundy (nie da się jej deaktywować).
W związku z odmiennym działaniem broni MIRV, Auto Defense i Mag Deflector wykorzystują tylko funkcję osłony przy trafieniu tą bronią.
Dodatkowo, żadna z osłon nie chroni przed Napalmem. Auto Defense czy Mag Deflector przy bezpośrednim trafieniu odbije je lub przeniesie obok, ale wystarczy trafić bardzo blisko czołgu i nie zadziała jego osłona.
Bronie White Flag i Nuclear Winter po aktywacji wymagają uruchomienia, jest to realizowanie przez "oddanie strzału" po aktywacji tej broni. Oczywiście strzał bronią ofensywną nie jest wtedy oddawany, a jedynie uruchamiana jest wybrana broń defensywna.
Można mieć aktywną tylko jedną broń defensywną w danej chwili (za wyjątkiem Long Schlong oczywiście :) ). Zawsze przed oddaniem strzału możemy zmienić decyzję i aktywować inną broni defensywną czy też dezaktywować White Flag.
Oczywiście aktywacja broni w momencie kiedy mamy już aktywowaną jakąś inną powoduje utratę tej poprzedniej (nie ma zwrotów :) ).
+4 -3
View File
@@ -10,9 +10,9 @@
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
@@ -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
+12 -9
View File
@@ -76,16 +76,16 @@
.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 ?zero LDA VCOUNT
cmp #6 ; START KEY beq ?zero
bpl ?WA
sbc #10 ; last lines correction
?WA cmp VCOUNT
beq ?WA
bcc ?WA
?WFRAME cmp VCOUNT
beq ?nowait beq ?nowait
LDA VCOUNT bcs ?WFRAME
ldy vcount
?WA cpy VCOUNT
BEQ ?WA
?wframe
cmp vcount
bne ?wframe
?nowait ?nowait
.ENDM .ENDM
;------------------------------------- ;-------------------------------------
@@ -104,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
+644 -299
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+984 -380
View File
File diff suppressed because it is too large Load Diff
+112 -80
View File
@@ -8,37 +8,44 @@
; 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
;===================================================== ;=====================================================
;-------------------------------------------------- OneTimeZeroVariables
;Variables OneTimeZeroVariablesCount = variablesToInitialize-OneTimeZeroVariables ; MAX 128 bytes !
;-------------- noMusic .by 0 ; 0 - play music, $ff - do not play music
TanksNames ; DO NOT ZERO - ticket #24 noSfx .by 0 ; 0 - play SFX, $ff - do not play SFX
;----------------------------------------------------
; Color table for Game Over Screen (created in a gameover routine)
.by $00 ; labels line color
GameOverColoursTable .BYTE $80,$40,$c4,$20,$c0,$e4
;----------------------------------------------------
TanksNames ; DO NOT ZERO ON RESTART GAME - ticket #24
:6 dta d" " :6 dta d" "
;---------------------------- ;----------------------------------------------------
;Options DO NOT ZERO - ticket #27
OptionsTable .by 0,0,2,2,0,1,3
RoundsInTheGame .by 10 ;how many rounds in the current game
seppukuVal .by 75
;--------------------------------------------------
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]
;----------------------------------- ;----------------------------------------------------
variablesToInitialize
;Options DO NOT ZERO ON RESTART GAME - ticket #27
OptionsTable .by 0,1,2,2,0,1,3,2
RoundsInTheGame .by 10 ;how many rounds in the current game
seppukuVal .by 75
mountainDeltaH .by 3
mountainDeltaL .by $ff
;----------------------------------------------------
; 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) drawFunction .ds 1 ; 0 - plot, %10000000 - LineLength (N), %01000000 - DrawCheck (V)
;-------------- ;--------------
escFlag .ds 1
;--------------
sfx_effect .ds 1
;--------------
noDeathCounter .ds 1 noDeathCounter .ds 1
;-------------- ;--------------
OptionsY .ds 1 ;vertical position of cursor on Options screen OptionsY .ds 1 ;vertical position of cursor on Options screen
@@ -47,30 +54,32 @@ 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 means 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]
@@ -81,9 +90,15 @@ ResultsTable ;the results in the gameeeeee
.DS [MaxPlayers] .DS [MaxPlayers]
TempResults TempResults
.DS [MaxPlayers] .DS [MaxPlayers]
CurrentResult DirectHitsH
.DS 1 .DS [MaxPlayers]
;----------------------------------- DirectHitsL
.DS [MaxPlayers]
EarnedMoneyH
.DS [MaxPlayers]
EarnedMoneyL
.DS [MaxPlayers]
;----------------------------------------------------
ForceTableL ;shooting Force of the tank during the round ForceTableL ;shooting Force of the tank during the round
.DS [MaxPlayers] .DS [MaxPlayers]
ForceTableH ForceTableH
@@ -93,35 +108,34 @@ MaxForceTableL ;Energy of the tank during the round
.DS [MaxPlayers] ;1000 is the default .DS [MaxPlayers] ;1000 is the default
MaxForceTableH MaxForceTableH
.DS [MaxPlayers] .DS [MaxPlayers]
;----------------------------------- ;----------------------------------------------------
BarrelLength ;length of the tank barrel - dont forget to set it to 6 at round start!
AngleTable ;Angle of the barrel of each tank during the round
.DS [MaxPlayers] .DS [MaxPlayers]
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
@@ -130,17 +144,20 @@ ytankstable ;Y positions of tanks (lower left point)
.DS [MaxPlayers] .DS [MaxPlayers]
LowResDistances ; coarse tank 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]
;----------------------------------- ;----------------------------------------------------
TargetTankNr ; Target tank index (for AI routines)
.DS 1
;----------------------------------------------------
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
@@ -173,14 +190,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
@@ -193,7 +210,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
@@ -205,12 +225,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
@@ -224,7 +240,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]
@@ -242,24 +258,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
@@ -275,17 +289,17 @@ 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 5
;xmissile ;xmissile
ExplosionRadius .DS 2 ;because when adding in xdraw it is double byte ExplosionRadius .DS 2 ;because when adding in xdraw it is double byte
@@ -297,7 +311,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)
@@ -324,7 +338,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
@@ -333,8 +347,27 @@ TextNumberOff .DS 1
;-------------- ;--------------
TankTempY TankTempY
.DS 1 .DS 1
;----------------------------------------------------
;-------------- single round variables -------------- ;-------------- single round variables --------------
;----------------------------------------------------
singleRoundVars singleRoundVars
;--------------
escFlag .ds 1 ; 0 - Esc or O not pressed, $80 - Esc pressed, $40 - O pressed
;--------------
CurrentResult
.DS 1
;--------------
AngleTable ;Angle of the barrel of each tank during the round
.DS [MaxPlayers]
NewAngle ; used in AI
.DS 1
;previousBarrelAngle
; .DS [MaxPlayers]
EndOfTheBarrelX
.ds 2
EndOfTheBarrelY
.ds 1
;----------------------------------------------------
previousAngle previousAngle
.DS [MaxPlayers] .DS [MaxPlayers]
previousEnergyL previousEnergyL
@@ -343,8 +376,6 @@ previousLeftRange
.DS [MaxPlayers] .DS [MaxPlayers]
previousEnergyH previousEnergyH
.DS [MaxPlayers] .DS [MaxPlayers]
previousRightAngle
.DS [MaxPlayers]
RandBoundaryLow RandBoundaryLow
.ds 2 .ds 2
RandBoundaryHigh RandBoundaryHigh
@@ -352,9 +383,9 @@ RandBoundaryHigh
AngleTablePointer AngleTablePointer
.DS 1 .DS 1
singleRoundVarsEnd singleRoundVarsEnd
;---------------------------------------------- ;----------------------------------------------------
; 4x4 texts ; 4x4 texts
;---------------------------------------------- ;----------------------------------------------------
LineAddress4x4 LineAddress4x4
.DS 2 .DS 2
LineCharNr LineCharNr
@@ -372,8 +403,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
@@ -385,6 +417,6 @@ plot4x4color .DS 1 ;1-white, 0-background
variablesEnd variablesEnd
;---------------------------- ;----------------------------------------------------
.endif .endif
+897 -659
View File
File diff suppressed because it is too large Load Diff