mirror of
https://github.com/pkali/scorch_src.git
synced 2026-05-21 14:49:46 +02:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9251db8f3a | |||
| f15e815c1a | |||
| 746026ae4f | |||
| fd67dc0bb1 | |||
| c1ee40fa59 | |||
| a64d01067d | |||
| f703316128 | |||
| 98565d490f | |||
| fcbd0bc34a | |||
| e50bc8669e | |||
| bbded45200 | |||
| 00d386e73f | |||
| 70788e772e | |||
| 793d494fc5 | |||
| 6b2eabd1ca | |||
| 0832d841f4 | |||
| c41c01cee0 | |||
| 6b68066c94 |
@@ -4,3 +4,4 @@ scorch.lab
|
|||||||
scorch.lst
|
scorch.lst
|
||||||
textproc.lab
|
textproc.lab
|
||||||
textproc.lst
|
textproc.lst
|
||||||
|
artwork/talk.as_
|
||||||
|
|||||||
@@ -51,16 +51,31 @@ With the advent of [fujinet](https://fujinet.online/) we are thinking about maki
|
|||||||
|
|
||||||
## Changelog:
|
## Changelog:
|
||||||
|
|
||||||
|
###### Version 1.27
|
||||||
|
2023-02-07
|
||||||
|
|
||||||
|
Late evening edition. It is 2:11 am and I am writing this instead of dreaming of electric sheep.
|
||||||
|
Our Senior Executive Art Director @+Adam+ ordered us to stop procrastinating and finally release the version with colorized mountains. So here it is. Enjoy :)
|
||||||
|
Please note you can still press [Tab] or [5] in the main menu and revert to the classic or classy look of the "Polish rainbow" (it's a reference to a strangely accurate Wulffmorgenthaler comic strip: https://i.imgur.com/HMctP.jpg)
|
||||||
|
Other changes:
|
||||||
|
- nicer Lazy targeting and "visual Debug" for Lazy Boys
|
||||||
|
- extreme memory optimizations to fit 2 new texts from @RB5200 based on "Sandford and Son"
|
||||||
|
- fix for [G] key bug when turn wind changes were selected
|
||||||
|
- fix for Lazy Boys deactivation bug
|
||||||
|
- PAL mode now has got the full-color table, so it is possible to adjust colors better
|
||||||
|
- the x-position of tanks was always adjusted to even X values, this is no more, which saves some hassle and unnecessary tank shakes left and right. As tanks are painted with sprites of a lower resolution, a rare artifact might appear here and there.
|
||||||
|
- improved tank shapes
|
||||||
|
|
||||||
###### Version 1.26
|
###### Version 1.26
|
||||||
2023-01-23
|
2023-01-23
|
||||||
|
|
||||||
Early morning edition. It is 5:11 am and I am writing this instead of dreaming of electric sheep.
|
Early morning edition. It is 5:11 am and I am writing this instead of dreaming of electric sheep.
|
||||||
For the last 6 weeks theversions we released had an awful bug - the conversations of tanks were completely invisible. Thanks for pointing this out, RB5200.
|
For the last 6 weeks, the versions we released had an awful bug - the conversations of tanks were completely invisible. Thanks for pointing this out, RB5200.
|
||||||
- tanks talk to each other again
|
- tanks talk to each other again
|
||||||
- better stochastic non blocking wait one frame
|
- better stochastic non-blocking wait one frame
|
||||||
- rare dstance measurement bug fixed (rarely a tank survived a direct hit)
|
- rare distance measurement bug fixed (rarely a tank survived a direct hit)
|
||||||
- 5200: second fire works (by RB5200)
|
- 5200: second fire (by RB5200)
|
||||||
- "visual debug" mode in A800 version, triggered by pressing [CTRL]+[HELP]. It displays distances measured, laser aiming and aiming technique. It leaves a mess on screen, but it does not impair the game, just makes it a bit harder.
|
- "visual debug" mode in A800 version, triggered by pressing [CTRL]+[HELP]. It displays distances measured, laser aiming, and aiming technique. It leaves a mess on the screen, but it does not impair the game, just makes it a bit harder.
|
||||||
|
|
||||||
|
|
||||||
###### Version 1.25
|
###### Version 1.25
|
||||||
@@ -672,3 +687,4 @@ Together with Pecus we were working on this piece of code for four years and it
|
|||||||
Now it's your turn to help this idea happen!
|
Now it's your turn to help this idea happen!
|
||||||
|
|
||||||
...transmission error...former history missing...
|
...transmission error...former history missing...
|
||||||
|
|
||||||
|
|||||||
@@ -545,10 +545,7 @@ skipThisPlayer
|
|||||||
sta RandBoundaryHigh+1
|
sta RandBoundaryHigh+1
|
||||||
jsr RandomizeForce
|
jsr RandomizeForce
|
||||||
RepeatAim
|
RepeatAim
|
||||||
lda ForceTableL,x
|
jsr Table2Force
|
||||||
sta Force
|
|
||||||
lda ForceTableH,x
|
|
||||||
sta Force+1
|
|
||||||
; wind correction 90+(wind/8)
|
; wind correction 90+(wind/8)
|
||||||
mwa Wind temp2
|
mwa Wind temp2
|
||||||
:7 lsrw temp2
|
:7 lsrw temp2
|
||||||
|
|||||||
@@ -760,7 +760,7 @@ quit
|
|||||||
ini main
|
ini main
|
||||||
; ---
|
; ---
|
||||||
|
|
||||||
opt l-
|
;opt l- ; this stops the listing
|
||||||
|
|
||||||
.MACRO SPRITES
|
.MACRO SPRITES
|
||||||
missiles
|
missiles
|
||||||
|
|||||||
+68
-66
@@ -53,79 +53,81 @@ L49 dta d"DIE, TANK-SCUM!"
|
|||||||
L50 dta d"I'M GONNA BREAK YOUR FACE!"
|
L50 dta d"I'M GONNA BREAK YOUR FACE!"
|
||||||
L51 dta d"MAMA SAID KNOCK YOU OUT!"
|
L51 dta d"MAMA SAID KNOCK YOU OUT!"
|
||||||
L52 dta d"I HOPE YOU ENJOY PAIN!"
|
L52 dta d"I HOPE YOU ENJOY PAIN!"
|
||||||
|
L53 dta d"HOW'D YOU LIKE ONE ACROSS YOUR LIPS?" ;(sanford and son)
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
L53 dta d"PARTING IS SUCH SWEET SORROW... NOT!"
|
L54 dta d"PARTING IS SUCH SWEET SORROW... NOT!"
|
||||||
L54 dta d"UGH!"
|
L55 dta d"UGH!"
|
||||||
L55 dta d"AARGH!"
|
L56 dta d"AARGH!"
|
||||||
L56 dta d"AAAGGHHH!"
|
L57 dta d"AAAGGHHH!"
|
||||||
L57 dta d"I'M MELTING!"
|
L58 dta d"I'M MELTING!"
|
||||||
L58 dta d"OOF.."
|
L59 dta d"OOF.."
|
||||||
L59 dta d"OH!"
|
L60 dta d"OH!"
|
||||||
L60 dta d"EEEK!"
|
L61 dta d"EEEK!"
|
||||||
L61 dta d"AACCH!"
|
L62 dta d"AACCH!"
|
||||||
L62 dta d"I HATE IT WHEN THAT HAPPENS."
|
L63 dta d"I HATE IT WHEN THAT HAPPENS."
|
||||||
L63 dta d"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY."
|
L64 dta d"ONE DIRECT HIT CAN RUIN YOUR WHOLE DAY."
|
||||||
L64 dta d"OH NO!"
|
L65 dta d"OH NO!"
|
||||||
L65 dta d"NOT ME!"
|
L66 dta d"NOT ME!"
|
||||||
L66 dta d"OUCH."
|
L67 dta d"OUCH."
|
||||||
L67 dta d"OH NO, NOT AGAIN."
|
L68 dta d"OH NO, NOT AGAIN."
|
||||||
L68 dta d"ANOTHER ONE BITES THE DUST."
|
L69 dta d"ANOTHER ONE BITES THE DUST."
|
||||||
L69 dta d"GOODBYE."
|
L70 dta d"GOODBYE."
|
||||||
L70 dta d"HELP ME!"
|
L71 dta d"HELP ME!"
|
||||||
L71 dta d"FAREWELL, CRUEL WORLD."
|
L72 dta d"FAREWELL, CRUEL WORLD."
|
||||||
L72 dta d"REMEMBER THE ALAMO!"
|
L73 dta d"REMEMBER THE ALAMO!"
|
||||||
L73 dta d"OH MAN!"
|
L74 dta d"OH MAN!"
|
||||||
L74 dta d"DOOUGH!"
|
L75 dta d"DOOUGH!"
|
||||||
L75 dta d"ANOTHER DAY, ANOTHER BOMB."
|
L76 dta d"ANOTHER DAY, ANOTHER BOMB."
|
||||||
L76 dta d"THIS IS THE END, MY ONLY FRIEND."
|
L77 dta d"THIS IS THE END, MY ONLY FRIEND."
|
||||||
L77 dta d"VERY FUNNY."
|
L78 dta d"VERY FUNNY."
|
||||||
L78 dta d"THE FAT LADY SANG."
|
L79 dta d"THE FAT LADY SANG."
|
||||||
L79 dta d"WHY DOES EVERYTHING HAPPEN TO ME?"
|
L80 dta d"WHY DOES EVERYTHING HAPPEN TO ME?"
|
||||||
L80 dta d"I'M GOING DOWN."
|
L81 dta d"I'M GOING DOWN."
|
||||||
L81 dta d"I'VE GOT A BAD FEELING ABOUT THIS."
|
L82 dta d"I'VE GOT A BAD FEELING ABOUT THIS."
|
||||||
L82 dta d"CRAPOLA."
|
L83 dta d"CRAPOLA."
|
||||||
L83 dta d"POW!"
|
L84 dta d"POW!"
|
||||||
L84 dta d"BIF!"
|
L85 dta d"BIF!"
|
||||||
L85 dta d"BAM!"
|
L86 dta d"BAM!"
|
||||||
L86 dta d"ZONK!"
|
L87 dta d"ZONK!"
|
||||||
L87 dta d"I SHOULD'VE LISTENED TO MY MOTHER..."
|
L88 dta d"I SHOULD'VE LISTENED TO MY MOTHER..."
|
||||||
L88 dta d"I WALK THROUGH THE VALLEY OF THE SHADOW..."
|
L89 dta d"I WALK THROUGH THE VALLEY OF THE SHADOW..."
|
||||||
L89 dta d"WHAT WAS THAT NOISE?"
|
L90 dta d"WHAT WAS THAT NOISE?"
|
||||||
L90 dta d"MAMA SAID THERE'D BE DAYS LIKE THIS."
|
L91 dta d"MAMA SAID THERE'D BE DAYS LIKE THIS."
|
||||||
L91 dta d"ITS JUST ONE OF THOSE DAYS..."
|
L92 dta d"ITS JUST ONE OF THOSE DAYS..."
|
||||||
L92 dta d"I SEE A BRIGHT LIGHT..."
|
L93 dta d"I SEE A BRIGHT LIGHT..."
|
||||||
L93 dta d"MOMMY? IS THAT YOU?"
|
L94 dta d"MOMMY? IS THAT YOU?"
|
||||||
L94 dta d"I LET YOU HIT ME!"
|
L95 dta d"I LET YOU HIT ME!"
|
||||||
L95 dta d"SUCKER SHOT!"
|
L96 dta d"SUCKER SHOT!"
|
||||||
L96 dta d"I DIDN'T WANT TO LIVE ANYWAY."
|
L97 dta d"I DIDN'T WANT TO LIVE ANYWAY."
|
||||||
L97 dta d"-<SOB>-"
|
L98 dta d"-<SOB>-"
|
||||||
L98 dta d"WAS THAT AS CLOSE AS I THINK IT WAS?"
|
L99 dta d"WAS THAT AS CLOSE AS I THINK IT WAS?"
|
||||||
L99 dta d"JOIN THE ARMY, SEE THE WORLD THEY SAID."
|
L100 dta d"JOIN THE ARMY, SEE THE WORLD THEY SAID."
|
||||||
L100 dta d"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!"
|
L101 dta d"IT WASN'T JUST A JOB IT WAS AN ADVENTURE!"
|
||||||
L101 dta d"I DIDN'T LIKE VIOLENCE ANYWAY!"
|
L102 dta d"I DIDN'T LIKE VIOLENCE ANYWAY!"
|
||||||
L102 dta d"I THOUGHT YOU LIKED ME?"
|
L103 dta d"I THOUGHT YOU LIKED ME?"
|
||||||
L103 dta d"CTO XYEB"
|
L104 dta d"CTO XYEB"
|
||||||
L104 dta d"I THINK THIS GUY'S A LITTLE CRAZY."
|
L105 dta d"I THINK THIS GUY'S A LITTLE CRAZY."
|
||||||
L105 dta d"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE."
|
L106 dta d"SOMEHOW I DON'T FEEL LIKE KILLING ANYMORE."
|
||||||
L106 dta d"HEY! KILLIN' AIN'T COOL."
|
L107 dta d"HEY! KILLIN' AIN'T COOL."
|
||||||
L107 dta d"GEE... THANKS."
|
L108 dta d"GEE... THANKS."
|
||||||
L108 dta d"I'VE FALLEN AND I CAN'T GET UP!"
|
L109 dta d"I'VE FALLEN AND I CAN'T GET UP!"
|
||||||
L109 dta d"911?"
|
L110 dta d"911?"
|
||||||
L110 dta d"OH NO! HERE I BLOW AGAIN!"
|
L111 dta d"OH NO! HERE I BLOW AGAIN!"
|
||||||
L111 dta d"I'LL BE BACK..."
|
L112 dta d"I'LL BE BACK..."
|
||||||
L112 dta d"HEY - I'VE GOT LAWYERS."
|
L113 dta d"HEY - I'VE GOT LAWYERS."
|
||||||
L113 dta d"TIME TO CALL 1-900-SUE-TANK."
|
L114 dta d"TIME TO CALL 1-900-SUE-TANK."
|
||||||
|
L115 dta d"YOU BIG DUMMY!" ;(sanford and son)
|
||||||
LEND
|
LEND
|
||||||
OffensiveTextTableL
|
OffensiveTextTableL
|
||||||
dta <L0,<L1,<L2,<L3,<L4,<L5,<L6,<L7,<L8,<L9,<L10,<L11,<L12,<L13,<L14,<L15,<L16,<L17,<L18,<L19,<L20,<L21,<L22,<L23,<L24,<L25,<L26,<L27,<L28,<L29,<L30,<L31,<L32,<L33,<L34,<L35,<L36,<L37,<L38,<L39,<L40,<L41,<L42,<L43,<L44,<L45,<L46,<L47,<L48,<L49,<L50,<L51,<L52
|
dta <L0,<L1,<L2,<L3,<L4,<L5,<L6,<L7,<L8,<L9,<L10,<L11,<L12,<L13,<L14,<L15,<L16,<L17,<L18,<L19,<L20,<L21,<L22,<L23,<L24,<L25,<L26,<L27,<L28,<L29,<L30,<L31,<L32,<L33,<L34,<L35,<L36,<L37,<L38,<L39,<L40,<L41,<L42,<L43,<L44,<L45,<L46,<L47,<L48,<L49,<L50,<L51,<L52,<L53
|
||||||
dta <L53,<L54,<L55,<L56,<L57,<L58,<L59,<L60,<L61,<L62,<L63,<L64,<L65,<L66,<L67,<L68,<L69,<L70,<L71,<L72,<L73,<L74,<L75,<L76,<L77,<L78,<L79,<L80,<L81,<L82,<L83,<L84,<L85,<L86,<L87,<L88,<L89,<L90,<L91,<L92,<L93,<L94,<L95,<L96,<L97,<L98,<L99,<L100,<L101,<L102,<L103,<L104,<L105,<L106,<L107,<L108,<L109,<L110,<L111,<L112,<L113
|
dta <L54,<L55,<L56,<L57,<L58,<L59,<L60,<L61,<L62,<L63,<L64,<L65,<L66,<L67,<L68,<L69,<L70,<L71,<L72,<L73,<L74,<L75,<L76,<L77,<L78,<L79,<L80,<L81,<L82,<L83,<L84,<L85,<L86,<L87,<L88,<L89,<L90,<L91,<L92,<L93,<L94,<L95,<L96,<L97,<L98,<L99,<L100,<L101,<L102,<L103,<L104,<L105,<L106,<L107,<L108,<L109,<L110,<L111,<L112,<L113,<L114,<L115
|
||||||
dta <LEND
|
dta <LEND
|
||||||
OffensiveTextTableH
|
OffensiveTextTableH
|
||||||
dta >L0,>L1,>L2,>L3,>L4,>L5,>L6,>L7,>L8,>L9,>L10,>L11,>L12,>L13,>L14,>L15,>L16,>L17,>L18,>L19,>L20,>L21,>L22,>L23,>L24,>L25,>L26,>L27,>L28,>L29,>L30,>L31,>L32,>L33,>L34,>L35,>L36,>L37,>L38,>L39,>L40,>L41,>L42,>L43,>L44,>L45,>L46,>L47,>L48,>L49,>L50,>L51,>L52
|
dta >L0,>L1,>L2,>L3,>L4,>L5,>L6,>L7,>L8,>L9,>L10,>L11,>L12,>L13,>L14,>L15,>L16,>L17,>L18,>L19,>L20,>L21,>L22,>L23,>L24,>L25,>L26,>L27,>L28,>L29,>L30,>L31,>L32,>L33,>L34,>L35,>L36,>L37,>L38,>L39,>L40,>L41,>L42,>L43,>L44,>L45,>L46,>L47,>L48,>L49,>L50,>L51,>L52,>L53
|
||||||
dta >L53,>L54,>L55,>L56,>L57,>L58,>L59,>L60,>L61,>L62,>L63,>L64,>L65,>L66,>L67,>L68,>L69,>L70,>L71,>L72,>L73,>L74,>L75,>L76,>L77,>L78,>L79,>L80,>L81,>L82,>L83,>L84,>L85,>L86,>L87,>L88,>L89,>L90,>L91,>L92,>L93,>L94,>L95,>L96,>L97,>L98,>L99,>L100,>L101,>L102,>L103,>L104,>L105,>L106,>L107,>L108,>L109,>L110,>L111,>L112,>L113
|
dta >L54,>L55,>L56,>L57,>L58,>L59,>L60,>L61,>L62,>L63,>L64,>L65,>L66,>L67,>L68,>L69,>L70,>L71,>L72,>L73,>L74,>L75,>L76,>L77,>L78,>L79,>L80,>L81,>L82,>L83,>L84,>L85,>L86,>L87,>L88,>L89,>L90,>L91,>L92,>L93,>L94,>L95,>L96,>L97,>L98,>L99,>L100,>L101,>L102,>L103,>L104,>L105,>L106,>L107,>L108,>L109,>L110,>L111,>L112,>L113,>L114,>L115
|
||||||
dta >LEND
|
dta >LEND
|
||||||
NumberOfOffensiveTexts=54
|
NumberOfOffensiveTexts=54
|
||||||
NumberOfDeffensiveTexts=60
|
NumberOfDeffensiveTexts=62
|
||||||
.endp
|
.endp
|
||||||
hoverFull dta d"MY HOVERCRAFT IS FULL OF EELS!"
|
hoverFull dta d"MY HOVERCRAFT IS FULL OF EELS!"
|
||||||
hoverFullEnd
|
hoverFullEnd
|
||||||
|
|||||||
Binary file not shown.
+5
-1
@@ -67,10 +67,14 @@ GradientAddrL
|
|||||||
.by <dliColorsFore, <dliColorsFore, <dliColorsFore2
|
.by <dliColorsFore, <dliColorsFore, <dliColorsFore2
|
||||||
GradientAddrH
|
GradientAddrH
|
||||||
.by >dliColorsFore, >dliColorsFore, >dliColorsFore2
|
.by >dliColorsFore, >dliColorsFore, >dliColorsFore2
|
||||||
dliColorsFore2
|
dliColorsFore2 ; colors for NTSC
|
||||||
.by $0a ; one mountains color
|
.by $0a ; one mountains color
|
||||||
.by $7e,$7a,$7c,$6a,$6c,$58,$5a,$48,$4a,$38
|
.by $7e,$7a,$7c,$6a,$6c,$58,$5a,$48,$4a,$38
|
||||||
.by $3a,$16,$18,$e6,$e8,$d4,$d6,$b4,$b6,$b6
|
.by $3a,$16,$18,$e6,$e8,$d4,$d6,$b4,$b6,$b6
|
||||||
|
dliColorsFore2PAL ; colors for PAL
|
||||||
|
.by $0a ; one mountains color
|
||||||
|
.by $7e,$7a,$7c,$6a,$6c,$58,$5a,$48,$4a,$38
|
||||||
|
.by $3a,$16,$18,$e6,$e8,$c4,$c6,$a4,$a6,$a6
|
||||||
|
|
||||||
;-----------
|
;-----------
|
||||||
pmtableL ; addressess of the P/M memory for 6 tanks
|
pmtableL ; addressess of the P/M memory for 6 tanks
|
||||||
|
|||||||
+330
-15
@@ -551,16 +551,20 @@ NotHigherByte02
|
|||||||
sec
|
sec
|
||||||
lda xtankstableL,x
|
lda xtankstableL,x
|
||||||
sbc #$0f
|
sbc #$0f
|
||||||
|
; and clear lowest bit to be sure that the X coordinate is even
|
||||||
|
; (this is to have P/M background look nice)
|
||||||
|
; "AND" does not change "Carry" bit.
|
||||||
|
; x correction for P/M
|
||||||
|
; --
|
||||||
|
.IF XCORRECTION_FOR_PM = 1
|
||||||
|
and #$fe
|
||||||
|
.ENDIF
|
||||||
|
; --
|
||||||
sta xtankstableL,x
|
sta xtankstableL,x
|
||||||
bcs NotHigherByte01
|
bcs NotHigherByte01
|
||||||
dec xtankstableH,x
|
dec xtankstableH,x
|
||||||
NotHigherByte01
|
NotHigherByte01
|
||||||
|
|
||||||
; and clear lowest bit to be sure that the X coordinate is even
|
|
||||||
; (this is to have P/M background look nice)
|
|
||||||
lda xtankstableL,x
|
|
||||||
and #$fe
|
|
||||||
sta xtankstableL,x
|
|
||||||
inx
|
inx
|
||||||
Cpx NumberOfPlayers
|
Cpx NumberOfPlayers
|
||||||
bne StillRandomize02
|
bne StillRandomize02
|
||||||
@@ -1208,7 +1212,10 @@ DoNotDrawParachute
|
|||||||
; If it is odd then it must be corrected because otherwise
|
; If it is odd then it must be corrected because otherwise
|
||||||
; P/M graphics background would not look OK
|
; P/M graphics background would not look OK
|
||||||
; ldx TankNr
|
; ldx TankNr
|
||||||
lda XtanksTableL,x
|
; x correction for P/M
|
||||||
|
; --
|
||||||
|
.IF XCORRECTION_FOR_PM = 1
|
||||||
|
lda XtanksTableL,x
|
||||||
and #$01
|
and #$01
|
||||||
beq EndOfFall ; if it is even then it is the end
|
beq EndOfFall ; if it is even then it is the end
|
||||||
; and if not, we push it one pixel the way it was falling before
|
; and if not, we push it one pixel the way it was falling before
|
||||||
@@ -1222,6 +1229,8 @@ ForceFallLeft
|
|||||||
sta UnderTank1
|
sta UnderTank1
|
||||||
sty UnderTank2
|
sty UnderTank2
|
||||||
jmp TankFallsX
|
jmp TankFallsX
|
||||||
|
.ENDIF
|
||||||
|
; --
|
||||||
EndOfFall
|
EndOfFall
|
||||||
mva #1 Erase
|
mva #1 Erase
|
||||||
; ldx TankNr
|
; ldx TankNr
|
||||||
@@ -2033,6 +2042,311 @@ EndPut4x4
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------------
|
||||||
|
.proc DisplayOffensiveTextNr ;
|
||||||
|
ldx TextNumberOff
|
||||||
|
lda talk.OffensiveTextTableL,x
|
||||||
|
sta LineAddress4x4
|
||||||
|
lda talk.OffensiveTextTableH,x
|
||||||
|
sta LineAddress4x4+1
|
||||||
|
inx ; the next text
|
||||||
|
lda talk.OffensiveTextTableH,x
|
||||||
|
sta temp+1
|
||||||
|
lda talk.OffensiveTextTableL,x
|
||||||
|
sta temp ; opty possible
|
||||||
|
; substract address of the next text from previous to get text length
|
||||||
|
sbw temp LineAddress4x4 temp2
|
||||||
|
mva temp2 fx
|
||||||
|
|
||||||
|
;jsr Display4x4AboveTank
|
||||||
|
;rts
|
||||||
|
; POZOR !!!
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------------
|
||||||
|
.proc Display4x4AboveTank ;
|
||||||
|
; Displays texts using PutChar4x4 above tank and mountains.
|
||||||
|
; Pretty cool, eh!
|
||||||
|
;parameters are:
|
||||||
|
;Y - number of tank above which text is displayed
|
||||||
|
;fx - length of text
|
||||||
|
;LineAddress4x4 - address of the text
|
||||||
|
|
||||||
|
;lets calculate position of the text first!
|
||||||
|
;that's easy because we have number of tank
|
||||||
|
;and xtankstableL and H keep X position of a given tank
|
||||||
|
|
||||||
|
lda xtankstableL,y
|
||||||
|
sta temp
|
||||||
|
lda xtankstableH,y
|
||||||
|
sta temp+1
|
||||||
|
;now we should substract length of the text-1
|
||||||
|
;temp2 = (fx-1)*2
|
||||||
|
ldy fx
|
||||||
|
dey
|
||||||
|
tya
|
||||||
|
asl
|
||||||
|
sta temp2
|
||||||
|
mva #0 temp2+1
|
||||||
|
;now we have HALF length in pixels
|
||||||
|
;stored in temp2
|
||||||
|
|
||||||
|
;here we assume max length of text
|
||||||
|
;to display is 127 chars, but later it turns out it must be max 63!
|
||||||
|
|
||||||
|
sbw temp temp2 ; here begin of the text is in TEMP !!!!
|
||||||
|
;now we should check overflows
|
||||||
|
;lda temp+1 ; opty
|
||||||
|
bpl DOTNnotLessThanZero
|
||||||
|
;less than zero, so should be zero
|
||||||
|
mwa #0 temp
|
||||||
|
beq DOTNnoOverflow
|
||||||
|
|
||||||
|
DOTNnotLessThanZero
|
||||||
|
;so check if end larger than screenwidth
|
||||||
|
|
||||||
|
|
||||||
|
lda fx
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
;length in pixels -
|
||||||
|
;text length max 63 chars !!!!!!!!
|
||||||
|
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc temp
|
||||||
|
sta temp2
|
||||||
|
lda #0
|
||||||
|
adc temp+1
|
||||||
|
sta temp2+1
|
||||||
|
;now in temp2 is end of the text in pixels
|
||||||
|
;so check if not greater than screenwitdth
|
||||||
|
cpw temp2 #screenwidth
|
||||||
|
bcc DOTNnoOverflow
|
||||||
|
|
||||||
|
;if end is greater than screenwidth
|
||||||
|
;then screenwidth - length is fine
|
||||||
|
lda fx
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
sta temp
|
||||||
|
mva #0 temp+1
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda #<(screenwidth-1)
|
||||||
|
sbc temp
|
||||||
|
sta temp
|
||||||
|
lda #>(screenwidth-1)
|
||||||
|
sbc temp+1
|
||||||
|
sta temp+1
|
||||||
|
DOTNnoOverflow
|
||||||
|
;here in temp we have really good x position of text
|
||||||
|
|
||||||
|
mwa temp LineXdraw
|
||||||
|
|
||||||
|
;now let's get y position
|
||||||
|
;we will try to put text as low as possible
|
||||||
|
;just above mountains (so mountaintable will be checked)
|
||||||
|
lda fx
|
||||||
|
asl
|
||||||
|
asl
|
||||||
|
tay
|
||||||
|
;in temp there still is X position of text
|
||||||
|
;if we add temp and Y we will get end of the text
|
||||||
|
;so, lets go through mountaintable and look for
|
||||||
|
;the lowest value within
|
||||||
|
;Mountaitable+temp and Mountaitable+temp+Y
|
||||||
|
|
||||||
|
adw temp #MountainTable
|
||||||
|
|
||||||
|
mva #screenheight temp2 ;initialisation of the lowest value
|
||||||
|
|
||||||
|
DOTLowestMountainValueLoop
|
||||||
|
lda (temp),y
|
||||||
|
cmp temp2
|
||||||
|
bcs DOTOldLowestValue ;old lowest value
|
||||||
|
;new lowest value
|
||||||
|
sta temp2
|
||||||
|
DOTOldLowestValue
|
||||||
|
dey
|
||||||
|
cpy #$ff
|
||||||
|
bne DOTLowestMountainValueLoop
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda temp2
|
||||||
|
sbc #(4+9) ;9 pixels above ground (and tanks...)
|
||||||
|
sta LineYdraw
|
||||||
|
|
||||||
|
jmp TypeLine4x4.noLengthNoColor ; rts
|
||||||
|
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------------
|
||||||
|
.proc DisplayTankNameAbove ;
|
||||||
|
lda tankNr
|
||||||
|
:3 asl ; *8
|
||||||
|
clc
|
||||||
|
adc #<TanksNames
|
||||||
|
sta temp ; TextAddress
|
||||||
|
lda #0
|
||||||
|
adc #>Tanksnames
|
||||||
|
sta temp+1 ; TextAddress+1
|
||||||
|
mwa temp LineAddress4x4
|
||||||
|
|
||||||
|
;find length of the tank's name
|
||||||
|
ldy #7
|
||||||
|
@
|
||||||
|
lda (temp),y
|
||||||
|
bne end_found
|
||||||
|
dey
|
||||||
|
bne @-
|
||||||
|
|
||||||
|
end_found
|
||||||
|
iny
|
||||||
|
sty fx
|
||||||
|
ldy tankNr
|
||||||
|
jsr Display4x4AboveTank
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;-------------------------------
|
||||||
|
.proc TypeLine4x4 ;
|
||||||
|
;-------------------------------
|
||||||
|
;this routine prints line of length `fx`
|
||||||
|
;address in LineAddress4x4
|
||||||
|
;starting from LineXdraw, LineYdraw
|
||||||
|
|
||||||
|
lda #14 ; default length of 4x4 texts
|
||||||
|
sta fx
|
||||||
|
|
||||||
|
variableLength
|
||||||
|
lda #$ff ; $ff - visible characters, $00 - clearing
|
||||||
|
|
||||||
|
staplot4x4color
|
||||||
|
sta plot4x4color
|
||||||
|
noLengthNoColor
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
sty LineCharNr
|
||||||
|
|
||||||
|
TypeLine4x4Loop
|
||||||
|
ldy LineCharNr
|
||||||
|
|
||||||
|
lda (LineAddress4x4),y
|
||||||
|
and #$3f ;always CAPITAL letters
|
||||||
|
sta CharCode4x4
|
||||||
|
mwa LineXdraw dx
|
||||||
|
mva LineYdraw dy
|
||||||
|
mva #0 dy+1 ; dy is 2 bytes value
|
||||||
|
jsr PutChar4x4 ;type empty pixels as well!
|
||||||
|
adw LineXdraw #4
|
||||||
|
inc:lda LineCharNr
|
||||||
|
cmp fx
|
||||||
|
bne TypeLine4x4Loop
|
||||||
|
|
||||||
|
EndOfTypeLine4x4
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
.proc AreYouSure
|
||||||
|
;using 4x4 font
|
||||||
|
|
||||||
|
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
||||||
|
|
||||||
|
;top frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_top
|
||||||
|
adb ResultY #4 ;next line
|
||||||
|
|
||||||
|
;sure?
|
||||||
|
mwa #areYouSureText LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
;bottom frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_bottom
|
||||||
|
|
||||||
|
|
||||||
|
jsr GetKey
|
||||||
|
cmp #@kbcode._Y ; $2b ; "Y"
|
||||||
|
bne @+
|
||||||
|
mva #$80 escFlag
|
||||||
|
bne skip01
|
||||||
|
@ mva #0 escFlag
|
||||||
|
skip01
|
||||||
|
jsr WaitForKeyRelease
|
||||||
|
|
||||||
|
;clean
|
||||||
|
mva #3 di
|
||||||
|
mva #4 ResultY
|
||||||
|
@
|
||||||
|
mva #$ff plot4x4color
|
||||||
|
mwa #lineClear LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
dec di
|
||||||
|
bne @-
|
||||||
|
|
||||||
|
quit_areyousure
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
.proc _sep_opty
|
||||||
|
mwa #((ScreenWidth/2)-(8*4)) LineXdraw ; centering
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TypeLine4x4
|
||||||
|
adb ResultY #4 ;next line
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------
|
||||||
|
.proc DisplaySeppuku
|
||||||
|
;using 4x4 font
|
||||||
|
|
||||||
|
|
||||||
|
mva #20 fs ; temp, how many times blink the billboard
|
||||||
|
seppuku_loop
|
||||||
|
lda CONSOL ; turbo mode
|
||||||
|
and #%00000001 ; START KEY
|
||||||
|
sne:mva #1 fs ; finish it
|
||||||
|
|
||||||
|
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
||||||
|
|
||||||
|
;top frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_top
|
||||||
|
adb ResultY #4 ;next line
|
||||||
|
|
||||||
|
;seppuku
|
||||||
|
mwa #seppukuText LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
|
||||||
|
;bottom frame
|
||||||
|
mva ResultY LineYdraw
|
||||||
|
jsr TL4x4_bottom ; just go
|
||||||
|
|
||||||
|
;clean seppuku
|
||||||
|
|
||||||
|
mva #3 di
|
||||||
|
;mva #4 ResultY
|
||||||
|
lda #4
|
||||||
|
sta ResultY
|
||||||
|
loplop ;@
|
||||||
|
mwa #lineClear LineAddress4x4
|
||||||
|
jsr _sep_opty
|
||||||
|
|
||||||
|
dec di
|
||||||
|
bne loplop ;@-
|
||||||
|
|
||||||
|
dec fs
|
||||||
|
jne seppuku_loop
|
||||||
|
|
||||||
|
quit_seppuku
|
||||||
|
rts
|
||||||
|
|
||||||
|
.endp
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
.proc SetMainScreen
|
.proc SetMainScreen
|
||||||
; mva #0 dmactls
|
; mva #0 dmactls
|
||||||
SetDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
|
SetDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
|
||||||
@@ -2198,19 +2512,20 @@ ybarrel
|
|||||||
.proc PMoutofScreen
|
.proc PMoutofScreen
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
lda #$00 ; let all P/M disappear
|
lda #$00 ; let all P/M disappear
|
||||||
:8 sta hposp0+#
|
ldy #7
|
||||||
|
@ sta hposp0,y
|
||||||
|
dey
|
||||||
|
bpl @-
|
||||||
|
;:8 sta hposp0+# ; optimized... but Y!
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.proc ColorsOfSprites
|
.proc ColorsOfSprites
|
||||||
lda TankColoursTable ; colours of sprites under tanks
|
ldy #3
|
||||||
sta PCOLR0
|
@ lda TankColoursTable,y ; colours of sprites under tanks
|
||||||
lda TankColoursTable+1
|
sta PCOLR0,y
|
||||||
sta PCOLR1
|
dey
|
||||||
lda TankColoursTable+2
|
bpl @-
|
||||||
sta PCOLR2
|
|
||||||
lda TankColoursTable+3
|
|
||||||
sta PCOLR3
|
|
||||||
LDA TankColoursTable+4
|
LDA TankColoursTable+4
|
||||||
STA COLOR3 ; joined missiles (5th tank)
|
STA COLOR3 ; joined missiles (5th tank)
|
||||||
rts
|
rts
|
||||||
|
|||||||
+267
@@ -0,0 +1,267 @@
|
|||||||
|
; @com.wudsn.ide.asm.mainsourcefile=scorch.asm
|
||||||
|
|
||||||
|
.IF *>0 ;this is a trick that prevents compiling this file alone
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptGraph
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
ldy dliCounter
|
||||||
|
lda dliColorsBack,y
|
||||||
|
.IF TARGET = 800
|
||||||
|
nop ; necessary on 800 because DLIs take less time, jitter visible without it
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
.ENDIF
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
sta COLPF1
|
||||||
|
lda GradientNr
|
||||||
|
bne GoGradient
|
||||||
|
ldy #$ff ; one mauntain color
|
||||||
|
GoGradient
|
||||||
|
iny
|
||||||
|
lda (GradientColors),y ; mountains colors array
|
||||||
|
sta COLPF2
|
||||||
|
inc dliCounter
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptOptions
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
lda #0 ; background color
|
||||||
|
sta COLPF1
|
||||||
|
ldy GradientNr
|
||||||
|
beq @+
|
||||||
|
ldy #1
|
||||||
|
@ lda (GradientColors),y ; mountains colors array
|
||||||
|
sta COLPF2
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptGameOver
|
||||||
|
pha
|
||||||
|
phy
|
||||||
|
lda dliCounter
|
||||||
|
bne EndofPMG
|
||||||
|
lda #%00100001 ; playfield after P/M - prior=1
|
||||||
|
;STA WSYNC
|
||||||
|
sta PRIOR
|
||||||
|
bne EndOfDLI_GO
|
||||||
|
EndofPMG
|
||||||
|
cmp #1
|
||||||
|
bne ColoredLines
|
||||||
|
lda #%00100100 ; playfield before P/M
|
||||||
|
;STA WSYNC
|
||||||
|
sta PRIOR
|
||||||
|
bne EndOfDLI_GO
|
||||||
|
ColoredLines
|
||||||
|
cmp #9
|
||||||
|
beq CreditsScroll
|
||||||
|
tay
|
||||||
|
lda GameOverColoursTable-3,y ; -2 because this is DLI nr 2 and -1 (labels line)
|
||||||
|
ldy #$0a ; text colour (brightnes)
|
||||||
|
;STA WSYNC
|
||||||
|
sta COLPF2
|
||||||
|
sty COLPF1
|
||||||
|
bne EndOfDLI_GO
|
||||||
|
CreditsScroll
|
||||||
|
lda #$00
|
||||||
|
sta COLPF2
|
||||||
|
EndOfDLI_GO
|
||||||
|
inc dliCounter
|
||||||
|
ply
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc DLIinterruptText
|
||||||
|
pha
|
||||||
|
lda dliCounter
|
||||||
|
bne MoreBarsColorChange
|
||||||
|
lda #TextBackgroundColor
|
||||||
|
;sta WSYNC
|
||||||
|
sta COLPF2
|
||||||
|
mva #TextForegroundColor COLPF3
|
||||||
|
bne EndOfDLI_Text
|
||||||
|
MoreBarsColorChange
|
||||||
|
and #%00000001
|
||||||
|
rol
|
||||||
|
sta COLPF2
|
||||||
|
EndOfDLI_Text
|
||||||
|
inc dliCounter
|
||||||
|
pla
|
||||||
|
DLIinterruptNone
|
||||||
|
rti
|
||||||
|
|
||||||
|
.endp
|
||||||
|
;--------------------------------------------------
|
||||||
|
.proc VBLinterrupt
|
||||||
|
mva #0 dliCounter
|
||||||
|
mva #$02 DliColorBack
|
||||||
|
|
||||||
|
lda PAL
|
||||||
|
and #%00001110
|
||||||
|
beq itsPAL
|
||||||
|
;it is NTSC here
|
||||||
|
dec NTSCcounter
|
||||||
|
bne itsPAL
|
||||||
|
mva #6 NTSCcounter
|
||||||
|
bne SkippedIfNTSC ; 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
|
||||||
|
|
||||||
|
SkippedIfNTSC
|
||||||
|
|
||||||
|
bit RMT_blocked
|
||||||
|
bmi SkipRMTVBL
|
||||||
|
; ------- RMT -------
|
||||||
|
lda sfx_effect
|
||||||
|
bmi lab2
|
||||||
|
asl @ ; * 2
|
||||||
|
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)
|
||||||
|
lda #0 ;A = 0 note (0..60)
|
||||||
|
bit noSfx
|
||||||
|
smi:jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!)
|
||||||
|
|
||||||
|
lda #$ff
|
||||||
|
sta sfx_effect ;reinit value
|
||||||
|
lab2
|
||||||
|
jsr RASTERMUSICTRACKER+3 ;1 play
|
||||||
|
; ------- RMT -------
|
||||||
|
SkipRMTVBL
|
||||||
|
bit ScrollFlag
|
||||||
|
bpl EndOfCreditsVBI
|
||||||
|
CreditsVBI
|
||||||
|
inc CreditsVScrol
|
||||||
|
lda CreditsVScrol
|
||||||
|
cmp #32 ;not too fast
|
||||||
|
beq nextlinedisplay
|
||||||
|
:2 lsr ;not too fast
|
||||||
|
sta VSCROL
|
||||||
|
jmp EndOfCreditsVBI
|
||||||
|
nextlinedisplay
|
||||||
|
lda #0
|
||||||
|
sta CreditsVScrol
|
||||||
|
sta VSCROL
|
||||||
|
clc
|
||||||
|
lda DLCreditsAddr
|
||||||
|
adc #40
|
||||||
|
sta DLCreditsAddr
|
||||||
|
bcc @+
|
||||||
|
inc DLCreditsAddr+1
|
||||||
|
@
|
||||||
|
cmp #<CreditsLastLine
|
||||||
|
bne EndOfCreditsVBI
|
||||||
|
lda DLCreditsAddr+1
|
||||||
|
cmp #>CreditsLastLine
|
||||||
|
bne EndOfCreditsVBI
|
||||||
|
; adw DLCreditsAddr #40
|
||||||
|
; cpw DLCreditsAddr #CreditsLastLine
|
||||||
|
; bne EndOfCreditsVBI
|
||||||
|
mwa #Credits DLCreditsAddr
|
||||||
|
EndOfCreditsVBI
|
||||||
|
.IF TARGET = 5200
|
||||||
|
lda SkStatSimulator
|
||||||
|
bmi @+
|
||||||
|
inc SkStatSimulator
|
||||||
|
@
|
||||||
|
lda JoystickNumber ; select port
|
||||||
|
ora #%00000100 ; Speaker off, Pots enabled
|
||||||
|
sta CONSOL5200
|
||||||
|
|
||||||
|
center = 114 ;Read analog stick and make it look like a digital stick
|
||||||
|
threshold = 60
|
||||||
|
|
||||||
|
lda JoystickNumber
|
||||||
|
asl
|
||||||
|
tax
|
||||||
|
lda paddl0,x ;Read POT0 value (horizontal position)
|
||||||
|
cmp #center+threshold ;Compare with right threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
cmp #center-threshold ;Compare with left threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
|
||||||
|
lda paddl1,x ;Read POT1 value (vertical position)
|
||||||
|
cmp #center+threshold ;Compare with down threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
cmp #center-threshold ;Compare with down threshold
|
||||||
|
rol stick0 ;Feed carry into digital stick value
|
||||||
|
|
||||||
|
lda stick0 ;0 indicates a press so the right/down values need to be inverted
|
||||||
|
eor #2+8
|
||||||
|
and #$0f
|
||||||
|
sta stick0
|
||||||
|
|
||||||
|
ldx JoystickNumber
|
||||||
|
; check shift key (5200 second fire button)
|
||||||
|
lda SKSTAT
|
||||||
|
:3 lsr ; third bit
|
||||||
|
and trig0,x ; and first button
|
||||||
|
;lda trig0,x
|
||||||
|
sta strig0 ;Move hardware to shadow
|
||||||
|
|
||||||
|
mva chbas chbase
|
||||||
|
|
||||||
|
lda skstat ;Reset consol key shadow is no key is pressed anymore
|
||||||
|
and #4
|
||||||
|
beq @+
|
||||||
|
mva #consol_reset consol
|
||||||
|
mva #@kbcode._none kbcode
|
||||||
|
@
|
||||||
|
|
||||||
|
pla
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.ELSE
|
||||||
|
; support for joysticks :)
|
||||||
|
ldx JoystickNumber
|
||||||
|
lda STICK0,x
|
||||||
|
sta STICK0
|
||||||
|
lda STRIG0,x
|
||||||
|
sta STRIG0
|
||||||
|
jmp XITVBV
|
||||||
|
.ENDIF
|
||||||
|
.endp
|
||||||
|
.IF TARGET = 5200
|
||||||
|
.proc kb_continue
|
||||||
|
sta kbcode ;Store key code in shadow.
|
||||||
|
mva #0 SkStatSimulator
|
||||||
|
exit pla
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
rti
|
||||||
|
.endp
|
||||||
|
.ENDIF
|
||||||
|
|
||||||
|
;--------------------------------------------------
|
||||||
|
.macro SetDLI
|
||||||
|
; SetDLI #WORD
|
||||||
|
; Initialises Display List Interrupts
|
||||||
|
LDY # <:1
|
||||||
|
LDX # >:1
|
||||||
|
jsr _SetDLIproc
|
||||||
|
.endm
|
||||||
|
.proc _SetDLIproc
|
||||||
|
LDA #$C0
|
||||||
|
STY VDSLST
|
||||||
|
STX VDSLST+1
|
||||||
|
STA NMIEN
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
|
||||||
|
.ENDIF
|
||||||
@@ -51,6 +51,28 @@
|
|||||||
STX $0201
|
STX $0201
|
||||||
STA NMIEN
|
STA NMIEN
|
||||||
.ENDM
|
.ENDM
|
||||||
|
;-------------------------------------
|
||||||
|
.MACRO VDL
|
||||||
|
; VDL #WORD
|
||||||
|
; Changes Display List addres
|
||||||
|
; and sets width of the screen
|
||||||
|
; vdl dl,$01 - narrow screen (32 bytes)
|
||||||
|
; vdl dl,$02 - normal screen (40 bytes)
|
||||||
|
; vdl dl,$03 - wide screen (48 bytes)
|
||||||
|
; (works only with system interrupts ON)
|
||||||
|
|
||||||
|
.if %0=2
|
||||||
|
lda dmactls
|
||||||
|
and #$fc
|
||||||
|
ora #%2
|
||||||
|
sta dmactls
|
||||||
|
.endif
|
||||||
|
|
||||||
|
LDA # <%1
|
||||||
|
STA DLPTRS
|
||||||
|
LDA # >%1
|
||||||
|
STA DLPTRS+1
|
||||||
|
.ENDM
|
||||||
;-------------------------------------
|
;-------------------------------------
|
||||||
.MACRO halt
|
.MACRO halt
|
||||||
?stop
|
?stop
|
||||||
|
|||||||
+35
-321
@@ -3,19 +3,22 @@
|
|||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
;by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski
|
;by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski
|
||||||
;Warsaw 2000, 2001, 2002, 2003, 2009, 2012, 2013
|
;Warsaw 2000, 2001, 2002, 2003, 2009, 2012, 2013
|
||||||
;Miami & Warsaw 2022
|
;Miami & Warsaw 2022, 2023
|
||||||
|
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
.def TARGET = 800 ;5200 ; or 800
|
.def TARGET = 800 ;5200 ; or 800
|
||||||
;atari800 -5200 -cart ${outputFilePath} -cart-type 4
|
;atari800 -5200 -cart ${outputFilePath} -cart-type 4
|
||||||
;atari800 -run ${outputFilePath}
|
;atari800 -run ${outputFilePath}
|
||||||
|
;---------------------------------------------------
|
||||||
|
.def XCORRECTION_FOR_PM = 0
|
||||||
|
; if 1 - active x position of tanks correction fo PMG
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
|
|
||||||
;OPT r+ ; saves 12 bytes :O
|
;OPT r+ ; saves 12 bytes :O
|
||||||
|
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
.macro build
|
.macro build
|
||||||
dta d"1.26" ; number of this build (4 bytes)
|
dta d"1.27" ; number of this build (4 bytes)
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro RMTSong
|
.macro RMTSong
|
||||||
@@ -27,12 +30,14 @@
|
|||||||
icl 'definitions.asm'
|
icl 'definitions.asm'
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
|
|
||||||
FirstZpageVariable = $59
|
FirstZpageVariable = $57
|
||||||
.zpvar DliColorBack .byte = FirstZpageVariable
|
.zpvar DliColorBack .byte = FirstZpageVariable
|
||||||
.zpvar GradientNr .byte
|
.zpvar GradientNr .byte
|
||||||
.zpvar GradientColors .word
|
.zpvar GradientColors .word
|
||||||
.zpvar WindChangeInRound .byte ; wind change after each turn (not round only) flag - (0 - round only, >0 - each turn)
|
.zpvar WindChangeInRound .byte ; wind change after each turn (not round only) flag - (0 - round only, >0 - each turn)
|
||||||
.zpvar JoystickNumber .byte
|
.zpvar JoystickNumber .byte
|
||||||
|
.zpvar LazyFlag .byte ; 7 bit - run Lazy Darwin, 6 bit - run Lazy Boy or Darwin (!) after inventory, 0 - nothing
|
||||||
|
.zpvar SpyHardFlag .byte ; >$7f - run SpyHard after inventory
|
||||||
.zpvar Vdebug .byte ; "visual debug" flag ($00 - off, $ff - on)
|
.zpvar Vdebug .byte ; "visual debug" flag ($00 - off, $ff - on)
|
||||||
.zpvar xdraw .word ;= $64 ;variable X for plot
|
.zpvar xdraw .word ;= $64 ;variable X for plot
|
||||||
.zpvar ydraw .word ;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen)
|
.zpvar ydraw .word ;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen)
|
||||||
@@ -182,7 +187,7 @@ FirstZpageVariable = $59
|
|||||||
_atari = $fd ; not used in 5200
|
_atari = $fd ; not used in 5200
|
||||||
_none = $0f
|
_none = $0f
|
||||||
|
|
||||||
.ende */
|
.ende
|
||||||
.ELSE
|
.ELSE
|
||||||
icl 'lib/ATARISYS.ASM'
|
icl 'lib/ATARISYS.ASM'
|
||||||
icl 'lib/MACRO.ASM'
|
icl 'lib/MACRO.ASM'
|
||||||
@@ -310,10 +315,13 @@ no5200splash
|
|||||||
bpl @-
|
bpl @-
|
||||||
|
|
||||||
; initialize one Variable in zero page :)
|
; initialize one Variable in zero page :)
|
||||||
lda #<dliColorsFore
|
;lda #<dliColorsFore
|
||||||
sta GradientColors
|
;sta GradientColors
|
||||||
lda #>dliColorsFore
|
;lda #>dliColorsFore
|
||||||
sta GradientColors+1
|
;sta GradientColors+1
|
||||||
|
; set gradient to the full LGBTIQQAAPP+ flag on start
|
||||||
|
mva #1 GradientNr
|
||||||
|
jsr SelectNextGradient
|
||||||
|
|
||||||
; generate linetables
|
; generate linetables
|
||||||
mwa #display temp
|
mwa #display temp
|
||||||
@@ -347,12 +355,15 @@ no5200splash
|
|||||||
mva #$10 MODUL-6+$a69 ; $12 > $10
|
mva #$10 MODUL-6+$a69 ; $12 > $10
|
||||||
mva #$04 MODUL-6+$bf8 ; $05 > $04
|
mva #$04 MODUL-6+$bf8 ; $05 > $04
|
||||||
mva #$08 MODUL-6+$e3d ; $0a > $08
|
mva #$08 MODUL-6+$e3d ; $0a > $08
|
||||||
; and mountains colors
|
|
||||||
mva #$c4 dliColorsFore2+16
|
; and mountains colors table address
|
||||||
mva #$c6 dliColorsFore2+17
|
mva #<dliColorsFore2PAL GradientAddrL+2
|
||||||
mva #$a4 dliColorsFore2+18
|
mva #>dliColorsFore2PAL GradientAddrH+2
|
||||||
mva #$a6 dliColorsFore2+19
|
; mva #$c4 dliColorsFore2+16
|
||||||
sta dliColorsFore2+20
|
; mva #$c6 dliColorsFore2+17
|
||||||
|
; mva #$a4 dliColorsFore2+18
|
||||||
|
; mva #$a6 dliColorsFore2+19
|
||||||
|
; sta dliColorsFore2+20
|
||||||
NoRMT_PALchange
|
NoRMT_PALchange
|
||||||
.ELSE
|
.ELSE
|
||||||
mva #$7f SkStatSimulator
|
mva #$7f SkStatSimulator
|
||||||
@@ -408,7 +419,6 @@ MainGameLoop
|
|||||||
jsr SetStandardBarrels
|
jsr SetStandardBarrels
|
||||||
|
|
||||||
jsr CallPurchaseForEveryTank
|
jsr CallPurchaseForEveryTank
|
||||||
mva #0 SpyHardFlag
|
|
||||||
jsr MakeDarkScreen
|
jsr MakeDarkScreen
|
||||||
bit escFlag
|
bit escFlag
|
||||||
bmi START
|
bmi START
|
||||||
@@ -1255,251 +1265,6 @@ MakeTanksVisible
|
|||||||
bpl @-
|
bpl @-
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptGraph
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
ldy dliCounter
|
|
||||||
lda dliColorsBack,y
|
|
||||||
.IF TARGET = 800
|
|
||||||
nop ; necessary on 800 because DLIs take less time, jitter visible without it
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
.ENDIF
|
|
||||||
nop
|
|
||||||
nop
|
|
||||||
sta COLPF1
|
|
||||||
lda GradientNr
|
|
||||||
bne GoGradient
|
|
||||||
ldy #$ff ; one mauntain color
|
|
||||||
GoGradient
|
|
||||||
iny
|
|
||||||
lda (GradientColors),y ; mountains colors array
|
|
||||||
sta COLPF2
|
|
||||||
inc dliCounter
|
|
||||||
ply
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptOptions
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
lda #0 ; background color
|
|
||||||
sta COLPF1
|
|
||||||
ldy GradientNr
|
|
||||||
beq @+
|
|
||||||
ldy #1
|
|
||||||
@ lda (GradientColors),y ; mountains colors array
|
|
||||||
sta COLPF2
|
|
||||||
ply
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptGameOver
|
|
||||||
pha
|
|
||||||
phy
|
|
||||||
lda dliCounter
|
|
||||||
bne EndofPMG
|
|
||||||
lda #%00100001 ; playfield after P/M - prior=1
|
|
||||||
;STA WSYNC
|
|
||||||
sta PRIOR
|
|
||||||
bne EndOfDLI_GO
|
|
||||||
EndofPMG
|
|
||||||
cmp #1
|
|
||||||
bne ColoredLines
|
|
||||||
lda #%00100100 ; playfield before P/M
|
|
||||||
;STA WSYNC
|
|
||||||
sta PRIOR
|
|
||||||
bne EndOfDLI_GO
|
|
||||||
ColoredLines
|
|
||||||
cmp #9
|
|
||||||
beq CreditsScroll
|
|
||||||
tay
|
|
||||||
lda GameOverColoursTable-3,y ; -2 because this is DLI nr 2 and -1 (labels line)
|
|
||||||
ldy #$0a ; text colour (brightnes)
|
|
||||||
;STA WSYNC
|
|
||||||
sta COLPF2
|
|
||||||
sty COLPF1
|
|
||||||
bne EndOfDLI_GO
|
|
||||||
CreditsScroll
|
|
||||||
lda #$00
|
|
||||||
sta COLPF2
|
|
||||||
EndOfDLI_GO
|
|
||||||
inc dliCounter
|
|
||||||
ply
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc DLIinterruptText
|
|
||||||
pha
|
|
||||||
lda dliCounter
|
|
||||||
bne MoreBarsColorChange
|
|
||||||
lda #TextBackgroundColor
|
|
||||||
;sta WSYNC
|
|
||||||
sta COLPF2
|
|
||||||
mva #TextForegroundColor COLPF3
|
|
||||||
bne EndOfDLI_Text
|
|
||||||
MoreBarsColorChange
|
|
||||||
and #%00000001
|
|
||||||
rol
|
|
||||||
sta COLPF2
|
|
||||||
EndOfDLI_Text
|
|
||||||
inc dliCounter
|
|
||||||
pla
|
|
||||||
DLIinterruptNone
|
|
||||||
rti
|
|
||||||
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
.proc VBLinterrupt
|
|
||||||
mva #0 dliCounter
|
|
||||||
mva #$02 DliColorBack
|
|
||||||
|
|
||||||
lda PAL
|
|
||||||
and #%00001110
|
|
||||||
beq itsPAL
|
|
||||||
;it is NTSC here
|
|
||||||
dec NTSCcounter
|
|
||||||
bne itsPAL
|
|
||||||
mva #6 NTSCcounter
|
|
||||||
bne SkippedIfNTSC ; 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
|
|
||||||
|
|
||||||
SkippedIfNTSC
|
|
||||||
|
|
||||||
bit RMT_blocked
|
|
||||||
bmi SkipRMTVBL
|
|
||||||
; ------- RMT -------
|
|
||||||
lda sfx_effect
|
|
||||||
bmi lab2
|
|
||||||
asl @ ; * 2
|
|
||||||
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)
|
|
||||||
lda #0 ;A = 0 note (0..60)
|
|
||||||
bit noSfx
|
|
||||||
smi:jsr RASTERMUSICTRACKER+15 ;RMT_SFX start tone (It works only if FEAT_SFX is enabled !!!)
|
|
||||||
|
|
||||||
lda #$ff
|
|
||||||
sta sfx_effect ;reinit value
|
|
||||||
lab2
|
|
||||||
jsr RASTERMUSICTRACKER+3 ;1 play
|
|
||||||
; ------- RMT -------
|
|
||||||
SkipRMTVBL
|
|
||||||
bit ScrollFlag
|
|
||||||
bpl EndOfCreditsVBI
|
|
||||||
CreditsVBI
|
|
||||||
inc CreditsVScrol
|
|
||||||
lda CreditsVScrol
|
|
||||||
cmp #32 ;not too fast
|
|
||||||
beq nextlinedisplay
|
|
||||||
:2 lsr ;not too fast
|
|
||||||
sta VSCROL
|
|
||||||
jmp EndOfCreditsVBI
|
|
||||||
nextlinedisplay
|
|
||||||
lda #0
|
|
||||||
sta CreditsVScrol
|
|
||||||
sta VSCROL
|
|
||||||
clc
|
|
||||||
lda DLCreditsAddr
|
|
||||||
adc #40
|
|
||||||
sta DLCreditsAddr
|
|
||||||
bcc @+
|
|
||||||
inc DLCreditsAddr+1
|
|
||||||
@
|
|
||||||
cmp #<CreditsLastLine
|
|
||||||
bne EndOfCreditsVBI
|
|
||||||
lda DLCreditsAddr+1
|
|
||||||
cmp #>CreditsLastLine
|
|
||||||
bne EndOfCreditsVBI
|
|
||||||
; adw DLCreditsAddr #40
|
|
||||||
; cpw DLCreditsAddr #CreditsLastLine
|
|
||||||
; bne EndOfCreditsVBI
|
|
||||||
mwa #Credits DLCreditsAddr
|
|
||||||
EndOfCreditsVBI
|
|
||||||
.IF TARGET = 5200
|
|
||||||
lda SkStatSimulator
|
|
||||||
bmi @+
|
|
||||||
inc SkStatSimulator
|
|
||||||
@
|
|
||||||
lda JoystickNumber ; select port
|
|
||||||
ora #%00000100 ; Speaker off, Pots enabled
|
|
||||||
sta CONSOL5200
|
|
||||||
|
|
||||||
center = 114 ;Read analog stick and make it look like a digital stick
|
|
||||||
threshold = 60
|
|
||||||
|
|
||||||
lda JoystickNumber
|
|
||||||
asl
|
|
||||||
tax
|
|
||||||
lda paddl0,x ;Read POT0 value (horizontal position)
|
|
||||||
cmp #center+threshold ;Compare with right threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
cmp #center-threshold ;Compare with left threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
|
|
||||||
lda paddl1,x ;Read POT1 value (vertical position)
|
|
||||||
cmp #center+threshold ;Compare with down threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
cmp #center-threshold ;Compare with down threshold
|
|
||||||
rol stick0 ;Feed carry into digital stick value
|
|
||||||
|
|
||||||
lda stick0 ;0 indicates a press so the right/down values need to be inverted
|
|
||||||
eor #2+8
|
|
||||||
and #$0f
|
|
||||||
sta stick0
|
|
||||||
|
|
||||||
ldx JoystickNumber
|
|
||||||
; check shift key (5200 second fire button)
|
|
||||||
lda SKSTAT
|
|
||||||
:3 lsr ; third bit
|
|
||||||
and trig0,x ; and first button
|
|
||||||
;lda trig0,x
|
|
||||||
sta strig0 ;Move hardware to shadow
|
|
||||||
|
|
||||||
mva chbas chbase
|
|
||||||
|
|
||||||
lda skstat ;Reset consol key shadow is no key is pressed anymore
|
|
||||||
and #4
|
|
||||||
beq @+
|
|
||||||
mva #consol_reset consol
|
|
||||||
mva #@kbcode._none kbcode
|
|
||||||
@
|
|
||||||
|
|
||||||
pla
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.ELSE
|
|
||||||
; support for joysticks :)
|
|
||||||
ldx JoystickNumber
|
|
||||||
lda STICK0,x
|
|
||||||
sta STICK0
|
|
||||||
lda STRIG0,x
|
|
||||||
sta STRIG0
|
|
||||||
jmp XITVBV
|
|
||||||
.ENDIF
|
|
||||||
.endp
|
|
||||||
.IF TARGET = 5200
|
|
||||||
.proc kb_continue
|
|
||||||
sta kbcode ;Store key code in shadow.
|
|
||||||
mva #0 SkStatSimulator
|
|
||||||
exit pla
|
|
||||||
tay
|
|
||||||
pla
|
|
||||||
tax
|
|
||||||
pla
|
|
||||||
rti
|
|
||||||
.endp
|
|
||||||
.ENDIF
|
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
.proc RandomizeSequence0
|
.proc RandomizeSequence0
|
||||||
ldx #0
|
ldx #0
|
||||||
@@ -1629,6 +1394,14 @@ LimitForce
|
|||||||
|
|
||||||
.endp
|
.endp
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
|
.proc Table2Force
|
||||||
|
lda ForceTableL,x
|
||||||
|
sta Force
|
||||||
|
lda ForceTableH,x
|
||||||
|
sta Force+1
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
;----------------------------------------------
|
||||||
.proc MoveBarrelToNewPosition
|
.proc MoveBarrelToNewPosition
|
||||||
mva #1 Erase
|
mva #1 Erase
|
||||||
jsr DrawTankNr.BarrelChange
|
jsr DrawTankNr.BarrelChange
|
||||||
@@ -1902,7 +1675,7 @@ peopleAreHere
|
|||||||
MakeDarkScreen
|
MakeDarkScreen
|
||||||
jsr PMoutofScreen
|
jsr PMoutofScreen
|
||||||
mva #0 dmactls ; dark screen
|
mva #0 dmactls ; dark screen
|
||||||
sta dmactl
|
; sta dmactl ; probably not necessary (3 bytes!!! :) )
|
||||||
; and wait one frame :)
|
; and wait one frame :)
|
||||||
.proc WaitOneFrame
|
.proc WaitOneFrame
|
||||||
lda CONSOL
|
lda CONSOL
|
||||||
@@ -1963,66 +1736,7 @@ noingame
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
;--------------------------------------------------
|
;--------------------------------------------------
|
||||||
.macro SetDLI
|
icl 'interrupts.asm'
|
||||||
; SetDLI #WORD
|
|
||||||
; Initialises Display List Interrupts
|
|
||||||
LDY # <:1
|
|
||||||
LDX # >:1
|
|
||||||
jsr _SetDLIproc
|
|
||||||
.endm
|
|
||||||
.proc _SetDLIproc
|
|
||||||
LDA #$C0
|
|
||||||
STY VDSLST
|
|
||||||
STX VDSLST+1
|
|
||||||
STA NMIEN
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
;--------------------------------------------------
|
|
||||||
/* ;--------------------------------------------------
|
|
||||||
.macro randomize floor ceiling
|
|
||||||
;--------------------------------------------------
|
|
||||||
;usage: randomize floor ceiling
|
|
||||||
;returns (in A) a random .byte between "floor" and "ceiling"
|
|
||||||
jsr _randomizator
|
|
||||||
.byte :floor
|
|
||||||
.byte :ceiling
|
|
||||||
.endm
|
|
||||||
|
|
||||||
.proc _randomizator
|
|
||||||
; private function that accompanies `randomize` macro
|
|
||||||
; trashes: magic, temp, Y
|
|
||||||
pla
|
|
||||||
sta magic
|
|
||||||
pla
|
|
||||||
sta magic+1
|
|
||||||
ldy #1 ; add 1 to the value got from the stack to point to the input parameters
|
|
||||||
lda (magic),y
|
|
||||||
sta temp
|
|
||||||
iny
|
|
||||||
lda (magic),y
|
|
||||||
sta temp+1
|
|
||||||
|
|
||||||
?rand
|
|
||||||
lda random
|
|
||||||
cmp temp ;floor
|
|
||||||
bcc ?rand
|
|
||||||
cmp temp+1 ;ceiling
|
|
||||||
bcs ?rand
|
|
||||||
tay ; save the result
|
|
||||||
|
|
||||||
; point the PC to a byte after the parameters
|
|
||||||
clc
|
|
||||||
lda magic
|
|
||||||
adc #2 ; length of the parameters in bytes
|
|
||||||
sta magic
|
|
||||||
lda magic+1
|
|
||||||
adc #0
|
|
||||||
pha
|
|
||||||
lda magic
|
|
||||||
pha
|
|
||||||
tya ; retrieve the result
|
|
||||||
rts
|
|
||||||
.endp */
|
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
icl 'constants.asm'
|
icl 'constants.asm'
|
||||||
;----------------------------------------------
|
;----------------------------------------------
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+8
-336
@@ -908,27 +908,13 @@ NoAutoDefense
|
|||||||
cmp #ind_Lazy_Boy_______
|
cmp #ind_Lazy_Boy_______
|
||||||
bne NoLazyBoy
|
bne NoLazyBoy
|
||||||
; Lazy Boy - do it like battery
|
; Lazy Boy - do it like battery
|
||||||
mva #sfx_lazy_boys sfx_effect
|
mva #%01000000 LazyFlag
|
||||||
phy
|
|
||||||
jsr PrepareAIShoot
|
|
||||||
jsr FindBestTarget2 ; find nearest tank neighbour
|
|
||||||
jsr LazyAim
|
|
||||||
ply
|
|
||||||
lda #%00000000
|
|
||||||
sta TestFlightFlag ; set "visual aiming" off
|
|
||||||
jmp DecreaseDefensive ; bypass activation
|
jmp DecreaseDefensive ; bypass activation
|
||||||
NoLazyBoy
|
NoLazyBoy
|
||||||
cmp #ind_Lazy_Darwin____
|
cmp #ind_Lazy_Darwin____
|
||||||
bne NoLazyDarwin
|
bne NoLazyDarwin
|
||||||
; Lazy Darwin - do it like battery
|
; Lazy Darwin - do it like battery
|
||||||
mva #sfx_lazy_boys sfx_effect
|
mva #%11000000 LazyFlag
|
||||||
phy
|
|
||||||
jsr PrepareAIShoot
|
|
||||||
jsr FindBestTarget3 ; find target with lowest energy
|
|
||||||
jsr LazyAim
|
|
||||||
ply
|
|
||||||
lda #%10000000
|
|
||||||
sta TestFlightFlag ; set "visual aiming" on
|
|
||||||
jmp DecreaseDefensive ; bypass activation
|
jmp DecreaseDefensive ; bypass activation
|
||||||
NoLazyDarwin
|
NoLazyDarwin
|
||||||
cmp #ind_Spy_Hard_______
|
cmp #ind_Spy_Hard_______
|
||||||
@@ -974,22 +960,6 @@ DefActivationEnd
|
|||||||
jmp WaitForKeyRelease ; rts
|
jmp WaitForKeyRelease ; rts
|
||||||
|
|
||||||
.endp
|
.endp
|
||||||
.proc LazyAim
|
|
||||||
; aiming proc for Lazy ... weapons
|
|
||||||
; as proc for memory optimisation
|
|
||||||
; Y - target tan nr
|
|
||||||
; A - target direction
|
|
||||||
sty TargetTankNr
|
|
||||||
; aiming
|
|
||||||
jsr TakeAim ; direction still in A (0 - left, >0 - right)
|
|
||||||
lda Force
|
|
||||||
sta ForceTableL,x
|
|
||||||
lda Force+1
|
|
||||||
sta ForceTableH,x
|
|
||||||
lda NewAngle
|
|
||||||
sta AngleTable,x
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
; -----------------------------------------------------
|
; -----------------------------------------------------
|
||||||
.proc calcPosDefensive
|
.proc calcPosDefensive
|
||||||
; calculate positionOnTheList from the activeWeapon (defensives)
|
; calculate positionOnTheList from the activeWeapon (defensives)
|
||||||
@@ -1633,309 +1603,6 @@ displayloop1
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
|
|
||||||
;--------------------------------------------------------
|
|
||||||
.proc DisplayOffensiveTextNr ;
|
|
||||||
ldx TextNumberOff
|
|
||||||
lda talk.OffensiveTextTableL,x
|
|
||||||
sta LineAddress4x4
|
|
||||||
lda talk.OffensiveTextTableH,x
|
|
||||||
sta LineAddress4x4+1
|
|
||||||
inx ; the next text
|
|
||||||
lda talk.OffensiveTextTableH,x
|
|
||||||
sta temp+1
|
|
||||||
lda talk.OffensiveTextTableL,x
|
|
||||||
sta temp ; opty possible
|
|
||||||
; substract address of the next text from previous to get text length
|
|
||||||
sbw temp LineAddress4x4 temp2
|
|
||||||
mva temp2 fx
|
|
||||||
|
|
||||||
;jsr Display4x4AboveTank
|
|
||||||
;rts
|
|
||||||
; POZOR !!!
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;--------------------------------------------------------
|
|
||||||
.proc Display4x4AboveTank ;
|
|
||||||
; Displays texts using PutChar4x4 above tank and mountains.
|
|
||||||
; Pretty cool, eh!
|
|
||||||
;parameters are:
|
|
||||||
;Y - number of tank above which text is displayed
|
|
||||||
;fx - length of text
|
|
||||||
;LineAddress4x4 - address of the text
|
|
||||||
|
|
||||||
;lets calculate position of the text first!
|
|
||||||
;that's easy because we have number of tank
|
|
||||||
;and xtankstableL and H keep X position of a given tank
|
|
||||||
|
|
||||||
lda xtankstableL,y
|
|
||||||
sta temp
|
|
||||||
lda xtankstableH,y
|
|
||||||
sta temp+1
|
|
||||||
;now we should substract length of the text-1
|
|
||||||
;temp2 = (fx-1)*2
|
|
||||||
ldy fx
|
|
||||||
dey
|
|
||||||
tya
|
|
||||||
asl
|
|
||||||
sta temp2
|
|
||||||
mva #0 temp2+1
|
|
||||||
;now we have HALF length in pixels
|
|
||||||
;stored in temp2
|
|
||||||
|
|
||||||
;here we assume max length of text
|
|
||||||
;to display is 127 chars, but later it turns out it must be max 63!
|
|
||||||
|
|
||||||
sbw temp temp2 ; here begin of the text is in TEMP !!!!
|
|
||||||
;now we should check overflows
|
|
||||||
;lda temp+1 ; opty
|
|
||||||
bpl DOTNnotLessThanZero
|
|
||||||
;less than zero, so should be zero
|
|
||||||
mwa #0 temp
|
|
||||||
beq DOTNnoOverflow
|
|
||||||
|
|
||||||
DOTNnotLessThanZero
|
|
||||||
;so check if end larger than screenwidth
|
|
||||||
|
|
||||||
|
|
||||||
lda fx
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
;length in pixels -
|
|
||||||
;text length max 63 chars !!!!!!!!
|
|
||||||
|
|
||||||
|
|
||||||
clc
|
|
||||||
adc temp
|
|
||||||
sta temp2
|
|
||||||
lda #0
|
|
||||||
adc temp+1
|
|
||||||
sta temp2+1
|
|
||||||
;now in temp2 is end of the text in pixels
|
|
||||||
;so check if not greater than screenwitdth
|
|
||||||
cpw temp2 #screenwidth
|
|
||||||
bcc DOTNnoOverflow
|
|
||||||
|
|
||||||
;if end is greater than screenwidth
|
|
||||||
;then screenwidth - length is fine
|
|
||||||
lda fx
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
sta temp
|
|
||||||
mva #0 temp+1
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda #<(screenwidth-1)
|
|
||||||
sbc temp
|
|
||||||
sta temp
|
|
||||||
lda #>(screenwidth-1)
|
|
||||||
sbc temp+1
|
|
||||||
sta temp+1
|
|
||||||
DOTNnoOverflow
|
|
||||||
;here in temp we have really good x position of text
|
|
||||||
|
|
||||||
mwa temp LineXdraw
|
|
||||||
|
|
||||||
;now let's get y position
|
|
||||||
;we will try to put text as low as possible
|
|
||||||
;just above mountains (so mountaintable will be checked)
|
|
||||||
lda fx
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
tay
|
|
||||||
;in temp there still is X position of text
|
|
||||||
;if we add temp and Y we will get end of the text
|
|
||||||
;so, lets go through mountaintable and look for
|
|
||||||
;the lowest value within
|
|
||||||
;Mountaitable+temp and Mountaitable+temp+Y
|
|
||||||
|
|
||||||
adw temp #MountainTable
|
|
||||||
|
|
||||||
mva #screenheight temp2 ;initialisation of the lowest value
|
|
||||||
|
|
||||||
DOTLowestMountainValueLoop
|
|
||||||
lda (temp),y
|
|
||||||
cmp temp2
|
|
||||||
bcs DOTOldLowestValue ;old lowest value
|
|
||||||
;new lowest value
|
|
||||||
sta temp2
|
|
||||||
DOTOldLowestValue
|
|
||||||
dey
|
|
||||||
cpy #$ff
|
|
||||||
bne DOTLowestMountainValueLoop
|
|
||||||
|
|
||||||
sec
|
|
||||||
lda temp2
|
|
||||||
sbc #(4+9) ;9 pixels above ground (and tanks...)
|
|
||||||
sta LineYdraw
|
|
||||||
|
|
||||||
jmp TypeLine4x4.noLengthNoColor ; rts
|
|
||||||
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;--------------------------------------------------------
|
|
||||||
.proc DisplayTankNameAbove ;
|
|
||||||
lda tankNr
|
|
||||||
:3 asl ; *8
|
|
||||||
clc
|
|
||||||
adc #<TanksNames
|
|
||||||
sta temp ; TextAddress
|
|
||||||
lda #0
|
|
||||||
adc #>Tanksnames
|
|
||||||
sta temp+1 ; TextAddress+1
|
|
||||||
mwa temp LineAddress4x4
|
|
||||||
|
|
||||||
;find length of the tank's name
|
|
||||||
ldy #7
|
|
||||||
@
|
|
||||||
lda (temp),y
|
|
||||||
bne end_found
|
|
||||||
dey
|
|
||||||
bne @-
|
|
||||||
|
|
||||||
end_found
|
|
||||||
iny
|
|
||||||
sty fx
|
|
||||||
ldy tankNr
|
|
||||||
jsr Display4x4AboveTank
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;-------------------------------
|
|
||||||
.proc TypeLine4x4 ;
|
|
||||||
;-------------------------------
|
|
||||||
;this routine prints line of length `fx`
|
|
||||||
;address in LineAddress4x4
|
|
||||||
;starting from LineXdraw, LineYdraw
|
|
||||||
|
|
||||||
lda #14 ; default length of 4x4 texts
|
|
||||||
sta fx
|
|
||||||
|
|
||||||
variableLength
|
|
||||||
lda #$ff ; $ff - visible characters, $00 - clearing
|
|
||||||
|
|
||||||
staplot4x4color
|
|
||||||
sta plot4x4color
|
|
||||||
noLengthNoColor
|
|
||||||
|
|
||||||
ldy #0
|
|
||||||
sty LineCharNr
|
|
||||||
|
|
||||||
TypeLine4x4Loop
|
|
||||||
ldy LineCharNr
|
|
||||||
|
|
||||||
lda (LineAddress4x4),y
|
|
||||||
and #$3f ;always CAPITAL letters
|
|
||||||
sta CharCode4x4
|
|
||||||
mwa LineXdraw dx
|
|
||||||
mva LineYdraw dy
|
|
||||||
mva #0 dy+1 ; dy is 2 bytes value
|
|
||||||
jsr PutChar4x4 ;type empty pixels as well!
|
|
||||||
adw LineXdraw #4
|
|
||||||
inc:lda LineCharNr
|
|
||||||
cmp fx
|
|
||||||
bne TypeLine4x4Loop
|
|
||||||
|
|
||||||
EndOfTypeLine4x4
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
|
|
||||||
;--------------------------------
|
|
||||||
.proc AreYouSure
|
|
||||||
;using 4x4 font
|
|
||||||
|
|
||||||
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
|
||||||
|
|
||||||
;top frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_top
|
|
||||||
adb ResultY #4 ;next line
|
|
||||||
|
|
||||||
;sure?
|
|
||||||
mwa #areYouSureText LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
;bottom frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_bottom
|
|
||||||
|
|
||||||
|
|
||||||
jsr GetKey
|
|
||||||
cmp #@kbcode._Y ; $2b ; "Y"
|
|
||||||
bne @+
|
|
||||||
mva #$80 escFlag
|
|
||||||
bne skip01
|
|
||||||
@ mva #0 escFlag
|
|
||||||
skip01
|
|
||||||
jsr WaitForKeyRelease
|
|
||||||
|
|
||||||
;clean
|
|
||||||
mva #3 di
|
|
||||||
mva #4 ResultY
|
|
||||||
@
|
|
||||||
mva #$ff plot4x4color
|
|
||||||
mwa #lineClear LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
dec di
|
|
||||||
bne @-
|
|
||||||
|
|
||||||
quit_areyousure
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
.proc _sep_opty
|
|
||||||
mwa #((ScreenWidth/2)-(8*4)) LineXdraw ; centering
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TypeLine4x4
|
|
||||||
adb ResultY #4 ;next line
|
|
||||||
rts
|
|
||||||
.endp
|
|
||||||
|
|
||||||
;--------------------------------
|
|
||||||
.proc DisplaySeppuku
|
|
||||||
;using 4x4 font
|
|
||||||
|
|
||||||
|
|
||||||
mva #20 fs ; temp, how many times blink the billboard
|
|
||||||
seppuku_loop
|
|
||||||
lda CONSOL ; turbo mode
|
|
||||||
and #%00000001 ; START KEY
|
|
||||||
sne:mva #1 fs ; finish it
|
|
||||||
|
|
||||||
mva #4 ResultY ; where seppuku text starts Y-wise on the screen
|
|
||||||
|
|
||||||
;top frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_top
|
|
||||||
adb ResultY #4 ;next line
|
|
||||||
|
|
||||||
;seppuku
|
|
||||||
mwa #seppukuText LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
|
|
||||||
;bottom frame
|
|
||||||
mva ResultY LineYdraw
|
|
||||||
jsr TL4x4_bottom ; just go
|
|
||||||
|
|
||||||
;clean seppuku
|
|
||||||
|
|
||||||
mva #3 di
|
|
||||||
;mva #4 ResultY
|
|
||||||
lda #4
|
|
||||||
sta ResultY
|
|
||||||
loplop ;@
|
|
||||||
mwa #lineClear LineAddress4x4
|
|
||||||
jsr _sep_opty
|
|
||||||
|
|
||||||
dec di
|
|
||||||
bne loplop ;@-
|
|
||||||
|
|
||||||
dec fs
|
|
||||||
jne seppuku_loop
|
|
||||||
|
|
||||||
quit_seppuku
|
|
||||||
rts
|
|
||||||
|
|
||||||
.endp
|
|
||||||
;--------------------------------
|
;--------------------------------
|
||||||
.proc DisplayResults ;
|
.proc DisplayResults ;
|
||||||
;displays results of the round
|
;displays results of the round
|
||||||
@@ -2277,7 +1944,12 @@ RandomizeTankPos
|
|||||||
randomize 0 180
|
randomize 0 180
|
||||||
sta AngleTable,x
|
sta AngleTable,x
|
||||||
randomize 0 (49-8)
|
randomize 0 (49-8)
|
||||||
and #%11111110 ; correction for PMG
|
; x correction for P/M
|
||||||
|
; --
|
||||||
|
.IF XCORRECTION_FOR_PM = 1
|
||||||
|
and #%11111110
|
||||||
|
.ENDIF
|
||||||
|
; --
|
||||||
clc
|
clc
|
||||||
adc XtankOffsetGO_L,x
|
adc XtankOffsetGO_L,x
|
||||||
sta XtankstableL,x
|
sta XtankstableL,x
|
||||||
|
|||||||
@@ -168,8 +168,6 @@ TargetTankNr ; Target tank index (for AI routines)
|
|||||||
.DS 1
|
.DS 1
|
||||||
SecondTryFlag ; For precise AI aiming
|
SecondTryFlag ; For precise AI aiming
|
||||||
.DS 1
|
.DS 1
|
||||||
SpyHardFlag ; >$7f - run SpyHard after inventory
|
|
||||||
.DS 1
|
|
||||||
;----------------------------------------------------
|
;----------------------------------------------------
|
||||||
;Erase .DS 1 ; if 1 only mask of the character is printed
|
;Erase .DS 1 ; if 1 only mask of the character is printed
|
||||||
; on the graphics screen. if 0 character is printed normally
|
; on the graphics screen. if 0 character is printed normally
|
||||||
|
|||||||
+54
-17
@@ -1149,8 +1149,12 @@ afterInventory
|
|||||||
jsr MakeDarkScreen
|
jsr MakeDarkScreen
|
||||||
jsr DisplayStatus
|
jsr DisplayStatus
|
||||||
jsr SetMainScreen
|
jsr SetMainScreen
|
||||||
;jsr WaitOneFrame ; not necessary
|
|
||||||
jsr DrawTanks
|
jsr DrawTanks
|
||||||
|
;jsr WaitOneFrame ; not necessary
|
||||||
|
bit LazyFlag
|
||||||
|
bvc NoLazy
|
||||||
|
jsr LazyBoys
|
||||||
|
NoLazy
|
||||||
bit SpyHardFlag
|
bit SpyHardFlag
|
||||||
bpl NoSpyHard
|
bpl NoSpyHard
|
||||||
jsr SpyHard
|
jsr SpyHard
|
||||||
@@ -1196,7 +1200,7 @@ NoVdebugSwitch
|
|||||||
.IF TARGET = 800
|
.IF TARGET = 800
|
||||||
cmp #61 ; G
|
cmp #61 ; G
|
||||||
bne EndKeys
|
bne EndKeys
|
||||||
jsr SelectNextGradient
|
jsr SelectNextGradient.NotWind
|
||||||
jmp ReleaseAndLoop
|
jmp ReleaseAndLoop
|
||||||
.ENDIF
|
.ENDIF
|
||||||
EndKeys
|
EndKeys
|
||||||
@@ -1469,10 +1473,7 @@ AfterOffensiveText
|
|||||||
mva #$ff LaserFlag ; $ff - Laser
|
mva #$ff LaserFlag ; $ff - Laser
|
||||||
bne AfterStrongShoot
|
bne AfterStrongShoot
|
||||||
NotStrongShoot
|
NotStrongShoot
|
||||||
lda ForceTableL,x
|
jsr Table2Force
|
||||||
sta Force
|
|
||||||
lda ForceTableH,x
|
|
||||||
sta Force+1
|
|
||||||
bit TestFlightFlag
|
bit TestFlightFlag
|
||||||
bmi AfterStrongShoot
|
bmi AfterStrongShoot
|
||||||
mva #sfx_shoot sfx_effect
|
mva #sfx_shoot sfx_effect
|
||||||
@@ -1805,7 +1806,7 @@ SkipCollisionCheck
|
|||||||
bit TestFlightFlag
|
bit TestFlightFlag
|
||||||
bvc NoTestFlight
|
bvc NoTestFlight
|
||||||
bit Vdebug
|
bit Vdebug
|
||||||
bpl NoTestFlight
|
bpl NoUnplot
|
||||||
jsr WaitOneFrame ; visualize AI targeting
|
jsr WaitOneFrame ; visualize AI targeting
|
||||||
jmp YesUnPlot
|
jmp YesUnPlot
|
||||||
NoTestFlight
|
NoTestFlight
|
||||||
@@ -1964,11 +1965,7 @@ BouncyCastle
|
|||||||
; ---------------- get fire parameters again
|
; ---------------- get fire parameters again
|
||||||
|
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
lda ActiveWeapon,x
|
jsr Table2Force
|
||||||
lda ForceTableL,x
|
|
||||||
sta Force
|
|
||||||
lda ForceTableH,x
|
|
||||||
sta Force+1
|
|
||||||
lda AngleTable,x
|
lda AngleTable,x
|
||||||
sta Angle
|
sta Angle
|
||||||
|
|
||||||
@@ -2467,6 +2464,7 @@ InverseScreenByte
|
|||||||
mvx TankNr TargetTankNr ; save
|
mvx TankNr TargetTankNr ; save
|
||||||
RepeatSpy
|
RepeatSpy
|
||||||
mvx #0 TankNr
|
mvx #0 TankNr
|
||||||
|
stx SpyHardFlag ; 0 - optimization
|
||||||
CheckNextTankSH
|
CheckNextTankSH
|
||||||
cpx TargetTankNr
|
cpx TargetTankNr
|
||||||
beq ThisTankItsMe
|
beq ThisTankItsMe
|
||||||
@@ -2497,7 +2495,6 @@ SelectNextTank
|
|||||||
SpyHardEnd
|
SpyHardEnd
|
||||||
mvx TargetTankNr TankNr ; restore
|
mvx TargetTankNr TankNr ; restore
|
||||||
jsr DisplaySpyInfo
|
jsr DisplaySpyInfo
|
||||||
mva #0 SpyHardFlag
|
|
||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
.proc DisplaySpyInfo
|
.proc DisplaySpyInfo
|
||||||
@@ -2508,6 +2505,42 @@ SpyHardEnd
|
|||||||
rts
|
rts
|
||||||
.endp
|
.endp
|
||||||
; -------------------------------------------------
|
; -------------------------------------------------
|
||||||
|
.proc LazyBoys
|
||||||
|
; -------------------------------------------------
|
||||||
|
mva #sfx_lazy_boys sfx_effect
|
||||||
|
jsr PrepareAIShoot
|
||||||
|
ldx TankNr
|
||||||
|
bit LazyFlag
|
||||||
|
bmi GoDarwin
|
||||||
|
jsr FindBestTarget2 ; find nearest tank neighbour
|
||||||
|
jsr LazyAim
|
||||||
|
lda #%00000000 ; set "visual aiming" off
|
||||||
|
beq EndLazy
|
||||||
|
GoDarwin
|
||||||
|
jsr FindBestTarget3 ; find target with lowest energy
|
||||||
|
jsr LazyAim
|
||||||
|
lda #%10000000
|
||||||
|
EndLazy
|
||||||
|
sta TestFlightFlag ; set "visual aiming" on
|
||||||
|
mva #0 LazyFlag
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
.proc LazyAim
|
||||||
|
; aiming proc for Lazy ... weapons
|
||||||
|
; as proc for memory optimisation
|
||||||
|
; Y - target tan nr
|
||||||
|
; A - target direction
|
||||||
|
sty TargetTankNr
|
||||||
|
; aiming
|
||||||
|
jsr TakeAim ; direction still in A (0 - left, >0 - right)
|
||||||
|
lda Force
|
||||||
|
sta ForceTableL,x
|
||||||
|
lda Force+1
|
||||||
|
sta ForceTableH,x
|
||||||
|
jsr MoveBarrelToNewPosition
|
||||||
|
rts
|
||||||
|
.endp
|
||||||
|
; -------------------------------------------------
|
||||||
.proc TankFlying
|
.proc TankFlying
|
||||||
; -------------------------------------------------
|
; -------------------------------------------------
|
||||||
; This routine is run from inside of the main loop
|
; This routine is run from inside of the main loop
|
||||||
@@ -2620,8 +2653,7 @@ KeyboardAndJoyCheck
|
|||||||
mva #sfx_tank_move sfx_effect
|
mva #sfx_tank_move sfx_effect
|
||||||
lda ShieldEnergy,x
|
lda ShieldEnergy,x
|
||||||
cmp #20
|
cmp #20
|
||||||
bne notpressed
|
bne LotOfFuel
|
||||||
nop
|
|
||||||
|
|
||||||
; display text 4x4 - low fuel
|
; display text 4x4 - low fuel
|
||||||
mwa #hoverEmpty LineAddress4x4
|
mwa #hoverEmpty LineAddress4x4
|
||||||
@@ -2632,9 +2664,9 @@ KeyboardAndJoyCheck
|
|||||||
sbc #12
|
sbc #12
|
||||||
sta LineYdraw
|
sta LineYdraw
|
||||||
jsr TypeLine4x4.variableLength
|
jsr TypeLine4x4.variableLength
|
||||||
|
|
||||||
ldx TankNr
|
ldx TankNr
|
||||||
|
|
||||||
|
LotOfFuel
|
||||||
notpressed
|
notpressed
|
||||||
; let's animate "engine"
|
; let's animate "engine"
|
||||||
jsr DrawTankEngine
|
jsr DrawTankEngine
|
||||||
@@ -2786,7 +2818,7 @@ CheckCollisionWithTankLoop
|
|||||||
; it is tricky but fast and much shorter
|
; it is tricky but fast and much shorter
|
||||||
lda xtankstableL,x
|
lda xtankstableL,x
|
||||||
sec
|
sec
|
||||||
sbc #9 ; 2 pixels more on left side + tan width
|
sbc #9 ; 2 pixels more on left side + tank width
|
||||||
tay
|
tay
|
||||||
lda xtankstableH,x
|
lda xtankstableH,x
|
||||||
sbc #0
|
sbc #0
|
||||||
@@ -2842,9 +2874,14 @@ ItIsMe
|
|||||||
mva #1 Erase
|
mva #1 Erase
|
||||||
jsr DrawTankNr
|
jsr DrawTankNr
|
||||||
mva #0 Erase
|
mva #0 Erase
|
||||||
|
; x correction for P/M
|
||||||
|
; --
|
||||||
|
.IF XCORRECTION_FOR_PM = 1
|
||||||
lda XtankstableL,x
|
lda XtankstableL,x
|
||||||
and #%11111110 ; correction for PM
|
and #%11111110 ; correction for PM
|
||||||
sta XtankstableL,x
|
sta XtankstableL,x
|
||||||
|
.ENDIF
|
||||||
|
; --
|
||||||
GoDown
|
GoDown
|
||||||
|
|
||||||
mwa #mountaintable temp
|
mwa #mountaintable temp
|
||||||
|
|||||||
Reference in New Issue
Block a user