sampman done

This commit is contained in:
Fire-Head 2019-08-02 23:20:12 +03:00
parent 81ee1c509a
commit 6ba2b05443
19 changed files with 9692 additions and 406 deletions

706
eax/eax-util.cpp Normal file
View File

@ -0,0 +1,706 @@
/***********************************************************************************************\
* *
* EAX-UTIL.CPP - utilities for EAX 3.0 *
* Function declaration for EAX Morphing *
* String names of the all the presets defined in eax-util.h *
* Arrays grouping together all the EAX presets in a scenario *
* *
************************************************************************************************/
#include "eax-util.h"
#include <math.h>
// Function prototypes used by EAX3ListenerInterpolate
void Clamp(EAXVECTOR *eaxVector);
bool CheckEAX3LP(LPEAXLISTENERPROPERTIES lpEAX3LP);
/***********************************************************************************************\
*
* Definition of the EAXMorph function - EAX3ListenerInterpolate
*
\***********************************************************************************************/
/*
EAX3ListenerInterpolate
lpStart - Initial EAX 3 Listener parameters
lpFinish - Final EAX 3 Listener parameters
flRatio - Ratio Destination : Source (0.0 == Source, 1.0 == Destination)
lpResult - Interpolated EAX 3 Listener parameters
bCheckValues - Check EAX 3.0 parameters are in range, default = false (no checking)
*/
bool EAX3ListenerInterpolate(LPEAXLISTENERPROPERTIES lpStart, LPEAXLISTENERPROPERTIES lpFinish,
float flRatio, LPEAXLISTENERPROPERTIES lpResult, bool bCheckValues)
{
EAXVECTOR StartVector, FinalVector;
float flInvRatio;
if (bCheckValues)
{
if (!CheckEAX3LP(lpStart))
return false;
if (!CheckEAX3LP(lpFinish))
return false;
}
if (flRatio >= 1.0f)
{
memcpy(lpResult, lpFinish, sizeof(EAXLISTENERPROPERTIES));
return true;
}
else if (flRatio <= 0.0f)
{
memcpy(lpResult, lpStart, sizeof(EAXLISTENERPROPERTIES));
return true;
}
flInvRatio = (1.0f - flRatio);
// Environment
lpResult->ulEnvironment = 26; // (UNDEFINED environment)
// Environment Size
if (lpStart->flEnvironmentSize == lpFinish->flEnvironmentSize)
lpResult->flEnvironmentSize = lpStart->flEnvironmentSize;
else
lpResult->flEnvironmentSize = (float)exp( (log(lpStart->flEnvironmentSize) * flInvRatio) + (log(lpFinish->flEnvironmentSize) * flRatio) );
// Environment Diffusion
if (lpStart->flEnvironmentDiffusion == lpFinish->flEnvironmentDiffusion)
lpResult->flEnvironmentDiffusion = lpStart->flEnvironmentDiffusion;
else
lpResult->flEnvironmentDiffusion = (lpStart->flEnvironmentDiffusion * flInvRatio) + (lpFinish->flEnvironmentDiffusion * flRatio);
// Room
if (lpStart->lRoom == lpFinish->lRoom)
lpResult->lRoom = lpStart->lRoom;
else
lpResult->lRoom = (int)( ((float)lpStart->lRoom * flInvRatio) + ((float)lpFinish->lRoom * flRatio) );
// Room HF
if (lpStart->lRoomHF == lpFinish->lRoomHF)
lpResult->lRoomHF = lpStart->lRoomHF;
else
lpResult->lRoomHF = (int)( ((float)lpStart->lRoomHF * flInvRatio) + ((float)lpFinish->lRoomHF * flRatio) );
// Room LF
if (lpStart->lRoomLF == lpFinish->lRoomLF)
lpResult->lRoomLF = lpStart->lRoomLF;
else
lpResult->lRoomLF = (int)( ((float)lpStart->lRoomLF * flInvRatio) + ((float)lpFinish->lRoomLF * flRatio) );
// Decay Time
if (lpStart->flDecayTime == lpFinish->flDecayTime)
lpResult->flDecayTime = lpStart->flDecayTime;
else
lpResult->flDecayTime = (float)exp( (log(lpStart->flDecayTime) * flInvRatio) + (log(lpFinish->flDecayTime) * flRatio) );
// Decay HF Ratio
if (lpStart->flDecayHFRatio == lpFinish->flDecayHFRatio)
lpResult->flDecayHFRatio = lpStart->flDecayHFRatio;
else
lpResult->flDecayHFRatio = (float)exp( (log(lpStart->flDecayHFRatio) * flInvRatio) + (log(lpFinish->flDecayHFRatio) * flRatio) );
// Decay LF Ratio
if (lpStart->flDecayLFRatio == lpFinish->flDecayLFRatio)
lpResult->flDecayLFRatio = lpStart->flDecayLFRatio;
else
lpResult->flDecayLFRatio = (float)exp( (log(lpStart->flDecayLFRatio) * flInvRatio) + (log(lpFinish->flDecayLFRatio) * flRatio) );
// Reflections
if (lpStart->lReflections == lpFinish->lReflections)
lpResult->lReflections = lpStart->lReflections;
else
lpResult->lReflections = (int)( ((float)lpStart->lReflections * flInvRatio) + ((float)lpFinish->lReflections * flRatio) );
// Reflections Delay
if (lpStart->flReflectionsDelay == lpFinish->flReflectionsDelay)
lpResult->flReflectionsDelay = lpStart->flReflectionsDelay;
else
lpResult->flReflectionsDelay = (float)exp( (log(lpStart->flReflectionsDelay+0.0001) * flInvRatio) + (log(lpFinish->flReflectionsDelay+0.0001) * flRatio) );
// Reflections Pan
// To interpolate the vector correctly we need to ensure that both the initial and final vectors vectors are clamped to a length of 1.0f
StartVector = lpStart->vReflectionsPan;
FinalVector = lpFinish->vReflectionsPan;
Clamp(&StartVector);
Clamp(&FinalVector);
if (lpStart->vReflectionsPan.x == lpFinish->vReflectionsPan.x)
lpResult->vReflectionsPan.x = lpStart->vReflectionsPan.x;
else
lpResult->vReflectionsPan.x = FinalVector.x + (flInvRatio * (StartVector.x - FinalVector.x));
if (lpStart->vReflectionsPan.y == lpFinish->vReflectionsPan.y)
lpResult->vReflectionsPan.y = lpStart->vReflectionsPan.y;
else
lpResult->vReflectionsPan.y = FinalVector.y + (flInvRatio * (StartVector.y - FinalVector.y));
if (lpStart->vReflectionsPan.z == lpFinish->vReflectionsPan.z)
lpResult->vReflectionsPan.z = lpStart->vReflectionsPan.z;
else
lpResult->vReflectionsPan.z = FinalVector.z + (flInvRatio * (StartVector.z - FinalVector.z));
// Reverb
if (lpStart->lReverb == lpFinish->lReverb)
lpResult->lReverb = lpStart->lReverb;
else
lpResult->lReverb = (int)( ((float)lpStart->lReverb * flInvRatio) + ((float)lpFinish->lReverb * flRatio) );
// Reverb Delay
if (lpStart->flReverbDelay == lpFinish->flReverbDelay)
lpResult->flReverbDelay = lpStart->flReverbDelay;
else
lpResult->flReverbDelay = (float)exp( (log(lpStart->flReverbDelay+0.0001) * flInvRatio) + (log(lpFinish->flReverbDelay+0.0001) * flRatio) );
// Reverb Pan
// To interpolate the vector correctly we need to ensure that both the initial and final vectors are clamped to a length of 1.0f
StartVector = lpStart->vReverbPan;
FinalVector = lpFinish->vReverbPan;
Clamp(&StartVector);
Clamp(&FinalVector);
if (lpStart->vReverbPan.x == lpFinish->vReverbPan.x)
lpResult->vReverbPan.x = lpStart->vReverbPan.x;
else
lpResult->vReverbPan.x = FinalVector.x + (flInvRatio * (StartVector.x - FinalVector.x));
if (lpStart->vReverbPan.y == lpFinish->vReverbPan.y)
lpResult->vReverbPan.y = lpStart->vReverbPan.y;
else
lpResult->vReverbPan.y = FinalVector.y + (flInvRatio * (StartVector.y - FinalVector.y));
if (lpStart->vReverbPan.z == lpFinish->vReverbPan.z)
lpResult->vReverbPan.z = lpStart->vReverbPan.z;
else
lpResult->vReverbPan.z = FinalVector.z + (flInvRatio * (StartVector.z - FinalVector.z));
// Echo Time
if (lpStart->flEchoTime == lpFinish->flEchoTime)
lpResult->flEchoTime = lpStart->flEchoTime;
else
lpResult->flEchoTime = (float)exp( (log(lpStart->flEchoTime) * flInvRatio) + (log(lpFinish->flEchoTime) * flRatio) );
// Echo Depth
if (lpStart->flEchoDepth == lpFinish->flEchoDepth)
lpResult->flEchoDepth = lpStart->flEchoDepth;
else
lpResult->flEchoDepth = (lpStart->flEchoDepth * flInvRatio) + (lpFinish->flEchoDepth * flRatio);
// Modulation Time
if (lpStart->flModulationTime == lpFinish->flModulationTime)
lpResult->flModulationTime = lpStart->flModulationTime;
else
lpResult->flModulationTime = (float)exp( (log(lpStart->flModulationTime) * flInvRatio) + (log(lpFinish->flModulationTime) * flRatio) );
// Modulation Depth
if (lpStart->flModulationDepth == lpFinish->flModulationDepth)
lpResult->flModulationDepth = lpStart->flModulationDepth;
else
lpResult->flModulationDepth = (lpStart->flModulationDepth * flInvRatio) + (lpFinish->flModulationDepth * flRatio);
// Air Absorption HF
if (lpStart->flAirAbsorptionHF == lpFinish->flAirAbsorptionHF)
lpResult->flAirAbsorptionHF = lpStart->flAirAbsorptionHF;
else
lpResult->flAirAbsorptionHF = (lpStart->flAirAbsorptionHF * flInvRatio) + (lpFinish->flAirAbsorptionHF * flRatio);
// HF Reference
if (lpStart->flHFReference == lpFinish->flHFReference)
lpResult->flHFReference = lpStart->flHFReference;
else
lpResult->flHFReference = (float)exp( (log(lpStart->flHFReference) * flInvRatio) + (log(lpFinish->flHFReference) * flRatio) );
// LF Reference
if (lpStart->flLFReference == lpFinish->flLFReference)
lpResult->flLFReference = lpStart->flLFReference;
else
lpResult->flLFReference = (float)exp( (log(lpStart->flLFReference) * flInvRatio) + (log(lpFinish->flLFReference) * flRatio) );
// Room Rolloff Factor
if (lpStart->flRoomRolloffFactor == lpFinish->flRoomRolloffFactor)
lpResult->flRoomRolloffFactor = lpStart->flRoomRolloffFactor;
else
lpResult->flRoomRolloffFactor = (lpStart->flRoomRolloffFactor * flInvRatio) + (lpFinish->flRoomRolloffFactor * flRatio);
// Flags
lpResult->ulFlags = (lpStart->ulFlags & lpFinish->ulFlags);
// Clamp Delays
if (lpResult->flReflectionsDelay > EAXLISTENER_MAXREFLECTIONSDELAY)
lpResult->flReflectionsDelay = EAXLISTENER_MAXREFLECTIONSDELAY;
if (lpResult->flReverbDelay > EAXLISTENER_MAXREVERBDELAY)
lpResult->flReverbDelay = EAXLISTENER_MAXREVERBDELAY;
return true;
}
/*
CheckEAX3LP
Checks that the parameters in the EAX 3 Listener Properties structure are in-range
*/
bool CheckEAX3LP(LPEAXLISTENERPROPERTIES lpEAX3LP)
{
if ( (lpEAX3LP->lRoom < EAXLISTENER_MINROOM) || (lpEAX3LP->lRoom > EAXLISTENER_MAXROOM) )
return false;
if ( (lpEAX3LP->lRoomHF < EAXLISTENER_MINROOMHF) || (lpEAX3LP->lRoomHF > EAXLISTENER_MAXROOMHF) )
return false;
if ( (lpEAX3LP->lRoomLF < EAXLISTENER_MINROOMLF) || (lpEAX3LP->lRoomLF > EAXLISTENER_MAXROOMLF) )
return false;
if ( (lpEAX3LP->ulEnvironment < EAXLISTENER_MINENVIRONMENT) || (lpEAX3LP->ulEnvironment > EAXLISTENER_MAXENVIRONMENT) )
return false;
if ( (lpEAX3LP->flEnvironmentSize < EAXLISTENER_MINENVIRONMENTSIZE) || (lpEAX3LP->flEnvironmentSize > EAXLISTENER_MAXENVIRONMENTSIZE) )
return false;
if ( (lpEAX3LP->flEnvironmentDiffusion < EAXLISTENER_MINENVIRONMENTDIFFUSION) || (lpEAX3LP->flEnvironmentDiffusion > EAXLISTENER_MAXENVIRONMENTDIFFUSION) )
return false;
if ( (lpEAX3LP->flDecayTime < EAXLISTENER_MINDECAYTIME) || (lpEAX3LP->flDecayTime > EAXLISTENER_MAXDECAYTIME) )
return false;
if ( (lpEAX3LP->flDecayHFRatio < EAXLISTENER_MINDECAYHFRATIO) || (lpEAX3LP->flDecayHFRatio > EAXLISTENER_MAXDECAYHFRATIO) )
return false;
if ( (lpEAX3LP->flDecayLFRatio < EAXLISTENER_MINDECAYLFRATIO) || (lpEAX3LP->flDecayLFRatio > EAXLISTENER_MAXDECAYLFRATIO) )
return false;
if ( (lpEAX3LP->lReflections < EAXLISTENER_MINREFLECTIONS) || (lpEAX3LP->lReflections > EAXLISTENER_MAXREFLECTIONS) )
return false;
if ( (lpEAX3LP->flReflectionsDelay < EAXLISTENER_MINREFLECTIONSDELAY) || (lpEAX3LP->flReflectionsDelay > EAXLISTENER_MAXREFLECTIONSDELAY) )
return false;
if ( (lpEAX3LP->lReverb < EAXLISTENER_MINREVERB) || (lpEAX3LP->lReverb > EAXLISTENER_MAXREVERB) )
return false;
if ( (lpEAX3LP->flReverbDelay < EAXLISTENER_MINREVERBDELAY) || (lpEAX3LP->flReverbDelay > EAXLISTENER_MAXREVERBDELAY) )
return false;
if ( (lpEAX3LP->flEchoTime < EAXLISTENER_MINECHOTIME) || (lpEAX3LP->flEchoTime > EAXLISTENER_MAXECHOTIME) )
return false;
if ( (lpEAX3LP->flEchoDepth < EAXLISTENER_MINECHODEPTH) || (lpEAX3LP->flEchoDepth > EAXLISTENER_MAXECHODEPTH) )
return false;
if ( (lpEAX3LP->flModulationTime < EAXLISTENER_MINMODULATIONTIME) || (lpEAX3LP->flModulationTime > EAXLISTENER_MAXMODULATIONTIME) )
return false;
if ( (lpEAX3LP->flModulationDepth < EAXLISTENER_MINMODULATIONDEPTH) || (lpEAX3LP->flModulationDepth > EAXLISTENER_MAXMODULATIONDEPTH) )
return false;
if ( (lpEAX3LP->flAirAbsorptionHF < EAXLISTENER_MINAIRABSORPTIONHF) || (lpEAX3LP->flAirAbsorptionHF > EAXLISTENER_MAXAIRABSORPTIONHF) )
return false;
if ( (lpEAX3LP->flHFReference < EAXLISTENER_MINHFREFERENCE) || (lpEAX3LP->flHFReference > EAXLISTENER_MAXHFREFERENCE) )
return false;
if ( (lpEAX3LP->flLFReference < EAXLISTENER_MINLFREFERENCE) || (lpEAX3LP->flLFReference > EAXLISTENER_MAXLFREFERENCE) )
return false;
if ( (lpEAX3LP->flRoomRolloffFactor < EAXLISTENER_MINROOMROLLOFFFACTOR) || (lpEAX3LP->flRoomRolloffFactor > EAXLISTENER_MAXROOMROLLOFFFACTOR) )
return false;
if (lpEAX3LP->ulFlags & EAXLISTENERFLAGS_RESERVED)
return false;
return true;
}
/*
Clamp
Clamps the length of the vector to 1.0f
*/
void Clamp(EAXVECTOR *eaxVector)
{
float flMagnitude;
float flInvMagnitude;
flMagnitude = (float)sqrt((eaxVector->x*eaxVector->x) + (eaxVector->y*eaxVector->y) + (eaxVector->z*eaxVector->z));
if (flMagnitude <= 1.0f)
return;
flInvMagnitude = 1.0f / flMagnitude;
eaxVector->x *= flInvMagnitude;
eaxVector->y *= flInvMagnitude;
eaxVector->z *= flInvMagnitude;
}
/***********************************************************************************************\
*
* To assist those developers wishing to add EAX effects to their level editors, each of the
* List of string names of the various EAX 3.0 presets defined in eax-util.h
* Arrays to group together presets of the same scenario
*
\***********************************************************************************************/
//////////////////////////////////////////////////////
// Array of scenario names //
//////////////////////////////////////////////////////
char* EAX30_SCENARIO_NAMES[] =
{
"Castle",
"Factory",
"IcePalace",
"SpaceStation",
"WoodenShip",
"Sports",
"Prefab",
"Domes and Pipes",
"Outdoors",
"Mood",
"Driving",
"City",
"Miscellaneous",
"Original"
};
//////////////////////////////////////////////////////
// Array of standardised location names //
//////////////////////////////////////////////////////
char* EAX30_LOCATION_NAMES[] =
{
"Hall",
"Large Room",
"Medium Room",
"Small Room",
"Cupboard",
"Alcove",
"Long Passage",
"Short Passage",
"Courtyard"
};
//////////////////////////////////////////////////////
// Standardised Location effects can be accessed //
// from a matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_STANDARD_PRESETS[EAX30_NUM_STANDARD_SCENARIOS][EAX30_NUM_LOCATIONS]=
{
{EAX30_PRESET_CASTLE_HALL, EAX30_PRESET_CASTLE_LARGEROOM, EAX30_PRESET_CASTLE_MEDIUMROOM, EAX30_PRESET_CASTLE_SMALLROOM, EAX30_PRESET_CASTLE_CUPBOARD, EAX30_PRESET_CASTLE_ALCOVE, EAX30_PRESET_CASTLE_LONGPASSAGE, EAX30_PRESET_CASTLE_SHORTPASSAGE, EAX30_PRESET_CASTLE_COURTYARD},
{EAX30_PRESET_FACTORY_HALL, EAX30_PRESET_FACTORY_LARGEROOM, EAX30_PRESET_FACTORY_MEDIUMROOM, EAX30_PRESET_FACTORY_SMALLROOM, EAX30_PRESET_FACTORY_CUPBOARD, EAX30_PRESET_FACTORY_ALCOVE, EAX30_PRESET_FACTORY_LONGPASSAGE, EAX30_PRESET_FACTORY_SHORTPASSAGE, EAX30_PRESET_FACTORY_COURTYARD},
{EAX30_PRESET_ICEPALACE_HALL, EAX30_PRESET_ICEPALACE_LARGEROOM, EAX30_PRESET_ICEPALACE_MEDIUMROOM, EAX30_PRESET_ICEPALACE_SMALLROOM, EAX30_PRESET_ICEPALACE_CUPBOARD, EAX30_PRESET_ICEPALACE_ALCOVE, EAX30_PRESET_ICEPALACE_LONGPASSAGE, EAX30_PRESET_ICEPALACE_SHORTPASSAGE, EAX30_PRESET_ICEPALACE_COURTYARD},
{EAX30_PRESET_SPACESTATION_HALL,EAX30_PRESET_SPACESTATION_LARGEROOM,EAX30_PRESET_SPACESTATION_MEDIUMROOM, EAX30_PRESET_SPACESTATION_SMALLROOM,EAX30_PRESET_SPACESTATION_CUPBOARD, EAX30_PRESET_SPACESTATION_ALCOVE, EAX30_PRESET_SPACESTATION_LONGPASSAGE, EAX30_PRESET_SPACESTATION_SHORTPASSAGE, EAX30_PRESET_SPACESTATION_HALL},
{EAX30_PRESET_WOODEN_HALL, EAX30_PRESET_WOODEN_LARGEROOM, EAX30_PRESET_WOODEN_MEDIUMROOM, EAX30_PRESET_WOODEN_SMALLROOM, EAX30_PRESET_WOODEN_CUPBOARD, EAX30_PRESET_WOODEN_ALCOVE, EAX30_PRESET_WOODEN_LONGPASSAGE, EAX30_PRESET_WOODEN_SHORTPASSAGE, EAX30_PRESET_WOODEN_COURTYARD},
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of original environment names //
//////////////////////////////////////////////////////
char* EAX30_ORIGINAL_PRESET_NAMES[] =
{
"Generic",
"Padded Cell",
"Room",
"Bathroom",
"Living Room",
"Stone Room",
"Auditorium",
"Concert Hall",
"Cave",
"Arena",
"Hangar",
"Carpetted Hallway",
"Hallway",
"Stone Corridor",
"Alley",
"Forest",
"City",
"Mountains",
"Quarry",
"Plain",
"Parking Lot",
"Sewer Pipe",
"Underwater",
"Drugged",
"Dizzy",
"Psychotic"
};
//////////////////////////////////////////////////////
// Sports effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_ORIGINAL_PRESETS[] =
{
EAX30_PRESET_GENERIC,
EAX30_PRESET_PADDEDCELL,
EAX30_PRESET_ROOM,
EAX30_PRESET_BATHROOM,
EAX30_PRESET_LIVINGROOM,
EAX30_PRESET_STONEROOM,
EAX30_PRESET_AUDITORIUM,
EAX30_PRESET_CONCERTHALL,
EAX30_PRESET_CAVE,
EAX30_PRESET_ARENA,
EAX30_PRESET_HANGAR,
EAX30_PRESET_CARPETTEDHALLWAY,
EAX30_PRESET_HALLWAY,
EAX30_PRESET_STONECORRIDOR,
EAX30_PRESET_ALLEY,
EAX30_PRESET_FOREST,
EAX30_PRESET_CITY,
EAX30_PRESET_MOUNTAINS,
EAX30_PRESET_QUARRY,
EAX30_PRESET_PLAIN,
EAX30_PRESET_PARKINGLOT,
EAX30_PRESET_SEWERPIPE,
EAX30_PRESET_UNDERWATER,
EAX30_PRESET_DRUGGED,
EAX30_PRESET_DIZZY,
EAX30_PRESET_PSYCHOTIC
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of sport environment names //
//////////////////////////////////////////////////////
char* EAX30_SPORTS_PRESET_NAMES[] =
{
"Empty Stadium",
"Full Stadium",
"Stadium Tannoy",
"Squash Court",
"Small Swimming Pool",
"Large Swimming Pool",
"Gymnasium"
};
//////////////////////////////////////////////////////
// Sports effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_SPORTS_PRESETS[] =
{
EAX30_PRESET_SPORT_EMPTYSTADIUM,
EAX30_PRESET_SPORT_FULLSTADIUM,
EAX30_PRESET_SPORT_STADIUMTANNOY,
EAX30_PRESET_SPORT_SQUASHCOURT,
EAX30_PRESET_SPORT_SMALLSWIMMINGPOOL,
EAX30_PRESET_SPORT_LARGESWIMMINGPOOL,
EAX30_PRESET_SPORT_GYMNASIUM
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of prefab environment names //
//////////////////////////////////////////////////////
char* EAX30_PREFAB_PRESET_NAMES[] =
{
"Workshop",
"School Room",
"Practise Room",
"Outhouse",
"Caravan"
};
//////////////////////////////////////////////////////
// Prefab effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_PREFAB_PRESETS[] =
{
EAX30_PRESET_PREFAB_WORKSHOP,
EAX30_PRESET_PREFAB_SCHOOLROOM,
EAX30_PRESET_PREFAB_PRACTISEROOM,
EAX30_PRESET_PREFAB_OUTHOUSE,
EAX30_PRESET_PREFAB_CARAVAN
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of Domes & Pipes environment names //
//////////////////////////////////////////////////////
char* EAX30_DOMESNPIPES_PRESET_NAMES[] =
{
"Domed Tomb",
"Saint Paul's Dome",
"Small Pipe",
"Long Thin Pipe",
"Large Pipe",
"Resonant Pipe"
};
//////////////////////////////////////////////////////
// Domes & Pipes effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_DOMESNPIPES_PRESETS[] =
{
EAX30_PRESET_DOME_TOMB,
EAX30_PRESET_DOME_SAINTPAULS,
EAX30_PRESET_PIPE_SMALL,
EAX30_PRESET_PIPE_LONGTHIN,
EAX30_PRESET_PIPE_LARGE,
EAX30_PRESET_PIPE_RESONANT
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of Outdoors environment names //
//////////////////////////////////////////////////////
char* EAX30_OUTDOORS_PRESET_NAMES[] =
{
"Backyard",
"Rolling Plains",
"Deep Canyon",
"Creek",
"Valley"
};
//////////////////////////////////////////////////////
// Outdoors effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_OUTDOORS_PRESETS[] =
{
EAX30_PRESET_OUTDOORS_BACKYARD,
EAX30_PRESET_OUTDOORS_ROLLINGPLAINS,
EAX30_PRESET_OUTDOORS_DEEPCANYON,
EAX30_PRESET_OUTDOORS_CREEK,
EAX30_PRESET_OUTDOORS_VALLEY
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of Mood environment names //
//////////////////////////////////////////////////////
char* EAX30_MOOD_PRESET_NAMES[] =
{
"Heaven",
"Hell",
"Memory"
};
//////////////////////////////////////////////////////
// Mood effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_MOOD_PRESETS[] =
{
EAX30_PRESET_MOOD_HEAVEN,
EAX30_PRESET_MOOD_HELL,
EAX30_PRESET_MOOD_MEMORY
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of driving environment names //
//////////////////////////////////////////////////////
char* EAX30_DRIVING_PRESET_NAMES[] =
{
"Race Commentator",
"Pit Garage",
"In-car (Stripped out racer)",
"In-car (Sportscar)",
"In-car (Luxury)",
"Full Grandstand",
"Empty Grandstand",
"Tunnel"
};
//////////////////////////////////////////////////////
// Driving effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_DRIVING_PRESETS[] =
{
EAX30_PRESET_DRIVING_COMMENTATOR,
EAX30_PRESET_DRIVING_PITGARAGE,
EAX30_PRESET_DRIVING_INCAR_RACER,
EAX30_PRESET_DRIVING_INCAR_SPORTS,
EAX30_PRESET_DRIVING_INCAR_LUXURY,
EAX30_PRESET_DRIVING_FULLGRANDSTAND,
EAX30_PRESET_DRIVING_EMPTYGRANDSTAND,
EAX30_PRESET_DRIVING_TUNNEL
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of City environment names //
//////////////////////////////////////////////////////
char* EAX30_CITY_PRESET_NAMES[] =
{
"City Streets",
"Subway",
"Museum",
"Library",
"Underpass",
"Abandoned City"
};
//////////////////////////////////////////////////////
// City effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_CITY_PRESETS[] =
{
EAX30_PRESET_CITY_STREETS,
EAX30_PRESET_CITY_SUBWAY,
EAX30_PRESET_CITY_MUSEUM,
EAX30_PRESET_CITY_LIBRARY,
EAX30_PRESET_CITY_UNDERPASS,
EAX30_PRESET_CITY_ABANDONED
};
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Array of Misc environment names //
//////////////////////////////////////////////////////
char* EAX30_MISC_PRESET_NAMES[] =
{
"Dusty Box Room",
"Chapel",
"Small Water Room"
};
//////////////////////////////////////////////////////
// Misc effects matrix //
//////////////////////////////////////////////////////
EAXLISTENERPROPERTIES EAX30_MISC_PRESETS[] =
{
EAX30_PRESET_DUSTYROOM,
EAX30_PRESET_CHAPEL,
EAX30_PRESET_SMALLWATERROOM
};

765
eax/eax-util.h Normal file
View File

@ -0,0 +1,765 @@
/*******************************************************************\
* *
* EAX-UTIL.H - utilities for Environmental Audio Extensions v. 3.0 *
* Definitions of the Original 26 EAX Presets *
* Definitions for some new EAX Presets *
* Definitions of some Material Presets *
* Function declaration for EAX Morphing *
* *
\*******************************************************************/
#ifndef EAXUTIL_INCLUDED
#define EAXUTIL_INCLUDED
#include <eax.h>
/***********************************************************************************************
* Function : EAX3ListenerInterpolate
* Params : lpStart - Initial EAX 3 Listener parameters
* : lpFinish - Final EAX 3 Listener parameters
* : flRatio - Ratio Destination : Source (0.0 == Source, 1.0 == Destination)
* : lpResult - Interpolated EAX 3 Listener parameters
* : bCheckValues - Check EAX 3.0 parameters are in range,
- default == false (no checking)
************************************************************************************************/
bool EAX3ListenerInterpolate(EAXLISTENERPROPERTIES *lpStartEAX3LP, EAXLISTENERPROPERTIES *lpFinishEAX3LP,
float flRatio, EAXLISTENERPROPERTIES *lpResultEAX3LP, bool bCheckValues = false);
/***********************************************************************************************\
*
* Legacy environment presets for use with DSPROPERTY_EAXLISTENER_ALLPARAMETERS.
* Each array conforms to the DSPROPSETID_EAX30_ListenerProperties structure defined in EAX.H.
*
************************************************************************************************/
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_GENERIC \
{0, 7.5f, 1.000f, -1000, -100, 0, 1.49f, 0.83f, 1.00f, -2602, 0.007f, 0.00f,0.00f,0.00f, 200, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_PADDEDCELL \
{1, 1.4f, 1.000f, -1000, -6000, 0, 0.17f, 0.10f, 1.00f, -1204, 0.001f, 0.00f,0.00f,0.00f, 207, 0.002f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_ROOM \
{2, 1.9f, 1.000f, -1000, -454, 0, 0.40f, 0.83f, 1.00f, -1646, 0.002f, 0.00f,0.00f,0.00f, 53, 0.003f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_BATHROOM \
{3, 1.4f, 1.000f, -1000, -1200, 0, 1.49f, 0.54f, 1.00f, -370, 0.007f, 0.00f,0.00f,0.00f, 1030, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_LIVINGROOM \
{4, 2.5f, 1.000f, -1000, -6000, 0, 0.50f, 0.10f, 1.00f, -1376, 0.003f, 0.00f,0.00f,0.00f, -1104, 0.004f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_STONEROOM \
{5, 11.6f, 1.000f, -1000, -300, 0, 2.31f, 0.64f, 1.00f, -711, 0.012f, 0.00f,0.00f,0.00f, 83, 0.017f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_AUDITORIUM \
{6, 21.6f, 1.000f, -1000, -476, 0, 4.32f, 0.59f, 1.00f, -789, 0.020f, 0.00f,0.00f,0.00f, -289, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_CONCERTHALL \
{7, 19.6f, 1.000f, -1000, -500, 0, 3.92f, 0.70f, 1.00f, -1230, 0.020f, 0.00f,0.00f,0.00f, -02, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_CAVE \
{8, 14.6f, 1.000f, -1000, 0, 0, 2.91f, 1.30f, 1.00f, -602, 0.015f, 0.00f,0.00f,0.00f, -302, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_ARENA \
{9, 36.2f, 1.000f, -1000, -698, 0, 7.24f, 0.33f, 1.00f, -1166, 0.020f, 0.00f,0.00f,0.00f, 16, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_HANGAR \
{10, 50.3f, 1.000f, -1000, -1000, 0, 10.05f, 0.23f, 1.00f, -602, 0.020f, 0.00f,0.00f,0.00f, 198, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_CARPETTEDHALLWAY \
{11, 1.9f, 1.000f, -1000, -4000, 0, 0.30f, 0.10f, 1.00f, -1831, 0.002f, 0.00f,0.00f,0.00f, -1630, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_HALLWAY \
{12, 1.8f, 1.000f, -1000, -300, 0, 1.49f, 0.59f, 1.00f, -1219, 0.007f, 0.00f,0.00f,0.00f, 441, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_STONECORRIDOR \
{13, 13.5f, 1.000f, -1000, -237, 0, 2.70f, 0.79f, 1.00f, -1214, 0.013f, 0.00f,0.00f,0.00f, 395, 0.020f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_ALLEY \
{14, 7.5f, 0.300f, -1000, -270, 0, 1.49f, 0.86f, 1.00f, -1204, 0.007f, 0.00f,0.00f,0.00f, -4, 0.011f, 0.00f,0.00f,0.00f, 0.125f, 0.950f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_FOREST \
{15, 38.0f, 0.300f, -1000, -3300, 0, 1.49f, 0.54f, 1.00f, -2560, 0.162f, 0.00f,0.00f,0.00f, -229, 0.088f, 0.00f,0.00f,0.00f, 0.125f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_CITY \
{16, 7.5f, 0.500f, -1000, -800, 0, 1.49f, 0.67f, 1.00f, -2273, 0.007f, 0.00f,0.00f,0.00f, -1691, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_MOUNTAINS \
{17, 100.0f, 0.270f, -1000, -2500, 0, 1.49f, 0.21f, 1.00f, -2780, 0.300f, 0.00f,0.00f,0.00f, -1434, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_QUARRY \
{18, 17.5f, 1.000f, -1000, -1000, 0, 1.49f, 0.83f, 1.00f, -10000, 0.061f, 0.00f,0.00f,0.00f, 500, 0.025f, 0.00f,0.00f,0.00f, 0.125f, 0.700f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_PLAIN \
{19, 42.5f, 0.210f, -1000, -2000, 0, 1.49f, 0.50f, 1.00f, -2466, 0.179f, 0.00f,0.00f,0.00f, -1926, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_PARKINGLOT \
{20, 8.3f, 1.000f, -1000, 0, 0, 1.65f, 1.50f, 1.00f, -1363, 0.008f, 0.00f,0.00f,0.00f, -1153, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_SEWERPIPE \
{21, 1.7f, 0.800f, -1000, -1000, 0, 2.81f, 0.14f, 1.00f, 429, 0.014f, 0.00f,0.00f,0.00f, 1023, 0.021f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_UNDERWATER \
{22, 1.8f, 1.000f, -1000, -4000, 0, 1.49f, 0.10f, 1.00f, -449, 0.007f, 0.00f,0.00f,0.00f, 1700, 0.011f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 1.180f, 0.348f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_DRUGGED \
{23, 1.9f, 0.500f, -1000, 0, 0, 8.39f, 1.39f, 1.00f, -115, 0.002f, 0.00f,0.00f,0.00f, 985, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_DIZZY \
{24, 1.8f, 0.600f, -1000, -400, 0, 17.23f, 0.56f, 1.00f, -1713, 0.020f, 0.00f,0.00f,0.00f, -613, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.810f, 0.310f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_PSYCHOTIC \
{25, 1.0f, 0.500f, -1000, -151, 0, 7.56f, 0.91f, 1.00f, -626, 0.020f, 0.00f,0.00f,0.00f, 774, 0.030f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 4.000f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
/***********************************************************************************************\
*
* New environment presets for use with DSPROPERTY_EAXLISTENER_ALLPARAMETERS.
* Each array conforms to the DSPROPSETID_EAX30_ListenerProperties structure defined in EAX.H.
*
************************************************************************************************/
// STANDARDISED-LOCATION SCENARIOS
// CASTLE PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_CASTLE_SMALLROOM \
{ 26, 8.3f, 0.890f, -1100, -800, -2000, 1.22f, 0.83f, 0.31f, -100, 0.022f, 0.00f,0.00f,0.00f, 0, 0.011f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
#define EAX30_PRESET_CASTLE_SHORTPASSAGE \
{ 26, 8.3f, 0.890f, -1000, -1000, -2000, 2.32f, 0.83f, 0.31f, -100, 0.007f, 0.00f,0.00f,0.00f, -500, 0.023f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
#define EAX30_PRESET_CASTLE_MEDIUMROOM \
{ 26, 8.3f, 0.930f, -1000, -1100, -2000, 2.04f, 0.83f, 0.46f, -300, 0.022f, 0.00f,0.00f,0.00f, -200, 0.011f, 0.00f,0.00f,0.00f, 0.155f, 0.030f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
#define EAX30_PRESET_CASTLE_LONGPASSAGE \
{ 26, 8.3f, 0.890f, -1000, -800, -2000, 3.42f, 0.83f, 0.31f, -200, 0.007f, 0.00f,0.00f,0.00f, -600, 0.023f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
#define EAX30_PRESET_CASTLE_LARGEROOM \
{ 26, 8.3f, 0.820f, -1000, -1100, -1800, 2.53f, 0.83f, 0.50f, -900, 0.034f, 0.00f,0.00f,0.00f, -400, 0.016f, 0.00f,0.00f,0.00f, 0.185f, 0.070f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
#define EAX30_PRESET_CASTLE_HALL \
{ 26, 8.3f, 0.810f, -1000, -1100, -1500, 3.14f, 0.79f, 0.62f, -1300, 0.056f, 0.00f,0.00f,0.00f, -500, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
#define EAX30_PRESET_CASTLE_CUPBOARD \
{ 26, 8.3f, 0.890f, -1000, -1100, -2000, 0.67f, 0.87f, 0.31f, 300, 0.010f, 0.00f,0.00f,0.00f, 300, 0.007f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
#define EAX30_PRESET_CASTLE_COURTYARD \
{ 26, 8.3f, 0.420f, -1100, -700, -900, 2.13f, 0.61f, 0.23f, -2300, 0.112f, 0.00f,0.00f,0.00f, -1500, 0.036f, 0.00f,0.00f,0.00f, 0.250f, 0.370f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_CASTLE_ALCOVE \
{ 26, 8.3f, 0.890f, -1000, -600, -2000, 1.64f, 0.87f, 0.31f, -100, 0.007f, 0.00f,0.00f,0.00f, -500, 0.034f, 0.00f,0.00f,0.00f, 0.138f, 0.080f, 0.250f, 0.000f, -5.0f, 5168.6f, 139.5f, 0.00f, 0x20 }
// FACTORY PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_FACTORY_ALCOVE \
{ 26, 1.8f, 0.590f, -1200, -200, -600, 3.14f, 0.65f, 1.31f, 300, 0.010f, 0.00f,0.00f,0.00f, -1200, 0.038f, 0.00f,0.00f,0.00f, 0.114f, 0.100f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_SHORTPASSAGE \
{ 26, 1.8f, 0.640f, -1200, -200, -600, 2.53f, 0.65f, 1.31f, 0, 0.010f, 0.00f,0.00f,0.00f, -600, 0.038f, 0.00f,0.00f,0.00f, 0.135f, 0.230f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_MEDIUMROOM \
{ 26, 1.9f, 0.820f, -1200, -200, -600, 2.76f, 0.65f, 1.31f, -1100, 0.022f, 0.00f,0.00f,0.00f, -400, 0.023f, 0.00f,0.00f,0.00f, 0.174f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_LONGPASSAGE \
{ 26, 1.8f, 0.640f, -1200, -200, -600, 4.06f, 0.65f, 1.31f, 0, 0.020f, 0.00f,0.00f,0.00f, -900, 0.037f, 0.00f,0.00f,0.00f, 0.135f, 0.230f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_LARGEROOM \
{ 26, 1.9f, 0.750f, -1200, -300, -400, 4.24f, 0.51f, 1.31f, -1500, 0.039f, 0.00f,0.00f,0.00f, -600, 0.023f, 0.00f,0.00f,0.00f, 0.231f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_HALL \
{ 26, 1.9f, 0.750f, -1000, -300, -400, 7.43f, 0.51f, 1.31f, -2400, 0.073f, 0.00f,0.00f,0.00f, -500, 0.027f, 0.00f,0.00f,0.00f, 0.250f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_CUPBOARD \
{ 26, 1.7f, 0.630f, -1200, -200, -600, 0.49f, 0.65f, 1.31f, 200, 0.010f, 0.00f,0.00f,0.00f, 200, 0.032f, 0.00f,0.00f,0.00f, 0.107f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_COURTYARD \
{ 26, 1.7f, 0.570f, -1000, -1000, -400, 2.32f, 0.29f, 0.56f, -2400, 0.090f, 0.00f,0.00f,0.00f, -2000, 0.039f, 0.00f,0.00f,0.00f, 0.250f, 0.290f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
#define EAX30_PRESET_FACTORY_SMALLROOM \
{ 26, 1.8f, 0.820f, -1200, -200, -600, 1.72f, 0.65f, 1.31f, -300, 0.010f, 0.00f,0.00f,0.00f, -200, 0.024f, 0.00f,0.00f,0.00f, 0.119f, 0.070f, 0.250f, 0.000f, -0.0f, 3762.6f, 362.5f, 0.00f, 0x20 }
// ICE PALACE PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_ICEPALACE_ALCOVE \
{ 26, 2.7f, 0.840f, -1000, -500, -1100, 2.76f, 1.46f, 0.28f, 100, 0.010f, 0.00f,0.00f,0.00f, -1200, 0.030f, 0.00f,0.00f,0.00f, 0.161f, 0.090f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_SHORTPASSAGE \
{ 26, 2.7f, 0.750f, -1000, -500, -1100, 1.79f, 1.46f, 0.28f, -600, 0.010f, 0.00f,0.00f,0.00f, -700, 0.019f, 0.00f,0.00f,0.00f, 0.177f, 0.090f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_MEDIUMROOM \
{ 26, 2.7f, 0.870f, -1000, -500, -700, 2.22f, 1.53f, 0.32f, -800, 0.039f, 0.00f,0.00f,0.00f, -1200, 0.027f, 0.00f,0.00f,0.00f, 0.186f, 0.120f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_LONGPASSAGE \
{ 26, 2.7f, 0.770f, -1000, -500, -800, 3.01f, 1.46f, 0.28f, -200, 0.012f, 0.00f,0.00f,0.00f, -800, 0.025f, 0.00f,0.00f,0.00f, 0.186f, 0.040f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_LARGEROOM \
{ 26, 2.9f, 0.810f, -1000, -500, -700, 3.14f, 1.53f, 0.32f, -1200, 0.039f, 0.00f,0.00f,0.00f, -1300, 0.027f, 0.00f,0.00f,0.00f, 0.214f, 0.110f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_HALL \
{ 26, 2.9f, 0.760f, -1000, -700, -500, 5.49f, 1.53f, 0.38f, -1900, 0.054f, 0.00f,0.00f,0.00f, -1400, 0.052f, 0.00f,0.00f,0.00f, 0.226f, 0.110f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_CUPBOARD \
{ 26, 2.7f, 0.830f, -1000, -600, -1300, 0.76f, 1.53f, 0.26f, 100, 0.012f, 0.00f,0.00f,0.00f, 100, 0.016f, 0.00f,0.00f,0.00f, 0.143f, 0.080f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_COURTYARD \
{ 26, 2.9f, 0.590f, -1000, -1100, -1000, 2.04f, 1.20f, 0.38f, -2000, 0.073f, 0.00f,0.00f,0.00f, -2200, 0.043f, 0.00f,0.00f,0.00f, 0.235f, 0.480f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
#define EAX30_PRESET_ICEPALACE_SMALLROOM \
{ 26, 2.7f, 0.840f, -1000, -500, -1100, 1.51f, 1.53f, 0.27f, -100, 0.010f, 0.00f,0.00f,0.00f, -900, 0.011f, 0.00f,0.00f,0.00f, 0.164f, 0.140f, 0.250f, 0.000f, -0.0f, 12428.5f, 99.6f, 0.00f, 0x20 }
// SPACE STATION PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_SPACESTATION_ALCOVE \
{ 26, 1.5f, 0.780f, -1100, -300, -100, 1.16f, 0.81f, 0.55f, 300, 0.007f, 0.00f,0.00f,0.00f, -500, 0.018f, 0.00f,0.00f,0.00f, 0.192f, 0.210f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPACESTATION_MEDIUMROOM \
{ 26, 1.5f, 0.750f, -1000, -400, -100, 3.01f, 0.50f, 0.55f, -1000, 0.034f, 0.00f,0.00f,0.00f, -700, 0.035f, 0.00f,0.00f,0.00f, 0.209f, 0.310f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPACESTATION_SHORTPASSAGE \
{ 26, 1.5f, 0.870f, -1000, -400, -100, 3.57f, 0.50f, 0.55f, 0, 0.012f, 0.00f,0.00f,0.00f, -600, 0.016f, 0.00f,0.00f,0.00f, 0.172f, 0.200f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPACESTATION_LONGPASSAGE \
{ 26, 1.9f, 0.820f, -1000, -400, -100, 4.62f, 0.62f, 0.55f, 0, 0.012f, 0.00f,0.00f,0.00f, -800, 0.031f, 0.00f,0.00f,0.00f, 0.250f, 0.230f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPACESTATION_LARGEROOM \
{ 26, 1.8f, 0.810f, -1000, -400, -100, 3.89f, 0.38f, 0.61f, -1200, 0.056f, 0.00f,0.00f,0.00f, -800, 0.035f, 0.00f,0.00f,0.00f, 0.233f, 0.280f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPACESTATION_HALL \
{ 26, 1.9f, 0.870f, -1000, -400, -100, 7.11f, 0.38f, 0.61f, -1500, 0.100f, 0.00f,0.00f,0.00f, -1000, 0.047f, 0.00f,0.00f,0.00f, 0.250f, 0.250f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPACESTATION_CUPBOARD \
{ 26, 1.4f, 0.560f, -1000, -300, -100, 0.79f, 0.81f, 0.55f, 200, 0.007f, 0.00f,0.00f,0.00f, 400, 0.018f, 0.00f,0.00f,0.00f, 0.181f, 0.310f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPACESTATION_SMALLROOM \
{ 26, 1.5f, 0.700f, -1000, -300, -100, 1.72f, 0.82f, 0.55f, -400, 0.007f, 0.00f,0.00f,0.00f, -500, 0.013f, 0.00f,0.00f,0.00f, 0.188f, 0.260f, 0.250f, 0.000f, -5.0f, 3316.1f, 458.2f, 0.00f, 0x20 }
// WOODEN GALLEON PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_WOODEN_ALCOVE \
{ 26, 7.5f, 1.000f, -1100, -1800, -1000, 1.22f, 0.62f, 0.91f, -100, 0.012f, 0.00f,0.00f,0.00f, -600, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_SHORTPASSAGE \
{ 26, 7.5f, 1.000f, -1100, -1800, -1000, 1.45f, 0.50f, 0.87f, -300, 0.012f, 0.00f,0.00f,0.00f, -700, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_MEDIUMROOM \
{ 26, 7.5f, 1.000f, -1200, -2000, -1100, 1.07f, 0.42f, 0.82f, -300, 0.039f, 0.00f,0.00f,0.00f, -400, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_LONGPASSAGE \
{ 26, 7.5f, 1.000f, -1100, -2000, -1000, 1.79f, 0.40f, 0.79f, -200, 0.020f, 0.00f,0.00f,0.00f, -1000, 0.036f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_LARGEROOM \
{ 26, 7.5f, 1.000f, -1200, -2100, -1100, 1.45f, 0.33f, 0.82f, -300, 0.056f, 0.00f,0.00f,0.00f, -500, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_HALL \
{ 26, 7.5f, 1.000f, -1200, -2200, -1100, 1.95f, 0.30f, 0.82f, -300, 0.068f, 0.00f,0.00f,0.00f, -500, 0.063f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_CUPBOARD \
{ 26, 7.5f, 1.000f, -1000, -1700, -1000, 0.56f, 0.46f, 0.91f, -100, 0.012f, 0.00f,0.00f,0.00f, -100, 0.028f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_SMALLROOM \
{ 26, 7.5f, 1.000f, -1200, -1900, -1000, 0.79f, 0.32f, 0.87f, -200, 0.032f, 0.00f,0.00f,0.00f, -300, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
#define EAX30_PRESET_WOODEN_COURTYARD \
{ 26, 7.5f, 0.650f, -1700, -2200, -1000, 1.79f, 0.35f, 0.79f, -700, 0.063f, 0.00f,0.00f,0.00f, -2300, 0.032f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 4705.0f, 99.6f, 0.00f, 0x3f }
// OTHER SCENARIOS
// SPORTS PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_SPORT_EMPTYSTADIUM \
{ 26, 7.2f, 1.000f, -1300, -700, -200, 6.26f, 0.51f, 1.10f, -2400, 0.183f, 0.00f,0.00f,0.00f, -1100, 0.038f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
#define EAX30_PRESET_SPORT_SQUASHCOURT \
{ 26, 7.5f, 0.750f, -1100, -1000, -200, 2.22f, 0.91f, 1.16f, -700, 0.007f, 0.00f,0.00f,0.00f, -300, 0.011f, 0.00f,0.00f,0.00f, 0.126f, 0.190f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPORT_SMALLSWIMMINGPOOL \
{ 26, 36.2f, 0.700f, -1400, -200, -100, 2.76f, 1.25f, 1.14f, -400, 0.020f, 0.00f,0.00f,0.00f, -300, 0.030f, 0.00f,0.00f,0.00f, 0.179f, 0.150f, 0.895f, 0.190f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
#define EAX30_PRESET_SPORT_LARGESWIMMINGPOOL\
{ 26, 36.2f, 0.820f, -1200, -200, 0, 5.49f, 1.31f, 1.14f, -700, 0.039f, 0.00f,0.00f,0.00f, -800, 0.049f, 0.00f,0.00f,0.00f, 0.222f, 0.550f, 1.159f, 0.210f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
#define EAX30_PRESET_SPORT_GYMNASIUM \
{ 26, 7.5f, 0.810f, -1200, -700, -100, 3.14f, 1.06f, 1.35f, -800, 0.029f, 0.00f,0.00f,0.00f, -700, 0.045f, 0.00f,0.00f,0.00f, 0.146f, 0.140f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
#define EAX30_PRESET_SPORT_FULLSTADIUM \
{ 26, 7.2f, 1.000f, -1300, -2300, -200, 5.25f, 0.17f, 0.80f, -2000, 0.188f, 0.00f,0.00f,0.00f, -1300, 0.038f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
#define EAX30_PRESET_SPORT_STADIUMTANNOY \
{ 26, 3.0f, 0.780f, -900, -500, -600, 2.53f, 0.88f, 0.68f, -1100, 0.230f, 0.00f,0.00f,0.00f, -600, 0.063f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
// PREFAB PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_PREFAB_WORKSHOP \
{ 26, 1.9f, 1.000f, -1000, -1700, -800, 0.76f, 1.00f, 1.00f, 0, 0.012f, 0.00f,0.00f,0.00f, -200, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
#define EAX30_PRESET_PREFAB_SCHOOLROOM \
{ 26, 1.86f, 0.690f, -1100, -400, -600, 0.98f, 0.45f, 0.18f, 300, 0.017f, 0.00f,0.00f,0.00f, 0, 0.015f, 0.00f,0.00f,0.00f, 0.095f, 0.140f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
#define EAX30_PRESET_PREFAB_PRACTISEROOM \
{ 26, 1.86f, 0.870f, -1000, -800, -600, 1.12f, 0.56f, 0.18f, 200, 0.010f, 0.00f,0.00f,0.00f, -200, 0.011f, 0.00f,0.00f,0.00f, 0.095f, 0.140f, 0.250f, 0.000f, -0.0f, 7176.9f, 211.2f, 0.00f, 0x20 }
#define EAX30_PRESET_PREFAB_OUTHOUSE \
{ 26, 80.3f, 0.820f, -1100, -1900, -1600, 1.38f, 0.38f, 0.35f, -100, 0.024f, 0.00f,0.00f,-0.00f, -800, 0.044f, 0.00f,0.00f,0.00f, 0.121f, 0.170f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
#define EAX30_PRESET_PREFAB_CARAVAN \
{ 26, 8.3f, 1.000f, -1000, -2100, -1800, 0.43f, 1.50f, 1.00f, 0, 0.012f, 0.00f,0.00f,0.00f, 400, 0.012f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x1f }
// for US developers, a caravan is the same as a trailer =o)
// DOME AND PIPE PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_DOME_TOMB \
{ 26, 51.8f, 0.790f, -1000, -900, -1300, 4.18f, 0.21f, 0.10f, -825, 0.030f, 0.00f,0.00f,0.00f, -125, 0.022f, 0.00f,0.00f,0.00f, 0.177f, 0.190f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 }
#define EAX30_PRESET_PIPE_SMALL \
{ 26, 50.3f, 1.000f, -1000, -900, -1300, 5.04f, 0.10f, 0.10f, -600, 0.032f, 0.00f,0.00f,0.00f, 400, 0.015f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f }
#define EAX30_PRESET_DOME_SAINTPAULS \
{ 26, 50.3f, 0.870f, -1000, -900, -1300, 10.48f, 0.19f, 0.10f, -1500, 0.090f, 0.00f,0.00f,0.00f, -500, 0.042f, 0.00f,0.00f,0.00f, 0.250f, 0.120f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f }
#define EAX30_PRESET_PIPE_LONGTHIN \
{ 26, 1.6f, 0.910f, -1200, -700, -1100, 9.21f, 0.18f, 0.10f, -300, 0.010f, 0.00f,0.00f,0.00f, -1000, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 }
#define EAX30_PRESET_PIPE_LARGE \
{ 26, 50.3f, 1.000f, -1000, -900, -1300, 8.45f, 0.10f, 0.10f, -800, 0.046f, 0.00f,0.00f,0.00f, 0, 0.032f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x3f }
#define EAX30_PRESET_PIPE_RESONANT \
{ 26, 1.3f, 0.910f, -1200, -700, -1100, 6.81f, 0.18f, 0.10f, -300, 0.010f, 0.00f,0.00f,0.00f, -700, 0.022f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 2854.4f, 20.0f, 0.00f, 0x0 }
// OUTDOORS PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_OUTDOORS_BACKYARD \
{ 26, 80.3f, 0.450f, -1100, -1200, -600, 1.12f, 0.34f, 0.46f, -1100, 0.049f, 0.00f,0.00f,-0.00f, -1300, 0.023f, 0.00f,0.00f,0.00f, 0.218f, 0.340f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
#define EAX30_PRESET_OUTDOORS_ROLLINGPLAINS \
{ 26, 80.3f, 0.000f, -1100, -3900, -400, 2.13f, 0.21f, 0.46f, -2000, 0.300f, 0.00f,0.00f,-0.00f, -1500, 0.019f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
#define EAX30_PRESET_OUTDOORS_DEEPCANYON \
{ 26, 80.3f, 0.740f, -1100, -1500, -400, 3.89f, 0.21f, 0.46f, -2000, 0.193f, 0.00f,0.00f,-0.00f, -1100, 0.019f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
#define EAX30_PRESET_OUTDOORS_CREEK \
{ 26, 80.3f, 0.350f, -1100, -1500, -600, 2.13f, 0.21f, 0.46f, -1700, 0.115f, 0.00f,0.00f,-0.00f, -1100, 0.031f, 0.00f,0.00f,0.00f, 0.218f, 0.340f, 0.250f, 0.000f, -5.0f, 4399.1f, 242.9f, 0.00f, 0x0 }
#define EAX30_PRESET_OUTDOORS_VALLEY \
{ 26, 80.3f, 0.280f, -1100, -3100, -1600, 2.88f, 0.26f, 0.35f, -3200, 0.163f, 0.00f,0.00f,-0.00f, -1000, 0.100f, 0.00f,0.00f,0.00f, 0.250f, 0.340f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
// MOOD PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_MOOD_HEAVEN \
{ 26, 19.6f, 0.940f, -1000, -200, -700, 5.04f, 1.12f, 0.56f, -1230, 0.020f, 0.00f,0.00f,0.00f, -200, 0.029f, 0.00f,0.00f,0.00f, 0.250f, 0.080f, 2.742f, 0.050f, -2.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_MOOD_HELL \
{ 26, 100.0f, 0.570f, -1000, -900, -700, 3.57f, 0.49f, 2.00f, -10000, 0.020f, 0.00f,0.00f,0.00f, 100, 0.030f, 0.00f,0.00f,0.00f, 0.110f, 0.040f, 2.109f, 0.520f, -5.0f, 5000.0f, 139.5f, 0.00f, 0x40 }
#define EAX30_PRESET_MOOD_MEMORY \
{ 26, 8.0f, 0.850f, -1000, -400, -900, 4.06f, 0.82f, 0.56f, -2800, 0.000f, 0.00f,0.00f,0.00f, -500, 0.000f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.474f, 0.450f, -2.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
// DRIVING SIMULATION PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_DRIVING_COMMENTATOR \
{ 26, 3.0f, 0.000f, -900, -500, -600, 2.42f, 0.88f, 0.68f, -1400, 0.093f, 0.00f,0.00f,0.00f, -1200, 0.017f, 0.00f,0.00f,0.00f, 0.250f, 1.000f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
#define EAX30_PRESET_DRIVING_PITGARAGE \
{ 26, 1.9f, 0.590f, -1400, -300, -500, 1.72f, 0.93f, 0.87f, -500, 0.000f, 0.00f,0.00f,0.00f, 0, 0.016f, 0.00f,0.00f,0.00f, 0.250f, 0.110f, 0.250f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
#define EAX30_PRESET_DRIVING_INCAR_RACER \
{ 26, 1.1f, 0.800f, -700, 0, -200, 0.17f, 2.00f, 0.41f, 500, 0.007f, 0.00f,0.00f,0.00f, -500, 0.015f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -0.0f, 10268.2f, 251.0f, 0.00f, 0x20 }
#define EAX30_PRESET_DRIVING_INCAR_SPORTS \
{ 26, 1.1f, 0.800f, -900, -400, 0, 0.17f, 0.75f, 0.41f, 0, 0.010f, 0.00f,0.00f,0.00f, -600, 0.000f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -0.0f, 10268.2f, 251.0f, 0.00f, 0x20 }
#define EAX30_PRESET_DRIVING_INCAR_LUXURY \
{ 26, 1.6f, 1.000f, -800, -2000, -600, 0.13f, 0.41f, 0.46f, -200, 0.010f, 0.00f,0.00f,0.00f, 300, 0.010f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -0.0f, 10268.2f, 251.0f, 0.00f, 0x20 }
#define EAX30_PRESET_DRIVING_FULLGRANDSTAND \
{ 26, 8.3f, 1.000f, -1100, -1100, -400, 3.01f, 1.37f, 1.28f, -900, 0.090f, 0.00f,0.00f,0.00f, -1700, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10420.2f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_DRIVING_EMPTYGRANDSTAND \
{ 26, 8.3f, 1.000f, -700, 0, -200, 4.62f, 1.75f, 1.40f, -1363, 0.090f, 0.00f,0.00f,0.00f, -1900, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.000f, -5.0f, 10420.2f, 250.0f, 0.00f, 0x1f }
#define EAX30_PRESET_DRIVING_TUNNEL \
{ 26, 3.1f, 0.810f, -900, -800, -100, 3.42f, 0.94f, 1.31f, -300, 0.051f, 0.00f,0.00f,0.00f, -500, 0.047f, 0.00f,0.00f,0.00f, 0.214f, 0.050f, 0.250f, 0.000f, -0.0f, 5000.0f, 155.3f, 0.00f, 0x20 }
// CITY PRESETS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_CITY_STREETS \
{ 26, 3.0f, 0.780f, -1100, -300, -100, 1.79f, 1.12f, 0.91f, -1700, 0.046f, 0.00f,0.00f,0.00f, -2800, 0.028f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
#define EAX30_PRESET_CITY_SUBWAY \
{ 26, 3.0f, 0.740f, -1100, -300, -100, 3.01f, 1.23f, 0.91f, -700, 0.046f, 0.00f,0.00f,0.00f, -1000, 0.028f, 0.00f,0.00f,0.00f, 0.125f, 0.210f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
#define EAX30_PRESET_CITY_MUSEUM \
{ 26, 80.3f, 0.820f, -1100, -1500, -1500, 3.28f, 1.40f, 0.57f, -1600, 0.039f, 0.00f,0.00f,-0.00f, -600, 0.034f, 0.00f,0.00f,0.00f, 0.130f, 0.170f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
#define EAX30_PRESET_CITY_LIBRARY \
{ 26, 80.3f, 0.820f, -1100, -1100, -2100, 2.76f, 0.89f, 0.41f, -1100, 0.029f, 0.00f,0.00f,-0.00f, -500, 0.020f, 0.00f,0.00f,0.00f, 0.130f, 0.170f, 0.250f, 0.000f, -0.0f, 2854.4f, 107.5f, 0.00f, 0x0 }
#define EAX30_PRESET_CITY_UNDERPASS \
{ 26, 3.0f, 0.820f, -1500, -700, -100, 3.57f, 1.12f, 0.91f, -1500, 0.059f, 0.00f,0.00f,0.00f, -1100, 0.037f, 0.00f,0.00f,0.00f, 0.250f, 0.140f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
#define EAX30_PRESET_CITY_ABANDONED \
{ 26, 3.0f, 0.690f, -1100, -200, -100, 3.28f, 1.17f, 0.91f, -1400, 0.044f, 0.00f,0.00f,0.00f, -2400, 0.024f, 0.00f,0.00f,0.00f, 0.250f, 0.200f, 0.250f, 0.000f, -0.0f, 5000.0f, 250.0f, 0.00f, 0x20 }
// MISC ROOMS
// Env Size Diffus Room RoomHF RoomLF DecTm DcHF DcLF Refl RefDel Ref Pan Revb RevDel Rev Pan EchTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff FLAGS
#define EAX30_PRESET_DUSTYROOM \
{ 26, 1.8f, 0.560f, -1100, -200, -300, 1.79f, 0.38f, 0.21f, -600, 0.002f, 0.00f,0.00f,0.00f, 200, 0.006f, 0.00f,0.00f,0.00f, 0.202f, 0.050f, 0.250f, 0.000f, -3.0f, 13046.0f, 163.3f, 0.00f, 0x20 }
#define EAX30_PRESET_CHAPEL \
{ 26, 19.6f, 0.840f, -1000, -500, 0, 4.62f, 0.64f, 1.23f, -700, 0.032f, 0.00f,0.00f,0.00f, -800, 0.049f, 0.00f,0.00f,0.00f, 0.250f, 0.000f, 0.250f, 0.110f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x3f }
#define EAX30_PRESET_SMALLWATERROOM \
{ 26, 36.2f, 0.700f, -1200, -698, 0, 1.51f, 1.25f, 1.14f, -100, 0.020f, 0.00f,0.00f,0.00f, 200, 0.030f, 0.00f,0.00f,0.00f, 0.179f, 0.150f, 0.895f, 0.190f, -5.0f, 5000.0f, 250.0f, 0.00f, 0x0 }
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Effect Scenarios enumerated //
//////////////////////////////////////////////////////
typedef enum
{
EAX30_SCENARIO_CASTLE = 0,
EAX30_SCENARIO_FACTORY,
EAX30_SCENARIO_ICEPALACE,
EAX30_SCENARIO_SPACESTATION,
EAX30_SCENARIO_WOODGALLEON,
EAX30_SCENARIO_SPORTS,
EAX30_SCENARIO_PREFAB,
EAX30_SCENARIO_DOMESNPIPES,
EAX30_SCENARIO_OUTDOORS,
EAX30_SCENARIO_MOOD,
EAX30_SCENARIO_DRIVING,
EAX30_SCENARIO_CITY,
EAX30_SCENARIO_MISC,
EAX30_SCENARIO_ORIGINAL
}
EAX30_SCENARIO;
//////////////////////////////////////////////////////
// Number of Effect Scenarios //
//////////////////////////////////////////////////////
#define EAX30_NUM_SCENARIOS 14
//////////////////////////////////////////////////////
// Number of Effect Scenarios with standardised //
// locations //
//////////////////////////////////////////////////////
#define EAX30_NUM_STANDARD_SCENARIOS 5
//////////////////////////////////////////////////////
// Array of scenario names //
//////////////////////////////////////////////////////
extern char* EAX30_SCENARIO_NAMES[];
//////////////////////////////////////////////////////
// Standardised Locations enumerated //
//////////////////////////////////////////////////////
typedef enum
{
EAX30_LOCATION_HALL = 0,
EAX30_LOCATION_LARGEROOM,
EAX30_LOCATION_MEDIUMROOM,
EAX30_LOCATION_SMALLROOM,
EAX30_LOCATION_CUPBOARD,
EAX30_LOCATION_ALCOVE,
EAX30_LOCATION_LONGPASSAGE,
EAX30_LOCATION_SHORTPASSAGE,
EAX30_LOCATION_COURTYARD
}
EAX30_LOCATION;
//////////////////////////////////////////////////////
// Number of Standardised Locations //
//////////////////////////////////////////////////////
#define EAX30_NUM_LOCATIONS 9
//////////////////////////////////////////////////////
// Array of standardised location names //
//////////////////////////////////////////////////////
extern char* EAX30_LOCATION_NAMES[];
//////////////////////////////////////////////////////
// Number of effects in each scenario //
//////////////////////////////////////////////////////
#define EAX30_NUM_ORIGINAL_PRESETS 26
#define EAX30_NUM_CASTLE_PRESETS EAX30_NUM_LOCATIONS
#define EAX30_NUM_FACTORY_PRESETS EAX30_NUM_LOCATIONS
#define EAX30_NUM_ICEPALACE_PRESETS EAX30_NUM_LOCATIONS
#define EAX30_NUM_SPACESTATION_PRESETS EAX30_NUM_LOCATIONS
#define EAX30_NUM_WOODGALLEON_PRESETS EAX30_NUM_LOCATIONS
#define EAX30_NUM_SPORTS_PRESETS 7
#define EAX30_NUM_PREFAB_PRESETS 5
#define EAX30_NUM_DOMESNPIPES_PRESETS 6
#define EAX30_NUM_OUTDOORS_PRESETS 5
#define EAX30_NUM_MOOD_PRESETS 3
#define EAX30_NUM_DRIVING_PRESETS 8
#define EAX30_NUM_CITY_PRESETS 6
#define EAX30_NUM_MISC_PRESETS 3
//////////////////////////////////////////////////////
// Standardised Location effects can be accessed //
// from a matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_STANDARD_PRESETS[EAX30_NUM_STANDARD_SCENARIOS][EAX30_NUM_LOCATIONS];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Original Preset effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
ORIGINAL_GENERIC = 0,
ORIGINAL_PADDEDCELL,
ORIGINAL_ROOM,
ORIGINAL_BATHROOM,
ORIGINAL_LIVINGROOM,
ORIGINAL_STONEROOM,
ORIGINAL_AUDITORIUM,
ORIGINAL_CONCERTHALL,
ORIGINAL_CAVE,
ORIGINAL_ARENA,
ORIGINAL_HANGAR,
ORIGINAL_CARPETTEDHALLWAY,
ORIGINAL_HALLWAY,
ORIGINAL_STONECORRIDOR,
ORIGINAL_ALLEY,
ORIGINAL_FOREST,
ORIGINAL_CITY,
ORIGINAL_MOUNTAINS,
ORIGINAL_QUARRY,
ORIGINAL_PLAIN,
ORIGINAL_PARKINGLOT,
ORIGINAL_SEWERPIPE,
ORIGINAL_UNDERWATER,
ORIGINAL_DRUGGED,
ORIGINAL_DIZZY,
ORIGINAL_PSYCHOTIC
}
EAX30_ORIGINAL_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of original environment names //
//////////////////////////////////////////////////////
extern char* EAX30_ORIGINAL_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Original effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_ORIGINAL_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Sports scenario effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
SPORT_EMPTYSTADIUM=0,
SPORT_FULLSTADIUM,
SPORT_STADIUMTANNOY,
SPORT_SQUASHCOURT,
SPORT_SMALLSWIMMINGPOOL,
SPORT_LARGESWIMMINGPOOL,
SPORT_GYMNASIUM
}
EAX30_SPORTS_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of sport environment names //
//////////////////////////////////////////////////////
extern char* EAX30_SPORTS_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Sports effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_SPORTS_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Prefab scenario effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
PREFAB_WORKSHOP,
PREFAB_SCHOOLROOM,
PREFAB_PRACTISEROOM,
PREFAB_OUTHOUSE,
PREFAB_CARAVAN
}
EAX30_PREFAB_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of prefab environment names //
//////////////////////////////////////////////////////
char* EAX30_PREFAB_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Prefab effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_PREFAB_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Domes & Pipes effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
DOME_TOMB,
DOME_SAINTPAULS,
PIPE_SMALL,
PIPE_LONGTHIN,
PIPE_LARGE,
PIPE_RESONANT
}
EAX30_DOMESNPIPES_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of Domes & Pipes environment names //
//////////////////////////////////////////////////////
extern char* EAX30_DOMESNPIPES_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Domes & Pipes effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_DOMESNPIPES_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Outdoors scenario effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
OUTDOORS_BACKYARD,
OUTDOORS_ROLLINGPLAINS,
OUTDOORS_DEEPCANYON,
OUTDOORS_CREEK,
OUTDOORS_VALLEY
}
EAX30_OUTDOORS_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of Outdoors environment names //
//////////////////////////////////////////////////////
extern char* EAX30_OUTDOORS_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Outdoors effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_OUTDOORS_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Mood scenario effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
MOOD_HEAVEN,
MOOD_HELL,
MOOD_MEMORY
}
EAX30_MOOD_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of Mood environment names //
//////////////////////////////////////////////////////
extern char* EAX30_MOOD_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Mood effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_MOOD_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Driving scenario effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
DRIVING_COMMENTATOR,
DRIVING_PITGARAGE,
DRIVING_INCAR_RACER,
DRIVING_INCAR_SPORTS,
DRIVING_INCAR_LUXURY,
DRIVING_FULLGRANDSTAND,
DRIVING_EMPTYGRANDSTAND,
DRIVING_TUNNEL
}
EAX30_DRIVING_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of driving environment names //
//////////////////////////////////////////////////////
extern char* EAX30_DRIVING_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Driving effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_DRIVING_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// City scenario effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
CITY_STREETS,
CITY_SUBWAY,
CITY_MUSEUM,
CITY_LIBRARY,
CITY_UNDERPASS,
CITY_ABANDONED
}
EAX30_CITY_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of City environment names //
//////////////////////////////////////////////////////
extern char* EAX30_CITY_PRESET_NAMES[];
//////////////////////////////////////////////////////
// City effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_CITY_PRESETS[];
/********************************************************************************************************/
//////////////////////////////////////////////////////
// Misc scenario effects enumerated //
//////////////////////////////////////////////////////
typedef enum
{
DUSTYROOM,
CHAPEL,
SMALLWATERROOM
}
EAX30_MISC_PRESET_ENUMS;
//////////////////////////////////////////////////////
// Array of Misc environment names //
//////////////////////////////////////////////////////
extern char* EAX30_MISC_PRESET_NAMES[];
//////////////////////////////////////////////////////
// Misc effects matrix //
//////////////////////////////////////////////////////
extern EAXLISTENERPROPERTIES EAX30_MISC_PRESETS[];
/***********************************************************************************************\
*
* Material transmission presets
*
* Three values in this order :-
*
* 1. Occlusion (or Obstruction)
* 2. Occlusion LF Ratio (or Obstruction LF Ratio)
* 3. Occlusion Room Ratio
*
************************************************************************************************/
// Single window material preset
#define EAX_MATERIAL_SINGLEWINDOW (-2800)
#define EAX_MATERIAL_SINGLEWINDOWLF 0.71f
#define EAX_MATERIAL_SINGLEWINDOWROOMRATIO 0.43f
// Double window material preset
#define EAX_MATERIAL_DOUBLEWINDOW (-5000)
#define EAX_MATERIAL_DOUBLEWINDOWLF 0.40f
#define EAX_MATERIAL_DOUBLEWINDOWROOMRATIO 0.24f
// Thin door material preset
#define EAX_MATERIAL_THINDOOR (-1800)
#define EAX_MATERIAL_THINDOORLF 0.66f
#define EAX_MATERIAL_THINDOORROOMRATIO 0.66f
// Thick door material preset
#define EAX_MATERIAL_THICKDOOR (-4400)
#define EAX_MATERIAL_THICKDOORLF 0.64f
#define EAX_MATERIAL_THICKDOORROOMRATIO 0.27f
// Wood wall material preset
#define EAX_MATERIAL_WOODWALL (-4000)
#define EAX_MATERIAL_WOODWALLLF 0.50f
#define EAX_MATERIAL_WOODWALLROOMRATIO 0.30f
// Brick wall material preset
#define EAX_MATERIAL_BRICKWALL (-5000)
#define EAX_MATERIAL_BRICKWALLLF 0.60f
#define EAX_MATERIAL_BRICKWALLROOMRATIO 0.24f
// Stone wall material preset
#define EAX_MATERIAL_STONEWALL (-6000)
#define EAX_MATERIAL_STONEWALLLF 0.68f
#define EAX_MATERIAL_STONEWALLROOMRATIO 0.20f
// Curtain material preset
#define EAX_MATERIAL_CURTAIN (-1200)
#define EAX_MATERIAL_CURTAINLF 0.15f
#define EAX_MATERIAL_CURTAINROOMRATIO 1.00f
#endif // EAXUTIL_INCLUDED

535
eax/eax.h Normal file
View File

@ -0,0 +1,535 @@
/*******************************************************************\
* *
* EAX.H - Environmental Audio Extensions version 3.0 *
* for OpenAL and DirectSound3D *
* *
********************************************************************/
#ifndef EAX_H_INCLUDED
#define EAX_H_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
#ifndef OPENAL
#include <dsound.h>
/*
* EAX Wrapper Interface (using Direct X 7) {4FF53B81-1CE0-11d3-AAB8-00A0C95949D5}
*/
DEFINE_GUID(CLSID_EAXDirectSound,
0x4ff53b81,
0x1ce0,
0x11d3,
0xaa, 0xb8, 0x0, 0xa0, 0xc9, 0x59, 0x49, 0xd5);
/*
* EAX Wrapper Interface (using Direct X 8) {CA503B60-B176-11d4-A094-D0C0BF3A560C}
*/
DEFINE_GUID(CLSID_EAXDirectSound8,
0xca503b60,
0xb176,
0x11d4,
0xa0, 0x94, 0xd0, 0xc0, 0xbf, 0x3a, 0x56, 0xc);
#ifdef DIRECTSOUND_VERSION
#if DIRECTSOUND_VERSION >= 0x0800
__declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate8(GUID*, LPDIRECTSOUND8*, IUnknown FAR *);
typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE8)(GUID*, LPDIRECTSOUND8*, IUnknown FAR*);
#endif
#endif
__declspec(dllimport) HRESULT WINAPI EAXDirectSoundCreate(GUID*, LPDIRECTSOUND*, IUnknown FAR *);
typedef HRESULT (FAR PASCAL *LPEAXDIRECTSOUNDCREATE)(GUID*, LPDIRECTSOUND*, IUnknown FAR*);
__declspec(dllimport) void CDECL GetCurrentVersion(LPDWORD major, LPDWORD minor);
typedef void (CDECL *LPGETCURRENTVERSION)(LPDWORD major, LPDWORD minor);
#else // OPENAL
#include <al.h>
#ifndef GUID_DEFINED
#define GUID_DEFINED
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID;
#endif // !GUID_DEFINED
#ifndef DEFINE_GUID
#ifndef INITGUID
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
extern const GUID /*FAR*/ name
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
extern const GUID name = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
#endif // INITGUID
#endif // DEFINE_GUID
/*
* EAX OpenAL Extension
*/
typedef ALenum (*EAXSet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
typedef ALenum (*EAXGet)(const GUID*, ALuint, ALuint, ALvoid*, ALuint);
#endif
#pragma pack(push, 4)
/*
* EAX 3.0 listener property set {A8FA6880-B476-11d3-BDB9-00C0F02DDF87}
*/
DEFINE_GUID(DSPROPSETID_EAX30_ListenerProperties,
0xa8fa6882,
0xb476,
0x11d3,
0xbd, 0xb9, 0x00, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
// For compatibility with future EAX versions:
#define DSPROPSETID_EAX_ListenerProperties DSPROPSETID_EAX30_ListenerProperties
typedef enum
{
DSPROPERTY_EAXLISTENER_NONE,
DSPROPERTY_EAXLISTENER_ALLPARAMETERS,
DSPROPERTY_EAXLISTENER_ENVIRONMENT,
DSPROPERTY_EAXLISTENER_ENVIRONMENTSIZE,
DSPROPERTY_EAXLISTENER_ENVIRONMENTDIFFUSION,
DSPROPERTY_EAXLISTENER_ROOM,
DSPROPERTY_EAXLISTENER_ROOMHF,
DSPROPERTY_EAXLISTENER_ROOMLF,
DSPROPERTY_EAXLISTENER_DECAYTIME,
DSPROPERTY_EAXLISTENER_DECAYHFRATIO,
DSPROPERTY_EAXLISTENER_DECAYLFRATIO,
DSPROPERTY_EAXLISTENER_REFLECTIONS,
DSPROPERTY_EAXLISTENER_REFLECTIONSDELAY,
DSPROPERTY_EAXLISTENER_REFLECTIONSPAN,
DSPROPERTY_EAXLISTENER_REVERB,
DSPROPERTY_EAXLISTENER_REVERBDELAY,
DSPROPERTY_EAXLISTENER_REVERBPAN,
DSPROPERTY_EAXLISTENER_ECHOTIME,
DSPROPERTY_EAXLISTENER_ECHODEPTH,
DSPROPERTY_EAXLISTENER_MODULATIONTIME,
DSPROPERTY_EAXLISTENER_MODULATIONDEPTH,
DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF,
DSPROPERTY_EAXLISTENER_HFREFERENCE,
DSPROPERTY_EAXLISTENER_LFREFERENCE,
DSPROPERTY_EAXLISTENER_ROOMROLLOFFFACTOR,
DSPROPERTY_EAXLISTENER_FLAGS
} DSPROPERTY_EAX_LISTENERPROPERTY;
// OR these flags with property id
#define DSPROPERTY_EAXLISTENER_IMMEDIATE 0x00000000 // changes take effect immediately
#define DSPROPERTY_EAXLISTENER_DEFERRED 0x80000000 // changes take effect later
#define DSPROPERTY_EAXLISTENER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXLISTENER_NONE | \
DSPROPERTY_EAXLISTENER_IMMEDIATE)
typedef struct _EAXVECTOR {
float x;
float y;
float z;
} EAXVECTOR;
// Use this structure for DSPROPERTY_EAXLISTENER_ALLPARAMETERS
// - all levels are hundredths of decibels
// - all times and delays are in seconds
//
// NOTE: This structure may change in future EAX versions.
// It is recommended to initialize fields by name:
// myListener.lRoom = -1000;
// myListener.lRoomHF = -100;
// ...
// myListener.dwFlags = myFlags /* see EAXLISTENERFLAGS below */ ;
// instead of:
// myListener = { -1000, -100, ... , 0x00000009 };
// If you want to save and load presets in binary form, you
// should define your own structure to insure future compatibility.
//
typedef struct _EAXLISTENERPROPERTIES
{
unsigned long ulEnvironment; // sets all listener properties
float flEnvironmentSize; // environment size in meters
float flEnvironmentDiffusion; // environment diffusion
long lRoom; // room effect level (at mid frequencies)
long lRoomHF; // relative room effect level at high frequencies
long lRoomLF; // relative room effect level at low frequencies
float flDecayTime; // reverberation decay time at mid frequencies
float flDecayHFRatio; // high-frequency to mid-frequency decay time ratio
float flDecayLFRatio; // low-frequency to mid-frequency decay time ratio
long lReflections; // early reflections level relative to room effect
float flReflectionsDelay; // initial reflection delay time
EAXVECTOR vReflectionsPan; // early reflections panning vector
long lReverb; // late reverberation level relative to room effect
float flReverbDelay; // late reverberation delay time relative to initial reflection
EAXVECTOR vReverbPan; // late reverberation panning vector
float flEchoTime; // echo time
float flEchoDepth; // echo depth
float flModulationTime; // modulation time
float flModulationDepth; // modulation depth
float flAirAbsorptionHF; // change in level per meter at high frequencies
float flHFReference; // reference high frequency
float flLFReference; // reference low frequency
float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect
unsigned long ulFlags; // modifies the behavior of properties
} EAXLISTENERPROPERTIES, *LPEAXLISTENERPROPERTIES;
// used by DSPROPERTY_EAXLISTENER_ENVIRONMENT
enum
{
EAX_ENVIRONMENT_GENERIC,
EAX_ENVIRONMENT_PADDEDCELL,
EAX_ENVIRONMENT_ROOM,
EAX_ENVIRONMENT_BATHROOM,
EAX_ENVIRONMENT_LIVINGROOM,
EAX_ENVIRONMENT_STONEROOM,
EAX_ENVIRONMENT_AUDITORIUM,
EAX_ENVIRONMENT_CONCERTHALL,
EAX_ENVIRONMENT_CAVE,
EAX_ENVIRONMENT_ARENA,
EAX_ENVIRONMENT_HANGAR,
EAX_ENVIRONMENT_CARPETEDHALLWAY,
EAX_ENVIRONMENT_HALLWAY,
EAX_ENVIRONMENT_STONECORRIDOR,
EAX_ENVIRONMENT_ALLEY,
EAX_ENVIRONMENT_FOREST,
EAX_ENVIRONMENT_CITY,
EAX_ENVIRONMENT_MOUNTAINS,
EAX_ENVIRONMENT_QUARRY,
EAX_ENVIRONMENT_PLAIN,
EAX_ENVIRONMENT_PARKINGLOT,
EAX_ENVIRONMENT_SEWERPIPE,
EAX_ENVIRONMENT_UNDERWATER,
EAX_ENVIRONMENT_DRUGGED,
EAX_ENVIRONMENT_DIZZY,
EAX_ENVIRONMENT_PSYCHOTIC,
EAX_ENVIRONMENT_UNDEFINED,
EAX_ENVIRONMENT_COUNT
};
// Used by DSPROPERTY_EAXLISTENER_FLAGS
//
// Note: The number and order of flags may change in future EAX versions.
// It is recommended to use the flag defines as follows:
// myFlags = EAXLISTENERFLAGS_DECAYTIMESCALE | EAXLISTENERFLAGS_REVERBSCALE;
// instead of:
// myFlags = 0x00000009;
//
// These flags determine what properties are affected by environment size.
#define EAXLISTENERFLAGS_DECAYTIMESCALE 0x00000001 // reverberation decay time
#define EAXLISTENERFLAGS_REFLECTIONSSCALE 0x00000002 // reflection level
#define EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE 0x00000004 // initial reflection delay time
#define EAXLISTENERFLAGS_REVERBSCALE 0x00000008 // reflections level
#define EAXLISTENERFLAGS_REVERBDELAYSCALE 0x00000010 // late reverberation delay time
#define EAXLISTENERFLAGS_ECHOTIMESCALE 0x00000040 // echo time
#define EAXLISTENERFLAGS_MODULATIONTIMESCALE 0x00000080 // modulation time
// This flag limits high-frequency decay time according to air absorption.
#define EAXLISTENERFLAGS_DECAYHFLIMIT 0x00000020
#define EAXLISTENERFLAGS_RESERVED 0xFFFFFF00 // reserved future use
// Property ranges and defaults:
#define EAXLISTENER_MINENVIRONMENT 0
#define EAXLISTENER_MAXENVIRONMENT (EAX_ENVIRONMENT_COUNT-1)
#define EAXLISTENER_DEFAULTENVIRONMENT EAX_ENVIRONMENT_GENERIC
#define EAXLISTENER_MINENVIRONMENTSIZE 1.0f
#define EAXLISTENER_MAXENVIRONMENTSIZE 100.0f
#define EAXLISTENER_DEFAULTENVIRONMENTSIZE 7.5f
#define EAXLISTENER_MINENVIRONMENTDIFFUSION 0.0f
#define EAXLISTENER_MAXENVIRONMENTDIFFUSION 1.0f
#define EAXLISTENER_DEFAULTENVIRONMENTDIFFUSION 1.0f
#define EAXLISTENER_MINROOM (-10000)
#define EAXLISTENER_MAXROOM 0
#define EAXLISTENER_DEFAULTROOM (-1000)
#define EAXLISTENER_MINROOMHF (-10000)
#define EAXLISTENER_MAXROOMHF 0
#define EAXLISTENER_DEFAULTROOMHF (-100)
#define EAXLISTENER_MINROOMLF (-10000)
#define EAXLISTENER_MAXROOMLF 0
#define EAXLISTENER_DEFAULTROOMLF 0
#define EAXLISTENER_MINDECAYTIME 0.1f
#define EAXLISTENER_MAXDECAYTIME 20.0f
#define EAXLISTENER_DEFAULTDECAYTIME 1.49f
#define EAXLISTENER_MINDECAYHFRATIO 0.1f
#define EAXLISTENER_MAXDECAYHFRATIO 2.0f
#define EAXLISTENER_DEFAULTDECAYHFRATIO 0.83f
#define EAXLISTENER_MINDECAYLFRATIO 0.1f
#define EAXLISTENER_MAXDECAYLFRATIO 2.0f
#define EAXLISTENER_DEFAULTDECAYLFRATIO 1.00f
#define EAXLISTENER_MINREFLECTIONS (-10000)
#define EAXLISTENER_MAXREFLECTIONS 1000
#define EAXLISTENER_DEFAULTREFLECTIONS (-2602)
#define EAXLISTENER_MINREFLECTIONSDELAY 0.0f
#define EAXLISTENER_MAXREFLECTIONSDELAY 0.3f
#define EAXLISTENER_DEFAULTREFLECTIONSDELAY 0.007f
#define EAXLISTENER_MINREVERB (-10000)
#define EAXLISTENER_MAXREVERB 2000
#define EAXLISTENER_DEFAULTREVERB 200
#define EAXLISTENER_MINREVERBDELAY 0.0f
#define EAXLISTENER_MAXREVERBDELAY 0.1f
#define EAXLISTENER_DEFAULTREVERBDELAY 0.011f
#define EAXLISTENER_MINECHOTIME 0.075f
#define EAXLISTENER_MAXECHOTIME 0.25f
#define EAXLISTENER_DEFAULTECHOTIME 0.25f
#define EAXLISTENER_MINECHODEPTH 0.0f
#define EAXLISTENER_MAXECHODEPTH 1.0f
#define EAXLISTENER_DEFAULTECHODEPTH 0.0f
#define EAXLISTENER_MINMODULATIONTIME 0.04f
#define EAXLISTENER_MAXMODULATIONTIME 4.0f
#define EAXLISTENER_DEFAULTMODULATIONTIME 0.25f
#define EAXLISTENER_MINMODULATIONDEPTH 0.0f
#define EAXLISTENER_MAXMODULATIONDEPTH 1.0f
#define EAXLISTENER_DEFAULTMODULATIONDEPTH 0.0f
#define EAXLISTENER_MINAIRABSORPTIONHF (-100.0f)
#define EAXLISTENER_MAXAIRABSORPTIONHF 0.0f
#define EAXLISTENER_DEFAULTAIRABSORPTIONHF (-5.0f)
#define EAXLISTENER_MINHFREFERENCE 1000.0f
#define EAXLISTENER_MAXHFREFERENCE 20000.0f
#define EAXLISTENER_DEFAULTHFREFERENCE 5000.0f
#define EAXLISTENER_MINLFREFERENCE 20.0f
#define EAXLISTENER_MAXLFREFERENCE 1000.0f
#define EAXLISTENER_DEFAULTLFREFERENCE 250.0f
#define EAXLISTENER_MINROOMROLLOFFFACTOR 0.0f
#define EAXLISTENER_MAXROOMROLLOFFFACTOR 10.0f
#define EAXLISTENER_DEFAULTROOMROLLOFFFACTOR 0.0f
#define EAXLISTENER_DEFAULTFLAGS (EAXLISTENERFLAGS_DECAYTIMESCALE | \
EAXLISTENERFLAGS_REFLECTIONSSCALE | \
EAXLISTENERFLAGS_REFLECTIONSDELAYSCALE | \
EAXLISTENERFLAGS_REVERBSCALE | \
EAXLISTENERFLAGS_REVERBDELAYSCALE | \
EAXLISTENERFLAGS_DECAYHFLIMIT)
/*
* EAX 3.0 buffer property set {A8FA6881-B476-11d3-BDB9-00C0F02DDF87}
*/
DEFINE_GUID(DSPROPSETID_EAX30_BufferProperties,
0xa8fa6881,
0xb476,
0x11d3,
0xbd, 0xb9, 0x0, 0xc0, 0xf0, 0x2d, 0xdf, 0x87);
// For compatibility with future EAX versions:
#define DSPROPSETID_EAX_BufferProperties DSPROPSETID_EAX30_BufferProperties
#define DSPROPSETID_EAX_SourceProperties DSPROPSETID_EAX30_BufferProperties
typedef enum
{
DSPROPERTY_EAXBUFFER_NONE,
DSPROPERTY_EAXBUFFER_ALLPARAMETERS,
DSPROPERTY_EAXBUFFER_OBSTRUCTIONPARAMETERS,
DSPROPERTY_EAXBUFFER_OCCLUSIONPARAMETERS,
DSPROPERTY_EAXBUFFER_EXCLUSIONPARAMETERS,
DSPROPERTY_EAXBUFFER_DIRECT,
DSPROPERTY_EAXBUFFER_DIRECTHF,
DSPROPERTY_EAXBUFFER_ROOM,
DSPROPERTY_EAXBUFFER_ROOMHF,
DSPROPERTY_EAXBUFFER_OBSTRUCTION,
DSPROPERTY_EAXBUFFER_OBSTRUCTIONLFRATIO,
DSPROPERTY_EAXBUFFER_OCCLUSION,
DSPROPERTY_EAXBUFFER_OCCLUSIONLFRATIO,
DSPROPERTY_EAXBUFFER_OCCLUSIONROOMRATIO,
DSPROPERTY_EAXBUFFER_OCCLUSIONDIRECTRATIO,
DSPROPERTY_EAXBUFFER_EXCLUSION,
DSPROPERTY_EAXBUFFER_EXCLUSIONLFRATIO,
DSPROPERTY_EAXBUFFER_OUTSIDEVOLUMEHF,
DSPROPERTY_EAXBUFFER_DOPPLERFACTOR,
DSPROPERTY_EAXBUFFER_ROLLOFFFACTOR,
DSPROPERTY_EAXBUFFER_ROOMROLLOFFFACTOR,
DSPROPERTY_EAXBUFFER_AIRABSORPTIONFACTOR,
DSPROPERTY_EAXBUFFER_FLAGS
} DSPROPERTY_EAX_BUFFERPROPERTY;
// OR these flags with property id
#define DSPROPERTY_EAXBUFFER_IMMEDIATE 0x00000000 // changes take effect immediately
#define DSPROPERTY_EAXBUFFER_DEFERRED 0x80000000 // changes take effect later
#define DSPROPERTY_EAXBUFFER_COMMITDEFERREDSETTINGS (DSPROPERTY_EAXBUFFER_NONE | \
DSPROPERTY_EAXBUFFER_IMMEDIATE)
// Use this structure for DSPROPERTY_EAXBUFFER_ALLPARAMETERS
// - all levels are hundredths of decibels
// - all delays are in seconds
//
// NOTE: This structure may change in future EAX versions.
// It is recommended to initialize fields by name:
// myBuffer.lDirect = 0;
// myBuffer.lDirectHF = -200;
// ...
// myBuffer.dwFlags = myFlags /* see EAXBUFFERFLAGS below */ ;
// instead of:
// myBuffer = { 0, -200, ... , 0x00000003 };
//
typedef struct _EAXBUFFERPROPERTIES
{
long lDirect; // direct path level (at low and mid frequencies)
long lDirectHF; // relative direct path level at high frequencies
long lRoom; // room effect level (at low and mid frequencies)
long lRoomHF; // relative room effect level at high frequencies
long lObstruction; // main obstruction control (attenuation at high frequencies)
float flObstructionLFRatio; // obstruction low-frequency level re. main control
long lOcclusion; // main occlusion control (attenuation at high frequencies)
float flOcclusionLFRatio; // occlusion low-frequency level re. main control
float flOcclusionRoomRatio; // relative occlusion control for room effect
float flOcclusionDirectRatio; // relative occlusion control for direct path
long lExclusion; // main exlusion control (attenuation at high frequencies)
float flExclusionLFRatio; // exclusion low-frequency level re. main control
long lOutsideVolumeHF; // outside sound cone level at high frequencies
float flDopplerFactor; // like DS3D flDopplerFactor but per source
float flRolloffFactor; // like DS3D flRolloffFactor but per source
float flRoomRolloffFactor; // like DS3D flRolloffFactor but for room effect
float flAirAbsorptionFactor; // multiplies DSPROPERTY_EAXLISTENER_AIRABSORPTIONHF
unsigned long ulFlags; // modifies the behavior of properties
} EAXBUFFERPROPERTIES, *LPEAXBUFFERPROPERTIES;
// Use this structure for DSPROPERTY_EAXBUFFER_OBSTRUCTION,
typedef struct _EAXOBSTRUCTIONPROPERTIES
{
long lObstruction;
float flObstructionLFRatio;
} EAXOBSTRUCTIONPROPERTIES, *LPEAXOBSTRUCTIONPROPERTIES;
// Use this structure for DSPROPERTY_EAXBUFFER_OCCLUSION
typedef struct _EAXOCCLUSIONPROPERTIES
{
long lOcclusion;
float flOcclusionLFRatio;
float flOcclusionRoomRatio;
float flOcclusionDirectRatio;
} EAXOCCLUSIONPROPERTIES, *LPEAXOCCLUSIONPROPERTIES;
// Use this structure for DSPROPERTY_EAXBUFFER_EXCLUSION
typedef struct _EAXEXCLUSIONPROPERTIES
{
long lExclusion;
float flExclusionLFRatio;
} EAXEXCLUSIONPROPERTIES, *LPEAXEXCLUSIONPROPERTIES;
// Used by DSPROPERTY_EAXBUFFER_FLAGS
// TRUE: value is computed automatically - property is an offset
// FALSE: value is used directly
//
// Note: The number and order of flags may change in future EAX versions.
// To insure future compatibility, use flag defines as follows:
// myFlags = EAXBUFFERFLAGS_DIRECTHFAUTO | EAXBUFFERFLAGS_ROOMAUTO;
// instead of:
// myFlags = 0x00000003;
//
#define EAXBUFFERFLAGS_DIRECTHFAUTO 0x00000001 // affects DSPROPERTY_EAXBUFFER_DIRECTHF
#define EAXBUFFERFLAGS_ROOMAUTO 0x00000002 // affects DSPROPERTY_EAXBUFFER_ROOM
#define EAXBUFFERFLAGS_ROOMHFAUTO 0x00000004 // affects DSPROPERTY_EAXBUFFER_ROOMHF
#define EAXBUFFERFLAGS_RESERVED 0xFFFFFFF8 // reserved future use
// Property ranges and defaults:
#define EAXBUFFER_MINDIRECT (-10000)
#define EAXBUFFER_MAXDIRECT 1000
#define EAXBUFFER_DEFAULTDIRECT 0
#define EAXBUFFER_MINDIRECTHF (-10000)
#define EAXBUFFER_MAXDIRECTHF 0
#define EAXBUFFER_DEFAULTDIRECTHF 0
#define EAXBUFFER_MINROOM (-10000)
#define EAXBUFFER_MAXROOM 1000
#define EAXBUFFER_DEFAULTROOM 0
#define EAXBUFFER_MINROOMHF (-10000)
#define EAXBUFFER_MAXROOMHF 0
#define EAXBUFFER_DEFAULTROOMHF 0
#define EAXBUFFER_MINOBSTRUCTION (-10000)
#define EAXBUFFER_MAXOBSTRUCTION 0
#define EAXBUFFER_DEFAULTOBSTRUCTION 0
#define EAXBUFFER_MINOBSTRUCTIONLFRATIO 0.0f
#define EAXBUFFER_MAXOBSTRUCTIONLFRATIO 1.0f
#define EAXBUFFER_DEFAULTOBSTRUCTIONLFRATIO 0.0f
#define EAXBUFFER_MINOCCLUSION (-10000)
#define EAXBUFFER_MAXOCCLUSION 0
#define EAXBUFFER_DEFAULTOCCLUSION 0
#define EAXBUFFER_MINOCCLUSIONLFRATIO 0.0f
#define EAXBUFFER_MAXOCCLUSIONLFRATIO 1.0f
#define EAXBUFFER_DEFAULTOCCLUSIONLFRATIO 0.25f
#define EAXBUFFER_MINOCCLUSIONROOMRATIO 0.0f
#define EAXBUFFER_MAXOCCLUSIONROOMRATIO 10.0f
#define EAXBUFFER_DEFAULTOCCLUSIONROOMRATIO 1.5f
#define EAXBUFFER_MINOCCLUSIONDIRECTRATIO 0.0f
#define EAXBUFFER_MAXOCCLUSIONDIRECTRATIO 10.0f
#define EAXBUFFER_DEFAULTOCCLUSIONDIRECTRATIO 1.0f
#define EAXBUFFER_MINEXCLUSION (-10000)
#define EAXBUFFER_MAXEXCLUSION 0
#define EAXBUFFER_DEFAULTEXCLUSION 0
#define EAXBUFFER_MINEXCLUSIONLFRATIO 0.0f
#define EAXBUFFER_MAXEXCLUSIONLFRATIO 1.0f
#define EAXBUFFER_DEFAULTEXCLUSIONLFRATIO 1.0f
#define EAXBUFFER_MINOUTSIDEVOLUMEHF (-10000)
#define EAXBUFFER_MAXOUTSIDEVOLUMEHF 0
#define EAXBUFFER_DEFAULTOUTSIDEVOLUMEHF 0
#define EAXBUFFER_MINDOPPLERFACTOR 0.0f
#define EAXBUFFER_MAXDOPPLERFACTOR 10.f
#define EAXBUFFER_DEFAULTDOPPLERFACTOR 0.0f
#define EAXBUFFER_MINROLLOFFFACTOR 0.0f
#define EAXBUFFER_MAXROLLOFFFACTOR 10.f
#define EAXBUFFER_DEFAULTROLLOFFFACTOR 0.0f
#define EAXBUFFER_MINROOMROLLOFFFACTOR 0.0f
#define EAXBUFFER_MAXROOMROLLOFFFACTOR 10.f
#define EAXBUFFER_DEFAULTROOMROLLOFFFACTOR 0.0f
#define EAXBUFFER_MINAIRABSORPTIONFACTOR 0.0f
#define EAXBUFFER_MAXAIRABSORPTIONFACTOR 10.0f
#define EAXBUFFER_DEFAULTAIRABSORPTIONFACTOR 1.0f
#define EAXBUFFER_DEFAULTFLAGS (EAXBUFFERFLAGS_DIRECTHFAUTO | \
EAXBUFFERFLAGS_ROOMAUTO | \
EAXBUFFERFLAGS_ROOMHFAUTO )
#pragma pack(pop)
#ifdef __cplusplus
}
#endif // __cplusplus
#endif

4805
milessdk/include/mss.h Normal file

File diff suppressed because it is too large Load Diff

BIN
milessdk/lib/mss32.lib Normal file

Binary file not shown.

View File

@ -17,6 +17,7 @@ workspace "re3"
files { "src/skel/win/*.*" } files { "src/skel/win/*.*" }
files { "src/vehicles/*.*" } files { "src/vehicles/*.*" }
files { "src/weapons/*.*" } files { "src/weapons/*.*" }
files { "eax/*.*" }
includedirs { "src" } includedirs { "src" }
includedirs { "src/animation" } includedirs { "src/animation" }
@ -33,11 +34,15 @@ workspace "re3"
includedirs { "src/skel/win" } includedirs { "src/skel/win" }
includedirs { "src/vehicles" } includedirs { "src/vehicles" }
includedirs { "src/weapons" } includedirs { "src/weapons" }
includedirs { "eax" }
includedirs { "dxsdk/include" } includedirs { "dxsdk/include" }
includedirs { "rwsdk/include/d3d8" } includedirs { "rwsdk/include/d3d8" }
includedirs { "milessdk/include" }
includedirs { "eax" }
libdirs { "dxsdk/lib" } libdirs { "dxsdk/lib" }
libdirs { "milessdk/lib" }
pbcommands = { pbcommands = {
"setlocal EnableDelayedExpansion", "setlocal EnableDelayedExpansion",

File diff suppressed because it is too large Load Diff

View File

@ -187,6 +187,24 @@ struct cAudioScriptObject {
static_assert(sizeof(cAudioScriptObject) == 0x14, "cAudioScriptObject: error"); static_assert(sizeof(cAudioScriptObject) == 0x14, "cAudioScriptObject: error");
enum
{
/*
REFLECTION_YMAX = 0, top
REFLECTION_YMIN = 1, bottom
REFLECTION_XMIN = 2, left
REFLECTION_XMAX = 3, right
REFLECTION_ZMAX = 4,
*/
REFLECTION_TOP = 0,
REFLECTION_BOTTOM,
REFLECTION_LEFT,
REFLECTION_RIGHT,
REFLECTION_UP,
MAX_REFLECTIONS,
};
class cAudioManager class cAudioManager
{ {
public: public:
@ -234,7 +252,13 @@ public:
uint8 m_bUserPause; uint8 m_bUserPause;
uint8 m_bPreviousUserPause; uint8 m_bPreviousUserPause;
uint8 field_19195; uint8 field_19195;
int32 m_nTimeOfRecentCrime; uint32 m_FrameCounter;
inline uint32 GetFrameCounter(void) { return m_FrameCounter; }
float GetReflectionsDistance(int32 idx) { return m_afReflectionsDistances[idx]; }
int32 GetRandomTabe(int32 idx) { return m_anRandomTable[idx]; }
//
void AddDetailsToRequestedOrderList(uint8 sample); /// ok void AddDetailsToRequestedOrderList(uint8 sample); /// ok
void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 unk1, void AddPlayerCarSample(uint8 emittingVolume, int32 freq, uint32 sample, uint8 unk1,
@ -243,7 +267,7 @@ public:
void AddReleasingSounds(); // todo (difficult) void AddReleasingSounds(); // todo (difficult)
void AddSampleToRequestedQueue(); /// ok void AddSampleToRequestedQueue(); /// ok
void AgeCrimes(); // todo void AgeCrimes(); // todo
int8 AutoDetect3DProviders(); /// ok int8 GetCurrent3DProviderIndex(); /// ok
void CalculateDistance(bool *ptr, float dist); /// ok void CalculateDistance(bool *ptr, float dist); /// ok
bool CheckForAnAudioFileOnCD(); /// ok bool CheckForAnAudioFileOnCD(); /// ok
@ -283,8 +307,8 @@ public:
void SetEffectsMasterVolume(uint8 volume); void SetEffectsMasterVolume(uint8 volume);
void SetMusicMasterVolume(uint8 volume); void SetMusicMasterVolume(uint8 volume);
void SetEffectsFadeVol(uint8 volume); void SetEffectsFadeVolume(uint8 volume);
void SetMusicFadeVol(uint8 volume); void SetMusicFadeVolume(uint8 volume);
void SetSpeakerConfig(int32 conf); void SetSpeakerConfig(int32 conf);
@ -324,7 +348,7 @@ public:
int32 RandomDisplacement(uint32 seed); int32 RandomDisplacement(uint32 seed);
void ReleaseDigitalHandle(); void ReleaseDigitalHandle();
void RequireDigitalHandle(); void ReacquireDigitalHandle();
void SetDynamicAcousticModelingStatus(bool status); void SetDynamicAcousticModelingStatus(bool status);
bool IsAudioInitialised() const; bool IsAudioInitialised() const;

View File

@ -3037,6 +3037,14 @@ enum eAudioSamples : uint32 {
AUDIO_SAMPLE_AMMUNATION_WELCOME_3 = 3031, AUDIO_SAMPLE_AMMUNATION_WELCOME_3 = 3031,
TOTAL_AUDIO_SAMPLES = 3032, TOTAL_AUDIO_SAMPLES = 3032,
NO_SAMPLE = 3033, NO_SAMPLE = 3033,
// shorthands
SAMPLEBANK_START = AUDIO_SAMPLE_VEHICLE_HORN_0,
SAMPLEBANK_END = AUDIO_SAMPLE_PAGER,
SAMPLEBANK_MAX = AUDIO_SAMPLE_PAGER+1,
SAMPLEBANK_PED_START = AUDIO_SAMPLE_POLICE_COP_1_ARREST_1,
SAMPLEBANK_PED_END = AUDIO_SAMPLE_AMMUNATION_WELCOME_3,
SAMPLEBANK_PED_MAX = AUDIO_SAMPLE_AMMUNATION_WELCOME_3+1,
}; };
enum eScriptSounds : int16 enum eScriptSounds : int16

View File

@ -8,7 +8,7 @@
#include "Camera.h" #include "Camera.h"
#include "World.h" #include "World.h"
#include "ModelIndices.h" #include "ModelIndices.h"
#include "SampleManager.h" #include "sampman.h"
#include "Replay.h" #include "Replay.h"
cMusicManager &MusicManager = *(cMusicManager*)0x8F3964; cMusicManager &MusicManager = *(cMusicManager*)0x8F3964;
@ -57,7 +57,7 @@ void cMusicManager::DisplayRadioStationName()
if (MusicManager.m_bPlayerInCar && !MusicManager.m_bPreviousPlayerInCar) if (MusicManager.m_bPlayerInCar && !MusicManager.m_bPreviousPlayerInCar)
pCurrentStation = nil; pCurrentStation = nil;
if (cSampleManager.IsMP3RadioChannelAvailable()) { if (SampleManager.IsMP3RadioChannelAvailable()) {
gStreamedSound = MusicManager.m_nCurrentStreamedSound; gStreamedSound = MusicManager.m_nCurrentStreamedSound;
if (gStreamedSound != STREAMED_SOUND_CITY_AMBIENT && gStreamedSound != STREAMED_SOUND_WATER_AMBIENT) { if (gStreamedSound != STREAMED_SOUND_CITY_AMBIENT && gStreamedSound != STREAMED_SOUND_WATER_AMBIENT) {
@ -140,7 +140,7 @@ void cMusicManager::DisplayRadioStationName()
return; return;
}; };
if (pRetune > CHATTERBOX && !CSampleManager::IsMP3RadioChannelAvailable()) { if (pRetune > CHATTERBOX && !SampleManager.IsMP3RadioChannelAvailable()) {
return; return;
} }

View File

@ -16,6 +16,15 @@ enum eRadioStation
RADIO_OFF, RADIO_OFF,
}; };
enum eMusicMode
{
MUSICMODE_FRONTEND = 0,
MUSICMODE_GAME,
MUSICMODE_CUTSCENE,
MUSICMODE_OFF,
MUSICMODE_4,
};
enum eStreamedSounds enum eStreamedSounds
{ {
STREAMED_SOUND_RADIO_HEAD = 0, STREAMED_SOUND_RADIO_HEAD = 0,
@ -264,6 +273,10 @@ public:
uint8 field_2395; uint8 field_2395;
public: public:
bool IsInitialised() { return m_bIsInitialised; }
uint32 GetMusicMode() { return m_nMusicMode; }
uint8 GetCurrentTrack() { return m_nCurrentStreamedSound; }
void Initialise(); void Initialise();
void Terminate(); void Terminate();

View File

@ -1,176 +0,0 @@
#include "SampleManager.h"
#include "common.h"
#include "patcher.h"
CSampleManager &cSampleManager = *(CSampleManager *)0x7341E0;
uint32 &nNumOfMp3Files = *(uint32 *)0x95CC00;
uint8 &num3DProvidersAvailable = *(uint8 *)0x734237;
char **asName3DProviders = (char **)0x734238;
bool
CSampleManager::IsMP3RadioChannelAvailable()
{
return nNumOfMp3Files != 0;
}
WRAPPER
void CSampleManager::SetChannelFrequency(int32, int32) { EAXJMP(0x5679D0); }
WRAPPER
void CSampleManager::SetChannelEmittingVolume(int32, uint32) { EAXJMP(0x567820); }
WRAPPER
void
CSampleManager::SetChannel3DPosition(int32, float, float, float)
{
EAXJMP(0x567890);
}
WRAPPER
void CSampleManager::SetChannelLoopCount(int32, int32) { EAXJMP(0x567AA0); }
WRAPPER
void CSampleManager::SetChannel3DDistances(int32, int32, int32) { EAXJMP(0x5678D0); }
WRAPPER
void CSampleManager::SetChannelReverbFlag(int32, uint8) { EAXJMP(0x567630); }
WRAPPER
int32 CSampleManager::GetSampleLength(int32) { EAXJMP(0x567300); }
WRAPPER
bool CSampleManager::InitialiseChannel(int32, int32, uint32, uint32) { EAXJMP(0x5676A0); }
WRAPPER
void CSampleManager::SetChannelLoopPoints(int32, int32, int32) { EAXJMP(0x567A30); }
WRAPPER
bool
CSampleManager::CheckForAnAudioFileOnCD()
{
EAXJMP(0x566EA0);
}
WRAPPER
int32 CSampleManager::GetSampleBaseFrequency(int32) { EAXJMP(0x5672A0); }
WRAPPER
int32 CSampleManager::GetSampleLoopStartOffset(int32) { EAXJMP(0x5672C0); }
WRAPPER
int32 CSampleManager::GetSampleLoopEndOffset(int32) { EAXJMP(0x5672E0); }
WRAPPER
bool CSampleManager::IsSampleBankLoaded(uint8) { EAXJMP(0x567130); }
WRAPPER
void CSampleManager::UnloadSampleBank(uint8) { EAXJMP(0x567110); }
WRAPPER
void
CSampleManager::Terminate()
{
EAXJMP(0x566DC0);
}
WRAPPER
bool
CSampleManager::Initialise()
{
EAXJMP(0x566530);
}
WRAPPER
int32
CSampleManager::GetActiveSamples()
{
EAXJMP(0x565970);
}
WRAPPER void
CSampleManager::ReleaseDigitalHandle()
{
EAXJMP(0x5664B0);
}
WRAPPER
void
CSampleManager::RequireDigitalHandle()
{
EAXJMP(0x5664F0);
}
WRAPPER
char
CSampleManager::AutoDetect3DProviders()
{
EAXJMP(0x565990);
}
WRAPPER
uint8
CSampleManager::GetCDAudioDriveLetter()
{
EAXJMP(0x566F20);
}
WRAPPER
void
CSampleManager::SetEffectsMasterVolume(uint8 volume)
{
EAXJMP(0x567010);
}
WRAPPER
void
CSampleManager::SetMusicMasterVolume(uint8 volume)
{
EAXJMP(0x567020);
}
WRAPPER
void
CSampleManager::SetEffectsFadeVol(uint8 volume)
{
EAXJMP(0x567030);
}
WRAPPER
void
CSampleManager::SetMusicFadeVol(uint8 volume)
{
EAXJMP(0x567040);
}
WRAPPER
void
CSampleManager::SetSpeakerConfig(uint32 config)
{
EAXJMP(0x565900);
}
WRAPPER
bool
CSampleManager::GetChannelUsedFlag(int32 id)
{
EAXJMP(0x567B00);
}
WRAPPER
void
CSampleManager::StartChannel(int32 id)
{
EAXJMP(0x567B80);
}
WRAPPER
void
CSampleManager::StopChannel(int32 id)
{
EAXJMP(0x567BE0);
}
STARTPATCHES
InjectHook(0x566490, CSampleManager::IsMP3RadioChannelAvailable, PATCH_JUMP);
ENDPATCHES

View File

@ -1,68 +0,0 @@
#pragma once
#include "common.h"
struct tSample {
int m_nOffset;
unsigned int m_nSize;
int m_nFrequency;
int m_nLoopStart;
int m_nLoopEnd;
};
class CSampleManager
{
public:
void SetChannelFrequency(int32, int32);
void SetChannelEmittingVolume(int32, uint32);
void SetChannel3DPosition(int32, float, float, float);
void SetChannelLoopCount(int32, int32);
void SetChannel3DDistances(int32, int32, int32);
void SetChannelReverbFlag(int32, uint8);
int32 GetSampleLength(int32);
bool InitialiseChannel(int32, int32, uint32, uint32 something = 0);
void SetChannelLoopPoints(int32, int32, int32);
bool CheckForAnAudioFileOnCD();
int32 GetSampleBaseFrequency(int32);
int32 GetSampleLoopStartOffset(int32);
int32 GetSampleLoopEndOffset(int32);
bool IsSampleBankLoaded(uint8);
void UnloadSampleBank(uint8);
void Terminate();
bool Initialise();
int32 GetActiveSamples();
void ReleaseDigitalHandle();
void RequireDigitalHandle();
char AutoDetect3DProviders();
uint8 GetCDAudioDriveLetter();
void SetEffectsMasterVolume(uint8 volume);
void SetMusicMasterVolume(uint8 volume);
void SetEffectsFadeVol(uint8 volume);
void SetMusicFadeVol(uint8 volume);
void SetSpeakerConfig(uint32 config);
bool GetChannelUsedFlag(int32 id);
void StartChannel(int32 id);
void StopChannel(int32 id);
static bool IsMP3RadioChannelAvailable();
};
extern uint32 &nNumOfMp3Files;
extern uint8 &num3DProvidersAvailable;
extern char **asName3DProviders;
extern CSampleManager &cSampleManager;

2331
src/audio/sampman.cpp Normal file

File diff suppressed because it is too large Load Diff

334
src/audio/sampman.h Normal file
View File

@ -0,0 +1,334 @@
#pragma once
#include "common.h"
#include "AudioSamples.h"
struct tSample {
int32 nOffset;
uint32 nSize;
int32 nFrequency;
int32 nLoopStart;
int32 nLoopEnd;
};
#define MAXPROVIDERS 64
#define MAXCHANNELS 28
#define MAXCHANNELS_SURROUND 24
#define MAX2DCHANNELS 1
#define CHANNEL2D MAXCHANNELS
#define MAX_MP3STREAMS 2
#define MAX_SAMPLEBANKS 2
#define MAX_PEDSFX 7
#define PED_BLOCKSIZE 79000
#define MAX_DIGITAL_MIXER_CHANNELS 32
#define DIGITALRATE 32000
#define DIGITALBITS 16
#define DIGITALCHANNELS 2
class cSampleManager
{
uint8 m_nEffectsVolume;
uint8 m_nMusicVolume;
uint8 m_nEffectsFadeVolume;
uint8 m_nMusicFadeVolume;
uint8 m_nMonoMode;
char _pad0[1];
char m_szCDRomRootPath[80];
bool m_bInitialised;
uint8 m_nNumberOfProviders;
char *m_aAudioProviders[MAXPROVIDERS];
tSample m_aSamples[TOTAL_AUDIO_SAMPLES];
public:
cSampleManager(void) :
m_nNumberOfProviders(0)
{ }
~cSampleManager(void)
{ }
void SetSpeakerConfig(int32 nConfig);
uint32 GetMaximumSupportedChannels(void);
uint32 GetNum3DProvidersAvailable() { return m_nNumberOfProviders; }
void SetNum3DProvidersAvailable(uint32 num) { m_nNumberOfProviders = num; }
char *Get3DProviderName(uint8 id) { return m_aAudioProviders[id]; }
void Set3DProviderName(uint8 id, char *name) { m_aAudioProviders[id] = name; }
int8 GetCurrent3DProviderIndex(void);
int8 SetCurrent3DProvider(uint8 which);
bool IsMP3RadioChannelAvailable(void);
void ReleaseDigitalHandle (void);
void ReacquireDigitalHandle(void);
bool Initialise(void);
void Terminate (void);
bool CheckForAnAudioFileOnCD(void);
char GetCDAudioDriveLetter (void);
void UpdateEffectsVolume(void);
void SetEffectsMasterVolume(uint8 nVolume);
void SetMusicMasterVolume (uint8 nVolume);
void SetEffectsFadeVolume (uint8 nVolume);
void SetMusicFadeVolume (uint8 nVolume);
bool LoadSampleBank (uint8 nBank);
void UnloadSampleBank (uint8 nBank);
bool IsSampleBankLoaded(uint8 nBank);
bool IsPedCommentLoaded(uint32 nComment);
bool LoadPedComment (uint32 nComment);
int32 _GetPedCommentSlot(uint32 nComment);
int32 GetSampleBaseFrequency (uint32 nSample);
int32 GetSampleLoopStartOffset(uint32 nSample);
int32 GetSampleLoopEndOffset (uint32 nSample);
uint32 GetSampleLength (uint32 nSample);
bool UpdateReverb(void);
void SetChannelReverbFlag (uint32 nChannel, uint8 nReverbFlag);
bool InitialiseChannel (uint32 nChannel, uint32 nSfx, uint8 nBank);
void SetChannelEmittingVolume(uint32 nChannel, uint32 nVolume);
void SetChannel3DPosition (uint32 nChannel, float fX, float fY, float fZ);
void SetChannel3DDistances (uint32 nChannel, float fMax, float fMin);
void SetChannelVolume (uint32 nChannel, uint32 nVolume);
void SetChannelPan (uint32 nChannel, uint32 nPan);
void SetChannelFrequency (uint32 nChannel, uint32 nFreq);
void SetChannelLoopPoints (uint32 nChannel, uint32 nLoopStart, int32 nLoopEnd);
void SetChannelLoopCount (uint32 nChannel, uint32 nLoopCount);
bool GetChannelUsedFlag (uint32 nChannel);
void StartChannel (uint32 nChannel);
void StopChannel (uint32 nChannel);
void PreloadStreamedFile (uint8 nFile, uint8 nStream);
void PauseStream (uint8 nPauseFlag, uint8 nStream);
void StartPreloadedStreamedFile (uint8 nStream);
bool StartStreamedFile (uint8 nFile, uint32 nPos, uint8 nStream);
void StopStreamedFile (uint8 nStream);
int32 GetStreamedFilePosition (uint8 nStream);
void SetStreamedVolumeAndPan(uint8 nVolume, uint8 nPan, uint8 nEffectFlag, uint8 nStream);
int32 GetStreamedFileLength (uint8 nStream);
bool IsStreamPlaying (uint8 nStream);
bool InitialiseSampleBanks(void);
};
extern cSampleManager &SampleManager;
static char StreamedNameTable[][25]=
{
"AUDIO\\HEAD.WAV",
"AUDIO\\CLASS.WAV",
"AUDIO\\KJAH.WAV",
"AUDIO\\RISE.WAV",
"AUDIO\\LIPS.WAV",
"AUDIO\\GAME.WAV",
"AUDIO\\MSX.WAV",
"AUDIO\\FLASH.WAV",
"AUDIO\\CHAT.WAV",
"AUDIO\\HEAD.WAV",
"AUDIO\\POLICE.WAV",
"AUDIO\\CITY.WAV",
"AUDIO\\WATER.WAV",
"AUDIO\\COMOPEN.WAV",
"AUDIO\\SUBOPEN.WAV",
"AUDIO\\JB.MP3",
"AUDIO\\BET.MP3",
"AUDIO\\L1_LG.MP3",
"AUDIO\\L2_DSB.MP3",
"AUDIO\\L3_DM.MP3",
"AUDIO\\L4_PAP.MP3",
"AUDIO\\L5_TFB.MP3",
"AUDIO\\J0_DM2.MP3",
"AUDIO\\J1_LFL.MP3",
"AUDIO\\J2_KCL.MP3",
"AUDIO\\J3_VH.MP3",
"AUDIO\\J4_ETH.MP3",
"AUDIO\\J5_DST.MP3",
"AUDIO\\J6_TBJ.MP3",
"AUDIO\\T1_TOL.MP3",
"AUDIO\\T2_TPU.MP3",
"AUDIO\\T3_MAS.MP3",
"AUDIO\\T4_TAT.MP3",
"AUDIO\\T5_BF.MP3",
"AUDIO\\S0_MAS.MP3",
"AUDIO\\S1_PF.MP3",
"AUDIO\\S2_CTG.MP3",
"AUDIO\\S3_RTC.MP3",
"AUDIO\\S5_LRQ.MP3",
"AUDIO\\S4_BDBA.MP3",
"AUDIO\\S4_BDBB.MP3",
"AUDIO\\S2_CTG2.MP3",
"AUDIO\\S4_BDBD.MP3",
"AUDIO\\S5_LRQB.MP3",
"AUDIO\\S5_LRQC.MP3",
"AUDIO\\A1_SSO.WAV",
"AUDIO\\A2_PP.WAV",
"AUDIO\\A3_SS.WAV",
"AUDIO\\A4_PDR.WAV",
"AUDIO\\A5_K2FT.WAV",
"AUDIO\\K1_KBO.MP3",
"AUDIO\\K2_GIS.MP3",
"AUDIO\\K3_DS.MP3",
"AUDIO\\K4_SHI.MP3",
"AUDIO\\K5_SD.MP3",
"AUDIO\\R0_PDR2.MP3",
"AUDIO\\R1_SW.MP3",
"AUDIO\\R2_AP.MP3",
"AUDIO\\R3_ED.MP3",
"AUDIO\\R4_GF.MP3",
"AUDIO\\R5_PB.MP3",
"AUDIO\\R6_MM.MP3",
"AUDIO\\D1_STOG.MP3",
"AUDIO\\D2_KK.MP3",
"AUDIO\\D3_ADO.MP3",
"AUDIO\\D5_ES.MP3",
"AUDIO\\D7_MLD.MP3",
"AUDIO\\D4_GTA.MP3",
"AUDIO\\D4_GTA2.MP3",
"AUDIO\\D6_STS.MP3",
"AUDIO\\A6_BAIT.WAV",
"AUDIO\\A7_ETG.WAV",
"AUDIO\\A8_PS.WAV",
"AUDIO\\A9_ASD.WAV",
"AUDIO\\K4_SHI2.MP3",
"AUDIO\\C1_TEX.MP3",
"AUDIO\\EL_PH1.MP3",
"AUDIO\\EL_PH2.MP3",
"AUDIO\\EL_PH3.MP3",
"AUDIO\\EL_PH4.MP3",
"AUDIO\\YD_PH1.MP3",
"AUDIO\\YD_PH2.MP3",
"AUDIO\\YD_PH3.MP3",
"AUDIO\\YD_PH4.MP3",
"AUDIO\\HD_PH1.MP3",
"AUDIO\\HD_PH2.MP3",
"AUDIO\\HD_PH3.MP3",
"AUDIO\\HD_PH4.MP3",
"AUDIO\\HD_PH5.MP3",
"AUDIO\\MT_PH1.MP3",
"AUDIO\\MT_PH2.MP3",
"AUDIO\\MT_PH3.MP3",
"AUDIO\\MT_PH4.MP3",
"AUDIO\\MISCOM.WAV",
"AUDIO\\END.MP3",
"AUDIO\\lib_a1.WAV",
"AUDIO\\lib_a2.WAV",
"AUDIO\\lib_a.WAV",
"AUDIO\\lib_b.WAV",
"AUDIO\\lib_c.WAV",
"AUDIO\\lib_d.WAV",
"AUDIO\\l2_a.WAV",
"AUDIO\\j4t_1.WAV",
"AUDIO\\j4t_2.WAV",
"AUDIO\\j4t_3.WAV",
"AUDIO\\j4t_4.WAV",
"AUDIO\\j4_a.WAV",
"AUDIO\\j4_b.WAV",
"AUDIO\\j4_c.WAV",
"AUDIO\\j4_d.WAV",
"AUDIO\\j4_e.WAV",
"AUDIO\\j4_f.WAV",
"AUDIO\\j6_1.WAV",
"AUDIO\\j6_a.WAV",
"AUDIO\\j6_b.WAV",
"AUDIO\\j6_c.WAV",
"AUDIO\\j6_d.WAV",
"AUDIO\\t4_a.WAV",
"AUDIO\\s1_a.WAV",
"AUDIO\\s1_a1.WAV",
"AUDIO\\s1_b.WAV",
"AUDIO\\s1_c.WAV",
"AUDIO\\s1_c1.WAV",
"AUDIO\\s1_d.WAV",
"AUDIO\\s1_e.WAV",
"AUDIO\\s1_f.WAV",
"AUDIO\\s1_g.WAV",
"AUDIO\\s1_h.WAV",
"AUDIO\\s1_i.WAV",
"AUDIO\\s1_j.WAV",
"AUDIO\\s1_k.WAV",
"AUDIO\\s1_l.WAV",
"AUDIO\\s3_a.WAV",
"AUDIO\\s3_b.WAV",
"AUDIO\\el3_a.WAV",
"AUDIO\\mf1_a.WAV",
"AUDIO\\mf2_a.WAV",
"AUDIO\\mf3_a.WAV",
"AUDIO\\mf3_b.WAV",
"AUDIO\\mf3_b1.WAV",
"AUDIO\\mf3_c.WAV",
"AUDIO\\mf4_a.WAV",
"AUDIO\\mf4_b.WAV",
"AUDIO\\mf4_c.WAV",
"AUDIO\\a1_a.WAV",
"AUDIO\\a3_a.WAV",
"AUDIO\\a5_a.WAV",
"AUDIO\\a4_a.WAV",
"AUDIO\\a4_b.WAV",
"AUDIO\\a4_c.WAV",
"AUDIO\\a4_d.WAV",
"AUDIO\\k1_a.WAV",
"AUDIO\\k3_a.WAV",
"AUDIO\\r1_a.WAV",
"AUDIO\\r2_a.WAV",
"AUDIO\\r2_b.WAV",
"AUDIO\\r2_c.WAV",
"AUDIO\\r2_d.WAV",
"AUDIO\\r2_e.WAV",
"AUDIO\\r2_f.WAV",
"AUDIO\\r2_g.WAV",
"AUDIO\\r2_h.WAV",
"AUDIO\\r5_a.WAV",
"AUDIO\\r6_a.WAV",
"AUDIO\\r6_a1.WAV",
"AUDIO\\r6_b.WAV",
"AUDIO\\lo2_a.WAV",
"AUDIO\\lo6_a.WAV",
"AUDIO\\yd2_a.WAV",
"AUDIO\\yd2_b.WAV",
"AUDIO\\yd2_c.WAV",
"AUDIO\\yd2_c1.WAV",
"AUDIO\\yd2_d.WAV",
"AUDIO\\yd2_e.WAV",
"AUDIO\\yd2_f.WAV",
"AUDIO\\yd2_g.WAV",
"AUDIO\\yd2_h.WAV",
"AUDIO\\yd2_ass.WAV",
"AUDIO\\yd2_ok.WAV",
"AUDIO\\h5_a.WAV",
"AUDIO\\h5_b.WAV",
"AUDIO\\h5_c.WAV",
"AUDIO\\ammu_a.WAV",
"AUDIO\\ammu_b.WAV",
"AUDIO\\ammu_c.WAV",
"AUDIO\\door_1.WAV",
"AUDIO\\door_2.WAV",
"AUDIO\\door_3.WAV",
"AUDIO\\door_4.WAV",
"AUDIO\\door_5.WAV",
"AUDIO\\door_6.WAV",
"AUDIO\\t3_a.WAV",
"AUDIO\\t3_b.WAV",
"AUDIO\\t3_c.WAV",
"AUDIO\\k1_b.WAV",
"AUDIO\\cat1.WAV"
};

View File

@ -35,6 +35,7 @@ public:
static bool GetIsPaused() { return m_UserPause || m_CodePause; } static bool GetIsPaused() { return m_UserPause || m_CodePause; }
static bool GetIsUserPaused() { return m_UserPause; } static bool GetIsUserPaused() { return m_UserPause; }
static bool GetIsCodePaused() { return m_CodePause; }
static void SetCodePause(bool pause) { m_CodePause = pause; } static void SetCodePause(bool pause) { m_CodePause = pause; }
static void Initialise(void); static void Initialise(void);

View File

@ -180,6 +180,7 @@ void re3_assert(const char *expr, const char *filename, unsigned int lineno, con
#define max(a, b) (((a) > (b)) ? (a) : (b)) #define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b)) #define min(a, b) (((a) < (b)) ? (a) : (b))
#define ABS(a) (((a) < 0) ? (-a) : (a)) #define ABS(a) (((a) < 0) ? (-a) : (a))
#define norm(value, min, max) (((value) < (min)) ? 0 : (((value) > (max)) ? 1 : (((value) - (min)) / ((max) - (min)))))
#define STRINGIFY(x) #x #define STRINGIFY(x) #x

View File

@ -91,6 +91,7 @@ enum Config {
# define RANDOMSPLASH # define RANDOMSPLASH
#elif defined GTA_PC #elif defined GTA_PC
# define GTA3_1_1_PATCH # define GTA3_1_1_PATCH
//# define GTA3_STEAM_PATCH
# ifdef GTA_PS2_STUFF # ifdef GTA_PS2_STUFF
//# define USE_PS2_RAND // this is unsafe until we have the game reversed //# define USE_PS2_RAND // this is unsafe until we have the game reversed
# define RANDOMSPLASH // use random splash as on PS2 # define RANDOMSPLASH // use random splash as on PS2
@ -112,6 +113,7 @@ enum Config {
// not in any game // not in any game
# define NASTY_GAME // nasty game for all languages # define NASTY_GAME // nasty game for all languages
# define NO_MOVIES // disable intro videos # define NO_MOVIES // disable intro videos
# define NO_CDCHECK
# define CHATTYSPLASH // print what the game is loading # define CHATTYSPLASH // print what the game is loading
#endif #endif

BIN
src/skel/win/gta3.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB