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 | |
|---|---|---|---|
| 31c181ce89 | |||
| 33d8303270 | |||
| f9fad89d7c | |||
| e9ff60210e | |||
| b7560ab6d9 | |||
| 41094db7dd | |||
| ab30227843 | |||
| 5d619c80f8 | |||
| e842d455e6 | |||
| da4d82cca4 | |||
| f7931afbb4 | |||
| b18793014d | |||
| ef1c0dc62c | |||
| bc338198a0 | |||
| 2a08447b9c | |||
| 4088e5f8fa | |||
| 79b5bc3290 | |||
| 3b80de7def |
@@ -51,6 +51,18 @@ With the advent of [fujinet](https://fujinet.online/) we are thinking about maki
|
|||||||
|
|
||||||
## Changelog:
|
## Changelog:
|
||||||
|
|
||||||
|
###### Version 1.26
|
||||||
|
2023-01-23
|
||||||
|
|
||||||
|
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.
|
||||||
|
- tanks talk to each other again
|
||||||
|
- better stochastic non blocking wait one frame
|
||||||
|
- rare dstance measurement bug fixed (rarely a tank survived a direct hit)
|
||||||
|
- 5200: second fire works (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.
|
||||||
|
|
||||||
|
|
||||||
###### Version 1.25
|
###### Version 1.25
|
||||||
2023-01-17
|
2023-01-17
|
||||||
|
|
||||||
@@ -58,8 +70,9 @@ Y2K Compliance Edition
|
|||||||
This version is 5200 SuperSystem focused.
|
This version is 5200 SuperSystem focused.
|
||||||
- the correct production year in the splash screens!!!
|
- the correct production year in the splash screens!!!
|
||||||
- very rare hangups when accessing the inventory seemingly eliminated, thanks @RB5200 for testing!
|
- very rare hangups when accessing the inventory seemingly eliminated, thanks @RB5200 for testing!
|
||||||
- a new feature - pressing [Tab] (atari800) or [5] (5200) when selecting the wind power switches wind mode to changing with each turn, what makes aiming arguably more challenging! It is indicated by "?" next to the "Wind" in the main menu.
|
- a new feature - pressing [Tab] (atari800) or [5] (5200) when selecting the wind power switches wind mode to changing with each turn, which makes aiming arguably more challenging! It is indicated by "?" next to the "Wind" in the main menu.
|
||||||
- all these changes were made possible because of the extensive code size optimization by @Pecus
|
- pressing [G] during the game changes the color scheme (classic, Polish rainbow, Xmas).
|
||||||
|
- all these changes were made possible thanks to the extensive code size optimization by @Pecus
|
||||||
|
|
||||||
|
|
||||||
###### Version 1.23
|
###### Version 1.23
|
||||||
|
|||||||
+11
-4
@@ -626,10 +626,13 @@ CreditsStart
|
|||||||
dta d"Bocianu, Probabilitydragon, EnderDude",d","*
|
dta d"Bocianu, Probabilitydragon, EnderDude",d","*
|
||||||
dta d"Beeblebrox, KrzysRog, lopezpb, Dracon",d","*
|
dta d"Beeblebrox, KrzysRog, lopezpb, Dracon",d","*
|
||||||
dta d"brad-colbert, archon800, nowy80",d","*
|
dta d"brad-colbert, archon800, nowy80",d","*
|
||||||
dta d"Shaggy the Atarian, RetroBorsuk, ZP",d"H"*
|
dta d"Shaggy the Atarian, RetroBorsuk, ZPH"
|
||||||
.IF target = 5200
|
.IF target = 5200
|
||||||
dta d"x-usr(1536), Aking, JAC!, phaero",d"n"*
|
dta d","*
|
||||||
|
dta d"x-usr(1536), Aking, JAC!, phaeron",d","*
|
||||||
dta d"RB520",d"0"*
|
dta d"RB520",d"0"*
|
||||||
|
.ELSE
|
||||||
|
dta d" "*
|
||||||
.ENDIF
|
.ENDIF
|
||||||
dta d" "*
|
dta d" "*
|
||||||
dta d"Additional testin",d"g"*
|
dta d"Additional testin",d"g"*
|
||||||
@@ -641,9 +644,13 @@ CreditsStart
|
|||||||
dta d" "*
|
dta d" "*
|
||||||
CreditsEnd
|
CreditsEnd
|
||||||
.IF target = 5200
|
.IF target = 5200
|
||||||
CreditsLines=37
|
CreditsLines=38
|
||||||
.ELSE
|
.ELSE
|
||||||
CreditsLines=42 ; 34 in reality. add 7?
|
CreditsLines=42 ; 34 in reality. add 7?
|
||||||
.ENDIF
|
.ENDIF
|
||||||
|
.IF target = 5200
|
||||||
|
; Atari 5200 splash
|
||||||
|
NewSplashText=*
|
||||||
|
dta d"copyright 2023 atari"
|
||||||
|
.ENDIF
|
||||||
.endif
|
.endif
|
||||||
|
|||||||
+9
-1
@@ -140,8 +140,13 @@ LineParametersReady
|
|||||||
ora DX+1
|
ora DX+1
|
||||||
ora DY
|
ora DY
|
||||||
ora DY+1
|
ora DY+1
|
||||||
jeq EndOfDraw
|
bne NotOnePoint
|
||||||
|
; length=0
|
||||||
|
sta LineLength
|
||||||
|
sta LineLength+1
|
||||||
|
jmp EndOfDraw
|
||||||
|
|
||||||
|
NotOnePoint
|
||||||
; here we have DX,DY,XK and we know which operations
|
; here we have DX,DY,XK and we know which operations
|
||||||
; are to be performed with these factors when doing PLOT
|
; are to be performed with these factors when doing PLOT
|
||||||
; (accordingly to given bits of 'HowToDraw')
|
; (accordingly to given bits of 'HowToDraw')
|
||||||
@@ -219,6 +224,8 @@ PutPixelinDraw
|
|||||||
bit drawFunction
|
bit drawFunction
|
||||||
bpl @+
|
bpl @+
|
||||||
inw LineLength
|
inw LineLength
|
||||||
|
bit Vdebug
|
||||||
|
bmi MeasureVisualisation
|
||||||
jmp ContinueDraw ; was `bne` - not good, because LineLength starts from $ffff
|
jmp ContinueDraw ; was `bne` - not good, because LineLength starts from $ffff
|
||||||
@
|
@
|
||||||
bvc @+
|
bvc @+
|
||||||
@@ -266,6 +273,7 @@ CheckCollisionDraw
|
|||||||
StopHitChecking
|
StopHitChecking
|
||||||
jmp ContinueDraw
|
jmp ContinueDraw
|
||||||
@
|
@
|
||||||
|
MeasureVisualisation
|
||||||
jsr plot
|
jsr plot
|
||||||
|
|
||||||
ContinueDraw
|
ContinueDraw
|
||||||
|
|||||||
+10
-15
@@ -74,23 +74,18 @@
|
|||||||
|
|
||||||
.ENDM
|
.ENDM
|
||||||
;-------------------------------------
|
;-------------------------------------
|
||||||
.MACRO WAIT
|
.MACRO WAIT
|
||||||
; WAIT
|
; WAIT
|
||||||
; waits one frame (1/50 s(PAL) or 1/60s(NTSC))
|
; waits one frame (1/50 s(PAL) or 1/60s(NTSC))
|
||||||
?zero LDA VCOUNT
|
?ze LDA VCOUNT
|
||||||
cmp #$05
|
cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||||
bcc ?zero
|
bcc ?ze
|
||||||
cmp #$70
|
sbc #10 ; last lines correction
|
||||||
bcc ?WA
|
?wa cmp VCOUNT
|
||||||
sbc #10 ; last lines correction
|
bcc ?wa
|
||||||
?WA cmp VCOUNT
|
?wf cmp VCOUNT
|
||||||
beq ?WA
|
bcs ?wf
|
||||||
bcc ?WA
|
.ENDM
|
||||||
?WFRAME cmp VCOUNT
|
|
||||||
beq ?nowait
|
|
||||||
bcs ?WFRAME
|
|
||||||
?nowait
|
|
||||||
.ENDM
|
|
||||||
;-------------------------------------
|
;-------------------------------------
|
||||||
.macro waitRTC
|
.macro waitRTC
|
||||||
lda RTCLOK+1
|
lda RTCLOK+1
|
||||||
|
|||||||
+10
-15
@@ -73,23 +73,18 @@
|
|||||||
PLA
|
PLA
|
||||||
.ENDM
|
.ENDM
|
||||||
;-------------------------------------
|
;-------------------------------------
|
||||||
.MACRO WAIT
|
.MACRO WAIT
|
||||||
; WAIT
|
; WAIT
|
||||||
; waits one frame (1/50 s(PAL) or 1/60s(NTSC))
|
; waits one frame (1/50 s(PAL) or 1/60s(NTSC))
|
||||||
?zero LDA VCOUNT
|
?ze LDA VCOUNT
|
||||||
cmp #$05 ; if line<5 then wait for line>4
|
cmp #16 ; if line<16 then wait for line>15 (long VBI protection)
|
||||||
bcc ?zero
|
bcc ?ze
|
||||||
cmp #$70
|
sbc #10 ; last lines correction
|
||||||
bcc ?WA ; if line>=112 then
|
?wa cmp VCOUNT
|
||||||
sbc #10 ; last lines correction
|
bcc ?wa
|
||||||
?WA cmp VCOUNT
|
?wf cmp VCOUNT
|
||||||
beq ?WA
|
bcs ?wf
|
||||||
bcc ?WA
|
.ENDM
|
||||||
?WFRAME cmp VCOUNT
|
|
||||||
beq ?nowait
|
|
||||||
bcs ?WFRAME
|
|
||||||
?nowait
|
|
||||||
.ENDM
|
|
||||||
;-------------------------------------
|
;-------------------------------------
|
||||||
.macro waitRTC
|
.macro waitRTC
|
||||||
lda RTCLOK+2
|
lda RTCLOK+2
|
||||||
|
|||||||
+14
-11
@@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
.macro build
|
.macro build
|
||||||
dta d"1.25" ; number of this build (4 bytes)
|
dta d"1.26" ; number of this build (4 bytes)
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro RMTSong
|
.macro RMTSong
|
||||||
@@ -27,12 +27,13 @@
|
|||||||
icl 'definitions.asm'
|
icl 'definitions.asm'
|
||||||
;---------------------------------------------------
|
;---------------------------------------------------
|
||||||
|
|
||||||
FirstZpageVariable = $5A
|
FirstZpageVariable = $59
|
||||||
.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 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)
|
||||||
.zpvar xbyte .word
|
.zpvar xbyte .word
|
||||||
@@ -274,14 +275,12 @@ rom2joy
|
|||||||
; modify the text
|
; modify the text
|
||||||
splash_text = $3c80 ; '.scorch.supersystem.copyright.19xx.atari'
|
splash_text = $3c80 ; '.scorch.supersystem.copyright.19xx.atari'
|
||||||
splash_year = splash_text + $1e
|
splash_year = splash_text + $1e
|
||||||
lda #"2"
|
splash_copyright = splash_text + $14
|
||||||
sta splash_year
|
ldy #19 ; 20 characters
|
||||||
sta splash_year+2
|
@ lda NewSplashText,y
|
||||||
lda #"0"
|
sta splash_copyright,y
|
||||||
sta splash_year+1
|
dey
|
||||||
lda #"3"
|
bpl @-
|
||||||
sta splash_year+3
|
|
||||||
|
|
||||||
|
|
||||||
; splash screen delay. maybe add fire to speed up?
|
; splash screen delay. maybe add fire to speed up?
|
||||||
@ cpx RTCLOK+1
|
@ cpx RTCLOK+1
|
||||||
@@ -1457,7 +1456,11 @@ EndOfCreditsVBI
|
|||||||
sta stick0
|
sta stick0
|
||||||
|
|
||||||
ldx JoystickNumber
|
ldx JoystickNumber
|
||||||
lda trig0,x
|
; 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
|
sta strig0 ;Move hardware to shadow
|
||||||
|
|
||||||
mva chbas chbase
|
mva chbas chbase
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+21
-21
@@ -1633,6 +1633,27 @@ 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 ;
|
.proc Display4x4AboveTank ;
|
||||||
; Displays texts using PutChar4x4 above tank and mountains.
|
; Displays texts using PutChar4x4 above tank and mountains.
|
||||||
@@ -1751,27 +1772,6 @@ DOTOldLowestValue
|
|||||||
|
|
||||||
.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 DisplayTankNameAbove ;
|
.proc DisplayTankNameAbove ;
|
||||||
lda tankNr
|
lda tankNr
|
||||||
|
|||||||
+26
-6
@@ -1166,8 +1166,17 @@ NoSpyHard
|
|||||||
cmp #$80|@kbcode._tab
|
cmp #$80|@kbcode._tab
|
||||||
jeq CTRLPressedTAB
|
jeq CTRLPressedTAB
|
||||||
|
|
||||||
and #$3f ;CTRL and SHIFT ellimination
|
|
||||||
jumpFromStick
|
jumpFromStick
|
||||||
|
.IF TARGET = 800
|
||||||
|
cmp #$80|17 ; Ctrl+Help
|
||||||
|
bne NoVdebugSwitch
|
||||||
|
lda Vdebug
|
||||||
|
eor #$ff
|
||||||
|
sta Vdebug
|
||||||
|
jmp ReleaseAndLoop
|
||||||
|
NoVdebugSwitch
|
||||||
|
.ENDIF
|
||||||
|
and #$3f ;CTRL and SHIFT ellimination
|
||||||
cmp #@kbcode._up ; $e
|
cmp #@kbcode._up ; $e
|
||||||
jeq pressedUp
|
jeq pressedUp
|
||||||
cmp #@kbcode._down ; $f
|
cmp #@kbcode._down ; $f
|
||||||
@@ -1451,8 +1460,10 @@ AfterOffensiveText
|
|||||||
cmp #ind_Laser__________ ; laser
|
cmp #ind_Laser__________ ; laser
|
||||||
bne NotStrongShoot
|
bne NotStrongShoot
|
||||||
; Laser: (not)very strong - invisible - shot for laser beam end coordinates
|
; Laser: (not)very strong - invisible - shot for laser beam end coordinates
|
||||||
|
bit Vdebug
|
||||||
|
bmi @+
|
||||||
mva #0 color
|
mva #0 color
|
||||||
lda #1
|
@ lda #1
|
||||||
sta Force
|
sta Force
|
||||||
sta Force+1
|
sta Force+1
|
||||||
mva #$ff LaserFlag ; $ff - Laser
|
mva #$ff LaserFlag ; $ff - Laser
|
||||||
@@ -1748,7 +1759,10 @@ LaserNoWalls
|
|||||||
bit TestFlightFlag
|
bit TestFlightFlag
|
||||||
bmi nowait
|
bmi nowait
|
||||||
bit LaserFlag ; faster laser prepare
|
bit LaserFlag ; faster laser prepare
|
||||||
bmi nowait
|
bpl nolaserwait
|
||||||
|
bit Vdebug
|
||||||
|
bpl nowait
|
||||||
|
nolaserwait
|
||||||
lda color
|
lda color
|
||||||
beq nonowait ; smoke tracer erases slowly
|
beq nonowait ; smoke tracer erases slowly
|
||||||
lda tracerflag
|
lda tracerflag
|
||||||
@@ -1789,10 +1803,16 @@ SkipCollisionCheck
|
|||||||
mwa ytraj+1 ydraw
|
mwa ytraj+1 ydraw
|
||||||
|
|
||||||
bit TestFlightFlag
|
bit TestFlightFlag
|
||||||
bvs NoUnPlot
|
bvc NoTestFlight
|
||||||
lda tracerflag
|
bit Vdebug
|
||||||
|
bpl NoTestFlight
|
||||||
|
jsr WaitOneFrame ; visualize AI targeting
|
||||||
|
jmp YesUnPlot
|
||||||
|
NoTestFlight
|
||||||
|
lda tracerflag
|
||||||
bne NoUnPlot
|
bne NoUnPlot
|
||||||
|
|
||||||
|
YesUnPlot
|
||||||
jsr UnPlot
|
jsr UnPlot
|
||||||
|
|
||||||
NoUnPlot
|
NoUnPlot
|
||||||
|
|||||||
Reference in New Issue
Block a user