mirror of
https://github.com/Pecusx/scorch_src.git
synced 2026-05-20 22:33:43 +02:00
Initial commit
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
@@ -0,0 +1,24 @@
|
||||
This is free and unencumbered software released into the public domain.
|
||||
|
||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
||||
distribute this software, either in source code form or as a compiled
|
||||
binary, for any purpose, commercial or non-commercial, and by any
|
||||
means.
|
||||
|
||||
In jurisdictions that recognize copyright laws, the author or authors
|
||||
of this software dedicate any and all copyright interest in the
|
||||
software to the public domain. We make this dedication for the benefit
|
||||
of the public at large and to the detriment of our heirs and
|
||||
successors. We intend this dedication to be an overt act of
|
||||
relinquishment in perpetuity of all present and future rights to this
|
||||
software under copyright law.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||
OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
For more information, please refer to <https://unlicense.org>
|
||||
@@ -0,0 +1,67 @@
|
||||
TODO and BUGS file
|
||||
rev. 2013-11-17
|
||||
|
||||
---------------------------------------------------------
|
||||
Known bugs (+ means bug is fixed)
|
||||
+001. when bullet goes straight down very fast it misses the tank
|
||||
it happens only when tank is standing on the bottom of
|
||||
the screen (no groud below)
|
||||
+002. points after the round are not calculated correctly
|
||||
+003. if death's head explodes low, the lowest explosion wraps
|
||||
and appears on the top of the screen
|
||||
004. when parachute is on and the tank dies (e.g. hit by a powerful
|
||||
weapon) the dead (invisible) tank falls on parachute
|
||||
(and uses one parachute more than necessary)
|
||||
005. tank stands still on a one pixel spike - it should fall
|
||||
(possibly all that is necessary is adjust of WhereToSlideTable)
|
||||
006. After some attacks (like MIRV and leapfrog the OffensiveText
|
||||
stays on the screen (and becomes a static decoration)
|
||||
It possibly happens when a tank kills itself with mirv or leapfrog.
|
||||
007. Decreasing of number of bullets after a shoot does not work correctly
|
||||
(e.g. 2 bullets are deducted instead of 1)
|
||||
+008. After a round the last tank sprite stays on the screen.
|
||||
This hurts only when the last tank is under the table with results!
|
||||
009. When result in points is >99 then only 2 first digits are displayed
|
||||
+010. Even MORONS shoot their feet too often - increase min. randomised energy.
|
||||
+011. High flying bullets sometimes cause brief screen garbage - like a DL damaged
|
||||
for a fraction of a frame.
|
||||
Update - these are NOT high flying bullets - it just happens during bullet flight
|
||||
+012. (newly introduced) Death explosions are offset right and possibly up.
|
||||
+013. sometimes demo mode does not work (it stops on results display)
|
||||
+014: FunkyBomb shoots with too high angle
|
||||
015: Only first shoot of FunkyBomb is correct (with smoke and fast),
|
||||
the next are like missiles
|
||||
016: Additional explosions after Frogger are not fallen down
|
||||
017: Observed MIRV loops - it shoots and shoots MIRV all over the screen. Very rare.
|
||||
-018: MINOR: ydraw, yhit, ybyte variable is sometimes treated as WORD, sometimes as BYTE.
|
||||
Making it consistent would save both time and space (not much)
|
||||
REJECTED: too much work - different routines depend on checking high byte.
|
||||
---------------------------------------------------------
|
||||
To do
|
||||
+001. Start each round with a)worst tank or b)random tank
|
||||
(Worst tank starts first)
|
||||
+002. Start each round with random angles (not always 45 degrees left)
|
||||
+003. Add colour of the given tank to the screen
|
||||
E.g. when a given tank is shooting it's colour could be behind
|
||||
tank name on the text screen
|
||||
004. The game has no end!!! Add ending!!!
|
||||
A good idea for an ending - a TIP pic - Red Army taking Berlin :)
|
||||
Another - vector tanks like in BattleZone
|
||||
Another - stickman tankmen
|
||||
005. Add number of rounds to the options menu
|
||||
006. Add sound effects (maybe sampled? or mp0 (sound based on fft))
|
||||
007. There is no deffensive weapon handling (only parachute works,
|
||||
but also provisionally
|
||||
+008. No computer operated opponents - make a frame for AI!!!
|
||||
009. Make AI in the existing frame
|
||||
010. It is impossible to look up a number of parachutes left.
|
||||
+011. Colouring the top status lines in a colour of the active tank.
|
||||
012. Decreased number of bullets should be displayed just after the shoot.
|
||||
013. Check LineTable - possibly it is unnecessarily long
|
||||
+014. Demo mode - when all tanks are CPUs let them play non-stop!
|
||||
(replace waiting for a key-press after a round with a small delay)
|
||||
+015. Switch to mads for easier development (mads speeds it up, no doubt)
|
||||
016. Speed up death's head (e.g.: draw each second circle)
|
||||
-017. Wide screen mode (with scroll?)
|
||||
018. Speed up soil down after soil eating weapons - correctly calculate
|
||||
ranges as now range is very broad even when very little soil is eaten.
|
||||
@@ -0,0 +1,402 @@
|
||||
; @com.wudsn.ide.asm.mainsourcefile=program.asm
|
||||
|
||||
; artificial intelligence of tanks goes here!
|
||||
; in A there is a level of tank's intelligence
|
||||
; 1-moron, ..., 7-cyborg, 8-UNKNOWN (the best of all)
|
||||
; at the moment (2003-08-15) I have no idea how
|
||||
; to program better opponents, but moron is easy -
|
||||
; - shoots random direction and force
|
||||
; greeeting to myself 10 years older in 2013-11-09... still no idea
|
||||
|
||||
;----------------------------------------------
|
||||
MakeLowResDistances .proc
|
||||
; create low precision table of positions
|
||||
; by dividing positions by 4
|
||||
|
||||
ldy #MaxPlayers-1
|
||||
loop
|
||||
lda xtankstableL,y
|
||||
sta temp
|
||||
lda xtankstableH,y
|
||||
sta temp+1
|
||||
|
||||
;= /4
|
||||
:2 lsrw temp
|
||||
lda temp
|
||||
sta LowResDistances,y
|
||||
dey
|
||||
bpl loop
|
||||
rts
|
||||
.endp
|
||||
|
||||
;----------------------------------------------
|
||||
ArtificialIntelligence .proc ;
|
||||
; A - skill of the TankNr
|
||||
; returns shoot energy and angle in
|
||||
; EnergyTable/L/H and AngleTable
|
||||
;----------------------------------------------
|
||||
asl
|
||||
tax
|
||||
:2 dex ;credit KK
|
||||
lda AIRoutines+1,x
|
||||
pha
|
||||
lda AIRoutines,x
|
||||
pha
|
||||
rts
|
||||
.endp
|
||||
;----------------
|
||||
AIRoutines
|
||||
.word Moron-1
|
||||
.word Shooter-1 ;Shooter
|
||||
.word Poolshark-1 ;Poolshark
|
||||
.word Poolshark-1 ;Toosser
|
||||
.word Poolshark-1 ;Chooser
|
||||
.word Poolshark-1 ;Spoiler
|
||||
.word Poolshark-1 ;Cyborg
|
||||
.word Poolshark-1 ;Unknown
|
||||
|
||||
;----------------------------------------------
|
||||
Moron .proc
|
||||
ldx TankNr
|
||||
jsr RandomizeAngle
|
||||
sta NewAngle
|
||||
mwa #80 RandBoundaryLow
|
||||
mwa #800 RandBoundaryHigh
|
||||
jsr RandomizeForce
|
||||
rts
|
||||
.endp
|
||||
;----------------------------------------------
|
||||
Shooter .proc
|
||||
|
||||
ldx TankNr
|
||||
lda PreviousAngle,x
|
||||
ora PreviousEnergyL,x
|
||||
ora PreviousEnergyH,x
|
||||
beq firstShoot
|
||||
|
||||
lda PreviousAngle,x
|
||||
clc
|
||||
adc #5
|
||||
bmi leftQuadrant
|
||||
cmp #90
|
||||
bcc continue
|
||||
lda #(-90)
|
||||
bne continue
|
||||
leftQuadrant
|
||||
|
||||
|
||||
|
||||
continue
|
||||
sta NewAngle
|
||||
|
||||
lda PreviousEnergyL,x
|
||||
sta EnergyTableL,x
|
||||
lda PreviousEnergyH,x
|
||||
sta EnergyTableH,x
|
||||
|
||||
jmp endo
|
||||
firstShoot
|
||||
; compare the x position with the middle of the screen
|
||||
lda xTanksTableL,x
|
||||
sta temp
|
||||
lda xTanksTableH,x
|
||||
sta temp+1
|
||||
cpw temp #(screenwidth/2)
|
||||
bcs tankIsOnTheRight
|
||||
|
||||
lda RANDOM
|
||||
and #$1F
|
||||
clc
|
||||
adc #5
|
||||
;lda #45
|
||||
|
||||
sta NewAngle
|
||||
jmp forceNow
|
||||
tankIsOnTheRight
|
||||
lda RANDOM
|
||||
and #$1F
|
||||
clc
|
||||
adc #(-85)
|
||||
;lda #-45
|
||||
sta NewAngle
|
||||
|
||||
forceNow
|
||||
mwa #100 RandBoundaryLow
|
||||
mwa #800 RandBoundaryHigh
|
||||
jsr RandomizeForce
|
||||
|
||||
endo
|
||||
ldx TankNr ;this is possibly not necessary
|
||||
lda NewAngle
|
||||
sta PreviousAngle,x
|
||||
lda EnergyTableL,x
|
||||
sta PreviousEnergyL,x
|
||||
lda EnergyTableH,x
|
||||
sta PreviousEnergyH,x
|
||||
|
||||
; choose the best weapon
|
||||
|
||||
lda TanksWeaponsTableL,x
|
||||
sta temp
|
||||
lda TanksWeaponsTableH,x
|
||||
sta temp+1
|
||||
ldy #32 ;the last weapon
|
||||
loop
|
||||
dey
|
||||
lda (temp),y
|
||||
beq loop
|
||||
tya
|
||||
sta ActiveWeapon,x
|
||||
rts
|
||||
.endp
|
||||
;----------------------------------------------
|
||||
Poolshark .proc
|
||||
|
||||
firstShoot
|
||||
;find nearest tank neighbour
|
||||
jsr MakeLowResDistances
|
||||
mva #$ff temp2 ; min possible distance
|
||||
|
||||
ldx TankNr
|
||||
ldy NumberOfPlayers
|
||||
dey
|
||||
|
||||
loop01
|
||||
cpy TankNr
|
||||
beq skipThisPlayer
|
||||
lda eXistenZ,y
|
||||
beq skipThisPlayer
|
||||
|
||||
lda LowResDistances,x
|
||||
cmp LowResDistances,y
|
||||
bcs EnemyOnTheLeft
|
||||
;enemy on the right
|
||||
sec
|
||||
lda LowResDistances,y
|
||||
sbc LowResDistances,x
|
||||
cmp temp2 ; lowest
|
||||
bcs lowestIsLower
|
||||
sta temp2
|
||||
sty temp2+1 ; number of the closest tank
|
||||
; calculate index to shotangle table
|
||||
:3 lsr @
|
||||
and #%00000111
|
||||
clc
|
||||
adc #8
|
||||
sta AngleTablePointer
|
||||
jmp lowestIsLower
|
||||
|
||||
EnemyOnTheLeft
|
||||
sec
|
||||
lda LowResDistances,x
|
||||
sbc LowResDistances,y
|
||||
cmp temp2 ; lowest
|
||||
bcs lowestIsLower
|
||||
sta temp2
|
||||
sty temp2+1 ; number of the closest tank
|
||||
; calculate index to shotangle table
|
||||
:3 lsr @
|
||||
and #%00000111
|
||||
eor #%00000111
|
||||
sta AngleTablePointer
|
||||
|
||||
lowestIsLower
|
||||
skipThisPlayer
|
||||
dey
|
||||
bpl loop01
|
||||
|
||||
randomize 0 8
|
||||
ldy AngleTablePointer
|
||||
clc
|
||||
adc AngleTable,y
|
||||
sta NewAngle
|
||||
|
||||
forceNow
|
||||
mwa #300 RandBoundaryLow
|
||||
mwa #700 RandBoundaryHigh
|
||||
jsr RandomizeForce
|
||||
|
||||
endo
|
||||
ldx TankNr ;this is possibly not necessary
|
||||
|
||||
; choose the best weapon
|
||||
|
||||
lda TanksWeaponsTableL,x
|
||||
sta temp
|
||||
lda TanksWeaponsTableH,x
|
||||
sta temp+1
|
||||
ldy #32 ;the last weapon
|
||||
loop
|
||||
dey
|
||||
lda (temp),y
|
||||
beq loop
|
||||
tya
|
||||
sta ActiveWeapon,x
|
||||
rts
|
||||
|
||||
;----------------------------------------------
|
||||
AngleTable ; 16 bytes ;ba w $348b L$3350
|
||||
.by 178,186,194,202,210,218,226,234
|
||||
.by 16,24,32,40,48,56,64,72
|
||||
.endp
|
||||
;----------------------------------------------
|
||||
PurchaseAI .proc ;
|
||||
; A - skill of the TankNr
|
||||
; makes purchase for AI opponents
|
||||
; results of this routine are not visible on the screen
|
||||
;----------------------------------------------
|
||||
asl
|
||||
tax
|
||||
:2 dex ;credit KK
|
||||
lda PurchaseAIRoutines+1,x
|
||||
pha
|
||||
lda PurchaseAIRoutines,x
|
||||
pha
|
||||
rts
|
||||
.endp
|
||||
|
||||
;----------------
|
||||
PurchaseAIRoutines
|
||||
.word MoronPurchase-1
|
||||
.word ShooterPurchase-1 ;ShooterPurchase
|
||||
.word PoolsharkPurchase-1 ;PoolsharkPurchase
|
||||
.word PoolsharkPurchase-1 ;ToosserPurchase
|
||||
.word PoolsharkPurchase-1 ;ChooserPurchase
|
||||
.word PoolsharkPurchase-1 ;SpoilerPurchase
|
||||
.word PoolsharkPurchase-1 ;CyborgPurchase
|
||||
.word PoolsharkPurchase-1 ;UnknownPurchase
|
||||
|
||||
;----------------------------------------------
|
||||
MoronPurchase
|
||||
;Moron buys nothing
|
||||
rts
|
||||
|
||||
;-------
|
||||
TryToPurchaseOnePiece .proc
|
||||
; A - weapon number, better it will be in range(1,32)
|
||||
; TankNr in X
|
||||
tay
|
||||
lda PurchaseMeTable,y
|
||||
beq SorryNoPurchase
|
||||
lda WeaponPriceL,y
|
||||
sta temp
|
||||
lda WeaponPriceH,y
|
||||
sta temp+1
|
||||
;price of the weapon in temp
|
||||
lda MoneyL,x
|
||||
sta temp2
|
||||
lda MoneyH,x
|
||||
sta temp2+1
|
||||
;current monies in temp2
|
||||
cpw temp2 temp
|
||||
bcc SorryNoPurchase
|
||||
; deduct monies from the bank account
|
||||
sec
|
||||
lda temp2
|
||||
sbc temp
|
||||
sta MoneyL,x
|
||||
lda temp2+1
|
||||
sbc temp+1
|
||||
sta MoneyH,x
|
||||
|
||||
lda TanksWeaponsTableL,x
|
||||
sta temp
|
||||
lda TanksWeaponsTableH,x
|
||||
sta temp+1
|
||||
|
||||
lda WeaponUnits,y
|
||||
clc
|
||||
adc (temp),y
|
||||
cmp #99 ;max number of weapon units
|
||||
bcc NotExceeded
|
||||
lda #99
|
||||
NotExceeded
|
||||
sta (temp),y
|
||||
|
||||
|
||||
SorryNoPurchase
|
||||
rts
|
||||
.endp
|
||||
|
||||
|
||||
;----------------------------------------------
|
||||
ShooterPurchase .proc
|
||||
mva #4 tempXroller; number of purchases to perform
|
||||
|
||||
ldx TankNr
|
||||
loop
|
||||
randomize 1 14
|
||||
jsr TryToPurchaseOnePiece
|
||||
dec tempXroller
|
||||
bne loop
|
||||
|
||||
rts
|
||||
.endp
|
||||
;----------------------------------------------
|
||||
PoolsharkPurchase .proc
|
||||
mva #8 tempXroller; number of purchases to perform
|
||||
|
||||
ldx TankNr
|
||||
loop
|
||||
randomize 1 30
|
||||
jsr TryToPurchaseOnePiece
|
||||
dec tempXroller
|
||||
bne loop
|
||||
|
||||
rts
|
||||
.endp
|
||||
|
||||
|
||||
PurchaseMeTable .proc ;weapons good to be purchased by the robot
|
||||
;the comment is an index in the tables
|
||||
dta 1 ;"Baby Missile " ; 0
|
||||
dta 1 ;"Missile " ; 1
|
||||
dta 1 ;"Baby Nuke " ; 2
|
||||
dta 1 ;"Nuke " ; 3
|
||||
dta 1 ;"LeapFrog " ; 4
|
||||
dta 1 ;"Funky Bomb " ; 5
|
||||
dta 1 ;"MIRV " ; 6
|
||||
dta 1 ;"Death's Head " ; 7
|
||||
dta 0 ;"Napalm " ; 8
|
||||
dta 0 ;"Hot Napalm " ; 9
|
||||
dta 0 ;"Tracer " ; 10
|
||||
dta 0 ;"Smoke Tracer " ; 11
|
||||
dta 1 ;"Baby Roller " ; 12
|
||||
dta 1 ;"Roller " ; 13
|
||||
dta 1 ;"Heavy Roller " ; 14
|
||||
dta 0 ;"Riot Charge " ; 15
|
||||
dta 0 ;"Riot Blast " ; 16
|
||||
dta 0 ;"Riot Bomb " ; 17
|
||||
dta 0 ;"Heavy Riot Bomb " ; 18
|
||||
dta 0 ;"Baby Digger " ; 19
|
||||
dta 0 ;"Digger " ; 20
|
||||
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 1 ;"Liquid Dirt " ; 28
|
||||
dta 0 ;"Dirt Charge " ; 29
|
||||
dta 0 ;"Earth Disrupter " ; 30
|
||||
dta 1 ;"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
|
||||
|
||||
.endp
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
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!
|
||||
@@ -0,0 +1,60 @@
|
||||
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.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 190 B |
@@ -0,0 +1,125 @@
|
||||
.proc talk
|
||||
L0 dta c"IN TIMES OF TROUBLE, GO WITH WHAT YOU KNOW."
|
||||
L1 dta c"DIE!"
|
||||
L2 dta c"EAT MY SHORTS!"
|
||||
L3 dta c"YOU'RE TOAST!"
|
||||
L4 dta c"BANZAI!"
|
||||
L5 dta c"FROM HELL'S HEART I STAB AT THEE..."
|
||||
L6 dta c"I DIDN'T DO IT. NOBODY SAW ME DO IT."
|
||||
L7 dta c"TAKE A HIKE!"
|
||||
L8 dta c"YOU'RE DEAD MEAT."
|
||||
L9 dta c"MAKE MY DAY."
|
||||
L10 dta c"CHARGE!"
|
||||
L11 dta c"ATTACK!"
|
||||
L12 dta c"YOU'RE OUTTA HERE."
|
||||
L13 dta c"WATTSA MATTA YOU?"
|
||||
L14 dta c"FREEZE, OR I'LL SHOOT!"
|
||||
L15 dta c"HA HA HA."
|
||||
L16 dta c"WE COME IN PEACE - SHOOT TO KILL!"
|
||||
L17 dta c"IN YOUR FACE!"
|
||||
L18 dta c"DIE COMMIE PIG!"
|
||||
L19 dta c"I LOVE THE SMELL OF NAPALM IN THE MORNING."
|
||||
L20 dta c"VICTORY!"
|
||||
L21 dta c"SHOW SOME RESPECT."
|
||||
L22 dta c"JUST WHO DO YOU THINK YOU ARE?"
|
||||
L23 dta c"LOOK OUT BELOW!"
|
||||
L24 dta c"KNOCK, KNOCK."
|
||||
L25 dta c"LOOK OVER THERE."
|
||||
L26 dta c"GUESS WHAT'S COMING FOR DINNER?"
|
||||
L27 dta c"MERRY CHRISTMAS."
|
||||
L28 dta c"OPEN WIDE!"
|
||||
L29 dta c"HERE GOES NOTHING..."
|
||||
L30 dta c"DON'T WORRY, IT ISN'T A LIVE ROUND."
|
||||
L31 dta c"BLOOD, PAIN, VIOLENCE!"
|
||||
L32 dta c"TAKE THIS, SISSY!"
|
||||
L33 dta c"I SHALL FLATTEN YOU!"
|
||||
L34 dta c"I SHALL SMASH YOUR UGLY TANK!"
|
||||
L35 dta c"I WONDER WHAT THIS BUTTON DOES?"
|
||||
L36 dta c"DON'T TAKE THIS PERSONALLY."
|
||||
L37 dta c"WOULD THIS MAKE YOU MAD?"
|
||||
L38 dta c"I TOLD YOU TO LEAVE MY SISTER ALONE!"
|
||||
L39 dta c"I COULD SPARE YOU, BUT WHY?"
|
||||
L40 dta c"MY BOMB IS BIGGER THAN YOURS."
|
||||
L41 dta c"DON'T FORGET ABOUT ME!"
|
||||
L42 dta c"HASTA LA VISTA, BABY!"
|
||||
L43 dta c"THIS IS YOUR BRAIN ON SCORCH."
|
||||
L44 dta c"TAKE THIS!"
|
||||
L45 dta c"THIS SCREEN AIN'T BIG ENOUGH FOR THE BOTH OF US."
|
||||
L46 dta c"DIE, ALIEN SWINE!"
|
||||
L47 dta c"SAY ARRGGHHHHH...."
|
||||
L48 dta c"I SHALL OIL MY TURRET WITH YOUR BLOOD."
|
||||
L49 dta c"DIE, TANK-SCUM!"
|
||||
L50 dta c"I'M GONNA BREAK YOUR FACE!"
|
||||
L51 dta c"MAMA SAID KNOCK YOU OUT!"
|
||||
L52 dta c"I HOPE YOU ENJOY PAIN!"
|
||||
;--------------------------------
|
||||
L53 dta c"PARTING IS SUCH SWEET SORROW... NOT!"
|
||||
L54 dta c"UGH!"
|
||||
L55 dta c"AARGH!"
|
||||
L56 dta c"AAAGGHHH!"
|
||||
L57 dta c"I'M MELTING!"
|
||||
L58 dta c"OOF.."
|
||||
L59 dta c"OH!"
|
||||
L60 dta c"EEEK!"
|
||||
L61 dta c"AACCH!"
|
||||
L62 dta c"I HATE IT WHEN THAT HAPPENS."
|
||||
L63 dta c"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY."
|
||||
L64 dta c"OH NO!"
|
||||
L65 dta c"NOT ME!"
|
||||
L66 dta c"OUCH."
|
||||
L67 dta c"OH NO, NOT AGAIN."
|
||||
L68 dta c"ANOTHER ONE BITES THE DUST."
|
||||
L69 dta c"GOODBYE."
|
||||
L70 dta c"HELP ME!"
|
||||
L71 dta c"FAREWELL, CRUEL WORLD."
|
||||
L72 dta c"REMEMBER THE ALAMO!"
|
||||
L73 dta c"OH MAN!"
|
||||
L74 dta c"DOOUGH!"
|
||||
L75 dta c"ANOTHER DAY, ANOTHER BOMB."
|
||||
L76 dta c"THIS IS THE END, MY ONLY FRIEND."
|
||||
L77 dta c"IT'S ALL OVER."
|
||||
L78 dta c"THE FAT LADY SANG."
|
||||
L79 dta c"WHY DOES EVERYTHING HAPPEN TO ME?"
|
||||
L80 dta c"I'M GOING DOWN."
|
||||
L81 dta c"I'VE GOT A BAD FEELING ABOUT THIS."
|
||||
L82 dta c"CRAPOLA."
|
||||
L83 dta c"POW!"
|
||||
L84 dta c"BIF!"
|
||||
L85 dta c"BAM!"
|
||||
L86 dta c"ZONK!"
|
||||
L87 dta c"I SHOULD'VE LISTENED TO MY MOTHER..."
|
||||
L88 dta c"NO... A BUD LIGHT!"
|
||||
L89 dta c"WHAT WAS THAT NOISE?"
|
||||
L90 dta c"MAMA SAID THERE'D BE DAYS LIKE THIS."
|
||||
L91 dta c"ITS JUST ONE OF THOSE DAYS..."
|
||||
L92 dta c"I SEE A BRIGHT LIGHT..."
|
||||
L93 dta c"MOMMY? IS THAT YOU?"
|
||||
L94 dta c"I LET YOU HIT ME!"
|
||||
L95 dta c"SUCKER SHOT!"
|
||||
L96 dta c"I DIDN'T WANT TO LIVE ANYWAY."
|
||||
L97 dta c"-<SOB>-"
|
||||
L98 dta c"WAS THAT AS CLOSE AS I THINK IT WAS?"
|
||||
L99 dta c"JOIN THE ARMY, SEE THE WORLD THEY SAID."
|
||||
L100 dta c"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!"
|
||||
L101 dta c"I DIDN'T LIKE VIOLENCE ANYWAY!"
|
||||
L102 dta c"I THOUGHT YOU LIKED ME?"
|
||||
L103 dta c"SUCH SENSELESS VIOLENCE! I DON'T UNDERSTAND IT."
|
||||
L104 dta c"I THINK THIS GUY'S A LITTLE CRAZY."
|
||||
L105 dta c"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE."
|
||||
L106 dta c"HEY! KILLIN' AIN'T COOL."
|
||||
L107 dta c"GEE... THANKS."
|
||||
L108 dta c"I'VE FALLEN AND I CAN'T GET UP!"
|
||||
L109 dta c"911?"
|
||||
L110 dta c"OH NO! HERE I BLOW AGAIN!"
|
||||
L111 dta c"I'LL BE BACK..."
|
||||
L112 dta c"HEY - I'VE GOT LAWYERS."
|
||||
L113 dta c"TIME TO CALL 1-900-SUE-TANK."
|
||||
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
|
||||
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
|
||||
OffensiveTextLengths
|
||||
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
|
||||
NumberOfOffensiveTexts=54
|
||||
NumberOfDeffensiveTexts=60
|
||||
.endp
|
||||
Binary file not shown.
@@ -0,0 +1,48 @@
|
||||
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.
+129
@@ -0,0 +1,129 @@
|
||||
Changes:
|
||||
|
||||
Build 124
|
||||
2013-12-21
|
||||
- removed large chunk of redundant 4x4 print code and table generation code,
|
||||
over 1kb gained.
|
||||
- plot and point routines speeded up by ~20 cycles :P (and shortened by few bytes as well)
|
||||
- fixed bug 011. High flying bullets sometimes cause brief screen garbage - like a DL damaged
|
||||
fixed by plotpointer (the top line) changed from HSCROLL based to regular $f line with plot
|
||||
- screen memory moved to low area ($1010), making the game start at $3010 and easier
|
||||
to be loaded. Other minor memory layout modifications.
|
||||
|
||||
Build 123
|
||||
2013-12-10
|
||||
- fixed bug 013: sometimes demo mode does not work (it stops on results display)
|
||||
- fixed bug 012: (newly introduced) Death explosions are offset right and possibly up.
|
||||
- prepared the game for various screen width. The only problem is memory layout.
|
||||
Basically it is impossible to make contiguous wide screen of more than 170 lines.
|
||||
Changing the screen to non-contiguous would require rewrite of all character
|
||||
manipulating routines.
|
||||
- fixed bug 014: FunkyBomb shoots with too high angle,
|
||||
funkyBomb angle changed from -8..+8 to -16..+16
|
||||
- speeded up explosions by drawing only odd circles. Not bad visually and 2x faster.
|
||||
|
||||
Build 122
|
||||
2013-11-17
|
||||
- tank expend 1 energy with each shoot to avoid endless shooting loops
|
||||
- small visual glitch with background colour fixed
|
||||
- death messages "defensive texts" in source do not stay on screen after some explosions
|
||||
|
||||
Build 121
|
||||
2013-11-10
|
||||
- Poolshark and Shooter can buy weapons
|
||||
- Purchase screen moved to the beginning of the round
|
||||
|
||||
Build 120
|
||||
2013-11-09
|
||||
SillyVenture 2K13 joint effort to bring artificial intelligence into life:
|
||||
- Shooter and Poolshark shooting programmed
|
||||
- several small bugfixes and improvements as proposed by SillyVenture crowd
|
||||
|
||||
Build 119
|
||||
2012-06-17
|
||||
Scorch sources translated to MADS with the sweet repl.sh script.
|
||||
|
||||
MISSING UPDATE INFORMATION... POSSIBLY NOTHING IMPORTANT HAPPENED HERE.
|
||||
|
||||
Build 115
|
||||
2009-08-25
|
||||
- fixed bug 001 (lack of explosions on the empty ground)
|
||||
- fixed bug 003 (wrapping death's head explosions)
|
||||
- fixed plot (faster explosions)
|
||||
- fukk, just 6 years and we are back!!! This game is pretty addictive :)
|
||||
TO DO:
|
||||
- send our wives and kids away much more often :))))
|
||||
|
||||
Build 114
|
||||
2003-08-22
|
||||
- Results after each round are displayed in the right
|
||||
sequence, i.e. the best one is on the top
|
||||
- during second and following rounds shooting sequence
|
||||
is such that the worst tank shoots first
|
||||
The above changes does not look terrific, but there was
|
||||
a lot of thinking to do it correctly. What is the most
|
||||
important the overall game feeling improved a lot!
|
||||
|
||||
program.s65
|
||||
* added routine SortSequence
|
||||
textproc.s65
|
||||
* changed routine DisplayResults to show
|
||||
round results in correct order
|
||||
|
||||
Build 113
|
||||
2003-08-17
|
||||
- AI Opponents move barrels to the right position
|
||||
before firing a bullet.
|
||||
- Purchase screen is not displayed for AI opponents.
|
||||
- There is 2 sec delay after displaying
|
||||
"Deffensive" text i.e. text before death
|
||||
|
||||
program.s65
|
||||
* added routine MoveBarrelToNewPosition
|
||||
which rotates barrel of the tank until
|
||||
it sits at the right (newly randomized) angle
|
||||
textproc.s65
|
||||
* added routine PurchaseAI
|
||||
it is a framework for all AI purchases
|
||||
SHORTSYS.S65
|
||||
* new macro PAUSE (waits given number of frames)
|
||||
|
||||
|
||||
Bulid 112
|
||||
2003-08-15
|
||||
|
||||
First attempts to create a framework for intelligent
|
||||
opponents (AI). Right now there is only one level
|
||||
of "intelligence" - Moron. Moron shoots at random angle
|
||||
with random force.
|
||||
|
||||
program.s65
|
||||
* routine Round checks the Skill level
|
||||
and if it is not human branches to
|
||||
ArtificialIntelligence routine.
|
||||
* new routines:
|
||||
- ArtificialIntelligence
|
||||
- RandomizeForce
|
||||
- RandomizeAngle
|
||||
|
||||
TO DO:
|
||||
* nice rotating barrel of AI tank
|
||||
* AI weapon purchase and usage
|
||||
* AI better than Moronic... (but how...)
|
||||
* tanks' shooting seqence shoud be from
|
||||
weakest to the strongest, not random
|
||||
|
||||
Bulid 111
|
||||
2003-07-27
|
||||
|
||||
program.s65:
|
||||
* added sequentional shooting
|
||||
(not necessarily tank no. 1 shoots first)
|
||||
* added routine "RandomizeSequence" that is called
|
||||
before each round
|
||||
* initial angle of the tank's barrel is randomized
|
||||
(was always 45 degrees right)
|
||||
variables.s65
|
||||
* added table "TankSequence"
|
||||
grafproc.s65
|
||||
* shorter delay during Flight
|
||||
+197
@@ -0,0 +1,197 @@
|
||||
; @com.wudsn.ide.asm.mainsourcefile=program.asm
|
||||
|
||||
.IF *>0 ;this is a trick that prevents compiling this file alone
|
||||
|
||||
;-----------------------------------------------------
|
||||
;-------------display-lists---------------------------
|
||||
;-----------------------------------------------------
|
||||
PurchaseDL
|
||||
.byte $70,$70,$20
|
||||
.byte $42
|
||||
.word textbuffer2
|
||||
.byte $02,$10,$42
|
||||
MoreUpdl
|
||||
.word EmptyLine
|
||||
.byte 0,$42
|
||||
WeaponsListDL
|
||||
.word ListOfWeapons
|
||||
.byte 0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0
|
||||
.byte $42
|
||||
MoreDownDL
|
||||
.word EmptyLine
|
||||
.byte $10,$42
|
||||
.word WeaponsDescription
|
||||
.byte 2
|
||||
.byte $41
|
||||
.word PurchaseDL
|
||||
;------------------------
|
||||
OptionsDL
|
||||
.byte $70,$70,$70,$70,$70
|
||||
.byte $42
|
||||
.word OptionsScreen
|
||||
.byte $02,$02,$70,$02,0,$02,0,$2,0,$2
|
||||
.byte $41
|
||||
.word OptionsDL
|
||||
;------------------------
|
||||
;Enter names of tanks DL
|
||||
NameDL
|
||||
.byte $70,$70,$70,$70,$70
|
||||
.byte $42
|
||||
.word NameScreen
|
||||
.byte $30
|
||||
.byte $02,$30,$2
|
||||
.byte $10,2,2,2,$30,2,2
|
||||
.byte $41
|
||||
.word NameDL
|
||||
; -------------------------------------------------
|
||||
|
||||
dl ; MAIN game display list
|
||||
.byte $70,$00
|
||||
.byte $42
|
||||
.word textbuffer
|
||||
.byte $02 +$80 ;DLI
|
||||
.byte $00
|
||||
|
||||
.byte $4f
|
||||
.word WhiteLine
|
||||
.byte $4f
|
||||
.word PlotLine
|
||||
.byte $4f
|
||||
.word WhiteLine
|
||||
|
||||
.byte $4f
|
||||
.word display
|
||||
|
||||
:100 .by $0f
|
||||
.by $0f
|
||||
.by $4f
|
||||
.wo display+$0ff0
|
||||
:97 .byte $0f
|
||||
.byte $41
|
||||
.word dl
|
||||
; horizontal line
|
||||
WhiteLine
|
||||
:screenBytes .by $ff
|
||||
PlotLine = display + screenHeight*screenBytes ; the last line is plot pointer
|
||||
;-----------------------------------------------
|
||||
;Screen displays go first to avoid crossing 4kb barrier
|
||||
;-----------------------------------------------
|
||||
OptionsScreen
|
||||
dta d"Welcome to Scorch ver. 124 (cc)2000-2013"
|
||||
dta d" Please select option with cursor keys "
|
||||
dta d" and press (Return) to proceed "
|
||||
OptionsHere
|
||||
; 0123456789012345678901234567890123456789
|
||||
dta d"Players : 2 3 4 5 6 "
|
||||
dta d"Cash : none 2K 5K 8K 10K "
|
||||
dta d"Gravity : 0.2G 0.5G 1G 2G 4G "
|
||||
dta d"Wind : 1B 3B 5B 7B 9B "
|
||||
OptionsScreenEnd
|
||||
; -------------------------------------------------
|
||||
NameScreen
|
||||
dta d" Enter names of players "
|
||||
dta d" Tank 01 Name:"
|
||||
NameAdr
|
||||
dta d" "
|
||||
dta d" Human/Atari (difficulty level) "
|
||||
dta d" "
|
||||
NamesOfLevels
|
||||
dta d" HUMAN Moron Shooter "
|
||||
dta d" Poolshark Toosser Chooser "
|
||||
dta d" Spoiler Cyborg Unknown "
|
||||
dta d" "
|
||||
dta d"Tab"*
|
||||
dta d" - Player/Difficulty level "
|
||||
dta d" "
|
||||
dta d"Return"*
|
||||
dta d" - Proceed "
|
||||
;---------------------------------------------------
|
||||
MoreUp
|
||||
dta d" "
|
||||
dta 92,92,92
|
||||
dta d" more "
|
||||
dta 92,92,92
|
||||
dta d" "
|
||||
MoreDown
|
||||
dta d" "
|
||||
dta 93,93,93
|
||||
dta d" more "
|
||||
dta 93,93,93
|
||||
dta d" "
|
||||
ListOfWeapons
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
ListOfWeapons1End
|
||||
ListOfDefensiveWeapons
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
dta d" "
|
||||
ListOfDefensiveWeaponsEnd ;constant useful when clearing
|
||||
WeaponsDescription
|
||||
dta d" "
|
||||
dta d"Tab"*
|
||||
dta d" - Defensive/Offensive weapon "
|
||||
dta d" "
|
||||
dta d"Space"*
|
||||
dta d" - Purchase "
|
||||
dta d"Return"*
|
||||
dta d" - Finish "
|
||||
EmptyLine
|
||||
dta d" "
|
||||
;-----------------------------------------------
|
||||
textbuffer
|
||||
dta d"Player: "
|
||||
dta d" "
|
||||
textbuffer2
|
||||
dta d"Player: ******** Cash: 00000 "
|
||||
dta d"----------------------------------------"
|
||||
|
||||
|
||||
.endif
|
||||
+1512
File diff suppressed because it is too large
Load Diff
+1144
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,6 @@
|
||||
.sourcemode on
|
||||
.echo
|
||||
.echo "Loading executable..."
|
||||
.echo
|
||||
bc *
|
||||
.onexerun .echo "Launching executable..."
|
||||
+1077
File diff suppressed because it is too large
Load Diff
+9005
File diff suppressed because it is too large
Load Diff
BIN
Binary file not shown.
+1643
File diff suppressed because it is too large
Load Diff
+898
@@ -0,0 +1,898 @@
|
||||
; @com.wudsn.ide.asm.mainsourcefile=program.asm
|
||||
|
||||
.IF *>0 ;this is a trick that prevents compiling this file alone
|
||||
|
||||
;=====================================================
|
||||
; most important non-zero page variables
|
||||
; zero page variables are declared in program.s65 module
|
||||
;=====================================================
|
||||
NumberOfPlayers .byte 0 ;current number of players (counted from 1)
|
||||
TankSequence :MaxPlayers .by 0 ;sequence of shooting during the Round
|
||||
;-----------------------------------
|
||||
skilltable ; computer controlled players' skills (1-8), 0 - human
|
||||
:MaxPlayers .by 0
|
||||
;-----------------------------------
|
||||
moneyH ;we place zero at the end of prices and money
|
||||
;and have range from 0 to 99990 (not too much)
|
||||
;money players have (maybe one more byte is needed?)
|
||||
:MaxPlayers .by 0
|
||||
moneyL
|
||||
:MaxPlayers .by 0
|
||||
;-----------------------------------
|
||||
gainH ;how much money player gets after the round
|
||||
;it is gathered during the round basing on energy
|
||||
;opponents loose after player's shoots
|
||||
:MaxPlayers .by 0
|
||||
gainL
|
||||
:MaxPlayers .by 0
|
||||
;-----------------------------------
|
||||
looseH ;how much player looses after the round
|
||||
;calculated from REAL energy loss
|
||||
;(not only to zero energy)
|
||||
:MaxPlayers .by 0
|
||||
looseL
|
||||
:MaxPlayers .by 0
|
||||
;-----------------------------------
|
||||
Energy
|
||||
:MaxPlayers .by 0
|
||||
EnergyDecrease .by 0
|
||||
eXistenZ
|
||||
:MaxPlayers .by 0
|
||||
LASTeXistenZ ; eXistenZ before shoot
|
||||
:MaxPlayers .by 0
|
||||
|
||||
ResultsTable ;the results in the gameeeeee
|
||||
:MaxPlayers .by 0
|
||||
TempResults
|
||||
:MaxPlayers .by 0
|
||||
CurrentResult
|
||||
.byte 0
|
||||
;-----------------------------------
|
||||
EnergyTableL ;shooting Force of the tank during the round
|
||||
:MaxPlayers .by 0
|
||||
EnergyTableH
|
||||
:MaxPlayers .by 0 ;maxplayers=6
|
||||
MaxEnergyTableL ;Energy of the tank during the round
|
||||
;(limes superior force of the Shoot)
|
||||
:MaxPlayers .by 0 ;1000 is the default
|
||||
MaxEnergyTableH
|
||||
:MaxPlayers .by 0
|
||||
;-----------------------------------
|
||||
|
||||
AngleTable ;Angle of the barrel of each tank during the round
|
||||
.by (255-90),(255-90),(255-90),(255-90),(255-90),(255-90)
|
||||
NewAngle
|
||||
.by 0
|
||||
;-----------------------------------
|
||||
|
||||
ActiveWeapon ;number of the selected weapon
|
||||
:MaxPlayers .by 0
|
||||
;-----------------------------------
|
||||
|
||||
;format of the static point number used in the game
|
||||
; 20203.5 = 128 : <20203 : >20203
|
||||
;-----------------------------------
|
||||
|
||||
L1 .by 0 ; variable used in multiplications (by 10:)
|
||||
gravity .by 25 ;only the decimal part (1/10 = 25)
|
||||
;-----------------------------------
|
||||
|
||||
Wind .wo $0080 ;walue displayed on the screen
|
||||
;multiplied by 16 (decimal part only)
|
||||
;-----------------------------------
|
||||
MaxWind .byte $40 ;
|
||||
WindOrientation .byte 0 ;(0-right,1-left)
|
||||
;-----------------------------------
|
||||
Counter .byte 0 ;temporary Counter for outside loops
|
||||
HitFlag .byte 0 ;1 when missile hit anything
|
||||
;-----------------------------------
|
||||
xtankstableL ;X positions of tanks (lower left point)
|
||||
:MaxPlayers .by 0
|
||||
xtankstableH
|
||||
:MaxPlayers .by 0
|
||||
ytankstable ;Y positions of tanks (lower left point)
|
||||
:MaxPlayers .by 0
|
||||
LowResDistances ; coarse stank positions divided by 4 (to be in just one byte)
|
||||
:MaxPlayers .by 0
|
||||
;-----------------------------------
|
||||
keycodes ;tables for calculating KeyCode to Screen Code (38 characters)
|
||||
.byte $3f,$15,$12,$3a,$2a,$38,$3d,$39
|
||||
.byte $0d,$01,$05,$00,$25,$23,$08,$0a
|
||||
.byte $2f,$28,$3e,$2d,$0b,$10,$2e,$16
|
||||
.byte $2b,$17,$1f,$1e,$1a,$18,$1d,$1b
|
||||
.byte $33,$35,$30,$32,$22,$0e
|
||||
scrcodes
|
||||
dta d"abcdefgh"
|
||||
dta d"ijklmnop"
|
||||
dta d"qrstuvwx"
|
||||
dta d"yz123456"
|
||||
dta d"7890.-"
|
||||
;-----------------------------------
|
||||
Erase .byte 0 ; if 1 only mask of the character is printed
|
||||
; on the graphics screen. if 0 character is printed normally
|
||||
|
||||
;-----------------------------------
|
||||
RangeLeft .wo 0 ;range of the soil to be fallen down
|
||||
;it is being set by all Explosions
|
||||
RangeRight .wo 0
|
||||
;-----------------------------------
|
||||
WeaponRangeLeft .wo 0 ;Range of the Explosion of the given weapon
|
||||
WeaponRangeRight .wo 0
|
||||
;--------------------------------------------------
|
||||
;--------------------------------------------------
|
||||
;Variables used by the given subroutines
|
||||
;moved to one place for easier
|
||||
;compilation to e.g. cartridge
|
||||
;--------------------------------------------------
|
||||
;xroller
|
||||
HowMuchToFall .byte $FF
|
||||
HeightRol .byte 0
|
||||
;digger
|
||||
digstartx .word 0
|
||||
digstarty .word 0
|
||||
diggery .byte 0
|
||||
DigLong .byte 0
|
||||
digtabxL :8 .by 0
|
||||
digtabxH :8 .by 0
|
||||
digtabyL :8 .by 0
|
||||
digtabyH :8 .by 0
|
||||
;sandhog
|
||||
sandhogflag .byte 0 ; (0 digger, 8 sandhog)
|
||||
;ofdirt
|
||||
magic .word 0 ; was tempor2, but it was not compiling!!! (bug in OMC65)
|
||||
;draw
|
||||
DrawJumpAddr .word 0
|
||||
HowToDraw .byte 0
|
||||
; bits here mean
|
||||
; 0 - negative X (go up)
|
||||
; 1 - negative Y (left)
|
||||
; 2 - directional value > 1 (more than 45 degrees)
|
||||
; if all 0 then standart routine
|
||||
XHit .word 0
|
||||
YHit .word 0
|
||||
LineLength .word 0
|
||||
;circle
|
||||
radius .byte 0
|
||||
xcircle .word 0
|
||||
ycircle .byte 0
|
||||
tempcir .word 0
|
||||
;TankFalls
|
||||
IfFallDown .byte 0
|
||||
PreviousFall .byte 0
|
||||
EndOfTheFallFlag .byte 0 ; in case of the infinite fall
|
||||
Parachute .byte 0 ; are you insured with parachute?
|
||||
; -------------------------------------------------
|
||||
;Flight
|
||||
;variables for 5 missiles (used for mirv)
|
||||
xtraj00 :5 .by 0
|
||||
xtraj01 :5 .by 0
|
||||
xtraj02 :5 .by 0
|
||||
vx00 :5 .by 0
|
||||
vx01 :5 .by 0
|
||||
vx02 :5 .by 0
|
||||
vx03 :5 .by 0
|
||||
MirvDown :5 .by 0 ; is given missile down?
|
||||
MirvMissileCounter .byte 0 ; missile Counter (mainly for X)
|
||||
SmokeTracerFlag .byte 0 ; if Smoketracer
|
||||
; -------------------------------------------------
|
||||
;CheckCollisionWithTank
|
||||
vx .byte 0,0,0,0 ;two decimal bytes, two whole bytes (DC.BA)
|
||||
vy .byte 0,0,0,0
|
||||
xtraj .byte 0,0,0
|
||||
ytraj .byte 0,0,0
|
||||
xtrajold .byte 0,0,0
|
||||
ytrajold .byte 0,0,0
|
||||
Angle .byte 0
|
||||
Force .byte 0,0,0
|
||||
Multiplier .byte 0,0,0
|
||||
Multiplee .byte 0,0
|
||||
Result .byte 0,0,0
|
||||
goleft .byte 0 ;if 1 then flights left
|
||||
;--------------------------------------------------
|
||||
;SoilDown2
|
||||
IsEndOfTheFallFlag .byte 0
|
||||
; -------------------------------------------------
|
||||
;unPlot
|
||||
WhichUnPlot .byte 0
|
||||
; max 5 concurrent unPlots
|
||||
oldplotH :5 .by 0
|
||||
oldplotL :5 .by 0
|
||||
oldora :5 .by 0
|
||||
oldply :5 .by 0
|
||||
OldOraTemp .byte 0
|
||||
FunkyBombCounter .byte 0
|
||||
xtrajfb .word 0
|
||||
ytrajfb .word 0
|
||||
;
|
||||
tracerflag .byte 0
|
||||
; -------------------------------------------------
|
||||
;TypeChar
|
||||
mask1 :8 .by 0
|
||||
mask2 :8 .by 0
|
||||
|
||||
char1 :8 .by 0
|
||||
char2 :8 .by 0
|
||||
color .byte 1
|
||||
ybit .byte 0
|
||||
tempbyte01 .byte 0
|
||||
delta .word 0
|
||||
yfloat .word 0
|
||||
deltaX .byte 0
|
||||
UpNdown .byte 0
|
||||
|
||||
|
||||
temptankX .word 0
|
||||
temptankNr .byte 0
|
||||
|
||||
; -------------------------------------------------
|
||||
;Variables from textproc.s65
|
||||
; tables with numbers of weapons on the right lists
|
||||
; to be honest - I do not know at the moment what the above
|
||||
; comment was supposed to mean...
|
||||
NubersOfWeaponsL1
|
||||
:(8*5) .by $ff
|
||||
NubersOfWeaponsL2
|
||||
:(8*2) .by $ff
|
||||
; -------------------------------------------------
|
||||
|
||||
; variables storing amount of weapons on the first and second
|
||||
; list and pointer position
|
||||
|
||||
HowManyOnTheList1
|
||||
.byte 0
|
||||
HowManyOnTheList2
|
||||
.byte 0
|
||||
PositionOnTheList ; pointer position on the list being displayed
|
||||
.byte 0
|
||||
LastWeapon ; number of the last previously purchased weapon
|
||||
; it is necessary when after purchase some weapon
|
||||
; is removed from the list (because too expensive)
|
||||
; and the cursor must be placed elsewhere
|
||||
|
||||
.byte $ff
|
||||
WhichList ; list currently on the screen
|
||||
; (0-offensive, 1-defensive)
|
||||
.byte 0
|
||||
OffsetDL1 ; offset of the list screen (how many lines)....
|
||||
.byte 0
|
||||
|
||||
; -------------------------------------------------
|
||||
;Options
|
||||
OptionsTable .byte 0,0,2,2
|
||||
OptionsY .byte 0 ;vertical position of cursor on Options screen
|
||||
maxoptions = 4 ;number of all options (4 in 0.01)
|
||||
CashOptionH ;(one zero less than on the screen)
|
||||
.byte 0,>200,>500,>800,>1000
|
||||
CashOptionL
|
||||
.byte 0,<200,<500,<800,<1000
|
||||
GravityTable .byte 10,20,25,30,40
|
||||
MaxWindTable .byte 5,20,40,60,80
|
||||
;------------------------------------------------
|
||||
|
||||
;mark the level
|
||||
PositionInName ; cursor position in name of the player when name input
|
||||
.byte 0
|
||||
DifficultyLevel ; Difficulty Level (human/cpu)
|
||||
.byte 0
|
||||
LevelNameBeginL ; begins of level names
|
||||
.byte <NamesOfLevels,<(NamesOfLevels+10),<(NamesOfLevels+20)
|
||||
.byte <(NamesOfLevels+32),<(NamesOfLevels+42),<(NamesOfLevels+52)
|
||||
.byte <(NamesOfLevels+64),<(NamesOfLevels+74),<(NamesOfLevels+84)
|
||||
LevelNameBeginH
|
||||
.byte >NamesOfLevels,>(NamesOfLevels+10),>(NamesOfLevels+20)
|
||||
.byte >(NamesOfLevels+32),>(NamesOfLevels+42),>(NamesOfLevels+52)
|
||||
.byte >(NamesOfLevels+64),>(NamesOfLevels+74),>(NamesOfLevels+84)
|
||||
;-------------------------------------------------
|
||||
;displaydecimal
|
||||
decimal .word 0
|
||||
displayposition .word 0
|
||||
decimalresult dta d"0000"
|
||||
|
||||
;xmissile
|
||||
ExplosionRadius .word 0 ;because when adding in xdraw it is double byte
|
||||
;round
|
||||
CurrentRoundNr .byte 0
|
||||
FallDown1 .byte 0
|
||||
FallDown2 .byte 0
|
||||
;leapfrog
|
||||
LeapFrogAngle .byte 0
|
||||
;laser
|
||||
LaserCoordinate .word 0,0,0,0
|
||||
TanksNames
|
||||
dta d"1st Tank"
|
||||
dta d"2nd Tank"
|
||||
dta d"3rd Tank"
|
||||
dta d"4th Tank"
|
||||
dta d"5th Tank"
|
||||
dta d"6th Tank"
|
||||
; -------------------------------------------------
|
||||
; Here go tables with weapons possesed by a given tank
|
||||
; Index in the table means weapon type
|
||||
; number entered means ammo for given weapon possessed (max 99)
|
||||
; Let 0 be "baby missile"
|
||||
; from $30 the defensive weapons begin
|
||||
TanksWeapons
|
||||
TanksWeapon1
|
||||
.by 99
|
||||
:63 .by 0
|
||||
TanksWeapon2
|
||||
.by 99
|
||||
:63 .by 0
|
||||
TanksWeapon3
|
||||
.by 99
|
||||
:63 .by 0
|
||||
TanksWeapon4
|
||||
.by 99
|
||||
:63 .by 0
|
||||
TanksWeapon5
|
||||
.by 99
|
||||
:63 .by 0
|
||||
TanksWeapon6
|
||||
.by 99
|
||||
:63 .by 0
|
||||
TanksWeaponsTableL
|
||||
.by <TanksWeapon1,<TanksWeapon2,<TanksWeapon3,<TanksWeapon4,<TanksWeapon5,<TanksWeapon6
|
||||
TanksWeaponsTableH
|
||||
.by >TanksWeapon1,>TanksWeapon2,>TanksWeapon3,>TanksWeapon4,>TanksWeapon5,>TanksWeapon6
|
||||
|
||||
mountaintable ;table of mountains (size=screenwidth)
|
||||
:screenwidth .by 0
|
||||
.by 0 ; additional byte for fallout (sometimes 1 pixel)
|
||||
mountaintable2 ;table of mountains (size=screenwidth)
|
||||
:screenwidth .by 0
|
||||
.by 0 ; additional byte for fallout (sometimes 1 pixel)
|
||||
mountaintable3
|
||||
:screenwidth .by 0
|
||||
.by 0 ; additional byte for fallout (sometimes 1 pixel)
|
||||
MountaintableEnd ;good for table clearing
|
||||
;----------------------------------------------
|
||||
TextPositionX .word 0
|
||||
TextPositionY .byte 0
|
||||
TextAddress .word 0
|
||||
TextCounter .byte 0
|
||||
TextNumberOff .byte 0
|
||||
;--------------
|
||||
TankTempY
|
||||
.byte 0
|
||||
;----------------------------------------------
|
||||
LineAddress4x4
|
||||
.word 0
|
||||
LineCharNr
|
||||
.byte 0
|
||||
LineXdraw
|
||||
.word 0
|
||||
LineYdraw
|
||||
.byte 0
|
||||
LineTop
|
||||
dta d"(%%%%%%%%%%%)"
|
||||
.byte $ff
|
||||
;# - pion, () * +, % - poziom
|
||||
LineBottom
|
||||
dta d"*%%%%%%%%%%%+"
|
||||
.byte $ff
|
||||
LineEmpty
|
||||
dta d"# #"
|
||||
.byte $ff
|
||||
LineHeader1
|
||||
dta d"# ROUND: "
|
||||
RoundNrDisplay
|
||||
dta d" #"
|
||||
.byte $ff
|
||||
LineHeader2
|
||||
dta d"# RESULTS #"
|
||||
.byte $ff
|
||||
|
||||
|
||||
|
||||
;-----------
|
||||
ResultLineBuffer
|
||||
dta d" "
|
||||
.byte $ff
|
||||
ResultX
|
||||
.word 0
|
||||
ResultY
|
||||
.byte 0
|
||||
ResultOfTankNr
|
||||
.byte 0
|
||||
|
||||
;-----------
|
||||
pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background)
|
||||
.byte <(pmgraph+$400)
|
||||
.byte <(pmgraph+$500)
|
||||
.byte <(pmgraph+$600)
|
||||
.byte <(pmgraph+$700)
|
||||
.byte <(pmgraph+$300) ; this is a missile background
|
||||
pmtableH
|
||||
.byte >(pmgraph+$400)
|
||||
.byte >(pmgraph+$500)
|
||||
.byte >(pmgraph+$600)
|
||||
.byte >(pmgraph+$700)
|
||||
.byte >(pmgraph+$300)
|
||||
;-----------
|
||||
; this table changes Angle to the appropriate tank character
|
||||
BarrelTableL
|
||||
.byte $02,$02,$02,$02,$02,$02,$02,$02
|
||||
.byte $04,$04,$04,$04,$04,$04,$04,$04
|
||||
.byte $06,$06,$06,$06,$06,$06,$06,$06,$06
|
||||
.byte $08,$08,$08,$08,$08,$08,$08,$08
|
||||
.byte $0a,$0a,$0a,$0a,$0a,$0a,$0a,$0a
|
||||
.byte $0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c,$0c
|
||||
.byte $0e,$0e,$0e,$0e,$0e,$0e,$0e,$0e
|
||||
.byte $10,$10,$10,$10,$10,$10,$10,$10
|
||||
.byte $12,$12,$12,$12,$12,$12,$12,$12,$12
|
||||
.byte $14,$14,$14,$14,$14,$14,$14,$14
|
||||
.byte $16,$16,$16,$16,$16,$16,$16,$16
|
||||
BarrelTableR
|
||||
.byte $2c,$2c,$2c,$2c,$2c,$2c,$2c,$2c
|
||||
.byte $2a,$2a,$2a,$2a,$2a,$2a,$2a,$2a
|
||||
.byte $28,$28,$28,$28,$28,$28,$28,$28,$28
|
||||
.byte $26,$26,$26,$26,$26,$26,$26,$26
|
||||
.byte $24,$24,$24,$24,$24,$24,$24,$24
|
||||
.byte $22,$22,$22,$22,$22,$22,$22,$22,$22
|
||||
.byte $20,$20,$20,$20,$20,$20,$20,$20
|
||||
.byte $1e,$1e,$1e,$1e,$1e,$1e,$1e,$1e
|
||||
.byte $1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c,$1c
|
||||
.byte $1a,$1a,$1a,$1a,$1a,$1a,$1a,$1a
|
||||
.byte $18,$18,$18,$18,$18,$18,$18,$18
|
||||
|
||||
sintable
|
||||
.byte 0
|
||||
.byte 4
|
||||
.byte 8
|
||||
.byte 13
|
||||
.byte 17
|
||||
.byte 22
|
||||
.byte 26
|
||||
.byte 31
|
||||
.byte 35
|
||||
.byte 40
|
||||
.byte 44
|
||||
.byte 48
|
||||
.byte 53
|
||||
.byte 57
|
||||
.byte 61
|
||||
.byte 66
|
||||
.byte 70
|
||||
.byte 74
|
||||
.byte 79
|
||||
.byte 83
|
||||
.byte 87
|
||||
.byte 91
|
||||
.byte 95
|
||||
.byte 100
|
||||
.byte 104
|
||||
.byte 108
|
||||
.byte 112
|
||||
.byte 116
|
||||
.byte 120
|
||||
.byte 124
|
||||
.byte 128
|
||||
.byte 131
|
||||
.byte 135
|
||||
.byte 139
|
||||
.byte 143
|
||||
.byte 146
|
||||
.byte 150
|
||||
.byte 154
|
||||
.byte 157
|
||||
.byte 161
|
||||
.byte 164
|
||||
.byte 167
|
||||
.byte 171
|
||||
.byte 174
|
||||
.byte 177
|
||||
.byte 181
|
||||
.byte 184
|
||||
.byte 187
|
||||
.byte 190
|
||||
.byte 193
|
||||
.byte 196
|
||||
.byte 198
|
||||
.byte 201
|
||||
.byte 204
|
||||
.byte 207
|
||||
.byte 209
|
||||
.byte 212
|
||||
.byte 214
|
||||
.byte 217
|
||||
.byte 219
|
||||
.byte 221
|
||||
.byte 223
|
||||
.byte 226
|
||||
.byte 228
|
||||
.byte 230
|
||||
.byte 232
|
||||
.byte 233
|
||||
.byte 235
|
||||
.byte 237
|
||||
.byte 238
|
||||
.byte 240
|
||||
.byte 242
|
||||
.byte 243
|
||||
.byte 244
|
||||
.byte 246
|
||||
.byte 247
|
||||
.byte 248
|
||||
.byte 249
|
||||
.byte 250
|
||||
.byte 251
|
||||
.byte 252
|
||||
.byte 252
|
||||
.byte 253
|
||||
.byte 254
|
||||
.byte 254
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 255 ;anti self destruction byte
|
||||
|
||||
costable
|
||||
.byte 255 ;anti self destruction byte
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 255
|
||||
.byte 254
|
||||
.byte 254
|
||||
.byte 253
|
||||
.byte 252
|
||||
.byte 252
|
||||
.byte 251
|
||||
.byte 250
|
||||
.byte 249
|
||||
.byte 248
|
||||
.byte 247
|
||||
.byte 246
|
||||
.byte 244
|
||||
.byte 243
|
||||
.byte 242
|
||||
.byte 240
|
||||
.byte 238
|
||||
.byte 237
|
||||
.byte 235
|
||||
.byte 233
|
||||
.byte 232
|
||||
.byte 230
|
||||
.byte 228
|
||||
.byte 226
|
||||
.byte 223
|
||||
.byte 221
|
||||
.byte 219
|
||||
.byte 217
|
||||
.byte 214
|
||||
.byte 212
|
||||
.byte 209
|
||||
.byte 207
|
||||
.byte 204
|
||||
.byte 201
|
||||
.byte 198
|
||||
.byte 196
|
||||
.byte 193
|
||||
.byte 190
|
||||
.byte 187
|
||||
.byte 184
|
||||
.byte 181
|
||||
.byte 177
|
||||
.byte 174
|
||||
.byte 171
|
||||
.byte 167
|
||||
.byte 164
|
||||
.byte 161
|
||||
.byte 157
|
||||
.byte 154
|
||||
.byte 150
|
||||
.byte 146
|
||||
.byte 143
|
||||
.byte 139
|
||||
.byte 135
|
||||
.byte 131
|
||||
.byte 128
|
||||
.byte 124
|
||||
.byte 120
|
||||
.byte 116
|
||||
.byte 112
|
||||
.byte 108
|
||||
.byte 104
|
||||
.byte 100
|
||||
.byte 95
|
||||
.byte 91
|
||||
.byte 87
|
||||
.byte 83
|
||||
.byte 79
|
||||
.byte 74
|
||||
.byte 70
|
||||
.byte 66
|
||||
.byte 61
|
||||
.byte 57
|
||||
.byte 53
|
||||
.byte 48
|
||||
.byte 44
|
||||
.byte 40
|
||||
.byte 35
|
||||
.byte 31
|
||||
.byte 26
|
||||
.byte 22
|
||||
.byte 17
|
||||
.byte 13
|
||||
.byte 8
|
||||
.byte 4
|
||||
.byte 0
|
||||
|
||||
linetableL
|
||||
:screenheight .by <(display+screenBytes*#)
|
||||
;:20 .by <(display+screenBytes*#)
|
||||
.by <PlotLine
|
||||
linetableH
|
||||
:screenheight .by >(display+screenBytes*#)
|
||||
;:20 .by >(display+screenBytes*#)
|
||||
.by >PlotLine
|
||||
;----------------------------
|
||||
oldPlotPointerX
|
||||
.wo 0
|
||||
;----------------------------
|
||||
;PutChar4x4
|
||||
LoopCounter4x4 .byte 0
|
||||
y4x4 .byte 0
|
||||
StoreA4x4 .byte 0
|
||||
Xcounter4x4 .byte 0
|
||||
nibbler4x4 .byte 0
|
||||
CharCode4x4 .byte 0
|
||||
plot4x4color .byte 0 ;1-white, 0-background
|
||||
|
||||
bittable
|
||||
.byte $80,$40,$20,$10,$08,$04,$02,$01
|
||||
bittable2
|
||||
.byte $7f,$bf,$df,$ef,$f7,$fb,$fd,$fe
|
||||
;----------------------------
|
||||
disktance ;tanks distance
|
||||
.byte 0,0
|
||||
.byte screenwidth/3
|
||||
.byte screenwidth/4
|
||||
.byte screenwidth/5
|
||||
.byte screenwidth/6
|
||||
.byte screenwidth/7
|
||||
;max number of players=6
|
||||
|
||||
; this table is for deciding where a tank should slide
|
||||
; accordingly to what is below the tank
|
||||
; there are 3 bits used here
|
||||
; bit 0 - go down
|
||||
; bit 1 - go left
|
||||
; bit 2 - go right
|
||||
; position in the table equals to bit pattern of soil below tank
|
||||
|
||||
WhereToSlideTable
|
||||
; we have 3 bits: 0 - go down, 1 - go right, 2 - go left
|
||||
;original table
|
||||
;.BYTE 1,5,4,4,4,4,4,4,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
.BYTE 1,5,4,4,4,4,4,4,0,0,0,0,0,0,0,0 ;16
|
||||
.BYTE 4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;32
|
||||
.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;48
|
||||
.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;64
|
||||
.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;80
|
||||
.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;96
|
||||
.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;112
|
||||
.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ;128
|
||||
.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.BYTE 2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.BYTE 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
EndOfTheBarrelX
|
||||
.byte 4,4,4,4,4,4,4,4,4,4,4
|
||||
.byte 5,5,5,5,5,5,5,5,5,5
|
||||
.byte 6,6,6,6,6,6,6,6,6
|
||||
.byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7
|
||||
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0
|
||||
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 1,1,1,1,1,1,1,1,1
|
||||
.byte 2,2,2,2,2,2,2,2,2,2
|
||||
.byte 3,3,3,3,3,3,3,3,3,3,3
|
||||
|
||||
EndOfTheBarrelY
|
||||
.byte 7,7,7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
|
||||
.byte 6,6,6,6,6,6,6,6,6
|
||||
.byte 5,5,5,5,5,5,5,5,5,5
|
||||
.byte 4,4,4,4,4,4,4,4,4,4,4,4,4
|
||||
.byte 3,3,3,3,3,3,3,3,3,3,3,3,3,3
|
||||
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0
|
||||
|
||||
.byte 3,3,3,3,3,3,3,3,3,3,3,3,3,3
|
||||
.byte 4,4,4,4,4,4,4,4,4,4,4,4,4
|
||||
.byte 5,5,5,5,5,5,5,5,5,5
|
||||
.byte 6,6,6,6,6,6,6,6,6
|
||||
.byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7,7
|
||||
.byte 7,7,7,7,7,7,7,7,7,7,7
|
||||
;-------------------------------------------------
|
||||
|
||||
TanksNamesDefault
|
||||
dta d"1st Tank"
|
||||
dta d"2nd Tank"
|
||||
dta d"3rd Tank"
|
||||
dta d"4th Tank"
|
||||
dta d"5th Tank"
|
||||
dta d"6th Tank"
|
||||
|
||||
WeaponPriceH ; weapons prices (tables with prices of weapons)
|
||||
.byte $00,$00,$00,$00,$00,$01,$01,$01
|
||||
.byte $01,$01,$00,$01,$02,$02,$02,$01
|
||||
.byte $01,$01,$01,$01,$01,$00,$00,$00
|
||||
.byte $01,$00,$00,$00,$02,$02,$01,$01
|
||||
.byte $02,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,$04,0,0,0,0,0,0,0,0,0,0
|
||||
WeaponPriceL
|
||||
.byte $00,$60,$6F,$90,$c0,$25,$c8,$51
|
||||
.byte $f0,$ff,$66,$23,$b1,$58,$50,$4A
|
||||
.byte $55,$71,$42,$50,$14,$fd,$da,$bf
|
||||
.byte $31,$68,$82,$ab,$12,$45,$ae,$12
|
||||
.byte $41,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 0,0,0,0,0,$4c,0,0,0,0,0,0,0,0,0,0
|
||||
;-------------------------------------------------
|
||||
; how many units (bulletd) of a given weapon we get for a given price
|
||||
; This is a table of constans.
|
||||
; If on a given position is 0 it means that this weapon
|
||||
; is not present in the game.
|
||||
; This is the slot for adding new weapons.
|
||||
WeaponUnits
|
||||
.byte 10,5,3,1,2,2,3,1,10,2,20,10,10,5,2,10
|
||||
.byte 5,5,2,10,5,2,10,5,2,10,5,2,2,10,10,5
|
||||
.byte 5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byte 6,2,5,5,2,8,10,2,3,3,2,2,1,10,25,0
|
||||
|
||||
;-------------------------------------------------
|
||||
; Screen codes of icons (chars) representing a given weapon
|
||||
WeaponSymbols
|
||||
.byte $40,$41,$42,$43,$44,$45,$46,$47
|
||||
.byte $48,$49,$4a,$4b,$4c,$4d,$4e,$4f
|
||||
.byte $50,$51,$52,$53,$54,$55,$56,$57
|
||||
.byte $58,$59,$5a,$5b,$60,$7b,$7c,$7d
|
||||
.byte $20,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $00,$00,$00,$00,$00,$00,$00,$00
|
||||
.byte $02,$03,$06,$1d,$0a,$1b,$1c,$1e
|
||||
.byte $3b,$3c,$3d,$3e,$3f,$5e,$5f,$00
|
||||
|
||||
; Names of weapons (16 chars lon)
|
||||
NamesOfWeapons ;the comment is an index in the tables
|
||||
dta d"Baby Missile " ; 0
|
||||
dta d"Missile " ; 1
|
||||
dta d"Baby Nuke " ; 2
|
||||
dta d"Nuke " ; 3
|
||||
dta d"LeapFrog " ; 4
|
||||
dta d"Funky Bomb " ; 5
|
||||
dta d"MIRV " ; 6
|
||||
dta d"Death's Head " ; 7
|
||||
dta d"Napalm " ; 8
|
||||
dta d"Hot Napalm " ; 9
|
||||
dta d"Tracer " ; 10
|
||||
dta d"Smoke Tracer " ; 11
|
||||
dta d"Baby Roller " ; 12
|
||||
dta d"Roller " ; 13
|
||||
dta d"Heavy Roller " ; 14
|
||||
dta d"Riot Charge " ; 15
|
||||
dta d"Riot Blast " ; 16
|
||||
dta d"Riot Bomb " ; 17
|
||||
dta d"Heavy Riot Bomb " ; 18
|
||||
dta d"Baby Digger " ; 19
|
||||
dta d"Digger " ; 20
|
||||
dta d"Heavy Digger " ; 21
|
||||
dta d"Baby Sandhog " ; 22
|
||||
dta d"Sandhog " ; 23
|
||||
dta d"Heavy Sandhog " ; 24
|
||||
dta d"Dirt Clod " ; 25
|
||||
dta d"Dirt Ball " ; 26
|
||||
dta d"Ton of Dirt " ; 27
|
||||
dta d"Liquid Dirt " ; 28
|
||||
dta d"Dirt Charge " ; 29
|
||||
dta d"Earth Disrupter " ; 30
|
||||
dta d"Plasma Blast " ; 31
|
||||
dta d"Laser " ; 32
|
||||
dta d"----------------" ; 33
|
||||
dta d"----------------" ; 34
|
||||
dta d"----------------" ; 35
|
||||
dta d"----------------" ; 36
|
||||
dta d"----------------" ; 37
|
||||
dta d"----------------" ; 38
|
||||
dta d"----------------" ; 39
|
||||
dta d"----------------" ; 40
|
||||
dta d"----------------" ; 41
|
||||
dta d"----------------" ; 42
|
||||
dta d"----------------" ; 43
|
||||
dta d"----------------" ; 44
|
||||
dta d"----------------" ; 45
|
||||
dta d"----------------" ; 46
|
||||
dta d"----------------" ; 47
|
||||
|
||||
dta d"Heat Guidance " ; 48 ($30)
|
||||
dta d"Bal Guidance " ; 49
|
||||
dta d"Horz Guidance " ; 50
|
||||
dta d"Vert Guidance " ; 51
|
||||
dta d"Lazy Boy " ; 52
|
||||
dta d"Parachute " ; 53
|
||||
dta d"Battery " ; 54
|
||||
dta d"Mag Deflector " ; 55
|
||||
dta d"Shield " ; 56
|
||||
dta d"Force Shield " ; 57
|
||||
dta d"Heavy Shield " ; 58
|
||||
dta d"Super Mag " ; 59
|
||||
dta d"Auto Defense " ; 60
|
||||
dta d"Fuel Tank " ; 61
|
||||
dta d"Contact Trigger " ; 62
|
||||
dta d"----------------" ; 63
|
||||
joyToKeyTable
|
||||
; .by 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15
|
||||
.by $ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$ff,$ff,$ff,$06,$ff,$0f,$0e,$ff
|
||||
previousAngle
|
||||
:MaxPlayers .by 0
|
||||
previousEnergyL
|
||||
:MaxPlayers .by 0
|
||||
previousLeftRange
|
||||
:MaxPlayers .by 0
|
||||
previousEnergyH
|
||||
:MaxPlayers .by 0
|
||||
previousRightAngle
|
||||
:MaxPlayers .by 0
|
||||
RandBoundaryLow
|
||||
.wo 0
|
||||
RandBoundaryHigh
|
||||
.wo 1024
|
||||
AngleTablePointer
|
||||
.by 0
|
||||
|
||||
|
||||
clearEnd
|
||||
|
||||
.endif
|
||||
|
||||
+2152
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user