Compare commits
115 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4fe360d63c | |||
| c9ceb58117 | |||
| e10514debd | |||
| 2907fe7a91 | |||
| a0d5d22e74 | |||
| 1ea62798c8 | |||
| 42facad64e | |||
| 2c98d73877 | |||
| 4ae4403448 | |||
| 242bc4586c | |||
| eda0e65189 | |||
| 8613854f80 | |||
| 1c277b0e6f | |||
| 623c9c9583 | |||
| ce55bf0d97 | |||
| 537f88e4c6 | |||
| 9aaa4fec69 | |||
| 67b5dfb110 | |||
| 4200e60d47 | |||
| 7324203925 | |||
| 634c2f83e9 | |||
| 18f88705e5 | |||
| fe6bd17a66 | |||
| 1d8f26d562 | |||
| 2bb8a743e1 | |||
| 708a7b4aa9 | |||
| 8153670711 | |||
| ab140ed5ca | |||
| cc3e2d1845 | |||
| 98e866abdd | |||
| ffa748fb68 | |||
| de047779ce | |||
| 3c685b2811 | |||
| c86dcd7c59 | |||
| f924868459 | |||
| 2992bd40b3 | |||
| b19d218670 | |||
| 8ab450ff48 | |||
| 5e2ab7f206 | |||
| cd69bf22db | |||
| ff8c4d9329 | |||
| 83e128a1b5 | |||
| cc8688263a | |||
| b5bf6ecc30 | |||
| e2c85c98c2 | |||
| c47a22a833 | |||
| cd4275226a | |||
| cb270be865 | |||
| 7df1d5eff9 | |||
| c3f6e2399d | |||
| 598860b7d0 | |||
| c1aa177767 | |||
| eb7f6369de | |||
| 41900d7671 | |||
| 6a6689b9b7 | |||
| 836c67afcf | |||
| 1b983b8d92 | |||
| 53e9f89012 | |||
| cf40bf905d | |||
| 91b613f166 | |||
| eace9eb5cf | |||
| 4c6b56a1e2 | |||
| 7b86fc98cd | |||
| 186cacf5ba | |||
| 031416b8e6 | |||
| 1394524a26 | |||
| ea6c621d79 | |||
| afd81c08c3 | |||
| a9703609b6 | |||
| d8bfda28a0 | |||
| 743114fd0d | |||
| 079abc062f | |||
| 853a597daf | |||
| 1eadc7f63e | |||
| 081cf282c8 | |||
| 4c3203854c | |||
| bf11a9967f | |||
| 0d7403d1c0 | |||
| 777f5c341a | |||
| 8f0bd8ca81 | |||
| c12049d0d7 | |||
| 6013986e51 | |||
| 0fbe3de569 | |||
| 9569b3365a | |||
| 6d9b2907c5 | |||
| 94e6caebed | |||
| 532ee7dc88 | |||
| 17e653b37d | |||
| bef3c0f080 | |||
| 7ff3858433 | |||
| eae8cb08d8 | |||
| f13d7ac801 | |||
| 0ddbe41005 | |||
| 7cd31450c7 | |||
| a556e50e53 | |||
| 9f1720e970 | |||
| 2df28af79c | |||
| defbde5b87 | |||
| 0820124f9f | |||
| aa74cf133b | |||
| 2c640c370a | |||
| 636e121bf7 | |||
| 3c1b0a02aa | |||
| be5652074a | |||
| a425500d4e | |||
| a721b82944 | |||
| 762b56567b | |||
| b11d22d1bb | |||
| c68ba09103 | |||
| e399754e0c | |||
| 381495fb5a | |||
| 17b57d1ed2 | |||
| 2fb04cabff | |||
| 457af6d6b9 | |||
| bdf0f10cc0 |
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
*.bak
|
||||||
@@ -47,19 +47,67 @@ With the advent of fujinet (https://fujinet.online/) we are thinking about makin
|
|||||||
|
|
||||||
## Changes:
|
## Changes:
|
||||||
|
|
||||||
|
###### Build 145
|
||||||
|
2022-06-26
|
||||||
|
Possibly last round of weapon additions!
|
||||||
|
@Pecusx added
|
||||||
|
- working White Flag -- it is a way to give up while not making opponents richer!
|
||||||
|
- Battery - a must for every tank with low energy.
|
||||||
|
- Strong Parachute - like a normal parachute, but stronger (it has energy and can work more than once)
|
||||||
|
- Nuclear Winter - a quick and efficient solution to global worming, err, warning, WARMING!
|
||||||
|
@mikerro added new SFX and in-game-tunes.
|
||||||
|
- Pressing [S] turns on/off SFX (when aiming). Pressing [M] turns on/off in-game tunes.
|
||||||
|
Tickets closed:
|
||||||
|
- https://github.com/pkali/scorch_src/issues/54 - holding joystick up or down longer speeds up force change. It makes playing with joystick much nicer.
|
||||||
|
- https://github.com/pkali/scorch_src/issues/76 - a beginning of visual tweaks by Adam
|
||||||
|
- infinite defensive weapons purchase bug fixed, to chagrin of some...
|
||||||
|
|
||||||
|
###### Build 144
|
||||||
|
2022-06-19
|
||||||
|
Father's day release comes with the most anticipated new feature: defensive weapons. Thanks to @Pecus we have 5 completely new weapons and a more reasonably working parachute. The stub of the instruction manual describing these weapons is available here: https://github.com/pkali/scorch_src/wiki/Instruction-manual.
|
||||||
|
|
||||||
|
The new inventory system has been added. Call it by pressing the "I" key or short-pressing fire. Select the weapon to use by moving the joystick or cursor keys right. Switch between offensive and defensive weapons by moving the joystick left. Fire/escape to quit inventory.
|
||||||
|
|
||||||
|
Another significant playability change is #54 - it is not finished yet, but keeping the joystick up or down makes force increase/decrease faster. Also - short press of fire calls Inventory, long press fires the shell. The timings are experimental, please let me know if this needs a modification/improvement.
|
||||||
|
|
||||||
|
Tickets closed:
|
||||||
|
* https://github.com/pkali/scorch_src/issues/92 - less unnecessary cleaning of the offensive texts
|
||||||
|
* https://github.com/pkali/scorch_src/issues/89 - improved collisions with tank
|
||||||
|
* https://github.com/pkali/scorch_src/issues/71 - ditto
|
||||||
|
* https://github.com/pkali/scorch_src/issues/11, https://github.com/pkali/scorch_src/issues/26, https://github.com/pkali/scorch_src/issues/8, https://github.com/pkali/scorch_src/issues/20 - new inventory system
|
||||||
|
|
||||||
|
###### Build 143
|
||||||
|
2022-06-05
|
||||||
|
Rewrite build. We redone several important parts of the game to allow for bug fixes and requested features. Generally it was a great success, but some new bugs appeared. This build is nice for the eye, but beware, no mercy for testers again :)
|
||||||
|
Only visible changes listed, because you are possibly not as excited as we are for the new Flight routine and ground collisions by @Pecusx.
|
||||||
|
- https://github.com/pkali/scorch_src/issues/84, https://github.com/pkali/scorch_src/issues/63 - tanks now say good bye properly!
|
||||||
|
- https://github.com/pkali/scorch_src/issues/74 - Press [ESC] to quit the game at any point, with a confirmation when the round has already started. Please note the keyboard is not checked all the time, so press it for a while, especially when AI tanks are ru(i/n)ning the show.
|
||||||
|
- https://github.com/pkali/scorch_src/issues/56 - there should be no occurrences of frivolous weapon purchases. Please report all tanks getting their munitions from uncertified sources!
|
||||||
|
- https://github.com/pkali/scorch_src/issues/47 - It seems that the bad sequence of turns has been ameliorated. Fix is trivial, finding the culprit - far from it. Please pay special attention to fairness of shooting in case the fix is still longing for the fjords.
|
||||||
|
- ATTRACT mode works how it should - screensaver saves screen only when HUMAN should input something.
|
||||||
|
|
||||||
|
###### Build 142
|
||||||
|
2022-05-30
|
||||||
|
Late build. The bugs we tried to squelch turned out to be more difficult than usual. Some progress has been made though even if it is not yet visible.
|
||||||
|
- 4x4 font rewritten by @Pecusx as a prep for Y standarization. It makes the messages to appear faster. This is a good change.
|
||||||
|
- https://github.com/pkali/scorch_src/issues/5 and #80 fixed (again) - no funkybomb traces staying on the screen
|
||||||
|
- https://github.com/pkali/scorch_src/issues/70 too strong Shooters fixed
|
||||||
|
- https://github.com/pkali/scorch_src/issues/63 - tank say goodbye when (mostly) visible
|
||||||
|
- several other small changes and improvements that will pay off in the following releases.
|
||||||
|
|
||||||
###### Build 141
|
###### Build 141
|
||||||
2022-05-22
|
2022-05-22
|
||||||
Debug build. Thanks to all testers for finding numerous bugs. We tried to fix some of them and we have introduced some new for your enjoyment.
|
Debug build. Thanks to all testers for finding numerous bugs. We tried to fix some of them and we have introduced some new for your enjoyment.
|
||||||
- #73 Fast forward. Press [START] to speed up the game where it can be sped up. Not in many places, mind you.
|
- https://github.com/pkali/scorch_src/issues/73 Fast forward. Press [START] to speed up the game where it can be sped up. Not in many places, mind you.
|
||||||
- #72 Screen glitches improved
|
- https://github.com/pkali/scorch_src/issues/72 Screen glitches improved
|
||||||
- #70 AI shoot with more force than their energy allows. We might still have to revise this one
|
- https://github.com/pkali/scorch_src/issues/70 AI shoot with more force than their energy allows. We might still have to revise this one
|
||||||
- #69 Explosions wrapping around the screen
|
- https://github.com/pkali/scorch_src/issues/69 Explosions wrapping around the screen
|
||||||
- #67 Screen glitches after intro
|
- https://github.com/pkali/scorch_src/issues/67 Screen glitches after intro
|
||||||
- #65 Saved ~90 bytes by removing cosinus table
|
- https://github.com/pkali/scorch_src/issues/65 Saved ~90 bytes by removing cosinus table
|
||||||
- #62 Empty list of defensive weapons gets corrupted. Plunged it with a new defensive weapon - "White Flag". Honor of the tank crew prohibits them from buying it (yet)
|
- https://github.com/pkali/scorch_src/issues/62 Empty list of defensive weapons gets corrupted. Plunged it with a new defensive weapon - "White Flag". Honor of the tank crew prohibits them from buying it (yet)
|
||||||
- #61 [SHIFT] was repeating the last key
|
- https://github.com/pkali/scorch_src/issues/61 [SHIFT] was repeating the last key
|
||||||
- #57 Fire too sensitive on a real machine. Switched to shadow registers. First recorded use of Atari OS :O
|
- https://github.com/pkali/scorch_src/issues/57 Fire too sensitive on a real machine. Switched to shadow registers. First recorded use of Atari OS :O
|
||||||
- #55 Glitches in the status bar. This one was surprisingly tough.
|
- https://github.com/pkali/scorch_src/issues/55 Glitches in the status bar. This one was surprisingly tough.
|
||||||
|
|
||||||
###### Build 140
|
###### Build 140
|
||||||
2022-05-15
|
2022-05-15
|
||||||
|
|||||||
@@ -1,90 +0,0 @@
|
|||||||
MOVED TO: https://github.com/pkali/scorch_src/issues
|
|
||||||
|
|
||||||
TODO and BUGS file
|
|
||||||
|
|
||||||
---------------------------------------------------------
|
|
||||||
Known bugs (+ means bug is fixed)
|
|
||||||
004. when parachute is on and the tank dies (e.g. hit by a powerful
|
|
||||||
weapon) the dead (invisible) tank falls on parachute
|
|
||||||
(and uses one parachute more than necessary)
|
|
||||||
005. tank stands still on a one pixel spike - it should fall
|
|
||||||
(possibly all that is necessary is adjust of WhereToSlideTable)
|
|
||||||
017: Observed MIRV loops - it shoots and shoots MIRV all over the screen. Very rare.
|
|
||||||
020: sometimes leftmost or rightmost remains of the funkybomb smoke do not get cleared
|
|
||||||
I think it happens when one of the bombs goes out of the screen
|
|
||||||
023: NEW BUG. After the last change (bug 007) now the last shell of any weapon gets removed and
|
|
||||||
the game switches to Baby missile.
|
|
||||||
|
|
||||||
Fixed:
|
|
||||||
+001. when bullet goes straight down very fast it misses the tank
|
|
||||||
it happens only when tank is standing on the bottom of
|
|
||||||
the screen (no ground below)
|
|
||||||
+002. points after the round are not calculated correctly
|
|
||||||
+003. if death's head explodes low, the lowest explosion wraps
|
|
||||||
and appears on the top of the screen
|
|
||||||
+006. After some attacks (like MIRV and leapfrog the OffensiveText
|
|
||||||
stays on the screen (and becomes a static decoration)
|
|
||||||
It possibly happens when a tank kills itself with mirv or leapfrog.
|
|
||||||
+008. After a round the last tank sprite stays on the screen.
|
|
||||||
This hurts only when the last tank is under the table with results!
|
|
||||||
+010. Even MORONS shoot their feet too often - increase min. randomised energy.
|
|
||||||
+011. High flying bullets sometimes cause brief screen garbage - like a DL damaged
|
|
||||||
for a fraction of a frame.
|
|
||||||
Update - these are NOT high flying bullets - it just happens during bullet flight
|
|
||||||
+012. (newly introduced) Death explosions are offset right and possibly up.
|
|
||||||
+013. sometimes demo mode does not work (it stops on results display)
|
|
||||||
+014: FunkyBomb shoots with too high angle
|
|
||||||
+015: Only first shoot of FunkyBomb is correct (with smoke and fast),
|
|
||||||
the next are like missiles
|
|
||||||
+016: Additional explosions after Frogger do not have falling soil (?)
|
|
||||||
-018: MINOR: ydraw, yhit, ybyte variable is sometimes treated as WORD, sometimes as BYTE.
|
|
||||||
Making it consistent would save both time and space (not much)
|
|
||||||
REJECTED: too much work - different routines depend on checking high byte.
|
|
||||||
+019: AI menu does not recognize keyboard up (prints "-" in tank name)
|
|
||||||
+021: check MWA, ADW, SBW macros - bad modifications of bytes found!!!
|
|
||||||
+009. When result in points is >99 then only 2 first digits are displayed
|
|
||||||
-022: shooting funkybomb decreases number of bombs too much! (2 instead of 1?)
|
|
||||||
+007. Decreasing of number of bullets after a shoot does not work correctly
|
|
||||||
(e.g. 2 bullets are deducted instead of 1) FUNKYBOMB!!!
|
|
||||||
it looks like it is fixed, although what I did was moving decreasing before jsr shoot
|
|
||||||
+000, Game crashes from time to time, code and/or screen gets corrupted
|
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------
|
|
||||||
To do
|
|
||||||
*004. The game has no end!!! Add ending!!!
|
|
||||||
A good idea for an ending - a TIP pic - Red Army taking Berlin :)
|
|
||||||
Another - vector tanks like in BattleZone
|
|
||||||
Another - stickman tankmen
|
|
||||||
006. Add sound effects (maybe sampled? or mp0 (sound based on fft))
|
|
||||||
007. There is no defensive weapon handling (only parachute works,
|
|
||||||
but also provisionally
|
|
||||||
009. Make AI in the existing framework (ongoing)
|
|
||||||
010. It is impossible to look up a number of parachutes left.
|
|
||||||
018. Speed up soil down after soil eating weapons - correctly calculate
|
|
||||||
ranges as now range is very broad even when very little soil is eaten.
|
|
||||||
019. Purchase impossible with joystick only. Add buy on e.g. joystick right.
|
|
||||||
020. Not a bug per se, but ydraw variable is word, possibly it can be switched to byte
|
|
||||||
021. Add player colors to purchase screen
|
|
||||||
022. Make colors more contrasting
|
|
||||||
024. no visual indication of using defensive weapons
|
|
||||||
|
|
||||||
Done:
|
|
||||||
|
|
||||||
+001. Start each round with a)worst tank or b)random tank
|
|
||||||
(Worst tank starts first)
|
|
||||||
+002. Start each round with random angles (not always 45 degrees left)
|
|
||||||
+003. Add colour of the given tank to the screen
|
|
||||||
E.g. when a given tank is shooting it's colour could be behind
|
|
||||||
tank name on the text screen
|
|
||||||
+005. Add number of rounds to the options menu
|
|
||||||
+008. No computer operated opponents - make a framework for AI!!!
|
|
||||||
+011. Colouring the top status lines in a colour of the active tank.
|
|
||||||
+014. Demo mode - when all tanks are CPUs let them play non-stop!
|
|
||||||
(replace waiting for a key-press after a round with a small delay)
|
|
||||||
+015. Switch to mads for easier development (mads speeds it up, no doubt)
|
|
||||||
+016. Speed up death's head (e.g.: draw each second circle)
|
|
||||||
-017. Wide screen mode (with scroll?)
|
|
||||||
+012. Decreased number of bullets should be displayed just after the shoot.
|
|
||||||
+013. Check LineTable - possibly it is unnecessarily long. Checked. It is OK
|
|
||||||
+023. Make not implemented weapons raise NotImplementedError :] Done by making it impossible to purchase free weapons (price == $0)
|
|
||||||
@@ -33,7 +33,7 @@ loop
|
|||||||
ArtificialIntelligence .proc ;
|
ArtificialIntelligence .proc ;
|
||||||
; A - skill of the TankNr
|
; A - skill of the TankNr
|
||||||
; returns shoot energy and angle in
|
; returns shoot energy and angle in
|
||||||
; EnergyTable/L/H and AngleTable
|
; ForceTable/L/H and AngleTable
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
asl
|
asl
|
||||||
tax
|
tax
|
||||||
@@ -77,24 +77,22 @@ Shooter .proc
|
|||||||
lda PreviousAngle,x
|
lda PreviousAngle,x
|
||||||
clc
|
clc
|
||||||
adc #5
|
adc #5
|
||||||
bmi leftQuadrant
|
bmi @+
|
||||||
cmp #90
|
cmp #90
|
||||||
bcc continue
|
bcc @+
|
||||||
lda #(-90)
|
lda #(-90)
|
||||||
bne continue
|
@
|
||||||
leftQuadrant
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
continue
|
|
||||||
sta NewAngle
|
sta NewAngle
|
||||||
|
|
||||||
|
sec
|
||||||
lda PreviousEnergyL,x
|
lda PreviousEnergyL,x
|
||||||
sta EnergyTableL,x
|
sbc #5
|
||||||
|
sta ForceTableL,x
|
||||||
lda PreviousEnergyH,x
|
lda PreviousEnergyH,x
|
||||||
sta EnergyTableH,x
|
sbc #0
|
||||||
|
sta ForceTableH,x
|
||||||
jmp endo
|
jmp endo
|
||||||
|
|
||||||
firstShoot
|
firstShoot
|
||||||
; compare the x position with the middle of the screen
|
; compare the x position with the middle of the screen
|
||||||
lda xTanksTableL,x
|
lda xTanksTableL,x
|
||||||
@@ -108,7 +106,6 @@ firstShoot
|
|||||||
and #$1F
|
and #$1F
|
||||||
clc
|
clc
|
||||||
adc #5
|
adc #5
|
||||||
;lda #45
|
|
||||||
|
|
||||||
sta NewAngle
|
sta NewAngle
|
||||||
jmp forceNow
|
jmp forceNow
|
||||||
@@ -123,15 +120,17 @@ tankIsOnTheRight
|
|||||||
forceNow
|
forceNow
|
||||||
mwa #100 RandBoundaryLow
|
mwa #100 RandBoundaryLow
|
||||||
mwa #800 RandBoundaryHigh
|
mwa #800 RandBoundaryHigh
|
||||||
|
ldx TankNr ;this is possibly not necessary
|
||||||
jsr RandomizeForce
|
jsr RandomizeForce
|
||||||
|
|
||||||
endo
|
endo
|
||||||
;ldx TankNr ;this is possibly not necessary
|
ldx TankNr ;this is possibly not necessary
|
||||||
|
jsr RandomizeForce.LimitForce
|
||||||
lda NewAngle
|
lda NewAngle
|
||||||
sta PreviousAngle,x
|
sta PreviousAngle,x
|
||||||
lda EnergyTableL,x
|
lda ForceTableL,x
|
||||||
sta PreviousEnergyL,x
|
sta PreviousEnergyL,x
|
||||||
lda EnergyTableH,x
|
lda ForceTableH,x
|
||||||
sta PreviousEnergyH,x
|
sta PreviousEnergyH,x
|
||||||
|
|
||||||
; choose the best weapon
|
; choose the best weapon
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ quit
|
|||||||
ini main
|
ini main
|
||||||
; ---
|
; ---
|
||||||
|
|
||||||
opt l-
|
;opt l-
|
||||||
|
|
||||||
.MACRO SPRITES
|
.MACRO SPRITES
|
||||||
missiles
|
missiles
|
||||||
|
|||||||
Executable → Regular
Executable → Regular
Executable → Regular
|
Before Width: | Height: | Size: 190 B After Width: | Height: | Size: 190 B |
Binary file not shown.
Executable → Regular
Executable → Regular
BIN
Binary file not shown.
Executable → Regular
Executable → Regular
Binary file not shown.
+93
-72
@@ -14,16 +14,15 @@ dliColorsFore
|
|||||||
TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor
|
TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor
|
||||||
TextForegroundColor = $0c
|
TextForegroundColor = $0c
|
||||||
CashOptionL ;(one zero less than on the screen)
|
CashOptionL ;(one zero less than on the screen)
|
||||||
.by 0,<200,<500,<800,<1000
|
.by 0,<200,<800,<1200,<2000
|
||||||
CashOptionH
|
CashOptionH
|
||||||
.by 0,>200,>500,>800,>1000
|
.by 0,>200,>800,>1200,>2000
|
||||||
GravityTable .by 10,20,25,30,40
|
GravityTable .by 10,20,25,30,40
|
||||||
MaxWindTable .by 5,20,40,60,80
|
MaxWindTable .by 5,20,40,70,99
|
||||||
RoundsTable .by 10,20,30,40,50
|
RoundsTable .by 10,20,30,40,50
|
||||||
flyDelayTable .by 255,150,75,35,1
|
flyDelayTable .by 255,150,75,35,1
|
||||||
seppukuTable .by 255, 45,25,15,9
|
seppukuTable .by 255, 45,25,15,9
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
|
|
||||||
LevelNameBeginL ; begins of level names
|
LevelNameBeginL ; begins of level names
|
||||||
.by <NamesOfLevels,<(NamesOfLevels+10),<(NamesOfLevels+20)
|
.by <NamesOfLevels,<(NamesOfLevels+10),<(NamesOfLevels+20)
|
||||||
.by <(NamesOfLevels+32),<(NamesOfLevels+42),<(NamesOfLevels+52)
|
.by <(NamesOfLevels+32),<(NamesOfLevels+42),<(NamesOfLevels+52)
|
||||||
@@ -37,31 +36,25 @@ TanksWeaponsTableL
|
|||||||
.by <TanksWeapon1,<TanksWeapon2,<TanksWeapon3,<TanksWeapon4,<TanksWeapon5,<TanksWeapon6
|
.by <TanksWeapon1,<TanksWeapon2,<TanksWeapon3,<TanksWeapon4,<TanksWeapon5,<TanksWeapon6
|
||||||
TanksWeaponsTableH
|
TanksWeaponsTableH
|
||||||
.by >TanksWeapon1,>TanksWeapon2,>TanksWeapon3,>TanksWeapon4,>TanksWeapon5,>TanksWeapon6
|
.by >TanksWeapon1,>TanksWeapon2,>TanksWeapon3,>TanksWeapon4,>TanksWeapon5,>TanksWeapon6
|
||||||
;-----4x4 texts-----
|
|
||||||
|
|
||||||
|
;-----4x4 texts-----
|
||||||
LineTop
|
LineTop
|
||||||
dta d"(%%%%%%%%%%%%)"
|
dta d"(%%%%%%%%%%%%)", $ff
|
||||||
.byte $ff
|
|
||||||
;# - vertical, () * +, % - horizontal
|
;# - vertical, () * +, % - horizontal
|
||||||
LineBottom
|
LineBottom
|
||||||
dta d"*%%%%%%%%%%%%+"
|
dta d"*%%%%%%%%%%%%+", $ff
|
||||||
.byte $ff
|
|
||||||
LineEmpty
|
LineEmpty
|
||||||
dta d"# #"
|
dta d"# #", $ff
|
||||||
.byte $ff
|
|
||||||
LineHeader2
|
LineHeader2
|
||||||
dta d"# RESULTS #"
|
dta d"# RESULTS #", $ff
|
||||||
.byte $ff
|
|
||||||
LineGameOver
|
LineGameOver
|
||||||
dta d"# GAME OVER #"
|
dta d"# GAME OVER #", $ff
|
||||||
.byte $ff
|
|
||||||
seppukuText
|
seppukuText
|
||||||
dta d"# SEPPUKU! #"
|
dta d"# SEPPUKU! #", $ff
|
||||||
.byte $ff
|
areYouSureText
|
||||||
|
dta d"# SURE? Y/N #", $ff
|
||||||
lineClear
|
lineClear
|
||||||
dta d" "
|
dta d" ", $ff
|
||||||
.byte $ff
|
|
||||||
|
|
||||||
|
|
||||||
;-----------
|
;-----------
|
||||||
pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background)
|
pmtableL ; addressess of the P/M memory for 5 tanks (6th is without P/M background)
|
||||||
@@ -483,6 +476,7 @@ WhereToSlideTable
|
|||||||
.BY %000 ; 11111111
|
.BY %000 ; 11111111
|
||||||
|
|
||||||
EndOfTheBarrelX
|
EndOfTheBarrelX
|
||||||
|
; right angles from 0 (vertically up) to 90 (horizontally to the right)
|
||||||
.by 4,4,4,4,4,4,4,4,4,4,4
|
.by 4,4,4,4,4,4,4,4,4,4,4
|
||||||
.by 5,5,5,5,5,5,5,5,5,5
|
.by 5,5,5,5,5,5,5,5,5,5
|
||||||
.by 6,6,6,6,6,6,6,6,6
|
.by 6,6,6,6,6,6,6,6,6
|
||||||
@@ -492,15 +486,16 @@ EndOfTheBarrelX
|
|||||||
.by 7,7,7,7,7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7,7,7,7,7
|
||||||
.by 7,7,7,7,7,7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7,7,7,7,7,7
|
||||||
|
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0
|
.by 0,0,0,0 ; not used
|
||||||
|
|
||||||
|
; left angles from 90 (horizontally to the left) to 1 (vertically up)
|
||||||
.by 0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.by 0,0,0,0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0
|
||||||
@@ -511,6 +506,7 @@ EndOfTheBarrelX
|
|||||||
.by 3,3,3,3,3,3,3,3,3,3,3
|
.by 3,3,3,3,3,3,3,3,3,3,3
|
||||||
|
|
||||||
EndOfTheBarrelY
|
EndOfTheBarrelY
|
||||||
|
; right angles from 0 (vertically up) to 90 (horizontally to the right)
|
||||||
.by 7,7,7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7,7,7
|
||||||
.by 7,7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7,7
|
||||||
.by 7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7
|
||||||
@@ -518,18 +514,21 @@ EndOfTheBarrelY
|
|||||||
.by 6,6,6,6,6,6,6,6,6
|
.by 6,6,6,6,6,6,6,6,6
|
||||||
.by 5,5,5,5,5,5,5,5,5,5
|
.by 5,5,5,5,5,5,5,5,5,5
|
||||||
.by 4,4,4,4,4,4,4,4,4,4,4,4,4
|
.by 4,4,4,4,4,4,4,4,4,4,4,4,4
|
||||||
.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3
|
.by 4,4,4,4,4,4,4,4,4,4,4,4,4,4 ; one pixel Up for fix problems with colision check
|
||||||
|
; .by 3,3,3,3,3,3,3,3,3,3,3,3,3,3
|
||||||
|
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0,0,0,0,0,0,0
|
.by 0,0,0,0,0,0,0,0,0,0 ; not used
|
||||||
.by 0,0,0,0
|
.by 0,0,0,0 ; not used
|
||||||
|
|
||||||
.by 3,3,3,3,3,3,3,3,3,3,3,3,3,3
|
; left angles from 90 (horizontally to the left) to 1 (vertically up)
|
||||||
|
; .by 3,3,3,3,3,3,3,3,3,3,3,3,3,3
|
||||||
|
.by 4,4,4,4,4,4,4,4,4,4,4,4,4,4 ; one pixel Up for fix problems with colision check
|
||||||
.by 4,4,4,4,4,4,4,4,4,4,4,4,4
|
.by 4,4,4,4,4,4,4,4,4,4,4,4,4
|
||||||
.by 5,5,5,5,5,5,5,5,5,5
|
.by 5,5,5,5,5,5,5,5,5,5
|
||||||
.by 6,6,6,6,6,6,6,6,6
|
.by 6,6,6,6,6,6,6,6,6
|
||||||
@@ -537,8 +536,8 @@ EndOfTheBarrelY
|
|||||||
.by 7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7
|
||||||
.by 7,7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7,7
|
||||||
.by 7,7,7,7,7,7,7,7,7,7,7
|
.by 7,7,7,7,7,7,7,7,7,7,7
|
||||||
|
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
|
|
||||||
TanksNamesDefault
|
TanksNamesDefault
|
||||||
dta d"1st.Tank"
|
dta d"1st.Tank"
|
||||||
dta d"2nd.Tank"
|
dta d"2nd.Tank"
|
||||||
@@ -547,7 +546,6 @@ TanksNamesDefault
|
|||||||
dta d"5th.Tank"
|
dta d"5th.Tank"
|
||||||
dta d"6th.Tank"
|
dta d"6th.Tank"
|
||||||
|
|
||||||
|
|
||||||
WeaponPriceH ; weapons prices (tables with prices of weapons)
|
WeaponPriceH ; weapons prices (tables with prices of weapons)
|
||||||
.by >price_Baby_Missile___
|
.by >price_Baby_Missile___
|
||||||
.by >price_Missile________
|
.by >price_Missile________
|
||||||
@@ -597,13 +595,14 @@ WeaponPriceH ; weapons prices (tables with prices of weapons)
|
|||||||
.by >price______________45
|
.by >price______________45
|
||||||
.by >price______________46
|
.by >price______________46
|
||||||
.by >price______________47
|
.by >price______________47
|
||||||
.by >price_Heat_Guidance__
|
.by >price_White_Flag_____
|
||||||
|
.by >price_Battery________
|
||||||
.by >price_Bal_Guidance___
|
.by >price_Bal_Guidance___
|
||||||
.by >price_Horz_Guidance__
|
.by >price_Horz_Guidance__
|
||||||
.by >price_Vert_Guidance__
|
.by >price_Vert_Guidance__
|
||||||
.by >price_Lazy_Boy_______
|
.by >price_Lazy_Boy_______
|
||||||
.by >price_Parachute______
|
.by >price_Parachute______
|
||||||
.by >price_Battery________
|
.by >price_StrongParachute
|
||||||
.by >price_Mag_Deflector__
|
.by >price_Mag_Deflector__
|
||||||
.by >price_Shield_________
|
.by >price_Shield_________
|
||||||
.by >price_Force_Shield___
|
.by >price_Force_Shield___
|
||||||
@@ -611,8 +610,7 @@ WeaponPriceH ; weapons prices (tables with prices of weapons)
|
|||||||
.by >price_Super_Mag______
|
.by >price_Super_Mag______
|
||||||
.by >price_Auto_Defense___
|
.by >price_Auto_Defense___
|
||||||
.by >price_Fuel_Tank______
|
.by >price_Fuel_Tank______
|
||||||
.by >price_Contact_Trigger
|
.by >price_Nuclear_Winter_
|
||||||
.by >price_White_Flag_____
|
|
||||||
|
|
||||||
WeaponPriceL
|
WeaponPriceL
|
||||||
.by <price_Baby_Missile___
|
.by <price_Baby_Missile___
|
||||||
@@ -663,13 +661,14 @@ WeaponPriceL
|
|||||||
.by <price______________45
|
.by <price______________45
|
||||||
.by <price______________46
|
.by <price______________46
|
||||||
.by <price______________47
|
.by <price______________47
|
||||||
.by <price_Heat_Guidance__
|
.by <price_White_Flag_____
|
||||||
|
.by <price_Battery________
|
||||||
.by <price_Bal_Guidance___
|
.by <price_Bal_Guidance___
|
||||||
.by <price_Horz_Guidance__
|
.by <price_Horz_Guidance__
|
||||||
.by <price_Vert_Guidance__
|
.by <price_Vert_Guidance__
|
||||||
.by <price_Lazy_Boy_______
|
.by <price_Lazy_Boy_______
|
||||||
.by <price_Parachute______
|
.by <price_Parachute______
|
||||||
.by <price_Battery________
|
.by <price_StrongParachute
|
||||||
.by <price_Mag_Deflector__
|
.by <price_Mag_Deflector__
|
||||||
.by <price_Shield_________
|
.by <price_Shield_________
|
||||||
.by <price_Force_Shield___
|
.by <price_Force_Shield___
|
||||||
@@ -677,8 +676,7 @@ WeaponPriceL
|
|||||||
.by <price_Super_Mag______
|
.by <price_Super_Mag______
|
||||||
.by <price_Auto_Defense___
|
.by <price_Auto_Defense___
|
||||||
.by <price_Fuel_Tank______
|
.by <price_Fuel_Tank______
|
||||||
.by <price_Contact_Trigger
|
.by <price_Nuclear_Winter_
|
||||||
.by <price_White_Flag_____
|
|
||||||
|
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
; how many units (bulletd) of a given weapon we get for a given price
|
; how many units (bulletd) of a given weapon we get for a given price
|
||||||
@@ -735,13 +733,14 @@ WeaponUnits
|
|||||||
.by 0 ;_____________45
|
.by 0 ;_____________45
|
||||||
.by 0 ;_____________46
|
.by 0 ;_____________46
|
||||||
.by 0 ;_____________47
|
.by 0 ;_____________47
|
||||||
.by 6 ;Heat_Guidance__
|
.by 1 ;White_Flag___48
|
||||||
|
.by 3 ;Battery________
|
||||||
.by 2 ;Bal_Guidance___
|
.by 2 ;Bal_Guidance___
|
||||||
.by 5 ;Horz_Guidance__
|
.by 5 ;Horz_Guidance__
|
||||||
.by 5 ;Vert_Guidance__
|
.by 5 ;Vert_Guidance__
|
||||||
.by 2 ;Lazy_Boy_______
|
.by 2 ;Lazy_Boy_______
|
||||||
.by 8 ;Parachute______
|
.by 8 ;Parachute______
|
||||||
.by 10 ;Battery________
|
.by 2 ;StrongParachute
|
||||||
.by 2 ;Mag_Deflector__
|
.by 2 ;Mag_Deflector__
|
||||||
.by 3 ;Shield_________
|
.by 3 ;Shield_________
|
||||||
.by 3 ;Force_Shield___
|
.by 3 ;Force_Shield___
|
||||||
@@ -749,8 +748,7 @@ WeaponUnits
|
|||||||
.by 2 ;Super_Mag______
|
.by 2 ;Super_Mag______
|
||||||
.by 1 ;Auto_Defense___
|
.by 1 ;Auto_Defense___
|
||||||
.by 10 ;Fuel_Tank______
|
.by 10 ;Fuel_Tank______
|
||||||
.by 25 ;Contact_Trigger
|
.by 1 ;Nuclear_Winter_
|
||||||
.by 1 ;_____________63
|
|
||||||
|
|
||||||
PurchaseMeTable ;weapons good to be purchased by the robot
|
PurchaseMeTable ;weapons good to be purchased by the robot
|
||||||
;the comment is an index in the tables
|
;the comment is an index in the tables
|
||||||
@@ -813,8 +811,8 @@ WeaponSymbols
|
|||||||
.by $58,$59,$5a,$5b,$60,$7b,$7c,$7d
|
.by $58,$59,$5a,$5b,$60,$7b,$7c,$7d
|
||||||
.by $20,$00,$00,$00,$00,$00,$00,$00
|
.by $20,$00,$00,$00,$00,$00,$00,$00
|
||||||
.by $00,$00,$00,$00,$00,$00,$00,$00
|
.by $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
.by $02,$03,$06,$1d,$0a,$1b,$1c,$1e
|
.by $5f,$1c,$03,$06,$1d,$0a,$1b,$1b ; defensives
|
||||||
.by $3b,$3c,$3d,$3e,$3f,$5e,$5f,$00
|
.by $1e,$3b,$3c,$3d,$3e,$3f,$5e,$7d
|
||||||
|
|
||||||
; Names of weapons (16 chars long)
|
; Names of weapons (16 chars long)
|
||||||
NamesOfWeapons ;the comment is an index in the tables
|
NamesOfWeapons ;the comment is an index in the tables
|
||||||
@@ -865,26 +863,44 @@ NamesOfWeapons ;the comment is an index in the tables
|
|||||||
dta d"----------------" ; 44
|
dta d"----------------" ; 44
|
||||||
dta d"----------------" ; 45
|
dta d"----------------" ; 45
|
||||||
dta d"----------------" ; 46
|
dta d"----------------" ; 46
|
||||||
dta d"----------------" ; 47
|
dta d" " ; 47 ; special (no weapon) name to simplify display
|
||||||
|
|
||||||
dta d"Heat Guidance " ; 48 ($30)
|
dta d"White Flag " ; 48 ($30)
|
||||||
dta d"Bal Guidance " ; 49
|
dta d"Battery " ; 49
|
||||||
dta d"Horz Guidance " ; 50
|
dta d"Bal Guidance " ; 50
|
||||||
dta d"Vert Guidance " ; 51
|
dta d"Horz Guidance " ; 51
|
||||||
dta d"Lazy Boy " ; 52
|
dta d"Vert Guidance " ; 52
|
||||||
dta d"Parachute " ; 53
|
dta d"Lazy Boy " ; 53
|
||||||
dta d"Battery " ; 54
|
dta d"Parachute " ; 54 - no energy
|
||||||
dta d"Mag Deflector " ; 55
|
dta d"Strong Parachute" ; 55 - with energy (earlier Battery)
|
||||||
dta d"Shield " ; 56
|
dta d"Mag Deflector " ; 56 - with shield and energy
|
||||||
dta d"Force Shield " ; 57
|
dta d"Shield " ; 57 - shield for one shot - no energy
|
||||||
dta d"Heavy Shield " ; 58
|
dta d"Force Shield " ; 58 - shield with energy and parachute
|
||||||
dta d"Super Mag " ; 59
|
dta d"Heavy Shield " ; 59 - shield with energy
|
||||||
dta d"Auto Defense " ; 60
|
dta d"Super Mag " ; 60
|
||||||
dta d"Fuel Tank " ; 61
|
dta d"Auto Defense " ; 61 - with shield and energy
|
||||||
dta d"Contact Trigger " ; 62
|
dta d"Fuel Tank " ; 62
|
||||||
dta d"White Flag " ; 63
|
dta d"Nuclear Winter " ; 63
|
||||||
|
DefensiveEnergy = * - 48
|
||||||
|
.by 00 ; White Flag
|
||||||
|
.by 00 ; Heat Guidance
|
||||||
|
.by 00 ; Bal Guidance
|
||||||
|
.by 00 ; Horz Guidance
|
||||||
|
.by 00 ; Vert Guidance
|
||||||
|
.by 00 ; Lazy Boy
|
||||||
|
.by 00 ; Parachute
|
||||||
|
.by 99 ; Strong Parachute
|
||||||
|
.by 99 ; Mag Deflector
|
||||||
|
.by 00 ; Shield
|
||||||
|
.by 99 ; Force Shield
|
||||||
|
.by 99 ; Heavy Shield
|
||||||
|
.by 00 ; Super Mag
|
||||||
|
.by 99 ; Auto Defense
|
||||||
|
.by 00 ; Fuel Tank
|
||||||
|
.by 00 ; Nuclear Winter
|
||||||
weaponsOfDeath
|
weaponsOfDeath
|
||||||
dta 0,1,2,3,7,8,9,15,16,17,18,19,20,21,22,23,24,25,26,27
|
dta 1,2,3,7,17,18,19,20,21,22,23,24,25,26,27
|
||||||
|
weaponsOfDeathEnd
|
||||||
joyToKeyTable
|
joyToKeyTable
|
||||||
; .by 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15
|
; .by 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15
|
||||||
.by $ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$ff,$ff,$ff,$06,$ff,$0f,$0e,$ff
|
.by $ff,$ff,$ff,$ff,$ff,$ff,$ff,$07,$ff,$ff,$ff,$06,$ff,$0f,$0e,$ff
|
||||||
@@ -903,5 +919,10 @@ scrcodes
|
|||||||
dta d"qrstuvwx"
|
dta d"qrstuvwx"
|
||||||
dta d"yz123456"
|
dta d"yz123456"
|
||||||
dta d"7890." ; "-"
|
dta d"7890." ; "-"
|
||||||
|
;-----------------------------------
|
||||||
|
gameOverSpritesTop
|
||||||
|
; end of the Gover sprites by number of players
|
||||||
|
; 1 2 3 4 5 6
|
||||||
|
.by 130,130,136,142,148,154
|
||||||
|
|
||||||
.endif
|
.endif
|
||||||
|
|||||||
+90
-16
@@ -59,22 +59,87 @@ price______________44 = 0
|
|||||||
price______________45 = 0
|
price______________45 = 0
|
||||||
price______________46 = 0
|
price______________46 = 0
|
||||||
price______________47 = 0
|
price______________47 = 0
|
||||||
price_Heat_Guidance__ = $ffff ;_48_($30)
|
price_White_Flag_____ = $0 ;_48_($30)
|
||||||
price_Bal_Guidance___ = $ffff ;_49
|
price_Battery________ = 300 ;_49
|
||||||
price_Horz_Guidance__ = $ffff ;_50
|
price_Bal_Guidance___ = $ffff ;_50
|
||||||
price_Vert_Guidance__ = $ffff ;_51
|
price_Horz_Guidance__ = $ffff ;_51
|
||||||
price_Lazy_Boy_______ = $ffff ;_52
|
price_Vert_Guidance__ = $ffff ;_52
|
||||||
price_Parachute______ = 1100 ;_53
|
price_Lazy_Boy_______ = $ffff ;_53
|
||||||
price_Battery________ = $ffff ;_54
|
price_Parachute______ = 234 ;_54
|
||||||
price_Mag_Deflector__ = $ffff ;_55
|
price_StrongParachute = 1000 ;_55
|
||||||
price_Shield_________ = $ffff ;_56
|
price_Mag_Deflector__ = 245 ;_56
|
||||||
price_Force_Shield___ = $ffff ;_57
|
price_Shield_________ = 112 ;_57
|
||||||
price_Heavy_Shield___ = $ffff ;_58
|
price_Force_Shield___ = 268 ;_58
|
||||||
price_Super_Mag______ = $ffff ;_59
|
price_Heavy_Shield___ = 375 ;_59
|
||||||
price_Auto_Defense___ = $ffff ;_60
|
price_Super_Mag______ = $ffff ;_60
|
||||||
price_Fuel_Tank______ = $ffff ;_61
|
price_Auto_Defense___ = 512 ;_61
|
||||||
price_Contact_Trigger = $ffff ;_62
|
price_Fuel_Tank______ = $ffff ;_62
|
||||||
price_White_Flag_____ = $0 ;_63
|
price_Nuclear_Winter_ = 1000 ;_63
|
||||||
|
;Weapon indexes (numbers)
|
||||||
|
ind_Baby_Missile___ = 0
|
||||||
|
ind_Missile________ = 1
|
||||||
|
ind_Baby_Nuke______ = 2
|
||||||
|
ind_Nuke___________ = 3
|
||||||
|
ind_LeapFrog_______ = 4
|
||||||
|
ind_Funky_Bomb_____ = 5
|
||||||
|
ind_MIRV___________ = 6
|
||||||
|
ind_Death_s_Head___ = 7
|
||||||
|
ind_Napalm_________ = 8
|
||||||
|
ind_Hot_Napalm_____ = 9
|
||||||
|
ind_Tracer_________ = 10
|
||||||
|
ind_Smoke_Tracer___ = 11
|
||||||
|
ind_Baby_Roller____ = 12
|
||||||
|
ind_Roller_________ = 13
|
||||||
|
ind_Heavy_Roller___ = 14
|
||||||
|
ind_Riot_Charge____ = 15
|
||||||
|
ind_Riot_Blast_____ = 16
|
||||||
|
ind_Riot_Bomb______ = 17
|
||||||
|
ind_Heavy_Riot_Bomb = 18
|
||||||
|
ind_Baby_Digger____ = 19
|
||||||
|
ind_Digger_________ = 20
|
||||||
|
ind_Heavy_Digger___ = 21
|
||||||
|
ind_Baby_Sandhog___ = 22
|
||||||
|
ind_Sandhog________ = 23
|
||||||
|
ind_Heavy_Sandhog__ = 24
|
||||||
|
ind_Dirt_Clod______ = 25
|
||||||
|
ind_Dirt_Ball______ = 26
|
||||||
|
ind_Ton_of_Dirt____ = 27
|
||||||
|
ind_Liquid_Dirt____ = 28
|
||||||
|
ind_Dirt_Charge____ = 29
|
||||||
|
ind_Earth_Disrupter = 30
|
||||||
|
ind_Plasma_Blast___ = 31
|
||||||
|
ind_Laser__________ = 32
|
||||||
|
ind______________33 = 0
|
||||||
|
ind______________34 = 0
|
||||||
|
ind______________35 = 0
|
||||||
|
ind______________36 = 0
|
||||||
|
ind______________37 = 0
|
||||||
|
ind______________38 = 0
|
||||||
|
ind______________39 = 0
|
||||||
|
ind______________40 = 0
|
||||||
|
ind______________41 = 0
|
||||||
|
ind______________42 = 0
|
||||||
|
ind______________43 = 0
|
||||||
|
ind______________44 = 0
|
||||||
|
ind______________45 = 0
|
||||||
|
ind______________46 = 0
|
||||||
|
ind______________47 = 0
|
||||||
|
ind_White_Flag_____ = 48
|
||||||
|
ind_Battery________ = 49
|
||||||
|
ind_Bal_Guidance___ = 50
|
||||||
|
ind_Horz_Guidance__ = 51
|
||||||
|
ind_Vert_Guidance__ = 52
|
||||||
|
ind_Lazy_Boy_______ = 53
|
||||||
|
ind_Parachute______ = 54
|
||||||
|
ind_StrongParachute = 55
|
||||||
|
ind_Mag_Deflector__ = 56
|
||||||
|
ind_Shield_________ = 57
|
||||||
|
ind_Force_Shield___ = 58
|
||||||
|
ind_Heavy_Shield___ = 59
|
||||||
|
ind_Super_Mag______ = 60
|
||||||
|
ind_Auto_Defense___ = 61
|
||||||
|
ind_Fuel_Tank______ = 62
|
||||||
|
ind_Nuclear_Winter_ = 63
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
; names of RMT instruments (sfx)
|
; names of RMT instruments (sfx)
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
@@ -106,3 +171,12 @@ sfx_keyclick = $18 ;y
|
|||||||
sfx_shoot = $19 ;z
|
sfx_shoot = $19 ;z
|
||||||
sfx_seppuku = $1a ;1
|
sfx_seppuku = $1a ;1
|
||||||
sfx_liquid_dirt = $1b ;2
|
sfx_liquid_dirt = $1b ;2
|
||||||
|
sfx_battery = $1c ;3
|
||||||
|
sfx_white_flag = $1d ;4
|
||||||
|
;--------------------------------
|
||||||
|
; RMT songs (lines)
|
||||||
|
;--------------------------------
|
||||||
|
song_silencio = $00
|
||||||
|
song_end_round = $02
|
||||||
|
song_ingame = $06
|
||||||
|
song_game_over = $0b
|
||||||
|
|||||||
Executable → Regular
+13
-5
@@ -104,7 +104,7 @@ OptionsScreen
|
|||||||
OptionsHere
|
OptionsHere
|
||||||
; 0123456789012345678901234567890123456789
|
; 0123456789012345678901234567890123456789
|
||||||
dta d"Players : 2 3 4 5 6 "
|
dta d"Players : 2 3 4 5 6 "
|
||||||
dta d"Cash : none 2K 5K 8K 10K "
|
dta d"Cash : none 2K 8K 12K 20K "
|
||||||
dta d"Gravity : 0.2G 0.5G 1G 2G 4G "
|
dta d"Gravity : 0.2G 0.5G 1G 2G 4G "
|
||||||
dta d"Wind : 1B 3B 5B 7B 9B "
|
dta d"Wind : 1B 3B 5B 7B 9B "
|
||||||
dta d"Rounds : 10 20 30 40 50 "
|
dta d"Rounds : 10 20 30 40 50 "
|
||||||
@@ -136,7 +136,9 @@ WeaponsDescription
|
|||||||
dta d" - Defensive/Offensive weapon "
|
dta d" - Defensive/Offensive weapon "
|
||||||
dta d" "
|
dta d" "
|
||||||
dta d"Space"*
|
dta d"Space"*
|
||||||
dta d" - Purchase "
|
dta d" - "
|
||||||
|
purchaseActivate
|
||||||
|
dta d"Purchase "
|
||||||
dta d"Return"*
|
dta d"Return"*
|
||||||
dta d" - Finish "
|
dta d" - Finish "
|
||||||
EmptyLine
|
EmptyLine
|
||||||
@@ -167,10 +169,16 @@ textbuffer
|
|||||||
; 0123456789012345678901234567890123456789
|
; 0123456789012345678901234567890123456789
|
||||||
dta d"Player: "
|
dta d"Player: "
|
||||||
dta d"Energy: Angle: Force: "
|
dta d"Energy: Angle: Force: "
|
||||||
dta d" Round: Wind: "
|
dta d"Round: Wind: "
|
||||||
textbuffer2
|
textbuffer2
|
||||||
dta d"Player: Cash: "
|
dta d"Player: Cash: 0 " ; ZERO TO MAKE YOU RICHER ON THE SCREEN
|
||||||
dta d"----------------------------------------"
|
dta d"----------------------------------------"
|
||||||
|
;---------------------------------------------------
|
||||||
|
activateText
|
||||||
|
dta d"Activate"
|
||||||
|
activateTextEnd
|
||||||
|
purchaseText
|
||||||
|
dta d"Purchase"
|
||||||
|
purchaseTextEnd
|
||||||
|
|
||||||
.endif
|
.endif
|
||||||
|
|||||||
Executable → Regular
+382
-251
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
draw .proc ;;fuxxing good draw :)
|
.proc draw ;;fuxxing good draw :)
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
;creditz to Dr Jankowski / MIM U.W.
|
;creditz to Dr Jankowski / MIM U.W.
|
||||||
; (xi,yi)-----(xk,yk)
|
; (xi,yi)-----(xk,yk)
|
||||||
@@ -43,9 +43,9 @@ draw .proc ;;fuxxing good draw :)
|
|||||||
;cpw ybyte #screenheight
|
;cpw ybyte #screenheight
|
||||||
;bcc DrawOnTheScreen
|
;bcc DrawOnTheScreen
|
||||||
lda ydraw+1
|
lda ydraw+1
|
||||||
bne DrawOutOfTheScreen
|
bmi DrawOutOfTheScreen
|
||||||
lda ybyte+1
|
lda ybyte+1
|
||||||
beq DrawOnTheScreen
|
bpl DrawOnTheScreen
|
||||||
DrawOutOfTheScreen
|
DrawOutOfTheScreen
|
||||||
;jsr DrawJumpPad
|
;jsr DrawJumpPad
|
||||||
rts
|
rts
|
||||||
@@ -214,9 +214,61 @@ LineGoesLeft
|
|||||||
; line goes left - we are reversing X
|
; line goes left - we are reversing X
|
||||||
sbw xtempDRAW temp xdraw ; XI
|
sbw xtempDRAW temp xdraw ; XI
|
||||||
PutPixelinDraw
|
PutPixelinDraw
|
||||||
jsr DrawJumpPad
|
|
||||||
; end of the special PLOT for DRAW
|
|
||||||
|
|
||||||
|
; 0 - plot, %10000000 - LineLength (N), %01000000 - DrawCheck (V)
|
||||||
|
bit drawFunction
|
||||||
|
bpl @+
|
||||||
|
inw LineLength
|
||||||
|
bne ContinueDraw ; ==jmp
|
||||||
|
@
|
||||||
|
bvc @+
|
||||||
|
DrawCheck
|
||||||
|
lda tracerflag
|
||||||
|
ora SmokeTracerFlag
|
||||||
|
yestrace
|
||||||
|
beq notrace
|
||||||
|
jsr plot
|
||||||
|
notrace
|
||||||
|
;aftertrace
|
||||||
|
;key
|
||||||
|
lda HitFlag
|
||||||
|
bne StopHitChecking
|
||||||
|
|
||||||
|
CheckCollisionDraw
|
||||||
|
; checking collision!
|
||||||
|
lda ydraw+1
|
||||||
|
bmi StopHitChecking
|
||||||
|
|
||||||
|
jsr CheckCollisionWithTank
|
||||||
|
lda HitFlag
|
||||||
|
bne StopHitChecking
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda xdraw
|
||||||
|
adc #<mountaintable
|
||||||
|
sta temp
|
||||||
|
lda xdraw+1
|
||||||
|
adc #>mountaintable
|
||||||
|
sta temp+1
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
lda ydraw
|
||||||
|
cmp (temp),y
|
||||||
|
bcc StopHitChecking
|
||||||
|
|
||||||
|
mwa xdraw XHit
|
||||||
|
lda (temp),y
|
||||||
|
sec
|
||||||
|
sbc #1
|
||||||
|
sta YHit
|
||||||
|
sty YHit+1
|
||||||
|
mva #$ff HitFlag
|
||||||
|
StopHitChecking
|
||||||
|
jmp ContinueDraw
|
||||||
|
@
|
||||||
|
jsr plot
|
||||||
|
|
||||||
|
ContinueDraw
|
||||||
; XI=XI+1
|
; XI=XI+1
|
||||||
; UNTIL XI=XK
|
; UNTIL XI=XK
|
||||||
inw XI
|
inw XI
|
||||||
@@ -225,59 +277,12 @@ PutPixelinDraw
|
|||||||
|
|
||||||
EndOfDraw
|
EndOfDraw
|
||||||
mwa xtempDRAW xdraw
|
mwa xtempDRAW xdraw
|
||||||
mva ytempDRAW ydraw
|
mwa ytempDRAW ydraw
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;-------------JumpPad-------------
|
|
||||||
DrawJumpPad
|
|
||||||
jmp (DrawJumpAddr)
|
|
||||||
Drawplot
|
|
||||||
jmp plot
|
|
||||||
DrawLen
|
|
||||||
inw LineLength
|
|
||||||
rts
|
|
||||||
;-------------JumpPad-------------
|
|
||||||
|
|
||||||
DrawCheck .proc
|
|
||||||
lda tracerflag
|
|
||||||
ora SmokeTracerFlag
|
|
||||||
yestrace
|
|
||||||
beq notrace
|
|
||||||
jsr plot
|
|
||||||
notrace
|
|
||||||
;aftertrace
|
|
||||||
lda HitFlag
|
|
||||||
bne StopHitChecking
|
|
||||||
|
|
||||||
CheckCollisionDraw
|
|
||||||
; checking collision!
|
|
||||||
lda ydraw+1
|
|
||||||
bne StopHitChecking
|
|
||||||
|
|
||||||
jsr CheckCollisionWithTank
|
|
||||||
lda HitFlag
|
|
||||||
bne StopHitChecking
|
|
||||||
|
|
||||||
mwa xdraw temp
|
|
||||||
adw temp #mountaintable
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
lda ydraw
|
|
||||||
cmp (temp),y
|
|
||||||
bcc StopHitChecking
|
|
||||||
|
|
||||||
mva #1 HitFlag
|
|
||||||
mwa xdraw XHit
|
|
||||||
mwa ydraw YHit
|
|
||||||
|
|
||||||
|
|
||||||
StopHitChecking
|
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
circle .proc ;fxxxing good circle drawing :)
|
.proc circle ;fxxxing good circle drawing :)
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
;Turbo Basic source
|
;Turbo Basic source
|
||||||
; R=30
|
; R=30
|
||||||
@@ -298,7 +303,7 @@ circle .proc ;fxxxing good circle drawing :)
|
|||||||
; splot8
|
; splot8
|
||||||
|
|
||||||
mwa xdraw xcircle
|
mwa xdraw xcircle
|
||||||
mva ydraw ycircle
|
mwa ydraw ycircle
|
||||||
|
|
||||||
mwa #0 xc
|
mwa #0 xc
|
||||||
mva radius yc
|
mva radius yc
|
||||||
@@ -354,11 +359,11 @@ endcircleloop
|
|||||||
jsr splot8
|
jsr splot8
|
||||||
|
|
||||||
mwa xcircle xdraw
|
mwa xcircle xdraw
|
||||||
mva ycircle ydraw
|
mwa ycircle ydraw
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;----
|
;----
|
||||||
splot8 .proc
|
.proc splot8
|
||||||
; plot xcircle+XC,ycircle+YC
|
; plot xcircle+XC,ycircle+YC
|
||||||
; plot xcircle+XC,ycircle-YC
|
; plot xcircle+XC,ycircle-YC
|
||||||
; plot xcircle-XC,ycircle-YC
|
; plot xcircle-XC,ycircle-YC
|
||||||
@@ -381,12 +386,19 @@ splot8 .proc
|
|||||||
adc YC
|
adc YC
|
||||||
sta ydraw
|
sta ydraw
|
||||||
sta tempcir
|
sta tempcir
|
||||||
|
lda ycircle+1
|
||||||
|
adc #$00
|
||||||
|
sta ydraw+1
|
||||||
|
sta tempcir+1
|
||||||
jsr plot
|
jsr plot
|
||||||
|
|
||||||
sec
|
sec
|
||||||
lda ycircle
|
lda ycircle
|
||||||
sbc YC
|
sbc YC
|
||||||
sta ydraw
|
sta ydraw
|
||||||
|
lda ycircle+1
|
||||||
|
sbc #$00
|
||||||
|
sta ydraw+1
|
||||||
jsr plot
|
jsr plot
|
||||||
|
|
||||||
sec
|
sec
|
||||||
@@ -400,6 +412,8 @@ splot8 .proc
|
|||||||
|
|
||||||
lda tempcir
|
lda tempcir
|
||||||
sta ydraw
|
sta ydraw
|
||||||
|
lda tempcir+1
|
||||||
|
sta ydraw+1
|
||||||
jsr plot
|
jsr plot
|
||||||
;---
|
;---
|
||||||
clc
|
clc
|
||||||
@@ -414,12 +428,19 @@ splot8 .proc
|
|||||||
adc xC
|
adc xC
|
||||||
sta ydraw
|
sta ydraw
|
||||||
sta tempcir
|
sta tempcir
|
||||||
|
lda ycircle+1
|
||||||
|
adc #$00
|
||||||
|
sta ydraw+1
|
||||||
|
sta tempcir+1
|
||||||
jsr plot
|
jsr plot
|
||||||
|
|
||||||
sec
|
sec
|
||||||
lda ycircle
|
lda ycircle
|
||||||
sbc xC
|
sbc xC
|
||||||
sta ydraw
|
sta ydraw
|
||||||
|
lda ycircle+1
|
||||||
|
sbc #$00
|
||||||
|
sta ydraw+1
|
||||||
jsr plot
|
jsr plot
|
||||||
|
|
||||||
sec
|
sec
|
||||||
@@ -433,13 +454,15 @@ splot8 .proc
|
|||||||
|
|
||||||
lda tempcir
|
lda tempcir
|
||||||
sta ydraw
|
sta ydraw
|
||||||
|
lda tempcir+1
|
||||||
|
sta ydraw+1
|
||||||
jsr plot
|
jsr plot
|
||||||
|
|
||||||
RTS
|
RTS
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
clearscreen .proc
|
.proc clearscreen
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
@@ -453,7 +476,7 @@ clearscreen .proc
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;-------------------------------*------------------
|
;-------------------------------*------------------
|
||||||
placetanks .proc
|
.proc placetanks
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1
|
ldx #(MaxPlayers-1) ;maxNumberOfPlayers-1
|
||||||
lda #0
|
lda #0
|
||||||
@@ -560,30 +583,30 @@ UnequalTanks
|
|||||||
bpl CheckNextTank
|
bpl CheckNextTank
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;-------------------------------------------------
|
|
||||||
drawtanks
|
|
||||||
;-------------------------------------------------
|
|
||||||
|
|
||||||
|
;-------------------------------------------------
|
||||||
lda tanknr
|
.proc drawtanks
|
||||||
|
;-------------------------------------------------
|
||||||
|
lda TankNr
|
||||||
pha
|
pha
|
||||||
ldx #$00
|
ldx #$00
|
||||||
stx tanknr
|
stx TankNr
|
||||||
|
|
||||||
DrawNextTank
|
DrawNextTank
|
||||||
jsr drawtanknr
|
jsr drawtanknr
|
||||||
inc tanknr
|
inc TankNr
|
||||||
ldx tanknr
|
ldx TankNr
|
||||||
Cpx NumberOfPlayers
|
Cpx NumberOfPlayers
|
||||||
bne DrawNextTank
|
bne DrawNextTank
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta tankNr
|
sta TankNr
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
.endp
|
||||||
;---------
|
;---------
|
||||||
drawtanknr
|
.proc DrawTankNr
|
||||||
ldx tanknr
|
ldx tankNr
|
||||||
; let's check the energy
|
; let's check the energy
|
||||||
lda eXistenZ,x
|
lda eXistenZ,x
|
||||||
bne SkipRemovigPM ; if energy=0 then no tank
|
bne SkipRemovigPM ; if energy=0 then no tank
|
||||||
@@ -618,6 +641,7 @@ DrawTankNrX
|
|||||||
sta xdraw+1
|
sta xdraw+1
|
||||||
lda ytankstable,x
|
lda ytankstable,x
|
||||||
sta ydraw
|
sta ydraw
|
||||||
|
mva #0 ydraw+1
|
||||||
|
|
||||||
jsr TypeChar
|
jsr TypeChar
|
||||||
|
|
||||||
@@ -630,11 +654,11 @@ DrawTankNrX
|
|||||||
rorw xbyte ; divide by 2 (carry does not matter)
|
rorw xbyte ; divide by 2 (carry does not matter)
|
||||||
lda xbyte
|
lda xbyte
|
||||||
clc
|
clc
|
||||||
adc #$24 ; P/M to graphics offset
|
adc #PMOffset+1 ; P/M to graphics offset
|
||||||
cpx #$4 ; 5th tank are joined missiles and offset is defferent
|
cpx #$4 ; 5th tank are joined missiles and offset is defferent
|
||||||
bne NoMissile
|
bne NoMissile
|
||||||
clc
|
clc
|
||||||
adc #$0C
|
adc #$0C ; missile offset offset
|
||||||
NoMissile
|
NoMissile
|
||||||
sta hposp0,x
|
sta hposp0,x
|
||||||
; vertical position
|
; vertical position
|
||||||
@@ -666,15 +690,154 @@ ZeroesToGo
|
|||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
dey
|
dey
|
||||||
bne ClearPM
|
bne ClearPM
|
||||||
|
|
||||||
NoPlayerMissile
|
NoPlayerMissile
|
||||||
|
; draw defensive weapons like shield ( tank number in X )
|
||||||
|
; in xdraw, ydraw we have coordinates left LOWER corner of Tank char
|
||||||
|
lda ActiveDefenceWeapon,x
|
||||||
|
cmp #ind_Shield_________ ; one shot shield
|
||||||
|
beq ShieldDraw
|
||||||
|
cmp #ind_Force_Shield___ ; shield with energy and parachute
|
||||||
|
beq ShieldDraw
|
||||||
|
cmp #ind_Heavy_Shield___ ; shield with energy
|
||||||
|
beq ShieldDraw
|
||||||
|
cmp #ind_Auto_Defense___ ; Auto Defence
|
||||||
|
beq DrawTankShieldWihHorns
|
||||||
|
cmp #ind_Mag_Deflector__ ; Mag Deflector
|
||||||
|
beq DrawTankShieldWihHorns
|
||||||
|
cmp #ind_White_Flag_____ ; White Flag
|
||||||
|
beq DrawTankFlag
|
||||||
|
bne NoShieldDraw
|
||||||
|
ShieldDraw
|
||||||
|
jsr DrawTankShield.DrawInPosition
|
||||||
|
NoShieldDraw
|
||||||
DoNotDrawTankNr
|
DoNotDrawTankNr
|
||||||
rts
|
rts
|
||||||
|
DrawTankShieldWihHorns
|
||||||
|
jsr DrawTankShield.DrawInPosition
|
||||||
|
jsr DrawTankShieldHorns
|
||||||
|
rts
|
||||||
|
DrawTankFlag
|
||||||
|
lda #$5E ; flag symbol
|
||||||
|
sta CharCode
|
||||||
|
lda Ytankstable,x
|
||||||
|
sec
|
||||||
|
sbc #8
|
||||||
|
sta ydraw
|
||||||
|
lda XtanksTableL,x
|
||||||
|
sta xdraw
|
||||||
|
lda XtanksTableH,x
|
||||||
|
sta xdraw+1
|
||||||
|
jsr TypeChar
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
; -------------------------------------
|
||||||
|
.proc FlashTank
|
||||||
|
; -------------------------------------
|
||||||
|
; number of blinking tank in TankNr
|
||||||
|
mva #18 fs ; temp, how many times flash the tank
|
||||||
|
tankflash_loop
|
||||||
|
lda CONSOL ; turbo mode
|
||||||
|
cmp #6 ; START
|
||||||
|
sne:mva #1 fs ; finish it
|
||||||
|
mva #1 Erase
|
||||||
|
ldx TankNr
|
||||||
|
jsr DrawTankNr.SkipRemovigPM ; it's necessary becouse DrawTankNr skips tanks with no energy !
|
||||||
|
PAUSE 2
|
||||||
|
mva #0 Erase
|
||||||
|
ldx TankNr
|
||||||
|
jsr DrawTankNr.SkipRemovigPM
|
||||||
|
PAUSE 2
|
||||||
|
dec fs
|
||||||
|
jne tankflash_loop
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
drawmountains .proc
|
.proc DrawTankShield
|
||||||
|
; X - tank number
|
||||||
|
; if use DrawInPosition entry point then:
|
||||||
|
; xdraw, ydraw - coordinates left LOWER corner of Tank char
|
||||||
|
; values remain there after a DrawTankNr proc.
|
||||||
|
;
|
||||||
|
; this proc change xdraw, ydraw and temp!
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
|
lda xtankstableL,x
|
||||||
|
sta xdraw
|
||||||
|
lda xtankstableH,x
|
||||||
|
sta xdraw+1
|
||||||
|
lda ytankstable,x
|
||||||
|
sta ydraw
|
||||||
|
mva #0 ydraw+1
|
||||||
|
DrawInPosition
|
||||||
|
mva #1 color
|
||||||
|
lda erase
|
||||||
|
beq ShieldVisible
|
||||||
|
dec color
|
||||||
|
ShieldVisible
|
||||||
|
sbw xdraw #$03 ; 3 pixels to left
|
||||||
|
; draw left vertical line of shield ( | )
|
||||||
|
mva #6 temp ; strange !!!
|
||||||
|
@
|
||||||
|
jsr plot
|
||||||
|
.nowarn dew ydraw
|
||||||
|
dec temp
|
||||||
|
bne @-
|
||||||
|
; draw left oblique line of shield ( / )
|
||||||
|
mva #4 temp
|
||||||
|
@
|
||||||
|
jsr plot
|
||||||
|
.nowarn dew ydraw
|
||||||
|
inw xdraw
|
||||||
|
dec temp
|
||||||
|
bne @-
|
||||||
|
; draw top horizontal line of shield ( _ )
|
||||||
|
mva #5 temp
|
||||||
|
@
|
||||||
|
jsr plot
|
||||||
|
inw xdraw
|
||||||
|
dec temp
|
||||||
|
bne @-
|
||||||
|
; draw right oblique line of shield ( \ )
|
||||||
|
mva #4 temp
|
||||||
|
@
|
||||||
|
jsr plot
|
||||||
|
inw ydraw
|
||||||
|
inw xdraw
|
||||||
|
dec temp
|
||||||
|
bne @-
|
||||||
|
; draw right vertical line of shield ( | )
|
||||||
|
mva #7 temp
|
||||||
|
@
|
||||||
|
jsr plot
|
||||||
|
inw ydraw
|
||||||
|
dec temp
|
||||||
|
bne @-
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DrawTankShieldHorns
|
||||||
|
; use only directly after DrawTankShield
|
||||||
|
; this proc draws a little "horns" on shield.
|
||||||
|
; Symbol of defensive but aggressive :) weapon
|
||||||
|
;--------------------------------------------------
|
||||||
|
.nowarn dew xdraw ; 1 pixel left
|
||||||
|
sbw ydraw #$0a ; 10 pixels up
|
||||||
|
jsr plot
|
||||||
|
.nowarn dew ydraw
|
||||||
|
inw xdraw
|
||||||
|
jsr plot
|
||||||
|
sbw xdraw #$0d ; 13 pixels left
|
||||||
|
jsr plot
|
||||||
|
inw xdraw
|
||||||
|
inw ydraw
|
||||||
|
jsr plot
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc drawmountains
|
||||||
|
;--------------------------------------------------
|
||||||
mwa #0 xdraw
|
mwa #0 xdraw
|
||||||
mwa #mountaintable modify
|
mwa #mountaintable modify
|
||||||
mva #1 color
|
mva #1 color
|
||||||
@@ -685,13 +848,13 @@ drawmountainsloop
|
|||||||
cmp #screenheight
|
cmp #screenheight
|
||||||
beq NoMountain
|
beq NoMountain
|
||||||
sta ydraw
|
sta ydraw
|
||||||
|
sty ydraw+1
|
||||||
jsr DrawLine
|
jsr DrawLine
|
||||||
NoMountain
|
NoMountain
|
||||||
inw modify
|
inw modify
|
||||||
inw xdraw
|
inw xdraw
|
||||||
cpw xdraw #screenwidth
|
cpw xdraw #screenwidth
|
||||||
bne drawmountainsloop
|
bne drawmountainsloop
|
||||||
|
|
||||||
rts
|
rts
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
drawmountainspixel
|
drawmountainspixel
|
||||||
@@ -704,6 +867,7 @@ drawmountainspixelloop
|
|||||||
ldy #0
|
ldy #0
|
||||||
lda (modify),y
|
lda (modify),y
|
||||||
sta ydraw
|
sta ydraw
|
||||||
|
sty ydraw+1
|
||||||
jsr plot
|
jsr plot
|
||||||
inw modify
|
inw modify
|
||||||
inw xdraw
|
inw xdraw
|
||||||
@@ -713,7 +877,7 @@ drawmountainspixelloop
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
SoilDown2 .proc
|
.proc SoilDown2
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
|
|
||||||
; how it is supposed to work:
|
; how it is supposed to work:
|
||||||
@@ -750,7 +914,7 @@ SoilDown2 .proc
|
|||||||
adw RangeLeft #mountaintable2 tempor2
|
adw RangeLeft #mountaintable2 tempor2
|
||||||
|
|
||||||
NextColumn1
|
NextColumn1
|
||||||
mva #0 ydraw
|
mwa #0 ydraw
|
||||||
NextPoint1
|
NextPoint1
|
||||||
jsr point
|
jsr point
|
||||||
beq StillNothing
|
beq StillNothing
|
||||||
@@ -841,8 +1005,9 @@ ColumnIsReady
|
|||||||
mva #sfx_silencer sfx_effect
|
mva #sfx_silencer sfx_effect
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
calculatemountains .proc
|
.proc calculatemountains
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
mwa #0 xdraw
|
mwa #0 xdraw
|
||||||
|
|
||||||
@@ -944,7 +1109,7 @@ EndDrawing
|
|||||||
.endp
|
.endp
|
||||||
; ****************************************************
|
; ****************************************************
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
calculatemountains0 .proc
|
.proc calculatemountains0
|
||||||
; Only for testing - makes ground flat (0 pixels)
|
; Only for testing - makes ground flat (0 pixels)
|
||||||
; and places tanks on it
|
; and places tanks on it
|
||||||
; remember to remove in final compilation :)
|
; remember to remove in final compilation :)
|
||||||
@@ -968,8 +1133,9 @@ SetYofNextTank
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
; ****************************************************
|
; ****************************************************
|
||||||
|
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
unPlot .proc
|
.proc unPlot
|
||||||
; plots a point and saves the plotted byte, reverts the previous plot.
|
; plots a point and saves the plotted byte, reverts the previous plot.
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
ldx #0 ; only one pixel
|
ldx #0 ; only one pixel
|
||||||
@@ -1072,8 +1238,9 @@ SkipThisPlot
|
|||||||
EndOfUnPlot
|
EndOfUnPlot
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
plot .proc ;plot (xdraw, ydraw, color)
|
.proc plot ;plot (xdraw, ydraw, color)
|
||||||
; color == 1 --> put pixel
|
; color == 1 --> put pixel
|
||||||
; color == 0 --> erase pixel
|
; color == 0 --> erase pixel
|
||||||
; this is one of the most important routines in the whole
|
; this is one of the most important routines in the whole
|
||||||
@@ -1106,11 +1273,7 @@ MakePlot
|
|||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
tay ;save
|
tay ;save
|
||||||
;---
|
;---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ldx ydraw
|
ldx ydraw
|
||||||
lda linetableL,x
|
lda linetableL,x
|
||||||
sta xbyte
|
sta xbyte
|
||||||
@@ -1132,17 +1295,16 @@ ClearPlot
|
|||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
point .proc
|
.proc point
|
||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
; checks state of the pixel (coordinates in xdraw and ydraw)
|
; checks state of the pixel (coordinates in xdraw and ydraw)
|
||||||
; result is in A (zero or appropriate bit is set)
|
; result is in A (zero or appropriate bit is set)
|
||||||
|
|
||||||
|
|
||||||
; let's calculate coordinates from xdraw and ydraw
|
; let's calculate coordinates from xdraw and ydraw
|
||||||
mwa xdraw xbyte
|
mwa xdraw xbyte
|
||||||
|
|
||||||
|
|
||||||
lda xbyte
|
lda xbyte
|
||||||
and #$7
|
and #$7
|
||||||
sta ybit
|
sta ybit
|
||||||
@@ -1154,9 +1316,7 @@ point .proc
|
|||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
tay ;save
|
tay ;save
|
||||||
|
;---
|
||||||
;---
|
|
||||||
|
|
||||||
ldx ydraw
|
ldx ydraw
|
||||||
lda linetableL,x
|
lda linetableL,x
|
||||||
sta xbyte
|
sta xbyte
|
||||||
@@ -1172,7 +1332,7 @@ point .proc
|
|||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
DrawLine .proc
|
.proc DrawLine
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
mva #0 ydraw+1
|
mva #0 ydraw+1
|
||||||
lda #screenheight
|
lda #screenheight
|
||||||
@@ -1184,21 +1344,19 @@ DrawLine .proc
|
|||||||
jmp IntoDraw ; jumps inside Draw routine
|
jmp IntoDraw ; jumps inside Draw routine
|
||||||
; because one pixel is already plotted
|
; because one pixel is already plotted
|
||||||
|
|
||||||
|
@
|
||||||
loopdraw
|
|
||||||
|
|
||||||
lda (xbyte),y
|
lda (xbyte),y
|
||||||
and bittable2,x
|
and bittable2,x
|
||||||
sta (xbyte),y
|
sta (xbyte),y
|
||||||
IntoDraw adw xbyte #screenBytes
|
IntoDraw
|
||||||
|
adw xbyte #screenBytes
|
||||||
dec tempbyte01
|
dec tempbyte01
|
||||||
bne loopdraw
|
bne @-
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;
|
|
||||||
; ------------------------------------------
|
; ------------------------------------------
|
||||||
TypeChar .proc
|
.proc TypeChar
|
||||||
; puts char on the graphics screen
|
; puts char on the graphics screen
|
||||||
; in: CharCode
|
; in: CharCode
|
||||||
; in: left LOWER corner of the char coordinates (xdraw, ydraw)
|
; in: left LOWER corner of the char coordinates (xdraw, ydraw)
|
||||||
@@ -1247,7 +1405,6 @@ CopyMask
|
|||||||
lsrw xbyte ; div 8
|
lsrw xbyte ; div 8
|
||||||
rorw xbyte
|
rorw xbyte
|
||||||
rorw xbyte
|
rorw xbyte
|
||||||
|
|
||||||
;---
|
;---
|
||||||
ldy xbyte
|
ldy xbyte
|
||||||
|
|
||||||
@@ -1264,46 +1421,15 @@ CopyMask
|
|||||||
ldx ybit
|
ldx ybit
|
||||||
beq MaskOK00
|
beq MaskOK00
|
||||||
MakeMask00
|
MakeMask00
|
||||||
lsr mask1
|
.rept 8
|
||||||
ror mask2
|
lsr mask1+#
|
||||||
lsr mask1+1
|
ror mask2+#
|
||||||
ror mask2+1
|
.endr
|
||||||
lsr mask1+2
|
|
||||||
ror mask2+2
|
|
||||||
lsr mask1+3
|
|
||||||
ror mask2+3
|
|
||||||
lsr mask1+4
|
|
||||||
ror mask2+4
|
|
||||||
lsr mask1+5
|
|
||||||
ror mask2+5
|
|
||||||
lsr mask1+6
|
|
||||||
ror mask2+6
|
|
||||||
lsr mask1+7
|
|
||||||
ror mask2+7
|
|
||||||
sec
|
sec
|
||||||
ror char1
|
.rept 8
|
||||||
ror char2
|
ror char1+# ; in second (and next) lines we have C=1 - one SEC enough
|
||||||
sec
|
ror char2+#
|
||||||
ror char1+1
|
.endr
|
||||||
ror char2+1
|
|
||||||
sec
|
|
||||||
ror char1+2
|
|
||||||
ror char2+2
|
|
||||||
sec
|
|
||||||
ror char1+3
|
|
||||||
ror char2+3
|
|
||||||
sec
|
|
||||||
ror char1+4
|
|
||||||
ror char2+4
|
|
||||||
sec
|
|
||||||
ror char1+5
|
|
||||||
ror char2+5
|
|
||||||
sec
|
|
||||||
ror char1+6
|
|
||||||
ror char2+6
|
|
||||||
sec
|
|
||||||
ror char1+7
|
|
||||||
ror char2+7
|
|
||||||
dex
|
dex
|
||||||
bne MakeMask00
|
bne MakeMask00
|
||||||
MaskOK00
|
MaskOK00
|
||||||
@@ -1333,132 +1459,137 @@ CharLoopi
|
|||||||
inx
|
inx
|
||||||
cpx #8
|
cpx #8
|
||||||
bne CharLoopi
|
bne CharLoopi
|
||||||
|
EndPutChar
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
; ------------------------------------------
|
; ------------------------------------------
|
||||||
PutChar4x4 .proc ;puts 4x4 pixels char on the graphics screen
|
.proc PutChar4x4
|
||||||
; in: xdraw, ydraw (upper left corner of the char)
|
; puts 4x4 pixels char on the graphics screen
|
||||||
|
; in: dx, dy (LOWER left corner of the char)
|
||||||
; in: CharCode4x4 (.sbyte)
|
; in: CharCode4x4 (.sbyte)
|
||||||
|
; in: plot4x4color (0/1)
|
||||||
|
; all pixels are being drawn
|
||||||
|
; (empty and not empty)
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
|
; cpw ydraw #(screenheight-4)
|
||||||
|
; jcs TypeChar.EndPutChar ;nearest RTS
|
||||||
|
; cpw xdraw #(screenwidth-4)
|
||||||
|
; jcs TypeChar.EndPutChar ;nearest RTS
|
||||||
|
; checks ommited.
|
||||||
lda plot4x4color
|
lda plot4x4color
|
||||||
sta color
|
beq FontColor0
|
||||||
|
lda #$ff ; better option to check (plot4x4color = $00 or $ff)
|
||||||
|
sta plot4x4color
|
||||||
; calculating address of the first byte
|
FontColor0
|
||||||
mva #4 LoopCounter4x4
|
; char to the table
|
||||||
lda CharCode4x4
|
lda CharCode4x4
|
||||||
and #1
|
and #1
|
||||||
|
beq Upper4bits
|
||||||
|
lda #$ff ; better option to check (nibbler4x4 = $00 or $ff)
|
||||||
|
Upper4bits
|
||||||
sta nibbler4x4
|
sta nibbler4x4
|
||||||
lda CharCode4x4
|
lda CharCode4x4
|
||||||
ror
|
lsr
|
||||||
; in carry there is which nibble of the byte is to be taken
|
sta fontind
|
||||||
clc
|
lda #$00
|
||||||
adc #(3*32)
|
sta fontind+1
|
||||||
sta y4x4
|
|
||||||
nextline4x4
|
|
||||||
mva #4 Xcounter4x4
|
|
||||||
ldy y4x4
|
|
||||||
lda font4x4,y ;there was a problem with OMC here, but it works now
|
|
||||||
|
|
||||||
ldx nibbler4x4
|
adw fontind #font4x4
|
||||||
beq uppernibble
|
|
||||||
|
|
||||||
asl
|
; and 4 bytes to the table
|
||||||
asl
|
ldy #0
|
||||||
asl
|
ldx #3
|
||||||
asl
|
CopyChar
|
||||||
uppernibble
|
lda (fontind),y ; Y must be 0 !!!!
|
||||||
rol
|
bit nibbler4x4
|
||||||
sta StoreA4x4
|
bpl GetUpper4bits
|
||||||
bcs EmptyPixel ; the font I drawn is in inverse ...
|
:4 rol
|
||||||
;lda plot4x4color ;these lines are not necessary
|
GetUpper4bits
|
||||||
;sta color ;if a plots are one color only
|
ora #$0f
|
||||||
jsr plot
|
sta char1,x
|
||||||
;jmp Loop4x4Continued
|
lda #$ff
|
||||||
EmptyPixel
|
sta char2,x
|
||||||
;lda #1 ;reverse color (color==1-color)
|
; and 4 bytes as a mask
|
||||||
;sec
|
lda #$f0
|
||||||
;sbc plot4x4color
|
sta mask1,x
|
||||||
;sta color
|
lda #$00
|
||||||
;jsr plot
|
sta mask2,x
|
||||||
;this is turned off for speed
|
adw fontind #32 ; next byte of 4x4 font
|
||||||
;anyway we assume the text is being drawn
|
dex
|
||||||
;over an empty space
|
bpl CopyChar
|
||||||
Loop4x4Continued
|
|
||||||
inw xdraw
|
|
||||||
lda StoreA4x4
|
|
||||||
dec Xcounter4x4
|
|
||||||
ldx Xcounter4x4
|
|
||||||
bne uppernibble
|
|
||||||
; here we have on screen one line of the char
|
|
||||||
inw ydraw
|
|
||||||
sbw xdraw #4
|
|
||||||
sbw y4x4 #32
|
|
||||||
dec:lda LoopCounter4x4
|
|
||||||
bne nextline4x4
|
|
||||||
|
|
||||||
|
; calculating coordinates from xdraw and ydraw
|
||||||
|
mwa dx xbyte
|
||||||
|
|
||||||
|
lda xbyte
|
||||||
|
and #$7
|
||||||
|
sta ybit
|
||||||
|
|
||||||
|
lsrw xbyte ; div 8
|
||||||
|
rorw xbyte
|
||||||
|
rorw xbyte
|
||||||
|
;---
|
||||||
|
ldy xbyte
|
||||||
|
lda dy ; y = y - 3 because left lower.
|
||||||
|
sec
|
||||||
|
sbc #3
|
||||||
|
tax
|
||||||
|
|
||||||
|
lda linetableL,x
|
||||||
|
sta xbyte
|
||||||
|
lda linetableH,x
|
||||||
|
sta xbyte+1
|
||||||
|
; mask preparation and character shifting
|
||||||
|
ldx ybit
|
||||||
|
beq MaskOK01
|
||||||
|
MakeMask01
|
||||||
|
.rept 4
|
||||||
|
lsr mask1+#
|
||||||
|
ror mask2+#
|
||||||
|
.endr
|
||||||
|
sec
|
||||||
|
.rept 4
|
||||||
|
ror char1+# ; in second (and next) lines we have C=1 - one SEC enough
|
||||||
|
ror char2+#
|
||||||
|
.endr
|
||||||
|
dex
|
||||||
|
bne MakeMask01
|
||||||
|
MaskOK01
|
||||||
|
ldx #0
|
||||||
|
CharLoopi4x4
|
||||||
|
lda (xbyte),y
|
||||||
|
ora mask1,x
|
||||||
|
bit plot4x4color
|
||||||
|
bpl PutInColor0_1 ; only mask - no char
|
||||||
|
and char1,x
|
||||||
|
PutInColor0_1
|
||||||
|
sta (xbyte),y
|
||||||
|
iny
|
||||||
|
lda (xbyte),y
|
||||||
|
ora mask2,x
|
||||||
|
bit plot4x4color
|
||||||
|
bpl PutInColor0_2 ; only mask - no char
|
||||||
|
and char2,x
|
||||||
|
PutInColor0_2
|
||||||
|
sta (xbyte),y
|
||||||
|
dey
|
||||||
|
adw xbyte #screenBytes
|
||||||
|
inx
|
||||||
|
cpx #4
|
||||||
|
bne CharLoopi4x4
|
||||||
|
EndPut4x4
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
; ------------------------------------------
|
|
||||||
PutChar4x4FULL .proc;
|
|
||||||
;this routine works just like PutChar4x4,
|
|
||||||
;but this time all pixels are being drawn
|
|
||||||
;(empty and not empty)
|
|
||||||
;--------------------------------------------------
|
|
||||||
|
|
||||||
; calculating address of the first byte
|
|
||||||
mva #4 LoopCounter4x4
|
|
||||||
lda CharCode4x4
|
|
||||||
and #1
|
|
||||||
sta nibbler4x4
|
|
||||||
lda CharCode4x4
|
|
||||||
ror
|
|
||||||
; in carry there is which nibble of the byte is to be taken clc
|
|
||||||
clc
|
|
||||||
adc #(3*32)
|
|
||||||
sta y4x4
|
|
||||||
nextline4x4FULL
|
|
||||||
mva #4 Xcounter4x4
|
|
||||||
ldy y4x4
|
|
||||||
lda font4x4,y
|
|
||||||
|
|
||||||
ldx nibbler4x4
|
|
||||||
beq uppernibbleFULL
|
|
||||||
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
uppernibbleFULL
|
|
||||||
rol
|
|
||||||
sta StoreA4x4
|
|
||||||
bcs EmptyPixelFULL
|
|
||||||
lda plot4x4color ;these lines are not necessary
|
|
||||||
sta color ;if a plots are one color only
|
|
||||||
jsr plot
|
|
||||||
jmp Loop4x4ContinuedFULL
|
|
||||||
EmptyPixelFULL
|
|
||||||
lda #1 ;reverse color (color==1-color)
|
|
||||||
sec
|
|
||||||
sbc plot4x4color
|
|
||||||
sta color
|
|
||||||
jsr plot
|
|
||||||
;this is turned on now
|
|
||||||
;of course it is slower
|
|
||||||
|
|
||||||
Loop4x4ContinuedFULL
|
|
||||||
inw xdraw
|
|
||||||
lda StoreA4x4
|
|
||||||
dec Xcounter4x4
|
|
||||||
ldx Xcounter4x4
|
|
||||||
bne uppernibbleFULL
|
|
||||||
; here we have on screen one line of the char
|
|
||||||
inw ydraw
|
|
||||||
sbw xdraw #4
|
|
||||||
sbw y4x4 #32 ; why? possibly because of width of the 4x4 font
|
|
||||||
dec:lda LoopCounter4x4
|
|
||||||
bne nextline4x4FULL
|
|
||||||
|
|
||||||
|
.proc SetMainScreen
|
||||||
|
mva #0 dmactl
|
||||||
|
VDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
|
||||||
|
mwa #dl dlptrs ; issue #72 (glitches when switches)
|
||||||
|
lda dmactls
|
||||||
|
and #$fc
|
||||||
|
ora #$02 ; 2=normal, 3 = wide screen width
|
||||||
|
sta dmactls
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ NMIST = $D40F ; rejestr statusu przerwa� NMI
|
|||||||
;-------------------------------------
|
;-------------------------------------
|
||||||
;additional system variables
|
;additional system variables
|
||||||
;-------------------------------------
|
;-------------------------------------
|
||||||
|
ATRACT = $004D
|
||||||
COLPM0S = $02C0 ;- - shadow register COLPM0
|
COLPM0S = $02C0 ;- - shadow register COLPM0
|
||||||
COLPM1S = $02C1 ;- - shadow register COLPM1
|
COLPM1S = $02C1 ;- - shadow register COLPM1
|
||||||
COLPM2S = $02C2 ;- - shadow register COLPM2
|
COLPM2S = $02C2 ;- - shadow register COLPM2
|
||||||
|
|||||||
+284
-167
@@ -36,7 +36,7 @@
|
|||||||
;we decided it must go in 'English' to let other people work on it
|
;we decided it must go in 'English' to let other people work on it
|
||||||
|
|
||||||
.macro build
|
.macro build
|
||||||
dta d"141" ; number of this build (3 bytes)
|
dta d"145" ; number of this build (3 bytes)
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
icl 'definitions.asm'
|
icl 'definitions.asm'
|
||||||
@@ -55,26 +55,33 @@
|
|||||||
.zpvar xc .word
|
.zpvar xc .word
|
||||||
.zpvar temp .word ;temporary word for the most embeded loops only
|
.zpvar temp .word ;temporary word for the most embeded loops only
|
||||||
.zpvar temp2 .word ;same as above
|
.zpvar temp2 .word ;same as above
|
||||||
|
.zpvar modify .word ;origially used to replace self-modyfying code
|
||||||
.zpvar tempXROLLER .word ;same as above for XROLLER routine (used also in result display routine)
|
.zpvar tempXROLLER .word ;same as above for XROLLER routine (used also in result display routine)
|
||||||
.zpvar xtempDRAW .word ;same as above for XDRAW routine
|
.zpvar xtempDRAW .word ;same as above for XDRAW routine
|
||||||
.zpvar ytempDRAW .word ;same as above for XDRAW routine
|
.zpvar ytempDRAW .word ;same as above for XDRAW routine
|
||||||
|
.zpvar tempor2 .byte
|
||||||
;--------------temps used in circle routine
|
;--------------temps used in circle routine
|
||||||
.zpvar xi .word ;X (word) in draw routine
|
.zpvar xi .word ;X (word) in draw routine
|
||||||
.zpvar fx .byte ;circle drawing variables
|
.zpvar fx .byte
|
||||||
.zpvar yi .word ;Y (word) in draw routine
|
.zpvar yi .word ;Y (word) in draw routine
|
||||||
.zpvar fy .byte
|
.zpvar fy .byte
|
||||||
.zpvar xk .word
|
.zpvar xk .word
|
||||||
.zpvar fs .byte
|
.zpvar fs .byte
|
||||||
.zpvar yc .byte ;ycircle - temporary for circle
|
.zpvar yc .byte ;ycircle - temporary for circle
|
||||||
.zpvar dx .word
|
.zpvar dx .word
|
||||||
.zpvar tempor2 .byte
|
|
||||||
.zpvar dy .word
|
.zpvar dy .word
|
||||||
.zpvar dd .word
|
.zpvar dd .word
|
||||||
.zpvar di .word
|
.zpvar di .word
|
||||||
.zpvar dp .word
|
.zpvar dp .word
|
||||||
.zpvar modify .word
|
;----------------------------
|
||||||
.zpvar weaponPointer .word
|
.zpvar weaponPointer .word
|
||||||
.zpvar dliCounter .byte
|
.zpvar dliCounter .byte
|
||||||
|
.zpvar pressTimer .byte
|
||||||
|
.zpvar NTSCcounter .byte
|
||||||
|
;.zpvar dliA .byte
|
||||||
|
;.zpvar dliX .byte
|
||||||
|
;.zpvar dliY .byte
|
||||||
|
|
||||||
;* RMT ZeroPage addresses
|
;* RMT ZeroPage addresses
|
||||||
.zpvar p_tis .word
|
.zpvar p_tis .word
|
||||||
.zpvar p_trackslbstable .word
|
.zpvar p_trackslbstable .word
|
||||||
@@ -98,11 +105,12 @@
|
|||||||
icl 'lib/atari.hea'
|
icl 'lib/atari.hea'
|
||||||
icl 'lib/macro.hea'
|
icl 'lib/macro.hea'
|
||||||
|
|
||||||
|
;splash screen and musix
|
||||||
icl 'artwork/HIMARS14.asm'
|
icl 'artwork/HIMARS14.asm'
|
||||||
;Game loading address
|
;Game loading address
|
||||||
ORG $3000
|
ORG $3000
|
||||||
WeaponFont
|
WeaponFont
|
||||||
ins 'artwork/weapons_AW5.fnt' ; 'artwork/weapons.fnt'
|
ins 'artwork/weapons_AW5_mod.fnt' ; 'artwork/weapons.fnt'
|
||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
;Screen displays go here to avoid crossing 4kb barrier
|
;Screen displays go here to avoid crossing 4kb barrier
|
||||||
;-----------------------------------------------
|
;-----------------------------------------------
|
||||||
@@ -117,33 +125,31 @@ START
|
|||||||
; Startup sequence
|
; Startup sequence
|
||||||
jsr Initialize
|
jsr Initialize
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
jsr Options ;startup screen
|
jsr Options ;startup screen
|
||||||
lda escFlag
|
lda escFlag
|
||||||
bne START
|
bne START
|
||||||
|
|
||||||
jsr EnterPlayerNames
|
jsr EnterPlayerNames
|
||||||
|
lda escFlag
|
||||||
|
bne START
|
||||||
|
|
||||||
jsr RandomizeSequence
|
jsr RandomizeSequence
|
||||||
; for the round #1 shooting sequence is random
|
; for the round #1 shooting sequence is random
|
||||||
|
|
||||||
MainGameLoop
|
MainGameLoop
|
||||||
VDLI DLIinterruptText ; jsr SetDLI for text (purchase) screen
|
|
||||||
|
|
||||||
jsr CallPurchaseForEveryTank
|
jsr CallPurchaseForEveryTank
|
||||||
|
|
||||||
; issue #72 (glitches when switches)
|
; issue #72 (glitches when switches)
|
||||||
mva #0 dmactl
|
mva #0 dmactl
|
||||||
lda dmactls
|
|
||||||
and #$fc
|
|
||||||
;ora #$02 ; 2=normal, 3 = wide screen width, 0 = no screen
|
|
||||||
sta dmactls
|
|
||||||
|
|
||||||
jsr GetRandomWind
|
jsr GetRandomWind
|
||||||
|
|
||||||
jsr RoundInit
|
jsr RoundInit
|
||||||
|
|
||||||
jsr MainRoundLoop
|
jsr MainRoundLoop
|
||||||
|
lda escFlag
|
||||||
|
bne START
|
||||||
|
|
||||||
mva #0 TankNr ;
|
mva #0 TankNr ;
|
||||||
|
|
||||||
jsr SortSequence
|
jsr SortSequence
|
||||||
@@ -161,7 +167,8 @@ MainGameLoop
|
|||||||
; Results are number of other deaths
|
; Results are number of other deaths
|
||||||
; before the player dies itself
|
; before the player dies itself
|
||||||
|
|
||||||
|
lda #song_end_round
|
||||||
|
jsr RmtSongSelect
|
||||||
jsr DisplayResults
|
jsr DisplayResults
|
||||||
|
|
||||||
;check demo mode
|
;check demo mode
|
||||||
@@ -234,6 +241,7 @@ skipzeroing
|
|||||||
|
|
||||||
inc CurrentRoundNr
|
inc CurrentRoundNr
|
||||||
mva #0 dmactl ; issue #72
|
mva #0 dmactl ; issue #72
|
||||||
|
jsr RmtSongSelect
|
||||||
mva #sfx_silencer sfx_effect
|
mva #sfx_silencer sfx_effect
|
||||||
jmp MainGameLoop
|
jmp MainGameLoop
|
||||||
|
|
||||||
@@ -248,16 +256,17 @@ skipzeroing
|
|||||||
; the shooting angle is randomized
|
; the shooting angle is randomized
|
||||||
; of course gains an looses are zeroed
|
; of course gains an looses are zeroed
|
||||||
|
|
||||||
;jsr StatusDisplay
|
lda #song_ingame
|
||||||
|
jsr RmtSongSelect
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
tax
|
tax
|
||||||
@
|
@ sta singleRoundVars,x
|
||||||
sta previousAngle,x
|
|
||||||
inx
|
inx
|
||||||
cpx #(singleRoundVarsEnd-PreviousAngle)
|
cpx #(singleRoundVarsEnd-singleRoundVars)
|
||||||
bne @-
|
bne @-
|
||||||
|
|
||||||
ldx #5
|
ldx #(MaxPlayers-1)
|
||||||
SettingEnergies
|
SettingEnergies
|
||||||
lda #$00
|
lda #$00
|
||||||
sta gainL,x
|
sta gainL,x
|
||||||
@@ -271,13 +280,13 @@ SettingEnergies
|
|||||||
; anything in eXistenZ table means that this tank exist
|
; anything in eXistenZ table means that this tank exist
|
||||||
; in the given round
|
; in the given round
|
||||||
lda #<1000
|
lda #<1000
|
||||||
sta MaxEnergyTableL,x
|
sta MaxForceTableL,x
|
||||||
lda #>1000
|
lda #>1000
|
||||||
sta MaxEnergyTableH,x
|
sta MaxForceTableH,x
|
||||||
lda #<350
|
lda #<350
|
||||||
sta EnergyTableL,x
|
sta ForceTableL,x
|
||||||
lda #>350
|
lda #>350
|
||||||
sta EnergyTableH,x
|
sta ForceTableH,x
|
||||||
|
|
||||||
;lda #(255-45)
|
;lda #(255-45)
|
||||||
;it does not look good when all tanks have
|
;it does not look good when all tanks have
|
||||||
@@ -287,12 +296,9 @@ SettingEnergies
|
|||||||
jsr RandomizeAngle
|
jsr RandomizeAngle
|
||||||
sta AngleTable,x
|
sta AngleTable,x
|
||||||
|
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bpl SettingEnergies
|
bpl SettingEnergies
|
||||||
|
|
||||||
mva #0 CurrentResult
|
|
||||||
|
|
||||||
;generating the new landscape
|
;generating the new landscape
|
||||||
jsr PMoutofScreen ;let P/M disappear
|
jsr PMoutofScreen ;let P/M disappear
|
||||||
jsr clearscreen ;let the screen be clean
|
jsr clearscreen ;let the screen be clean
|
||||||
@@ -300,19 +306,14 @@ SettingEnergies
|
|||||||
jsr calculatemountains ;let mountains be easy for the eye
|
jsr calculatemountains ;let mountains be easy for the eye
|
||||||
;jsr calculatemountains0 ;only for tests - makes mountains flat and 0 height
|
;jsr calculatemountains0 ;only for tests - makes mountains flat and 0 height
|
||||||
|
|
||||||
VDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
|
jsr SetMainScreen
|
||||||
mwa #dl dlptrs ; issue #72 (glitches when switches)
|
jsr ColorsOfSprites
|
||||||
lda dmactls
|
|
||||||
and #$fc
|
|
||||||
ora #$02 ; 2=normal, 3 = wide screen width
|
|
||||||
sta dmactls
|
|
||||||
|
|
||||||
|
|
||||||
jsr drawmountains ;draw them
|
jsr drawmountains ;draw them
|
||||||
jsr drawtanks ;finally draw tanks
|
jsr drawtanks ;finally draw tanks
|
||||||
|
|
||||||
mva #0 TankSequencePointer
|
mva #0 TankSequencePointer
|
||||||
;--------------------round screen is ready---------
|
;---------round screen is ready---------
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
@@ -322,6 +323,7 @@ SettingEnergies
|
|||||||
; tank with energy greater than 0 left
|
; tank with energy greater than 0 left
|
||||||
|
|
||||||
ldy #0 ; in Y - number of tanks with energy greater than zero
|
ldy #0 ; in Y - number of tanks with energy greater than zero
|
||||||
|
sty ATRACT ; reset atract mode
|
||||||
ldx NumberOfPlayers
|
ldx NumberOfPlayers
|
||||||
dex
|
dex
|
||||||
CheckingIfRoundIsFinished
|
CheckingIfRoundIsFinished
|
||||||
@@ -343,8 +345,7 @@ WhichTankWonLoop
|
|||||||
bne ThisOneWon
|
bne ThisOneWon
|
||||||
dex
|
dex
|
||||||
bpl WhichTankWonLoop
|
bpl WhichTankWonLoop
|
||||||
;error here!!!
|
;error was here!!!
|
||||||
;stop
|
|
||||||
; somehow I believed program will be never here
|
; somehow I believed program will be never here
|
||||||
; but it was a bad assumption
|
; but it was a bad assumption
|
||||||
; god knows when there is such a situation
|
; god knows when there is such a situation
|
||||||
@@ -354,7 +355,6 @@ WhichTankWonLoop
|
|||||||
; second tank explodes and kills the first one.
|
; second tank explodes and kills the first one.
|
||||||
; and code lands here...
|
; and code lands here...
|
||||||
; looks like no one won!
|
; looks like no one won!
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
ThisOneWon
|
ThisOneWon
|
||||||
@@ -376,7 +376,6 @@ DoNotFinishTheRound
|
|||||||
jsr DisplaySeppuku
|
jsr DisplaySeppuku
|
||||||
jmp Seppuku
|
jmp Seppuku
|
||||||
|
|
||||||
;ldx TankNr
|
|
||||||
@
|
@
|
||||||
ldx TankSequencePointer
|
ldx TankSequencePointer
|
||||||
lda TankSequence,x
|
lda TankSequence,x
|
||||||
@@ -398,8 +397,16 @@ RoboTanks
|
|||||||
; robotanks shoot here
|
; robotanks shoot here
|
||||||
jsr ArtificialIntelligence
|
jsr ArtificialIntelligence
|
||||||
jsr MoveBarrelToNewPosition
|
jsr MoveBarrelToNewPosition
|
||||||
jsr StatusDisplay ;all digital values like force, angle, wind, etc.
|
jsr DisplayStatus ;all digital values like force, angle, wind, etc.
|
||||||
jsr PutTankNameOnScreen
|
jsr PutTankNameOnScreen
|
||||||
|
lda kbcode
|
||||||
|
cmp #28 ; ESC
|
||||||
|
bne @+
|
||||||
|
jsr AreYouSure
|
||||||
|
lda escFlag
|
||||||
|
seq:rts
|
||||||
|
@
|
||||||
|
|
||||||
; let's move the tank's barrel so it points the right
|
; let's move the tank's barrel so it points the right
|
||||||
; direction
|
; direction
|
||||||
jmp AfterManualShooting
|
jmp AfterManualShooting
|
||||||
@@ -408,18 +415,40 @@ ManualShooting
|
|||||||
|
|
||||||
jsr WaitForKeyRelease
|
jsr WaitForKeyRelease
|
||||||
jsr BeforeFire
|
jsr BeforeFire
|
||||||
|
lda escFlag
|
||||||
|
seq:rts
|
||||||
|
|
||||||
AfterManualShooting
|
AfterManualShooting
|
||||||
|
; defensive weapons without flight handling
|
||||||
|
ldx TankNr
|
||||||
|
lda ActiveDefenceWeapon,x
|
||||||
|
cmp #ind_White_Flag_____ ; White Flag
|
||||||
|
beq ShootWhiteFlag
|
||||||
|
cmp #ind_Nuclear_Winter_
|
||||||
|
bne StandardShoot
|
||||||
|
ShootAtomicWinter
|
||||||
|
; --- nuclear winter ---
|
||||||
|
jsr NuclearWinter
|
||||||
|
jmp NextPlayerShoots ; and we skip shoot
|
||||||
|
ShootWhiteFlag
|
||||||
|
; --- white flag ---
|
||||||
|
jsr WhiteFlag
|
||||||
|
jmp NextPlayerShoots ; and we skip shoot
|
||||||
|
StandardShoot
|
||||||
inc noDeathCounter
|
inc noDeathCounter
|
||||||
|
|
||||||
jsr DecreaseWeaponBeforeShoot
|
jsr DecreaseWeaponBeforeShoot
|
||||||
jsr StatusDisplay
|
jsr DisplayStatus
|
||||||
|
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
dec Energy,x ; lower energy to eventually let tanks commit suicide
|
dec Energy,x ; lower energy to eventually let tanks commit suicide
|
||||||
|
|
||||||
ShootNow
|
ShootNow
|
||||||
jsr Shoot
|
jsr Shoot
|
||||||
|
;here we clear offensive text (after a shoot)
|
||||||
|
ldy TankNr
|
||||||
|
mva #0 plot4x4color
|
||||||
|
jsr DisplayOffensiveTextNr
|
||||||
|
|
||||||
lda HitFlag ;0 if missed
|
lda HitFlag ;0 if missed
|
||||||
beq missed
|
beq missed
|
||||||
@@ -431,12 +460,13 @@ ShootNow
|
|||||||
|
|
||||||
continueMainRoundLoopAfterSeppuku
|
continueMainRoundLoopAfterSeppuku
|
||||||
;here we clear offensive text (after a shoot)
|
;here we clear offensive text (after a shoot)
|
||||||
ldy TankNr
|
;ldy TankNr
|
||||||
mva #0 plot4x4color
|
;mva #0 plot4x4color
|
||||||
jsr DisplayOffensiveTextNr
|
;jsr DisplayOffensiveTextNr
|
||||||
|
|
||||||
|
|
||||||
AfterExplode
|
AfterExplode
|
||||||
|
; TODO: IS IT OK??? possibly a fix here needed for #56
|
||||||
ldy WeaponDepleted
|
ldy WeaponDepleted
|
||||||
bne @+
|
bne @+
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
@@ -445,14 +475,12 @@ AfterExplode
|
|||||||
@
|
@
|
||||||
|
|
||||||
;temporary tanks removal (would fall down with soil)
|
;temporary tanks removal (would fall down with soil)
|
||||||
mva TankNr tempor2
|
|
||||||
mva #1 Erase
|
mva #1 Erase
|
||||||
jsr drawtanks
|
jsr drawtanks
|
||||||
mva tempor2 TankNr
|
|
||||||
mva #0 Erase
|
mva #0 Erase
|
||||||
lda FallDown2
|
lda FallDown2
|
||||||
beq NoFallDown2
|
beq NoFallDown2
|
||||||
jsr SoilDown2;
|
jsr SoilDown2
|
||||||
|
|
||||||
NoFallDown2
|
NoFallDown2
|
||||||
;here tanks are falling down
|
;here tanks are falling down
|
||||||
@@ -474,13 +502,10 @@ missed
|
|||||||
jsr DisplayOffensiveTextNr
|
jsr DisplayOffensiveTextNr
|
||||||
|
|
||||||
NextPlayerShoots
|
NextPlayerShoots
|
||||||
mva #1 Erase
|
;before it shoots, the eXistenZ table must be updated
|
||||||
jsr drawtanks
|
;accordingly to actual energy (was forgotten, sorry to ourselves)
|
||||||
|
|
||||||
;before it shoots, the eXistenZ table must be
|
ldx #(MaxPlayers-1)
|
||||||
;updated accordingly to actual energy (was forgotten, sorry to ourselves)
|
|
||||||
|
|
||||||
ldx #5
|
|
||||||
SeteXistenZ
|
SeteXistenZ
|
||||||
lda Energy,x
|
lda Energy,x
|
||||||
sta eXistenZ,x
|
sta eXistenZ,x
|
||||||
@@ -489,7 +514,7 @@ SeteXistenZ
|
|||||||
;DATA L1,L2
|
;DATA L1,L2
|
||||||
;Multiplication 8bit*8bit,
|
;Multiplication 8bit*8bit,
|
||||||
;result 16bit
|
;result 16bit
|
||||||
;this algiorithm is a little longer than in Ruszczyc 6502 book
|
;this algiorithm is a little longer than one in Ruszczyc 6502 book
|
||||||
;but it is faster
|
;but it is faster
|
||||||
|
|
||||||
LDy #8
|
LDy #8
|
||||||
@@ -500,29 +525,20 @@ LP0
|
|||||||
ROR L1
|
ROR L1
|
||||||
BCC B0
|
BCC B0
|
||||||
CLC
|
CLC
|
||||||
ADC #10 ; multiplication by 10 (L2)
|
ADC #10 ; (L2) multiplication by 10
|
||||||
B0 DEY
|
B0 DEY
|
||||||
BNE LP0
|
BNE LP0
|
||||||
ror
|
ror
|
||||||
ROR L1
|
ROR L1
|
||||||
STA MaxEnergyTableH,x
|
STA MaxForceTableH,x
|
||||||
lda L1
|
lda L1
|
||||||
sta MaxEnergyTableL,x
|
sta MaxForceTableL,x
|
||||||
|
|
||||||
dex
|
dex
|
||||||
bpl SeteXistenZ
|
bpl SeteXistenZ
|
||||||
|
|
||||||
;was setup of maximum energy for players
|
;was setup of maximum energy for players
|
||||||
|
|
||||||
mva #0 Erase
|
|
||||||
jsr drawtanks
|
|
||||||
|
|
||||||
;inc TankNr
|
|
||||||
;lda TankNr
|
|
||||||
inc:lda TankSequencePointer
|
|
||||||
cmp NumberOfPlayers
|
|
||||||
bne PlayersAgain
|
|
||||||
mva #0 TankSequencePointer
|
|
||||||
|
|
||||||
PlayersAgain
|
PlayersAgain
|
||||||
|
|
||||||
@@ -554,20 +570,16 @@ NoPlayerNoDeath
|
|||||||
dex
|
dex
|
||||||
bpl CheckingPlayersDeath
|
bpl CheckingPlayersDeath
|
||||||
; if processor is here it means there are no more explosions
|
; if processor is here it means there are no more explosions
|
||||||
|
|
||||||
|
inc:lda TankSequencePointer
|
||||||
|
cmp NumberOfPlayers
|
||||||
|
sne:mva #0 TankSequencePointer
|
||||||
|
|
||||||
jmp MainRoundLoop
|
jmp MainRoundLoop
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;---------------------------------
|
;---------------------------------
|
||||||
.proc Seppuku
|
.proc PlayerXdeath
|
||||||
lda #0
|
|
||||||
sta FallDown1
|
|
||||||
sta FallDown2
|
|
||||||
lda #1 ; Missile
|
|
||||||
jsr ExplosionDirect
|
|
||||||
jmp MainRoundLoop.continueMainRoundLoopAfterSeppuku
|
|
||||||
.endp
|
|
||||||
;---------------------------------
|
|
||||||
PlayerXdeath
|
|
||||||
|
|
||||||
; this tank should not explode anymore:
|
; this tank should not explode anymore:
|
||||||
; there is 0 in A, and Tank Number in X, so...
|
; there is 0 in A, and Tank Number in X, so...
|
||||||
@@ -591,7 +603,6 @@ PlayerXdeath
|
|||||||
sta ResultsTable,x
|
sta ResultsTable,x
|
||||||
inc CurrentResult
|
inc CurrentResult
|
||||||
|
|
||||||
|
|
||||||
mva #sfx_death_begin sfx_effect
|
mva #sfx_death_begin sfx_effect
|
||||||
;RandomizeDeffensiveText
|
;RandomizeDeffensiveText
|
||||||
randomize talk.NumberOfOffensiveTexts (talk.NumberOfDeffensiveTexts+talk.NumberOfOffensiveTexts-1)
|
randomize talk.NumberOfOffensiveTexts (talk.NumberOfDeffensiveTexts+talk.NumberOfOffensiveTexts-1)
|
||||||
@@ -599,16 +610,19 @@ PlayerXdeath
|
|||||||
ldy TankTempY
|
ldy TankTempY
|
||||||
mva #1 plot4x4color
|
mva #1 plot4x4color
|
||||||
jsr DisplayOffensiveTextNr
|
jsr DisplayOffensiveTextNr
|
||||||
|
; tank flash
|
||||||
|
ldy TankTempY
|
||||||
|
mva TankNr temp2 ; not elegant, and probably unnecessary
|
||||||
|
sty TankNr
|
||||||
|
jsr FlashTank ; blinking and pausing (like PAUSE 72 - 18x(2+2) )
|
||||||
|
mva temp2 TankNr
|
||||||
|
|
||||||
PAUSE 75
|
|
||||||
;Deffensive text cleanup
|
;Deffensive text cleanup
|
||||||
;here we clear Deffensive text (after a shoot)
|
;here we clear Deffensive text (after a shoot)
|
||||||
ldy TankTempY
|
ldy TankTempY
|
||||||
mva #0 plot4x4color
|
mva #0 plot4x4color
|
||||||
jsr DisplayOffensiveTextNr
|
jsr DisplayOffensiveTextNr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; calculate position of the explosion (the post-death one)
|
; calculate position of the explosion (the post-death one)
|
||||||
ldx TankTempY
|
ldx TankTempY
|
||||||
clc
|
clc
|
||||||
@@ -623,7 +637,7 @@ PlayerXdeath
|
|||||||
sbc #4
|
sbc #4
|
||||||
sta ydraw
|
sta ydraw
|
||||||
lda #0
|
lda #0
|
||||||
sta ydraw+1 ; there is 0 left in A, so... TODO: bad code above. revisit when transitioning ydraw to byte
|
sta ydraw+1 ; there is 0 left in A, so... TODO: bad code above. revisit
|
||||||
|
|
||||||
;cleanup of the soil fall down ranges (left and right)
|
;cleanup of the soil fall down ranges (left and right)
|
||||||
sta RangeRight
|
sta RangeRight
|
||||||
@@ -632,34 +646,29 @@ PlayerXdeath
|
|||||||
sta FallDown2
|
sta FallDown2
|
||||||
mwa #screenwidth RangeLeft
|
mwa #screenwidth RangeLeft
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; We are randomizing the weapon now.
|
; We are randomizing the weapon now.
|
||||||
; jumping into the middle of the explosion
|
; jumping into the middle of the explosion
|
||||||
; routine
|
; routine
|
||||||
|
|
||||||
MetodOfDeath
|
MetodOfDeath
|
||||||
lda random
|
lda random
|
||||||
and #%00011111 ; range 0-31
|
and #%00011111 ; range 0-31
|
||||||
cmp #20 ; we have 20 weapons in table (from 0 to 19)
|
cmp #(weaponsOfDeathEnd-weaponsOfDeath) ; we have 20 weapons in table (from 0 to 19)
|
||||||
bcs MetodOfDeath
|
bcs MetodOfDeath
|
||||||
tay
|
tay
|
||||||
lda weaponsOfDeath,y
|
lda weaponsOfDeath,y
|
||||||
jsr ExplosionDirect
|
jsr ExplosionDirect
|
||||||
mva #sfx_silencer sfx_effect
|
mva #sfx_silencer sfx_effect
|
||||||
|
|
||||||
|
|
||||||
; jump to after explosion routines (soil fallout, etc.)
|
; jump to after explosion routines (soil fallout, etc.)
|
||||||
; After going through these routines we are back
|
; After going through these routines we are back
|
||||||
; to checking if a tank exploded and maybe we have
|
; to checking if a tank exploded and maybe we have
|
||||||
; a deadly shot here again.
|
; a deadly shot here again.
|
||||||
|
|
||||||
|
|
||||||
jmp MainRoundLoop.AfterExplode
|
jmp MainRoundLoop.AfterExplode
|
||||||
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc DecreaseEnergyX
|
.proc DecreaseEnergyX
|
||||||
;Decreases energy of player nr X
|
;Decreases energy of player nr X by the value Y
|
||||||
;increases his financial loss
|
;increases his financial loss
|
||||||
;increases gain of tank TankNr
|
;increases gain of tank TankNr
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
@@ -698,64 +707,136 @@ NotNegativeEnergy
|
|||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
GetRandomWind .proc
|
.proc DecreaseShieldEnergyX
|
||||||
|
; Decreases energy of shield player nr X by the value Y
|
||||||
|
; if shield energy is 0 after decrease then in Y we have
|
||||||
|
; rest of the energy - to decrease tank energy
|
||||||
|
;--------------------------------------------------
|
||||||
|
sty EnergyDecrease
|
||||||
|
ldy #0 ; if Shield survive then no decrease tank anergy
|
||||||
|
; Energy cannot be less than 0
|
||||||
|
lda ShieldEnergy,x
|
||||||
|
cmp EnergyDecrease
|
||||||
|
bcc UseAllShieldEnergy
|
||||||
|
;sec
|
||||||
|
sbc EnergyDecrease
|
||||||
|
bpl NotNegativeShieldEnergy ; jump allways
|
||||||
|
UseAllShieldEnergy
|
||||||
|
; now calculate rest of energy for future tank energy decrease
|
||||||
|
sec
|
||||||
|
lda EnergyDecrease
|
||||||
|
sbc ShieldEnergy,x
|
||||||
|
tay
|
||||||
|
lda #0
|
||||||
|
NotNegativeShieldEnergy
|
||||||
|
sta ShieldEnergy,x
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;---------------------------------
|
||||||
|
.proc Seppuku
|
||||||
|
lda #0
|
||||||
|
sta FallDown1
|
||||||
|
sta FallDown2
|
||||||
|
sta ydraw+1
|
||||||
|
; get position of the tank
|
||||||
|
ldx TankNr
|
||||||
|
lda xtankstableL,x
|
||||||
|
sta xdraw
|
||||||
|
lda xtankstableH,x
|
||||||
|
sta xdraw+1
|
||||||
|
lda yTanksTable,x
|
||||||
|
sta ydraw
|
||||||
|
lda #1 ; Missile
|
||||||
|
jsr ExplosionDirect
|
||||||
|
jmp MainRoundLoop.continueMainRoundLoopAfterSeppuku
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc GetRandomWind
|
||||||
|
;in: MaxWind (byte)
|
||||||
|
;out: Wind (word)
|
||||||
|
;uses: _
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
lda random
|
lda random
|
||||||
cmp MaxWind
|
cmp MaxWind
|
||||||
bcs GetRandomWind ; if more than MaxWind then randomize again
|
bcs GetRandomWind ; if more than MaxWind then randomize again
|
||||||
sta Wind
|
sta Wind
|
||||||
mva #$00 Wind+1
|
mva #$00 Wind+1
|
||||||
; multiply Wind by 16 and take it as a decimal part (0.Wind)
|
sta Wind+2
|
||||||
|
sta Wind+3
|
||||||
|
; multiply Wind by 16
|
||||||
|
; two bytes of Wind are treated as a decimal part of vx variable
|
||||||
:4 aslw Wind
|
:4 aslw Wind
|
||||||
|
; decide the direction
|
||||||
lda random
|
lda random
|
||||||
and #$01
|
and #$01
|
||||||
sta WindOrientation
|
beq @+
|
||||||
rts
|
sec ; Wind = -Wind
|
||||||
|
.rept 4
|
||||||
|
lda #$00
|
||||||
|
sbc Wind+#
|
||||||
|
sta Wind+#
|
||||||
|
.endr
|
||||||
|
@ rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
PMoutofScreen .proc
|
.proc PMoutofScreen
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
lda #$00 ; let all P/M disappear
|
lda #$00 ; let all P/M disappear
|
||||||
:8 sta hposp0+#
|
:8 sta hposp0+#
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc ColorsOfSprites
|
||||||
|
lda TankColoursTable ; colours of sprites under tanks
|
||||||
|
sta COLPM0S
|
||||||
|
lda TankColoursTable+1
|
||||||
|
sta COLPM1S
|
||||||
|
lda TankColoursTable+2
|
||||||
|
sta COLPM2S
|
||||||
|
lda TankColoursTable+3
|
||||||
|
sta COLPM3S
|
||||||
|
LDA TankColoursTable+4
|
||||||
|
STA COLPF3S ; joined missiles (5th tank)
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc WeaponCleanup;
|
.proc WeaponCleanup;
|
||||||
; cleaning of the weapon possesion tables
|
; cleaning of the weapon possesion tables
|
||||||
; (99 of Baby Missles, all other weapons=0)
|
; 99 of Baby Missles(index==0), all other weapons=0)
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
ldx #$3f
|
ldx #$3f ; TODO: maxweapons
|
||||||
lda #$0
|
@ lda #$0
|
||||||
loop05
|
cpx #48 ; White Flag
|
||||||
sta TanksWeapon1,x
|
bne @+
|
||||||
|
lda #99
|
||||||
|
@ sta TanksWeapon1,x
|
||||||
sta TanksWeapon2,x
|
sta TanksWeapon2,x
|
||||||
sta TanksWeapon3,x
|
sta TanksWeapon3,x
|
||||||
sta TanksWeapon4,x
|
sta TanksWeapon4,x
|
||||||
sta TanksWeapon5,x
|
sta TanksWeapon5,x
|
||||||
sta TanksWeapon6,x
|
sta TanksWeapon6,x
|
||||||
dex
|
dex
|
||||||
bne @+
|
beq setBmissile
|
||||||
lda #99
|
bpl @-1
|
||||||
bne loop05
|
|
||||||
@ bpl loop05
|
|
||||||
rts
|
rts
|
||||||
|
setBmissile
|
||||||
|
lda #99
|
||||||
|
bne @-
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc Initialize
|
.proc Initialize
|
||||||
;Initialization sequence
|
;Initialization sequence
|
||||||
|
;uses: temp, ...
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
deletePtr = temp
|
deletePtr = temp
|
||||||
|
|
||||||
lda #0
|
|
||||||
sta Erase
|
|
||||||
sta tracerflag
|
|
||||||
sta GameIsOver
|
|
||||||
sta escFlag
|
|
||||||
|
|
||||||
; clean variables
|
; clean variables
|
||||||
|
lda #0
|
||||||
tay
|
tay
|
||||||
mwa #variablesStart deletePtr
|
mwa #variablesStart deletePtr
|
||||||
@ tya
|
@ tya
|
||||||
@@ -807,21 +888,9 @@ SetunPlots
|
|||||||
lda #$10 ; P/M priorities (bit 4 joins missiles)
|
lda #$10 ; P/M priorities (bit 4 joins missiles)
|
||||||
sta gtictls
|
sta gtictls
|
||||||
jsr PMoutofScreen
|
jsr PMoutofScreen
|
||||||
lda TankColoursTable ; temporary colours of sprites under tanks
|
|
||||||
sta $2c0
|
|
||||||
lda TankColoursTable+1
|
|
||||||
sta $2c1
|
|
||||||
lda TankColoursTable+2
|
|
||||||
sta $2c2
|
|
||||||
lda TankColoursTable+3
|
|
||||||
sta $2c3
|
|
||||||
LDA TankColoursTable+4
|
|
||||||
STA COLPF3S ; joined missiles (5th tank)
|
|
||||||
mva #0 hscrol
|
|
||||||
|
|
||||||
|
|
||||||
;let the tanks be visible!
|
;let the tanks be visible!
|
||||||
ldx #5
|
ldx #(maxPlayers-1)
|
||||||
lda #1 ; tank is visible
|
lda #1 ; tank is visible
|
||||||
MakeTanksVisible
|
MakeTanksVisible
|
||||||
sta eXistenZ,x
|
sta eXistenZ,x
|
||||||
@@ -838,6 +907,7 @@ ClearResults
|
|||||||
bne ClearResults
|
bne ClearResults
|
||||||
|
|
||||||
mva #1 CurrentRoundNr ;we start from round 1
|
mva #1 CurrentRoundNr ;we start from round 1
|
||||||
|
mva #6 NTSCcounter
|
||||||
|
|
||||||
; RMT INIT
|
; RMT INIT
|
||||||
lda #$f0 ;initial value
|
lda #$f0 ;initial value
|
||||||
@@ -846,17 +916,17 @@ ClearResults
|
|||||||
lda #$ff ;initial value
|
lda #$ff ;initial value
|
||||||
sta sfx_effect
|
sta sfx_effect
|
||||||
;
|
;
|
||||||
ldx #<MODUL ;low byte of RMT module to X reg
|
lda #0
|
||||||
ldy #>MODUL ;hi byte of RMT module to Y reg
|
jsr RmtSongSelect
|
||||||
lda #0 ;starting song line 0-255 to A reg
|
|
||||||
jsr RASTERMUSICTRACKER ;Init
|
|
||||||
;
|
;
|
||||||
VMAIN VBLinterrupt,6 ;jsr SetVBL
|
VMAIN VBLinterrupt,6 ;jsr SetVBL
|
||||||
|
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
DLIinterruptGraph .proc
|
.proc DLIinterruptGraph
|
||||||
|
;sta dliA
|
||||||
|
;sty dliY
|
||||||
pha
|
pha
|
||||||
phy
|
phy
|
||||||
ldy dliCounter
|
ldy dliCounter
|
||||||
@@ -868,48 +938,80 @@ DLIinterruptGraph .proc
|
|||||||
sta COLPF1
|
sta COLPF1
|
||||||
sty COLPF2
|
sty COLPF2
|
||||||
inc dliCounter
|
inc dliCounter
|
||||||
|
;ldy dliY
|
||||||
|
;lda dliA
|
||||||
ply
|
ply
|
||||||
pla
|
pla
|
||||||
rti
|
rti
|
||||||
.endp
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
DLIinterruptText .proc
|
.proc DLIinterruptText
|
||||||
|
;sta dliA
|
||||||
pha
|
pha
|
||||||
sta WSYNC
|
sta WSYNC
|
||||||
mva #TextBackgroundColor colpf2
|
mva #TextBackgroundColor colpf2
|
||||||
mva #TextForegroundColor colpf3
|
mva #TextForegroundColor colpf3
|
||||||
|
;lda dliA
|
||||||
pla
|
pla
|
||||||
DLIinterruptNone
|
DLIinterruptNone
|
||||||
rti
|
rti
|
||||||
.endp
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
VBLinterrupt .proc
|
.proc VBLinterrupt
|
||||||
pha
|
pha
|
||||||
phx
|
phx
|
||||||
phy
|
phy
|
||||||
mva #0 dliCounter
|
mva #0 dliCounter
|
||||||
|
|
||||||
|
lda PAL
|
||||||
|
and #%00001110
|
||||||
|
beq itsPAL
|
||||||
|
;it is NTSC here
|
||||||
|
dec NTSCcounter
|
||||||
|
bne itsPAL
|
||||||
|
mva #6 NTSCcounter
|
||||||
|
bne exitVBL ; skip doing VBL things each 6 frames in Amerika, Amerika
|
||||||
|
; We're all living in Amerika, Coca Cola, Wonderbra
|
||||||
|
|
||||||
|
itsPAL
|
||||||
|
; pressTimer is trigger tick counter. always 50 ticks / s
|
||||||
|
bit:smi:inc pressTimer ; timer halted if >127. max time measured 2.5 s
|
||||||
|
|
||||||
|
|
||||||
|
; ------- RMT -------
|
||||||
lda sfx_effect
|
lda sfx_effect
|
||||||
bmi lab2
|
bmi lab2
|
||||||
asl @ ; * 2
|
asl @ ; * 2
|
||||||
tay ;Y = 2,4,..,16 instrument number * 2 (0,2,4,..,126)
|
tay ;Y = 2,4,..,16 instrument number * 2 (0,2,4,..,126)
|
||||||
ldx #0 ;X = 0 channel (0..3 or 0..7 for stereo module)
|
ldx #0 ;X = 0 channel (0..3 or 0..7 for stereo module)
|
||||||
lda #0 ;A = 12 note (0..60)
|
lda #0 ;A = 0 note (0..60)
|
||||||
jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!)
|
bit noSfx
|
||||||
;
|
smi:jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!)
|
||||||
|
|
||||||
lda #$ff
|
lda #$ff
|
||||||
sta sfx_effect ;reinit value
|
sta sfx_effect ;reinit value
|
||||||
;
|
|
||||||
lab2
|
lab2
|
||||||
jsr RASTERMUSICTRACKER+3 ;1 play
|
jsr RASTERMUSICTRACKER+3 ;1 play
|
||||||
|
; ------- RMT -------
|
||||||
|
|
||||||
|
exitVBL
|
||||||
ply
|
ply
|
||||||
plx
|
plx
|
||||||
pla
|
pla
|
||||||
jmp SYSVBV
|
jmp SYSVBV
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
RandomizeSequence .proc
|
.proc RandomizeSequence0
|
||||||
|
ldx #0
|
||||||
|
@ txa
|
||||||
|
sta TankSequence,x
|
||||||
|
inx
|
||||||
|
cpx #MaxPlayers
|
||||||
|
bne @-
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc RandomizeSequence
|
||||||
; in: NumberOfPlayers
|
; in: NumberOfPlayers
|
||||||
; out: TankSequence
|
; out: TankSequence
|
||||||
; how: get random number lower than NumberOfPlayers
|
; how: get random number lower than NumberOfPlayers
|
||||||
@@ -958,7 +1060,7 @@ UsageLoop
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
RandomizeAngle .proc ;
|
.proc RandomizeAngle
|
||||||
; routine returns in A
|
; routine returns in A
|
||||||
; a valid angle for the tank's barrel.
|
; a valid angle for the tank's barrel.
|
||||||
; X is not changed
|
; X is not changed
|
||||||
@@ -981,8 +1083,8 @@ RandomizeAngle .proc ;
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
RandomizeForce .proc
|
.proc RandomizeForce
|
||||||
; routine returns in EnergyTable/L/H
|
; routine returns in ForceTable/L/H
|
||||||
; valid force of shooting for TankNr
|
; valid force of shooting for TankNr
|
||||||
; in X must be TankNr
|
; in X must be TankNr
|
||||||
; low and high randomize boundary passed as word value
|
; low and high randomize boundary passed as word value
|
||||||
@@ -990,38 +1092,42 @@ RandomizeForce .proc
|
|||||||
; RandBoundaryHigh
|
; RandBoundaryHigh
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
|
|
||||||
lda MaxEnergyTableL,x
|
|
||||||
sta temp
|
|
||||||
lda MaxEnergyTableH,x
|
|
||||||
sta temp+1
|
|
||||||
GetRandomAgain
|
|
||||||
lda RANDOM
|
lda RANDOM
|
||||||
; gets values in range(256,765)
|
|
||||||
sta temp2
|
sta temp2
|
||||||
lda RANDOM ; :)
|
lda RANDOM
|
||||||
and #%00000011 ;(0..1023)
|
and #%00000011 ;(0..1023)
|
||||||
sta temp2+1
|
sta temp2+1
|
||||||
|
|
||||||
cpw RandBoundaryLow temp2
|
cpw RandBoundaryLow temp2
|
||||||
bcs GetRandomAgain
|
bcs RandomizeForce
|
||||||
|
|
||||||
cpw RandBoundaryHigh temp2
|
cpw RandBoundaryHigh temp2
|
||||||
bcc GetRandomAgain
|
bcc RandomizeForce
|
||||||
|
|
||||||
cpw temp temp2
|
|
||||||
bcs EnergyInRange
|
|
||||||
|
|
||||||
mwa temp temp2
|
|
||||||
|
|
||||||
EnergyInRange
|
|
||||||
lda temp2
|
lda temp2
|
||||||
sta EnergyTableL,x
|
sta ForceTableL,x
|
||||||
lda temp2+1
|
lda temp2+1
|
||||||
sta EnergyTableH,x
|
sta ForceTableH,x
|
||||||
|
|
||||||
|
;---------
|
||||||
|
LimitForce
|
||||||
|
; in X must be TankNr
|
||||||
|
; cuts force to MaxForceTable
|
||||||
|
lda MaxForceTableH,x
|
||||||
|
cmp ForceTableH,x
|
||||||
|
bne @+
|
||||||
|
lda MaxForceTableL,x
|
||||||
|
cmp ForceTableL,x
|
||||||
|
@ bcs @+
|
||||||
|
|
||||||
|
lda MaxForceTableL,x
|
||||||
|
sta ForceTableL,x
|
||||||
|
lda MaxForceTableH,x
|
||||||
|
sta ForceTableH,x
|
||||||
|
@
|
||||||
rts
|
rts
|
||||||
.endp
|
|
||||||
|
|
||||||
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc MoveBarrelToNewPosition
|
.proc MoveBarrelToNewPosition
|
||||||
jsr DrawTankNr
|
jsr DrawTankNr
|
||||||
@@ -1041,21 +1147,21 @@ rotateRight;older is lower
|
|||||||
bne MoveBarrelToNewPosition
|
bne MoveBarrelToNewPosition
|
||||||
|
|
||||||
mva #$30 CharCode ; if angle goes through 0 we clear the barrel
|
mva #$30 CharCode ; if angle goes through 0 we clear the barrel
|
||||||
jsr drawtankNrX
|
jsr DrawTankNr.drawtankNrX
|
||||||
|
|
||||||
jmp MoveBarrelToNewPosition
|
jmp MoveBarrelToNewPosition
|
||||||
rotateLeft
|
rotateLeft
|
||||||
dec angleTable,x
|
dec angleTable,x
|
||||||
bpl MoveBarrelToNewPosition
|
bpl MoveBarrelToNewPosition
|
||||||
mva #$2e CharCode
|
mva #$2e CharCode
|
||||||
jsr drawtankNrX
|
jsr DrawTankNr.drawtankNrX
|
||||||
|
|
||||||
jmp MoveBarrelToNewPosition
|
jmp MoveBarrelToNewPosition
|
||||||
|
|
||||||
BarrelPositionIsFine
|
BarrelPositionIsFine
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc SortSequence ;
|
.proc SortSequence ;
|
||||||
@@ -1146,7 +1252,8 @@ nextishigher
|
|||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc getkey ; waits for pressing a key and returns pressed value in A
|
.proc GetKey ; waits for pressing a key and returns pressed value in A
|
||||||
|
; when [ESC] is pressed, escFlag is set to 1
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
jsr WaitForKeyRelease
|
jsr WaitForKeyRelease
|
||||||
@
|
@
|
||||||
@@ -1184,19 +1291,19 @@ notpressedJoyGetKey
|
|||||||
getkeyend
|
getkeyend
|
||||||
mvx #sfx_keyclick sfx_effect
|
mvx #sfx_keyclick sfx_effect
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
getkeynowait .proc;
|
.proc getkeynowait
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
jsr WaitForKeyRelease
|
jsr WaitForKeyRelease
|
||||||
lda kbcode
|
lda kbcode
|
||||||
and #$3f ;CTRL and SHIFT ellimination
|
and #$3f ;CTRL and SHIFT ellimination
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
WaitForKeyRelease .proc
|
.proc WaitForKeyRelease
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
lda JSTICK0
|
lda JSTICK0
|
||||||
and #$0f
|
and #$0f
|
||||||
@@ -1210,7 +1317,16 @@ WaitForKeyRelease .proc
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc RmtSongSelect
|
||||||
|
;--------------------------------------------------
|
||||||
|
; starting song line 0-255 to A reg
|
||||||
|
bit noMusic
|
||||||
|
spl:lda #song_silencio
|
||||||
|
ldx #<MODUL ;low byte of RMT module to X reg
|
||||||
|
ldy #>MODUL ;hi byte of RMT module to Y reg
|
||||||
|
jmp RASTERMUSICTRACKER ;Init, :RTS
|
||||||
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
icl 'weapons.asm'
|
icl 'weapons.asm'
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
@@ -1232,6 +1348,7 @@ TankFont
|
|||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
icl 'variables.asm'
|
icl 'variables.asm'
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
|
|
||||||
; reserved space for RMT player
|
; reserved space for RMT player
|
||||||
.ds $0320
|
.ds $0320
|
||||||
.align $100
|
.align $100
|
||||||
@@ -1240,7 +1357,7 @@ TankFont
|
|||||||
|
|
||||||
MODUL equ $b000 ;address of RMT module
|
MODUL equ $b000 ;address of RMT module
|
||||||
opt h- ;RMT module is standard Atari binary file already
|
opt h- ;RMT module is standard Atari binary file already
|
||||||
ins "artwork/sfx/scorch_trial0e_stripped.rmt" ;include music RMT module
|
ins "artwork/sfx/scorch_trial0f_stripped.rmt" ;include music RMT module
|
||||||
opt h+
|
opt h+
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
|
|||||||
BIN
Binary file not shown.
Executable → Regular
+508
-245
File diff suppressed because it is too large
Load Diff
Executable → Regular
+77
-65
@@ -8,32 +8,33 @@
|
|||||||
; compilation to e.g. cartridge
|
; compilation to e.g. cartridge
|
||||||
; zero page variables are declared in program.s65 module
|
; zero page variables are declared in program.s65 module
|
||||||
;=====================================================
|
;=====================================================
|
||||||
;--------------------------------------------------
|
|
||||||
;Variables
|
|
||||||
;--------------
|
|
||||||
TanksNames ; DO NOT ZERO - ticket #24
|
TanksNames ; DO NOT ZERO - ticket #24
|
||||||
:6 dta d" "
|
:6 dta d" "
|
||||||
;----------------------------
|
;----------------------------------------------------
|
||||||
;Options DO NOT ZERO - ticket #27
|
;Options DO NOT ZERO - ticket #27
|
||||||
OptionsTable .by 0,0,2,2,0,1,3
|
OptionsTable .by 0,0,2,2,0,1,3
|
||||||
RoundsInTheGame .by 10 ;how many rounds in the current game
|
RoundsInTheGame .by 10 ;how many rounds in the current game
|
||||||
seppukuVal .by 75
|
seppukuVal .by 75
|
||||||
;--------------------------------------------------
|
;----------------------------------------------------
|
||||||
skilltable ; computer controlled players' skills (1-8), 0 - human (no cleaning, ticket #30)
|
skilltable ; computer controlled players' skills (1-8), 0 - human (no cleaning, ticket #30)
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
|
noMusic .by 0 ; 0 - play music, $ff - do not play music
|
||||||
|
noSfx .by 0 ; 0 - play SFX, $ff - do not play SFX
|
||||||
; 4x4 text buffer
|
; 4x4 text buffer
|
||||||
ResultLineBuffer
|
ResultLineBuffer
|
||||||
dta d" "
|
dta d" ", $ff
|
||||||
.byte $ff
|
|
||||||
LineHeader1
|
LineHeader1
|
||||||
dta d"# ROUND: "
|
dta d"# ROUND: "
|
||||||
RoundNrDisplay
|
RoundNrDisplay
|
||||||
dta d" #"
|
dta d" #", $ff
|
||||||
.byte $ff
|
|
||||||
|
|
||||||
|
;=====================================================
|
||||||
variablesStart ; zeroing starts here
|
variablesStart ; zeroing starts here
|
||||||
escFlag .ds 1
|
;=====================================================
|
||||||
|
isInventory .ds 1 ; 0 - purchase, $ff - inventory
|
||||||
|
;--------------
|
||||||
|
drawFunction .ds 1 ; 0 - plot, %10000000 - LineLength (N), %01000000 - DrawCheck (V)
|
||||||
;--------------
|
;--------------
|
||||||
sfx_effect .ds 1
|
sfx_effect .ds 1
|
||||||
;--------------
|
;--------------
|
||||||
@@ -45,30 +46,32 @@ flyDelay .ds 1
|
|||||||
NumberOfPlayers .DS 1 ;current number of players (counted from 1)
|
NumberOfPlayers .DS 1 ;current number of players (counted from 1)
|
||||||
TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round
|
TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round
|
||||||
GameIsOver .DS 1 ; 1 means it was the last round in the game
|
GameIsOver .DS 1 ; 1 means it was the last round in the game
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
moneyH ;we place zero at the end of prices and money
|
moneyH ;we place zero at the end of prices and money
|
||||||
;and have range from 0 to 99990 (not too much)
|
;and have range from 0 to 99990 (not too much)
|
||||||
;money players have (maybe one more byte is needed?)
|
;money players have (maybe one more byte is needed?)
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
moneyL
|
moneyL
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
gainH ;how much money player gets after the round
|
gainH ;how much money player gets after the round
|
||||||
;it is gathered during the round basing on energy
|
;it is gathered during the round basing on energy
|
||||||
;opponents loose after player's shoots
|
;opponents loose after player's shoots
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
gainL
|
gainL
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
looseH ;how much player looses after the round
|
looseH ;how much player looses after the round
|
||||||
;calculated from REAL energy loss
|
;calculated from REAL energy loss
|
||||||
;(not only to zero energy)
|
;(not only to zero energy)
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
looseL
|
looseL
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
Energy
|
Energy
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
|
ShieldEnergy
|
||||||
|
.DS [MaxPlayers]
|
||||||
EnergyDecrease .DS 1
|
EnergyDecrease .DS 1
|
||||||
eXistenZ
|
eXistenZ
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
@@ -79,66 +82,67 @@ ResultsTable ;the results in the gameeeeee
|
|||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
TempResults
|
TempResults
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
CurrentResult
|
;----------------------------------------------------
|
||||||
.DS 1
|
ForceTableL ;shooting Force of the tank during the round
|
||||||
;-----------------------------------
|
|
||||||
EnergyTableL ;shooting Force of the tank during the round
|
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
EnergyTableH
|
ForceTableH
|
||||||
.DS [MaxPlayers] ;maxplayers=6
|
.DS [MaxPlayers] ;maxplayers=6
|
||||||
MaxEnergyTableL ;Energy of the tank during the round
|
MaxForceTableL ;Energy of the tank during the round
|
||||||
;(limes superior force of the Shoot)
|
;(limes superior force of the Shoot)
|
||||||
.DS [MaxPlayers] ;1000 is the default
|
.DS [MaxPlayers] ;1000 is the default
|
||||||
MaxEnergyTableH
|
MaxForceTableH
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
AngleTable ;Angle of the barrel of each tank during the round
|
AngleTable ;Angle of the barrel of each tank during the round
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
NewAngle .DS 1
|
NewAngle .DS 1
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
ActiveWeapon ;number of the selected weapon
|
ActiveWeapon ;number of the selected weapon
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
|
ActiveDefenceWeapon ;number of the activated defence weapon - 0
|
||||||
|
.DS [MaxPlayers]
|
||||||
WeaponDepleted .DS 1 ; if 0 deactivate the weapon and switch to Baby Missile
|
WeaponDepleted .DS 1 ; if 0 deactivate the weapon and switch to Baby Missile
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
;format of the 3-byte static point number used in the game
|
;format of the 3-byte static point number used in the game
|
||||||
; 20203.5 => 128 : <20203 : >20203
|
; 20203.5 => 128 : <20203 : >20203
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
L1 .DS 1 ; variable used in multiplications (by 10:)
|
L1 .DS 1 ; variable used in multiplications (by 10:)
|
||||||
gravity .DS 1 ;only the decimal part (1/10 = 25)
|
gravity .DS 1 ;only the decimal part (1/10 = 25)
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
Wind .ds 2 ;walue displayed on the screen
|
Wind .ds 4 ;format: 0000.hhll
|
||||||
;multiplied by 16 (decimal part only)
|
;walue displayed on the screen is
|
||||||
;-----------------------------------
|
;decimal portion divided by 16 (>>4)
|
||||||
|
;----------------------------------------------------
|
||||||
MaxWind .ds 1 ;
|
MaxWind .ds 1 ;
|
||||||
WindOrientation .DS 1 ;(0-right,1-left)
|
WindOrientation .DS 1 ;(0-right,1-left)
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
Counter .DS 1 ;temporary Counter for outside loops
|
Counter .DS 1 ;temporary Counter for outside loops
|
||||||
HitFlag .DS 1 ;1 when missile hit anything
|
HitFlag .DS 1 ;$ff when missile hit ground, $00 when no hit, $01-$06 tank index+1 when hit tank
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
xtankstableL ;X positions of tanks (lower left point)
|
xtankstableL ;X positions of tanks (lower left point)
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
xtankstableH
|
xtankstableH
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
ytankstable ;Y positions of tanks (lower left point)
|
ytankstable ;Y positions of tanks (lower left point)
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
LowResDistances ; coarse stank positions divided by 4 (to be in just one byte)
|
LowResDistances ; coarse tank positions divided by 4 (to be in just one byte)
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
Erase .DS 1 ; if 1 only mask of the character is printed
|
Erase .DS 1 ; if 1 only mask of the character is printed
|
||||||
; on the graphics screen. if 0 character is printed normally
|
; on the graphics screen. if 0 character is printed normally
|
||||||
|
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
RangeLeft .DS 2 ;range of the soil to be fallen down
|
RangeLeft .DS 2 ;range of the soil to be fallen down
|
||||||
RangeRight .DS 2 ;it is being set by all Explosions
|
RangeRight .DS 2 ;it is being set by all Explosions
|
||||||
;-----------------------------------
|
;----------------------------------------------------
|
||||||
WeaponRangeLeft .DS 2 ;Range of the Explosion of the given weapon
|
WeaponRangeLeft .DS 2 ;Range of the Explosion of the given weapon
|
||||||
WeaponRangeRight .DS 2
|
WeaponRangeRight .DS 2
|
||||||
;--------------------------------------------------
|
;----------------------------------------------------
|
||||||
;xroller
|
;xroller
|
||||||
HowMuchToFall .ds 1
|
HowMuchToFall .ds 1
|
||||||
HeightRol .DS 1
|
HeightRol .DS 1
|
||||||
@@ -159,7 +163,6 @@ sandhogflag .DS 1 ; (0 digger, 8 sandhog)
|
|||||||
;ofdirt
|
;ofdirt
|
||||||
magic .DS 2 ; was tempor2, but it was not compiling!!! (bug in OMC65)
|
magic .DS 2 ; was tempor2, but it was not compiling!!! (bug in OMC65)
|
||||||
;draw
|
;draw
|
||||||
DrawJumpAddr .DS 2
|
|
||||||
HowToDraw .DS 1
|
HowToDraw .DS 1
|
||||||
; bits here mean
|
; bits here mean
|
||||||
; 0 - negative X (go up)
|
; 0 - negative X (go up)
|
||||||
@@ -172,14 +175,14 @@ LineLength .DS 2
|
|||||||
;circle
|
;circle
|
||||||
radius .DS 1
|
radius .DS 1
|
||||||
xcircle .DS 2
|
xcircle .DS 2
|
||||||
ycircle .DS 1
|
ycircle .DS 2
|
||||||
tempcir .DS 2
|
tempcir .DS 2
|
||||||
;TankFalls
|
;TankFalls
|
||||||
IfFallDown .DS 1
|
IfFallDown .DS 1
|
||||||
PreviousFall .DS 1
|
PreviousFall .DS 1
|
||||||
EndOfTheFallFlag .DS 1 ; in case of the infinite fall
|
EndOfTheFallFlag .DS 1 ; in case of the infinite fall
|
||||||
Parachute .DS 1 ; are you insured with parachute?
|
Parachute .DS 1 ; are you insured with parachute?
|
||||||
; -------------------------------------------------
|
;----------------------------------------------------
|
||||||
;Flight
|
;Flight
|
||||||
;variables for 5 missiles (used for mirv)
|
;variables for 5 missiles (used for mirv)
|
||||||
xtraj00 .DS [5] ; 3 bytes of xtraj times 5. Lowest byte
|
xtraj00 .DS [5] ; 3 bytes of xtraj times 5. Lowest byte
|
||||||
@@ -192,7 +195,9 @@ vx03 .DS [5]
|
|||||||
MirvDown .DS [5] ; is given missile down?
|
MirvDown .DS [5] ; is given missile down?
|
||||||
MirvMissileCounter .DS 1 ; missile Counter (mainly for X)
|
MirvMissileCounter .DS 1 ; missile Counter (mainly for X)
|
||||||
SmokeTracerFlag .DS 1 ; if Smoketracer
|
SmokeTracerFlag .DS 1 ; if Smoketracer
|
||||||
; -------------------------------------------------
|
XposFlag .DS 1 ; bullet positon X (0 - on screen , %1000000 - off-screen)
|
||||||
|
YposFlag .DS 1 ; bullet positon Y (0 - on screen , %1000000 - over the screen , %0100000 - under the screen)
|
||||||
|
;----------------------------------------------------
|
||||||
;CheckCollisionWithTank
|
;CheckCollisionWithTank
|
||||||
vx .ds 4 ; 0,0,0,0 ;two decimal bytes, two whole bytes (DC.BA)
|
vx .ds 4 ; 0,0,0,0 ;two decimal bytes, two whole bytes (DC.BA)
|
||||||
vy .ds 4 ;0,0,0,0
|
vy .ds 4 ;0,0,0,0
|
||||||
@@ -204,12 +209,11 @@ Angle .DS 1
|
|||||||
Force .ds 3 ; 0,0,0
|
Force .ds 3 ; 0,0,0
|
||||||
Multiplier .ds 3 ; 0,0,0
|
Multiplier .ds 3 ; 0,0,0
|
||||||
Multiplee .ds 2 ; 0,0
|
Multiplee .ds 2 ; 0,0
|
||||||
Result .ds 3 ; 0,0,0
|
|
||||||
goleft .DS 1 ;if 1 then flights left
|
goleft .DS 1 ;if 1 then flights left
|
||||||
;--------------------------------------------------
|
;----------------------------------------------------
|
||||||
;SoilDown2
|
;SoilDown2
|
||||||
IsEndOfTheFallFlag .DS 1
|
IsEndOfTheFallFlag .DS 1
|
||||||
; -------------------------------------------------
|
;----------------------------------------------------
|
||||||
;unPlot
|
;unPlot
|
||||||
WhichUnPlot .DS 1
|
WhichUnPlot .DS 1
|
||||||
; max 5 concurrent unPlots
|
; max 5 concurrent unPlots
|
||||||
@@ -223,7 +227,7 @@ xtrajfb .DS 2
|
|||||||
ytrajfb .DS 2
|
ytrajfb .DS 2
|
||||||
;
|
;
|
||||||
tracerflag .DS 1
|
tracerflag .DS 1
|
||||||
; -------------------------------------------------
|
;----------------------------------------------------
|
||||||
;TypeChar
|
;TypeChar
|
||||||
mask1 .DS [8]
|
mask1 .DS [8]
|
||||||
mask2 .DS [8]
|
mask2 .DS [8]
|
||||||
@@ -241,24 +245,22 @@ UpNdown .DS 1
|
|||||||
temptankX .DS 2
|
temptankX .DS 2
|
||||||
temptankNr .DS 1
|
temptankNr .DS 1
|
||||||
|
|
||||||
; -------------------------------------------------
|
;----------------------------------------------------
|
||||||
;Variables from textproc.s65
|
;Variables from textproc.s65
|
||||||
; tables with numbers of weapons on the right lists
|
; tables with indexes of weapons on the right lists
|
||||||
; to be honest - I do not know at the moment what the above
|
|
||||||
; comment was supposed to mean...
|
|
||||||
; OK (2022) so, L1 is list of offensive weapons, L2 - defensive
|
; OK (2022) so, L1 is list of offensive weapons, L2 - defensive
|
||||||
NubersOfWeaponsL1
|
IndexesOfWeaponsL1
|
||||||
.ds 8*5 ; :(8*5) .by $ff
|
.ds 8*5 ; max 40 offensive weapons. this is wrong, should be 48, still only 32 defined.
|
||||||
NubersOfWeaponsL2
|
IndexesOfWeaponsL2
|
||||||
.ds 8*2 ; :(8*2) .by $ff
|
.ds 8*2 ; max 16 defensive weapons.
|
||||||
; -------------------------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
; variables storing amount of weapons on the first and second
|
; variables storing amount of weapons on the first and second
|
||||||
; list and pointer position
|
; list and pointer position
|
||||||
|
|
||||||
HowManyOnTheList1
|
HowManyOnTheListOff
|
||||||
.DS 1
|
.DS 1
|
||||||
HowManyOnTheList2
|
HowManyOnTheListDef
|
||||||
.DS 1
|
.DS 1
|
||||||
PositionOnTheList ; pointer position on the list being displayed
|
PositionOnTheList ; pointer position on the list being displayed
|
||||||
.DS 1
|
.DS 1
|
||||||
@@ -274,14 +276,14 @@ WhichList ; list currently on the screen
|
|||||||
OffsetDL1 ; offset of the list screen (how many lines)....
|
OffsetDL1 ; offset of the list screen (how many lines)....
|
||||||
.DS 1
|
.DS 1
|
||||||
|
|
||||||
; -------------------------------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
;mark the level
|
;mark the level
|
||||||
PositionInName ; cursor position in name of the player when name input
|
PositionInName ; cursor position in name of the player when name input
|
||||||
.DS 1
|
.DS 1
|
||||||
DifficultyLevel ; Difficulty Level (human/cpu)
|
DifficultyLevel ; Difficulty Level (human/cpu)
|
||||||
.DS 1
|
.DS 1
|
||||||
;-------------------------------------------------
|
;----------------------------------------------------
|
||||||
;displaydecimal
|
;displaydecimal
|
||||||
decimal .DS 2
|
decimal .DS 2
|
||||||
decimalresult .DS 4
|
decimalresult .DS 4
|
||||||
@@ -296,7 +298,7 @@ FallDown2 .DS 1
|
|||||||
LeapFrogAngle .DS 1
|
LeapFrogAngle .DS 1
|
||||||
;laser
|
;laser
|
||||||
LaserCoordinate .DS 8 ; 2,2,2,2
|
LaserCoordinate .DS 8 ; 2,2,2,2
|
||||||
; -------------------------------------------------
|
;----------------------------------------------------
|
||||||
; Here go tables with weapons possesed by a given tank
|
; Here go tables with weapons possesed by a given tank
|
||||||
; Index in the table means weapon type
|
; Index in the table means weapon type
|
||||||
; number entered means ammo for given weapon possessed (max 99)
|
; number entered means ammo for given weapon possessed (max 99)
|
||||||
@@ -323,7 +325,7 @@ mountaintable2 ;table of mountains (size=screenwidth)
|
|||||||
.DS [screenwidth]
|
.DS [screenwidth]
|
||||||
.DS 1 ; additional byte for fallout (sometimes 1 pixel)
|
.DS 1 ; additional byte for fallout (sometimes 1 pixel)
|
||||||
MountaintableEnd ;good for table clearing
|
MountaintableEnd ;good for table clearing
|
||||||
;----------------------------------------------
|
;----------------------------------------------------
|
||||||
TextPositionX .DS 2
|
TextPositionX .DS 2
|
||||||
TextPositionY .DS 1
|
TextPositionY .DS 1
|
||||||
TextAddress .DS 2
|
TextAddress .DS 2
|
||||||
@@ -332,7 +334,16 @@ TextNumberOff .DS 1
|
|||||||
;--------------
|
;--------------
|
||||||
TankTempY
|
TankTempY
|
||||||
.DS 1
|
.DS 1
|
||||||
|
;----------------------------------------------------
|
||||||
;-------------- single round variables --------------
|
;-------------- single round variables --------------
|
||||||
|
;----------------------------------------------------
|
||||||
|
singleRoundVars
|
||||||
|
;--------------
|
||||||
|
escFlag .ds 1
|
||||||
|
;--------------
|
||||||
|
CurrentResult
|
||||||
|
.DS 1
|
||||||
|
;--------------
|
||||||
previousAngle
|
previousAngle
|
||||||
.DS [MaxPlayers]
|
.DS [MaxPlayers]
|
||||||
previousEnergyL
|
previousEnergyL
|
||||||
@@ -350,9 +361,9 @@ RandBoundaryHigh
|
|||||||
AngleTablePointer
|
AngleTablePointer
|
||||||
.DS 1
|
.DS 1
|
||||||
singleRoundVarsEnd
|
singleRoundVarsEnd
|
||||||
;----------------------------------------------
|
;----------------------------------------------------
|
||||||
; 4x4 texts
|
; 4x4 texts
|
||||||
;----------------------------------------------
|
;----------------------------------------------------
|
||||||
LineAddress4x4
|
LineAddress4x4
|
||||||
.DS 2
|
.DS 2
|
||||||
LineCharNr
|
LineCharNr
|
||||||
@@ -370,8 +381,9 @@ ResultY
|
|||||||
ResultOfTankNr
|
ResultOfTankNr
|
||||||
.DS 1
|
.DS 1
|
||||||
|
|
||||||
;----------------------------
|
;----------------------------------------------------
|
||||||
;PutChar4x4
|
;PutChar4x4
|
||||||
|
;----------------------------------------------------
|
||||||
LoopCounter4x4 .DS 1
|
LoopCounter4x4 .DS 1
|
||||||
y4x4 .DS 1
|
y4x4 .DS 1
|
||||||
StoreA4x4 .DS 1
|
StoreA4x4 .DS 1
|
||||||
@@ -383,6 +395,6 @@ plot4x4color .DS 1 ;1-white, 0-background
|
|||||||
|
|
||||||
|
|
||||||
variablesEnd
|
variablesEnd
|
||||||
;----------------------------
|
;----------------------------------------------------
|
||||||
|
|
||||||
.endif
|
.endif
|
||||||
|
|||||||
Executable → Regular
+624
-383
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user