TombEngine/TR5Main/Game/sound.h
TokyoSU 4b6ffedf5e Fixed release mode
- updated AlterFloorHeight()
- fixed chunkreader.h that used "ChunkReader::" in this own class.
- fixed ChunkId::FromString() not const for str.
- fixed some renderer wrong return value that caused error.
- fixed the debug mode not using the correct directx library !
- updated project include and libs required in release mode.
- fixed Sound_CheckBASSError() not const for message.
- fixed compileXXShader not const for the path.
- reverted GetFloor() change.
2019-12-14 22:41:38 +01:00

711 lines
No EOL
17 KiB
C++

#pragma once
#include "bass.h"
#include "bass_fx.h"
#include <d3dx9math.h>
#include <vector>
#include "..\Game\control.h"
#include "..\Global\global.h"
#include <SimpleMath.h>
using namespace DirectX::SimpleMath;
typedef enum audio_tracks
{
CDA_XA1_TL_10B, // TO CLIMB OUT, SWIM TO THE EDGE AND PRESS 'ACTION'.
CDA_XA1_Z10,
CDA_XA1_TL_05, // TO PERFORM A SIDEWAYS SOMERSAULT, PRESS 'LEFT' AND JUMP.
CDA_XA1_TL_08, // FOR ME TO CRAWL, HOLD DOWN 'CROUCH' AND NOW PUSH 'FORWARD'.
CDA_XA1_TL_11, // TO USE THE LEVER SWITCH, STAND NEXT TO THE SWITCH, AND PRESS 'ACTION'.
CDA_XA1_ANDYPEW,
CDA_XA1_SECRET,
CDA_XA1_TL_02, // TO LEAP THE SHORT DISTANCE, WALK TO THE EDGE, NOW PRESS 'FORWARD' AND 'JUMP' TOGETHER.
CDA_XA2_HMMM05,
CDA_XA2_TL_01, // TO CLIMB ONTO THIS CRATE, STAND NEXT TO THE CRATE, PUSH 'FORWARD', AND THEN 'ACTION'.
CDA_XA2_ATTACK04,
CDA_XA2_UWATER2B,
CDA_XA2_SPOOKY2A,
CDA_XA2_TL_10A, // TO SWIM, JUMP INTO THE WATER. USE 'ACTION' TO SWIM FORWARD, AND THE DIRECTIONS TO STEER.
CDA_XA2_HMMM02,
CDA_XA2_TOMS01,
CDA_XA3_ATTACK03,
CDA_XA3_ATTACK02,
CDA_XA3_HMMM01,
CDA_XA3_STEALTH1,
CDA_XA3_STEALTH2,
CDA_XA3_ATTACK01,
CDA_XA3_TL_06, // TO MONKEYSWING, JUMP STRAIGHT UP AT THE BARS, AND PRESS AND HOLD 'ACTION', THEN PUSH 'FORWARD'.
CDA_XA3_TL_03, // NOW LET'S TRY A LONGER LEAP. WALK TO THE EDGE, AND TAP 'BACK' ONCE. NOW PRESS 'FORWARD' AND 'JUMP' TOGETHER.
CDA_XA4_HMMM06,
CDA_XA4_MIL01,
CDA_XA4_Z_03,
CDA_XA4_HIT01,
CDA_XA4_SPOOKY05,
CDA_XA4_DRAMA01,
CDA_XA4_STEALTH4,
CDA_XA4_MIL05,
CDA_XA5_HMMM04,
CDA_XA5_MIL06,
CDA_XA5_SPOOKY02,
CDA_XA5_TL_12, // TO WALK THE TIGHTROPE, WALK UP TO THE ROPE AND PRESS 'ACTION'. PUSH 'FORWARD'. IF YOU UNBALANCE, PUSH IN THE OPPOSITE DIRECTION TO CORRECT.
CDA_XA5_MIL02A,
CDA_XA5_HMMM03,
CDA_XA5_MIL02,
CDA_XA5_TL_04, // AND NOW FOR THE BIG JUMP. WALK TO THE EDGE, THEN TAP 'BACK' ONCE. NOW PRESS 'FORWARD' AND 'JUMP' TOGETHER. WHEN IN MID-AIR, HOLD 'ACTION' TO GRAB ONTO THE LEDGE.
CDA_XA6_MIL04,
CDA_XA6_SOLO01,
CDA_XA6_Z12,
CDA_XA6_STEALTH3,
CDA_XA6_AUTHSOLO,
CDA_XA6_SPOOKY03,
CDA_XA6_Z13,
CDA_XA6_Z_04ANIM,
CDA_XA7_Z_06A,
CDA_XA7_ANDYOOOH,
CDA_XA7_ANDYOOER,
CDA_XA7_TL_07, // FOR ME TO CLIMB THIS WALL, STAND NEXT TO IT, AND PRESS 'FORWARD' AND 'ACTION' TOGETHER. KEEP HOLD OF 'ACTION' AND PUSH UP TO CLIMB THE WALL.
CDA_XA7_Z_02,
CDA_XA7_EVIBES01,
CDA_XA7_Z_06,
CDA_XA7_AUTHTR,
CDA_XA8_MIL03,
CDA_XA8_FIGHTSC,
CDA_XA8_RICHCUT3,
CDA_XA8_Z_13,
CDA_XA8_Z_08,
CDA_XA8_UWATER2A,
CDA_XA8_JOBYALRM,
CDA_XA8_MIL02B,
CDA_XA9_SWAMPY,
CDA_XA9_EVIBES02,
CDA_XA9_GODS01,
CDA_XA9_Z_03,
CDA_XA9_RICHCUT4,
CDA_XA9_TITLE4,
CDA_XA9_SPOOKY01,
CDA_XA9_CHOPIN01,
CDA_XA10_ECHOIR01,
CDA_XA10_TITLE3,
CDA_XA10_PERC01,
CDA_XA10_VC01,
CDA_XA10_TITLE2,
CDA_XA10_Z_09,
CDA_XA10_SPOOKY04,
CDA_XA10_Z_10,
CDA_XA11_VC01ATV,
CDA_XA11_ANDY3,
CDA_XA11_TITLE1,
CDA_XA11_FLYBY1,
CDA_XA11_MONK_2,
CDA_XA11_ANDY4,
CDA_XA11_FLYBY3,
CDA_XA11_FLYBY2,
CDA_XA12_MOSES01,
CDA_XA12_ANDY4B,
CDA_XA12_Z_10,
CDA_XA12_FLYBY4,
CDA_XA12_RICHCUT1,
CDA_XA12_ANDY5,
CDA_XA12_Z_05,
CDA_XA12_Z_01,
CDA_XA13_JOBY3,
CDA_XA13_ANDY7,
CDA_XA13_ANDREA3B,
CDA_XA13_COSSACK,
CDA_XA13_Z_07,
CDA_XA13_ANDY6,
CDA_XA13_ANDREA3,
CDA_XA13_JOBY7,
CDA_XA14_UWATER1,
CDA_XA14_JOBY1,
CDA_XA14_ANDY10,
CDA_XA14_RICHCUT2,
CDA_XA14_ANDREA1,
CDA_XA14_ANDY8,
CDA_XA14_JOBY6,
CDA_XA14_ECREDITS,
CDA_XA15_BOSS_01,
CDA_XA15_JOBY2,
CDA_XA15_JOBY4,
CDA_XA15_JOBY5,
CDA_XA15_JOBY9,
CDA_XA15_A_ANDY,
CDA_XA15_A_ROME,
CDA_XA15_ANDY2,
CDA_XA16_JOBY8,
CDA_XA16_A_SUB_AMB,
CDA_XA16_JOBY10,
CDA_XA16_A_HARBOUR_OUT,
CDA_XA16_A_ANDY_OUT_NORM,
CDA_XA16_A_ANDY_OUT_SPOOKY,
CDA_XA16_A_ROME_DAY,
CDA_XA16_A_UNDERWATER,
CDA_XA17_A_ROME_NIGHT,
CDA_XA17_A_VC_SAGA,
CDA_XA17_A_INDUSTRY,
CDA_XA17_ANDREA2,
CDA_XA17_ANDY1,
CDA_XA17_ANDREA4,
CDA_XA17_ANDY9,
CDA_XA17_ANDY11,
CDA_XA18_TITLE_MENU
};
typedef enum sound_effects
{
SFX_LARA_FEET,
SFX_LARA_CLIMB2,
SFX_LARA_NO,
SFX_LARA_SLIPPING,
SFX_LARA_LAND,
SFX_LARA_CLIMB1,
SFX_LARA_HOLSTER_DRAW,
SFX_LARA_HOLSTER_AWAY,
SFX_LARA_FIRE,
SFX_LARA_RELOAD,
SFX_LARA_RICOCHET,
SFX_PUSH_BLOCK_END,
SFX_SMASH_GLASS,
SFX_LARA_CLIMB_WALL_GRUNT,
SFX_HK_SILENCED,
SFX_OFFICE_DOOR_OPEN,
SFX_OFFICE_DOOR_CLSE,
SFX_LARA_WET_FEET,
SFX_LARA_WADE,
SFX_SMASH_WOOD,
SFX_LARA_INJURY_NONRND,
SFX_CRICKET_LOOP,
SFX_PHILOSPHER_STONE,
SFX_LARA_JUMP_NONRND,
SFX_LARA_KNEES_SHUFFLE,
SFX_LARA_HIDDEN_SWITCH,
SFX_LARA_CLIMB3,
SFX_LARA_BODYSL,
SFX_LARA_SHIMMY2,
SFX_LARA_JUMP_RND,
SFX_LARA_FALL,
SFX_LARA_INJURY_RND,
SFX_LARA_ROLL,
SFX_LARA_SPLASH,
SFX_LARA_GETOUT,
SFX_LARA_SWIM,
SFX_LARA_BREATH,
SFX_LARA_BUBBLES,
SFX_CREATURE_SWIM,
SFX_LARA_USE_KEY,
SFX_LARA_PUSH2_NONRND,
SFX_LARA_GENERAL_DEATH,
SFX_LARA_KNEES_DEATH,
SFX_LARA_UZI_FIRE,
SFX_LARA_UZI_STOP,
SFX_LARA_SHOTGUN,
SFX_LARA_PUSH1,
SFX_LARA_PUSH2_RND,
SFX_LARA_RANDOM_PUSHFX,
SFX_LARA_SHOTGUN_SHELL,
SFX_UNDERWATER_DOOR,
SFX_LARA_PULL,
SFX_LARA_FLOATING,
SFX_LARA_FALLDETH,
SFX_LARA_GRABHAND,
SFX_LARA_GRABBODY,
SFX_LARA_GRABFEET,
SFX_OFFICE_DOOR_SQUEAK,
SFX_WATER_LAPS_LOOP,
SFX_WATER_SPOUT_LOOP,
SFX_UNDERWATER,
SFX_UNDERWATER_SWITCH,
SFX_LARA_PICKUP,
SFX_PUSHABLE_SOUND,
SFX_SNIPER_RIFLE,
SFX_HELICOPTER_LOOP,
SFX_ROCK_FALL_CRUMBLE,
SFX_ROCK_FALL_LAND,
SFX_HK_FIRE,
SFX_HK_STOP,
SFX_LARA_THUD,
SFX_GENERIC_SWOOSH,
SFX_BLUEGUARD_CHAIR,
SFX_NEWBOX_SHUT,
SFX_BLUE_SCIEN_DONT_SHOOT,
SFX_BLUEGUARD_CONSOLE,
SFX_SHOWER_LOOP,
SFX_WATER_LOOP,
SFX_FOUNTAIN_LOOP,
SFX_WATERFALL_LOOP,
SFX_SERVO_02,
SFX_SERVO_01,
SFX_BLUEG_GETUP_HOY,
SFX_BLUEG_MAFIA_GUNS,
SFX_BLUEG_HIT_DIE,
SFX_BLUEG_JUMP,
SFX_BLUEG_CHAIR_HIT,
SFX_RICH_IRIS_ELEC,
SFX_BIO_BREATHE_OUT,
SFX_GENERIC_BOOT_STEPS,
SFX_PIERRE_GUNS,
SFX_PIERRE_FINAL_BREATH,
SFX_PIERRE_HIT,
SFX_GENERIC_KNEES_FALL,
SFX_LION_HIT_FLOOR,
SFX_AGENT_HITMAN_FEET,
SFX_LARSON_ARGGHH,
SFX_LARSON_GUNS,
SFX_LARSON_GROAN,
SFX_AGENT_HITMAN_LAND,
SFX_LION_FEET,
SFX_LION_GROWL,
SFX_LION_ATTACK,
SFX_LION_DIE,
SFX_RAVENSWITCH_EXP,
SFX_EXPLOSION1,
SFX_EXPLOSION2,
SFX_EARTHQUAKE_LOOP,
SFX_MENU_ROTATE,
SFX_MENU_SELECT,
SFX_Menu_Empty,
SFX_MENU_CHOOSE,
SFX_TICK_TOCK,
SFX_Menu_Empty_bis,
SFX_MENU_COMBINE,
SFX_Menu_Empty_bis_bis,
SFX_MENU_MEDI,
SFX_LARA_CLIMB_WALLS_NOISE,
SFX_2GUNTEX_FALL_END,
SFX_AGENT_HITMAN_JUMP,
SFX_MAFIA_HOLSTER_DRAW,
SFX_REVOLVER,
SFX_HITMAN_CHOKE,
SFX_MAFIA2_DIE,
SFX_MAFIA2_JUMP_UP,
SFX_MAFIA2_GETDOWN,
SFX_MAFIA2_HIT,
SFX_LARA_ELECTRIC_LOOP,
SFX_LARA_ELECTRIC_CRACKLES,
SFX_HANGMAN_LAUGH_OFFCAM,
SFX_ELEC_LIGHT_CRACKLES,
SFX_LOUD_WIND_LOOP,
SFX_KEYPAD_ENTRY_NO,
SFX_KEYPAD_ENTRY_YES,
SFX_RICH_TELEPORT,
SFX_JOBY_PUZZLE_HATCH,
SFX_SOFT_WIND_LOOP,
SFX_GLADIATOR_FEET,
SFX_GLADIATOR_ATTACK,
SFX_GLADIATOR_DIE,
SFX_GLADIATOR_SWORD,
SFX_GLADIATOR_SHIELD1,
SFX_GLADIATOR_SHIELD2,
SFX_GENERIC_BODY_FALL,
SFX_2GUNTEX_DIE,
SFX_LARA_SPIKE_DEATH,
SFX_LARA_DEATH3,
SFX_ROLLING_BALL,
SFX_BLK_PLAT_RAISE_LOW,
SFX_2GUNTEX_FALL_BIG,
SFX_LOOP_FOR_SMALL_FIRES,
SFX_XRAY_SCAN,
SFX_R_XRAY_ROOM_LP,
SFX_R_HITECH_ROOM_LP,
SFX_JOBY_WATERFALL_SMALL,
SFX_JOBY_WATERFALL_BIG,
SFX_RATS_1,
SFX_BATS_1,
SFX_H_GOD_HAMMER_QT,
SFX_H_GOD_HAMMER_MED,
SFX_H_GOD_HAMMER_LD,
SFX_TRAPDOOR_OPEN,
SFX_TRAPDOOR_CLOSE,
SFX_RICH_DOOR_BEAM,
SFX_WALLSUIT_OUT,
SFX_AUTOGUN_UNFOLD,
SFX_AUTOGUN_DOOR,
SFX_SMASH_ROCK,
SFX_SMASH_METAL,
SFX_D_ALIEN,
SFX_RICH_VENT_IMPACT,
SFX_SWITCH_ELEC_SWAP,
SFX_ELECTRIC_WIRES,
SFX_LAVA_LOOP,
SFX_DOG_DOBER_GROWL,
SFX_DOG_HOWL,
SFX_DOG_ATTACK_1,
SFX_DOG_AWARE,
SFX_DOG_FOOT_1,
SFX_DOG_JUMP,
SFX_DOG_LONG_GROWL,
SFX_DOG_DEATH,
SFX_THUNDER_RUMBLE,
SFX_HAMMER_GOD_PULSE,
SFX_SWORD_GOD_CHARGE,
SFX_SWORD_GOD_LASER,
SFX_SKELETON_APPEAR,
SFX_CHEF_KNIFE_SWOOSH,
SFX_SKELETON_ATTACK,
SFX_GEN_SWORD_SWOOSH_NORM,
SFX_CHEF_ATTACK_ARGHH,
SFX_2GUNTEX_FEET_LD,
SFX_2GUNTEX_FEET_QT,
SFX_2GUNTEX_LASER_FIRE,
SFX_2GUNTEX_LASER_FIREx2,
SFX_2GUNTEX_LASER_START,
SFX_2GUNTEX_LASER_MISFIRE,
SFX_2GUNTEX_HIT_GUNS,
SFX_IMP_DIE,
SFX_IMP_FALL,
SFX_IMP_FEET,
SFX_IMP_ATTACK,
SFX_IMP_LAUGH,
SFX_IMP_RUNAWAY,
SFX_SGOD_SWD_DIE1_Q,
SFX_SGOD_SWD_DIE2_VQ,
SFX_HITMAN_GUNS_FIRE,
SFX_HITMAN_GUNS_END,
SFX_FIRE_EXTING_RICO,
SFX_LARA_UNDERWATER_ENGINE,
SFX_CABINET_CLOSE_WOOD,
SFX_CABINET_OPEN_WOOD,
SFX_SWORD_GOD_FEET_LD,
SFX_SWORD_GOD_FEET_QT,
SFX_SWORD_GOD_FEET_VQT,
SFX_SWORD_GOD_SWORD,
SFX_GEN_SWORD_SWOOSH_LOW,
SFX_SWORD_GOD_FALL,
SFX_SWORD_GOD_HITMET,
SFX_SWORD_GOD_SCREAM,
SFX_KITCHEN_HOB_LOOP,
SFX_KEYPAD_STAR,
SFX_KEYPAD_HASH,
SFX_KEYPAD_0,
SFX_KEYPAD_1,
SFX_KEYPAD_2,
SFX_KEYPAD_3,
SFX_KEYPAD_4,
SFX_KEYPAD_5,
SFX_KEYPAD_6,
SFX_KEYPAD_7,
SFX_KEYPAD_8,
SFX_KEYPAD_9,
SFX_SMALL_FAN,
SFX_KLAXON,
SFX_LARA_CROSSBOW,
SFX_ANDY_FLOOR_DOOR_B,
SFX_ANDY_FLOOR_DOOR_A,
SFX_GRAB_OPEN,
SFX_WILLOWISP_LOOP,
SFX_LEAP_SWITCH,
SFX_LARGE_SWITCH,
SFX_GENERIC_HEAVY_THUD,
SFX_GENERIC_HEAVY_FEET,
SFX_SWIMSUIT_METAL_CLASH,
SFX_CROW_WALL_ITEM_DROP,
SFX_LARA_SUB_BREATHE,
SFX_HITMAN_ELEC_SHORT,
SFX_WELD_THRU_DOOR_LOOP,
SFX_IMP_BARREL_DROP,
SFX_IMP_BARREL_ROLL,
SFX_IMP_STONE_HIT,
SFX_POUR_DUST_INSERTANIM,
SFX_GRAB_TOP_IMPACT,
SFX_COG_ANDY2,
SFX_GRAB_IMPACT,
SFX_GRAB_MOTOR_C,
SFX_GRAB_MOTOR_B_LP,
SFX_GRAB_MOTOR_A,
SFX_GRAB_DROP,
SFX_GRAB_WINCH_UP_LP,
SFX_FOOTSTEPS_WOOD_CAB,
SFX_FOOTSTEPS_METAL_CAB,
SFX_D_FLOOR_METAL,
SFX_DRAWERS_METAL_OPEN,
SFX_DRAWERS_METAL_CLOSE,
SFX_SHOCKWAVE_RUMB,
SFX_ANDY_BOAT_MILL_2,
SFX_ANDY_BOAT_MILL_1,
SFX_SMALL_STONE_SWITCH,
SFX_TV_WHITENOISE_LOOP,
SFX_LIFT_MOVE,
SFX_ALARM,
SFX_GENERIC_SQKS_LOW,
SFX_RICH_LOWER_BEAMX,
SFX_RICH_NRG_BEAM,
SFX_BEETLES,
SFX_GOD_HEAD_TESTICLES,
SFX_GOD_HEAD_CHARGE,
SFX_GOD_HEAD_BLAST,
SFX_GOD_HEAD_LASER_LOOPS,
SFX_COGS_ROME,
SFX_LOW_RUMBLE_LOWER,
SFX_GEN_STONE_DOOR_LOW,
SFX_GENERIC_SQKS_NONRND,
SFX_UNDERWATER_FAN_ON,
SFX_SUB_CONTROLROOM_LOOP,
SFX_D_MANHOLE_METAL,
SFX_FOOTSTEPS_MUD,
SFX_FOOTSTEPS_ICE,
SFX_FOOTSTEPS_GRAVEL,
SFX_FOOTSTEPS_SAND_GRASS,
SFX_FOOTSTEPS_WOOD,
SFX_FOOTSTEPS_SNOW,
SFX_FOOTSTEPS_METAL,
SFX_TIGHTROPE_CREAK,
SFX_TIGHTROPE_WALK,
SFX_DRAWERS_WOOD_CLSE,
SFX_DRAWERS_WOOD_OPEN,
SFX_SWAMPY_ATTACK,
SFX_BELL,
SFX_JOBY2_GRILL_2a,
SFX_HISS_LOOP_SMALL,
SFX_JOBY2_CRANE_END,
SFX_GENERATOR_HUM_LOOP,
SFX_COMPUTER_BEEPIES,
SFX_MODEM_LOOP,
SFX_AIRCON_LOOP,
SFX_GEN_STONE_DOOR,
SFX_LOW_RUMBLE,
SFX_SEARCHER,
SFX_STAIR_SNAP_01,
SFX_RICH_GEN_LOOP,
SFX_ZOOM_VIEW_WHIRR,
SFX_RICH_VENT_STRESS,
SFX_INDUSTRY_AMBIENCE_LOOP,
SFX_D_SWIPECARD_SFX,
SFX_RICH_TARGET_RISE,
SFX_STAIR_BANISTER_BEND,
SFX_JOBY2_GRILL_1,
SFX_JOBY2_GRILL_3,
SFX_D_LARA_LOCKER_C,
SFX_D_LARA_LOCKER_O,
SFX_STONE_SCRAPE_FAST,
SFX_JOBY2_GRILL_2,
SFX_LIFT_DOORS,
SFX_LARA_CROWBAR_ITEM,
SFX_JOBY2_CRANE,
SFX_GENERIC_SQKS_RND,
SFX_D_SLIDEDOOR_JOBY,
SFX_D_FIREDOOR_JOBY,
SFX_D_METAL_CLS_P1,
SFX_D_METAL_CLS_P2,
SFX_D_SCIFI_CLOSE,
SFX_D_SCIFI_OPEN,
SFX_TEETH_SPIKES,
SFX_BAT_RAM_CREAK1,
SFX_LARA_LEVER_PART1,
SFX_LARA_LEVER_PART2,
SFX_LARA_POLE_SQUEAKS,
SFX_LARA_ROPEDOWN_LOOP,
SFX_D_METAL_OPEN,
SFX_LARA_PULLEY,
SFX_D_METAL_OPEN_PUSH,
SFX_D_METAL_KICKOPEN,
SFX_LARA_USE_OBJECT,
SFX_D_GATE_BIG_METAL,
SFX_D_MOTOR_WHIRR,
SFX_LARA_NO_FRENCH,
SFX_LARA_NO_JAPANESE,
// at least good to here
SFX_LARA_CROW_WRENCH,
SFX_LARA_ROPE_CREAK,
SFX_LARA_TROPE_FALL,
SFX_D_METAL_CAGE_CLS2,
SFX_D_METAL_CAGE_CLS1,
SFX_GENERIC_STONE_GRIND,
SFX_D_STONEMETAL_MAIN,
SFX_D_PORTCULLIS_UP,
SFX_D_PORTCULLIS_DOWN,
SFX_D_WOODEN_GATE_CREAK,
SFX_D_PADLOCK_BREAK,
SFX_D_BIG_THUD_GEN_2,
SFX_D_BIG_THUD_GEN_1,
SFX_D_DOUBLE_BANG,
SFX_D_DOUBLE_CREAK,
SFX_D_CROWBAR_WOOD,
SFX_D_METAL_LOCKUP_CROW,
SFX_D_METAL_LOCKUP_OPEN,
SFX_D_METAL_CAGE_OPEN,
SFX_SMALL_CLICK_SWITCH,
SFX_WEREWOLF_FEET_F,
SFX_WEREWOLF_FEET_B,
SFX_WEREWOLF_ATTACK1,
SFX_WEREWOLF_ATTACK2,
SFX_WEREWOLF_DROP,
SFX_WEREWOLF_DIE,
SFX_WEREWOLF_JUMP,
SFX_SWAT_DIE,
SFX_ANDY_WHEEL,
SFX_BARN_DOOR_NORMAL,
SFX_BARN_DOOR_SLAM,
SFX_RATCHET_3SHOT,
SFX_ANDY_WATERWHEEL,
SFX_ANDY_INSIDEMILL,
SFX_ANDREA_COIN_PUZZ,
SFX_MINI_SUB_LOOP,
SFX_LIFT_BRAKE_SQUEAL,
SFX_RATSPLASH,
SFX_SNORE_IN,
SFX_SNORE_OUT,
SFX_D_SMALL_VENT_O_C,
SFX_RICH_HOLOGRAM,
SFX_HISS_LOOP_BIG,
SFX_LIFT_MOVE_KNACKED,
SFX_LIFT_HIT_FLOOR1,
SFX_LIFT_HIT_FLOOR2,
SFX_LAZER_LOOP,
SFX_UNDERWATER_EXPLOSION,
SFX_UNDERWATER_TORPEDO,
SFX_TELEPORT_CRACKLES,
SFX_TELEPORT_FLASH,
SFX_LARA_UNDERWATER_HIT,
SFX_RAVESTICK,
SFX_UNDERWATER_CHAFF,
SFX_FISHTANK_WATER,
SFX_2GUNTEX_STAIR_FALL,
SFX_GGOD_BREATHE_IN,
SFX_GGOD_BREATHE_OUT,
SFX_GGOD_FIRE,
SFX_GGOD_ATTACK,
SFX_PORTAL_LOOP,
SFX_TR4_STARGATE_SWIRL_ID23,
SFX_TR4_METAL_SCRAPE_LOOP_1_ID12,
SFX_TR4_METAL_SCRAPE_LOOP_2_ID20,
SFX_TR4_MINE_EXPLOSION_OVERLAY_ID103,
SFX_TR4_AUTOGUNS_ID358,
SFX_TR4_GUIDE_SCARED_ID194,
SFX_TR4_HIT_ROCK_ID347,
SFX_TR4_POUR_ID97,
SFX_TR3_OIL_SMG_FIRE_ID72,
SFX_TR3_AMERCAN_HOY_ID300,
SFX_TR3_LARA_THUD_ID70,
SFX_TR2_SNOWMOBILE_IDLE_ID153,
SFX_TR2_SNOWMOBILE_MOVE_ID155,
SFX_TR2_SNOWMOBILE_HITF_ID201,
SFX_TR2_SNOWMOBILE_HITB_ID202,
SFX_TR2_SNOWMOBILE_FALL_ID203,
SFX_TR2_HIT_BY_KNIFE_ID317,
SFX_TR2_MONK_HIT_TARGET_ID245,
SFX_TR2_SWORD_GUARDIAN_FLYING_ID312,
SFX_TR2_SWORD_HITTARGET_ID318,
SFX_TR3_UPV_HARPOON_SHOT_ID23,
SFX_TR3_MINECART_HIT_ID202,
SFX_TR3_BOSS_EXPLODE_ID76,
NUM_SFX
};
#define PITCH_SHIFT 4
#define SOUND_BASS_UNITS 1.0f / 1024.0f // TR->BASS distance unit coefficient
#define SOUND_MAXVOL_RADIUS 1024.0f // Max. volume hearing distance
#define SOUND_OMNIPRESENT_ORIGIN Vector3(1.17549e-038f, 1.17549e-038f, 1.17549e-038f)
#define SOUND_MAX_SAMPLES 3072 // Original was 1024, reallocate original 3-dword DX handle struct to just 1-dword memory pointer
#define SOUND_MAX_CHANNELS 32 // Original was 24, reallocate original 36-byte struct with 24-byte SoundEffectSlot struct
#define SOUND_LEGACY_SOUNDMAP_SIZE 450
#define SOUND_LEGACY_TRACKTABLE_SIZE 136
#define SOUND_FLAG_NO_PAN (1<<12) // Unused flag
#define SOUND_FLAG_RND_PITCH (1<<13)
#define SOUND_FLAG_RND_GAIN (1<<14)
#define SOUND_MAX_PITCH_CHANGE 0.09f
#define SOUND_MAX_GAIN_CHANGE 0.0625f
#define SOUND_32BIT_SILENCE_LEVEL 4.9e-04f
#define SOUND_SAMPLE_FLAGS (BASS_SAMPLE_MONO | BASS_SAMPLE_FLOAT)
#define SOUND_XFADETIME_BGM 5000
#define SOUND_XFADETIME_BGM_START 1500
#define SOUND_XFADETIME_ONESHOT 200
#define SOUND_XFADETIME_CUTSOUND 100
#define SOUND_XFADETIME_HIJACKSOUND 50
#define SOUND_BGM_DAMP_COEFFICIENT 0.6f
struct SoundEffectSlot
{
short state;
short effectID;
float gain;
HCHANNEL channel;
Vector3 origin;
};
struct SoundTrackSlot
{
HSTREAM channel;
short trackID;
};
enum sound_track_types
{
SOUND_TRACK_ONESHOT,
SOUND_TRACK_BGM,
NUM_SOUND_TRACK_TYPES
};
enum sound_filters
{
SOUND_FILTER_REVERB,
SOUND_FILTER_COMPRESSOR,
SOUND_FILTER_LOWPASS,
NUM_SOUND_FILTERS
};
enum sound_states
{
SOUND_STATE_IDLE,
SOUND_STATE_ENDING,
SOUND_STATE_ENDED
};
enum sound_flags
{
SOUND_NORMAL,
SOUND_WAIT,
SOUND_RESTART,
SOUND_LOOPED
};
enum reverb_type
{
RVB_OUTSIDE, // 0x00 no reverberation
RVB_SMALL_ROOM, // 0x01 little reverberation
RVB_MEDIUM_ROOM, // 0x02
RVB_LARGE_ROOM, // 0x03
RVB_PIPE, // 0x04 highest reverberation, almost never used
NUM_REVERB_TYPES
};
struct AudioTrack
{
char* Name;
byte Mask;
};
using namespace std;
extern vector<AudioTrack> g_AudioTracks;
#define SayNo ((void (__cdecl*)()) 0x004790E0)
long SoundEffect(int effectID, PHD_3DPOS* position, int env_flags);
void StopSoundEffect(short effectID);
bool Sound_LoadSample(char *buffer, int compSize, int uncompSize, int currentIndex);
void Sound_FreeSamples();
void SOUND_Stop();
void S_CDPlay(short index, unsigned int mode);
void S_CDPlayEx(short index, DWORD mask, DWORD unknown);
void S_CDStop();
static void CALLBACK Sound_FinishOneshotTrack(HSYNC handle, DWORD channel, DWORD data, void* userData);
void Sound_Init();
void Sound_DeInit();
bool Sound_CheckBASSError(const char* message, bool verbose, ...);
void Sound_UpdateScene();
void Sound_FreeSample(int index);
int Sound_GetFreeSlot();
void Sound_FreeSlot(int index, unsigned int fadeout = 0);
int Sound_EffectIsPlaying(int effectID, PHD_3DPOS *position);
float Sound_DistanceToListener(PHD_3DPOS *position);
float Sound_DistanceToListener(Vector3 position);
float Sound_Attenuate(float gain, float distance, float radius);
bool Sound_UpdateEffectPosition(int index, PHD_3DPOS *position, bool force = false);
void Inject_Sound();