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_Contact_Trigger = 0 ;_62
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" "
NamesOfLevels
dta d" HUMAN Moron Shooter "
dta d" HUMAN Moron Shooter "
dta d" Poolshark Toosser Chooser "
dta d" Spoiler Cyborg Unknown "
dta d" "
@@ -165,10 +165,10 @@ LastLine
textbuffer
; 0123456789012345678901234567890123456789
dta d"Player: "
dta d"Energy: 99 Angle: <32> Force: 1000 "
dta d" Round: 50 Wind: <22> "
dta d"Energy: 99 Angle: <99> Force: 9999 "
dta d" Round: 99 Wind: <99> "
textbuffer2
dta d"Player: ******** Cash: 00000 "
dta d"Player: ******** Cash: 99999 "
dta d"----------------------------------------"
+102 -36
View File
@@ -40,44 +40,59 @@
.endm
icl 'definitions.asm'
icl 'artwork/sfx/rmt_feat.asm'
.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 xbyte .word
.zpvar ybyte .word
.zpvar CharCode .byte
.zpvar fontind .word
.zpvar tanknr .byte
.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 xbyte .word
.zpvar ybyte .word
.zpvar CharCode .byte
.zpvar fontind .word
.zpvar tanknr .byte
.zpvar TankSequencePointer .byte
.zpvar oldplot .word
.zpvar xc .word
.zpvar temp .word ;temporary word for the most embeded loops only
.zpvar temp2 .word ;same as above
.zpvar tempXROLLER .word ;same as above for XROLLER routine
;(used also in result display routine)
.zpvar xtempDRAW .word ;same as above for XDRAW routine
.zpvar ytempDRAW .word ;same as above for XDRAW routine
.zpvar oldplot .word
.zpvar xc .word
.zpvar temp .word ;temporary word for the most embeded loops only
.zpvar temp2 .word ;same as above
.zpvar tempXROLLER .word ;same as above for XROLLER routine (used also in result display routine)
.zpvar xtempDRAW .word ;same as above for XDRAW routine
.zpvar ytempDRAW .word ;same as above for XDRAW routine
;--------------temps used in circle routine
.zpvar xi .word ;X (word) in draw routine
.zpvar fx .byte ;circle drawing variables
.zpvar yi .word ;Y (word) in draw routine
.zpvar fy .byte
.zpvar xk .word
.zpvar fs .byte
.zpvar yc .byte ;ycircle - temporary for circle
.zpvar dx .word
.zpvar tempor2 .byte
.zpvar dy .word
.zpvar dd .word
.zpvar di .word
.zpvar dp .word
.zpvar modify .word
.zpvar weaponPointer .word
.zpvar dliCounter .byte
.zpvar xi .word ;X (word) in draw routine
.zpvar fx .byte ;circle drawing variables
.zpvar yi .word ;Y (word) in draw routine
.zpvar fy .byte
.zpvar xk .word
.zpvar fs .byte
.zpvar yc .byte ;ycircle - temporary for circle
.zpvar dx .word
.zpvar tempor2 .byte
.zpvar dy .word
.zpvar dd .word
.zpvar di .word
.zpvar dp .word
.zpvar modify .word
.zpvar weaponPointer .word
.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'
@@ -101,6 +116,7 @@ START
; Startup sequence
jsr Initialize
VMAIN VBLinterrupt,6 ; jsr SetVBL
mwa #OptionsDL dlptrs
lda dmactls
@@ -135,7 +151,6 @@ START
; for the round #1 shooting sequence is random
MainGameLoop
VMAIN VBLinterrupt,6 ; jsr SetVBL
VDLI DLIinterrupt ; jsr SetDLI
jsr CallPurchaseForEveryTank
@@ -574,6 +589,9 @@ PlayerXdeath .proc
inc CurrentResult
.endp
mva #sfx_death_beg sfx_effect
;RandomizeDeffensiveText
randomize talk.NumberOfOffensiveTexts (talk.NumberOfDeffensiveTexts+talk.NumberOfOffensiveTexts-1)
sta TextNumberOff
@@ -589,6 +607,7 @@ PlayerXdeath .proc
jsr DisplayOffensiveTextNr
; calculate position of the explosion (the post-death one)
ldx TankTempY
clc
@@ -625,8 +644,10 @@ MetodOfDeath
bcs MetodOfDeath
tay
lda weaponsOfDeath,y
jsr ExplosionDirect
jsr ExplosionDirect
mva #$15 sfx_effect
; jump to after explosion routines (soil fallout, etc.)
; After going through these routines we are back
; to checking if a tank exploded and maybe we have
@@ -816,6 +837,19 @@ ClearResults
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
.endp
@@ -835,7 +869,26 @@ DLIinterrupt .proc
VBLinterrupt .proc
pha
phx
phy
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
jmp SYSVBV
.endp
@@ -1084,7 +1137,8 @@ getkey .proc; waits for pressing a key and returns pressed value in A
lda SKSTAT
cmp #$ff
beq checkJoyGetKey ; key not pressed, check Joy
mva #sfx_key sfx_effect
lda kbcode
and #$3f ;CTRL and SHIFT ellimination
rts
@@ -1151,7 +1205,19 @@ TankFont
;----------------------------------------------
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
.ECHO 'TheEnd:',TheEnd
.if TheEnd > PMGraph + $300
.error memory conflict
BIN
View File
Binary file not shown.
+2
View File
@@ -34,6 +34,8 @@ RoundNrDisplay
variablesStart ; zeroing starts here
;--------------
sfx_effect .ds 1
;--------------
noDeathCounter .ds 1
;--------------
OptionsY .ds 1 ;vertical position of cursor on Options screen
+28 -2
View File
@@ -77,6 +77,7 @@ VOID
.endp
; ------------------------
.proc babynuke
mva #sfx_nuke sfx_effect
inc FallDown2
mva #25 ExplosionRadius
jsr CalculateExplosionRange
@@ -84,6 +85,7 @@ VOID
.endp
; ------------------------
.proc nuke
mva #sfx_nuke sfx_effect
inc FallDown2
mva #31 ExplosionRadius
jsr CalculateExplosionRange
@@ -91,6 +93,7 @@ VOID
.endp
; ------------------------
.proc leapfrog
mva #sfx_funky_hit sfx_effect
inc FallDown2
mva #17 ExplosionRadius
jsr CalculateExplosionRange
@@ -129,6 +132,7 @@ VOID
beq EndOfLeapping
mva #15 ExplosionRadius
jsr CalculateExplosionRange0
mva #sfx_funky_hit sfx_effect
jsr xmissile
; soil must fall down now! there is no other way...
@@ -157,6 +161,7 @@ VOID
beq EndOfLeapping
mva #13 ExplosionRadius
jsr CalculateExplosionRange0
mva #sfx_funky_hit sfx_effect
jmp xmissile
EndOfLeapping
rts
@@ -168,6 +173,7 @@ EndOfLeapping
.endp
; ------------------------
.proc funkybomb ;
mva #sfx_funky_hit sfx_effect
mwa xtraj+1 xtrajfb
mwa ytraj+1 ytrajfb
inc FallDown2
@@ -220,6 +226,7 @@ DoNotEor
jsr CalculateExplosionRange
lda HitFlag
beq NoExplosionInFunkyBomb
mva #sfx_funky_hit sfx_effect
jsr xmissile
NoExplosionInFunkyBomb
dec FunkyBombCounter
@@ -232,12 +239,16 @@ NoExplosionInFunkyBomb
inc FallDown2
mva #31 ExplosionRadius
jsr CalculateExplosionRange
mva #sfx_nuke sfx_effect
jsr xmissile
sbw xdraw #35
jsr CalculateExplosionRange
mva #sfx_nuke sfx_effect
jsr xmissile
adw xdraw #70
jsr CalculateExplosionRange
mva #sfx_nuke sfx_effect
jsr xmissile
sbw xdraw #35
;
@@ -245,12 +256,14 @@ NoExplosionInFunkyBomb
;jsr CalculateExplosionRange
cpw ydraw #screenHeight
bcs NoUpperCircle
mva #sfx_nuke sfx_effect
jsr xmissile
NoUpperCircle
adb ydraw #70
;jsr CalculateExplosionRange
cpw ydraw #screenHeight
bcs NoLowerCircle
mva #sfx_nuke sfx_effect
jsr xmissile
NoLowerCircle
rts
@@ -317,6 +330,7 @@ NoLowerCircle
.endp
; ------------------------
.proc xdigger
mva #sfx_digger sfx_effect
mwa xdraw digstartx
mwa ydraw digstarty
ldx diggery
@@ -431,6 +445,7 @@ DiggerCharacter
.endp
; ------------------------
.proc babysandhog
mva #sfx_sandhog sfx_effect
mva #8 sandhogflag
inc FallDown2
mva #13 DigLong
@@ -439,6 +454,7 @@ DiggerCharacter
.endp
; ------------------------
.proc sandhog
mva #sfx_sandhog sfx_effect
mva #8 sandhogflag
inc FallDown2
mva #13 DigLong
@@ -447,6 +463,7 @@ DiggerCharacter
.endp
; ------------------------
.proc heavysandhog
mva #sfx_sandhog sfx_effect
mva #8 sandhogflag
inc FallDown2
mva #13 DigLong
@@ -490,6 +507,7 @@ DiggerCharacter
.endp
; ------------------------
.proc riotblast
mva #sfx_riot_blast sfx_effect
inc FallDown2
mva #61 ExplosionRadius
jsr CalculateExplosionRange
@@ -808,6 +826,8 @@ DirectionChecked
.proc ofdirt ;
; --------------------------------------------------
; makes dirt on xdraw,ydraw position and of ExplosionRadius height
mva #sfx_dirt_char_s sfx_effect
mva #1 color
NoColor ; jump here with color=0 to clean dirt
mwa xdraw xcircle
@@ -885,8 +905,7 @@ UpNotYet2
lda HowMuchToFall
cmp #1
beq HowMuchToFallRight3
.nowarn
dew xdraw
.NOWARN dew xdraw
lda xdraw
bne RollinContinuesLiquid
lda xdraw+1
@@ -1021,6 +1040,9 @@ pressedUp
bne CheckingMaxForce
inc EnergyTableH,x
CheckingMaxForce
mva #sfx_set_power_2 sfx_effect
lda MaxEnergyTableH,x
cmp EnergyTableH,x
bne FurtherCheckMaxForce
@@ -1048,6 +1070,8 @@ CTRLPressedUp
pressedDown
mva #sfx_set_power_1 sfx_effect
ldx TankNr
dec EnergyTableL,x
lda EnergyTableL,x
@@ -1063,6 +1087,8 @@ ForceGoesZero
jmp BeforeFire
CTRLPressedDown
mva #sfx_set_power_1 sfx_effect
ldx TankNr
sec
lda EnergyTableL,x