mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-20 22:34:21 +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