From b5d8f469b6be67e3b02b753278f40b4fa184165a Mon Sep 17 00:00:00 2001 From: Jamieson Christian Date: Sat, 28 Dec 2002 14:40:56 +0000 Subject: Separated IMuseDigital into its own files. svn-id: r6229 --- scumm.dsp | 925 +++++++++++++++++++++++++++---------------------------- scumm/imuse.cpp | 930 -------------------------------------------------------- scumm/imuse.h | 64 +--- scumm/module.mk | 1 + 4 files changed, 470 insertions(+), 1450 deletions(-) diff --git a/scumm.dsp b/scumm.dsp index 224c52036c..e63714db16 100644 --- a/scumm.dsp +++ b/scumm.dsp @@ -1,458 +1,467 @@ -# Microsoft Developer Studio Project File - Name="scumm" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=scumm - Win32 MP3 Enabled Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "scumm.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "scumm.mak" CFG="scumm - Win32 MP3 Enabled Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "scumm - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "scumm - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "scumm - Win32 MP3 Enabled Debug" (based on "Win32 (x86) Static Library") -!MESSAGE "scumm - Win32 MP3 Enabled Release" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "scumm - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "scumm___Release" -# PROP Intermediate_Dir "scumm___Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c -# ADD CPP /nologo /G6 /MT /W3 /WX /Zi /O2 /I "." /I "common" /I "scumm" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "BYPASS_COPY_PROT" /YX /FD /c -# ADD BASE RSC /l 0x415 /d "NDEBUG" -# ADD RSC /l 0x415 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "scumm - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "scumm___Win32_Debug" -# PROP BASE Intermediate_Dir "scumm___Win32_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "scumm___Debug" -# PROP Intermediate_Dir "scumm___Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /WX /Gm /GX /Zi /Od /I "." /I "common" /I "scumm" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "BYPASS_COPY_PROT" /D "USE_ADLIB" /D "DUMP_SCRIPTS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x415 /d "_DEBUG" -# ADD RSC /l 0x415 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "scumm - Win32 MP3 Enabled Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "scumm___Win32_MP3_Enabled_Debug" -# PROP BASE Intermediate_Dir "scumm___Win32_MP3_Enabled_Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "scumm___MP3_Enabled_Debug" -# PROP Intermediate_Dir "scumm___MP3_Enabled_Debug" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /I "common" /I "scumm" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "BYPASS_COPY_PROT" /D "USE_ADLIB" /D "DUMP_SCRIPTS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /WX /Gm /GX /Zi /Od /I "." /I "common" /I "scumm" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "BYPASS_COPY_PROT" /D "USE_MAD" /D "DUMP_SCRIPTS" /YX /FD /GZ /c -# ADD BASE RSC /l 0x415 /d "_DEBUG" -# ADD RSC /l 0x415 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "scumm - Win32 MP3 Enabled Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "scumm___Win32_MP3_Enabled_Release" -# PROP BASE Intermediate_Dir "scumm___Win32_MP3_Enabled_Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "scumm___MP3_Enabled_Release" -# PROP Intermediate_Dir "scumm___MP3_Enabled_Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /I "." /I "common" /I "scumm" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "DUMP_SCRIPTS" /YX /FD /c -# ADD CPP /nologo /G6 /MD /W3 /WX /GX /Zi /O2 /I "." /I "common" /I "scumm" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "BYPASS_COPY_PROT" /D "USE_MAD" /YX /FD /c -# ADD BASE RSC /l 0x415 /d "NDEBUG" -# ADD RSC /l 0x415 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "scumm - Win32 Release" -# Name "scumm - Win32 Debug" -# Name "scumm - Win32 MP3 Enabled Debug" -# Name "scumm - Win32 MP3 Enabled Release" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Group "smush" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\scumm\smush\blitter.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\blitter.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\brenderer.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\brenderer.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\channel.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\chunk.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\chunk.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\chunk_type.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec1.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec1.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec37.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec37.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec44.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec44.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec47.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\codec47.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\color.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\color.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\config.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\decoder.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\frenderer.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\frenderer.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\imuse_channel.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\mixer.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\palette.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\player.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\player.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\renderer.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\saud_channel.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\scumm_renderer.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\smush\scumm_renderer.h -# End Source File -# End Group -# Begin Source File - -SOURCE=.\scumm\actor.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\actor.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\akos.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\akos.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\boxes.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\boxes.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\bundle.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\bundle.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\charset.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\charset.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\costume.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\costume.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\debugger.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\debugger.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\debugrl.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\debugrl.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\dialogs.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\dialogs.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\gfx.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\gfx.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\imuse.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\imuse.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\instrument.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\instrument.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\intern.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\nut_renderer.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\nut_renderer.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\object.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\object.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\resource.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\resource.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\resource_v2.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\resource_v3.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\resource_v4.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\saveload.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\saveload.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\script.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\script_v5.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\script_v6.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\script_v8.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\scumm.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\scummvm.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\sound.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\sound.h -# End Source File -# Begin Source File - -SOURCE=.\scumm\string.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\vars.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\verbs.cpp -# End Source File -# Begin Source File - -SOURCE=.\scumm\verbs.h -# End Source File -# End Group -# End Target -# End Project +# Microsoft Developer Studio Project File - Name="scumm" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=scumm - Win32 MP3 Enabled Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "scumm.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "scumm.mak" CFG="scumm - Win32 MP3 Enabled Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "scumm - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "scumm - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "scumm - Win32 MP3 Enabled Debug" (based on "Win32 (x86) Static Library") +!MESSAGE "scumm - Win32 MP3 Enabled Release" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "scumm - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "scumm___Release" +# PROP Intermediate_Dir "scumm___Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /G6 /MT /W3 /WX /Zi /O2 /I "." /I "common" /I "scumm" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "BYPASS_COPY_PROT" /YX /FD /c +# ADD BASE RSC /l 0x415 /d "NDEBUG" +# ADD RSC /l 0x415 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "scumm - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "scumm___Win32_Debug" +# PROP BASE Intermediate_Dir "scumm___Win32_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "scumm___Debug" +# PROP Intermediate_Dir "scumm___Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /WX /Gm /GX /Zi /Od /I "." /I "common" /I "scumm" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "BYPASS_COPY_PROT" /D "USE_ADLIB" /D "DUMP_SCRIPTS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x415 /d "_DEBUG" +# ADD RSC /l 0x415 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "scumm - Win32 MP3 Enabled Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "scumm___Win32_MP3_Enabled_Debug" +# PROP BASE Intermediate_Dir "scumm___Win32_MP3_Enabled_Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "scumm___MP3_Enabled_Debug" +# PROP Intermediate_Dir "scumm___MP3_Enabled_Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /I "common" /I "scumm" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "BYPASS_COPY_PROT" /D "USE_ADLIB" /D "DUMP_SCRIPTS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /WX /Gm /GX /Zi /Od /I "." /I "common" /I "scumm" /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "BYPASS_COPY_PROT" /D "USE_MAD" /D "DUMP_SCRIPTS" /YX /FD /GZ /c +# ADD BASE RSC /l 0x415 /d "_DEBUG" +# ADD RSC /l 0x415 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "scumm - Win32 MP3 Enabled Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "scumm___Win32_MP3_Enabled_Release" +# PROP BASE Intermediate_Dir "scumm___Win32_MP3_Enabled_Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "scumm___MP3_Enabled_Release" +# PROP Intermediate_Dir "scumm___MP3_Enabled_Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /I "." /I "common" /I "scumm" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "DUMP_SCRIPTS" /YX /FD /c +# ADD CPP /nologo /G6 /MD /W3 /WX /GX /Zi /O2 /I "." /I "common" /I "scumm" /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /D "USE_ADLIB" /D "BYPASS_COPY_PROT" /D "USE_MAD" /YX /FD /c +# ADD BASE RSC /l 0x415 /d "NDEBUG" +# ADD RSC /l 0x415 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "scumm - Win32 Release" +# Name "scumm - Win32 Debug" +# Name "scumm - Win32 MP3 Enabled Debug" +# Name "scumm - Win32 MP3 Enabled Release" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Group "smush" + +# PROP Default_Filter "" +# Begin Source File + +SOURCE=.\scumm\smush\blitter.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\blitter.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\brenderer.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\brenderer.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\channel.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\chunk.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\chunk.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\chunk_type.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec1.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec1.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec37.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec37.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec44.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec44.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec47.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\codec47.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\color.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\color.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\config.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\decoder.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\frenderer.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\frenderer.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\imuse_channel.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\mixer.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\palette.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\player.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\player.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\renderer.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\saud_channel.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\scumm_renderer.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\smush\scumm_renderer.h +# End Source File +# End Group +# Begin Source File + +SOURCE=.\scumm\actor.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\actor.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\akos.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\akos.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\boxes.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\boxes.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\bundle.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\bundle.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\charset.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\charset.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\costume.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\costume.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\debugger.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\debugger.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\debugrl.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\debugrl.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\dialogs.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\dialogs.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\gfx.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\gfx.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\imuse.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\imuse.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\imuse_digi.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\imuse_digi.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\instrument.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\instrument.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\intern.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\nut_renderer.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\nut_renderer.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\object.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\object.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\resource.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\resource.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\resource_v2.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\resource_v3.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\resource_v4.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\saveload.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\saveload.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\script.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\script_v5.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\script_v6.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\script_v8.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\scumm.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\scummvm.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\sound.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\sound.h +# End Source File +# Begin Source File + +SOURCE=.\scumm\string.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\vars.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\verbs.cpp +# End Source File +# Begin Source File + +SOURCE=.\scumm\verbs.h +# End Source File +# End Group +# End Target +# End Project + diff --git a/scumm/imuse.cpp b/scumm/imuse.cpp index a2ea7a4b75..bad1859448 100644 --- a/scumm/imuse.cpp +++ b/scumm/imuse.cpp @@ -3747,933 +3747,3 @@ IMuse *IMuse::create (OSystem *syst, MidiDriver *midi, SoundMixer *mixer) midi->property (MidiDriver::PROP_SMALLHEADER, (g_scumm->_features & GF_SMALL_HEADER) ? 1 : 0); return new IMuse (syst, engine); } - - - -//////////////////////////////////////// -// -// iMuse Digital Implementation -// for SCUMM v7 and higher -// -//////////////////////////////////////// - -static void imus_digital_handler(void *engine) { - // Avoid race condition - if(engine && ((Scumm *)engine)->_imuseDigital) - ((Scumm *)engine)->_imuseDigital->handler(); -} - -IMuseDigital::IMuseDigital(Scumm *scumm) { - memset(_channel, 0, sizeof(channel) * MAX_DIGITAL_CHANNELS); - _scumm = scumm; - for (int32 l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - _channel[l]._initialized = false; - } - _scumm->_mixer->beginSlots(MAX_DIGITAL_CHANNELS + 1); - _scumm->_timer->installProcedure(imus_digital_handler, 200); - _pause = false; -} - -IMuseDigital::~IMuseDigital() { - for (int32 l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - _scumm->_mixer->stop(l); - } - _scumm->_timer->releaseProcedure(imus_digital_handler); -} - -struct imuse_music_table { - int16 index; - char name[30]; - char title[30]; - char filename[15]; - int8 unk1; -}; - -struct imuse_music_map { - int16 room; - int16 table_index; - int16 unk1; - int16 unk2; - int16 unk3; - int16 unk4; -}; - -static const imuse_music_map _digStateMusicMap[] = { - {0, 0, 0, 0, 0, 0 }, - {1, 0, 0, 0, 0, 0 }, - {2, 2, 0, 0, 0, 0 }, - {3, 47, 0, 0, 0, 0 }, - {4, 3, 0, 0, 0, 0 }, - {5, 3, 0, 0, 0, 0 }, - {6, 3, 0, 0, 0, 0 }, - {7, 3, 0, 0, 0, 0 }, - {8, 4, 0, 0, 0, 0 }, - {9, 5, 0, 0, 0, 0 }, - {10, 4, 0, 0, 0, 0 }, - {11, 44, 0, 0, 0, 0 }, - {12, 5, 0, 0, 0, 0 }, - {13, 1, 0, 0, 0, 0 }, - {14, 5, 0, 0, 0, 0 }, - {15, 6, 29, 7, 0, 0 }, - {16, 8, 0, 0, 0, 0 }, - {17, 1, 0, 0, 0, 0 }, - {18, 9, 0, 0, 0, 0 }, - {19, 9, 0, 0, 0, 0 }, - {20, 6, 0, 0, 0, 0 }, - {21, 6, 0, 0, 0, 0 }, - {22, 44, 0, 0, 0, 0 }, - {23, 10, 7, 0, 0, 0 }, - {24, 26, 0, 0, 0, 0 }, - {25, 17, 0, 0, 0, 0 }, - {26, 17, 0, 0, 0, 0 }, - {27, 18, 0, 0, 0, 0 }, - {28, 1, 0, 0, 0, 0 }, - {29, 20, 0, 0, 0, 0 }, - {30, 22, 0, 0, 0, 0 }, - {31, 23, 0, 0, 0, 0 }, - {32, 22, 0, 0, 0, 0 }, - {33, 26, 0, 0, 0, 0 }, - {34, 24, 0, 0, 0, 0 }, - {35, 1, 0, 0, 0, 0 }, - {36, 1, 0, 0, 0, 0 }, - {37, 42, 0, 0, 0, 0 }, - {38, 43, 0, 0, 0, 0 }, - {39, 44, 0, 0, 0, 0 }, - {40, 1, 0, 0, 0, 0 }, - {41, 43, 0, 0, 0, 0 }, - {42, 44, 0, 0, 0, 0 }, - {43, 43, 0, 0, 0, 0 }, - {44, 45, 117,45, 114,26}, - {45, 1, 0, 0, 0, 0 }, - {46, 33, 6, 35, 5, 34}, - {47, 1, 0, 0, 0, 0 }, - {48, 43, 0, 0, 0, 0 }, - {49, 44, 0, 0, 0, 0 }, - {50, 1, 0, 0, 0, 0 }, - {51, 1, 0, 0, 0, 0 }, - {52, 0, 0, 0, 0, 0 }, - {53, 28, 0, 0, 0, 0 }, - {54, 28, 0, 0, 0, 0 }, - {55, 29, 0, 0, 0, 0 }, - {56, 29, 0, 0, 0, 0 }, - {57, 29, 0, 0, 0, 0 }, - {58, 31, 0, 0, 0, 0 }, - {59, 1, 0, 0, 0, 0 }, - {60, 37, 0, 0, 0, 0 }, - {61, 39, 0, 0, 0, 0 }, - {62, 38, 0, 0, 0, 0 }, - {63, 39, 0, 0, 0, 0 }, - {64, 39, 0, 0, 0, 0 }, - {65, 40, 0, 0, 0, 0 }, - {66, 1, 0, 0, 0, 0 }, - {67, 40, 0, 0, 0, 0 }, - {68, 39, 0, 0, 0, 0 }, - {69, 1, 0, 0, 0, 0 }, - {70, 49, 0, 0, 0, 0 }, - {71, 1, 0, 0, 0, 0 }, - {72, 1, 0, 0, 0, 0 }, - {73, 50, 0, 0, 0, 0 }, - {74, 1, 0, 0, 0, 0 }, - {75, 51, 0, 0, 0, 0 }, - {76, 1, 0, 0, 0, 0 }, - {77, 52, 7, 0, 0, 0 }, - {78, 63, 0, 0, 0, 0 }, - {79, 1, 0, 0, 0, 0 }, - {80, 41, 0, 0, 0, 0 }, - {81, 48, 0, 0, 0, 0 }, - {82, 21, 0, 0, 0, 0 }, - {83, 27, 0, 0, 0, 0 }, - {84, 1, 0, 0, 0, 0 }, - {85, 1, 0, 0, 0, 0 }, - {86, 0, 0, 0, 0, 0 }, - {87, 1, 0, 0, 0, 0 }, - {88, 32, 0, 0, 0, 0 }, - {89, 33, 6, 35, 5, 34}, - {90, 16, 0, 0, 0, 0 }, - {91, 57, 0, 0, 0, 0 }, - {92, 25, 0, 0, 0, 0 }, - {93, 0, 0, 0, 0, 0 }, - {94, 36, 0, 0, 0, 0 }, - {95, 19, 0, 0, 0, 0 }, - {96, 13, 0, 0, 0, 0 }, - {97, 14, 0, 0, 0, 0 }, - {98, 11, 0, 0, 0, 0 }, - {99, 15, 0, 0, 0, 0 }, - {100, 17, 0, 0, 0, 0 }, - {101, 38, 0, 0, 0, 0 }, - {102, 1, 0, 0, 0, 0 }, - {103, 0, 0, 0, 0, 0 }, - {104, 0, 0, 0, 0, 0 }, - {105, 30, 128,29, 0, 0 }, - {106, 0, 0, 0, 0, 0 }, - {107, 1, 0, 0, 0, 0 }, - {108, 1, 0, 0, 0, 0 }, - {109, 1, 0, 0, 0, 0 }, - {110, 2, 0, 0, 0, 0 }, - {111, 1, 0, 0, 0, 0 }, - {-1, 1, 0, 0, 0, 0 }, -}; - -static const imuse_music_table _digStateMusicTable[] = { - {0, "STATE_NULL", "", "", 0}, - {1, "stateNoChange", "", "", 0}, - {2, "stateAstShip", "Asteroid (amb-ship)", "ASTERO~1.IMU", 3}, - {3, "stateAstClose", "Asteroid (amb-close)", "ASTERO~2.IMU", 3}, - {4, "stateAstInside", "Asteroid (inside)", "ASTERO~3.IMU", 3}, - {5, "stateAstCore", "Asteroid (core)", "ASTERO~4.IMU", 3}, - {6, "stateCanyonClose", "Canyon (close)", "CANYON~1.IMU", 3}, - {7, "stateCanyonClose_m", "Canyon (close-m)", "CANYON~2.IMU", 3}, - {8, "stateCanyonOver", "Canyon (over)", "CANYON~3.IMU", 3}, - {9, "stateCanyonWreck", "Canyon (wreck)", "CANYON~4.IMU", 3}, - {10, "stateNexusCanyon", "Nexus (plan)", "NEXUS(~1.IMU", 3}, - {11, "stateNexusPlan", "Nexus (plan)", "NEXUS(~1.IMU", 3}, - {12, "stateNexusRamp", "Nexus (ramp)", "NEXUS(~2.IMU", 3}, - {13, "stateNexusMuseum", "Nexus (museum)", "NEXUS(~3.IMU", 3}, - {14, "stateNexusMap", "Nexus (map)", "NEXUS(~4.IMU", 3}, - {15, "stateNexusTomb", "Nexus (tomb)", "NE3706~5.IMU", 3}, - {16, "stateNexusCath", "Nexus (cath)", "NE3305~5.IMU", 3}, - {17, "stateNexusAirlock", "Nexus (airlock)", "NE2D3A~5.IMU", 3}, - {18, "stateNexusPowerOff", "Nexus (power)", "NE8522~5.IMU", 3}, - {19, "stateMuseumTramNear", "Tram (mu-near)", "TRAM(M~1.IMU", 3}, - {20, "stateMuseumTramFar", "Tram (mu-far)", "TRAM(M~2.IMU", 3}, - {21, "stateMuseumLockup", "Museum (lockup)", "MUSEUM~1.IMU", 3}, - {22, "stateMuseumPool", "Museum (amb-pool)", "MUSEUM~2.IMU", 3}, - {23, "stateMuseumSpire", "Museum (amb-spire)", "MUSEUM~3.IMU", 3}, - {24, "stateMuseumMuseum", "Museum (amb-mu)", "MUSEUM~4.IMU", 3}, - {25, "stateMuseumLibrary", "Museum (library)", "MUB575~5.IMU", 3}, - {26, "stateMuseumCavern", "Museum (cavern)", "MUF9BE~5.IMU", 3}, - {27, "stateTombTramNear", "Tram (tomb-near)", "TRAM(T~1.IMU", 3}, - {28, "stateTombBase", "Tomb (amb-base)", "TOMB(A~1.IMU", 3}, - {29, "stateTombSpire", "Tomb (amb-spire)", "TOMB(A~2.IMU", 3}, - {30, "stateTombCave", "Tomb (amb-cave)", "TOMB(A~3.IMU", 3}, - {31, "stateTombCrypt", "Tomb (crypt)", "TOMB(C~1.IMU", 3}, - {32, "stateTombGuards", "Tomb (crypt-guards)", "TOMB(C~2.IMU", 3}, - {33, "stateTombInner", "Tomb (inner)", "TOMB(I~1.IMU", 3}, - {34, "stateTombCreator1", "Tomb (creator 1)", "TOMB(C~3.IMU", 3}, - {35, "stateTombCreator2", "Tomb (creator 2)", "TOMB(C~4.IMU", 3}, - {36, "statePlanTramNear", "Tram (plan-near)", "TRAM(P~1.IMU", 3}, - {37, "statePlanTramFar", "Tram (plan-far)", "TRAM(P~2.IMU", 3}, - {38, "statePlanBase", "Plan (amb-base)", "PLAN(A~1.IMU", 3}, - {39, "statePlanSpire", "Plan (amb-spire)", "PLAN(A~2.IMU", 3}, - {40, "statePlanDome", "Plan (dome)", "PLAN(D~1.IMU", 3}, - {41, "stateMapTramNear", "Tram (map-near)", "TRAM(M~3.IMU", 3}, - {42, "stateMapTramFar", "Tram (map-far)", "TRAM(M~4.IMU", 3}, - {43, "stateMapCanyon", "Map (amb-canyon)", "MAP(AM~1.IMU", 3}, - {44, "stateMapExposed", "Map (amb-exposed)", "MAP(AM~2.IMU", 3}, - {45, "stateMapNestEmpty", "Map (amb-nest)", "MAP(AM~4.IMU", 3}, - {46, "stateMapNestMonster", "Map (monster)", "MAP(MO~1.IMU", 3}, - {47, "stateMapKlein", "Map (klein)", "MAP(KL~1.IMU", 3}, - {48, "stateCathTramNear", "Tram (cath-near)", "TRAM(C~1.IMU", 3}, - {49, "stateCathTramFar", "Tram (cath-far)", "TRAM(C~2.IMU", 3}, - {50, "stateCathLab", "Cath (amb-inside)", "CATH(A~1.IMU", 3}, - {51, "stateCathOutside", "Cath (amb-outside)", "CATH(A~2.IMU", 3}, - {52, "stateWorldMuseum", "World (museum)", "WORLD(~1.IMU", 3}, - {53, "stateWorldPlan", "World (plan)", "WORLD(~2.IMU", 3}, - {54, "stateWorldTomb", "World (tomb)", "WORLD(~3.IMU", 3}, - {55, "stateWorldMap", "World (map)", "WORLD(~4.IMU", 3}, - {56, "stateWorldCath", "World (cath)", "WO3227~5.IMU", 3}, - {57, "stateEye1", "Eye 1", "EYE1~1.IMU", 3}, - {58, "stateEye2", "Eye 2", "EYE2~1.IMU", 3}, - {59, "stateEye3", "Eye 3", "EYE3~1.IMU", 3}, - {60, "stateEye4", "Eye 4", "EYE4~1.IMU", 3}, - {61, "stateEye5", "Eye 5", "EYE5~1.IMU", 3}, - {62, "stateEye6", "Eye 6", "EYE6~1.IMU", 3}, - {63, "stateEye7", "Eye 7", "EYE7~1.IMU", 3}, - {-1, "", "", "", 0}, -}; - -static const imuse_music_table _digSeqMusicTable[] = { - {2000, "SEQ_NULL", "", "", 0}, - {2005, "seqLogo", "", "", 0}, - {2010, "seqIntro", "", "", 0}, - {2020, "seqExplosion1b", "", "", 6}, - {2030, "seqAstTunnel1a", "Seq (ast tunnel 1a)", "SEQ(AS~1.IMU", 3}, - {2031, "seqAstTunnel2b", "", "", 6}, - {2032, "seqAstTunnel3a", "Seq (ast tunnel 3a)", "SEQ(AS~2.IMU", 4}, - {2040, "seqToPlanet1b", "", "", 5}, - {2045, "seqArgBegin", "Seq (arg begin)", "SEQ(AR~1.IMU", 4}, - {2046, "seqArgEnd", "Seq (arg end)", "SEQ(AR~2.IMU", 4}, - {2050, "seqWreckGhost", "Seq (ghost-wreck)", "SEQ(GH~1.IMU", 4}, - {2060, "seqCanyonGhost", "Seq (ghost-canyon)", "SEQ(GH~2.IMU", 4}, - {2070, "seqBrinkFall", "", "", 0}, - {2080, "seqPanUpCanyon", "Seq (pan up canyon)", "SEQ(PA~1.IMU", 4}, - {2091, "seqAirlockTunnel1b", "", "", 6}, - {2100, "seqTramToMu", "", "", 6}, - {2101, "seqTramFromMu", "", "", 6}, - {2102, "seqTramToTomb", "", "", 6}, - {2103, "seqTramFromTomb", "", "", 6}, - {2104, "seqTramToPlan", "", "", 6}, - {2105, "seqTramFromPlan", "", "", 6}, - {2106, "seqTramToMap", "", "", 6}, - {2107, "seqTramFromMap", "", "", 6}, - {2108, "seqTramToCath", "", "", 6}, - {2109, "seqTramFromCath", "", "", 6}, - {2110, "seqMuseumGhost", "", "", 0}, - {2120, "seqSerpentAppears", "", "", 0}, - {2130, "seqSerpentEats", "", "", 0}, - {2140, "seqBrinkRes1b", "", "", 6}, - {2141, "seqBrinkRes2a", "Seq (brink's madness)", "SEQ(BR~1.IMU", 4}, - {2150, "seqLockupEntry", "Seq (brink's madness)", "SEQ(BR~1.IMU", 3}, - {2160, "seqSerpentExplodes", "", "", 0}, - {2170, "seqSwimUnderwater", "Seq (descent)", "SEQ(DE~1.IMU", 4}, - {2175, "seqWavesPlunge", "Seq (plunge)", "SEQ(PL~1.IMU", 4}, - {2180, "seqCryptOpens", "", "", 0}, - {2190, "seqGuardsFight", "", "", 0}, - {2200, "seqCreatorRes1.1a", "Seq (creator res 1.1a)", "SEQ(CR~1.IMU", 3}, - {2201, "seqCreatorRes1.2b", "", "", 6}, - {2210, "seqMaggieCapture1b", "", "", 6}, - {2220, "seqStealCrystals", "Seq (brink's madness)", "SEQ(BR~1.IMU", 3}, - {2230, "seqGetByMonster", "", "", 0}, - {2240, "seqKillMonster1b", "", "", 6}, - {2250, "seqCreatorRes2.1a", "Seq (creator res 2.1a)", "SEQ(CR~2.IMU", 3}, - {2251, "seqCreatorRes2.2b", "", "", 6}, - {2252, "seqCreatorRes2.3a", "Seq (creator res 2.3a)", "SEQ(CR~3.IMU", 4}, - {2260, "seqMaggieInsists", "", "", 0}, - {2270, "seqBrinkHelpCall", "", "", 0}, - {2280, "seqBrinkCrevice1a", "Seq (brink crevice 1a)", "SEQ(BR~2.IMU", 3}, - {2281, "seqBrinkCrevice2a", "Seq (brink crevice 2a)", "SEQ(BR~3.IMU", 3}, - {2290, "seqCathAccess1b", "", "", 6}, - {2291, "seqCathAccess2a", "Seq (cath access 2a)", "SEQ(CA~1.IMU", 4}, - {2300, "seqBrinkAtGenerator", "Seq (brink's madness)", "SEQ(BR~1.IMU", 3}, - {2320, "seqFightBrink1b", "", "", 6}, - {2340, "seqMaggieDies1b", "", "", 6}, - {2346, "seqMaggieRes1b", "", "", 6}, - {2347, "seqMaggieRes2a", "Seq (maggie res 2a)", "SEQ(MA~1.IMU", 4}, - {2350, "seqCreatureFalls", "", "", 0}, - {2360, "seqFinale1b", "", "", 5}, - {2370, "seqFinale2a", "Seq (finale 2a)", "SEQ(FI~1.IMU", 3}, - {2380, "seqFinale3b1", "", "", 6}, - {2390, "seqFinale3b2", "", "", 6}, - {2400, "seqFinale4a", "Seq (finale 4a)", "SEQ(FI~2.IMU", 3}, - {2410, "seqFinale5a", "Seq (finale 5a)", "SEQ(FI~3.IMU", 3}, - {2420, "seqFinale6a", "Seq (finale 6a)", "SEQ(FI~4.IMU", 3}, - {2430, "seqFinale7a", "Seq (finale 7a)", "SE3D2B~5.IMU", 3}, - {2440, "seqFinale8b", "", "", 6}, - {2450, "seqFinale9a", "Seq (finale 9a)", "SE313B~5.IMU", 4}, - {-1, "", "", "", 0}, -}; - -struct imuse_ft_music_table { - int16 index; - char audioname[15]; - int8 unk1; - int8 volume; - char name[30]; -}; - -static const imuse_ft_music_table _ftStateMusicTable[] = { - {0, "", 0, 0, "STATE_NULL" }, - {1, "", 4, 127, "stateKstandOutside" }, - {2, "kinside", 2, 127, "stateKstandInside" }, - {3, "moshop", 3, 64, "stateMoesInside" }, - {4, "melcut", 2, 127, "stateMoesOutside" }, - {5, "mellover", 2, 127, "stateMellonAbove" }, - {6, "radloop", 3, 28, "stateTrailerOutside" }, - {7, "radloop", 3, 58, "stateTrailerInside" }, - {8, "radloop", 3, 127, "stateTodShop" }, - {9, "junkgate", 2, 127, "stateJunkGate" }, - {10, "junkover", 3, 127, "stateJunkAbove" }, - {11, "gastower", 2, 127, "stateGasTower" }, - {12, "", 4, 0, "stateTowerAlarm" }, - {13, "melcut", 2, 127, "stateCopsOnGround" }, - {14, "melcut", 2, 127, "stateCopsAround" }, - {15, "melcut", 2, 127, "stateMoesRuins" }, - {16, "melcut", 2, 127, "stateKstandNight" }, - {17, "trukblu2", 2, 127, "stateTruckerTalk" }, - {18, "stretch", 2, 127, "stateMumblyPeg" }, - {19, "kstand", 2, 127, "stateRanchOutside" }, - {20, "kinside", 2, 127, "stateRanchInside" }, - {21, "desert", 2, 127, "stateWreckedTruck" }, - {22, "opening", 2, 127, "stateGorgeVista" }, - {23, "caveopen", 2, 127, "stateCaveOpen" }, - {24, "cavecut1", 2, 127, "stateCaveOuter" }, - {25, "cavecut1", 1, 127, "stateCaveMiddle" }, - {26, "cave", 2, 127, "stateCaveInner" }, - {27, "corville", 2, 127, "stateCorvilleFront" }, - {28, "mines", 2, 127, "stateMineField" }, - {29, "bunyman3", 2, 127, "stateBunnyStore" }, - {30, "stretch", 2, 127, "stateStretchBen" }, - {31, "saveme", 2, 127, "stateBenPleas" }, - {32, "", 4, 0, "stateBenConvinces" }, - {33, "derby", 3, 127, "stateDemoDerby" }, - {34, "fire", 3, 127, "stateLightMyFire" }, - {35, "derby", 3, 127, "stateDerbyChase" }, - {36, "carparts", 2, 127, "stateVultureCarParts"}, - {37, "cavecut1", 2, 127, "stateVulturesInside" }, - {38, "mines", 2, 127, "stateFactoryRear" }, - {39, "croffice", 2, 127, "stateCorleyOffice" }, - {40, "melcut", 2, 127, "stateCorleyHall" }, - {41, "", 4, 0, "stateProjRoom" }, - {42, "", 4, 0, "stateMMRoom" }, - {43, "bumper", 2, 127, "stateBenOnBumper" }, - {44, "benump", 2, 127, "stateBenOnBack" }, - {45, "plane", 2, 127, "stateInCargoPlane" }, - {46, "saveme", 2, 127, "statePlaneControls" }, - {47, "", 4, 0, "stateCliffHanger1" }, - {48, "", 4, 0, "stateCliffHanger2" }, - {-1, "", 0, 0, "" }, -}; - -static const imuse_ft_music_table _ftSeqMusicTable[] = { - {0, "", 2, 127, "SEQ_NULL" }, - {1, "", 0, 0, "seqLogo" }, - {2, "", 0, 0, "seqOpenFlick" }, - {3, "", 0, 0, "seqBartender" }, - {4, "opening", 2, 127, "seqBenWakes" }, - {5, "", 0, 0, "seqPhotoScram" }, - {6, "", 0, 0, "seqClimbChain" }, - {7, "", 0, 0, "seqDogChase" }, - {8, "barbeat", 2, 127, "seqDogSquish" }, - {9, "barwarn", 2, 127, "seqDogHoist" }, - {10, "", 0, 0, "seqCopsArrive" }, - {11, "", 0, 0, "seqCopsLand" }, - {12, "benwakes", 2, 127, "seqCopsLeave" }, - {13, "", 0, 0, "seqCopterFlyby" }, - {14, "", 0, 0, "seqCopterCrash" }, - {15, "", 0, 0, "seqMoGetsParts" }, - {16, "barwarn", 2, 127, "seqMoFixesBike" }, - {17, "", 0, 0, "seqFirstGoodbye" }, - {18, "", 0, 0, "seqCopRoadblock" }, - {19, "", 0, 0, "seqDivertCops" }, - {20, "swatben", 2, 127, "seqMurder" }, - {21, "", 0, 0, "seqCorleyDies" }, - {22, "", 0, 0, "seqTooLateAtMoes" }, - {23, "", 0, 0, "seqPicture" }, - {24, "dogattak", 2, 127, "seqNewsReel" }, - {25, "", 0, 0, "seqCopsInspect" }, - {26, "", 0, 0, "seqHijack" }, - {27, "", 0, 0, "seqNestolusAtRanch" }, - {28, "", 4, 0, "seqRipLimo" }, - {29, "", 0, 0, "seqGorgeTurn" }, - {30, "", 0, 0, "seqStealRamp" }, - {31, "", 0, 0, "seqCavefishTalk" }, - {32, "", 4, 0, "seqArriveCorville" }, - {33, "", 0, 0, "seqSingleBunny" }, - {34, "", 0, 0, "seqBunnyArmy" }, - {35, "", 0, 0, "seqArriveAtMines" }, - {36, "cops2", 2, 127, "seqArriveAtVultures" }, - {37, "", 0, 0, "seqMakePlan" }, - {38, "", 0, 0, "seqShowPlan" }, - {39, "", 0, 0, "seqDerbyStart" }, - {40, "cops2", 2, 127, "seqLightBales" }, - {41, "", 0, 0, "seqNestolusBBQ" }, - {42, "", 0, 0, "seqCallSecurity" }, - {43, "", 0, 0, "seqFilmFail" }, - {44, "cops2", 2, 127, "seqFilmBurn" }, - {45, "", 0, 0, "seqRipSpeech" }, - {46, "", 0, 0, "seqExposeRip" }, - {47, "", 0, 0, "seqRipEscape" }, - {48, "", 0, 0, "seqRareMoment" }, - {49, "", 0, 0, "seqFanBunnies" }, - {50, "", 0, 0, "seqRipDead" }, - {51, "bunymrch", 2, 127, "seqFuneral" }, - {52, "", 0, 0, "seqCredits" }, - {-1, "", 0, 0, "" }, -}; - -void IMuseDigital::handler() { - uint32 l = 0, i = 0; - - if (_pause == true) - return; - - for (l = 0; l < MAX_DIGITAL_CHANNELS;l ++) { - if (_channel[l]._used) { - if (_channel[l]._toBeRemoved == true) { - _scumm->_mixer->stop(l); - if (_scumm->_mixer->_channels[l] == NULL) { - free(_channel[l]._data); - _channel[l]._used = false; - _channel[l]._initialized = false; - } - continue; - } - - if (_channel[l]._delay > 0) { - _channel[l]._delay--; - continue; - } - - if (_channel[l]._volumeFade != -1) { - if (_channel[l]._volumeFadeStep < 0) { - if (_channel[l]._volume > _channel[l]._volumeFade) { - _channel[l]._volume += _channel[l]._volumeFadeStep; - _channel[l]._volumeRight += _channel[l]._volumeFadeStep; - if (_channel[l]._volume < _channel[l]._volumeFade) { - _channel[l]._volume = _channel[l]._volumeFade; - } - if (_channel[l]._volumeRight < _channel[l]._volumeFade) { - _channel[l]._volumeRight = _channel[l]._volumeFade; - } - if ((_channel[l]._volume == 0) && (_channel[l]._volumeRight == 0)) { - _channel[l]._toBeRemoved = true; - } - } - } else if (_channel[l]._volumeFadeStep > 0) { - if (_channel[l]._volume < _channel[l]._volumeFade) { - _channel[l]._volume += _channel[l]._volumeFadeStep; - _channel[l]._volumeRight += _channel[l]._volumeFadeStep; - if (_channel[l]._volume > _channel[l]._volumeFade) { - _channel[l]._volume = _channel[l]._volumeFade; - } - if (_channel[l]._volumeRight > _channel[l]._volumeFade) { - _channel[l]._volumeRight = _channel[l]._volumeFade; - } - } - } - } - - if ((_channel[l]._jump[0]._numLoops == 0) && (_channel[l]._isJump == true)) { - _channel[l]._isJump = false; - } - - uint32 new_size = _channel[l]._mixerSize; - uint32 mixer_size = new_size; - - if (_channel[l]._initialized == false) { - mixer_size *= 2; - new_size *= 2; - } - - if (_channel[l]._isJump == false) { - if (_channel[l]._offset + mixer_size > _channel[l]._size) { - new_size = _channel[l]._size - _channel[l]._offset; - if (_channel[l]._numLoops == 0) { - _channel[l]._toBeRemoved = true; - mixer_size = new_size; - } - } - } else if (_channel[l]._isJump == true) { - if (_channel[l]._jump[0]._numLoops != 500) { - _channel[l]._jump[0]._numLoops--; - } - if (_channel[l]._offset + mixer_size >= _channel[l]._jump[0]._offset) { - new_size = _channel[l]._jump[0]._offset - _channel[l]._offset; - } - } - - byte *buf = (byte*)malloc(mixer_size); - - memcpy(buf, _channel[l]._data + _channel[l]._offset, new_size); - if ((new_size != mixer_size) && (_channel[l]._isJump == true)) { - memcpy(buf + new_size, _channel[l]._data + _channel[l]._jump[0]._dest, mixer_size - new_size); - _channel[l]._offset = _channel[l]._jump[0]._dest + (mixer_size - new_size); - } else if ((_channel[l]._numLoops > 0) && (new_size != mixer_size)) { - memcpy(buf + new_size, _channel[l]._data, mixer_size - new_size); - _channel[l]._offset = mixer_size - new_size; - } else { - _channel[l]._offset += mixer_size; - } - - if (_channel[l]._bits == 12) { - for(i = 0; i < (mixer_size / 4); i++) { - byte sample1 = buf[i * 4 + 0]; - byte sample2 = buf[i * 4 + 1]; - byte sample3 = buf[i * 4 + 2]; - byte sample4 = buf[i * 4 + 3]; - uint16 sample_a = (uint16)(((int16)((sample1 << 8) | sample2) * _channel[l]._volumeRight) >> 8); - uint16 sample_b = (uint16)(((int16)((sample3 << 8) | sample4) * _channel[l]._volume) >> 8); - buf[i * 4 + 0] = (byte)(sample_a >> 8); - buf[i * 4 + 1] = (byte)(sample_a & 0xff); - buf[i * 4 + 2] = (byte)(sample_b >> 8); - buf[i * 4 + 3] = (byte)(sample_b & 0xff); - } - } else if (_channel[l]._bits == 8) { - for(i = 0; i < (mixer_size / 2); i++) { - buf[i * 2 + 0] = (byte)(((int8)(buf[i * 2 + 0] ^ 0x80) * _channel[l]._volumeRight) >> 8) ^ 0x80; - buf[i * 2 + 1] = (byte)(((int8)(buf[i * 2 + 1] ^ 0x80) * _channel[l]._volume) >> 8) ^ 0x80; - } - } - - if (_scumm->_silentDigitalImuse == false) { - if (_channel[l]._initialized == false) { - _scumm->_mixer->playStream(NULL, l, buf, mixer_size, - _channel[l]._freq, _channel[l]._mixerFlags, 3, 2000000); - _channel[l]._initialized = true; - } else { - _scumm->_mixer->append(l, buf, mixer_size, _channel[l]._freq, _channel[l]._mixerFlags); - } - } - } - } -} - -void IMuseDigital::startSound(int sound) { - debug(2, "IMuseDigital::startSound(%d)", sound); - int32 l; - - for(l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - if(_channel[l]._used == false) { - byte *ptr = _scumm->getResourceAddress(rtSound, sound); - byte *s_ptr = ptr; - if(ptr == NULL) { - warning("IMuseDigital::startSound(%d) NULL resource pointer", sound); - return; - } - _channel[l]._idSound = sound; - _channel[l]._offset = 0; - _channel[l]._numRegions = 0; - _channel[l]._numJumps = 0; - _channel[l]._volumeRight = 127; - _channel[l]._volume = 127; - _channel[l]._volumeFade = -1; - _channel[l]._volumeFadeParam = 0; - _channel[l]._delay = 1; - - uint32 tag, size = 0, r, t; - - if (READ_UINT32_UNALIGNED(ptr) == MKID('Crea')) { - _channel[l]._bits = 8; - _channel[l]._channels = 2; - _channel[l]._mixerSize = (22050 / 5) * 2; - _channel[l]._mixerFlags = SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_STEREO | SoundMixer::FLAG_REVERSE_STEREO | SoundMixer::FLAG_UNSIGNED; - byte * t_ptr= _scumm->_sound->readCreativeVocFile(ptr, size, _channel[l]._freq, _channel[l]._numLoops); - - if (_channel[l]._freq == 22222) { - _channel[l]._freq = 22050; - } else if (_channel[l]._freq == 10989) { - _channel[l]._freq = 11025; - } - - if (_channel[l]._freq == 11025) { - _channel[l]._mixerSize /= 2; - } - size *= 2; - _channel[l]._data = (byte *)malloc(size); - for (t = 0; t < size / 2; t++) { - *(_channel[l]._data + t * 2 + 0) = *(t_ptr + t); - *(_channel[l]._data + t * 2 + 1) = *(t_ptr + t); - } - free(t_ptr); - _channel[l]._size = size; - } else if (READ_UINT32_UNALIGNED(ptr) == MKID('iMUS')) { - ptr += 16; - for (;;) { - tag = READ_BE_UINT32(ptr); ptr += 4; - switch(tag) { - case MKID_BE('FRMT'): - ptr += 12; - _channel[l]._bits = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._freq = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._channels = READ_BE_UINT32(ptr); ptr += 4; - break; - case MKID_BE('TEXT'): - size = READ_BE_UINT32(ptr); ptr += size + 4; - break; - case MKID_BE('REGN'): - ptr += 4; - if (_channel[l]._numRegions >= MAX_IMUSE_REGIONS) { - warning("IMuseDigital::startSound(%d) Not enough space for Region"); - ptr += 8; - break; - } - _channel[l]._region[_channel[l]._numRegions]._offset = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._region[_channel[l]._numRegions]._length = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._numRegions++; - break; - case MKID_BE('STOP'): - ptr += 4; - _channel[l]._offsetStop = READ_BE_UINT32(ptr); ptr += 4; - break; - case MKID_BE('JUMP'): - ptr += 4; - if (_channel[l]._numJumps >= MAX_IMUSE_JUMPS) { - warning("IMuseDigital::startSound(%d) Not enough space for Jump"); - ptr += 16; - break; - } - _channel[l]._jump[_channel[l]._numJumps]._offset = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._jump[_channel[l]._numJumps]._dest = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._jump[_channel[l]._numJumps]._id = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._jump[_channel[l]._numJumps]._numLoops = READ_BE_UINT32(ptr); ptr += 4; - _channel[l]._isJump = true; - _channel[l]._numJumps++; - break; - case MKID_BE('DATA'): - size = READ_BE_UINT32(ptr); ptr += 4; - break; - default: - error("IMuseDigital::startSound(%d) Unknown sfx header %c%c%c%c", tag>>24, tag>>16, tag>>8, tag); - } - if (tag == MKID_BE('DATA')) break; - } - -// if ((sound == 131) || (sound == 123) || (sound == 122)) { - _channel[l]._isJump = false; - _channel[l]._numJumps = 0; -// } - - uint32 header_size = ptr - s_ptr; - _channel[l]._offsetStop -= header_size; - if (_channel[l]._bits == 12) { - _channel[l]._offsetStop = (_channel[l]._offsetStop / 3) * 4; - } - for (r = 0; r < _channel[l]._numRegions; r++) { - _channel[l]._region[r]._offset -= header_size; - if (_channel[l]._bits == 12) { - _channel[l]._region[r]._offset = (_channel[l]._region[r]._offset / 3) * 4; - _channel[l]._region[r]._length = (_channel[l]._region[r]._length / 3) * 4; - } - } - if (_channel[l]._numJumps > 0) { - for (r = 0; r < _channel[l]._numJumps; r++) { - _channel[l]._jump[r]._offset -= header_size; - _channel[l]._jump[r]._dest -= header_size; - if (_channel[l]._bits == 12) { - _channel[l]._jump[r]._offset = (_channel[l]._jump[r]._offset / 3) * 4; - _channel[l]._jump[r]._dest = (_channel[l]._jump[r]._dest / 3) * 4; - } - } - } - _channel[l]._mixerSize = (22050 / 5) * 2; - _channel[l]._mixerFlags = SoundMixer::FLAG_AUTOFREE | SoundMixer::FLAG_STEREO | SoundMixer::FLAG_REVERSE_STEREO; - if (_channel[l]._bits == 12) { - _channel[l]._mixerSize *= 2; - _channel[l]._mixerFlags |= SoundMixer::FLAG_16BITS; - _channel[l]._size = _scumm->_sound->decode12BitsSample(ptr, &_channel[l]._data, size, (_channel[l]._channels == 2) ? false : true); - } - if (_channel[l]._bits == 8) { - _channel[l]._mixerFlags |= SoundMixer::FLAG_UNSIGNED; - if (_channel[l]._channels == 1) { - size *= 2; - _channel[l]._channels = 2; - _channel[l]._data = (byte *)malloc(size); - for (t = 0; t < size / 2; t++) { - *(_channel[l]._data + t * 2 + 0) = *(ptr + t); - *(_channel[l]._data + t * 2 + 1) = *(ptr + t); - } - } else { - _channel[l]._data = (byte *)malloc(size); - memcpy(_channel[l]._data, ptr, size); - } - _channel[l]._size = size; - } - if (_channel[l]._freq == 11025) { - _channel[l]._mixerSize /= 2; - } - } - _channel[l]._toBeRemoved = false; - _channel[l]._used = true; - break; - } - } -} - -void IMuseDigital::stopSound(int sound) { - debug(2, "IMuseDigital::stopSound(%d)", sound); - for (int32 l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - if ((_channel[l]._idSound == sound) && (_channel[l]._used == true)) { - _channel[l]._toBeRemoved = true; - } - } -} - -void IMuseDigital::stopAll() { - for (int32 l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - if (_channel[l]._used == true) { - _channel[l]._toBeRemoved = true; - } - } -} - -void IMuseDigital::pause(bool p) { - _pause = p; -} - -int32 IMuseDigital::doCommand(int a, int b, int c, int d, int e, int f, int g, int h) { - byte cmd = a & 0xFF; - byte param = a >> 8; - int32 sample = b, r; - byte sub_cmd = c >> 8; - int8 chan = -1, l; - int8 tmp; - - if (!(cmd || param)) - return 1; - - if (param == 0) { - switch (cmd) { - case 12: - switch (sub_cmd) { - case 5: - debug(2, "IMuseDigital::doCommand 12,5 sample(%d), param(%d)", sample, d); - return 0; - case 6: // volume control (0-127) - debug(2, "IMuseDigital::doCommand setting volume sample(%d), volume(%d)", sample, d); - for (l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - if ((_channel[l]._idSound == sample) && (_channel[l]._used == true)) { - chan = l; - break; - } - } - if (chan == -1) { - debug(2, "IMuseDigital::doCommand 12,6 sample(%d) not exist in channels", sample); - return 1; - } - _channel[chan]._volume = d; - _channel[chan]._volumeRight = d; - if (_channel[chan]._volumeFade != -1) { - tmp = ((_channel[chan]._volumeFade - _channel[chan]._volume) * 2) / _channel[chan]._volumeFadeParam; - if ((tmp < 0) && (tmp > -2)) { - tmp = -1; - } else if ((tmp > 0) && (tmp < 2)) { - tmp = 1; - } else { - tmp /= 2; - } - _channel[chan]._volumeFadeStep = tmp; - } - return 0; - case 7: // right volume control (0-127) - debug(2, "IMuseDigital::doCommand setting right volume sample(%d),volume(%d)", sample, d); - for (l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - if ((_channel[l]._idSound == sample) && (_channel[l]._used == true)) { - chan = l; - break; - } - } - if (chan == -1) { - debug(2, "IMuseDigital::doCommand 12,7 sample(%d) not exist in channels", sample); - return 1; - } - _channel[chan]._volumeRight = d; - return 0; - default: - warning("IMuseDigital::doCommand 12 DEFAULT sub command %d", sub_cmd); - return 1; - } - case 14: - switch (sub_cmd) { - case 6: // fade volume control - debug(2, "IMuseDigital::doCommand fading volume sample(%d),fade(%d, %d)", sample, d, e); - for (l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - if ((_channel[l]._idSound == sample) && (_channel[l]._used == true)) { - chan = l; - break; - } - } - if (chan == -1) { - debug(2, "IMuseDigital::doCommand 14,6 sample %d not exist in channels", sample); - return 1; - } - _channel[chan]._volumeFade = d; - _channel[chan]._volumeFadeParam = e; - tmp = ((_channel[chan]._volumeFade - _channel[chan]._volume) * 2) / _channel[chan]._volumeFadeParam; - if ((tmp < 0) && (tmp > -2)) { - tmp = -1; - } else if ((tmp > 0) && (tmp < 2)) { - tmp = 1; - } else { - tmp /= 2; - } - _channel[chan]._volumeFadeStep = tmp; - return 0; - default: - warning("IMuseDigital::doCommand 14 DEFAULT sub command %d", sub_cmd); - return 1; - } - default: - warning("IMuseDigital::doCommand DEFAULT command %d", cmd); - return 1; - } - } else if (param == 16) { - switch (cmd) { - case 0: // play music (state) - debug(2, "IMuseDigital::doCommand 0x1000 (%d)", b); - if (_scumm->_gameId == GID_CMI) { - char musicName[255]; - sprintf(musicName, "%d-", b); - _scumm->_sound->playBundleMusic(strdup(musicName)); - return 0; - } else if (_scumm->_gameId == GID_DIG) { - for(l = 0;; l++) { - if (_digStateMusicMap[l].room == -1) { - return 1; - } - if (_digStateMusicMap[l].room == b) { - int16 music = _digStateMusicMap[l].table_index; - debug(2, "Play imuse music: %s, %s, %s", _digStateMusicTable[music].name, _digStateMusicTable[music].title, _digStateMusicTable[music].filename); - if (_digStateMusicTable[music].filename[0] != 0) { - _scumm->_sound->playBundleMusic((char*)&_digStateMusicTable[music].filename); - } - return 0; - } - } - } else if (_scumm->_gameId == GID_FT) { - for(l = 0;; l++) { - if (_ftStateMusicTable[l].index == -1) { - return 1; - } - if (_ftStateMusicTable[l].index == b) { - debug(2, "Play imuse music: %s, %s", _ftStateMusicTable[l].name, _ftStateMusicTable[l].audioname); - if (_ftStateMusicTable[l].audioname[0] != 0) { - for(r = 0; r < _scumm->_numAudioNames; r++) { - if (strcmp(_ftStateMusicTable[l].audioname, &_scumm->_audioNames[r * 9]) == 0) { - startSound(r); - doCommand(12, r, 1536, _ftStateMusicTable[l].volume, 0, 0, 0, 0); - } - } - } - } - } - } - return 0; - case 1: // play music (seq) - debug(2, "IMuseDigital::doCommand 0x1001 (%d)", b); - if (_scumm->_gameId == GID_DIG) { - for(l = 0;; l++) { - if (_digSeqMusicTable[l].index == -1) { - return 1; - } - if ((_digSeqMusicTable[l].index == b)) { - debug(2, "Play imuse music: %s, %s, %s", _digSeqMusicTable[l].name, _digSeqMusicTable[l].title, _digSeqMusicTable[l].filename); - if (_digSeqMusicTable[l].filename[0] != 0) { - _scumm->_sound->playBundleMusic((char*)&_digSeqMusicTable[l].filename); - } - return 0; - } - } - } else if (_scumm->_gameId == GID_FT) { - for(l = 0;; l++) { - if (_ftSeqMusicTable[l].index == -1) { - return 1; - } - if (_ftSeqMusicTable[l].index == b) { - debug(2, "Play imuse music: %s, %s", _ftSeqMusicTable[l].name, _ftSeqMusicTable[l].audioname); - if (_ftSeqMusicTable[l].audioname[0] != 0) { - for(r = 0; r < _scumm->_numAudioNames; r++) { - if (strcmp(_ftSeqMusicTable[l].audioname, &_scumm->_audioNames[r * 9]) == 0) { - startSound(r); - doCommand(12, r, 1536, _ftSeqMusicTable[l].volume, 0, 0, 0, 0); - } - } - } - } - } - } - return 0; - case 2: // dummy in DIG and CMI - debug(2, "IMuseDigital::doCommand 0x1002 (%d)", b); - return 0; - case 3: // ??? (stream related) - debug(2, "IMuseDigital::doCommand 0x1003 (%d,%d)", b, c); - return 0; - default: - warning("IMuseDigital::doCommand (0x1xxx) DEFAULT command %d", cmd); - return 1; - } - } - - return 1; -} - -int IMuseDigital::getSoundStatus(int sound) { - debug(2, "IMuseDigital::getSoundStatus(%d)", sound); - for (int32 l = 0; l < MAX_DIGITAL_CHANNELS; l++) { - if ((_channel[l]._idSound == sound) && (_channel[l]._used == true)) { - return 1; - } - } - - return 0; -} diff --git a/scumm/imuse.h b/scumm/imuse.h index 4b424c0689..53313dd350 100644 --- a/scumm/imuse.h +++ b/scumm/imuse.h @@ -23,6 +23,8 @@ #ifndef IMUSE_H #define IMUSE_H +#include "imuse_digi.h" + class IMuseInternal; class MidiDriver; class OSystem; @@ -69,66 +71,4 @@ public: static IMuse *create_midi(OSystem *syst, MidiDriver *midi) { return create(syst, midi, NULL); } }; -#define MAX_DIGITAL_CHANNELS 8 -#define MAX_IMUSE_JUMPS 1 -#define MAX_IMUSE_REGIONS 3 - -class IMuseDigital { -private: - - struct region { - uint32 _offset; // begin of region - uint32 _length; // lenght of region - }; - - struct jump { - uint32 _offset; // jump position - uint32 _dest; // jump to - uint32 _id; // id of jump - uint32 _numLoops; // allmost 500 except one value: 2 - }; - - struct channel { - int8 _volumeRight; - int8 _volume; - int8 _volumeFade; - int8 _volumeFadeParam; - int8 _volumeFadeStep; - uint32 _delay; - bool _isJump; - uint32 _numLoops; - uint32 _offsetStop; - jump _jump[MAX_IMUSE_JUMPS]; - uint32 _numJumps; - region _region[MAX_IMUSE_REGIONS]; - uint32 _numRegions; - uint32 _offset; - byte *_data; - uint32 _freq; - uint32 _channels; - uint32 _bits; - uint32 _size; - int32 _idSound; - uint32 _mixerSize; - uint8 _mixerFlags; - bool _used; - bool _toBeRemoved; - bool _initialized; - } _channel[MAX_DIGITAL_CHANNELS]; - - Scumm *_scumm; - bool _pause; - -public: - IMuseDigital(Scumm *scumm); - ~IMuseDigital(); - void handler(); - void startSound(int sound); - void stopSound(int sound); - void stopAll(); - void pause(bool pause); - int32 doCommand(int a, int b, int c, int d, int e, int f, int g, int h); - int getSoundStatus(int sound); -}; - #endif diff --git a/scumm/module.mk b/scumm/module.mk index e0018eea24..49aeae4762 100644 --- a/scumm/module.mk +++ b/scumm/module.mk @@ -11,6 +11,7 @@ SCUMM_OBJS = \ scumm/dialogs.o \ scumm/gfx.o \ scumm/imuse.o \ + scumm/imuse_digi.o \ scumm/instrument.o \ scumm/nut_renderer.o \ scumm/object.o \ -- cgit v1.2.3