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: ## 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 2022-05-09
The post midnight release with great, heavy new features: 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! - 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!=========================== ;==========================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) CashOptionL ;(one zero less than on the screen)
.by 0,<200,<500,<800,<1000 .by 0,<200,<500,<800,<1000
CashOptionH CashOptionH
@@ -989,7 +996,5 @@ scrcodes
dta d"qrstuvwx" dta d"qrstuvwx"
dta d"yz123456" dta d"yz123456"
dta d"7890." ; "-" dta d"7890." ; "-"
dliColors
:10 .by $02,$00
.endif .endif
+28 -28
View File
@@ -78,31 +78,31 @@ price______________63 = $ffff
;-------------------------------- ;--------------------------------
; names of RMT instruments (sfx) ; names of RMT instruments (sfx)
;-------------------------------- ;--------------------------------
sfx_set_power_1 = $00 sfx_set_power_1 = $00 ;A
sfx_set_power_2 = $01 sfx_set_power_2 = $01 ;b
sfx_lightning = $02 sfx_lightning = $02 ;c
sfx_dunno = $03 sfx_dunno = $03 ;d
sfx_nuke = $04 sfx_nuke = $04 ;e
sfx_baby_missile= $05 sfx_baby_missile= $05 ;f
sfx_death_begin = $06 sfx_death_begin = $06 ;g
sfx_plasma_1_2 = $07 sfx_plasma_1_2 = $07 ;h
sfx_plasma_2_2 = $08 sfx_plasma_2_2 = $08 ;i
sfx_napalm = $09 sfx_napalm = $09 ;j
sfx_dirt_charge = $0a sfx_dirt_charge = $0a ;k
sfx_missile_hit = $0b sfx_missile_hit = $0b ;l
sfx_funky_hit = $0c sfx_funky_hit = $0c ;m
sfx_shield_on = $0d sfx_shield_on = $0d ;n
sfx_shield_off = $0e sfx_shield_off = $0e ;o
sfx_parachute = $0f sfx_parachute = $0f ;p
sfx_smoke_cloud = $10 sfx_smoke_cloud = $10 ;q
sfx_riot_blast = $11 sfx_riot_blast = $11 ;r
sfx_sandhog = $12 sfx_sandhog = $12 ;s
sfx_dirt_chrg_s = $13 sfx_dirt_chrg_s = $13 ;t
sfx_digger = $14 sfx_digger = $14 ;u
sfx_silencer = $15 sfx_silencer = $15 ;v
sfx_next_player = $16 sfx_next_player = $16 ;w
sfx_purchase = $17 sfx_purchase = $17 ;x
sfx_keyclick = $18 sfx_keyclick = $18 ;y
sfx_shoot = $19 sfx_shoot = $19 ;z
sfx_seppuku = $1a sfx_seppuku = $1a ;1
sfx_liquid_dirt = $1b sfx_liquid_dirt = $1b ;2
+4 -4
View File
@@ -40,8 +40,8 @@ NameDL
.byte $42 .byte $42
.word NameScreen .word NameScreen
.byte $30 .byte $30
.byte $02,$30,$2 .byte $02,$30+$80,$02
.byte $10,2,2,2,$30,2,2 .byte $10,$02,$02,$02,$30,$02,$02
.byte $41 .byte $41
.word NameDL .word NameDL
; ------------------------------------------------- ; -------------------------------------------------
@@ -142,7 +142,7 @@ WeaponsDescription
EmptyLine EmptyLine
dta d" " dta d" "
LastLine LastLine
:40 dta $ff :40 dta $00 ; INVERSE
; ------------------------------------------------- ; -------------------------------------------------
.ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!! .ALIGN $1000 ; WARNING!!!! 4KiB barrier crossing here, might need reassignment!!!
NameScreen NameScreen
@@ -154,7 +154,7 @@ NameAdr
dta d" " dta d" "
NamesOfLevels NamesOfLevels
dta d" HUMAN Moron Shooter " dta d" HUMAN Moron Shooter "
dta d" Poolshark Toosser Chooser " dta d" Poolshark Tosser Chooser "
dta d" Spoiler Cyborg Unknown " dta d" Spoiler Cyborg Unknown "
dta d" " dta d" "
dta d"Tab"* dta d"Tab"*
+40 -32
View File
@@ -441,8 +441,8 @@ splot8 .proc
;-------------------------------------------------- ;--------------------------------------------------
clearscreen .proc clearscreen .proc
;-------------------------------------------------- ;--------------------------------------------------
lda #0 lda #$ff ; INVERSE
tax ldx #0
@ @
:31 sta display+($100*#),x :31 sta display+($100*#),x
sta display+$1e50,x ; this is so no space outside of the screen is cleared 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 #0 xdraw
mwa #mountaintable modify mwa #mountaintable modify
mva #1 color
drawmountainsloop drawmountainsloop
ldy #0 ldy #0
@@ -1021,7 +1021,7 @@ MakeUnPlot
lda color lda color
beq ClearUnPlot bne ClearUnPlot ; INVERSE
;plotting here ;plotting here
lda (xbyte),y lda (xbyte),y
@@ -1033,7 +1033,7 @@ ClearUnPlot
lda (xbyte),y lda (xbyte),y
sta OldOraTemp sta OldOraTemp
and bittable2,x and bittable2,x
; sta (xbyte),y sta (xbyte),y
ContinueUnPlot ContinueUnPlot
ldx WhichUnPlot ldx WhichUnPlot
lda OldOraTemp lda OldOraTemp
@@ -1115,7 +1115,7 @@ MakePlot
ldx ybit ldx ybit
lda color lda color
beq ClearPlot bne ClearPlot ; INVERSE
lda (xbyte),y lda (xbyte),y
ora bittable,x ora bittable,x
@@ -1163,6 +1163,7 @@ point .proc
lda (xbyte),y lda (xbyte),y
and bittable,x and bittable,x
eor bittable,x ; INVERSE
rts rts
.endp .endp
@@ -1174,7 +1175,7 @@ DrawLine .proc
sec sec
sbc ydraw sbc ydraw
sta tempbyte01 sta tempbyte01
jsr plot jsr plot.MakePlot
;rts ;rts
jmp IntoDraw ; jumps inside Draw routine jmp IntoDraw ; jumps inside Draw routine
; because one pixel is already plotted ; because one pixel is already plotted
@@ -1183,7 +1184,8 @@ DrawLine .proc
loopdraw loopdraw
lda (xbyte),y lda (xbyte),y
ora bittable,x ;ora bittable,x
and bittable2,x ; INVERSE
sta (xbyte),y sta (xbyte),y
IntoDraw adw xbyte #screenBytes IntoDraw adw xbyte #screenBytes
@@ -1214,8 +1216,9 @@ TypeChar .proc
ldy #7 ldy #7
CopyChar CopyChar
lda (fontind),y lda (fontind),y
eor #$ff ; INVERSE
sta char1,y sta char1,y
lda #$00 lda #$ff ; INVERSE
sta char2,y sta char2,y
dey dey
bpl CopyChar bpl CopyChar
@@ -1224,8 +1227,9 @@ CopyChar
ldy #7 ldy #7
CopyMask CopyMask
lda (fontind),y lda (fontind),y
eor #$ff ; INVERSE
sta mask1,y sta mask1,y
lda #$ff lda #$00 ; INVERSE
sta mask2,y sta mask2,y
dey dey
bpl CopyMask bpl CopyMask
@@ -1257,44 +1261,44 @@ CopyMask
ldx ybit ldx ybit
beq MaskOK00 beq MaskOK00
MakeMask00 MakeMask00
sec lsr mask1 ; INVERSE
ror mask1
ror mask2 ror mask2
sec lsr mask1+1 ; INVERSE
ror mask1+1
ror mask2+1 ror mask2+1
sec lsr mask1+2 ; INVERSE
ror mask1+2
ror mask2+2 ror mask2+2
sec lsr mask1+3 ; INVERSE
ror mask1+3
ror mask2+3 ror mask2+3
sec lsr mask1+4 ; INVERSE
ror mask1+4
ror mask2+4 ror mask2+4
sec lsr mask1+5 ; INVERSE
ror mask1+5
ror mask2+5 ror mask2+5
sec lsr mask1+6 ; INVERSE
ror mask1+6
ror mask2+6 ror mask2+6
sec lsr mask1+7 ; INVERSE
ror mask1+7
ror mask2+7 ror mask2+7
lsr char1 sec ; INVERSE
ror char1
ror char2 ror char2
sec ; INVERSE
ror char1+1 ror char1+1
ror char2+1 ror char2+1
sec ; INVERSE
ror char1+2 ror char1+2
ror char2+2 ror char2+2
sec ; INVERSE
ror char1+3 ror char1+3
ror char2+3 ror char2+3
sec ; INVERSE
ror char1+4 ror char1+4
ror char2+4 ror char2+4
sec ; INVERSE
ror char1+5 ror char1+5
ror char2+5 ror char2+5
sec ; INVERSE
ror char1+6 ror char1+6
ror char2+6 ror char2+6
sec ; INVERSE
ror char1+7 ror char1+7
ror char2+7 ror char2+7
dex dex
@@ -1303,7 +1307,7 @@ MaskOK00
; here x=0 ; here x=0
lda Erase lda Erase
beq CharLoopi ; it works, because x=0 beq CharLoopi ; it works, because x=0
lda #0 lda #$ff ; INVERSE
ldx #7 ldx #7
EmptyChar EmptyChar
sta char1,x sta char1,x
@@ -1313,13 +1317,17 @@ EmptyChar
ldx #0 ldx #0
CharLoopi CharLoopi
lda (xbyte),y lda (xbyte),y
and mask1,x ;and mask1,x
ora char1,x ;ora char1,x
ora mask1,x ; INVERSE
and char1,x ; INVERSE
sta (xbyte),y sta (xbyte),y
iny iny
lda (xbyte),y lda (xbyte),y
and mask2,x ;and mask2,x
ora char2,x ;ora char2,x
ora mask2,x ; INVERSE
and char2,x ; INVERSE
sta (xbyte),y sta (xbyte),y
dey dey
adw xbyte #screenBytes adw xbyte #screenBytes
+44 -22
View File
@@ -3,7 +3,7 @@
;--------------------------------------------------- ;---------------------------------------------------
;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 2022 ;Miami&Warsaw 2022
;you can contact us at pecus@poczta.fm or pirx@5oft.pl ;you can contact us at pecus@poczta.fm or pirx@5oft.pl
;home page of this project is https://github.com/pkali/scorch_src ;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 ;we decided it must go in 'English' to let other people work on it
.macro build .macro build
dta d"139" ; number of this build (3 bytes) dta d"140" ; number of this build (3 bytes)
.endm .endm
icl 'definitions.asm' icl 'definitions.asm'
@@ -116,13 +116,14 @@ START
; Startup sequence ; Startup sequence
jsr Initialize jsr Initialize
VMAIN VBLinterrupt,6 ; jsr SetVBL
mwa #OptionsDL dlptrs mwa #OptionsDL dlptrs
lda dmactls lda dmactls
and #$fc and #$fc
ora #$02 ; normal screen width ora #$02 ; normal screen width
sta dmactls sta dmactls
VDLI DLIinterruptText.DLIinterruptNone ; jsr SetDLI for text screen without DLIs
jsr Options ;startup screen jsr Options ;startup screen
@@ -132,10 +133,13 @@ START
and #$fc and #$fc
ora #$01 ; narrow screen (32 chars) ora #$01 ; narrow screen (32 chars)
sta dmactls sta dmactls
VDLI DLIinterruptText ; jsr SetDLI for text (names) screen
mva #0 TankNr mva #0 TankNr
@ tax
@ jsr EnterPlayerName lda TankStatusColoursTable,x
sta colpf2s ; set color of player name line
jsr EnterPlayerName
inc TankNr inc TankNr
lda TankNr lda TankNr
cmp NumberOfPlayers cmp NumberOfPlayers
@@ -151,10 +155,12 @@ START
; for the round #1 shooting sequence is random ; for the round #1 shooting sequence is random
MainGameLoop MainGameLoop
VDLI DLIinterrupt ; jsr SetDLI VDLI DLIinterruptText ; jsr SetDLI for text (purchase) screen
jsr CallPurchaseForEveryTank jsr CallPurchaseForEveryTank
VDLI DLIinterruptGraph ; jsr SetDLI for graphics (game) screen
mwa #dl dlptrs mwa #dl dlptrs
lda dmactls lda dmactls
and #$fc and #$fc
@@ -395,7 +401,7 @@ DoNotFinishTheRound
mva #1 color ;to display flying point mva #1 color ;to display flying point
lda TankColoursTable,x lda TankStatusColoursTable,x
sta colpf2s ; set color of status line sta colpf2s ; set color of status line
lda SkillTable,x lda SkillTable,x
@@ -784,8 +790,8 @@ deletePtr = temp
jsr WeaponCleanup jsr WeaponCleanup
mva #$2 colpf2s mva #TextBackgroundColor colpf2s
mva #12 colpf3s mva #TextForegroundColor colpf3s
mva #>WeaponFont chbas mva #>WeaponFont chbas
;parameter for old plot (unPlot) max 5 points ;parameter for old plot (unPlot) max 5 points
@@ -797,6 +803,7 @@ SetunPlots
sta oldplotH,x sta oldplotH,x
lda #0 lda #0
sta oldply,x sta oldply,x
lda #$ff ; INVERSE
sta oldora,x sta oldora,x
dex dex
bpl SetunPlots bpl SetunPlots
@@ -818,16 +825,16 @@ SetunPlots
lda #$10 ; P/M priorities (bit 4 joins missiles) lda #$10 ; P/M priorities (bit 4 joins missiles)
sta gtictls sta gtictls
jsr PMoutofScreen jsr PMoutofScreen
lda #$50 ; temporary colours of sprites under tanks lda TankColoursTable ; temporary colours of sprites under tanks
sta $2c0 sta $2c0
lda #$30 lda TankColoursTable+1
sta $2c1 sta $2c1
lda #$70 lda TankColoursTable+2
sta $2c2 sta $2c2
lda #$90 lda TankColoursTable+3
sta $2c3 sta $2c3
LDA #$B0 LDA TankColoursTable+4
STA COLPF3S STA COLPF3S ; joined missiles (5th tank)
mva #0 hscrol mva #0 hscrol
@@ -862,24 +869,39 @@ ClearResults
lda #0 ;starting song line 0-255 to A reg lda #0 ;starting song line 0-255 to A reg
jsr RASTERMUSICTRACKER ;Init jsr RASTERMUSICTRACKER ;Init
; ;
VMAIN VBLinterrupt,6 ;jsr SetVBL
rts rts
.endp .endp
DLIinterrupt .proc DLIinterruptGraph .proc
pha pha
phy phy
ldy dliCounter ldy dliCounter
lda dliColors,y lda dliColorsBack,y
;lda #$02 ; color of playground ldy dliColorsFore
sta WSYNC nop
sta COLPF2 nop
nop
; sta WSYNC
sta COLPF1
sty COLPF2
inc dliCounter inc dliCounter
ply ply
pla pla
rti rti
.endp .endp
DLIinterruptText .proc
pha
sta WSYNC
mva #TextBackgroundColor colpf2
mva #TextForegroundColor colpf3
pla
DLIinterruptNone
rti
.endp
VBLinterrupt .proc VBLinterrupt .proc
pha pha
phx phx
@@ -1168,7 +1190,7 @@ checkJoyGetKey
rts rts
notpressedJoyGetKey notpressedJoyGetKey
;fire ;fire
lda TRIG0 lda TRIG0S
bne @- bne @-
lda #$0c ;Return key lda #$0c ;Return key
rts rts
@@ -1188,7 +1210,7 @@ WaitForKeyRelease .proc
and #$0f and #$0f
cmp #$0f cmp #$0f
bne WaitForKeyRelease bne WaitForKeyRelease
lda TRIG0 lda TRIG0S
beq WaitForKeyRelease beq WaitForKeyRelease
lda SKSTAT lda SKSTAT
cmp #$ff cmp #$ff
BIN
View File
Binary file not shown.
+3 -1
View File
@@ -228,7 +228,7 @@ AfterManualPurchase
jsr PMoutofScreen jsr PMoutofScreen
ldx tankNr ldx tankNr
lda TankColoursTable,x lda TankStatusColoursTable,x
sta colpf2s sta colpf2s
; we are clearing list of the weapons ; we are clearing list of the weapons
@@ -1393,6 +1393,8 @@ EndOfTypeLine4x4
.proc DisplayResults ; .proc DisplayResults ;
;displays results of the round ;displays results of the round
;using 4x4 font ;using 4x4 font
mva #sfx_smoke_cloud sfx_effect
;centering the result screen ;centering the result screen
mwa #((ScreenWidth/2)-(8*4)) ResultX mwa #((ScreenWidth/2)-(8*4)) ResultX
+3 -3
View File
@@ -15,7 +15,7 @@ TanksNames ; DO NOT ZERO - ticket #24
:6 dta d" " :6 dta d" "
;---------------------------- ;----------------------------
;Options DO NOT ZERO - ticket #27 ;Options DO NOT ZERO - ticket #27
OptionsTable .by 0,0,2,2,0,1,4 OptionsTable .by 0,0,2,2,0,1,3
RoundsInTheGame .by 10 ;how many rounds in the current game RoundsInTheGame .by 10 ;how many rounds in the current game
seppukuVal .by 75 seppukuVal .by 75
;-------------------------------------------------- ;--------------------------------------------------
@@ -43,7 +43,7 @@ flyDelay .ds 1
;-------------- ;--------------
NumberOfPlayers .DS 1 ;current number of players (counted from 1) NumberOfPlayers .DS 1 ;current number of players (counted from 1)
TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round TankSequence .DS [MaxPlayers] ;sequence of shooting during the Round
GameIsOver .DS 1 ; 1 - it was the last round in the game GameIsOver .DS 1 ; 1 means it was the last round in the game
;----------------------------------- ;-----------------------------------
moneyH ;we place zero at the end of prices and money moneyH ;we place zero at the end of prices and money
;and have range from 0 to 99990 (not too much) ;and have range from 0 to 99990 (not too much)
@@ -152,7 +152,7 @@ digtabyL .DS [8]
digtabyH .DS [8] digtabyH .DS [8]
; liquiddirt ; liquiddirt
TempXfill .ds 2 TempXfill .ds 2
FillCounter .ds 1 FillCounter .ds 2
;sandhog ;sandhog
sandhogflag .DS 1 ; (0 digger, 8 sandhog) sandhogflag .DS 1 ; (0 digger, 8 sandhog)
;ofdirt ;ofdirt
+21 -15
View File
@@ -523,6 +523,12 @@ DiggerCharacter
jmp cleanDirt jmp cleanDirt
.endp .endp
; ------------------------ ; ------------------------
.proc liquiddirt
mva #sfx_liquid_dirt sfx_effect
mwa #254 FillCounter
jmp xliquiddirt
.endp
; ------------------------
.proc laser .proc laser
ldx TankNr ldx TankNr
lda AngleTable,x lda AngleTable,x
@@ -686,6 +692,7 @@ dirtLoop
; ----------------- ; -----------------
.proc xriotbomb ; .proc xriotbomb ;
; ----------------- ; -----------------
mva #sfx_riot_blast sfx_effect
lda #0 lda #0
sta radius sta radius
sta color sta color
@@ -746,13 +753,13 @@ UpNotYet
beq HowMuchToFallRight2 beq HowMuchToFallRight2
.nowarn dew xdraw .nowarn dew xdraw
lda xdraw lda xdraw
bne RollinContinues bne RollinContinues ; like cpw xdraw #0
lda xdraw+1 lda xdraw+1
jne RollinContinues jne RollinContinues
beq ExplodeNow beq ExplodeNow
HowMuchToFallRight2 HowMuchToFallRight2
inw xdraw inw xdraw
cpw xdraw screenwidth cpw xdraw #screenwidth
jne RollinContinues jne RollinContinues
ExplodeNow ExplodeNow
mwa xdraw xcircle ; we must store somewhere (BAD) mwa xdraw xcircle ; we must store somewhere (BAD)
@@ -890,17 +897,15 @@ EndOfTheDirt
rts rts
.endp .endp
; ---------------- ; ----------------
.proc liquiddirt ; .proc xliquiddirt ;
mva #sfx_liquid_dirt sfx_effect
mva xdraw TempXfill mva xdraw TempXfill
mva #254 FillCounter
RepeatFill RepeatFill
mva TempXfill xdraw mva TempXfill xdraw
jsr checkRollDirection jsr checkRollDirection
; HowMuchToFall - direction ; HowMuchToFall - direction
; $FF - we are in a hole (flying in missile direction) ; $FF - we are in a hole (flying in missile direction)
; 1 - right, 2 - left ; 1 - right, 2 - left
adw xdraw #mountaintable tempXROLLER adw xdraw #mountaintable tempXROLLER
ldy #0 ldy #0
lda (tempXROLLER),y lda (tempXROLLER),y
sta HeightRol ; relative point sta HeightRol ; relative point
@@ -911,7 +916,6 @@ RollinContinuesLiquid
ldy #0 ldy #0
lda (tempXROLLER),y lda (tempXROLLER),y
sta ydraw sta ydraw
beq FillNow
cmp HeightRol cmp HeightRol
beq UpNotYet2 beq UpNotYet2
bcc FillNow bcc FillNow
@@ -924,14 +928,12 @@ UpNotYet2
cmp #1 cmp #1
beq HowMuchToFallRight3 beq HowMuchToFallRight3
.NOWARN dew xdraw .NOWARN dew xdraw
lda xdraw cpw xdraw #$ffff
bne RollinContinuesLiquid
lda xdraw+1
jne RollinContinuesLiquid jne RollinContinuesLiquid
beq FillNow beq FillNow
HowMuchToFallRight3 HowMuchToFallRight3
inw xdraw inw xdraw
cpw xdraw screenwidth cpw xdraw #(screenwidth+1)
jne RollinContinuesLiquid jne RollinContinuesLiquid
FillNow FillNow
; finally one pixel more ; finally one pixel more
@@ -948,12 +950,15 @@ FillHole
adw xdraw #mountaintable tempXROLLER adw xdraw #mountaintable tempXROLLER
lda (tempXROLLER),y lda (tempXROLLER),y
sta ydraw sta ydraw
beq ToHighFill ; if we filled all playfield (very rare but possible)
dec ydraw ; one pixel up dec ydraw ; one pixel up
ToHighFill
lda ydraw lda ydraw
sta (tempXROLLER),y ;mountaintable update sta (tempXROLLER),y ;mountaintable update
mva #1 color mva #1 color
jsr plot jsr plot.MakePlot
dec FillCounter .nowarn dew FillCounter
cpw FillCounter #0
jne RepeatFill jne RepeatFill
rts rts
.endp .endp
@@ -1001,7 +1006,7 @@ ContinueToCheckMaxForce2
; $f3 - shift+key ; $f3 - shift+key
notpressed notpressed
lda TRIG0 lda TRIG0S
beq notpressed beq notpressed
lda SKSTAT lda SKSTAT
cmp #$ff cmp #$ff
@@ -1046,7 +1051,7 @@ checkJoy
jmp jumpFromStick jmp jumpFromStick
notpressedJoy notpressedJoy
;fire ;fire
lda TRIG0 lda TRIG0S
jeq pressedSpace jeq pressedSpace
jmp notpressed jmp notpressed
@@ -1149,6 +1154,7 @@ NotThrough90DegreesRight
jmp BeforeFire jmp BeforeFire
pressedTAB pressedTAB
mva #sfx_purchase sfx_effect
ldx TankNr ldx TankNr
inc ActiveWeapon,x inc ActiveWeapon,x
lda ActiveWeapon,x lda ActiveWeapon,x