Ticket #5893: sword1demo.diff

File sword1demo.diff, 27.9 KB (added by eriktorbjorn, 12 years ago)

One possible patch against current git

  • engines/sword1/sound.cpp

    diff --git a/engines/sword1/sound.cpp b/engines/sword1/sound.cpp
    index b74cd8c..4c52142 100644
    a b Sound::~Sound() {  
    6262        _mixer->stopAll();
    6363        for (uint8 cnt = 0; cnt < _endOfQueue; cnt++)
    6464                if (_fxQueue[cnt].delay == 0)
    65                         _resMan->resClose(_fxList[_fxQueue[cnt].id].sampleId);
     65                        _resMan->resClose(getSampleId(_fxQueue[cnt].id));
    6666        _endOfQueue = 0;
    6767        closeCowSystem();
    6868}
    6969
     70uint32 Sound::getSampleId(int32 fxNo) {
     71        byte soundBank = _fxList[fxNo].sampleId.soundBank;
     72        byte id;
     73        if (SwordEngine::_systemVars.isDemo && SwordEngine::_systemVars.platform == Common::kPlatformWindows) {
     74                id = _fxList[fxNo].sampleId.idWinDemo;
     75        } else {
     76                id = _fxList[fxNo].sampleId.idStd;
     77        }
     78        return (soundBank << 24) | id;
     79}
     80
    7081void Sound::checkSpeechFileEndianness() {
    7182        // Some mac versions (not all of them) use big endian wav, although
    7283        // the wav header doesn't indicate it.
    int Sound::addToQueue(int32 fxNo) {  
    154165                        warning("Sound queue overflow");
    155166                        return 0;
    156167                }
    157                 _resMan->resOpen(_fxList[fxNo].sampleId);
    158                 _fxQueue[_endOfQueue].id = fxNo;
    159                 if (_fxList[fxNo].type == FX_SPOT)
    160                         _fxQueue[_endOfQueue].delay = _fxList[fxNo].delay + 1;
    161                 else
    162                         _fxQueue[_endOfQueue].delay = 1;
    163                 _endOfQueue++;
    164                 return 1;
     168                uint32 sampleId = getSampleId(fxNo);
     169                if ((sampleId & 0xFF) != 0xFF) {
     170                        _resMan->resOpen(sampleId);
     171                        _fxQueue[_endOfQueue].id = fxNo;
     172                        if (_fxList[fxNo].type == FX_SPOT)
     173                                _fxQueue[_endOfQueue].delay = _fxList[fxNo].delay + 1;
     174                        else
     175                                _fxQueue[_endOfQueue].delay = 1;
     176                        _endOfQueue++;
     177                        return 1;
     178                }
     179                return 0;
    165180        }
    166181        return 0;
    167182}
    void Sound::engine() {  
    186201                                playSample(&_fxQueue[cnt2]);
    187202                } else {
    188203                        if (!_mixer->isSoundHandleActive(_fxQueue[cnt2].handle)) { // sound finished
    189                                 _resMan->resClose(_fxList[_fxQueue[cnt2].id].sampleId);
     204                                _resMan->resClose(getSampleId(_fxQueue[cnt2].id));
    190205                                if (cnt2 != _endOfQueue - 1)
    191206                                        _fxQueue[cnt2] = _fxQueue[_endOfQueue - 1];
    192207                                _endOfQueue--;
    void Sound::fnStopFx(int32 fxNo) {  
    200215        for (uint8 cnt = 0; cnt < _endOfQueue; cnt++)
    201216                if (_fxQueue[cnt].id == (uint32)fxNo) {
    202217                        if (!_fxQueue[cnt].delay) // sound was started
    203                                 _resMan->resClose(_fxList[_fxQueue[cnt].id].sampleId);
     218                                _resMan->resClose(getSampleId(_fxQueue[cnt].id));
    204219                        if (cnt != _endOfQueue - 1)
    205220                                _fxQueue[cnt] = _fxQueue[_endOfQueue - 1];
    206221                        _endOfQueue--;
    void Sound::quitScreen() {  
    243258}
    244259
    245260void Sound::playSample(QueueElement *elem) {
    246         uint8 *sampleData = (uint8 *)_resMan->fetchRes(_fxList[elem->id].sampleId);
     261        uint8 *sampleData = (uint8 *)_resMan->fetchRes(getSampleId(elem->id));
    247262        for (uint16 cnt = 0; cnt < MAX_ROOMS_PER_FX; cnt++) {
    248263                if (_fxList[elem->id].roomVolList[cnt].roomNo) {
    249264                        if ((_fxList[elem->id].roomVolList[cnt].roomNo == (int)Logic::_scriptVars[SCREEN]) ||
  • engines/sword1/sound.h

    diff --git a/engines/sword1/sound.h b/engines/sword1/sound.h
    index 112ae5b..1af8b4e 100644
    a b struct RoomVol {  
    5353        int32 roomNo, leftVol, rightVol;
    5454};
    5555
     56struct SampleId {
     57        byte soundBank;
     58        byte idStd;
     59        byte idWinDemo;
     60};
     61
    5662struct FxDef {
    57         uint32 sampleId, type, delay;
     63        SampleId sampleId;
     64        uint32 type, delay;
    5865        RoomVol roomVolList[MAX_ROOMS_PER_FX];
    5966};
    6067
    class Sound {  
    7582public:
    7683        Sound(const char *searchPath, Audio::Mixer *mixer, ResMan *pResMan);
    7784        ~Sound();
     85        uint32 getSampleId(int32 fxNo);
    7886        void setSpeechVol(uint8 volL, uint8 volR) { _speechVolL = volL; _speechVolR = volR; }
    7987        void setSfxVol(uint8 volL, uint8 volR) { _sfxVolL = volL; _sfxVolR = volR; }
    8088        void giveSpeechVol(uint8 *volL, uint8 *volR) { *volL = _speechVolL; *volR = _speechVolR; }
  • engines/sword1/staticres.cpp

    diff --git a/engines/sword1/staticres.cpp b/engines/sword1/staticres.cpp
    index 60c6877..5dabce1 100644
    a b const char Music::_tuneList[TOTAL_TUNES][8] = {  
    28942894const FxDef Sound::_fxList[312] = {
    28952895                // 0
    28962896        {
    2897                 0,                                              // sampleId
     2897                {0,0,0},                                                // sampleId
    28982898                0,                                              // type                         (FX_LOOP, FX_RANDOM or FX_SPOT)
    28992899                0,                                              // delay                        (random chance for FX_RANDOM sound fx)
    29002900                {                                                       // roomVolList
  • engines/sword1/swordres.h

    diff --git a/engines/sword1/swordres.h b/engines/sword1/swordres.h
    index 384c240..b1fc206 100644
    a b namespace Sword1 {  
    12981298        // 2 entities in TXTs, 2 in datafiles.
    12991299// paris_1
    13001300        // sound_fx
    1301 #define FX_CAMERA1                               0x06000000
    1302 #define FX_CAMERA2                               0x06000001
    1303 #define FX_CAMERA3                               0x06000002
    1304 #define FX_CANDO                                 0x06000003
    1305 #define FX_CANUP                                 0x06000004
    1306 #define FX_CAW1                                  0x06000005
    1307 #define FX_DUST                                  0x06000006
    1308 #define FX_HORN1                                 0x06000007
    1309 #define FX_HORN2                                 0x06000008
    1310 #define FX_HORN3                                 0x06000009
    1311 #define FX_LVSFLY                                0x0600000A
    1312 #define FX_PAP1                                  0x0600000B
    1313 #define FX_PAP2                                  0x0600000C
    1314 #define FX_PICK1                                 0x0600000D
    1315 #define FX_PICK2                                 0x0600000E
    1316 #define FX_PICK3                                 0x0600000F
    1317 #define FX_PICK4                                 0x06000010
    1318 #define FX_PICK5                                 0x06000011
    1319 #define FX_TRAFFIC2                              0x06000012
    1320 #define FX_TWEET1                                0x06000013
    1321 #define FX_TWEET2                                0x06000014
    1322 #define FX_TWEET3                                0x06000015
    1323 #define FX_TWEET4                                0x06000016
    1324 #define FX_TWEET5                                0x06000017
    1325 #define FX_BIN1                                  0x06000018
    1326 #define FX_BIN2                                  0x06000019
    1327 #define FX_BIN3                                  0x0600001A
    1328 #define FX_CAT                                   0x0600001B
    1329 #define FX_COVERON2                              0x0600001C
    1330 #define FX_CRATE                                 0x0600001D
    1331 #define FX_DRAIN                                 0x0600001E
    1332 #define FX_HOLE                                  0x0600001F
    1333 #define FX_BODY                                  0x06000020
    1334 #define FX_BOTDN                                 0x06000021
    1335 #define FX_BOTUP                                 0x06000022
    1336 #define FX_GULP                                  0x06000023
    1337 #define FX_LIGHT                                 0x06000024
    1338 #define FX_PIKUP                                 0x06000025
    1339 #define FX_PAP3                                  0x06000026
    1340 #define FX_PAP4                                  0x06000027
    1341 #define FX_PAP5                                  0x06000028
    1342 #define FX_PISTOL                                0x06000029
    1343 #define FX_TBOX                                  0x0600002A
    1344 #define FX_KNOKKNOK                              0x0600002B
    1345 #define FX_ALBCLO                                0x0600002C
    1346 #define FX_ALBOP                                 0x0600002D
    1347 #define FX_LADD1                                 0x0600002E
    1348 #define FX_LADD2                                 0x0600002F
    1349 #define FX_LADD3                                 0x06000030
    1350 #define FX_RAT1                                  0x06000031
    1351 #define FX_RAT2                                  0x06000032
    1352 #define FX_SEWSTEP1                              0x06000033
    1353 #define FX_SEWSTEP2                              0x06000034
    1354 #define FX_SWATER3                               0x06000035
    1355 #define FX_DRIP1                                 0x06000036
    1356 #define FX_DRIP2                                 0x06000037
    1357 #define FX_DRIP3                                 0x06000038
    1358 #define FX_SWATER1                               0x06000039
    1359 #define FX_SEWLADD7                              0x0600003A
    1360 #define FX_SEWLADU7                              0x0600003B
     1301#define FX_CAMERA1                               {0x06,0x00,0x00}
     1302#define FX_CAMERA2                               {0x06,0x01,0x01}
     1303#define FX_CAMERA3                               {0x06,0x02,0x02}
     1304#define FX_CANDO                                 {0x06,0x03,0x03}
     1305#define FX_CANUP                                 {0x06,0x04,0x04}
     1306#define FX_CAW1                                  {0x06,0x05,0x05}
     1307#define FX_DUST                                  {0x06,0x06,0x06}
     1308#define FX_HORN1                                 {0x06,0x07,0x07}
     1309#define FX_HORN2                                 {0x06,0x08,0x08}
     1310#define FX_HORN3                                 {0x06,0x09,0x09}
     1311#define FX_LVSFLY                                {0x06,0x0A,0xFF}
     1312#define FX_PAP1                                  {0x06,0x0B,0x0A}
     1313#define FX_PAP2                                  {0x06,0x0C,0x0B}
     1314#define FX_PICK1                                 {0x06,0x0D,0x0C}
     1315#define FX_PICK2                                 {0x06,0x0E,0x0D}
     1316#define FX_PICK3                                 {0x06,0x0F,0x0E}
     1317#define FX_PICK4                                 {0x06,0x10,0x0F}
     1318#define FX_PICK5                                 {0x06,0x11,0x10}
     1319#define FX_TRAFFIC2                              {0x06,0x12,0x11}
     1320#define FX_TWEET1                                {0x06,0x13,0x12}
     1321#define FX_TWEET2                                {0x06,0x14,0x13}
     1322#define FX_TWEET3                                {0x06,0x15,0x14}
     1323#define FX_TWEET4                                {0x06,0x16,0x15}
     1324#define FX_TWEET5                                {0x06,0x17,0x16}
     1325#define FX_BIN1                                  {0x06,0x18,0x17}
     1326#define FX_BIN2                                  {0x06,0x19,0x18}
     1327#define FX_BIN3                                  {0x06,0x1A,0x19}
     1328#define FX_CAT                                   {0x06,0x1B,0x1A}
     1329#define FX_COVERON2                              {0x06,0x1C,0x1B}
     1330#define FX_CRATE                                 {0x06,0x1D,0x1C}
     1331#define FX_DRAIN                                 {0x06,0x1E,0x1D}
     1332#define FX_HOLE                                  {0x06,0x1F,0x1E}
     1333#define FX_BODY                                  {0x06,0x20,0x1F}
     1334#define FX_BOTDN                                 {0x06,0x21,0x20}
     1335#define FX_BOTUP                                 {0x06,0x22,0x21}
     1336#define FX_GULP                                  {0x06,0x23,0x22}
     1337#define FX_LIGHT                                 {0x06,0x24,0x23}
     1338#define FX_PIKUP                                 {0x06,0x25,0x24}
     1339#define FX_PAP3                                  {0x06,0x26,0x25}
     1340#define FX_PAP4                                  {0x06,0x27,0x26}
     1341#define FX_PAP5                                  {0x06,0x28,0x27}
     1342#define FX_PISTOL                                {0x06,0x29,0x28}
     1343#define FX_TBOX                                  {0x06,0x2A,0x29}
     1344#define FX_KNOKKNOK                              {0x06,0x2B,0x2A}
     1345#define FX_ALBCLO                                {0x06,0x2C,0x2B}
     1346#define FX_ALBOP                                 {0x06,0x2D,0x2C}
     1347#define FX_LADD1                                 {0x06,0x2E,0x2D}
     1348#define FX_LADD2                                 {0x06,0x2F,0x2E}
     1349#define FX_LADD3                                 {0x06,0x30,0x2F}
     1350#define FX_RAT1                                  {0x06,0x31,0x30}
     1351#define FX_RAT2                                  {0x06,0x32,0x31}
     1352#define FX_SEWSTEP1                              {0x06,0x33,0x32}
     1353#define FX_SEWSTEP2                              {0x06,0x34,0x33}
     1354#define FX_SWATER3                               {0x06,0x35,0x34}
     1355#define FX_DRIP1                                 {0x06,0x36,0x35}
     1356#define FX_DRIP2                                 {0x06,0x37,0x36}
     1357#define FX_DRIP3                                 {0x06,0x38,0x37}
     1358#define FX_SWATER1                               {0x06,0x39,0x38}
     1359#define FX_SEWLADD7                              {0x06,0x3A,0xFF}
     1360#define FX_SEWLADU7                              {0x06,0x3B,0x39}
    13611361        // 60 entities in TXTs, 60 in datafiles.
    13621362        // room1
    13631363#define PARIS1_PAL                               0x06010000
    namespace Sword1 {  
    17671767        // 8 entities in TXTs, 8 in datafiles.
    17681768// paris_2
    17691769        // sound_fx
    1770 #define FX_BIRD                                  0x07000000
    1771 #define FX_BIRD2                                 0x07000001
    1772 #define FX_CARLTON                               0x07000002
    1773 #define FX_CARS                                  0x07000003
    1774 #define FX_DOORTRY                               0x07000004
    1775 #define FX_FIESTA                                0x07000005
    1776 #define FX_FLATDOOR                              0x07000006
    1777 #define FX_HVYVEHR                               0x07000007
    1778 #define FX_HVYVEHL                               0x07000008
    1779 #define FX_LITEVEHR                              0x07000009
    1780 #define FX_LITEVEHL                              0x0700000A
    1781 #define FX_FONEUP                                0x0700000B
    1782 #define FX_FONEDN                                0x0700000C
    1783 #define FX_GEOCCH                                0x0700000D
    1784 #define FX_GEOCHAIR                              0x0700000E
    1785 #define FX_GEOCHR9                               0x0700000F
    1786 #define FX_NICOPEN                               0x07000010
    1787 #define FX_NICLOSE                               0x07000011
    1788 #define FX_PHONICO1                              0x07000012
    1789 #define FX_GRAMOFON                              0x07000013
    1790 #define FX_SHOCK1                                0x07000014
    1791 #define FX_WINDUP11                              0x07000015
    1792 #define FX_FRISK                                 0x07000016
    1793 #define FX_TRAFFIC3                              0x07000017
    1794 #define FX_DESKBELL                              0x07000018
    1795 #define FX_KEY13                                 0x07000019
    1796 #define FX_PAPER6                                0x0700001A
    1797 #define FX_PHONEDN2                              0x0700001B
    1798 #define FX_PHONEUP2                              0x0700001C
    1799 #define FX_PIANO14                               0x0700001D
    1800 #define FX_TRYDOR14                              0x0700001E
    1801 #define FX_CABCLOSE                              0x0700001F
    1802 #define FX_CABOPEN                               0x07000020
    1803 #define FX_DORCLOSE                              0x07000021
    1804 #define FX_WINDOPEN                              0x07000022
    1805 #define FX_COO                                   0x07000023
    1806 #define FX_COO2                                  0x07000024
    1807 #define FX_LEDGE1                                0x07000025
    1808 #define FX_LEDGE2                                0x07000026
    1809 #define FX_BRIEFOFF                              0x07000027
    1810 #define FX_BRIEFON                               0x07000028
    1811 #define FX_JUMPIN                                0x07000029
    1812 #define FX_WARDIN                                0x0700002A
    1813 #define FX_WARDOUT                               0x0700002B
    1814 #define FX_CLIMBIN                               0x0700002C
    1815 #define FX_CLIMBOUT                              0x0700002D
     1770#define FX_BIRD                                  {0x07,0x00,0x00}
     1771#define FX_BIRD2                                 {0x07,0x01,0x01}
     1772#define FX_CARLTON                               {0x07,0x02,0x02}
     1773#define FX_CARS                                  {0x07,0x03,0x03}
     1774#define FX_DOORTRY                               {0x07,0x04,0x04}
     1775#define FX_FIESTA                                {0x07,0x05,0x05}
     1776#define FX_FLATDOOR                              {0x07,0x06,0x06}
     1777#define FX_HVYVEHR                               {0x07,0x07,0xFF}
     1778#define FX_HVYVEHL                               {0x07,0x08,0xFF}
     1779#define FX_LITEVEHR                              {0x07,0x09,0xFF}
     1780#define FX_LITEVEHL                              {0x07,0x0A,0xFF}
     1781#define FX_FONEUP                                {0x07,0x0B,0x07}
     1782#define FX_FONEDN                                {0x07,0x0C,0x08}
     1783#define FX_GEOCCH                                {0x07,0x0D,0x09}
     1784#define FX_GEOCHAIR                              {0x07,0x0E,0x0A}
     1785#define FX_GEOCHR9                               {0x07,0x0F,0x0B}
     1786#define FX_NICOPEN                               {0x07,0x10,0x0D}
     1787#define FX_NICLOSE                               {0x07,0x11,0x0E}
     1788#define FX_PHONICO1                              {0x07,0x12,0x0F}
     1789#define FX_GRAMOFON                              {0x07,0x13,0x10}
     1790#define FX_SHOCK1                                {0x07,0x14,0x11}
     1791#define FX_WINDUP11                              {0x07,0x15,0x12}
     1792#define FX_FRISK                                 {0x07,0x16,0x13}
     1793#define FX_TRAFFIC3                              {0x07,0x17,0x14}
     1794#define FX_DESKBELL                              {0x07,0x18,0x15}
     1795#define FX_KEY13                                 {0x07,0x19,0xFF}
     1796#define FX_PAPER6                                {0x07,0x1A,0x16}
     1797#define FX_PHONEDN2                              {0x07,0x1B,0x17}
     1798#define FX_PHONEUP2                              {0x07,0x1C,0x18}
     1799#define FX_PIANO14                               {0x07,0x1D,0x19}
     1800#define FX_TRYDOR14                              {0x07,0x1E,0x1A}
     1801#define FX_CABCLOSE                              {0x07,0x1F,0x1B}
     1802#define FX_CABOPEN                               {0x07,0x20,0x1C}
     1803#define FX_DORCLOSE                              {0x07,0x21,0x1D}
     1804#define FX_WINDOPEN                              {0x07,0x22,0x1E}
     1805#define FX_COO                                   {0x07,0x23,0x1F}
     1806#define FX_COO2                                  {0x07,0x24,0x20}
     1807#define FX_LEDGE1                                {0x07,0x25,0x21}
     1808#define FX_LEDGE2                                {0x07,0x26,0x22}
     1809#define FX_BRIEFOFF                              {0x07,0x27,0x23}
     1810#define FX_BRIEFON                               {0x07,0x28,0x24}
     1811#define FX_JUMPIN                                {0x07,0x29,0x25}
     1812#define FX_WARDIN                                {0x07,0x2A,0x26}
     1813#define FX_WARDOUT                               {0x07,0x2B,0x27}
     1814#define FX_CLIMBIN                               {0x07,0x2C,0x28}
     1815#define FX_CLIMBOUT                              {0x07,0x2D,0x29}
    18161816        // 46 entities in TXTs, 46 in datafiles.
    18171817        // room9
    18181818#define PARIS2_PAL                               0x07010000
    namespace Sword1 {  
    23492349        // 9 entities in TXTs, 9 in datafiles.
    23502350// paris_3
    23512351        // sound_fx
    2352 #define FX_MUESEXT                               0x08000000
    2353 #define FX_AIRCON28                              0x08000001
    2354 #define FX_SARCO28A                              0x08000002
    2355 #define FX_SARCO28B                              0x08000003
    2356 #define FX_SARCO28C                              0x08000004
    2357 #define FX_TOTEM28A                              0x08000005
    2358 #define FX_ALARM                                 0x08000006
    2359 #define FX_CARABINE                              0x08000007
    2360 #define FX_DOOR29                                0x08000008
    2361 #define FX_FISHFALL                              0x08000009
    2362 #define FX_GDROP29                               0x0800000A
    2363 #define FX_GUI_HIT                               0x0800000B
    2364 #define FX_GUN1                                  0x0800000C
    2365 #define FX_ROPEDOWN                              0x0800000D
    2366 #define FX_SARCO29                               0x0800000E
    2367 #define FX_SMASHGLA                              0x0800000F
    2368 #define FX_TOTEM29A                              0x08000010
    2369 #define FX_TOTEM29B                              0x08000011
    2370 #define FX_HOSPEXT                               0x08000012
    2371 #define FX_GRAVEL1                               0x08000013
    2372 #define FX_GRAVEL2                               0x08000014
    2373 #define FX_HOSPNOIS                              0x08000015
    2374 #define FX_CUPBOPEN                              0x08000016
    2375 #define FX_CUPBCLOS                              0x08000017
    2376 #define FX_KIKSHINY                              0x08000018
    2377 #define FX_SHINY                                 0x08000019
    2378 #define FX_SHINYOFF                              0x0800001A
    2379 #define FX_SHINYON                               0x0800001B
    2380 #define FX_BLOODPRE                              0x0800001C
    2381 #define FX_GUN34                                 0x0800001D
    2382 #define FX_PULSE2                                0x0800001E
    2383 #define FX_PULSE3                                0x0800001F
     2352#define FX_MUESEXT                               {0x08,0x00,0x00}
     2353#define FX_AIRCON28                              {0x08,0x01,0x01}
     2354#define FX_SARCO28A                              {0x08,0x02,0x02}
     2355#define FX_SARCO28B                              {0x08,0x03,0x03}
     2356#define FX_SARCO28C                              {0x08,0x04,0x04}
     2357#define FX_TOTEM28A                              {0x08,0x05,0x05}
     2358#define FX_ALARM                                 {0x08,0x06,0x06}
     2359#define FX_CARABINE                              {0x08,0x07,0x07}
     2360#define FX_DOOR29                                {0x08,0x08,0x08}
     2361#define FX_FISHFALL                              {0x08,0x09,0x09}
     2362#define FX_GDROP29                               {0x08,0x0A,0x0A}
     2363#define FX_GUI_HIT                               {0x08,0x0B,0x0B}
     2364#define FX_GUN1                                  {0x08,0x0C,0x0C}
     2365#define FX_ROPEDOWN                              {0x08,0x0D,0x0D}
     2366#define FX_SARCO29                               {0x08,0x0E,0x0E}
     2367#define FX_SMASHGLA                              {0x08,0x0F,0x0F}
     2368#define FX_TOTEM29A                              {0x08,0x10,0x10}
     2369#define FX_TOTEM29B                              {0x08,0x11,0x11}
     2370#define FX_HOSPEXT                               {0x08,0x12,0x12}
     2371#define FX_GRAVEL1                               {0x08,0x13,0x13}
     2372#define FX_GRAVEL2                               {0x08,0x14,0x14}
     2373#define FX_HOSPNOIS                              {0x08,0x15,0x15}
     2374#define FX_CUPBOPEN                              {0x08,0x16,0x16}
     2375#define FX_CUPBCLOS                              {0x08,0x17,0x17}
     2376#define FX_KIKSHINY                              {0x08,0x18,0xFF}
     2377#define FX_SHINY                                 {0x08,0x19,0x18}
     2378#define FX_SHINYOFF                              {0x08,0x1A,0x19}
     2379#define FX_SHINYON                               {0x08,0x1B,0x1A}
     2380#define FX_BLOODPRE                              {0x08,0x1C,0x1B}
     2381#define FX_GUN34                                 {0x08,0x1D,0x1C}
     2382#define FX_PULSE2                                {0x08,0x1E,0x1D}
     2383#define FX_PULSE3                                {0x08,0x1F,0x1E}
    23842384        // 32 entities in TXTs, 32 in datafiles.
    23852385        // benoir
    23862386#define MEGABEN                                  0x08010000
    namespace Sword1 {  
    27942794        // 30 entities in TXTs, 30 in datafiles.
    27952795// paris_4
    27962796        // sound_fx
    2797 #define FX_COVDWN                                0x09000000
    2798 #define FX_KEYIN                                 0x09000001
    2799 #define FX_MANOP36                               0x09000002
    2800 #define FX_MONTAMB                               0x09000003
    2801 #define FX_OOH                                   0x09000004
    2802 #define FX_PULLUP36                              0x09000005
    2803 #define FX_REPLCE36                              0x09000006
    2804 #define FX_AMBIEN37                              0x09000007
    2805 #define FX_CHAIN37                               0x09000008
    2806 #define FX_CHAIN37B                              0x09000009
    2807 #define FX_DOOR37                                0x0900000A
    2808 #define FX_HOLE37                                0x0900000B
    2809 #define FX_KNOCK37                               0x0900000C
    2810 #define FX_KNOCK37B                              0x0900000D
    2811 #define FX_WINCH37                               0x0900000E
    2812 #define FX_AIRCON41                              0x0900000F
    2813 #define FX_FONEDN41                              0x09000010
    2814 #define FX_FONEUP41                              0x09000011
    2815 #define FX_PHONCALL                              0x09000012
    2816 #define FX_THERMO1                               0x09000013
    2817 #define FX_TAPDRIP                               0x09000014
    2818 #define FX_DRIER1                                0x09000015
    2819 #define FX_CHURCHFX                              0x09000016
     2797#define FX_COVDWN                                {0x09,0x00,0xFF}
     2798#define FX_KEYIN                                 {0x09,0x01,0xFF}
     2799#define FX_MANOP36                               {0x09,0x02,0x00}
     2800#define FX_MONTAMB                               {0x09,0x03,0x01}
     2801#define FX_OOH                                   {0x09,0x04,0x02}
     2802#define FX_PULLUP36                              {0x09,0x05,0x03}
     2803#define FX_REPLCE36                              {0x09,0x06,0x04}
     2804#define FX_AMBIEN37                              {0x09,0x07,0x05}
     2805#define FX_CHAIN37                               {0x09,0x08,0x06}
     2806#define FX_CHAIN37B                              {0x09,0x09,0x06}
     2807#define FX_DOOR37                                {0x09,0x0A,0x07}
     2808#define FX_HOLE37                                {0x09,0x0B,0x08}
     2809#define FX_KNOCK37                               {0x09,0x0C,0x09}
     2810#define FX_KNOCK37B                              {0x09,0x0D,0x0A}
     2811#define FX_WINCH37                               {0x09,0x0E,0x0B}
     2812#define FX_AIRCON41                              {0x09,0x0F,0x0C}
     2813#define FX_FONEDN41                              {0x09,0x10,0x0D}
     2814#define FX_FONEUP41                              {0x09,0x11,0x0E}
     2815#define FX_PHONCALL                              {0x09,0x12,0x0F}
     2816#define FX_THERMO1                               {0x09,0x13,0x10}
     2817#define FX_TAPDRIP                               {0x09,0x14,0xFF}
     2818#define FX_DRIER1                                {0x09,0x15,0x11}
     2819#define FX_CHURCHFX                              {0x09,0x16,0x12}
    28202820        // 23 entities in TXTs, 23 in datafiles.
    28212821        // room36
    28222822#define R36SPRPAL                                0x09010000
    namespace Sword1 {  
    33023302        // 39 entities in TXTs, 39 in datafiles.
    33033303// ireland
    33043304        // sound_fx
    3305 #define FX_EIRBIRD3                              0x0A000000
    3306 #define FX_SHOCK2                                0x0A000001
    3307 #define FX_EIRBIRD1                              0x0A000002
    3308 #define FX_EIRBIRD2                              0x0A000003
    3309 #define FX_SWITCH19                              0x0A000004
    3310 #define FX_TRAPOPEN                              0x0A000005
    3311 #define FX_VIOLIN19                              0x0A000006
    3312 #define FX_WHISTLE                               0x0A000007
    3313 #define FX_BARFLAP                               0x0A000008
    3314 #define FX_DORCLOSE20                    0x0A000009
    3315 #define FX_DRINK                                 0x0A00000A
    3316 #define FX_FITZHIT                               0x0A00000B
    3317 #define FX_FITZRUN                               0x0A00000C
    3318 #define FX_FITZUP                                0x0A00000D
    3319 #define FX_FUSE20                                0x0A00000E
    3320 #define FX_PULLPINT                              0x0A00000F
    3321 #define FX_SNEEZE1                               0x0A000010
    3322 #define FX_SNEEZE2                               0x0A000011
    3323 #define FX_WASHER                                0x0A000012
    3324 #define FX_CELTAP                                0x0A000013
    3325 #define FX_DRIPIRE                               0x0A000014
    3326 #define FX_DRIPIRE2                              0x0A000015
    3327 #define FX_TAP                                   0x0A000016
    3328 #define FX_TAP2                                  0x0A000017
    3329 #define FX_CLIMBHAY                              0x0A000018
    3330 #define FX_FARMERGO                              0x0A000019
    3331 #define FX_CASTLWAL                              0x0A00001A
    3332 #define FX_CLIMBFAL                              0x0A00001B
    3333 #define FX_KEYSTEP                               0x0A00001C
    3334 #define FX_WIND                                  0x0A00001D
    3335 #define FX_GEOGOAT                               0x0A00001E
    3336 #define FX_GOATBAA                               0x0A00001F
    3337 #define FX_GOATCHEW                              0x0A000020
    3338 #define FX_GOATDOH                               0x0A000021
    3339 #define FX_PLOUGH                                0x0A000022
    3340 #define FX_EIRDRIP1                              0x0A000023
    3341 #define FX_EIRDRIP2                              0x0A000024
    3342 #define FX_LADDWN25                              0x0A000025
    3343 #define FX_LADDUP25                              0x0A000026
    3344 #define FX_SECDOR25                              0x0A000027
    3345 #define FX_SLABFALL                              0x0A000028
    3346 #define FX_SLABUP                                0x0A000029
    3347 #define FX_TRIGER25                              0x0A00002A
    3348 #define FX_WRING                                 0x0A00002B
    3349 #define FX_LEVER                                 0x0A00002C
    3350 #define FX_LEVER2                                0x0A00002D
    3351 #define FX_RAT3A                                 0x0A00002E
    3352 #define FX_RAT3B                                 0x0A00002F
    3353 #define FX_RAT3C                                 0x0A000030
    3354 #define FX_RAT3D                                 0x0A000031
     3305#define FX_EIRBIRD3                              {0x0A,0x00,0x00}
     3306#define FX_SHOCK2                                {0x0A,0x01,0x01}
     3307#define FX_EIRBIRD1                              {0x0A,0x02,0x02}
     3308#define FX_EIRBIRD2                              {0x0A,0x03,0x03}
     3309#define FX_SWITCH19                              {0x0A,0x04,0x04}
     3310#define FX_TRAPOPEN                              {0x0A,0x05,0x05}
     3311#define FX_VIOLIN19                              {0x0A,0x06,0x06}
     3312#define FX_WHISTLE                               {0x0A,0x07,0x07}
     3313#define FX_BARFLAP                               {0x0A,0x08,0x08}
     3314#define FX_DORCLOSE20                    {0x0A,0x09,0x09}
     3315#define FX_DRINK                                 {0x0A,0x0A,0x0A}
     3316#define FX_FITZHIT                               {0x0A,0x0B,0x0B}
     3317#define FX_FITZRUN                               {0x0A,0x0C,0x0C}
     3318#define FX_FITZUP                                {0x0A,0x0D,0x0D}
     3319#define FX_FUSE20                                {0x0A,0x0E,0x0E}
     3320#define FX_PULLPINT                              {0x0A,0x0F,0x0F}
     3321#define FX_SNEEZE1                               {0x0A,0x10,0xFF}
     3322#define FX_SNEEZE2                               {0x0A,0x11,0xFF}
     3323#define FX_WASHER                                {0x0A,0x12,0x10}
     3324#define FX_CELTAP                                {0x0A,0x13,0x11}
     3325#define FX_DRIPIRE                               {0x0A,0x14,0xFF}
     3326#define FX_DRIPIRE2                              {0x0A,0x15,0xFF}
     3327#define FX_TAP                                   {0x0A,0x16,0x12}
     3328#define FX_TAP2                                  {0x0A,0x17,0x13}
     3329#define FX_CLIMBHAY                              {0x0A,0x18,0x14}
     3330#define FX_FARMERGO                              {0x0A,0x19,0x15}
     3331#define FX_CASTLWAL                              {0x0A,0x1A,0x16}
     3332#define FX_CLIMBFAL                              {0x0A,0x1B,0x17}
     3333#define FX_KEYSTEP                               {0x0A,0x1C,0x18}
     3334#define FX_WIND                                  {0x0A,0x1D,0x19}
     3335#define FX_GEOGOAT                               {0x0A,0x1E,0x1A}
     3336#define FX_GOATBAA                               {0x0A,0x1F,0x1B}
     3337#define FX_GOATCHEW                              {0x0A,0x20,0x1C}
     3338#define FX_GOATDOH                               {0x0A,0x21,0x1D}
     3339#define FX_PLOUGH                                {0x0A,0x22,0x1E}
     3340#define FX_EIRDRIP1                              {0x0A,0x23,0xFF}
     3341#define FX_EIRDRIP2                              {0x0A,0x24,0xFF}
     3342#define FX_LADDWN25                              {0x0A,0x25,0xFF}
     3343#define FX_LADDUP25                              {0x0A,0x26,0xFF}
     3344#define FX_SECDOR25                              {0x0A,0x27,0x21}
     3345#define FX_SLABFALL                              {0x0A,0x28,0x22}
     3346#define FX_SLABUP                                {0x0A,0x29,0x23}
     3347#define FX_TRIGER25                              {0x0A,0x2A,0x24}
     3348#define FX_WRING                                 {0x0A,0x2B,0x25}
     3349#define FX_LEVER                                 {0x0A,0x2C,0x26}
     3350#define FX_LEVER2                                {0x0A,0x2D,0x27}
     3351#define FX_RAT3A                                 {0x0A,0x2E,0x28}
     3352#define FX_RAT3B                                 {0x0A,0x2F,0x28}
     3353#define FX_RAT3C                                 {0x0A,0x30,0x28}
     3354#define FX_RAT3D                                 {0x0A,0x31,0x28}
    33553355        // 50 entities in TXTs, 50 in datafiles.
    33563356        // room19
    33573357#define R19SPRPAL                                0x0A010000
    namespace Sword1 {  
    38113811        // 16 entities in TXTs, 16 in datafiles.
    38123812// spain
    38133813        // sound_fx
    3814 #define FX_SPNBIRD1                              0x0B000000
    3815 #define FX_SPNBIRD2                              0x0B000001
    3816 #define FX_AMBIEN56                              0x0B000002
    3817 #define FX_DOGS56                                0x0B000003
    3818 #define FX_PENDULUM                              0x0B000004
    3819 #define FX_CANFALL                               0x0B000005
    3820 #define FX_HOSE57                                0x0B000006
    3821 #define FX_HOSE57B                               0x0B000007
    3822 #define FX_SPAIN                                 0x0B000008
    3823 #define FX_CHESS                                 0x0B000009
    3824 #define FX_SECDOR59                              0x0B00000A
    3825 #define FX_WINDOW59                              0x0B00000B
    3826 #define FX_LIONFALL                              0x0B00000C
    3827 #define FX_LIONFAL2                              0x0B00000D
    3828 #define FX_TOOTHPUL                              0x0B00000E
    3829 #define FX_SECDOR61                              0x0B00000F
    3830 #define FX_WELLDRIP                              0x0B000010
     3814#define FX_SPNBIRD1                              {0x0B,0x00,0x00}
     3815#define FX_SPNBIRD2                              {0x0B,0x01,0x01}
     3816#define FX_AMBIEN56                              {0x0B,0x02,0x02}
     3817#define FX_DOGS56                                {0x0B,0x03,0x03}
     3818#define FX_PENDULUM                              {0x0B,0x04,0x04}
     3819#define FX_CANFALL                               {0x0B,0x05,0x05}
     3820#define FX_HOSE57                                {0x0B,0x06,0x06}
     3821#define FX_HOSE57B                               {0x0B,0x07,0x07}
     3822#define FX_SPAIN                                 {0x0B,0x08,0x08}
     3823#define FX_CHESS                                 {0x0B,0x09,0x09}
     3824#define FX_SECDOR59                              {0x0B,0x0A,0xFF}
     3825#define FX_WINDOW59                              {0x0B,0x0B,0xFF}
     3826#define FX_LIONFALL                              {0x0B,0x0C,0x0B}
     3827#define FX_LIONFAL2                              {0x0B,0x0D,0x0C}
     3828#define FX_TOOTHPUL                              {0x0B,0x0E,0x0D}
     3829#define FX_SECDOR61                              {0x0B,0x0F,0x0E}
     3830#define FX_WELLDRIP                              {0x0B,0x10,0x0F}
    38313831        // 17 entities in TXTs, 17 in datafiles.
    38323832        // room56
    38333833#define SPAIN_PAL                                0x0B010000
    namespace Sword1 {  
    41864186        // 8 entities in TXTs, 8 in datafiles.
    41874187// syria
    41884188        // sound_fx
    4189 #define FX_CAMERA45                              0x0C000000
    4190 #define FX_SHOCK3                                0x0C000001
    4191 #define FX_STALLBEL                              0x0C000002
    4192 #define FX_AYUBDOOR                              0x0C000003
    4193 #define FX_BALLPLAY                              0x0C000004
    4194 #define FX_CATHIT                                0x0C000005
    4195 #define FX_MARIB                                 0x0C000006
    4196 #define FX_NEWTON                                0x0C000007
    4197 #define FX_STALLCAT                              0x0C000008
    4198 #define FX_STATBREK                              0x0C000009
    4199 #define FX_KEYS49                                0x0C00000A
    4200 #define FX_MANG1                                 0x0C00000B
    4201 #define FX_MANG2                                 0x0C00000C
    4202 #define FX_MANG3                                 0x0C00000D
    4203 #define FX_UNLOCK49                              0x0C00000E
    4204 #define FX_WCCHAIN                               0x0C00000F
    4205 #define FX_CUBDOR                                0x0C000010
    4206 #define FX_BREKSTIK                              0x0C000011
    4207 #define FX_CLIMBDWN                              0x0C000012
    4208 #define FX_CRICKET                               0x0C000013
    4209 #define FX_GEOFAL54                              0x0C000014
    4210 #define FX_KHANDOWN                              0x0C000015
    4211 #define FX_RINGPULL                              0x0C000016
    4212 #define FX_SECDOR54                              0x0C000017
    4213 #define FX_SHOTKHAN                              0x0C000018
    4214 #define FX_SYRIWIND                              0x0C000019
    4215 #define FX_THUMP1                                0x0C00001A
    4216 #define FX_SECDOR55                              0x0C00001B
     4189#define FX_CAMERA45                              {0x0C,0x00,0xFF}
     4190#define FX_SHOCK3                                {0x0C,0x01,0x00}
     4191#define FX_STALLBEL                              {0x0C,0x02,0x01}
     4192#define FX_AYUBDOOR                              {0x0C,0x03,0x02}
     4193#define FX_BALLPLAY                              {0x0C,0x04,0x03}
     4194#define FX_CATHIT                                {0x0C,0x05,0x04}
     4195#define FX_MARIB                                 {0x0C,0x06,0x05}
     4196#define FX_NEWTON                                {0x0C,0x07,0x06}
     4197#define FX_STALLCAT                              {0x0C,0x08,0x07}
     4198#define FX_STATBREK                              {0x0C,0x09,0x08}
     4199#define FX_KEYS49                                {0x0C,0x0A,0x09}
     4200#define FX_MANG1                                 {0x0C,0x0B,0x0A}
     4201#define FX_MANG2                                 {0x0C,0x0C,0x0B}
     4202#define FX_MANG3                                 {0x0C,0x0D,0x0C}
     4203#define FX_UNLOCK49                              {0x0C,0x0E,0x0D}
     4204#define FX_WCCHAIN                               {0x0C,0x0F,0x0E}
     4205#define FX_CUBDOR                                {0x0C,0x10,0x0F}
     4206#define FX_BREKSTIK                              {0x0C,0x11,0x10}
     4207#define FX_CLIMBDWN                              {0x0C,0x12,0x11}
     4208#define FX_CRICKET                               {0x0C,0x13,0x12}
     4209#define FX_GEOFAL54                              {0x0C,0x14,0x13}
     4210#define FX_KHANDOWN                              {0x0C,0x15,0x14}
     4211#define FX_RINGPULL                              {0x0C,0x16,0x15}
     4212#define FX_SECDOR54                              {0x0C,0x17,0x16}
     4213#define FX_SHOTKHAN                              {0x0C,0x18,0x17}
     4214#define FX_SYRIWIND                              {0x0C,0x19,0x18}
     4215#define FX_THUMP1                                {0x0C,0x1A,0x19}
     4216#define FX_SECDOR55                              {0x0C,0x1B,0x1A}
    42174217        // 28 entities in TXTs, 28 in datafiles.
    42184218        // duane
    42194219#define DUANE_MEGA                               0x0C010000
    namespace Sword1 {  
    45784578        // 37 entities in TXTs, 37 in datafiles.
    45794579// train
    45804580        // sound_fx
    4581 #define FX_SHOCK63                               0x0D000000
    4582 #define FX_TRAINEXT                              0x0D000001
    4583 #define FX_TRAININT                              0x0D000002
    4584 #define FX_DOOR65                                0x0D000003
    4585 #define FX_WIND66                                0x0D000004
    4586 #define FX_WINDOW66                              0x0D000005
    4587 #define FX_BRAKES                                0x0D000006
    4588 #define FX_DOOR69                                0x0D000007
    4589 #define FX_EKSHOOT                               0x0D000008
    4590 #define FX_FIGHT69                               0x0D000009
    4591 #define FX_PNEUMO69                              0x0D00000A
    4592 #define FX_TICK69                                0x0D00000B
    4593 #define FX_TRNPASS                               0x0D00000C
     4581#define FX_SHOCK63                               {0x0D,0x00,0x00}
     4582#define FX_TRAINEXT                              {0x0D,0x01,0x01}
     4583#define FX_TRAININT                              {0x0D,0x02,0x02}
     4584#define FX_DOOR65                                {0x0D,0x03,0x03}
     4585#define FX_WIND66                                {0x0D,0x04,0x04}
     4586#define FX_WINDOW66                              {0x0D,0x05,0x05}
     4587#define FX_BRAKES                                {0x0D,0x06,0x06}
     4588#define FX_DOOR69                                {0x0D,0x07,0x07}
     4589#define FX_EKSHOOT                               {0x0D,0x08,0x08}
     4590#define FX_FIGHT69                               {0x0D,0x09,0xFF}
     4591#define FX_PNEUMO69                              {0x0D,0x0A,0x09}
     4592#define FX_TICK69                                {0x0D,0x0B,0x0A}
     4593#define FX_TRNPASS                               {0x0D,0x0C,0x0B}
    45944594        // 13 entities in TXTs, 13 in datafiles.
    45954595        // room63
    45964596#define TRAIN_PAL                                0x0D010000
    namespace Sword1 {  
    48284828        // 57 entities in TXTs, 57 in datafiles.
    48294829// scotland
    48304830        // sound_fx
    4831 #define FX_WIND71                                0x0E000000
    4832 #define FX_GUST71                                0x0E000001
    4833 #define FX_OWL71A                                0x0E000002
    4834 #define FX_OWL71B                                0x0E000003
    4835 #define FX_COG72A                                0x0E000004
    4836 #define FX_PING                                  0x0E000005
    4837 #define FX_RUMMAGE1                              0x0E000006
    4838 #define FX_RUMMAGE2                              0x0E000007
    4839 #define FX_SECDOR72                              0x0E000008
    4840 #define FX_CHANT                                 0x0E000009
    4841 #define FX_DAGGER1                               0x0E00000A
    4842 #define FX_GDROP73                               0x0E00000B
    4843 #define FX_GUNPOWDR                              0x0E00000C
    4844 #define FX_STAFF                                 0x0E00000D
    4845 #define FX_TORCH73                               0x0E00000E
    4846 #define FX_BAPHAMB                               0x0E00000F
    4847 #define FX_FIGHT1                                0x0E000010
    4848 #define FX_REFORGE2                              0x0E000011
    4849 #define FX_ROSSODIE                              0x0E000012
    4850 #define FX_GKSWORD                               0x0E000013
    4851 #define FX_REFORGE1                              0x0E000014
    4852 #define FX_REFORGE4                              0x0E000015
    4853 #define FX_CHOKE1                                0x0E000016
    4854 #define FX_CHOKE2                                0x0E000017
    4855 #define FX_EKDIES                                0x0E000018
    4856 #define FX_FIGHT2                                0x0E000019
    4857 #define FX_GUN79                                 0x0E00001A
     4831#define FX_WIND71                                {0x0E,0x00,0x00}
     4832#define FX_GUST71                                {0x0E,0x01,0x01}
     4833#define FX_OWL71A                                {0x0E,0x02,0x02}
     4834#define FX_OWL71B                                {0x0E,0x03,0x03}
     4835#define FX_COG72A                                {0x0E,0x04,0x04}
     4836#define FX_PING                                  {0x0E,0x05,0x05}
     4837#define FX_RUMMAGE1                              {0x0E,0x06,0x06}
     4838#define FX_RUMMAGE2                              {0x0E,0x07,0x07}
     4839#define FX_SECDOR72                              {0x0E,0x08,0x08}
     4840#define FX_CHANT                                 {0x0E,0x09,0xFF}
     4841#define FX_DAGGER1                               {0x0E,0x0A,0x09}
     4842#define FX_GDROP73                               {0x0E,0x0B,0xFF}
     4843#define FX_GUNPOWDR                              {0x0E,0x0C,0x0A}
     4844#define FX_STAFF                                 {0x0E,0x0D,0xFF}
     4845#define FX_TORCH73                               {0x0E,0x0E,0x0B}
     4846#define FX_BAPHAMB                               {0x0E,0x0F,0xFF}
     4847#define FX_FIGHT1                                {0x0E,0x10,0xFF}
     4848#define FX_REFORGE2                              {0x0E,0x11,0xFF}
     4849#define FX_ROSSODIE                              {0x0E,0x12,0x0C}
     4850#define FX_GKSWORD                               {0x0E,0x13,0xFF}
     4851#define FX_REFORGE1                              {0x0E,0x14,0xFF}
     4852#define FX_REFORGE4                              {0x0E,0x15,0xFF}
     4853#define FX_CHOKE1                                {0x0E,0x16,0x0D}
     4854#define FX_CHOKE2                                {0x0E,0x17,0x0E}
     4855#define FX_EKDIES                                {0x0E,0x18,0xFF}
     4856#define FX_FIGHT2                                {0x0E,0x19,0x0F}
     4857#define FX_GUN79                                 {0x0E,0x1A,0x10}
    48584858        // 27 entities in TXTs, 27 in datafiles.
    48594859        // room71
    48604860#define R71L0                                    0x0E010000