SFX: work in progress

This commit is contained in:
2022-05-08 01:10:33 -04:00
parent cd51be825d
commit 08964e2f68
9 changed files with 1538 additions and 42 deletions
+40
View File
@@ -0,0 +1,40 @@
;* --------BEGIN--------
;* Z:\home\pkalinowski\Seafile\atari\projects\scorch_src\artwork\sfx\scorch_trial07_stripped.rmt
FEAT_SFX equ 1
FEAT_GLOBALVOLUMEFADE equ 0 ;RMTGLOBALVOLUMEFADE variable
FEAT_NOSTARTINGSONGLINE equ 0
FEAT_INSTRSPEED equ 1
FEAT_CONSTANTSPEED equ 16 ;(0 times)
FEAT_COMMAND1 equ 1 ;(4 times)
FEAT_COMMAND2 equ 0 ;(0 times)
FEAT_COMMAND3 equ 0 ;(0 times)
FEAT_COMMAND4 equ 0 ;(0 times)
FEAT_COMMAND5 equ 0 ;(0 times)
FEAT_COMMAND6 equ 0 ;(0 times)
FEAT_COMMAND7SETNOTE equ 0 ;(0 times)
FEAT_COMMAND7VOLUMEONLY equ 0 ;(0 times)
FEAT_PORTAMENTO equ 0 ;(0 times)
FEAT_FILTER equ 1 ;(22 times)
FEAT_FILTERG0L equ 0 ;(0 times)
FEAT_FILTERG1L equ 0 ;(0 times)
FEAT_FILTERG0R equ 0 ;(0 times)
FEAT_FILTERG1R equ 0 ;(0 times)
FEAT_BASS16 equ 0 ;(0 times)
FEAT_BASS16G1L equ 0 ;(0 times)
FEAT_BASS16G3L equ 0 ;(0 times)
FEAT_BASS16G1R equ 0 ;(0 times)
FEAT_BASS16G3R equ 0 ;(0 times)
FEAT_VOLUMEONLYG0L equ 0 ;(0 times)
FEAT_VOLUMEONLYG2L equ 0 ;(0 times)
FEAT_VOLUMEONLYG3L equ 0 ;(0 times)
FEAT_VOLUMEONLYG0R equ 0 ;(0 times)
FEAT_VOLUMEONLYG2R equ 0 ;(0 times)
FEAT_VOLUMEONLYG3R equ 0 ;(0 times)
FEAT_TABLETYPE equ 0 ;(0 times)
FEAT_TABLEMODE equ 0 ;(0 times)
FEAT_TABLEGO equ 1 ;(1 times)
FEAT_AUDCTLMANUALSET equ 1 ;(4 times)
FEAT_VOLUMEMIN equ 0 ;(0 times)
FEAT_EFFECTVIBRATO equ 0 ;(0 times)
FEAT_EFFECTFSHIFT equ 1 ;(7 times)
;* --------END--------
File diff suppressed because it is too large Load Diff
Binary file not shown.
+26
View File
@@ -75,3 +75,29 @@ price_Auto_Defense___ = 0 ;_60
price_Fuel_Tank______ = 0 ;_61 price_Fuel_Tank______ = 0 ;_61
price_Contact_Trigger = 0 ;_62 price_Contact_Trigger = 0 ;_62
price______________63 = 0 price______________63 = 0
;--------------------------------
; 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_hit = $05
sfx_death_beg = $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_char_s = $13
sfx_digger = $14
sfx_key = $15
+4 -4
View File
@@ -120,7 +120,7 @@ NameAdr
dta d" Human/Atari (difficulty level) " dta d" Human/Atari (difficulty level) "
dta d" " dta d" "
NamesOfLevels NamesOfLevels
dta d" HUMAN Moron Shooter " dta d" HUMAN Moron Shooter "
dta d" Poolshark Toosser Chooser " dta d" Poolshark Toosser Chooser "
dta d" Spoiler Cyborg Unknown " dta d" Spoiler Cyborg Unknown "
dta d" " dta d" "
@@ -165,10 +165,10 @@ LastLine
textbuffer textbuffer
; 0123456789012345678901234567890123456789 ; 0123456789012345678901234567890123456789
dta d"Player: " dta d"Player: "
dta d"Energy: 99 Angle: <32> Force: 1000 " dta d"Energy: 99 Angle: <99> Force: 9999 "
dta d" Round: 50 Wind: <22> " dta d" Round: 99 Wind: <99> "
textbuffer2 textbuffer2
dta d"Player: ******** Cash: 00000 " dta d"Player: ******** Cash: 99999 "
dta d"----------------------------------------" dta d"----------------------------------------"
+102 -36
View File
@@ -40,44 +40,59 @@
.endm .endm
icl 'definitions.asm' icl 'definitions.asm'
icl 'artwork/sfx/rmt_feat.asm'
.zpvar xdraw .word = $80 ;variable X for plot .zpvar xdraw .word = $80 ;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
.zpvar ybyte .word
.zpvar ybyte .word .zpvar CharCode .byte
.zpvar CharCode .byte .zpvar fontind .word
.zpvar fontind .word .zpvar tanknr .byte
.zpvar tanknr .byte
.zpvar TankSequencePointer .byte .zpvar TankSequencePointer .byte
.zpvar oldplot .word .zpvar oldplot .word
.zpvar xc .word .zpvar xc .word
.zpvar temp .word ;temporary word for the most embeded loops only .zpvar temp .word ;temporary word for the most embeded loops only
.zpvar temp2 .word ;same as above .zpvar temp2 .word ;same as above
.zpvar tempXROLLER .word ;same as above for XROLLER routine .zpvar tempXROLLER .word ;same as above for XROLLER routine (used also in result display routine)
;(used also in result display routine) .zpvar xtempDRAW .word ;same as above for XDRAW routine
.zpvar xtempDRAW .word ;same as above for XDRAW routine .zpvar ytempDRAW .word ;same as above for XDRAW routine
.zpvar ytempDRAW .word ;same as above for XDRAW routine
;--------------temps used in circle routine ;--------------temps used in circle routine
.zpvar xi .word ;X (word) in draw routine .zpvar xi .word ;X (word) in draw routine
.zpvar fx .byte ;circle drawing variables .zpvar fx .byte ;circle drawing variables
.zpvar yi .word ;Y (word) in draw routine .zpvar yi .word ;Y (word) in draw routine
.zpvar fy .byte .zpvar fy .byte
.zpvar xk .word .zpvar xk .word
.zpvar fs .byte .zpvar fs .byte
.zpvar yc .byte ;ycircle - temporary for circle .zpvar yc .byte ;ycircle - temporary for circle
.zpvar dx .word .zpvar dx .word
.zpvar tempor2 .byte .zpvar tempor2 .byte
.zpvar dy .word .zpvar dy .word
.zpvar dd .word .zpvar dd .word
.zpvar di .word .zpvar di .word
.zpvar dp .word .zpvar dp .word
.zpvar modify .word .zpvar modify .word
.zpvar weaponPointer .word .zpvar weaponPointer .word
.zpvar dliCounter .byte .zpvar dliCounter .byte
;* RMT ZeroPage addresses
.zpvar p_tis .word
.zpvar p_trackslbstable .word
.zpvar p_trackshbstable .word
.zpvar p_song .word
.zpvar ns .word
.zpvar nr .word
.zpvar nt .word
.zpvar reg1 .byte
.zpvar reg2 .byte
.zpvar reg3 .byte
.zpvar tmp .byte
IFT FEAT_COMMAND2
.zpvar frqaddcmd2 .byte
EIF
p_instrstable = p_tis
displayposition = modify displayposition = modify
;------------------------------- ;-------------------------------
icl 'lib/atari.hea' icl 'lib/atari.hea'
@@ -101,6 +116,7 @@ START
; Startup sequence ; Startup sequence
jsr Initialize jsr Initialize
VMAIN VBLinterrupt,6 ; jsr SetVBL
mwa #OptionsDL dlptrs mwa #OptionsDL dlptrs
lda dmactls lda dmactls
@@ -135,7 +151,6 @@ START
; for the round #1 shooting sequence is random ; for the round #1 shooting sequence is random
MainGameLoop MainGameLoop
VMAIN VBLinterrupt,6 ; jsr SetVBL
VDLI DLIinterrupt ; jsr SetDLI VDLI DLIinterrupt ; jsr SetDLI
jsr CallPurchaseForEveryTank jsr CallPurchaseForEveryTank
@@ -574,6 +589,9 @@ PlayerXdeath .proc
inc CurrentResult inc CurrentResult
.endp .endp
mva #sfx_death_beg sfx_effect
;RandomizeDeffensiveText ;RandomizeDeffensiveText
randomize talk.NumberOfOffensiveTexts (talk.NumberOfDeffensiveTexts+talk.NumberOfOffensiveTexts-1) randomize talk.NumberOfOffensiveTexts (talk.NumberOfDeffensiveTexts+talk.NumberOfOffensiveTexts-1)
sta TextNumberOff sta TextNumberOff
@@ -589,6 +607,7 @@ PlayerXdeath .proc
jsr DisplayOffensiveTextNr jsr DisplayOffensiveTextNr
; calculate position of the explosion (the post-death one) ; calculate position of the explosion (the post-death one)
ldx TankTempY ldx TankTempY
clc clc
@@ -625,8 +644,10 @@ MetodOfDeath
bcs MetodOfDeath bcs MetodOfDeath
tay tay
lda weaponsOfDeath,y lda weaponsOfDeath,y
jsr ExplosionDirect jsr ExplosionDirect
mva #$15 sfx_effect
; jump to after explosion routines (soil fallout, etc.) ; jump to after explosion routines (soil fallout, etc.)
; After going through these routines we are back ; After going through these routines we are back
; to checking if a tank exploded and maybe we have ; to checking if a tank exploded and maybe we have
@@ -816,6 +837,19 @@ ClearResults
mva #1 CurrentRoundNr ;we start from round 1 mva #1 CurrentRoundNr ;we start from round 1
; RMT INIT
lda #$f0 ;initial value
sta RMTSFXVOLUME ;sfx note volume * 16 (0,16,32,...,240)
;
lda #$ff ;initial value
sta sfx_effect
;
ldx #<MODUL ;low byte of RMT module to X reg
ldy #>MODUL ;hi byte of RMT module to Y reg
lda #0 ;starting song line 0-255 to A reg
jsr RASTERMUSICTRACKER ;Init
;
rts rts
.endp .endp
@@ -835,7 +869,26 @@ DLIinterrupt .proc
VBLinterrupt .proc VBLinterrupt .proc
pha pha
phx
phy
mva #0 dliCounter mva #0 dliCounter
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 = 12 note (0..60)
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
ply
plx
pla pla
jmp SYSVBV jmp SYSVBV
.endp .endp
@@ -1084,7 +1137,8 @@ getkey .proc; waits for pressing a key and returns pressed value in A
lda SKSTAT lda SKSTAT
cmp #$ff cmp #$ff
beq checkJoyGetKey ; key not pressed, check Joy beq checkJoyGetKey ; key not pressed, check Joy
mva #sfx_key sfx_effect
lda kbcode lda kbcode
and #$3f ;CTRL and SHIFT ellimination and #$3f ;CTRL and SHIFT ellimination
rts rts
@@ -1151,7 +1205,19 @@ TankFont
;---------------------------------------------- ;----------------------------------------------
icl 'variables.asm' icl 'variables.asm'
;---------------------------------------------- ;----------------------------------------------
; reserved space for RMT player
.ds $0320
.align $100
.ECHO 'PLAYER: ',*
icl 'artwork/sfx/rmtplayr_game.asm'
opt h- ;RMT module is standard Atari binary file already
ins "artwork/sfx/scorch_trial07_stripped.rmt" ;include music RMT module
opt h+
;
;
MODUL equ $a000 ;address of RMT module
TheEnd TheEnd
.ECHO 'TheEnd:',TheEnd
.if TheEnd > PMGraph + $300 .if TheEnd > PMGraph + $300
.error memory conflict .error memory conflict
BIN
View File
Binary file not shown.
+2
View File
@@ -34,6 +34,8 @@ RoundNrDisplay
variablesStart ; zeroing starts here variablesStart ; zeroing starts here
;-------------- ;--------------
sfx_effect .ds 1
;--------------
noDeathCounter .ds 1 noDeathCounter .ds 1
;-------------- ;--------------
OptionsY .ds 1 ;vertical position of cursor on Options screen OptionsY .ds 1 ;vertical position of cursor on Options screen
+28 -2
View File
@@ -77,6 +77,7 @@ VOID
.endp .endp
; ------------------------ ; ------------------------
.proc babynuke .proc babynuke
mva #sfx_nuke sfx_effect
inc FallDown2 inc FallDown2
mva #25 ExplosionRadius mva #25 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
@@ -84,6 +85,7 @@ VOID
.endp .endp
; ------------------------ ; ------------------------
.proc nuke .proc nuke
mva #sfx_nuke sfx_effect
inc FallDown2 inc FallDown2
mva #31 ExplosionRadius mva #31 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
@@ -91,6 +93,7 @@ VOID
.endp .endp
; ------------------------ ; ------------------------
.proc leapfrog .proc leapfrog
mva #sfx_funky_hit sfx_effect
inc FallDown2 inc FallDown2
mva #17 ExplosionRadius mva #17 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
@@ -129,6 +132,7 @@ VOID
beq EndOfLeapping beq EndOfLeapping
mva #15 ExplosionRadius mva #15 ExplosionRadius
jsr CalculateExplosionRange0 jsr CalculateExplosionRange0
mva #sfx_funky_hit sfx_effect
jsr xmissile jsr xmissile
; soil must fall down now! there is no other way... ; soil must fall down now! there is no other way...
@@ -157,6 +161,7 @@ VOID
beq EndOfLeapping beq EndOfLeapping
mva #13 ExplosionRadius mva #13 ExplosionRadius
jsr CalculateExplosionRange0 jsr CalculateExplosionRange0
mva #sfx_funky_hit sfx_effect
jmp xmissile jmp xmissile
EndOfLeapping EndOfLeapping
rts rts
@@ -168,6 +173,7 @@ EndOfLeapping
.endp .endp
; ------------------------ ; ------------------------
.proc funkybomb ; .proc funkybomb ;
mva #sfx_funky_hit sfx_effect
mwa xtraj+1 xtrajfb mwa xtraj+1 xtrajfb
mwa ytraj+1 ytrajfb mwa ytraj+1 ytrajfb
inc FallDown2 inc FallDown2
@@ -220,6 +226,7 @@ DoNotEor
jsr CalculateExplosionRange jsr CalculateExplosionRange
lda HitFlag lda HitFlag
beq NoExplosionInFunkyBomb beq NoExplosionInFunkyBomb
mva #sfx_funky_hit sfx_effect
jsr xmissile jsr xmissile
NoExplosionInFunkyBomb NoExplosionInFunkyBomb
dec FunkyBombCounter dec FunkyBombCounter
@@ -232,12 +239,16 @@ NoExplosionInFunkyBomb
inc FallDown2 inc FallDown2
mva #31 ExplosionRadius mva #31 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
mva #sfx_nuke sfx_effect
jsr xmissile jsr xmissile
sbw xdraw #35 sbw xdraw #35
jsr CalculateExplosionRange jsr CalculateExplosionRange
mva #sfx_nuke sfx_effect
jsr xmissile jsr xmissile
adw xdraw #70 adw xdraw #70
jsr CalculateExplosionRange jsr CalculateExplosionRange
mva #sfx_nuke sfx_effect
jsr xmissile jsr xmissile
sbw xdraw #35 sbw xdraw #35
; ;
@@ -245,12 +256,14 @@ NoExplosionInFunkyBomb
;jsr CalculateExplosionRange ;jsr CalculateExplosionRange
cpw ydraw #screenHeight cpw ydraw #screenHeight
bcs NoUpperCircle bcs NoUpperCircle
mva #sfx_nuke sfx_effect
jsr xmissile jsr xmissile
NoUpperCircle NoUpperCircle
adb ydraw #70 adb ydraw #70
;jsr CalculateExplosionRange ;jsr CalculateExplosionRange
cpw ydraw #screenHeight cpw ydraw #screenHeight
bcs NoLowerCircle bcs NoLowerCircle
mva #sfx_nuke sfx_effect
jsr xmissile jsr xmissile
NoLowerCircle NoLowerCircle
rts rts
@@ -317,6 +330,7 @@ NoLowerCircle
.endp .endp
; ------------------------ ; ------------------------
.proc xdigger .proc xdigger
mva #sfx_digger sfx_effect
mwa xdraw digstartx mwa xdraw digstartx
mwa ydraw digstarty mwa ydraw digstarty
ldx diggery ldx diggery
@@ -431,6 +445,7 @@ DiggerCharacter
.endp .endp
; ------------------------ ; ------------------------
.proc babysandhog .proc babysandhog
mva #sfx_sandhog sfx_effect
mva #8 sandhogflag mva #8 sandhogflag
inc FallDown2 inc FallDown2
mva #13 DigLong mva #13 DigLong
@@ -439,6 +454,7 @@ DiggerCharacter
.endp .endp
; ------------------------ ; ------------------------
.proc sandhog .proc sandhog
mva #sfx_sandhog sfx_effect
mva #8 sandhogflag mva #8 sandhogflag
inc FallDown2 inc FallDown2
mva #13 DigLong mva #13 DigLong
@@ -447,6 +463,7 @@ DiggerCharacter
.endp .endp
; ------------------------ ; ------------------------
.proc heavysandhog .proc heavysandhog
mva #sfx_sandhog sfx_effect
mva #8 sandhogflag mva #8 sandhogflag
inc FallDown2 inc FallDown2
mva #13 DigLong mva #13 DigLong
@@ -490,6 +507,7 @@ DiggerCharacter
.endp .endp
; ------------------------ ; ------------------------
.proc riotblast .proc riotblast
mva #sfx_riot_blast sfx_effect
inc FallDown2 inc FallDown2
mva #61 ExplosionRadius mva #61 ExplosionRadius
jsr CalculateExplosionRange jsr CalculateExplosionRange
@@ -808,6 +826,8 @@ DirectionChecked
.proc ofdirt ; .proc ofdirt ;
; -------------------------------------------------- ; --------------------------------------------------
; makes dirt on xdraw,ydraw position and of ExplosionRadius height ; makes dirt on xdraw,ydraw position and of ExplosionRadius height
mva #sfx_dirt_char_s sfx_effect
mva #1 color mva #1 color
NoColor ; jump here with color=0 to clean dirt NoColor ; jump here with color=0 to clean dirt
mwa xdraw xcircle mwa xdraw xcircle
@@ -885,8 +905,7 @@ UpNotYet2
lda HowMuchToFall lda HowMuchToFall
cmp #1 cmp #1
beq HowMuchToFallRight3 beq HowMuchToFallRight3
.nowarn .NOWARN dew xdraw
dew xdraw
lda xdraw lda xdraw
bne RollinContinuesLiquid bne RollinContinuesLiquid
lda xdraw+1 lda xdraw+1
@@ -1021,6 +1040,9 @@ pressedUp
bne CheckingMaxForce bne CheckingMaxForce
inc EnergyTableH,x inc EnergyTableH,x
CheckingMaxForce CheckingMaxForce
mva #sfx_set_power_2 sfx_effect
lda MaxEnergyTableH,x lda MaxEnergyTableH,x
cmp EnergyTableH,x cmp EnergyTableH,x
bne FurtherCheckMaxForce bne FurtherCheckMaxForce
@@ -1048,6 +1070,8 @@ CTRLPressedUp
pressedDown pressedDown
mva #sfx_set_power_1 sfx_effect
ldx TankNr ldx TankNr
dec EnergyTableL,x dec EnergyTableL,x
lda EnergyTableL,x lda EnergyTableL,x
@@ -1063,6 +1087,8 @@ ForceGoesZero
jmp BeforeFire jmp BeforeFire
CTRLPressedDown CTRLPressedDown
mva #sfx_set_power_1 sfx_effect
ldx TankNr ldx TankNr
sec sec
lda EnergyTableL,x lda EnergyTableL,x