Compare commits

..

13 Commits

Author SHA1 Message Date
Pirx 68bf4a9541 build 140 2022-05-15 23:21:47 -04:00
Pecusx 08f7680563 Colors on tanks names screen 2022-05-14 20:28:14 +02:00
Pirx d766088b66 colors upd+weapon change sfx 2022-05-14 08:13:32 -04:00
Pecusx de5bfab2a8 Tank colors bugfix & new DLI for purchase screen
He, he.
The tank colors were not taken from the table :)
2022-05-13 09:18:50 +02:00
Pecusx 91b39e736b Minor optimizations
LiquidDirt and TypeChar (8x8 on graphics screen - like tanks) are little faster now.
2022-05-12 19:45:42 +02:00
Pecusx 572bee982a Test
I'am in develop branch :)
2022-05-12 19:02:26 +02:00
Pirx b37dc73f52 WIP: colors test 2022-05-12 09:53:56 -04:00
Pecusx 11ddf69de9 Merge branch 'master' of https://github.com/pkali/scorch_src 2022-05-11 19:03:42 +02:00
Pecusx 0ba4594712 Playfield in niverse
Playfield is now drawn in inverse for better color control (in future ;) )
Problems in DLI!
2022-05-11 19:03:35 +02:00
Pirx 8556dfe0d7 joytest for real hardware 2022-05-11 10:51:22 -04:00
Pecusx 860d0917ad Fixed bugs in LiqudDirt and Roller
Correct operation of dirt at the edges of the screen, and now dirt counter is two bytes (more and more dirt is possible).
Correction of the roller's (and LiquidDirtoperation on the right side of the screen. (old stiupid error)
2022-05-09 17:58:07 +02:00
Pecusx 2de2c24373 Very old bug fixed!
In the second (and next) round, the ground was drawn one pixel lower than it should have been.
2022-05-09 11:20:42 +02:00
Pirx a6382c5dc0 README UPDT 2022-05-09 01:32:02 -04:00
12 changed files with 181 additions and 109 deletions
+10 -1
View File
@@ -46,7 +46,16 @@ With the advent of fujinet (https://fujinet.online/) we are thinking about makin
## Changes:
###### Build 138
###### Build 140
2022-05-15
Huge internal changes by @Pecusx. The whole game screen has been inverted - ground is now background color, "sky" and empty areas are in fact pixels. This allowed for introducing better tank colorization, fully devised and lead by Adam. The process started and results are already promising - the colors of tanks and the status bar are closer. We might get even better ones in the next builds.
- few new sfx added (end of round, weapon change, soil eating weapons)
- added colors to tank name and level selection screen
- Bug https://github.com/pkali/scorch_src/issues/57 possibly alleviated by using TRIG0S instead of TRIG0. Please test - it did not show for me.
Other unlisted minor bugs and typos fixed.
"Nightly" version moved to `develop` branch. `master` will be updated with stablish and playablish builds only.
###### Build 139
2022-05-09
The post midnight release with great, heavy new features:
- https://github.com/pkali/scorch_src/issues/48, https://github.com/pkali/scorch_src/issues/10 - thanks to Miker we have a bunch of fresh sound effects. Not everything is perfectly implemented, but the game definitely got nicer! Thank you again Miker!
+20
View File
@@ -0,0 +1,20 @@
icl '../lib/atari.hea'
org $2000
joytest
mva #0 dmactls
@
lda trig0
beq pressed
mva #0 colbak
beq @-
pressed
lda #$0f
;ora jstick0
sta colbak
jmp @-
run joytest
Binary file not shown.
+8 -3
View File
@@ -5,7 +5,14 @@
;===================================================================================
;==========================CONSTANT TABLES, do not erase!===========================
;===================================================================================
TankColoursTable .BYTE $52,$32,$72,$92,$B2,$02
TankColoursTable .BYTE $88,$cc,$38,$1c,$6a,$02
TankStatusColoursTable .BYTE $80,$c0,$30,$10,$60,$00
dliColorsBack
:10 .by $02,$00
dliColorsFore
.by $0a
TextBackgroundColor = $02 ; REAL constans - use: LDA #TextBackgroundColor
TextForegroundColor = $0c
CashOptionL ;(one zero less than on the screen)
.by 0,<200,<500,<800,<1000
CashOptionH
@@ -989,7 +996,5 @@ scrcodes
dta d"qrstuvwx"
dta d"yz123456"
dta d"7890." ; "-"
dliColors
:10 .by $02,$00
.endif
+28 -28
View File
@@ -78,31 +78,31 @@ price______________63 = $ffff
;--------------------------------
; names of RMT instruments (sfx)
;--------------------------------
sfx_set_power_1 = $00
sfx_set_power_2 = $01
sfx_lightning = $02
sfx_dunno = $03
sfx_nuke = $04
sfx_baby_missile= $05
sfx_death_begin = $06
sfx_plasma_1_2 = $07
sfx_plasma_2_2 = $08
sfx_napalm = $09
sfx_dirt_charge = $0a
sfx_missile_hit = $0b
sfx_funky_hit = $0c
sfx_shield_on = $0d
sfx_shield_off = $0e
sfx_parachute = $0f
sfx_smoke_cloud = $10
sfx_riot_blast = $11
sfx_sandhog = $12
sfx_dirt_chrg_s = $13
sfx_digger = $14
sfx_silencer = $15
sfx_next_player = $16
sfx_purchase = $17
sfx_keyclick = $18
sfx_shoot = $19
sfx_seppuku = $1a
sfx_liquid_dirt = $1b
sfx_set_power_1 = $00 ;A
sfx_set_power_2 = $01 ;b
sfx_lightning = $02 ;c
sfx_dunno = $03 ;d
sfx_nuke = $04 ;e
sfx_baby_missile= $05 ;f
sfx_death_begin = $06 ;g
sfx_plasma_1_2 = $07 ;h
sfx_plasma_2_2 = $08 ;i
sfx_napalm = $09 ;j
sfx_dirt_charge = $0a ;k
sfx_missile_hit = $0b ;l
sfx_funky_hit = $0c ;m
sfx_shield_on = $0d ;n
sfx_shield_off = $0e ;o
sfx_parachute = $0f ;p
sfx_smoke_cloud = $10 ;q
sfx_riot_blast = $11 ;r
sfx_sandhog = $12 ;s
sfx_dirt_chrg_s = $13 ;t
sfx_digger = $14 ;u
sfx_silencer = $15 ;v
sfx_next_player = $16 ;w
sfx_purchase = $17 ;x
sfx_keyclick = $18 ;y
sfx_shoot = $19 ;z
sfx_seppuku = $1a ;1
sfx_liquid_dirt = $1b ;2
+4 -4
View File
@@ -40,8 +40,8 @@ NameDL
.byte $42
.word NameScreen
.byte $30
.byte $02,$30,$2
.byte $10,2,2,2,$30,2,2
.byte $02,$30+$80,$02
.byte $10,$02,$02,$02,$30,$02,$02
.byte $41
.word NameDL
; -------------------------------------------------
@@ -142,7 +142,7 @@ WeaponsDescription
EmptyLine
dta d" "
LastLine
:40 dta $ff
:40 dta $00 ; INVERSE
; -------------------------------------------------
.ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!!
NameScreen
@@ -154,7 +154,7 @@ NameAdr
dta d" "
NamesOfLevels
dta d" HUMAN Moron Shooter "
dta d" Poolshark Toosser Chooser "
dta d" Poolshark Tosser Chooser "
dta d" Spoiler Cyborg Unknown "
dta d" "
dta d"Tab"*
+40 -32
View File
@@ -441,8 +441,8 @@ splot8 .proc
;--------------------------------------------------
clearscreen .proc
;--------------------------------------------------
lda #0
tax
lda #$ff ; INVERSE
ldx #0
@
:31 sta display+($100*#),x
sta display+$1e50,x ; this is so no space outside of the screen is cleared
@@ -676,7 +676,7 @@ drawmountains .proc
mwa #0 xdraw
mwa #mountaintable modify
mva #1 color
drawmountainsloop
ldy #0
@@ -1021,7 +1021,7 @@ MakeUnPlot
lda color
beq ClearUnPlot
bne ClearUnPlot ; INVERSE
;plotting here
lda (xbyte),y
@@ -1033,7 +1033,7 @@ ClearUnPlot
lda (xbyte),y
sta OldOraTemp
and bittable2,x
; sta (xbyte),y
sta (xbyte),y
ContinueUnPlot
ldx WhichUnPlot
lda OldOraTemp
@@ -1115,7 +1115,7 @@ MakePlot
ldx ybit
lda color
beq ClearPlot
bne ClearPlot ; INVERSE
lda (xbyte),y
ora bittable,x
@@ -1163,6 +1163,7 @@ point .proc
lda (xbyte),y
and bittable,x
eor bittable,x ; INVERSE
rts
.endp
@@ -1174,7 +1175,7 @@ DrawLine .proc
sec
sbc ydraw
sta tempbyte01
jsr plot
jsr plot.MakePlot
;rts
jmp IntoDraw ; jumps inside Draw routine
; because one pixel is already plotted
@@ -1183,7 +1184,8 @@ DrawLine .proc
loopdraw
lda (xbyte),y
ora bittable,x
;ora bittable,x
and bittable2,x ; INVERSE
sta (xbyte),y
IntoDraw adw xbyte #screenBytes
@@ -1214,8 +1216,9 @@ TypeChar .proc
ldy #7
CopyChar
lda (fontind),y
eor #$ff ; INVERSE
sta char1,y
lda #$00
lda #$ff ; INVERSE
sta char2,y
dey
bpl CopyChar
@@ -1224,8 +1227,9 @@ CopyChar
ldy #7
CopyMask
lda (fontind),y
eor #$ff ; INVERSE
sta mask1,y
lda #$ff
lda #$00 ; INVERSE
sta mask2,y
dey
bpl CopyMask
@@ -1257,44 +1261,44 @@ CopyMask
ldx ybit
beq MaskOK00
MakeMask00
sec
ror mask1
lsr mask1 ; INVERSE
ror mask2
sec
ror mask1+1
lsr mask1+1 ; INVERSE
ror mask2+1
sec
ror mask1+2
lsr mask1+2 ; INVERSE
ror mask2+2
sec
ror mask1+3
lsr mask1+3 ; INVERSE
ror mask2+3
sec
ror mask1+4
lsr mask1+4 ; INVERSE
ror mask2+4
sec
ror mask1+5
lsr mask1+5 ; INVERSE
ror mask2+5
sec
ror mask1+6
lsr mask1+6 ; INVERSE
ror mask2+6
sec
ror mask1+7
lsr mask1+7 ; INVERSE
ror mask2+7
lsr char1
sec ; INVERSE
ror char1
ror char2
sec ; INVERSE
ror char1+1
ror char2+1
sec ; INVERSE
ror char1+2
ror char2+2
sec ; INVERSE
ror char1+3
ror char2+3
sec ; INVERSE
ror char1+4
ror char2+4
sec ; INVERSE
ror char1+5
ror char2+5
sec ; INVERSE
ror char1+6
ror char2+6
sec ; INVERSE
ror char1+7
ror char2+7
dex
@@ -1303,7 +1307,7 @@ MaskOK00
; here x=0
lda Erase
beq CharLoopi ; it works, because x=0
lda #0
lda #$ff ; INVERSE
ldx #7
EmptyChar
sta char1,x
@@ -1313,13 +1317,17 @@ EmptyChar
ldx #0
CharLoopi
lda (xbyte),y
and mask1,x
ora char1,x
;and mask1,x
;ora char1,x
ora mask1,x ; INVERSE
and char1,x ; INVERSE
sta (xbyte),y
iny
lda (xbyte),y
and mask2,x
ora char2,x
;and mask2,x
;ora char2,x
ora mask2,x ; INVERSE
and char2,x ; INVERSE
sta (xbyte),y
dey
adw xbyte #screenBytes
+44 -22
View File
@@ -3,7 +3,7 @@
;---------------------------------------------------
;by Tomasz 'pecus' Pecko and Pawel 'pirx' Kalinowski
;Warsaw 2000,2001,2002,2003,2009,2012,2013
;Miami 2022
;Miami&Warsaw 2022
;you can contact us at pecus@poczta.fm or pirx@5oft.pl
;home page of this project is https://github.com/pkali/scorch_src
@@ -36,7 +36,7 @@
;we decided it must go in 'English' to let other people work on it
.macro build
dta d"139" ; number of this build (3 bytes)
dta d"140" ; number of this build (3 bytes)
.endm
icl 'definitions.asm'
@@ -116,13 +116,14 @@ START
; Startup sequence
jsr Initialize
VMAIN VBLinterrupt,6 ; jsr SetVBL
mwa #OptionsDL dlptrs
lda dmactls
and #$fc
ora #$02 ; normal screen width
sta dmactls
VDLI DLIinterruptText.DLIinterruptNone ; jsr SetDLI for text screen without DLIs
jsr Options ;startup screen
@@ -132,10 +133,13 @@ START
and #$fc
ora #$01 ; narrow screen (32 chars)
sta dmactls
VDLI DLIinterruptText ; jsr SetDLI for text (names) screen
mva #0 TankNr
@ jsr EnterPlayerName
@ tax
lda TankStatusColoursTable,x
sta colpf2s ; set color of player name line
jsr EnterPlayerName
inc TankNr
lda TankNr
cmp NumberOfPlayers
@@ -151,10 +155,12 @@ START
; for the round #1 shooting sequence is random
MainGameLoop
VDLI DLIinterrupt ; jsr SetDLI
VDLI DLIinterruptText ; jsr SetDLI for text (purchase) screen
jsr CallPurchaseForEveryTank
VDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
mwa #dl dlptrs
lda dmactls
and #$fc
@@ -395,7 +401,7 @@ DoNotFinishTheRound
mva #1 color ;to display flying point
lda TankColoursTable,x
lda TankStatusColoursTable,x
sta colpf2s ; set color of status line
lda SkillTable,x
@@ -784,8 +790,8 @@ deletePtr = temp
jsr WeaponCleanup
mva #$2 colpf2s
mva #12 colpf3s
mva #TextBackgroundColor colpf2s
mva #TextForegroundColor colpf3s
mva #>WeaponFont chbas
;parameter for old plot (unPlot) max 5 points
@@ -797,6 +803,7 @@ SetunPlots
sta oldplotH,x
lda #0
sta oldply,x
lda #$ff ; INVERSE
sta oldora,x
dex
bpl SetunPlots
@@ -818,16 +825,16 @@ SetunPlots
lda #$10 ; P/M priorities (bit 4 joins missiles)
sta gtictls
jsr PMoutofScreen
lda #$50 ; temporary colours of sprites under tanks
lda TankColoursTable ; temporary colours of sprites under tanks
sta $2c0
lda #$30
lda TankColoursTable+1
sta $2c1
lda #$70
lda TankColoursTable+2
sta $2c2
lda #$90
lda TankColoursTable+3
sta $2c3
LDA #$B0
STA COLPF3S
LDA TankColoursTable+4
STA COLPF3S ; joined missiles (5th tank)
mva #0 hscrol
@@ -862,24 +869,39 @@ ClearResults
lda #0 ;starting song line 0-255 to A reg
jsr RASTERMUSICTRACKER ;Init
;
VMAIN VBLinterrupt,6 ;jsr SetVBL
rts
.endp
DLIinterrupt .proc
DLIinterruptGraph .proc
pha
phy
ldy dliCounter
lda dliColors,y
;lda #$02 ; color of playground
sta WSYNC
sta COLPF2
lda dliColorsBack,y
ldy dliColorsFore
nop
nop
nop
; sta WSYNC
sta COLPF1
sty COLPF2
inc dliCounter
ply
pla
rti
.endp
DLIinterruptText .proc
pha
sta WSYNC
mva #TextBackgroundColor colpf2
mva #TextForegroundColor colpf3
pla
DLIinterruptNone
rti
.endp
VBLinterrupt .proc
pha
phx
@@ -1168,7 +1190,7 @@ checkJoyGetKey
rts
notpressedJoyGetKey
;fire
lda TRIG0
lda TRIG0S
bne @-
lda #$0c ;Return key
rts
@@ -1188,7 +1210,7 @@ WaitForKeyRelease .proc
and #$0f
cmp #$0f
bne WaitForKeyRelease
lda TRIG0
lda TRIG0S
beq WaitForKeyRelease
lda SKSTAT
cmp #$ff
BIN
View File
Binary file not shown.
+3 -1
View File
@@ -228,7 +228,7 @@ AfterManualPurchase
jsr PMoutofScreen
ldx tankNr
lda TankColoursTable,x
lda TankStatusColoursTable,x
sta colpf2s
; we are clearing list of the weapons
@@ -1393,6 +1393,8 @@ EndOfTypeLine4x4
.proc DisplayResults ;
;displays results of the round
;using 4x4 font
mva #sfx_smoke_cloud sfx_effect
;centering the result screen
mwa #((ScreenWidth/2)-(8*4)) ResultX
+3 -3
View File
@@ -15,7 +15,7 @@ TanksNames ; DO NOT ZERO - ticket #24
:6 dta d" "
;----------------------------
;Options DO NOT ZERO - ticket #27
OptionsTable .by 0,0,2,2,0,1,4
OptionsTable .by 0,0,2,2,0,1,3
RoundsInTheGame .by 10 ;how many rounds in the current game
seppukuVal .by 75
;--------------------------------------------------
@@ -43,7 +43,7 @@ flyDelay .ds 1
;--------------
NumberOfPlayers .DS 1 ;current number of players (counted from 1)
TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round
GameIsOver .DS 1 ; 1 - 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
;and have range from 0 to 99990 (not too much)
@@ -152,7 +152,7 @@ digtabyL .DS [8]
digtabyH .DS [8]
; liquiddirt
TempXfill .ds 2
FillCounter .ds 1
FillCounter .ds 2
;sandhog
sandhogflag .DS 1 ; (0 digger, 8 sandhog)
;ofdirt
+21 -15
View File
@@ -523,6 +523,12 @@ DiggerCharacter
jmp cleanDirt
.endp
; ------------------------
.proc liquiddirt
mva #sfx_liquid_dirt sfx_effect
mwa #254 FillCounter
jmp xliquiddirt
.endp
; ------------------------
.proc laser
ldx TankNr
lda AngleTable,x
@@ -686,6 +692,7 @@ dirtLoop
; -----------------
.proc xriotbomb ;
; -----------------
mva #sfx_riot_blast sfx_effect
lda #0
sta radius
sta color
@@ -746,13 +753,13 @@ UpNotYet
beq HowMuchToFallRight2
.nowarn dew xdraw
lda xdraw
bne RollinContinues
bne RollinContinues ; like cpw xdraw #0
lda xdraw+1
jne RollinContinues
beq ExplodeNow
HowMuchToFallRight2
inw xdraw
cpw xdraw screenwidth
cpw xdraw #screenwidth
jne RollinContinues
ExplodeNow
mwa xdraw xcircle ; we must store somewhere (BAD)
@@ -890,17 +897,15 @@ EndOfTheDirt
rts
.endp
; ----------------
.proc liquiddirt ;
mva #sfx_liquid_dirt sfx_effect
.proc xliquiddirt ;
mva xdraw TempXfill
mva #254 FillCounter
RepeatFill
mva TempXfill xdraw
jsr checkRollDirection
; HowMuchToFall - direction
; $FF - we are in a hole (flying in missile direction)
; 1 - right, 2 - left
adw xdraw #mountaintable tempXROLLER
adw xdraw #mountaintable tempXROLLER
ldy #0
lda (tempXROLLER),y
sta HeightRol ; relative point
@@ -911,7 +916,6 @@ RollinContinuesLiquid
ldy #0
lda (tempXROLLER),y
sta ydraw
beq FillNow
cmp HeightRol
beq UpNotYet2
bcc FillNow
@@ -924,14 +928,12 @@ UpNotYet2
cmp #1
beq HowMuchToFallRight3
.NOWARN dew xdraw
lda xdraw
bne RollinContinuesLiquid
lda xdraw+1
cpw xdraw #$ffff
jne RollinContinuesLiquid
beq FillNow
HowMuchToFallRight3
inw xdraw
cpw xdraw screenwidth
cpw xdraw #(screenwidth+1)
jne RollinContinuesLiquid
FillNow
; finally one pixel more
@@ -948,12 +950,15 @@ FillHole
adw xdraw #mountaintable tempXROLLER
lda (tempXROLLER),y
sta ydraw
beq ToHighFill ; if we filled all playfield (very rare but possible)
dec ydraw ; one pixel up
ToHighFill
lda ydraw
sta (tempXROLLER),y ;mountaintable update
mva #1 color
jsr plot
dec FillCounter
jsr plot.MakePlot
.nowarn dew FillCounter
cpw FillCounter #0
jne RepeatFill
rts
.endp
@@ -1001,7 +1006,7 @@ ContinueToCheckMaxForce2
; $f3 - shift+key
notpressed
lda TRIG0
lda TRIG0S
beq notpressed
lda SKSTAT
cmp #$ff
@@ -1046,7 +1051,7 @@ checkJoy
jmp jumpFromStick
notpressedJoy
;fire
lda TRIG0
lda TRIG0S
jeq pressedSpace
jmp notpressed
@@ -1149,6 +1154,7 @@ NotThrough90DegreesRight
jmp BeforeFire
pressedTAB
mva #sfx_purchase sfx_effect
ldx TankNr
inc ActiveWeapon,x
lda ActiveWeapon,x