diff options
Diffstat (limited to 'engines/sword1')
-rw-r--r-- | engines/sword1/sound.cpp | 39 | ||||
-rw-r--r-- | engines/sword1/sound.h | 10 | ||||
-rw-r--r-- | engines/sword1/staticres.cpp | 2 | ||||
-rw-r--r-- | engines/sword1/swordres.h | 592 |
4 files changed, 333 insertions, 310 deletions
diff --git a/engines/sword1/sound.cpp b/engines/sword1/sound.cpp index b74cd8c393..3574074b00 100644 --- a/engines/sword1/sound.cpp +++ b/engines/sword1/sound.cpp @@ -62,11 +62,22 @@ Sound::~Sound() { _mixer->stopAll(); for (uint8 cnt = 0; cnt < _endOfQueue; cnt++) if (_fxQueue[cnt].delay == 0) - _resMan->resClose(_fxList[_fxQueue[cnt].id].sampleId); + _resMan->resClose(getSampleId(_fxQueue[cnt].id)); _endOfQueue = 0; closeCowSystem(); } +uint32 Sound::getSampleId(int32 fxNo) { + byte cluster = _fxList[fxNo].sampleId.cluster; + byte id; + if (SwordEngine::_systemVars.isDemo && SwordEngine::_systemVars.platform == Common::kPlatformWindows) { + id = _fxList[fxNo].sampleId.idWinDemo; + } else { + id = _fxList[fxNo].sampleId.idStd; + } + return (cluster << 24) | id; +} + void Sound::checkSpeechFileEndianness() { // Some mac versions (not all of them) use big endian wav, although // the wav header doesn't indicate it. @@ -154,14 +165,18 @@ int Sound::addToQueue(int32 fxNo) { warning("Sound queue overflow"); return 0; } - _resMan->resOpen(_fxList[fxNo].sampleId); - _fxQueue[_endOfQueue].id = fxNo; - if (_fxList[fxNo].type == FX_SPOT) - _fxQueue[_endOfQueue].delay = _fxList[fxNo].delay + 1; - else - _fxQueue[_endOfQueue].delay = 1; - _endOfQueue++; - return 1; + uint32 sampleId = getSampleId(fxNo); + if ((sampleId & 0xFF) != 0xFF) { + _resMan->resOpen(sampleId); + _fxQueue[_endOfQueue].id = fxNo; + if (_fxList[fxNo].type == FX_SPOT) + _fxQueue[_endOfQueue].delay = _fxList[fxNo].delay + 1; + else + _fxQueue[_endOfQueue].delay = 1; + _endOfQueue++; + return 1; + } + return 0; } return 0; } @@ -186,7 +201,7 @@ void Sound::engine() { playSample(&_fxQueue[cnt2]); } else { if (!_mixer->isSoundHandleActive(_fxQueue[cnt2].handle)) { // sound finished - _resMan->resClose(_fxList[_fxQueue[cnt2].id].sampleId); + _resMan->resClose(getSampleId(_fxQueue[cnt2].id)); if (cnt2 != _endOfQueue - 1) _fxQueue[cnt2] = _fxQueue[_endOfQueue - 1]; _endOfQueue--; @@ -200,7 +215,7 @@ void Sound::fnStopFx(int32 fxNo) { for (uint8 cnt = 0; cnt < _endOfQueue; cnt++) if (_fxQueue[cnt].id == (uint32)fxNo) { if (!_fxQueue[cnt].delay) // sound was started - _resMan->resClose(_fxList[_fxQueue[cnt].id].sampleId); + _resMan->resClose(getSampleId(_fxQueue[cnt].id)); if (cnt != _endOfQueue - 1) _fxQueue[cnt] = _fxQueue[_endOfQueue - 1]; _endOfQueue--; @@ -243,7 +258,7 @@ void Sound::quitScreen() { } void Sound::playSample(QueueElement *elem) { - uint8 *sampleData = (uint8 *)_resMan->fetchRes(_fxList[elem->id].sampleId); + uint8 *sampleData = (uint8 *)_resMan->fetchRes(getSampleId(elem->id)); for (uint16 cnt = 0; cnt < MAX_ROOMS_PER_FX; cnt++) { if (_fxList[elem->id].roomVolList[cnt].roomNo) { if ((_fxList[elem->id].roomVolList[cnt].roomNo == (int)Logic::_scriptVars[SCREEN]) || diff --git a/engines/sword1/sound.h b/engines/sword1/sound.h index 112ae5b6aa..4e1ac7ba34 100644 --- a/engines/sword1/sound.h +++ b/engines/sword1/sound.h @@ -53,8 +53,15 @@ struct RoomVol { int32 roomNo, leftVol, rightVol; }; +struct SampleId { + byte cluster; + byte idStd; + byte idWinDemo; +}; + struct FxDef { - uint32 sampleId, type, delay; + SampleId sampleId; + uint32 type, delay; RoomVol roomVolList[MAX_ROOMS_PER_FX]; }; @@ -100,6 +107,7 @@ private: void playSample(QueueElement *elem); void initCowSystem(); + uint32 getSampleId(int32 fxNo); int16 *uncompressSpeech(uint32 index, uint32 cSize, uint32 *size); void calcWaveVolume(int16 *data, uint32 length); bool _waveVolume[WAVE_VOL_TAB_LENGTH]; diff --git a/engines/sword1/staticres.cpp b/engines/sword1/staticres.cpp index 60c6877232..5dabce1301 100644 --- a/engines/sword1/staticres.cpp +++ b/engines/sword1/staticres.cpp @@ -2894,7 +2894,7 @@ const char Music::_tuneList[TOTAL_TUNES][8] = { const FxDef Sound::_fxList[312] = { // 0 { - 0, // sampleId + {0,0,0}, // sampleId 0, // type (FX_LOOP, FX_RANDOM or FX_SPOT) 0, // delay (random chance for FX_RANDOM sound fx) { // roomVolList diff --git a/engines/sword1/swordres.h b/engines/sword1/swordres.h index 384c240283..b1fc206b80 100644 --- a/engines/sword1/swordres.h +++ b/engines/sword1/swordres.h @@ -1298,66 +1298,66 @@ namespace Sword1 { // 2 entities in TXTs, 2 in datafiles. // paris_1 // sound_fx -#define FX_CAMERA1 0x06000000 -#define FX_CAMERA2 0x06000001 -#define FX_CAMERA3 0x06000002 -#define FX_CANDO 0x06000003 -#define FX_CANUP 0x06000004 -#define FX_CAW1 0x06000005 -#define FX_DUST 0x06000006 -#define FX_HORN1 0x06000007 -#define FX_HORN2 0x06000008 -#define FX_HORN3 0x06000009 -#define FX_LVSFLY 0x0600000A -#define FX_PAP1 0x0600000B -#define FX_PAP2 0x0600000C -#define FX_PICK1 0x0600000D -#define FX_PICK2 0x0600000E -#define FX_PICK3 0x0600000F -#define FX_PICK4 0x06000010 -#define FX_PICK5 0x06000011 -#define FX_TRAFFIC2 0x06000012 -#define FX_TWEET1 0x06000013 -#define FX_TWEET2 0x06000014 -#define FX_TWEET3 0x06000015 -#define FX_TWEET4 0x06000016 -#define FX_TWEET5 0x06000017 -#define FX_BIN1 0x06000018 -#define FX_BIN2 0x06000019 -#define FX_BIN3 0x0600001A -#define FX_CAT 0x0600001B -#define FX_COVERON2 0x0600001C -#define FX_CRATE 0x0600001D -#define FX_DRAIN 0x0600001E -#define FX_HOLE 0x0600001F -#define FX_BODY 0x06000020 -#define FX_BOTDN 0x06000021 -#define FX_BOTUP 0x06000022 -#define FX_GULP 0x06000023 -#define FX_LIGHT 0x06000024 -#define FX_PIKUP 0x06000025 -#define FX_PAP3 0x06000026 -#define FX_PAP4 0x06000027 -#define FX_PAP5 0x06000028 -#define FX_PISTOL 0x06000029 -#define FX_TBOX 0x0600002A -#define FX_KNOKKNOK 0x0600002B -#define FX_ALBCLO 0x0600002C -#define FX_ALBOP 0x0600002D -#define FX_LADD1 0x0600002E -#define FX_LADD2 0x0600002F -#define FX_LADD3 0x06000030 -#define FX_RAT1 0x06000031 -#define FX_RAT2 0x06000032 -#define FX_SEWSTEP1 0x06000033 -#define FX_SEWSTEP2 0x06000034 -#define FX_SWATER3 0x06000035 -#define FX_DRIP1 0x06000036 -#define FX_DRIP2 0x06000037 -#define FX_DRIP3 0x06000038 -#define FX_SWATER1 0x06000039 -#define FX_SEWLADD7 0x0600003A -#define FX_SEWLADU7 0x0600003B +#define FX_CAMERA1 {0x06,0x00,0x00} +#define FX_CAMERA2 {0x06,0x01,0x01} +#define FX_CAMERA3 {0x06,0x02,0x02} +#define FX_CANDO {0x06,0x03,0x03} +#define FX_CANUP {0x06,0x04,0x04} +#define FX_CAW1 {0x06,0x05,0x05} +#define FX_DUST {0x06,0x06,0x06} +#define FX_HORN1 {0x06,0x07,0x07} +#define FX_HORN2 {0x06,0x08,0x08} +#define FX_HORN3 {0x06,0x09,0x09} +#define FX_LVSFLY {0x06,0x0A,0xFF} +#define FX_PAP1 {0x06,0x0B,0x0A} +#define FX_PAP2 {0x06,0x0C,0x0B} +#define FX_PICK1 {0x06,0x0D,0x0C} +#define FX_PICK2 {0x06,0x0E,0x0D} +#define FX_PICK3 {0x06,0x0F,0x0E} +#define FX_PICK4 {0x06,0x10,0x0F} +#define FX_PICK5 {0x06,0x11,0x10} +#define FX_TRAFFIC2 {0x06,0x12,0x11} +#define FX_TWEET1 {0x06,0x13,0x12} +#define FX_TWEET2 {0x06,0x14,0x13} +#define FX_TWEET3 {0x06,0x15,0x14} +#define FX_TWEET4 {0x06,0x16,0x15} +#define FX_TWEET5 {0x06,0x17,0x16} +#define FX_BIN1 {0x06,0x18,0x17} +#define FX_BIN2 {0x06,0x19,0x18} +#define FX_BIN3 {0x06,0x1A,0x19} +#define FX_CAT {0x06,0x1B,0x1A} +#define FX_COVERON2 {0x06,0x1C,0x1B} +#define FX_CRATE {0x06,0x1D,0x1C} +#define FX_DRAIN {0x06,0x1E,0x1D} +#define FX_HOLE {0x06,0x1F,0x1E} +#define FX_BODY {0x06,0x20,0x1F} +#define FX_BOTDN {0x06,0x21,0x20} +#define FX_BOTUP {0x06,0x22,0x21} +#define FX_GULP {0x06,0x23,0x22} +#define FX_LIGHT {0x06,0x24,0x23} +#define FX_PIKUP {0x06,0x25,0x24} +#define FX_PAP3 {0x06,0x26,0x25} +#define FX_PAP4 {0x06,0x27,0x26} +#define FX_PAP5 {0x06,0x28,0x27} +#define FX_PISTOL {0x06,0x29,0x28} +#define FX_TBOX {0x06,0x2A,0x29} +#define FX_KNOKKNOK {0x06,0x2B,0x2A} +#define FX_ALBCLO {0x06,0x2C,0x2B} +#define FX_ALBOP {0x06,0x2D,0x2C} +#define FX_LADD1 {0x06,0x2E,0x2D} +#define FX_LADD2 {0x06,0x2F,0x2E} +#define FX_LADD3 {0x06,0x30,0x2F} +#define FX_RAT1 {0x06,0x31,0x30} +#define FX_RAT2 {0x06,0x32,0x31} +#define FX_SEWSTEP1 {0x06,0x33,0x32} +#define FX_SEWSTEP2 {0x06,0x34,0x33} +#define FX_SWATER3 {0x06,0x35,0x34} +#define FX_DRIP1 {0x06,0x36,0x35} +#define FX_DRIP2 {0x06,0x37,0x36} +#define FX_DRIP3 {0x06,0x38,0x37} +#define FX_SWATER1 {0x06,0x39,0x38} +#define FX_SEWLADD7 {0x06,0x3A,0xFF} +#define FX_SEWLADU7 {0x06,0x3B,0x39} // 60 entities in TXTs, 60 in datafiles. // room1 #define PARIS1_PAL 0x06010000 @@ -1767,52 +1767,52 @@ namespace Sword1 { // 8 entities in TXTs, 8 in datafiles. // paris_2 // sound_fx -#define FX_BIRD 0x07000000 -#define FX_BIRD2 0x07000001 -#define FX_CARLTON 0x07000002 -#define FX_CARS 0x07000003 -#define FX_DOORTRY 0x07000004 -#define FX_FIESTA 0x07000005 -#define FX_FLATDOOR 0x07000006 -#define FX_HVYVEHR 0x07000007 -#define FX_HVYVEHL 0x07000008 -#define FX_LITEVEHR 0x07000009 -#define FX_LITEVEHL 0x0700000A -#define FX_FONEUP 0x0700000B -#define FX_FONEDN 0x0700000C -#define FX_GEOCCH 0x0700000D -#define FX_GEOCHAIR 0x0700000E -#define FX_GEOCHR9 0x0700000F -#define FX_NICOPEN 0x07000010 -#define FX_NICLOSE 0x07000011 -#define FX_PHONICO1 0x07000012 -#define FX_GRAMOFON 0x07000013 -#define FX_SHOCK1 0x07000014 -#define FX_WINDUP11 0x07000015 -#define FX_FRISK 0x07000016 -#define FX_TRAFFIC3 0x07000017 -#define FX_DESKBELL 0x07000018 -#define FX_KEY13 0x07000019 -#define FX_PAPER6 0x0700001A -#define FX_PHONEDN2 0x0700001B -#define FX_PHONEUP2 0x0700001C -#define FX_PIANO14 0x0700001D -#define FX_TRYDOR14 0x0700001E -#define FX_CABCLOSE 0x0700001F -#define FX_CABOPEN 0x07000020 -#define FX_DORCLOSE 0x07000021 -#define FX_WINDOPEN 0x07000022 -#define FX_COO 0x07000023 -#define FX_COO2 0x07000024 -#define FX_LEDGE1 0x07000025 -#define FX_LEDGE2 0x07000026 -#define FX_BRIEFOFF 0x07000027 -#define FX_BRIEFON 0x07000028 -#define FX_JUMPIN 0x07000029 -#define FX_WARDIN 0x0700002A -#define FX_WARDOUT 0x0700002B -#define FX_CLIMBIN 0x0700002C -#define FX_CLIMBOUT 0x0700002D +#define FX_BIRD {0x07,0x00,0x00} +#define FX_BIRD2 {0x07,0x01,0x01} +#define FX_CARLTON {0x07,0x02,0x02} +#define FX_CARS {0x07,0x03,0x03} +#define FX_DOORTRY {0x07,0x04,0x04} +#define FX_FIESTA {0x07,0x05,0x05} +#define FX_FLATDOOR {0x07,0x06,0x06} +#define FX_HVYVEHR {0x07,0x07,0xFF} +#define FX_HVYVEHL {0x07,0x08,0xFF} +#define FX_LITEVEHR {0x07,0x09,0xFF} +#define FX_LITEVEHL {0x07,0x0A,0xFF} +#define FX_FONEUP {0x07,0x0B,0x07} +#define FX_FONEDN {0x07,0x0C,0x08} +#define FX_GEOCCH {0x07,0x0D,0x09} +#define FX_GEOCHAIR {0x07,0x0E,0x0A} +#define FX_GEOCHR9 {0x07,0x0F,0x0B} +#define FX_NICOPEN {0x07,0x10,0x0D} +#define FX_NICLOSE {0x07,0x11,0x0E} +#define FX_PHONICO1 {0x07,0x12,0x0F} +#define FX_GRAMOFON {0x07,0x13,0x10} +#define FX_SHOCK1 {0x07,0x14,0x11} +#define FX_WINDUP11 {0x07,0x15,0x12} +#define FX_FRISK {0x07,0x16,0x13} +#define FX_TRAFFIC3 {0x07,0x17,0x14} +#define FX_DESKBELL {0x07,0x18,0x15} +#define FX_KEY13 {0x07,0x19,0xFF} +#define FX_PAPER6 {0x07,0x1A,0x16} +#define FX_PHONEDN2 {0x07,0x1B,0x17} +#define FX_PHONEUP2 {0x07,0x1C,0x18} +#define FX_PIANO14 {0x07,0x1D,0x19} +#define FX_TRYDOR14 {0x07,0x1E,0x1A} +#define FX_CABCLOSE {0x07,0x1F,0x1B} +#define FX_CABOPEN {0x07,0x20,0x1C} +#define FX_DORCLOSE {0x07,0x21,0x1D} +#define FX_WINDOPEN {0x07,0x22,0x1E} +#define FX_COO {0x07,0x23,0x1F} +#define FX_COO2 {0x07,0x24,0x20} +#define FX_LEDGE1 {0x07,0x25,0x21} +#define FX_LEDGE2 {0x07,0x26,0x22} +#define FX_BRIEFOFF {0x07,0x27,0x23} +#define FX_BRIEFON {0x07,0x28,0x24} +#define FX_JUMPIN {0x07,0x29,0x25} +#define FX_WARDIN {0x07,0x2A,0x26} +#define FX_WARDOUT {0x07,0x2B,0x27} +#define FX_CLIMBIN {0x07,0x2C,0x28} +#define FX_CLIMBOUT {0x07,0x2D,0x29} // 46 entities in TXTs, 46 in datafiles. // room9 #define PARIS2_PAL 0x07010000 @@ -2349,38 +2349,38 @@ namespace Sword1 { // 9 entities in TXTs, 9 in datafiles. // paris_3 // sound_fx -#define FX_MUESEXT 0x08000000 -#define FX_AIRCON28 0x08000001 -#define FX_SARCO28A 0x08000002 -#define FX_SARCO28B 0x08000003 -#define FX_SARCO28C 0x08000004 -#define FX_TOTEM28A 0x08000005 -#define FX_ALARM 0x08000006 -#define FX_CARABINE 0x08000007 -#define FX_DOOR29 0x08000008 -#define FX_FISHFALL 0x08000009 -#define FX_GDROP29 0x0800000A -#define FX_GUI_HIT 0x0800000B -#define FX_GUN1 0x0800000C -#define FX_ROPEDOWN 0x0800000D -#define FX_SARCO29 0x0800000E -#define FX_SMASHGLA 0x0800000F -#define FX_TOTEM29A 0x08000010 -#define FX_TOTEM29B 0x08000011 -#define FX_HOSPEXT 0x08000012 -#define FX_GRAVEL1 0x08000013 -#define FX_GRAVEL2 0x08000014 -#define FX_HOSPNOIS 0x08000015 -#define FX_CUPBOPEN 0x08000016 -#define FX_CUPBCLOS 0x08000017 -#define FX_KIKSHINY 0x08000018 -#define FX_SHINY 0x08000019 -#define FX_SHINYOFF 0x0800001A -#define FX_SHINYON 0x0800001B -#define FX_BLOODPRE 0x0800001C -#define FX_GUN34 0x0800001D -#define FX_PULSE2 0x0800001E -#define FX_PULSE3 0x0800001F +#define FX_MUESEXT {0x08,0x00,0x00} +#define FX_AIRCON28 {0x08,0x01,0x01} +#define FX_SARCO28A {0x08,0x02,0x02} +#define FX_SARCO28B {0x08,0x03,0x03} +#define FX_SARCO28C {0x08,0x04,0x04} +#define FX_TOTEM28A {0x08,0x05,0x05} +#define FX_ALARM {0x08,0x06,0x06} +#define FX_CARABINE {0x08,0x07,0x07} +#define FX_DOOR29 {0x08,0x08,0x08} +#define FX_FISHFALL {0x08,0x09,0x09} +#define FX_GDROP29 {0x08,0x0A,0x0A} +#define FX_GUI_HIT {0x08,0x0B,0x0B} +#define FX_GUN1 {0x08,0x0C,0x0C} +#define FX_ROPEDOWN {0x08,0x0D,0x0D} +#define FX_SARCO29 {0x08,0x0E,0x0E} +#define FX_SMASHGLA {0x08,0x0F,0x0F} +#define FX_TOTEM29A {0x08,0x10,0x10} +#define FX_TOTEM29B {0x08,0x11,0x11} +#define FX_HOSPEXT {0x08,0x12,0x12} +#define FX_GRAVEL1 {0x08,0x13,0x13} +#define FX_GRAVEL2 {0x08,0x14,0x14} +#define FX_HOSPNOIS {0x08,0x15,0x15} +#define FX_CUPBOPEN {0x08,0x16,0x16} +#define FX_CUPBCLOS {0x08,0x17,0x17} +#define FX_KIKSHINY {0x08,0x18,0xFF} +#define FX_SHINY {0x08,0x19,0x18} +#define FX_SHINYOFF {0x08,0x1A,0x19} +#define FX_SHINYON {0x08,0x1B,0x1A} +#define FX_BLOODPRE {0x08,0x1C,0x1B} +#define FX_GUN34 {0x08,0x1D,0x1C} +#define FX_PULSE2 {0x08,0x1E,0x1D} +#define FX_PULSE3 {0x08,0x1F,0x1E} // 32 entities in TXTs, 32 in datafiles. // benoir #define MEGABEN 0x08010000 @@ -2794,29 +2794,29 @@ namespace Sword1 { // 30 entities in TXTs, 30 in datafiles. // paris_4 // sound_fx -#define FX_COVDWN 0x09000000 -#define FX_KEYIN 0x09000001 -#define FX_MANOP36 0x09000002 -#define FX_MONTAMB 0x09000003 -#define FX_OOH 0x09000004 -#define FX_PULLUP36 0x09000005 -#define FX_REPLCE36 0x09000006 -#define FX_AMBIEN37 0x09000007 -#define FX_CHAIN37 0x09000008 -#define FX_CHAIN37B 0x09000009 -#define FX_DOOR37 0x0900000A -#define FX_HOLE37 0x0900000B -#define FX_KNOCK37 0x0900000C -#define FX_KNOCK37B 0x0900000D -#define FX_WINCH37 0x0900000E -#define FX_AIRCON41 0x0900000F -#define FX_FONEDN41 0x09000010 -#define FX_FONEUP41 0x09000011 -#define FX_PHONCALL 0x09000012 -#define FX_THERMO1 0x09000013 -#define FX_TAPDRIP 0x09000014 -#define FX_DRIER1 0x09000015 -#define FX_CHURCHFX 0x09000016 +#define FX_COVDWN {0x09,0x00,0xFF} +#define FX_KEYIN {0x09,0x01,0xFF} +#define FX_MANOP36 {0x09,0x02,0x00} +#define FX_MONTAMB {0x09,0x03,0x01} +#define FX_OOH {0x09,0x04,0x02} +#define FX_PULLUP36 {0x09,0x05,0x03} +#define FX_REPLCE36 {0x09,0x06,0x04} +#define FX_AMBIEN37 {0x09,0x07,0x05} +#define FX_CHAIN37 {0x09,0x08,0x06} +#define FX_CHAIN37B {0x09,0x09,0x06} +#define FX_DOOR37 {0x09,0x0A,0x07} +#define FX_HOLE37 {0x09,0x0B,0x08} +#define FX_KNOCK37 {0x09,0x0C,0x09} +#define FX_KNOCK37B {0x09,0x0D,0x0A} +#define FX_WINCH37 {0x09,0x0E,0x0B} +#define FX_AIRCON41 {0x09,0x0F,0x0C} +#define FX_FONEDN41 {0x09,0x10,0x0D} +#define FX_FONEUP41 {0x09,0x11,0x0E} +#define FX_PHONCALL {0x09,0x12,0x0F} +#define FX_THERMO1 {0x09,0x13,0x10} +#define FX_TAPDRIP {0x09,0x14,0xFF} +#define FX_DRIER1 {0x09,0x15,0x11} +#define FX_CHURCHFX {0x09,0x16,0x12} // 23 entities in TXTs, 23 in datafiles. // room36 #define R36SPRPAL 0x09010000 @@ -3302,56 +3302,56 @@ namespace Sword1 { // 39 entities in TXTs, 39 in datafiles. // ireland // sound_fx -#define FX_EIRBIRD3 0x0A000000 -#define FX_SHOCK2 0x0A000001 -#define FX_EIRBIRD1 0x0A000002 -#define FX_EIRBIRD2 0x0A000003 -#define FX_SWITCH19 0x0A000004 -#define FX_TRAPOPEN 0x0A000005 -#define FX_VIOLIN19 0x0A000006 -#define FX_WHISTLE 0x0A000007 -#define FX_BARFLAP 0x0A000008 -#define FX_DORCLOSE20 0x0A000009 -#define FX_DRINK 0x0A00000A -#define FX_FITZHIT 0x0A00000B -#define FX_FITZRUN 0x0A00000C -#define FX_FITZUP 0x0A00000D -#define FX_FUSE20 0x0A00000E -#define FX_PULLPINT 0x0A00000F -#define FX_SNEEZE1 0x0A000010 -#define FX_SNEEZE2 0x0A000011 -#define FX_WASHER 0x0A000012 -#define FX_CELTAP 0x0A000013 -#define FX_DRIPIRE 0x0A000014 -#define FX_DRIPIRE2 0x0A000015 -#define FX_TAP 0x0A000016 -#define FX_TAP2 0x0A000017 -#define FX_CLIMBHAY 0x0A000018 -#define FX_FARMERGO 0x0A000019 -#define FX_CASTLWAL 0x0A00001A -#define FX_CLIMBFAL 0x0A00001B -#define FX_KEYSTEP 0x0A00001C -#define FX_WIND 0x0A00001D -#define FX_GEOGOAT 0x0A00001E -#define FX_GOATBAA 0x0A00001F -#define FX_GOATCHEW 0x0A000020 -#define FX_GOATDOH 0x0A000021 -#define FX_PLOUGH 0x0A000022 -#define FX_EIRDRIP1 0x0A000023 -#define FX_EIRDRIP2 0x0A000024 -#define FX_LADDWN25 0x0A000025 -#define FX_LADDUP25 0x0A000026 -#define FX_SECDOR25 0x0A000027 -#define FX_SLABFALL 0x0A000028 -#define FX_SLABUP 0x0A000029 -#define FX_TRIGER25 0x0A00002A -#define FX_WRING 0x0A00002B -#define FX_LEVER 0x0A00002C -#define FX_LEVER2 0x0A00002D -#define FX_RAT3A 0x0A00002E -#define FX_RAT3B 0x0A00002F -#define FX_RAT3C 0x0A000030 -#define FX_RAT3D 0x0A000031 +#define FX_EIRBIRD3 {0x0A,0x00,0x00} +#define FX_SHOCK2 {0x0A,0x01,0x01} +#define FX_EIRBIRD1 {0x0A,0x02,0x02} +#define FX_EIRBIRD2 {0x0A,0x03,0x03} +#define FX_SWITCH19 {0x0A,0x04,0x04} +#define FX_TRAPOPEN {0x0A,0x05,0x05} +#define FX_VIOLIN19 {0x0A,0x06,0x06} +#define FX_WHISTLE {0x0A,0x07,0x07} +#define FX_BARFLAP {0x0A,0x08,0x08} +#define FX_DORCLOSE20 {0x0A,0x09,0x09} +#define FX_DRINK {0x0A,0x0A,0x0A} +#define FX_FITZHIT {0x0A,0x0B,0x0B} +#define FX_FITZRUN {0x0A,0x0C,0x0C} +#define FX_FITZUP {0x0A,0x0D,0x0D} +#define FX_FUSE20 {0x0A,0x0E,0x0E} +#define FX_PULLPINT {0x0A,0x0F,0x0F} +#define FX_SNEEZE1 {0x0A,0x10,0xFF} +#define FX_SNEEZE2 {0x0A,0x11,0xFF} +#define FX_WASHER {0x0A,0x12,0x10} +#define FX_CELTAP {0x0A,0x13,0x11} +#define FX_DRIPIRE {0x0A,0x14,0xFF} +#define FX_DRIPIRE2 {0x0A,0x15,0xFF} +#define FX_TAP {0x0A,0x16,0x12} +#define FX_TAP2 {0x0A,0x17,0x13} +#define FX_CLIMBHAY {0x0A,0x18,0x14} +#define FX_FARMERGO {0x0A,0x19,0x15} +#define FX_CASTLWAL {0x0A,0x1A,0x16} +#define FX_CLIMBFAL {0x0A,0x1B,0x17} +#define FX_KEYSTEP {0x0A,0x1C,0x18} +#define FX_WIND {0x0A,0x1D,0x19} +#define FX_GEOGOAT {0x0A,0x1E,0x1A} +#define FX_GOATBAA {0x0A,0x1F,0x1B} +#define FX_GOATCHEW {0x0A,0x20,0x1C} +#define FX_GOATDOH {0x0A,0x21,0x1D} +#define FX_PLOUGH {0x0A,0x22,0x1E} +#define FX_EIRDRIP1 {0x0A,0x23,0xFF} +#define FX_EIRDRIP2 {0x0A,0x24,0xFF} +#define FX_LADDWN25 {0x0A,0x25,0xFF} +#define FX_LADDUP25 {0x0A,0x26,0xFF} +#define FX_SECDOR25 {0x0A,0x27,0x21} +#define FX_SLABFALL {0x0A,0x28,0x22} +#define FX_SLABUP {0x0A,0x29,0x23} +#define FX_TRIGER25 {0x0A,0x2A,0x24} +#define FX_WRING {0x0A,0x2B,0x25} +#define FX_LEVER {0x0A,0x2C,0x26} +#define FX_LEVER2 {0x0A,0x2D,0x27} +#define FX_RAT3A {0x0A,0x2E,0x28} +#define FX_RAT3B {0x0A,0x2F,0x28} +#define FX_RAT3C {0x0A,0x30,0x28} +#define FX_RAT3D {0x0A,0x31,0x28} // 50 entities in TXTs, 50 in datafiles. // room19 #define R19SPRPAL 0x0A010000 @@ -3811,23 +3811,23 @@ namespace Sword1 { // 16 entities in TXTs, 16 in datafiles. // spain // sound_fx -#define FX_SPNBIRD1 0x0B000000 -#define FX_SPNBIRD2 0x0B000001 -#define FX_AMBIEN56 0x0B000002 -#define FX_DOGS56 0x0B000003 -#define FX_PENDULUM 0x0B000004 -#define FX_CANFALL 0x0B000005 -#define FX_HOSE57 0x0B000006 -#define FX_HOSE57B 0x0B000007 -#define FX_SPAIN 0x0B000008 -#define FX_CHESS 0x0B000009 -#define FX_SECDOR59 0x0B00000A -#define FX_WINDOW59 0x0B00000B -#define FX_LIONFALL 0x0B00000C -#define FX_LIONFAL2 0x0B00000D -#define FX_TOOTHPUL 0x0B00000E -#define FX_SECDOR61 0x0B00000F -#define FX_WELLDRIP 0x0B000010 +#define FX_SPNBIRD1 {0x0B,0x00,0x00} +#define FX_SPNBIRD2 {0x0B,0x01,0x01} +#define FX_AMBIEN56 {0x0B,0x02,0x02} +#define FX_DOGS56 {0x0B,0x03,0x03} +#define FX_PENDULUM {0x0B,0x04,0x04} +#define FX_CANFALL {0x0B,0x05,0x05} +#define FX_HOSE57 {0x0B,0x06,0x06} +#define FX_HOSE57B {0x0B,0x07,0x07} +#define FX_SPAIN {0x0B,0x08,0x08} +#define FX_CHESS {0x0B,0x09,0x09} +#define FX_SECDOR59 {0x0B,0x0A,0xFF} +#define FX_WINDOW59 {0x0B,0x0B,0xFF} +#define FX_LIONFALL {0x0B,0x0C,0x0B} +#define FX_LIONFAL2 {0x0B,0x0D,0x0C} +#define FX_TOOTHPUL {0x0B,0x0E,0x0D} +#define FX_SECDOR61 {0x0B,0x0F,0x0E} +#define FX_WELLDRIP {0x0B,0x10,0x0F} // 17 entities in TXTs, 17 in datafiles. // room56 #define SPAIN_PAL 0x0B010000 @@ -4186,34 +4186,34 @@ namespace Sword1 { // 8 entities in TXTs, 8 in datafiles. // syria // sound_fx -#define FX_CAMERA45 0x0C000000 -#define FX_SHOCK3 0x0C000001 -#define FX_STALLBEL 0x0C000002 -#define FX_AYUBDOOR 0x0C000003 -#define FX_BALLPLAY 0x0C000004 -#define FX_CATHIT 0x0C000005 -#define FX_MARIB 0x0C000006 -#define FX_NEWTON 0x0C000007 -#define FX_STALLCAT 0x0C000008 -#define FX_STATBREK 0x0C000009 -#define FX_KEYS49 0x0C00000A -#define FX_MANG1 0x0C00000B -#define FX_MANG2 0x0C00000C -#define FX_MANG3 0x0C00000D -#define FX_UNLOCK49 0x0C00000E -#define FX_WCCHAIN 0x0C00000F -#define FX_CUBDOR 0x0C000010 -#define FX_BREKSTIK 0x0C000011 -#define FX_CLIMBDWN 0x0C000012 -#define FX_CRICKET 0x0C000013 -#define FX_GEOFAL54 0x0C000014 -#define FX_KHANDOWN 0x0C000015 -#define FX_RINGPULL 0x0C000016 -#define FX_SECDOR54 0x0C000017 -#define FX_SHOTKHAN 0x0C000018 -#define FX_SYRIWIND 0x0C000019 -#define FX_THUMP1 0x0C00001A -#define FX_SECDOR55 0x0C00001B +#define FX_CAMERA45 {0x0C,0x00,0xFF} +#define FX_SHOCK3 {0x0C,0x01,0x00} +#define FX_STALLBEL {0x0C,0x02,0x01} +#define FX_AYUBDOOR {0x0C,0x03,0x02} +#define FX_BALLPLAY {0x0C,0x04,0x03} +#define FX_CATHIT {0x0C,0x05,0x04} +#define FX_MARIB {0x0C,0x06,0x05} +#define FX_NEWTON {0x0C,0x07,0x06} +#define FX_STALLCAT {0x0C,0x08,0x07} +#define FX_STATBREK {0x0C,0x09,0x08} +#define FX_KEYS49 {0x0C,0x0A,0x09} +#define FX_MANG1 {0x0C,0x0B,0x0A} +#define FX_MANG2 {0x0C,0x0C,0x0B} +#define FX_MANG3 {0x0C,0x0D,0x0C} +#define FX_UNLOCK49 {0x0C,0x0E,0x0D} +#define FX_WCCHAIN {0x0C,0x0F,0x0E} +#define FX_CUBDOR {0x0C,0x10,0x0F} +#define FX_BREKSTIK {0x0C,0x11,0x10} +#define FX_CLIMBDWN {0x0C,0x12,0x11} +#define FX_CRICKET {0x0C,0x13,0x12} +#define FX_GEOFAL54 {0x0C,0x14,0x13} +#define FX_KHANDOWN {0x0C,0x15,0x14} +#define FX_RINGPULL {0x0C,0x16,0x15} +#define FX_SECDOR54 {0x0C,0x17,0x16} +#define FX_SHOTKHAN {0x0C,0x18,0x17} +#define FX_SYRIWIND {0x0C,0x19,0x18} +#define FX_THUMP1 {0x0C,0x1A,0x19} +#define FX_SECDOR55 {0x0C,0x1B,0x1A} // 28 entities in TXTs, 28 in datafiles. // duane #define DUANE_MEGA 0x0C010000 @@ -4578,19 +4578,19 @@ namespace Sword1 { // 37 entities in TXTs, 37 in datafiles. // train // sound_fx -#define FX_SHOCK63 0x0D000000 -#define FX_TRAINEXT 0x0D000001 -#define FX_TRAININT 0x0D000002 -#define FX_DOOR65 0x0D000003 -#define FX_WIND66 0x0D000004 -#define FX_WINDOW66 0x0D000005 -#define FX_BRAKES 0x0D000006 -#define FX_DOOR69 0x0D000007 -#define FX_EKSHOOT 0x0D000008 -#define FX_FIGHT69 0x0D000009 -#define FX_PNEUMO69 0x0D00000A -#define FX_TICK69 0x0D00000B -#define FX_TRNPASS 0x0D00000C +#define FX_SHOCK63 {0x0D,0x00,0x00} +#define FX_TRAINEXT {0x0D,0x01,0x01} +#define FX_TRAININT {0x0D,0x02,0x02} +#define FX_DOOR65 {0x0D,0x03,0x03} +#define FX_WIND66 {0x0D,0x04,0x04} +#define FX_WINDOW66 {0x0D,0x05,0x05} +#define FX_BRAKES {0x0D,0x06,0x06} +#define FX_DOOR69 {0x0D,0x07,0x07} +#define FX_EKSHOOT {0x0D,0x08,0x08} +#define FX_FIGHT69 {0x0D,0x09,0xFF} +#define FX_PNEUMO69 {0x0D,0x0A,0x09} +#define FX_TICK69 {0x0D,0x0B,0x0A} +#define FX_TRNPASS {0x0D,0x0C,0x0B} // 13 entities in TXTs, 13 in datafiles. // room63 #define TRAIN_PAL 0x0D010000 @@ -4828,33 +4828,33 @@ namespace Sword1 { // 57 entities in TXTs, 57 in datafiles. // scotland // sound_fx -#define FX_WIND71 0x0E000000 -#define FX_GUST71 0x0E000001 -#define FX_OWL71A 0x0E000002 -#define FX_OWL71B 0x0E000003 -#define FX_COG72A 0x0E000004 -#define FX_PING 0x0E000005 -#define FX_RUMMAGE1 0x0E000006 -#define FX_RUMMAGE2 0x0E000007 -#define FX_SECDOR72 0x0E000008 -#define FX_CHANT 0x0E000009 -#define FX_DAGGER1 0x0E00000A -#define FX_GDROP73 0x0E00000B -#define FX_GUNPOWDR 0x0E00000C -#define FX_STAFF 0x0E00000D -#define FX_TORCH73 0x0E00000E -#define FX_BAPHAMB 0x0E00000F -#define FX_FIGHT1 0x0E000010 -#define FX_REFORGE2 0x0E000011 -#define FX_ROSSODIE 0x0E000012 -#define FX_GKSWORD 0x0E000013 -#define FX_REFORGE1 0x0E000014 -#define FX_REFORGE4 0x0E000015 -#define FX_CHOKE1 0x0E000016 -#define FX_CHOKE2 0x0E000017 -#define FX_EKDIES 0x0E000018 -#define FX_FIGHT2 0x0E000019 -#define FX_GUN79 0x0E00001A +#define FX_WIND71 {0x0E,0x00,0x00} +#define FX_GUST71 {0x0E,0x01,0x01} +#define FX_OWL71A {0x0E,0x02,0x02} +#define FX_OWL71B {0x0E,0x03,0x03} +#define FX_COG72A {0x0E,0x04,0x04} +#define FX_PING {0x0E,0x05,0x05} +#define FX_RUMMAGE1 {0x0E,0x06,0x06} +#define FX_RUMMAGE2 {0x0E,0x07,0x07} +#define FX_SECDOR72 {0x0E,0x08,0x08} +#define FX_CHANT {0x0E,0x09,0xFF} +#define FX_DAGGER1 {0x0E,0x0A,0x09} +#define FX_GDROP73 {0x0E,0x0B,0xFF} +#define FX_GUNPOWDR {0x0E,0x0C,0x0A} +#define FX_STAFF {0x0E,0x0D,0xFF} +#define FX_TORCH73 {0x0E,0x0E,0x0B} +#define FX_BAPHAMB {0x0E,0x0F,0xFF} +#define FX_FIGHT1 {0x0E,0x10,0xFF} +#define FX_REFORGE2 {0x0E,0x11,0xFF} +#define FX_ROSSODIE {0x0E,0x12,0x0C} +#define FX_GKSWORD {0x0E,0x13,0xFF} +#define FX_REFORGE1 {0x0E,0x14,0xFF} +#define FX_REFORGE4 {0x0E,0x15,0xFF} +#define FX_CHOKE1 {0x0E,0x16,0x0D} +#define FX_CHOKE2 {0x0E,0x17,0x0E} +#define FX_EKDIES {0x0E,0x18,0xFF} +#define FX_FIGHT2 {0x0E,0x19,0x0F} +#define FX_GUN79 {0x0E,0x1A,0x10} // 27 entities in TXTs, 27 in datafiles. // room71 #define R71L0 0x0E010000 |