hedgewars/uSound.pas
branchqmlfrontend
changeset 12855 1b2b84315d27
parent 12668 308846e05154
child 12915 4d3b52f1ba18
--- a/hedgewars/uSound.pas	Thu Aug 11 23:05:14 2016 +0300
+++ b/hedgewars/uSound.pas	Sun Dec 17 00:09:24 2017 +0100
@@ -110,7 +110,7 @@
 var Volume: LongInt;
     SoundTimerTicks: Longword;
 implementation
-uses uVariables, uConsole, uCommands, uChat, uUtils, uDebug, uPhysFSLayer;
+uses uVariables, uConsole, uCommands, uDebug, uPhysFSLayer;
 
 const chanTPU = 32;
 var cInitVolume: LongInt;
@@ -133,133 +133,155 @@
                     ( snd: sndNone; voicepack: nil));
     Soundz: array[TSound] of record
             FileName: string[31];
-            Path    : TPathType;
+            Path, AltPath    : TPathType;
             end = (
-            (FileName:                         ''; Path: ptNone  ),// sndNone
-            (FileName:        'grenadeimpact.ogg'; Path: ptSounds),// sndGrenadeImpact
-            (FileName:            'explosion.ogg'; Path: ptSounds),// sndExplosion
-            (FileName:         'throwpowerup.ogg'; Path: ptSounds),// sndThrowPowerUp
-            (FileName:         'throwrelease.ogg'; Path: ptSounds),// sndThrowRelease
-            (FileName:               'splash.ogg'; Path: ptSounds),// sndSplash
-            (FileName:        'shotgunreload.ogg'; Path: ptSounds),// sndShotgunReload
-            (FileName:          'shotgunfire.ogg'; Path: ptSounds),// sndShotgunFire
-            (FileName:          'graveimpact.ogg'; Path: ptSounds),// sndGraveImpact
-            (FileName:           'mineimpact.ogg'; Path: ptSounds),// sndMineImpact
-            (FileName:             'minetick.ogg'; Path: ptSounds),// sndMineTicks
-            (FileName:             'Droplet1.ogg'; Path: ptSounds),// sndMudballImpact
-            (FileName:           'pickhammer.ogg'; Path: ptSounds),// sndPickhammer
-            (FileName:                  'gun.ogg'; Path: ptSounds),// sndGun
-            (FileName:                  'bee.ogg'; Path: ptSounds),// sndBee
-            (FileName:                'Jump1.ogg'; Path: ptVoices),// sndJump1
-            (FileName:                'Jump2.ogg'; Path: ptVoices),// sndJump2
-            (FileName:                'Jump3.ogg'; Path: ptVoices),// sndJump3
-            (FileName:               'Yessir.ogg'; Path: ptVoices),// sndYesSir
-            (FileName:                'Laugh.ogg'; Path: ptVoices),// sndLaugh
-            (FileName:            'Illgetyou.ogg'; Path: ptVoices),// sndIllGetYou
-            (FileName:          'Justyouwait.ogg'; Path: ptVoices),// sndJustyouwait
-            (FileName:             'Incoming.ogg'; Path: ptVoices),// sndIncoming
-            (FileName:               'Missed.ogg'; Path: ptVoices),// sndMissed
-            (FileName:               'Stupid.ogg'; Path: ptVoices),// sndStupid
-            (FileName:           'Firstblood.ogg'; Path: ptVoices),// sndFirstBlood
-            (FileName:               'Boring.ogg'; Path: ptVoices),// sndBoring
-            (FileName:               'Byebye.ogg'; Path: ptVoices),// sndByeBye
-            (FileName:             'Sameteam.ogg'; Path: ptVoices),// sndSameTeam
-            (FileName:               'Nutter.ogg'; Path: ptVoices),// sndNutter
-            (FileName:       'Reinforcements.ogg'; Path: ptVoices),// sndReinforce
-            (FileName:              'Traitor.ogg'; Path: ptVoices),// sndTraitor
-            (FileName:      'Youllregretthat.ogg'; Path: ptVoices),// sndRegret
-            (FileName:            'Enemydown.ogg'; Path: ptVoices),// sndEnemyDown
-            (FileName:               'Coward.ogg'; Path: ptVoices),// sndCoward
-            (FileName:                'Hurry.ogg'; Path: ptVoices),// sndHurry
-            (FileName:              'Watchit.ogg'; Path: ptVoices),// sndWatchIt
-            (FileName:             'Kamikaze.ogg'; Path: ptVoices),// sndKamikaze
-            (FileName:                'cake2.ogg'; Path: ptSounds),// sndCake
-            (FileName:                  'Ow1.ogg'; Path: ptVoices),// sndOw1
-            (FileName:                  'Ow2.ogg'; Path: ptVoices),// sndOw2
-            (FileName:                  'Ow3.ogg'; Path: ptVoices),// sndOw3
-            (FileName:                  'Ow4.ogg'; Path: ptVoices),// sndOw4
-            (FileName:           'Firepunch1.ogg'; Path: ptVoices),// sndFirepunch1
-            (FileName:           'Firepunch2.ogg'; Path: ptVoices),// sndFirepunch2
-            (FileName:           'Firepunch3.ogg'; Path: ptVoices),// sndFirepunch3
-            (FileName:           'Firepunch4.ogg'; Path: ptVoices),// sndFirepunch4
-            (FileName:           'Firepunch5.ogg'; Path: ptVoices),// sndFirepunch5
-            (FileName:           'Firepunch6.ogg'; Path: ptVoices),// sndFirepunch6
-            (FileName:                'Melon.ogg'; Path: ptVoices),// sndMelon
-            (FileName:              'Hellish.ogg'; Path: ptSounds),// sndHellish
-            (FileName:               'Yoohoo.ogg'; Path: ptSounds),// sndYoohoo
-            (FileName:              'rcplane.ogg'; Path: ptSounds),// sndRCPlane
-            (FileName:            'whipcrack.ogg'; Path: ptSounds),// sndWhipCrack
-            (FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds),// sndRideOfTheValkyries
-            (FileName:               'denied.ogg'; Path: ptSounds),// sndDenied
-            (FileName:               'placed.ogg'; Path: ptSounds),// sndPlaced
-            (FileName:          'baseballbat.ogg'; Path: ptSounds),// sndBaseballBat
-            (FileName:                'steam.ogg'; Path: ptSounds),// sndVaporize
-            (FileName:                 'warp.ogg'; Path: ptSounds),// sndWarp
-            (FileName:          'suddendeath.ogg'; Path: ptSounds),// sndSuddenDeath
-            (FileName:               'mortar.ogg'; Path: ptSounds),// sndMortar
-            (FileName:         'shutterclick.ogg'; Path: ptSounds),// sndShutter
-            (FileName:              'homerun.ogg'; Path: ptSounds),// sndHomerun
-            (FileName:              'molotov.ogg'; Path: ptSounds),// sndMolotov
-            (FileName:            'Takecover.ogg'; Path: ptVoices),// sndCover
-            (FileName:                'Uh-oh.ogg'; Path: ptVoices),// sndUhOh
-            (FileName:                 'Oops.ogg'; Path: ptVoices),// sndOops
-            (FileName:                 'Nooo.ogg'; Path: ptVoices),// sndNooo
-            (FileName:                'Hello.ogg'; Path: ptVoices),// sndHello
-            (FileName:             'ropeshot.ogg'; Path: ptSounds),// sndRopeShot
-            (FileName:           'ropeattach.ogg'; Path: ptSounds),// sndRopeAttach
-            (FileName:          'roperelease.ogg'; Path: ptSounds),// sndRopeRelease
-            (FileName:            'switchhog.ogg'; Path: ptSounds),// sndSwitchHog
-            (FileName:              'Victory.ogg'; Path: ptVoices),// sndVictory
-            (FileName:             'Flawless.ogg'; Path: ptVoices),// sndFlawless
-            (FileName:         'sniperreload.ogg'; Path: ptSounds),// sndSniperReload
-            (FileName:                'steps.ogg'; Path: ptSounds),// sndSteps
-            (FileName:           'lowgravity.ogg'; Path: ptSounds),// sndLowGravity
-            (FileName:           'hell_growl.ogg'; Path: ptSounds),// sndHellishImpact1
-            (FileName:            'hell_ooff.ogg'; Path: ptSounds),// sndHellishImpact2
-            (FileName:              'hell_ow.ogg'; Path: ptSounds),// sndHellishImpact3
-            (FileName:             'hell_ugh.ogg'; Path: ptSounds),// sndHellishImpact4
-            (FileName:          'melonimpact.ogg'; Path: ptSounds),// sndMelonImpact
-            (FileName:             'Droplet1.ogg'; Path: ptSounds),// sndDroplet1
-            (FileName:             'Droplet2.ogg'; Path: ptSounds),// sndDroplet2
-            (FileName:             'Droplet3.ogg'; Path: ptSounds),// sndDroplet3
-            (FileName:                  'egg.ogg'; Path: ptSounds),// sndEggBreak
-            (FileName:             'drillgun.ogg'; Path: ptSounds),// sndDrillRocket
-            (FileName:          'PoisonCough.ogg'; Path: ptVoices),// sndPoisonCough
-            (FileName:           'PoisonMoan.ogg'; Path: ptVoices),// sndPoisonMoan
-            (FileName:             'BirdyLay.ogg'; Path: ptSounds),// sndBirdyLay
-            (FileName:              'Whistle.ogg'; Path: ptSounds),// sndWhistle
-            (FileName:             'beewater.ogg'; Path: ptSounds),// sndBeeWater
-            (FileName:                   '1C.ogg'; Path: ptSounds),// sndPiano0
-            (FileName:                   '2D.ogg'; Path: ptSounds),// sndPiano1
-            (FileName:                   '3E.ogg'; Path: ptSounds),// sndPiano2
-            (FileName:                   '4F.ogg'; Path: ptSounds),// sndPiano3
-            (FileName:                   '5G.ogg'; Path: ptSounds),// sndPiano4
-            (FileName:                   '6A.ogg'; Path: ptSounds),// sndPiano5
-            (FileName:                   '7B.ogg'; Path: ptSounds),// sndPiano6
-            (FileName:                   '8C.ogg'; Path: ptSounds),// sndPiano7
-            (FileName:                   '9D.ogg'; Path: ptSounds),// sndPiano8
-            (FileName:                 'skip.ogg'; Path: ptSounds),// sndSkip
-            (FileName:              'sinegun.ogg'; Path: ptSounds),// sndSineGun
-            (FileName:                'Ooff1.ogg'; Path: ptVoices),// sndOoff1
-            (FileName:                'Ooff2.ogg'; Path: ptVoices),// sndOoff2
-            (FileName:                'Ooff3.ogg'; Path: ptVoices),// sndOoff3
-            (FileName:               'hammer.ogg'; Path: ptSounds),// sndWhack
-            (FileName:           'Comeonthen.ogg'; Path: ptVoices),// sndComeonthen
-            (FileName:            'parachute.ogg'; Path: ptSounds),// sndParachute
-            (FileName:                 'bump.ogg'; Path: ptSounds),// sndBump
-            (FileName:            'hogchant3.ogg'; Path: ptSounds),// sndResurrector
-            (FileName:                'plane.ogg'; Path: ptSounds),// sndPlane
-            (FileName:               'TARDIS.ogg'; Path: ptSounds),// sndTardis
-            (FileName:    'frozen_hog_impact.ogg'; Path: ptSounds),// sndFrozenHogImpact
-            (FileName:             'ice_beam.ogg'; Path: ptSounds),// sndIceBeam
-            (FileName:           'hog_freeze.ogg'; Path: ptSounds),// sndHogFreeze
-            (FileName:       'airmine_impact.ogg'; Path: ptSounds),// sndAirMineImpact
-            (FileName:         'knife_impact.ogg'; Path: ptSounds),// sndKnifeImpact
-            (FileName:            'extratime.ogg'; Path: ptSounds) // sndExtraTime
+            (FileName:                         ''; Path: ptNone; AltPath: ptNone),// sndNone
+            (FileName:        'grenadeimpact.ogg'; Path: ptSounds; AltPath: ptNone),// sndGrenadeImpact
+            (FileName:            'explosion.ogg'; Path: ptSounds; AltPath: ptNone),// sndExplosion
+            (FileName:         'throwpowerup.ogg'; Path: ptSounds; AltPath: ptNone),// sndThrowPowerUp
+            (FileName:         'throwrelease.ogg'; Path: ptSounds; AltPath: ptNone),// sndThrowRelease
+            (FileName:               'splash.ogg'; Path: ptCurrTheme; AltPath: ptSounds),// sndSplash
+            (FileName:        'shotgunreload.ogg'; Path: ptSounds; AltPath: ptNone),// sndShotgunReload
+            (FileName:          'shotgunfire.ogg'; Path: ptSounds; AltPath: ptNone),// sndShotgunFire
+            (FileName:          'graveimpact.ogg'; Path: ptSounds; AltPath: ptNone),// sndGraveImpact
+            (FileName:           'mineimpact.ogg'; Path: ptSounds; AltPath: ptNone),// sndMineImpact
+            (FileName:             'minetick.ogg'; Path: ptSounds; AltPath: ptNone),// sndMineTicks
+            (FileName:             'Droplet1.ogg'; Path: ptSounds; AltPath: ptNone),// sndMudballImpact
+            (FileName:           'pickhammer.ogg'; Path: ptSounds; AltPath: ptNone),// sndPickhammer
+            (FileName:                  'gun.ogg'; Path: ptSounds; AltPath: ptNone),// sndGun
+            (FileName:                  'bee.ogg'; Path: ptSounds; AltPath: ptNone),// sndBee
+            (FileName:                'Jump1.ogg'; Path: ptVoices; AltPath: ptNone),// sndJump1
+            (FileName:                'Jump2.ogg'; Path: ptVoices; AltPath: ptNone),// sndJump2
+            (FileName:                'Jump3.ogg'; Path: ptVoices; AltPath: ptNone),// sndJump3
+            (FileName:               'Yessir.ogg'; Path: ptVoices; AltPath: ptNone),// sndYesSir
+            (FileName:                'Laugh.ogg'; Path: ptVoices; AltPath: ptNone),// sndLaugh
+            (FileName:            'Illgetyou.ogg'; Path: ptVoices; AltPath: ptNone),// sndIllGetYou
+            (FileName:          'Justyouwait.ogg'; Path: ptVoices; AltPath: ptNone),// sndJustyouwait
+            (FileName:             'Incoming.ogg'; Path: ptVoices; AltPath: ptNone),// sndIncoming
+            (FileName:               'Missed.ogg'; Path: ptVoices; AltPath: ptNone),// sndMissed
+            (FileName:               'Stupid.ogg'; Path: ptVoices; AltPath: ptNone),// sndStupid
+            (FileName:           'Firstblood.ogg'; Path: ptVoices; AltPath: ptNone),// sndFirstBlood
+            (FileName:               'Boring.ogg'; Path: ptVoices; AltPath: ptNone),// sndBoring
+            (FileName:               'Byebye.ogg'; Path: ptVoices; AltPath: ptNone),// sndByeBye
+            (FileName:             'Sameteam.ogg'; Path: ptVoices; AltPath: ptNone),// sndSameTeam
+            (FileName:               'Nutter.ogg'; Path: ptVoices; AltPath: ptNone),// sndNutter
+            (FileName:       'Reinforcements.ogg'; Path: ptVoices; AltPath: ptNone),// sndReinforce
+            (FileName:              'Traitor.ogg'; Path: ptVoices; AltPath: ptNone),// sndTraitor
+            (FileName:      'Youllregretthat.ogg'; Path: ptVoices; AltPath: ptNone),// sndRegret
+            (FileName:            'Enemydown.ogg'; Path: ptVoices; AltPath: ptNone),// sndEnemyDown
+            (FileName:               'Coward.ogg'; Path: ptVoices; AltPath: ptNone),// sndCoward
+            (FileName:                'Hurry.ogg'; Path: ptVoices; AltPath: ptNone),// sndHurry
+            (FileName:              'Watchit.ogg'; Path: ptVoices; AltPath: ptNone),// sndWatchIt
+            (FileName:             'Kamikaze.ogg'; Path: ptVoices; AltPath: ptNone),// sndKamikaze
+            (FileName:                'cake2.ogg'; Path: ptSounds; AltPath: ptNone),// sndCake
+            (FileName:                  'Ow1.ogg'; Path: ptVoices; AltPath: ptNone),// sndOw1
+            (FileName:                  'Ow2.ogg'; Path: ptVoices; AltPath: ptNone),// sndOw2
+            (FileName:                  'Ow3.ogg'; Path: ptVoices; AltPath: ptNone),// sndOw3
+            (FileName:                  'Ow4.ogg'; Path: ptVoices; AltPath: ptNone),// sndOw4
+            (FileName:           'Firepunch1.ogg'; Path: ptVoices; AltPath: ptNone),// sndFirepunch1
+            (FileName:           'Firepunch2.ogg'; Path: ptVoices; AltPath: ptNone),// sndFirepunch2
+            (FileName:           'Firepunch3.ogg'; Path: ptVoices; AltPath: ptNone),// sndFirepunch3
+            (FileName:           'Firepunch4.ogg'; Path: ptVoices; AltPath: ptNone),// sndFirepunch4
+            (FileName:           'Firepunch5.ogg'; Path: ptVoices; AltPath: ptNone),// sndFirepunch5
+            (FileName:           'Firepunch6.ogg'; Path: ptVoices; AltPath: ptNone),// sndFirepunch6
+            (FileName:                'Melon.ogg'; Path: ptVoices; AltPath: ptNone),// sndMelon
+            (FileName:              'Hellish.ogg'; Path: ptSounds; AltPath: ptNone),// sndHellish
+            (FileName:               'Yoohoo.ogg'; Path: ptSounds; AltPath: ptNone),// sndYoohoo
+            (FileName:              'rcplane.ogg'; Path: ptSounds; AltPath: ptNone),// sndRCPlane
+            (FileName:            'whipcrack.ogg'; Path: ptSounds; AltPath: ptNone),// sndWhipCrack
+            (FileName:'ride_of_the_valkyries.ogg'; Path: ptSounds; AltPath: ptNone),// sndRideOfTheValkyries
+            (FileName:               'denied.ogg'; Path: ptSounds; AltPath: ptNone),// sndDenied
+            (FileName:               'placed.ogg'; Path: ptSounds; AltPath: ptNone),// sndPlaced
+            (FileName:          'baseballbat.ogg'; Path: ptSounds; AltPath: ptNone),// sndBaseballBat
+            (FileName:                'steam.ogg'; Path: ptSounds; AltPath: ptNone),// sndVaporize
+            (FileName:                 'warp.ogg'; Path: ptSounds; AltPath: ptNone),// sndWarp
+            (FileName:          'suddendeath.ogg'; Path: ptSounds; AltPath: ptNone),// sndSuddenDeath
+            (FileName:               'mortar.ogg'; Path: ptSounds; AltPath: ptNone),// sndMortar
+            (FileName:         'shutterclick.ogg'; Path: ptSounds; AltPath: ptNone),// sndShutter
+            (FileName:              'homerun.ogg'; Path: ptSounds; AltPath: ptNone),// sndHomerun
+            (FileName:              'molotov.ogg'; Path: ptSounds; AltPath: ptNone),// sndMolotov
+            (FileName:            'Takecover.ogg'; Path: ptVoices; AltPath: ptNone),// sndCover
+            (FileName:                'Uh-oh.ogg'; Path: ptVoices; AltPath: ptNone),// sndUhOh
+            (FileName:                 'Oops.ogg'; Path: ptVoices; AltPath: ptNone),// sndOops
+            (FileName:                 'Nooo.ogg'; Path: ptVoices; AltPath: ptNone),// sndNooo
+            (FileName:                'Hello.ogg'; Path: ptVoices; AltPath: ptNone),// sndHello
+            (FileName:             'ropeshot.ogg'; Path: ptSounds; AltPath: ptNone),// sndRopeShot
+            (FileName:           'ropeattach.ogg'; Path: ptSounds; AltPath: ptNone),// sndRopeAttach
+            (FileName:          'roperelease.ogg'; Path: ptSounds; AltPath: ptNone),// sndRopeRelease
+            (FileName:            'switchhog.ogg'; Path: ptSounds; AltPath: ptNone),// sndSwitchHog
+            (FileName:              'Victory.ogg'; Path: ptVoices; AltPath: ptNone),// sndVictory
+            (FileName:             'Flawless.ogg'; Path: ptVoices; AltPath: ptNone),// sndFlawless
+            (FileName:         'sniperreload.ogg'; Path: ptSounds; AltPath: ptNone),// sndSniperReload
+            (FileName:                'steps.ogg'; Path: ptSounds; AltPath: ptNone),// sndSteps
+            (FileName:           'lowgravity.ogg'; Path: ptSounds; AltPath: ptNone),// sndLowGravity
+            (FileName:           'hell_growl.ogg'; Path: ptSounds; AltPath: ptNone),// sndHellishImpact1
+            (FileName:            'hell_ooff.ogg'; Path: ptSounds; AltPath: ptNone),// sndHellishImpact2
+            (FileName:              'hell_ow.ogg'; Path: ptSounds; AltPath: ptNone),// sndHellishImpact3
+            (FileName:             'hell_ugh.ogg'; Path: ptSounds; AltPath: ptNone),// sndHellishImpact4
+            (FileName:          'melonimpact.ogg'; Path: ptSounds; AltPath: ptNone),// sndMelonImpact
+            (FileName:             'Droplet1.ogg'; Path: ptCurrTheme; AltPath: ptSounds),// sndDroplet1
+            (FileName:             'Droplet2.ogg'; Path: ptCurrTheme; AltPath: ptSounds),// sndDroplet2
+            (FileName:             'Droplet3.ogg'; Path: ptCurrTheme; AltPath: ptSounds),// sndDroplet3
+            (FileName:                  'egg.ogg'; Path: ptSounds; AltPath: ptNone),// sndEggBreak
+            (FileName:             'drillgun.ogg'; Path: ptSounds; AltPath: ptNone),// sndDrillRocket
+            (FileName:          'PoisonCough.ogg'; Path: ptVoices; AltPath: ptNone),// sndPoisonCough
+            (FileName:           'PoisonMoan.ogg'; Path: ptVoices; AltPath: ptNone),// sndPoisonMoan
+            (FileName:             'BirdyLay.ogg'; Path: ptSounds; AltPath: ptNone),// sndBirdyLay
+            (FileName:              'Whistle.ogg'; Path: ptSounds; AltPath: ptNone),// sndWhistle
+            (FileName:             'beewater.ogg'; Path: ptSounds; AltPath: ptNone),// sndBeeWater
+            (FileName:                   '1C.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano0
+            (FileName:                   '2D.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano1
+            (FileName:                   '3E.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano2
+            (FileName:                   '4F.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano3
+            (FileName:                   '5G.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano4
+            (FileName:                   '6A.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano5
+            (FileName:                   '7B.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano6
+            (FileName:                   '8C.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano7
+            (FileName:                   '9D.ogg'; Path: ptSounds; AltPath: ptNone),// sndPiano8
+            (FileName:                 'skip.ogg'; Path: ptCurrTheme; AltPath: ptSounds),// sndSkip
+            (FileName:              'sinegun.ogg'; Path: ptSounds; AltPath: ptNone),// sndSineGun
+            (FileName:                'Ooff1.ogg'; Path: ptVoices; AltPath: ptNone),// sndOoff1
+            (FileName:                'Ooff2.ogg'; Path: ptVoices; AltPath: ptNone),// sndOoff2
+            (FileName:                'Ooff3.ogg'; Path: ptVoices; AltPath: ptNone),// sndOoff3
+            (FileName:               'hammer.ogg'; Path: ptSounds; AltPath: ptNone),// sndWhack
+            (FileName:           'Comeonthen.ogg'; Path: ptVoices; AltPath: ptNone),// sndComeonthen
+            (FileName:            'parachute.ogg'; Path: ptSounds; AltPath: ptNone),// sndParachute
+            (FileName:                 'bump.ogg'; Path: ptSounds; AltPath: ptNone),// sndBump
+            (FileName:            'hogchant3.ogg'; Path: ptSounds; AltPath: ptNone),// sndResurrector
+            (FileName:                'plane.ogg'; Path: ptSounds; AltPath: ptNone),// sndPlane
+            (FileName:               'TARDIS.ogg'; Path: ptSounds; AltPath: ptNone),// sndTardis
+            (FileName:    'frozen_hog_impact.ogg'; Path: ptSounds; AltPath: ptNone),// sndFrozenHogImpact
+            (FileName:             'ice_beam.ogg'; Path: ptSounds; AltPath: ptNone),// sndIceBeam
+            (FileName:           'hog_freeze.ogg'; Path: ptSounds; AltPath: ptNone), // sndHogFreeze
+            (FileName:       'airmine_impact.ogg'; Path: ptSounds; AltPath: ptNone),// sndAirMineImpact
+            (FileName:         'knife_impact.ogg'; Path: ptSounds; AltPath: ptNone),// sndKnifeImpact
+            (FileName:            'extratime.ogg'; Path: ptSounds; AltPath: ptNone),// sndExtraTime
+            (FileName:           'lasersight.ogg'; Path: ptSounds; AltPath: ptNone),// sndLaserSight
+            (FileName:         'invulnerable.ogg'; Path: ptSounds; AltPath: ptNone),// sndInvulnerable
+            (FileName:                  'ufo.ogg'; Path: ptSounds; AltPath: ptNone),// sndJetpackLaunch
+            (FileName:         'jetpackboost.ogg'; Path: ptSounds; AltPath: ptNone),// sndJetpackBoost
+            (FileName:           'portalshot.ogg'; Path: ptSounds; AltPath: ptNone),// sndPortalShot
+            (FileName:         'portalswitch.ogg'; Path: ptSounds; AltPath: ptNone),// sndPortalSwitch
+            (FileName:           'portalopen.ogg'; Path: ptSounds; AltPath: ptNone),// sndPortalOpen
+            (FileName:            'blowtorch.ogg'; Path: ptSounds; AltPath: ptNone),// sndBlowTorch
+            (FileName:           'countdown1.ogg'; Path: ptSounds; AltPath: ptNone),// sndCountdown1
+            (FileName:           'countdown2.ogg'; Path: ptSounds; AltPath: ptNone),// sndCountdown2
+            (FileName:           'countdown3.ogg'; Path: ptSounds; AltPath: ptNone),// sndCountdown3
+            (FileName:           'countdown4.ogg'; Path: ptSounds; AltPath: ptNone),// sndCountdown4
+            (FileName:      'rubberduck_drop.ogg'; Path: ptSounds; AltPath: ptNone),// sndDuckDrop
+            (FileName:     'rubberduck_water.ogg'; Path: ptSounds; AltPath: ptNone),// sndDuckWater
+            (FileName:       'rubberduck_die.ogg'; Path: ptSounds; AltPath: ptNone),// sndDuckDie
+            (FileName:              'custom1.ogg'; Path: ptSounds; AltPath: ptNone),// sndCustom1
+            (FileName:              'custom2.ogg'; Path: ptSounds; AltPath: ptNone),// sndCustom2
+            (FileName:              'custom3.ogg'; Path: ptSounds; AltPath: ptNone),// sndCustom3
+            (FileName:              'custom4.ogg'; Path: ptSounds; AltPath: ptNone),// sndCustom4
+            (FileName:              'custom5.ogg'; Path: ptSounds; AltPath: ptNone),// sndCustom5
+            (FileName:              'custom6.ogg'; Path: ptSounds; AltPath: ptNone),// sndCustom6
+            (FileName:              'custom7.ogg'; Path: ptSounds; AltPath: ptNone),// sndCustom7
+            (FileName:              'custom8.ogg'; Path: ptSounds; AltPath: ptNone) // sndCustom8
             );
 
 
-
 function  AskForVoicepack(name: shortstring): Pointer;
 var i: Longword;
     locName, path: shortstring;
@@ -310,10 +332,14 @@
     if not (isSoundEnabled or isMusicEnabled) then
         exit;
     WriteToConsole('Init sound...');
-    success:= SDL_InitSubSystem(SDL_INIT_AUDIO) >= 0;
+    success:= SDL_InitSubSystem(SDL_INIT_AUDIO) = 0;
 
     if success then
+        begin
+        WriteLnToConsole(msgOK);
+        WriteToConsole('Open audio...');
         success:= Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, channels, 1024) = 0;
+        end;
 
     if success then
         WriteLnToConsole(msgOK)
@@ -398,6 +424,7 @@
 
 procedure PlaySoundV(snd: TSound; voicepack: PVoicepack; keepPlaying: boolean);
 var s:shortstring;
+rwops: PSDL_RWops;
 begin
     if (not isSoundEnabled) or fastUntilLag then
         exit;
@@ -413,7 +440,16 @@
             if (not pfsExists(s)) and (snd in [sndFirePunch2, sndFirePunch3, sndFirePunch4, sndFirePunch5, sndFirePunch6]) then
                 s:= cPathz[Soundz[sndFirePunch1].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName;
             WriteToConsole(msgLoading + s + ' ');
-            voicepack^.chunks[snd]:= Mix_LoadWAV_RW(rwopsOpenRead(s), 1);
+            rwops := rwopsOpenRead(s);
+
+            if rwops = nil then
+                begin
+                s:= cPathz[Soundz[snd].AltPath] + '/' + voicepack^.name + '/' + Soundz[snd].FileName;
+                WriteToConsole(msgLoading + s + ' ... ');
+                rwops := rwopsOpenRead(s);
+                end;
+            voicepack^.chunks[snd]:= Mix_LoadWAV_RW(rwops, 1);
+
             if voicepack^.chunks[snd] = nil then
                 WriteLnToConsole(msgFailed)
             else
@@ -427,7 +463,16 @@
             begin
             s:= cPathz[Soundz[snd].Path] + '/' + Soundz[snd].FileName;
             WriteToConsole(msgLoading + s + ' ');
-            defVoicepack^.chunks[snd]:= Mix_LoadWAV_RW(rwopsOpenRead(s), 1);
+            rwops := rwopsOpenRead(s);
+
+            if rwops = nil then
+                begin
+                s:= cPathz[Soundz[snd].AltPath] + '/' + Soundz[snd].FileName;
+                WriteToConsole(msgLoading + s + ' ... ');
+                rwops := rwopsOpenRead(s);
+                end;
+
+            defVoicepack^.chunks[snd]:= Mix_LoadWAV_RW(rwops, 1);
             if SDLCheck(defVoicepack^.chunks[snd] <> nil, 'Mix_LoadWAV_RW', true) then exit;
             WriteLnToConsole(msgOK);
             end;
@@ -499,6 +544,7 @@
 
 function LoopSoundV(snd: TSound; voicepack: PVoicepack; fadems: LongInt): LongInt;
 var s: shortstring;
+rwops: PSDL_RWops;
 begin
     if (not isSoundEnabled) or fastUntilLag then
         begin
@@ -512,7 +558,16 @@
            begin
             s:= cPathz[Soundz[snd].Path] + '/' + voicepack^.name + '/' + Soundz[snd].FileName;
             WriteToConsole(msgLoading + s + ' ');
-            voicepack^.chunks[snd]:= Mix_LoadWAV_RW(rwopsOpenRead(s), 1);
+            rwops:=rwopsOpenRead(s);
+
+            if rwops = nil then
+                begin
+                s:= cPathz[Soundz[snd].AltPath] + '/' + Soundz[snd].FileName;
+                WriteToConsole(msgLoading + s + ' ... ');
+                rwops:=rwopsOpenRead(s);
+                end;
+
+            voicepack^.chunks[snd]:= Mix_LoadWAV_RW(rwops, 1);
             if voicepack^.chunks[snd] = nil then
                 WriteLnToConsole(msgFailed)
             else