diff --git a/.gitmodules b/.gitmodules index fec30cac..bf1e33a5 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,15 @@ [submodule "librw"] path = librw url = https://github.com/aap/librw +[submodule "opus"] + path = opus + url = https://github.com/xiph/opus.git + branch = master +[submodule "opusfile"] + path = opusfile + url = https://github.com/xiph/opusfile.git + branch = master +[submodule "ogg"] + path = ogg + url = https://github.com/xiph/ogg.git + branch = master diff --git a/README.md b/README.md index d9121eff..c8fa3984 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ such that we have a working game at all times. - **If you use 64-bit D3D9**: We don't ship 64-bit Dx9 SDK. You need to download it from Microsoft if you don't have it(although it should come pre-installed after some Windows version) -> :information_source: **If you choose OpenAL(OAL) on Windows** You must read [Running OAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OAL-build-on-Windows). +> :information_source: **If you choose OpenAL on Windows** You must read [Running OpenAL build on Windows](https://github.com/GTAmodding/re3/wiki/Running-OpenAL-build-on-Windows). > :information_source: **Did you notice librw?** re3 uses completely homebrew RenderWare-replacement rendering engine; [librw](https://github.com/aap/librw/). librw comes as submodule of re3, but you also can use LIBRW enviorenment variable to specify path to your own librw. diff --git a/dxsdk/Include/Msvidctl.tlb b/dxsdk/Include/Msvidctl.tlb deleted file mode 100644 index b501106c..00000000 Binary files a/dxsdk/Include/Msvidctl.tlb and /dev/null differ diff --git a/dxsdk/Include/Tuner.tlb b/dxsdk/Include/Tuner.tlb deleted file mode 100644 index c90fc4ec..00000000 Binary files a/dxsdk/Include/Tuner.tlb and /dev/null differ diff --git a/ogg b/ogg new file mode 160000 index 00000000..1e8d7cce --- /dev/null +++ b/ogg @@ -0,0 +1 @@ +Subproject commit 1e8d7cce266df61afc9d35db0283bbacc0237aba diff --git a/opus b/opus new file mode 160000 index 00000000..8aa77672 --- /dev/null +++ b/opus @@ -0,0 +1 @@ +Subproject commit 8aa7767207b1e3633004c26aecbb67d1c5118485 diff --git a/opusfile b/opusfile new file mode 160000 index 00000000..eb252537 --- /dev/null +++ b/opusfile @@ -0,0 +1 @@ +Subproject commit eb252537f374e30f7b68b84223c5a2303c05eca2 diff --git a/premake5.lua b/premake5.lua index 96382d4d..acb15555 100644 --- a/premake5.lua +++ b/premake5.lua @@ -24,6 +24,11 @@ newoption { description = "Build and use librw from this solution" } +newoption { + trigger = "with-opus", + description = "Build with opus" +} + if(_OPTIONS["with-librw"]) then Librw = "librw" else @@ -160,6 +165,7 @@ project "reVC" files { addSrcFiles("src") } files { addSrcFiles("src/animation") } files { addSrcFiles("src/audio") } + files { addSrcFiles("src/audio/eax") } files { addSrcFiles("src/audio/oal") } files { addSrcFiles("src/control") } files { addSrcFiles("src/core") } @@ -177,11 +183,11 @@ project "reVC" files { addSrcFiles("src/vehicles") } files { addSrcFiles("src/weapons") } files { addSrcFiles("src/extras") } - files { addSrcFiles("eax") } includedirs { "src" } includedirs { "src/animation" } includedirs { "src/audio" } + includedirs { "src/audio/eax" } includedirs { "src/audio/oal" } includedirs { "src/control" } includedirs { "src/core" } @@ -199,12 +205,26 @@ project "reVC" includedirs { "src/vehicles" } includedirs { "src/weapons" } includedirs { "src/extras" } - includedirs { "eax" } + if _OPTIONS["with-opus"] then + includedirs { "ogg/include" } + includedirs { "opus/include" } + includedirs { "opusfile/include" } + end + filter "platforms:*mss" defines { "AUDIO_MSS" } - includedirs { "milessdk/include" } - libdirs { "milessdk/lib" } + includedirs { "sdk/milessdk/include" } + libdirs { "sdk/milessdk/lib" } + + if _OPTIONS["with-opus"] then + filter "platforms:win*" + libdirs { "ogg/win32/VS2015/Win32/%{cfg.buildcfg}" } + libdirs { "opus/win32/VS2015/Win32/%{cfg.buildcfg}" } + libdirs { "opusfile/win32/VS2015/Win32/Release-NoHTTP" } + filter {} + defines { "AUDIO_OPUS" } + end filter "platforms:*oal" defines { "AUDIO_OAL" } @@ -239,11 +259,18 @@ project "reVC" filter "platforms:linux*oal" links { "openal", "mpg123", "sndfile", "pthread" } + + if _OPTIONS["with-opus"] then + filter {} + links { "libogg" } + links { "opus" } + links { "opusfile" } + end filter "platforms:*RW34*" staticruntime "on" - includedirs { "rwsdk/include/d3d8" } - libdirs { "rwsdk/lib/d3d8/release" } + includedirs { "sdk/rwsdk/include/d3d8" } + libdirs { "sdk/rwsdk/lib/d3d8/release" } links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtanim", "rtcharse", "rpanisot" } defines { "RWLIBS" } linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text" @@ -262,8 +289,8 @@ project "reVC" links { "d3d9" } filter "platforms:*x86*d3d*" - includedirs { "dxsdk/include" } - libdirs { "dxsdk/lib" } + includedirs { "sdk/dx8sdk/include" } + libdirs { "sdk/dx8sdk/lib" } filter "platforms:*amd64*d3d9*" defines { "USE_D3D9" } diff --git a/dxsdk/Include/Amvideo.h b/sdk/dx8sdk/Include/Amvideo.h similarity index 100% rename from dxsdk/Include/Amvideo.h rename to sdk/dx8sdk/Include/Amvideo.h diff --git a/dxsdk/Include/Bdatif.h b/sdk/dx8sdk/Include/Bdatif.h similarity index 100% rename from dxsdk/Include/Bdatif.h rename to sdk/dx8sdk/Include/Bdatif.h diff --git a/dxsdk/Include/DShow.h b/sdk/dx8sdk/Include/DShow.h similarity index 100% rename from dxsdk/Include/DShow.h rename to sdk/dx8sdk/Include/DShow.h diff --git a/dxsdk/Include/DShowIDL/Bdatif.idl b/sdk/dx8sdk/Include/DShowIDL/Bdatif.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Bdatif.idl rename to sdk/dx8sdk/Include/DShowIDL/Bdatif.idl diff --git a/dxsdk/Include/DShowIDL/Mpeg2Data.idl b/sdk/dx8sdk/Include/DShowIDL/Mpeg2Data.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Mpeg2Data.idl rename to sdk/dx8sdk/Include/DShowIDL/Mpeg2Data.idl diff --git a/dxsdk/Include/DShowIDL/Mpeg2Structs.idl b/sdk/dx8sdk/Include/DShowIDL/Mpeg2Structs.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Mpeg2Structs.idl rename to sdk/dx8sdk/Include/DShowIDL/Mpeg2Structs.idl diff --git a/dxsdk/Include/DShowIDL/Mstvca.idl b/sdk/dx8sdk/Include/DShowIDL/Mstvca.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Mstvca.idl rename to sdk/dx8sdk/Include/DShowIDL/Mstvca.idl diff --git a/dxsdk/Include/DShowIDL/Mstvgs.idl b/sdk/dx8sdk/Include/DShowIDL/Mstvgs.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Mstvgs.idl rename to sdk/dx8sdk/Include/DShowIDL/Mstvgs.idl diff --git a/dxsdk/Include/DShowIDL/Msvidctl.idl b/sdk/dx8sdk/Include/DShowIDL/Msvidctl.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Msvidctl.idl rename to sdk/dx8sdk/Include/DShowIDL/Msvidctl.idl diff --git a/dxsdk/Include/DShowIDL/Segment.idl b/sdk/dx8sdk/Include/DShowIDL/Segment.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Segment.idl rename to sdk/dx8sdk/Include/DShowIDL/Segment.idl diff --git a/dxsdk/Include/DShowIDL/Videoacc.idl b/sdk/dx8sdk/Include/DShowIDL/Videoacc.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Videoacc.idl rename to sdk/dx8sdk/Include/DShowIDL/Videoacc.idl diff --git a/dxsdk/Include/DShowIDL/Vmrender.idl b/sdk/dx8sdk/Include/DShowIDL/Vmrender.idl similarity index 100% rename from dxsdk/Include/DShowIDL/Vmrender.idl rename to sdk/dx8sdk/Include/DShowIDL/Vmrender.idl diff --git a/dxsdk/Include/DShowIDL/amstream.idl b/sdk/dx8sdk/Include/DShowIDL/amstream.idl similarity index 100% rename from dxsdk/Include/DShowIDL/amstream.idl rename to sdk/dx8sdk/Include/DShowIDL/amstream.idl diff --git a/dxsdk/Include/DShowIDL/austream.idl b/sdk/dx8sdk/Include/DShowIDL/austream.idl similarity index 100% rename from dxsdk/Include/DShowIDL/austream.idl rename to sdk/dx8sdk/Include/DShowIDL/austream.idl diff --git a/dxsdk/Include/DShowIDL/axcore.idl b/sdk/dx8sdk/Include/DShowIDL/axcore.idl similarity index 100% rename from dxsdk/Include/DShowIDL/axcore.idl rename to sdk/dx8sdk/Include/DShowIDL/axcore.idl diff --git a/dxsdk/Include/DShowIDL/axextend.idl b/sdk/dx8sdk/Include/DShowIDL/axextend.idl similarity index 100% rename from dxsdk/Include/DShowIDL/axextend.idl rename to sdk/dx8sdk/Include/DShowIDL/axextend.idl diff --git a/dxsdk/Include/DShowIDL/bdaiface.idl b/sdk/dx8sdk/Include/DShowIDL/bdaiface.idl similarity index 100% rename from dxsdk/Include/DShowIDL/bdaiface.idl rename to sdk/dx8sdk/Include/DShowIDL/bdaiface.idl diff --git a/dxsdk/Include/DShowIDL/control.odl b/sdk/dx8sdk/Include/DShowIDL/control.odl similarity index 100% rename from dxsdk/Include/DShowIDL/control.odl rename to sdk/dx8sdk/Include/DShowIDL/control.odl diff --git a/dxsdk/Include/DShowIDL/ddstream.idl b/sdk/dx8sdk/Include/DShowIDL/ddstream.idl similarity index 100% rename from dxsdk/Include/DShowIDL/ddstream.idl rename to sdk/dx8sdk/Include/DShowIDL/ddstream.idl diff --git a/dxsdk/Include/DShowIDL/devenum.idl b/sdk/dx8sdk/Include/DShowIDL/devenum.idl similarity index 100% rename from dxsdk/Include/DShowIDL/devenum.idl rename to sdk/dx8sdk/Include/DShowIDL/devenum.idl diff --git a/dxsdk/Include/DShowIDL/dmodshow.idl b/sdk/dx8sdk/Include/DShowIDL/dmodshow.idl similarity index 100% rename from dxsdk/Include/DShowIDL/dmodshow.idl rename to sdk/dx8sdk/Include/DShowIDL/dmodshow.idl diff --git a/dxsdk/Include/DShowIDL/dshowasf.idl b/sdk/dx8sdk/Include/DShowIDL/dshowasf.idl similarity index 100% rename from dxsdk/Include/DShowIDL/dshowasf.idl rename to sdk/dx8sdk/Include/DShowIDL/dshowasf.idl diff --git a/dxsdk/Include/DShowIDL/dvdif.idl b/sdk/dx8sdk/Include/DShowIDL/dvdif.idl similarity index 100% rename from dxsdk/Include/DShowIDL/dvdif.idl rename to sdk/dx8sdk/Include/DShowIDL/dvdif.idl diff --git a/dxsdk/Include/DShowIDL/dxtrans.idl b/sdk/dx8sdk/Include/DShowIDL/dxtrans.idl similarity index 100% rename from dxsdk/Include/DShowIDL/dxtrans.idl rename to sdk/dx8sdk/Include/DShowIDL/dxtrans.idl diff --git a/dxsdk/Include/DShowIDL/dyngraph.idl b/sdk/dx8sdk/Include/DShowIDL/dyngraph.idl similarity index 100% rename from dxsdk/Include/DShowIDL/dyngraph.idl rename to sdk/dx8sdk/Include/DShowIDL/dyngraph.idl diff --git a/dxsdk/Include/DShowIDL/mediaobj.idl b/sdk/dx8sdk/Include/DShowIDL/mediaobj.idl similarity index 100% rename from dxsdk/Include/DShowIDL/mediaobj.idl rename to sdk/dx8sdk/Include/DShowIDL/mediaobj.idl diff --git a/dxsdk/Include/DShowIDL/medparam.idl b/sdk/dx8sdk/Include/DShowIDL/medparam.idl similarity index 100% rename from dxsdk/Include/DShowIDL/medparam.idl rename to sdk/dx8sdk/Include/DShowIDL/medparam.idl diff --git a/dxsdk/Include/DShowIDL/mixerocx.idl b/sdk/dx8sdk/Include/DShowIDL/mixerocx.idl similarity index 100% rename from dxsdk/Include/DShowIDL/mixerocx.idl rename to sdk/dx8sdk/Include/DShowIDL/mixerocx.idl diff --git a/dxsdk/Include/DShowIDL/mmstream.idl b/sdk/dx8sdk/Include/DShowIDL/mmstream.idl similarity index 100% rename from dxsdk/Include/DShowIDL/mmstream.idl rename to sdk/dx8sdk/Include/DShowIDL/mmstream.idl diff --git a/dxsdk/Include/DShowIDL/mstve.idl b/sdk/dx8sdk/Include/DShowIDL/mstve.idl similarity index 100% rename from dxsdk/Include/DShowIDL/mstve.idl rename to sdk/dx8sdk/Include/DShowIDL/mstve.idl diff --git a/dxsdk/Include/DShowIDL/qedit.idl b/sdk/dx8sdk/Include/DShowIDL/qedit.idl similarity index 100% rename from dxsdk/Include/DShowIDL/qedit.idl rename to sdk/dx8sdk/Include/DShowIDL/qedit.idl diff --git a/dxsdk/Include/DShowIDL/regbag.idl b/sdk/dx8sdk/Include/DShowIDL/regbag.idl similarity index 100% rename from dxsdk/Include/DShowIDL/regbag.idl rename to sdk/dx8sdk/Include/DShowIDL/regbag.idl diff --git a/dxsdk/Include/DShowIDL/sbe.idl b/sdk/dx8sdk/Include/DShowIDL/sbe.idl similarity index 100% rename from dxsdk/Include/DShowIDL/sbe.idl rename to sdk/dx8sdk/Include/DShowIDL/sbe.idl diff --git a/dxsdk/Include/DShowIDL/strmif.idl b/sdk/dx8sdk/Include/DShowIDL/strmif.idl similarity index 100% rename from dxsdk/Include/DShowIDL/strmif.idl rename to sdk/dx8sdk/Include/DShowIDL/strmif.idl diff --git a/dxsdk/Include/DShowIDL/tuner.idl b/sdk/dx8sdk/Include/DShowIDL/tuner.idl similarity index 100% rename from dxsdk/Include/DShowIDL/tuner.idl rename to sdk/dx8sdk/Include/DShowIDL/tuner.idl diff --git a/dxsdk/Include/DShowIDL/tvratings.idl b/sdk/dx8sdk/Include/DShowIDL/tvratings.idl similarity index 100% rename from dxsdk/Include/DShowIDL/tvratings.idl rename to sdk/dx8sdk/Include/DShowIDL/tvratings.idl diff --git a/dxsdk/Include/DShowIDL/vidcap.idl b/sdk/dx8sdk/Include/DShowIDL/vidcap.idl similarity index 100% rename from dxsdk/Include/DShowIDL/vidcap.idl rename to sdk/dx8sdk/Include/DShowIDL/vidcap.idl diff --git a/dxsdk/Include/DShowIDL/vmr9.idl b/sdk/dx8sdk/Include/DShowIDL/vmr9.idl similarity index 100% rename from dxsdk/Include/DShowIDL/vmr9.idl rename to sdk/dx8sdk/Include/DShowIDL/vmr9.idl diff --git a/dxsdk/Include/DxDiag.h b/sdk/dx8sdk/Include/DxDiag.h similarity index 100% rename from dxsdk/Include/DxDiag.h rename to sdk/dx8sdk/Include/DxDiag.h diff --git a/dxsdk/Include/Iwstdec.h b/sdk/dx8sdk/Include/Iwstdec.h similarity index 100% rename from dxsdk/Include/Iwstdec.h rename to sdk/dx8sdk/Include/Iwstdec.h diff --git a/dxsdk/Include/Mpeg2Bits.h b/sdk/dx8sdk/Include/Mpeg2Bits.h similarity index 100% rename from dxsdk/Include/Mpeg2Bits.h rename to sdk/dx8sdk/Include/Mpeg2Bits.h diff --git a/dxsdk/Include/Mpeg2Error.h b/sdk/dx8sdk/Include/Mpeg2Error.h similarity index 100% rename from dxsdk/Include/Mpeg2Error.h rename to sdk/dx8sdk/Include/Mpeg2Error.h diff --git a/dxsdk/Include/Mstvca.h b/sdk/dx8sdk/Include/Mstvca.h similarity index 100% rename from dxsdk/Include/Mstvca.h rename to sdk/dx8sdk/Include/Mstvca.h diff --git a/dxsdk/Include/Mstve.h b/sdk/dx8sdk/Include/Mstve.h similarity index 100% rename from dxsdk/Include/Mstve.h rename to sdk/dx8sdk/Include/Mstve.h diff --git a/dxsdk/Include/Msvidctl.h b/sdk/dx8sdk/Include/Msvidctl.h similarity index 100% rename from dxsdk/Include/Msvidctl.h rename to sdk/dx8sdk/Include/Msvidctl.h diff --git a/dxsdk/Include/PixPlugin.h b/sdk/dx8sdk/Include/PixPlugin.h similarity index 100% rename from dxsdk/Include/PixPlugin.h rename to sdk/dx8sdk/Include/PixPlugin.h diff --git a/dxsdk/Include/Segment.h b/sdk/dx8sdk/Include/Segment.h similarity index 100% rename from dxsdk/Include/Segment.h rename to sdk/dx8sdk/Include/Segment.h diff --git a/dxsdk/Include/activecf.h b/sdk/dx8sdk/Include/activecf.h similarity index 100% rename from dxsdk/Include/activecf.h rename to sdk/dx8sdk/Include/activecf.h diff --git a/dxsdk/Include/amaudio.h b/sdk/dx8sdk/Include/amaudio.h similarity index 100% rename from dxsdk/Include/amaudio.h rename to sdk/dx8sdk/Include/amaudio.h diff --git a/dxsdk/Include/amparse.h b/sdk/dx8sdk/Include/amparse.h similarity index 100% rename from dxsdk/Include/amparse.h rename to sdk/dx8sdk/Include/amparse.h diff --git a/dxsdk/Include/amstream.h b/sdk/dx8sdk/Include/amstream.h similarity index 100% rename from dxsdk/Include/amstream.h rename to sdk/dx8sdk/Include/amstream.h diff --git a/dxsdk/Include/amva.h b/sdk/dx8sdk/Include/amva.h similarity index 100% rename from dxsdk/Include/amva.h rename to sdk/dx8sdk/Include/amva.h diff --git a/dxsdk/Include/atsmedia.h b/sdk/dx8sdk/Include/atsmedia.h similarity index 100% rename from dxsdk/Include/atsmedia.h rename to sdk/dx8sdk/Include/atsmedia.h diff --git a/dxsdk/Include/audevcod.h b/sdk/dx8sdk/Include/audevcod.h similarity index 100% rename from dxsdk/Include/audevcod.h rename to sdk/dx8sdk/Include/audevcod.h diff --git a/dxsdk/Include/austream.h b/sdk/dx8sdk/Include/austream.h similarity index 100% rename from dxsdk/Include/austream.h rename to sdk/dx8sdk/Include/austream.h diff --git a/dxsdk/Include/aviriff.h b/sdk/dx8sdk/Include/aviriff.h similarity index 100% rename from dxsdk/Include/aviriff.h rename to sdk/dx8sdk/Include/aviriff.h diff --git a/dxsdk/Include/bdaiface.h b/sdk/dx8sdk/Include/bdaiface.h similarity index 100% rename from dxsdk/Include/bdaiface.h rename to sdk/dx8sdk/Include/bdaiface.h diff --git a/dxsdk/Include/bdamedia.h b/sdk/dx8sdk/Include/bdamedia.h similarity index 100% rename from dxsdk/Include/bdamedia.h rename to sdk/dx8sdk/Include/bdamedia.h diff --git a/dxsdk/Include/bdatypes.h b/sdk/dx8sdk/Include/bdatypes.h similarity index 100% rename from dxsdk/Include/bdatypes.h rename to sdk/dx8sdk/Include/bdatypes.h diff --git a/dxsdk/Include/comlite.h b/sdk/dx8sdk/Include/comlite.h similarity index 100% rename from dxsdk/Include/comlite.h rename to sdk/dx8sdk/Include/comlite.h diff --git a/dxsdk/Include/control.h b/sdk/dx8sdk/Include/control.h similarity index 100% rename from dxsdk/Include/control.h rename to sdk/dx8sdk/Include/control.h diff --git a/dxsdk/Include/d3d.h b/sdk/dx8sdk/Include/d3d.h similarity index 100% rename from dxsdk/Include/d3d.h rename to sdk/dx8sdk/Include/d3d.h diff --git a/dxsdk/Include/d3d8.h b/sdk/dx8sdk/Include/d3d8.h similarity index 100% rename from dxsdk/Include/d3d8.h rename to sdk/dx8sdk/Include/d3d8.h diff --git a/dxsdk/Include/d3d8caps.h b/sdk/dx8sdk/Include/d3d8caps.h similarity index 100% rename from dxsdk/Include/d3d8caps.h rename to sdk/dx8sdk/Include/d3d8caps.h diff --git a/dxsdk/Include/d3d8types.h b/sdk/dx8sdk/Include/d3d8types.h similarity index 100% rename from dxsdk/Include/d3d8types.h rename to sdk/dx8sdk/Include/d3d8types.h diff --git a/dxsdk/Include/d3d9.h b/sdk/dx8sdk/Include/d3d9.h similarity index 100% rename from dxsdk/Include/d3d9.h rename to sdk/dx8sdk/Include/d3d9.h diff --git a/dxsdk/Include/d3d9caps.h b/sdk/dx8sdk/Include/d3d9caps.h similarity index 100% rename from dxsdk/Include/d3d9caps.h rename to sdk/dx8sdk/Include/d3d9caps.h diff --git a/dxsdk/Include/d3d9types.h b/sdk/dx8sdk/Include/d3d9types.h similarity index 100% rename from dxsdk/Include/d3d9types.h rename to sdk/dx8sdk/Include/d3d9types.h diff --git a/dxsdk/Include/d3dcaps.h b/sdk/dx8sdk/Include/d3dcaps.h similarity index 100% rename from dxsdk/Include/d3dcaps.h rename to sdk/dx8sdk/Include/d3dcaps.h diff --git a/dxsdk/Include/d3drm.h b/sdk/dx8sdk/Include/d3drm.h similarity index 100% rename from dxsdk/Include/d3drm.h rename to sdk/dx8sdk/Include/d3drm.h diff --git a/dxsdk/Include/d3drmdef.h b/sdk/dx8sdk/Include/d3drmdef.h similarity index 100% rename from dxsdk/Include/d3drmdef.h rename to sdk/dx8sdk/Include/d3drmdef.h diff --git a/dxsdk/Include/d3drmobj.h b/sdk/dx8sdk/Include/d3drmobj.h similarity index 100% rename from dxsdk/Include/d3drmobj.h rename to sdk/dx8sdk/Include/d3drmobj.h diff --git a/dxsdk/Include/d3drmwin.h b/sdk/dx8sdk/Include/d3drmwin.h similarity index 100% rename from dxsdk/Include/d3drmwin.h rename to sdk/dx8sdk/Include/d3drmwin.h diff --git a/dxsdk/Include/d3dtypes.h b/sdk/dx8sdk/Include/d3dtypes.h similarity index 100% rename from dxsdk/Include/d3dtypes.h rename to sdk/dx8sdk/Include/d3dtypes.h diff --git a/dxsdk/Include/d3dvec.inl b/sdk/dx8sdk/Include/d3dvec.inl similarity index 100% rename from dxsdk/Include/d3dvec.inl rename to sdk/dx8sdk/Include/d3dvec.inl diff --git a/dxsdk/Include/d3dx.h b/sdk/dx8sdk/Include/d3dx.h similarity index 100% rename from dxsdk/Include/d3dx.h rename to sdk/dx8sdk/Include/d3dx.h diff --git a/dxsdk/Include/d3dx8.h b/sdk/dx8sdk/Include/d3dx8.h similarity index 100% rename from dxsdk/Include/d3dx8.h rename to sdk/dx8sdk/Include/d3dx8.h diff --git a/dxsdk/Include/d3dx8core.h b/sdk/dx8sdk/Include/d3dx8core.h similarity index 100% rename from dxsdk/Include/d3dx8core.h rename to sdk/dx8sdk/Include/d3dx8core.h diff --git a/dxsdk/Include/d3dx8effect.h b/sdk/dx8sdk/Include/d3dx8effect.h similarity index 100% rename from dxsdk/Include/d3dx8effect.h rename to sdk/dx8sdk/Include/d3dx8effect.h diff --git a/dxsdk/Include/d3dx8math.h b/sdk/dx8sdk/Include/d3dx8math.h similarity index 100% rename from dxsdk/Include/d3dx8math.h rename to sdk/dx8sdk/Include/d3dx8math.h diff --git a/dxsdk/Include/d3dx8math.inl b/sdk/dx8sdk/Include/d3dx8math.inl similarity index 100% rename from dxsdk/Include/d3dx8math.inl rename to sdk/dx8sdk/Include/d3dx8math.inl diff --git a/dxsdk/Include/d3dx8mesh.h b/sdk/dx8sdk/Include/d3dx8mesh.h similarity index 100% rename from dxsdk/Include/d3dx8mesh.h rename to sdk/dx8sdk/Include/d3dx8mesh.h diff --git a/dxsdk/Include/d3dx8shape.h b/sdk/dx8sdk/Include/d3dx8shape.h similarity index 100% rename from dxsdk/Include/d3dx8shape.h rename to sdk/dx8sdk/Include/d3dx8shape.h diff --git a/dxsdk/Include/d3dx8tex.h b/sdk/dx8sdk/Include/d3dx8tex.h similarity index 100% rename from dxsdk/Include/d3dx8tex.h rename to sdk/dx8sdk/Include/d3dx8tex.h diff --git a/dxsdk/Include/d3dx9.h b/sdk/dx8sdk/Include/d3dx9.h similarity index 100% rename from dxsdk/Include/d3dx9.h rename to sdk/dx8sdk/Include/d3dx9.h diff --git a/dxsdk/Include/d3dx9anim.h b/sdk/dx8sdk/Include/d3dx9anim.h similarity index 100% rename from dxsdk/Include/d3dx9anim.h rename to sdk/dx8sdk/Include/d3dx9anim.h diff --git a/dxsdk/Include/d3dx9core.h b/sdk/dx8sdk/Include/d3dx9core.h similarity index 100% rename from dxsdk/Include/d3dx9core.h rename to sdk/dx8sdk/Include/d3dx9core.h diff --git a/dxsdk/Include/d3dx9effect.h b/sdk/dx8sdk/Include/d3dx9effect.h similarity index 100% rename from dxsdk/Include/d3dx9effect.h rename to sdk/dx8sdk/Include/d3dx9effect.h diff --git a/dxsdk/Include/d3dx9math.h b/sdk/dx8sdk/Include/d3dx9math.h similarity index 100% rename from dxsdk/Include/d3dx9math.h rename to sdk/dx8sdk/Include/d3dx9math.h diff --git a/dxsdk/Include/d3dx9math.inl b/sdk/dx8sdk/Include/d3dx9math.inl similarity index 100% rename from dxsdk/Include/d3dx9math.inl rename to sdk/dx8sdk/Include/d3dx9math.inl diff --git a/dxsdk/Include/d3dx9mesh.h b/sdk/dx8sdk/Include/d3dx9mesh.h similarity index 100% rename from dxsdk/Include/d3dx9mesh.h rename to sdk/dx8sdk/Include/d3dx9mesh.h diff --git a/dxsdk/Include/d3dx9shader.h b/sdk/dx8sdk/Include/d3dx9shader.h similarity index 100% rename from dxsdk/Include/d3dx9shader.h rename to sdk/dx8sdk/Include/d3dx9shader.h diff --git a/dxsdk/Include/d3dx9shape.h b/sdk/dx8sdk/Include/d3dx9shape.h similarity index 100% rename from dxsdk/Include/d3dx9shape.h rename to sdk/dx8sdk/Include/d3dx9shape.h diff --git a/dxsdk/Include/d3dx9tex.h b/sdk/dx8sdk/Include/d3dx9tex.h similarity index 100% rename from dxsdk/Include/d3dx9tex.h rename to sdk/dx8sdk/Include/d3dx9tex.h diff --git a/dxsdk/Include/d3dx9xof.h b/sdk/dx8sdk/Include/d3dx9xof.h similarity index 100% rename from dxsdk/Include/d3dx9xof.h rename to sdk/dx8sdk/Include/d3dx9xof.h diff --git a/dxsdk/Include/d3dxcore.h b/sdk/dx8sdk/Include/d3dxcore.h similarity index 100% rename from dxsdk/Include/d3dxcore.h rename to sdk/dx8sdk/Include/d3dxcore.h diff --git a/dxsdk/Include/d3dxerr.h b/sdk/dx8sdk/Include/d3dxerr.h similarity index 100% rename from dxsdk/Include/d3dxerr.h rename to sdk/dx8sdk/Include/d3dxerr.h diff --git a/dxsdk/Include/d3dxmath.h b/sdk/dx8sdk/Include/d3dxmath.h similarity index 100% rename from dxsdk/Include/d3dxmath.h rename to sdk/dx8sdk/Include/d3dxmath.h diff --git a/dxsdk/Include/d3dxmath.inl b/sdk/dx8sdk/Include/d3dxmath.inl similarity index 100% rename from dxsdk/Include/d3dxmath.inl rename to sdk/dx8sdk/Include/d3dxmath.inl diff --git a/dxsdk/Include/d3dxshapes.h b/sdk/dx8sdk/Include/d3dxshapes.h similarity index 100% rename from dxsdk/Include/d3dxshapes.h rename to sdk/dx8sdk/Include/d3dxshapes.h diff --git a/dxsdk/Include/d3dxsprite.h b/sdk/dx8sdk/Include/d3dxsprite.h similarity index 100% rename from dxsdk/Include/d3dxsprite.h rename to sdk/dx8sdk/Include/d3dxsprite.h diff --git a/dxsdk/Include/ddraw.h b/sdk/dx8sdk/Include/ddraw.h similarity index 100% rename from dxsdk/Include/ddraw.h rename to sdk/dx8sdk/Include/ddraw.h diff --git a/dxsdk/Include/ddstream.h b/sdk/dx8sdk/Include/ddstream.h similarity index 100% rename from dxsdk/Include/ddstream.h rename to sdk/dx8sdk/Include/ddstream.h diff --git a/dxsdk/Include/dinput.h b/sdk/dx8sdk/Include/dinput.h similarity index 100% rename from dxsdk/Include/dinput.h rename to sdk/dx8sdk/Include/dinput.h diff --git a/dxsdk/Include/dinputd.h b/sdk/dx8sdk/Include/dinputd.h similarity index 100% rename from dxsdk/Include/dinputd.h rename to sdk/dx8sdk/Include/dinputd.h diff --git a/dxsdk/Include/dls1.h b/sdk/dx8sdk/Include/dls1.h similarity index 100% rename from dxsdk/Include/dls1.h rename to sdk/dx8sdk/Include/dls1.h diff --git a/dxsdk/Include/dls2.h b/sdk/dx8sdk/Include/dls2.h similarity index 100% rename from dxsdk/Include/dls2.h rename to sdk/dx8sdk/Include/dls2.h diff --git a/dxsdk/Include/dmdls.h b/sdk/dx8sdk/Include/dmdls.h similarity index 100% rename from dxsdk/Include/dmdls.h rename to sdk/dx8sdk/Include/dmdls.h diff --git a/dxsdk/Include/dmerror.h b/sdk/dx8sdk/Include/dmerror.h similarity index 100% rename from dxsdk/Include/dmerror.h rename to sdk/dx8sdk/Include/dmerror.h diff --git a/dxsdk/Include/dmksctrl.h b/sdk/dx8sdk/Include/dmksctrl.h similarity index 100% rename from dxsdk/Include/dmksctrl.h rename to sdk/dx8sdk/Include/dmksctrl.h diff --git a/dxsdk/Include/dmo.h b/sdk/dx8sdk/Include/dmo.h similarity index 100% rename from dxsdk/Include/dmo.h rename to sdk/dx8sdk/Include/dmo.h diff --git a/dxsdk/Include/dmodshow.h b/sdk/dx8sdk/Include/dmodshow.h similarity index 100% rename from dxsdk/Include/dmodshow.h rename to sdk/dx8sdk/Include/dmodshow.h diff --git a/dxsdk/Include/dmoimpl.h b/sdk/dx8sdk/Include/dmoimpl.h similarity index 100% rename from dxsdk/Include/dmoimpl.h rename to sdk/dx8sdk/Include/dmoimpl.h diff --git a/dxsdk/Include/dmoreg.h b/sdk/dx8sdk/Include/dmoreg.h similarity index 100% rename from dxsdk/Include/dmoreg.h rename to sdk/dx8sdk/Include/dmoreg.h diff --git a/dxsdk/Include/dmort.h b/sdk/dx8sdk/Include/dmort.h similarity index 100% rename from dxsdk/Include/dmort.h rename to sdk/dx8sdk/Include/dmort.h diff --git a/dxsdk/Include/dmplugin.h b/sdk/dx8sdk/Include/dmplugin.h similarity index 100% rename from dxsdk/Include/dmplugin.h rename to sdk/dx8sdk/Include/dmplugin.h diff --git a/dxsdk/Include/dmusbuff.h b/sdk/dx8sdk/Include/dmusbuff.h similarity index 100% rename from dxsdk/Include/dmusbuff.h rename to sdk/dx8sdk/Include/dmusbuff.h diff --git a/dxsdk/Include/dmusicc.h b/sdk/dx8sdk/Include/dmusicc.h similarity index 100% rename from dxsdk/Include/dmusicc.h rename to sdk/dx8sdk/Include/dmusicc.h diff --git a/dxsdk/Include/dmusicf.h b/sdk/dx8sdk/Include/dmusicf.h similarity index 100% rename from dxsdk/Include/dmusicf.h rename to sdk/dx8sdk/Include/dmusicf.h diff --git a/dxsdk/Include/dmusici.h b/sdk/dx8sdk/Include/dmusici.h similarity index 100% rename from dxsdk/Include/dmusici.h rename to sdk/dx8sdk/Include/dmusici.h diff --git a/dxsdk/Include/dmusics.h b/sdk/dx8sdk/Include/dmusics.h similarity index 100% rename from dxsdk/Include/dmusics.h rename to sdk/dx8sdk/Include/dmusics.h diff --git a/dxsdk/Include/dpaddr.h b/sdk/dx8sdk/Include/dpaddr.h similarity index 100% rename from dxsdk/Include/dpaddr.h rename to sdk/dx8sdk/Include/dpaddr.h diff --git a/dxsdk/Include/dplay.h b/sdk/dx8sdk/Include/dplay.h similarity index 100% rename from dxsdk/Include/dplay.h rename to sdk/dx8sdk/Include/dplay.h diff --git a/dxsdk/Include/dplay8.h b/sdk/dx8sdk/Include/dplay8.h similarity index 100% rename from dxsdk/Include/dplay8.h rename to sdk/dx8sdk/Include/dplay8.h diff --git a/dxsdk/Include/dplobby.h b/sdk/dx8sdk/Include/dplobby.h similarity index 100% rename from dxsdk/Include/dplobby.h rename to sdk/dx8sdk/Include/dplobby.h diff --git a/dxsdk/Include/dplobby8.h b/sdk/dx8sdk/Include/dplobby8.h similarity index 100% rename from dxsdk/Include/dplobby8.h rename to sdk/dx8sdk/Include/dplobby8.h diff --git a/dxsdk/Include/dpnathlp.h b/sdk/dx8sdk/Include/dpnathlp.h similarity index 100% rename from dxsdk/Include/dpnathlp.h rename to sdk/dx8sdk/Include/dpnathlp.h diff --git a/dxsdk/Include/dsconf.h b/sdk/dx8sdk/Include/dsconf.h similarity index 100% rename from dxsdk/Include/dsconf.h rename to sdk/dx8sdk/Include/dsconf.h diff --git a/dxsdk/Include/dsetup.h b/sdk/dx8sdk/Include/dsetup.h similarity index 100% rename from dxsdk/Include/dsetup.h rename to sdk/dx8sdk/Include/dsetup.h diff --git a/dxsdk/Include/dshowasf.h b/sdk/dx8sdk/Include/dshowasf.h similarity index 100% rename from dxsdk/Include/dshowasf.h rename to sdk/dx8sdk/Include/dshowasf.h diff --git a/dxsdk/Include/dsound.h b/sdk/dx8sdk/Include/dsound.h similarity index 100% rename from dxsdk/Include/dsound.h rename to sdk/dx8sdk/Include/dsound.h diff --git a/dxsdk/Include/dv.h b/sdk/dx8sdk/Include/dv.h similarity index 100% rename from dxsdk/Include/dv.h rename to sdk/dx8sdk/Include/dv.h diff --git a/dxsdk/Include/dvdevcod.h b/sdk/dx8sdk/Include/dvdevcod.h similarity index 100% rename from dxsdk/Include/dvdevcod.h rename to sdk/dx8sdk/Include/dvdevcod.h diff --git a/dxsdk/Include/dvdmedia.h b/sdk/dx8sdk/Include/dvdmedia.h similarity index 100% rename from dxsdk/Include/dvdmedia.h rename to sdk/dx8sdk/Include/dvdmedia.h diff --git a/dxsdk/Include/dvoice.h b/sdk/dx8sdk/Include/dvoice.h similarity index 100% rename from dxsdk/Include/dvoice.h rename to sdk/dx8sdk/Include/dvoice.h diff --git a/dxsdk/Include/dvp.h b/sdk/dx8sdk/Include/dvp.h similarity index 100% rename from dxsdk/Include/dvp.h rename to sdk/dx8sdk/Include/dvp.h diff --git a/dxsdk/Include/dx7todx8.h b/sdk/dx8sdk/Include/dx7todx8.h similarity index 100% rename from dxsdk/Include/dx7todx8.h rename to sdk/dx8sdk/Include/dx7todx8.h diff --git a/dxsdk/Include/dxerr8.h b/sdk/dx8sdk/Include/dxerr8.h similarity index 100% rename from dxsdk/Include/dxerr8.h rename to sdk/dx8sdk/Include/dxerr8.h diff --git a/dxsdk/Include/dxerr9.h b/sdk/dx8sdk/Include/dxerr9.h similarity index 100% rename from dxsdk/Include/dxerr9.h rename to sdk/dx8sdk/Include/dxerr9.h diff --git a/dxsdk/Include/dxfile.h b/sdk/dx8sdk/Include/dxfile.h similarity index 100% rename from dxsdk/Include/dxfile.h rename to sdk/dx8sdk/Include/dxfile.h diff --git a/dxsdk/Include/dxtrans.h b/sdk/dx8sdk/Include/dxtrans.h similarity index 100% rename from dxsdk/Include/dxtrans.h rename to sdk/dx8sdk/Include/dxtrans.h diff --git a/dxsdk/Include/dxva.h b/sdk/dx8sdk/Include/dxva.h similarity index 100% rename from dxsdk/Include/dxva.h rename to sdk/dx8sdk/Include/dxva.h diff --git a/dxsdk/Include/edevctrl.h b/sdk/dx8sdk/Include/edevctrl.h similarity index 100% rename from dxsdk/Include/edevctrl.h rename to sdk/dx8sdk/Include/edevctrl.h diff --git a/dxsdk/Include/edevdefs.h b/sdk/dx8sdk/Include/edevdefs.h similarity index 100% rename from dxsdk/Include/edevdefs.h rename to sdk/dx8sdk/Include/edevdefs.h diff --git a/dxsdk/Include/errors.h b/sdk/dx8sdk/Include/errors.h similarity index 100% rename from dxsdk/Include/errors.h rename to sdk/dx8sdk/Include/errors.h diff --git a/dxsdk/Include/evcode.h b/sdk/dx8sdk/Include/evcode.h similarity index 100% rename from dxsdk/Include/evcode.h rename to sdk/dx8sdk/Include/evcode.h diff --git a/dxsdk/Include/il21dec.h b/sdk/dx8sdk/Include/il21dec.h similarity index 100% rename from dxsdk/Include/il21dec.h rename to sdk/dx8sdk/Include/il21dec.h diff --git a/dxsdk/Include/ks.h b/sdk/dx8sdk/Include/ks.h similarity index 100% rename from dxsdk/Include/ks.h rename to sdk/dx8sdk/Include/ks.h diff --git a/dxsdk/Include/ksguid.h b/sdk/dx8sdk/Include/ksguid.h similarity index 100% rename from dxsdk/Include/ksguid.h rename to sdk/dx8sdk/Include/ksguid.h diff --git a/dxsdk/Include/ksmedia.h b/sdk/dx8sdk/Include/ksmedia.h similarity index 100% rename from dxsdk/Include/ksmedia.h rename to sdk/dx8sdk/Include/ksmedia.h diff --git a/dxsdk/Include/ksproxy.h b/sdk/dx8sdk/Include/ksproxy.h similarity index 100% rename from dxsdk/Include/ksproxy.h rename to sdk/dx8sdk/Include/ksproxy.h diff --git a/dxsdk/Include/ksuuids.h b/sdk/dx8sdk/Include/ksuuids.h similarity index 100% rename from dxsdk/Include/ksuuids.h rename to sdk/dx8sdk/Include/ksuuids.h diff --git a/dxsdk/Include/mediaerr.h b/sdk/dx8sdk/Include/mediaerr.h similarity index 100% rename from dxsdk/Include/mediaerr.h rename to sdk/dx8sdk/Include/mediaerr.h diff --git a/dxsdk/Include/mediaobj.h b/sdk/dx8sdk/Include/mediaobj.h similarity index 100% rename from dxsdk/Include/mediaobj.h rename to sdk/dx8sdk/Include/mediaobj.h diff --git a/dxsdk/Include/medparam.h b/sdk/dx8sdk/Include/medparam.h similarity index 100% rename from dxsdk/Include/medparam.h rename to sdk/dx8sdk/Include/medparam.h diff --git a/dxsdk/Include/mixerocx.h b/sdk/dx8sdk/Include/mixerocx.h similarity index 100% rename from dxsdk/Include/mixerocx.h rename to sdk/dx8sdk/Include/mixerocx.h diff --git a/dxsdk/Include/mmstream.h b/sdk/dx8sdk/Include/mmstream.h similarity index 100% rename from dxsdk/Include/mmstream.h rename to sdk/dx8sdk/Include/mmstream.h diff --git a/dxsdk/Include/mpconfig.h b/sdk/dx8sdk/Include/mpconfig.h similarity index 100% rename from dxsdk/Include/mpconfig.h rename to sdk/dx8sdk/Include/mpconfig.h diff --git a/dxsdk/Include/mpeg2data.h b/sdk/dx8sdk/Include/mpeg2data.h similarity index 100% rename from dxsdk/Include/mpeg2data.h rename to sdk/dx8sdk/Include/mpeg2data.h diff --git a/dxsdk/Include/mpegtype.h b/sdk/dx8sdk/Include/mpegtype.h similarity index 100% rename from dxsdk/Include/mpegtype.h rename to sdk/dx8sdk/Include/mpegtype.h diff --git a/dxsdk/Include/multimon.h b/sdk/dx8sdk/Include/multimon.h similarity index 100% rename from dxsdk/Include/multimon.h rename to sdk/dx8sdk/Include/multimon.h diff --git a/dxsdk/Include/playlist.h b/sdk/dx8sdk/Include/playlist.h similarity index 100% rename from dxsdk/Include/playlist.h rename to sdk/dx8sdk/Include/playlist.h diff --git a/dxsdk/Include/qedit.h b/sdk/dx8sdk/Include/qedit.h similarity index 100% rename from dxsdk/Include/qedit.h rename to sdk/dx8sdk/Include/qedit.h diff --git a/dxsdk/Include/qnetwork.h b/sdk/dx8sdk/Include/qnetwork.h similarity index 100% rename from dxsdk/Include/qnetwork.h rename to sdk/dx8sdk/Include/qnetwork.h diff --git a/dxsdk/Include/regbag.h b/sdk/dx8sdk/Include/regbag.h similarity index 100% rename from dxsdk/Include/regbag.h rename to sdk/dx8sdk/Include/regbag.h diff --git a/dxsdk/Include/rmxfguid.h b/sdk/dx8sdk/Include/rmxfguid.h similarity index 100% rename from dxsdk/Include/rmxfguid.h rename to sdk/dx8sdk/Include/rmxfguid.h diff --git a/dxsdk/Include/rmxftmpl.h b/sdk/dx8sdk/Include/rmxftmpl.h similarity index 100% rename from dxsdk/Include/rmxftmpl.h rename to sdk/dx8sdk/Include/rmxftmpl.h diff --git a/dxsdk/Include/sbe.h b/sdk/dx8sdk/Include/sbe.h similarity index 100% rename from dxsdk/Include/sbe.h rename to sdk/dx8sdk/Include/sbe.h diff --git a/dxsdk/Include/strmif.h b/sdk/dx8sdk/Include/strmif.h similarity index 100% rename from dxsdk/Include/strmif.h rename to sdk/dx8sdk/Include/strmif.h diff --git a/dxsdk/Include/strsafe.h b/sdk/dx8sdk/Include/strsafe.h similarity index 100% rename from dxsdk/Include/strsafe.h rename to sdk/dx8sdk/Include/strsafe.h diff --git a/dxsdk/Include/tune.h b/sdk/dx8sdk/Include/tune.h similarity index 100% rename from dxsdk/Include/tune.h rename to sdk/dx8sdk/Include/tune.h diff --git a/dxsdk/Include/tuner.h b/sdk/dx8sdk/Include/tuner.h similarity index 100% rename from dxsdk/Include/tuner.h rename to sdk/dx8sdk/Include/tuner.h diff --git a/dxsdk/Include/tvratings.h b/sdk/dx8sdk/Include/tvratings.h similarity index 100% rename from dxsdk/Include/tvratings.h rename to sdk/dx8sdk/Include/tvratings.h diff --git a/dxsdk/Include/uuids.h b/sdk/dx8sdk/Include/uuids.h similarity index 100% rename from dxsdk/Include/uuids.h rename to sdk/dx8sdk/Include/uuids.h diff --git a/dxsdk/Include/vfwmsgs.h b/sdk/dx8sdk/Include/vfwmsgs.h similarity index 100% rename from dxsdk/Include/vfwmsgs.h rename to sdk/dx8sdk/Include/vfwmsgs.h diff --git a/dxsdk/Include/vidcap.h b/sdk/dx8sdk/Include/vidcap.h similarity index 100% rename from dxsdk/Include/vidcap.h rename to sdk/dx8sdk/Include/vidcap.h diff --git a/dxsdk/Include/videoacc.h b/sdk/dx8sdk/Include/videoacc.h similarity index 100% rename from dxsdk/Include/videoacc.h rename to sdk/dx8sdk/Include/videoacc.h diff --git a/dxsdk/Include/vmr9.h b/sdk/dx8sdk/Include/vmr9.h similarity index 100% rename from dxsdk/Include/vmr9.h rename to sdk/dx8sdk/Include/vmr9.h diff --git a/dxsdk/Include/vpconfig.h b/sdk/dx8sdk/Include/vpconfig.h similarity index 100% rename from dxsdk/Include/vpconfig.h rename to sdk/dx8sdk/Include/vpconfig.h diff --git a/dxsdk/Include/vpnotify.h b/sdk/dx8sdk/Include/vpnotify.h similarity index 100% rename from dxsdk/Include/vpnotify.h rename to sdk/dx8sdk/Include/vpnotify.h diff --git a/dxsdk/Include/vptype.h b/sdk/dx8sdk/Include/vptype.h similarity index 100% rename from dxsdk/Include/vptype.h rename to sdk/dx8sdk/Include/vptype.h diff --git a/dxsdk/Include/xprtdefs.h b/sdk/dx8sdk/Include/xprtdefs.h similarity index 100% rename from dxsdk/Include/xprtdefs.h rename to sdk/dx8sdk/Include/xprtdefs.h diff --git a/dxsdk/Lib/DxErr8.lib b/sdk/dx8sdk/Lib/DxErr8.lib similarity index 100% rename from dxsdk/Lib/DxErr8.lib rename to sdk/dx8sdk/Lib/DxErr8.lib diff --git a/dxsdk/Lib/DxErr9.lib b/sdk/dx8sdk/Lib/DxErr9.lib similarity index 100% rename from dxsdk/Lib/DxErr9.lib rename to sdk/dx8sdk/Lib/DxErr9.lib diff --git a/dxsdk/Lib/amstrmid.lib b/sdk/dx8sdk/Lib/amstrmid.lib similarity index 100% rename from dxsdk/Lib/amstrmid.lib rename to sdk/dx8sdk/Lib/amstrmid.lib diff --git a/dxsdk/Lib/d3d8.lib b/sdk/dx8sdk/Lib/d3d8.lib similarity index 100% rename from dxsdk/Lib/d3d8.lib rename to sdk/dx8sdk/Lib/d3d8.lib diff --git a/dxsdk/Lib/d3d9.lib b/sdk/dx8sdk/Lib/d3d9.lib similarity index 100% rename from dxsdk/Lib/d3d9.lib rename to sdk/dx8sdk/Lib/d3d9.lib diff --git a/dxsdk/Lib/d3dx.lib b/sdk/dx8sdk/Lib/d3dx.lib similarity index 100% rename from dxsdk/Lib/d3dx.lib rename to sdk/dx8sdk/Lib/d3dx.lib diff --git a/dxsdk/Lib/d3dx8.lib b/sdk/dx8sdk/Lib/d3dx8.lib similarity index 100% rename from dxsdk/Lib/d3dx8.lib rename to sdk/dx8sdk/Lib/d3dx8.lib diff --git a/dxsdk/Lib/d3dx8d.lib b/sdk/dx8sdk/Lib/d3dx8d.lib similarity index 100% rename from dxsdk/Lib/d3dx8d.lib rename to sdk/dx8sdk/Lib/d3dx8d.lib diff --git a/dxsdk/Lib/d3dx8dt.lib b/sdk/dx8sdk/Lib/d3dx8dt.lib similarity index 100% rename from dxsdk/Lib/d3dx8dt.lib rename to sdk/dx8sdk/Lib/d3dx8dt.lib diff --git a/dxsdk/Lib/d3dx9.lib b/sdk/dx8sdk/Lib/d3dx9.lib similarity index 100% rename from dxsdk/Lib/d3dx9.lib rename to sdk/dx8sdk/Lib/d3dx9.lib diff --git a/dxsdk/Lib/d3dx9d.lib b/sdk/dx8sdk/Lib/d3dx9d.lib similarity index 100% rename from dxsdk/Lib/d3dx9d.lib rename to sdk/dx8sdk/Lib/d3dx9d.lib diff --git a/dxsdk/Lib/d3dx9dt.lib b/sdk/dx8sdk/Lib/d3dx9dt.lib similarity index 100% rename from dxsdk/Lib/d3dx9dt.lib rename to sdk/dx8sdk/Lib/d3dx9dt.lib diff --git a/dxsdk/Lib/d3dxd.lib b/sdk/dx8sdk/Lib/d3dxd.lib similarity index 100% rename from dxsdk/Lib/d3dxd.lib rename to sdk/dx8sdk/Lib/d3dxd.lib diff --git a/dxsdk/Lib/d3dxof.lib b/sdk/dx8sdk/Lib/d3dxof.lib similarity index 100% rename from dxsdk/Lib/d3dxof.lib rename to sdk/dx8sdk/Lib/d3dxof.lib diff --git a/dxsdk/Lib/ddraw.lib b/sdk/dx8sdk/Lib/ddraw.lib similarity index 100% rename from dxsdk/Lib/ddraw.lib rename to sdk/dx8sdk/Lib/ddraw.lib diff --git a/dxsdk/Lib/dinput.lib b/sdk/dx8sdk/Lib/dinput.lib similarity index 100% rename from dxsdk/Lib/dinput.lib rename to sdk/dx8sdk/Lib/dinput.lib diff --git a/dxsdk/Lib/dinput8.lib b/sdk/dx8sdk/Lib/dinput8.lib similarity index 100% rename from dxsdk/Lib/dinput8.lib rename to sdk/dx8sdk/Lib/dinput8.lib diff --git a/dxsdk/Lib/dmoguids.lib b/sdk/dx8sdk/Lib/dmoguids.lib similarity index 100% rename from dxsdk/Lib/dmoguids.lib rename to sdk/dx8sdk/Lib/dmoguids.lib diff --git a/dxsdk/Lib/dplayx.lib b/sdk/dx8sdk/Lib/dplayx.lib similarity index 100% rename from dxsdk/Lib/dplayx.lib rename to sdk/dx8sdk/Lib/dplayx.lib diff --git a/dxsdk/Lib/dsetup.lib b/sdk/dx8sdk/Lib/dsetup.lib similarity index 100% rename from dxsdk/Lib/dsetup.lib rename to sdk/dx8sdk/Lib/dsetup.lib diff --git a/dxsdk/Lib/dsound.lib b/sdk/dx8sdk/Lib/dsound.lib similarity index 100% rename from dxsdk/Lib/dsound.lib rename to sdk/dx8sdk/Lib/dsound.lib diff --git a/dxsdk/Lib/dxguid.lib b/sdk/dx8sdk/Lib/dxguid.lib similarity index 100% rename from dxsdk/Lib/dxguid.lib rename to sdk/dx8sdk/Lib/dxguid.lib diff --git a/dxsdk/Lib/dxtrans.lib b/sdk/dx8sdk/Lib/dxtrans.lib similarity index 100% rename from dxsdk/Lib/dxtrans.lib rename to sdk/dx8sdk/Lib/dxtrans.lib diff --git a/dxsdk/Lib/encapi.lib b/sdk/dx8sdk/Lib/encapi.lib similarity index 100% rename from dxsdk/Lib/encapi.lib rename to sdk/dx8sdk/Lib/encapi.lib diff --git a/dxsdk/Lib/ksproxy.lib b/sdk/dx8sdk/Lib/ksproxy.lib similarity index 100% rename from dxsdk/Lib/ksproxy.lib rename to sdk/dx8sdk/Lib/ksproxy.lib diff --git a/dxsdk/Lib/ksuser.lib b/sdk/dx8sdk/Lib/ksuser.lib similarity index 100% rename from dxsdk/Lib/ksuser.lib rename to sdk/dx8sdk/Lib/ksuser.lib diff --git a/dxsdk/Lib/msdmo.lib b/sdk/dx8sdk/Lib/msdmo.lib similarity index 100% rename from dxsdk/Lib/msdmo.lib rename to sdk/dx8sdk/Lib/msdmo.lib diff --git a/dxsdk/Lib/quartz.lib b/sdk/dx8sdk/Lib/quartz.lib similarity index 100% rename from dxsdk/Lib/quartz.lib rename to sdk/dx8sdk/Lib/quartz.lib diff --git a/dxsdk/Lib/strmiids.lib b/sdk/dx8sdk/Lib/strmiids.lib similarity index 100% rename from dxsdk/Lib/strmiids.lib rename to sdk/dx8sdk/Lib/strmiids.lib diff --git a/milessdk/include/mss.h b/sdk/milessdk/include/mss.h similarity index 100% rename from milessdk/include/mss.h rename to sdk/milessdk/include/mss.h diff --git a/milessdk/lib/mss32.lib b/sdk/milessdk/lib/mss32.lib similarity index 100% rename from milessdk/lib/mss32.lib rename to sdk/milessdk/lib/mss32.lib diff --git a/rwsdk/include/d3d8/errcom.def b/sdk/rwsdk/include/d3d8/errcom.def similarity index 100% rename from rwsdk/include/d3d8/errcom.def rename to sdk/rwsdk/include/d3d8/errcom.def diff --git a/rwsdk/include/d3d8/errcore.def b/sdk/rwsdk/include/d3d8/errcore.def similarity index 100% rename from rwsdk/include/d3d8/errcore.def rename to sdk/rwsdk/include/d3d8/errcore.def diff --git a/rwsdk/include/d3d8/rpanisot.h b/sdk/rwsdk/include/d3d8/rpanisot.h similarity index 100% rename from rwsdk/include/d3d8/rpanisot.h rename to sdk/rwsdk/include/d3d8/rpanisot.h diff --git a/rwsdk/include/d3d8/rpanisot.rpe b/sdk/rwsdk/include/d3d8/rpanisot.rpe similarity index 100% rename from rwsdk/include/d3d8/rpanisot.rpe rename to sdk/rwsdk/include/d3d8/rpanisot.rpe diff --git a/rwsdk/include/d3d8/rpcollis.h b/sdk/rwsdk/include/d3d8/rpcollis.h similarity index 100% rename from rwsdk/include/d3d8/rpcollis.h rename to sdk/rwsdk/include/d3d8/rpcollis.h diff --git a/rwsdk/include/d3d8/rpcollis.rpe b/sdk/rwsdk/include/d3d8/rpcollis.rpe similarity index 100% rename from rwsdk/include/d3d8/rpcollis.rpe rename to sdk/rwsdk/include/d3d8/rpcollis.rpe diff --git a/rwsdk/include/d3d8/rpcriter.h b/sdk/rwsdk/include/d3d8/rpcriter.h similarity index 100% rename from rwsdk/include/d3d8/rpcriter.h rename to sdk/rwsdk/include/d3d8/rpcriter.h diff --git a/rwsdk/include/d3d8/rpdbgerr.c b/sdk/rwsdk/include/d3d8/rpdbgerr.c similarity index 100% rename from rwsdk/include/d3d8/rpdbgerr.c rename to sdk/rwsdk/include/d3d8/rpdbgerr.c diff --git a/rwsdk/include/d3d8/rpdbgerr.h b/sdk/rwsdk/include/d3d8/rpdbgerr.h similarity index 100% rename from rwsdk/include/d3d8/rpdbgerr.h rename to sdk/rwsdk/include/d3d8/rpdbgerr.h diff --git a/rwsdk/include/d3d8/rpdmorph.h b/sdk/rwsdk/include/d3d8/rpdmorph.h similarity index 100% rename from rwsdk/include/d3d8/rpdmorph.h rename to sdk/rwsdk/include/d3d8/rpdmorph.h diff --git a/rwsdk/include/d3d8/rpdmorph.rpe b/sdk/rwsdk/include/d3d8/rpdmorph.rpe similarity index 100% rename from rwsdk/include/d3d8/rpdmorph.rpe rename to sdk/rwsdk/include/d3d8/rpdmorph.rpe diff --git a/rwsdk/include/d3d8/rperror.h b/sdk/rwsdk/include/d3d8/rperror.h similarity index 100% rename from rwsdk/include/d3d8/rperror.h rename to sdk/rwsdk/include/d3d8/rperror.h diff --git a/rwsdk/include/d3d8/rphanim.h b/sdk/rwsdk/include/d3d8/rphanim.h similarity index 100% rename from rwsdk/include/d3d8/rphanim.h rename to sdk/rwsdk/include/d3d8/rphanim.h diff --git a/rwsdk/include/d3d8/rphanim.rpe b/sdk/rwsdk/include/d3d8/rphanim.rpe similarity index 100% rename from rwsdk/include/d3d8/rphanim.rpe rename to sdk/rwsdk/include/d3d8/rphanim.rpe diff --git a/rwsdk/include/d3d8/rplodatm.h b/sdk/rwsdk/include/d3d8/rplodatm.h similarity index 100% rename from rwsdk/include/d3d8/rplodatm.h rename to sdk/rwsdk/include/d3d8/rplodatm.h diff --git a/rwsdk/include/d3d8/rplodatm.rpe b/sdk/rwsdk/include/d3d8/rplodatm.rpe similarity index 100% rename from rwsdk/include/d3d8/rplodatm.rpe rename to sdk/rwsdk/include/d3d8/rplodatm.rpe diff --git a/rwsdk/include/d3d8/rplogo.h b/sdk/rwsdk/include/d3d8/rplogo.h similarity index 100% rename from rwsdk/include/d3d8/rplogo.h rename to sdk/rwsdk/include/d3d8/rplogo.h diff --git a/rwsdk/include/d3d8/rplogo.rpe b/sdk/rwsdk/include/d3d8/rplogo.rpe similarity index 100% rename from rwsdk/include/d3d8/rplogo.rpe rename to sdk/rwsdk/include/d3d8/rplogo.rpe diff --git a/rwsdk/include/d3d8/rpltmap.h b/sdk/rwsdk/include/d3d8/rpltmap.h similarity index 100% rename from rwsdk/include/d3d8/rpltmap.h rename to sdk/rwsdk/include/d3d8/rpltmap.h diff --git a/rwsdk/include/d3d8/rpltmap.rpe b/sdk/rwsdk/include/d3d8/rpltmap.rpe similarity index 100% rename from rwsdk/include/d3d8/rpltmap.rpe rename to sdk/rwsdk/include/d3d8/rpltmap.rpe diff --git a/rwsdk/include/d3d8/rpmatfx.h b/sdk/rwsdk/include/d3d8/rpmatfx.h similarity index 100% rename from rwsdk/include/d3d8/rpmatfx.h rename to sdk/rwsdk/include/d3d8/rpmatfx.h diff --git a/rwsdk/include/d3d8/rpmatfx.rpe b/sdk/rwsdk/include/d3d8/rpmatfx.rpe similarity index 100% rename from rwsdk/include/d3d8/rpmatfx.rpe rename to sdk/rwsdk/include/d3d8/rpmatfx.rpe diff --git a/rwsdk/include/d3d8/rpmipkl.h b/sdk/rwsdk/include/d3d8/rpmipkl.h similarity index 100% rename from rwsdk/include/d3d8/rpmipkl.h rename to sdk/rwsdk/include/d3d8/rpmipkl.h diff --git a/rwsdk/include/d3d8/rpmipkl.rpe b/sdk/rwsdk/include/d3d8/rpmipkl.rpe similarity index 100% rename from rwsdk/include/d3d8/rpmipkl.rpe rename to sdk/rwsdk/include/d3d8/rpmipkl.rpe diff --git a/rwsdk/include/d3d8/rpmorph.h b/sdk/rwsdk/include/d3d8/rpmorph.h similarity index 100% rename from rwsdk/include/d3d8/rpmorph.h rename to sdk/rwsdk/include/d3d8/rpmorph.h diff --git a/rwsdk/include/d3d8/rpmorph.rpe b/sdk/rwsdk/include/d3d8/rpmorph.rpe similarity index 100% rename from rwsdk/include/d3d8/rpmorph.rpe rename to sdk/rwsdk/include/d3d8/rpmorph.rpe diff --git a/rwsdk/include/d3d8/rppatch.h b/sdk/rwsdk/include/d3d8/rppatch.h similarity index 100% rename from rwsdk/include/d3d8/rppatch.h rename to sdk/rwsdk/include/d3d8/rppatch.h diff --git a/rwsdk/include/d3d8/rppatch.rpe b/sdk/rwsdk/include/d3d8/rppatch.rpe similarity index 100% rename from rwsdk/include/d3d8/rppatch.rpe rename to sdk/rwsdk/include/d3d8/rppatch.rpe diff --git a/rwsdk/include/d3d8/rpprtstd.h b/sdk/rwsdk/include/d3d8/rpprtstd.h similarity index 100% rename from rwsdk/include/d3d8/rpprtstd.h rename to sdk/rwsdk/include/d3d8/rpprtstd.h diff --git a/rwsdk/include/d3d8/rpprtstd.rpe b/sdk/rwsdk/include/d3d8/rpprtstd.rpe similarity index 100% rename from rwsdk/include/d3d8/rpprtstd.rpe rename to sdk/rwsdk/include/d3d8/rpprtstd.rpe diff --git a/rwsdk/include/d3d8/rpptank.h b/sdk/rwsdk/include/d3d8/rpptank.h similarity index 100% rename from rwsdk/include/d3d8/rpptank.h rename to sdk/rwsdk/include/d3d8/rpptank.h diff --git a/rwsdk/include/d3d8/rpptank.rpe b/sdk/rwsdk/include/d3d8/rpptank.rpe similarity index 100% rename from rwsdk/include/d3d8/rpptank.rpe rename to sdk/rwsdk/include/d3d8/rpptank.rpe diff --git a/rwsdk/include/d3d8/rppvs.h b/sdk/rwsdk/include/d3d8/rppvs.h similarity index 100% rename from rwsdk/include/d3d8/rppvs.h rename to sdk/rwsdk/include/d3d8/rppvs.h diff --git a/rwsdk/include/d3d8/rppvs.rpe b/sdk/rwsdk/include/d3d8/rppvs.rpe similarity index 100% rename from rwsdk/include/d3d8/rppvs.rpe rename to sdk/rwsdk/include/d3d8/rppvs.rpe diff --git a/rwsdk/include/d3d8/rprandom.h b/sdk/rwsdk/include/d3d8/rprandom.h similarity index 100% rename from rwsdk/include/d3d8/rprandom.h rename to sdk/rwsdk/include/d3d8/rprandom.h diff --git a/rwsdk/include/d3d8/rprandom.rpe b/sdk/rwsdk/include/d3d8/rprandom.rpe similarity index 100% rename from rwsdk/include/d3d8/rprandom.rpe rename to sdk/rwsdk/include/d3d8/rprandom.rpe diff --git a/rwsdk/include/d3d8/rpskin.h b/sdk/rwsdk/include/d3d8/rpskin.h similarity index 100% rename from rwsdk/include/d3d8/rpskin.h rename to sdk/rwsdk/include/d3d8/rpskin.h diff --git a/rwsdk/include/d3d8/rpskin.rpe b/sdk/rwsdk/include/d3d8/rpskin.rpe similarity index 100% rename from rwsdk/include/d3d8/rpskin.rpe rename to sdk/rwsdk/include/d3d8/rpskin.rpe diff --git a/rwsdk/include/d3d8/rpspline.h b/sdk/rwsdk/include/d3d8/rpspline.h similarity index 100% rename from rwsdk/include/d3d8/rpspline.h rename to sdk/rwsdk/include/d3d8/rpspline.h diff --git a/rwsdk/include/d3d8/rpspline.rpe b/sdk/rwsdk/include/d3d8/rpspline.rpe similarity index 100% rename from rwsdk/include/d3d8/rpspline.rpe rename to sdk/rwsdk/include/d3d8/rpspline.rpe diff --git a/rwsdk/include/d3d8/rpusrdat.h b/sdk/rwsdk/include/d3d8/rpusrdat.h similarity index 100% rename from rwsdk/include/d3d8/rpusrdat.h rename to sdk/rwsdk/include/d3d8/rpusrdat.h diff --git a/rwsdk/include/d3d8/rpusrdat.rpe b/sdk/rwsdk/include/d3d8/rpusrdat.rpe similarity index 100% rename from rwsdk/include/d3d8/rpusrdat.rpe rename to sdk/rwsdk/include/d3d8/rpusrdat.rpe diff --git a/rwsdk/include/d3d8/rpworld.h b/sdk/rwsdk/include/d3d8/rpworld.h similarity index 100% rename from rwsdk/include/d3d8/rpworld.h rename to sdk/rwsdk/include/d3d8/rpworld.h diff --git a/rwsdk/include/d3d8/rpworld.rpe b/sdk/rwsdk/include/d3d8/rpworld.rpe similarity index 100% rename from rwsdk/include/d3d8/rpworld.rpe rename to sdk/rwsdk/include/d3d8/rpworld.rpe diff --git a/rwsdk/include/d3d8/rt2d.h b/sdk/rwsdk/include/d3d8/rt2d.h similarity index 100% rename from rwsdk/include/d3d8/rt2d.h rename to sdk/rwsdk/include/d3d8/rt2d.h diff --git a/rwsdk/include/d3d8/rt2d.rpe b/sdk/rwsdk/include/d3d8/rt2d.rpe similarity index 100% rename from rwsdk/include/d3d8/rt2d.rpe rename to sdk/rwsdk/include/d3d8/rt2d.rpe diff --git a/rwsdk/include/d3d8/rt2danim.h b/sdk/rwsdk/include/d3d8/rt2danim.h similarity index 100% rename from rwsdk/include/d3d8/rt2danim.h rename to sdk/rwsdk/include/d3d8/rt2danim.h diff --git a/rwsdk/include/d3d8/rt2danim.rpe b/sdk/rwsdk/include/d3d8/rt2danim.rpe similarity index 100% rename from rwsdk/include/d3d8/rt2danim.rpe rename to sdk/rwsdk/include/d3d8/rt2danim.rpe diff --git a/sdk/rwsdk/include/d3d8/rtanim.h b/sdk/rwsdk/include/d3d8/rtanim.h new file mode 100644 index 00000000..4def7f1f --- /dev/null +++ b/sdk/rwsdk/include/d3d8/rtanim.h @@ -0,0 +1,638 @@ +#ifndef RTANIM_H +#define RTANIM_H + +#include /* automatically generated header file */ + +#define rtANIMSTREAMCURRENTVERSION 0x100 + +/* Doxygen plugin groups. */ + +/** + * \defgroup rtanim RtAnim + * \ingroup animtools + * + * Animation Toolkit for RenderWare Graphics. + */ + +/** + * \ingroup rtanim + * Typedef for struct \ref RtAnimAnimation. + */ +typedef struct RtAnimAnimation RtAnimAnimation; + +/* + * The following CallBacks are needed for each interpolation scheme. + * See RtAnimInterpolatorInfo. + */ + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameApplyCallBack + * defines a callback function for converting + * an interpolated animation keyframe into the required result. + * + * \param result Void pointer to store the output of the conversion. + * \param voidIFrame Void pointer to the keyframe and should be cast + * to the interpolated keyframe type this callback + * is for. + */ +typedef void (*RtAnimKeyFrameApplyCallBack) (void *result, void *voidIFrame); + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameBlendCallBack + * defines a callback function for blending between two + * interpolated keyframes by the given blend factor. This is used for + * blending the states of two different \ref RtAnimInterpolator objects. + * The \ref RtAnimKeyFrameInterpolateCallBack is used for interpolating + * actual animation keyframes into an interpolated frame. + * + * \param voidOut Void pointer to store the output of the blend. + * \param voidIn1 Void pointer containing the first input + * interpolated keyframe. + * \param voidIn2 Void pointer containing the second input + * interpolated keyframe. + * \param alpha \ref RwReal containing the blend factor. + */ +typedef void (*RtAnimKeyFrameBlendCallBack) (void *voidOut, void *voidIn1, + void *voidIn2, RwReal alpha); + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameInterpolateCallBack + * defines a callback function for interpolating between two + * animation keyframes according to the given time. The output is + * an interpolated frame object residing in an \ref RtAnimInterpolator + * and will usually have the same structure as the keyframe apart from + * the header data (\ref RtAnimInterpFrameHeader). + * + * \param voidOut Void pointer for the output of the interpolation. + * \param voidIn1 Void pointer containing the first input keyframe. + * \param voidIn2 Void pointer containing the second input keyframe. + * \param time \ref RwReal containing the time at which to interpolate. + */ +typedef void (*RtAnimKeyFrameInterpolateCallBack) (void *voidOut, void *voidIn1, + void *voidIn2, RwReal time); + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameAddCallBack + * defines a callback function for adding two interpolated + * keyframes together. This is used when adding the states of two + * \ref RtAnimInterpolator objects, such as when adding a delta animation + * to a base animation. + * + * \param voidOut Void pointer for the output interpolated frame. + * \param voidIn1 Void pointer containing the first input + * interpoalted keyframe. + * \param voidIn2 Void pointer containing the second input + * interpolated keyframe. + */ +typedef void (*RtAnimKeyFrameAddCallBack) (void *voidOut, void *voidIn1, + void *voidIn2); + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameMulRecipCallBack + * defines a callback function for multiplying a keyframe + * by the inverse of another keyframe. This is used for creating delta + * animations. + * + * \param voidFrame Void pointer for the keyframe to be modified. + * \param voidStart Void pointer for the start keyframe to take the reciprocal of. + */ +typedef void (*RtAnimKeyFrameMulRecipCallBack) + (void *voidFrame, void *voidStart); + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameStreamReadCallBack + * defines a callback function for reading in keyframes + * from an \ref RwStream for the given animation. + * + * \param stream Pointer to the \ref RwStream to read the keyframes from. + * \param animation Pointer to the \ref RtAnimAnimation to read the keyframes into. + * + * \return Pointer to the \ref RtAnimAnimation. + */ +typedef RtAnimAnimation * (*RtAnimKeyFrameStreamReadCallBack) + (RwStream *stream, RtAnimAnimation *animation); + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameStreamWriteCallBack + * defines a callback function for writing keyframes from the + * given animation to an \ref RwStream. + * + * \param animation Pointer to the \ref RtAnimAnimation to write out from. + * \param stream Pointer to the \ref RwStream to write the keyframes to. + * + * \return \ref RwBool, TRUE if successful. + */ +typedef RwBool (*RtAnimKeyFrameStreamWriteCallBack) + (RtAnimAnimation *animation, RwStream *stream); + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameStreamGetSizeCallBack + * defines a callback function for calculating the binary stream + * size of keyframe data within an animation. + * + * \param animation Pointer to the \ref RtAnimAnimation to calculate sizes from. + * + * \return \ref RwInt32 containing the size, in bytes, of the keyframe data. + */ +typedef RwInt32 (*RtAnimKeyFrameStreamGetSizeCallBack) + (RtAnimAnimation *animation); + +/** + * \ingroup rtanim + * \ref RtAnimInterpolatorInfo + * Typedef for struct \ref RtAnimInterpolatorInfo + */ +typedef struct RtAnimInterpolatorInfo RtAnimInterpolatorInfo; + +/** + * \ingroup rtanim + * \struct RtAnimInterpolatorInfo + * This structure is used to hold information for a keyframe interpolation scheme. + * + * \see RtAnimRegisterInterpolationScheme + * \see RtAnimGetInterpolatorInfo + */ +struct RtAnimInterpolatorInfo +{ + RwInt32 typeID; + /**< The ID of the interpolation scheme. */ + RwInt32 keyFrameSize; + /**< Size, in bytes, of the keyframe structure. */ + RtAnimKeyFrameApplyCallBack keyFrameApplyCB; + /**< Pointer to a function that converts a keyframe to the needed + * format. This function is never called from the \ref rtanim + * toolkit (as the toolit doesn't know the data layout of the + * results) but is stored to ease the creation of overloaded + * interpolators. */ + RtAnimKeyFrameBlendCallBack keyFrameBlendCB; + /**< Pointer to a function that blends between two + * interpolated keyframes, for the purpose of blending + * between the states of two \ref RtAnimInterpolator objects. */ + RtAnimKeyFrameInterpolateCallBack keyFrameInterpolateCB; + /**< Pointer to a function that interpolates between two keyframes + * for a given time in between. */ + RtAnimKeyFrameAddCallBack keyFrameAddCB; + /**< Pointer to a function that adds two interpolated keyframes + * for the purpose of adding the states of two + * \ref RtAnimInterpolator objects. */ + RtAnimKeyFrameMulRecipCallBack keyFrameMulRecipCB; + /**< Pointer to a function that multiplies a keyframe by the + * reciprocal of another. */ + RtAnimKeyFrameStreamReadCallBack keyFrameStreamReadCB; + /**< Pointer to a function that reads the keyframes from a stream + * for a given animation. */ + RtAnimKeyFrameStreamWriteCallBack keyFrameStreamWriteCB; + /**< Pointer to a function that writes the keyframes to a stream for + * a given animation. */ + RtAnimKeyFrameStreamGetSizeCallBack keyFrameStreamGetSizeCB; + /**< Pointer to a function that returns the binary stream size of + * the keyframes for a given animation. */ +}; + + +/** + * \ingroup rtanim + * \struct RtAnimAnimation + * A keyframed animation consists of an array of keyframe structures, + * along with some flags and a duration. + * + * The keyframes should be presented in the order they are needed + * to animate forwards through time. That is, the next keyframe + * at some point in the sequence should correspond to the node whose + * previous two keyframes are next to expire as an interpolation + * pair. + * + * Put another way, the correct ordering can be achieved by sorting + * an unordered keyframe array using the following primary and secondary + * sort keys:- + * + * - time of previous keyframe for node + * - node index + * + * An example is shown in the following diagram, where each vertical bar + * indicates a keyframe point in time. The position of the keyframe + * within the animation sequence is shown by an index to the left of + * each bar. + * + * \verbatim + + t=0 t=duration + node 0 kf0..| kf3.......| kf8....| kf10....| + node 1 kf1..| kf4...| kf6........| kf11....| + node 2 kf2..| kf5.....| kf7..| kf9.........| + + \endverbatim + * + * Each node MUST have an initial keyframe at time = 0.0, and a terminal + * keyframe at time = duration of the animation. + * + * Pointers link all of the keyframes for a particular node backwards + * through time in a list. + * + * \see RtAnimAnimationCreate + */ +struct RtAnimAnimation +{ + RtAnimInterpolatorInfo *interpInfo; + /**< Pointer to interpolation scheme information */ + RwInt32 numFrames; + /**< Number of keyframes in the animation */ + RwInt32 flags; + /**< Specifies details about animation, + * relative translation modes etc. */ + RwReal duration; + /**< Duration of animation in seconds */ + void *pFrames; + /**< Pointer to the animation keyframes */ +}; + +/** + * \ingroup rtanim + * \ref RtAnimKeyFrameHeader + * Typedef for struct RtAnimKeyFrameHeader + */ +typedef struct RtAnimKeyFrameHeader RtAnimKeyFrameHeader; + +/** + * \ingroup rtanim + * \struct RtAnimKeyFrameHeader + * holds header information for a keyframe. All keyframe structures used with + * the overloadable interpolation system should start with this data. + * + * \see RtAnimRegisterInterpolationScheme + */ +struct RtAnimKeyFrameHeader +{ + void *prevFrame; + /**< Previous keyframe for particular hierarchy node */ + RwReal time; + /**< Time at keyframe */ +}; + +/** + * \ingroup rtanim + * \ref RtAnimInterpFrameHeader + * Typedef for struct RtAnimInterpFrameHeader + */ +typedef struct RtAnimInterpFrameHeader RtAnimInterpFrameHeader; + +/** + * \ingroup rtanim + * \struct RtAnimInterpFrameHeader + * is the header for an interpolated animation frame, intermediate + * between a keyframe pair. This structure is intentionally the same size as an + * \ref RtAnimKeyFrameHeader, so that an interpolated frame and key frame data + * block can be otherwise identical. It relies on the + * fact that the prevFrame and time fields of a keyframe header are not + * relevant to an interpolated frame. These fields should therefore not be + * be modified by a custom keyframe interpolator. + * + * \see RtAnimRegisterInterpolationScheme + */ +struct RtAnimInterpFrameHeader +{ + RtAnimKeyFrameHeader *keyFrame1; + /**< Pointer to the first of the current pair of keyframes in + the associated \ref RtAnimAnimation */ + RtAnimKeyFrameHeader *keyFrame2; + /**< Pointer to the second of the current pair of keyframes in + the associated \ref RtAnimAnimation */ +}; + +/** + * \ingroup rtanim + * \ref RtAnimInterpolator + * Typedef for struct \ref RtAnimInterpolator + */ +typedef struct RtAnimInterpolator RtAnimInterpolator; + +/** + * \ingroup rtanim + * \ref RtAnimCallBack + * defines a callback function for use with the + * \ref RtAnimInterpolatorSetAnimCallBack and + * \ref RtAnimInterpolatorSetAnimLoopCallBack functions. + * + * \param animInstance + * A pointer to the \ref RtAnimInterpolator structure. + * + * \param data Void pointer for user-defined data. + * You can use this to pass your own data + * structure(s) to the callback function. + * + * \see RtAnimInterpolatorSetAnimCallBack + * \see RtAnimInterpolatorSetAnimLoopCallBack + * + */ + +typedef RtAnimInterpolator * (*RtAnimCallBack) + (RtAnimInterpolator *animInstance, + void *data); + +/** + * \ingroup rtanim + * \struct RtAnimInterpolator + * holds the current state for a particular instance of an animation, + * corresponding to a specific point in time. + * + * The current interpolated keyframes are stored in an array after the + * end of this structure. For advanced use, these may be accessed + * using the macro rtANIMGETINTERPFRAME(interpolator, nodeIndex) + * which takes a pointer to the interpolator and the node index + * for the interpolated keyframe required. + * + * \see \ref RtAnimInterpolatorCreate + * \see \ref RtAnimInterpolatorDestroy + * \see \ref RtAnimInterpolatorSetCurrentAnim + * \see \ref RtAnimInterpolatorGetCurrentAnim + * \see \ref RtAnimInterpolatorSetKeyFrameCallBacks + * \see \ref RtAnimInterpolatorSetAnimLoopCallBack + * \see \ref RtAnimInterpolatorSetAnimCallBack + * \see \ref RtAnimInterpolatorCopy + * \see \ref RtAnimInterpolatorSubAnimTime + * \see \ref RtAnimInterpolatorAddAnimTime + * \see \ref RtAnimInterpolatorSetCurrentTime + * \see \ref RtAnimCallBack + */ +struct RtAnimInterpolator +{ + RtAnimAnimation *pCurrentAnim; + /**< Current \ref RtAnimAnimation applied */ + RwReal currentTime; + /**< Current animation time */ + void *pNextFrame; + /**< Next animation keyframe to be played */ + RtAnimCallBack pAnimCallBack; + /**< Animation callback function pointer */ + void *pAnimCallBackData; + /**< Animation callback function user data */ + RwReal animCallBackTime; + /**< Trigger time for callback function */ + RtAnimCallBack pAnimLoopCallBack; + /**< Animation loop callback function pointer */ + void *pAnimLoopCallBackData; + /**< Animation loop callback function data */ + RwInt32 maxKeyFrameSize; + /**< Maximum size of keyframes usable on + * this animation (set at creation time) */ + RwInt32 currentKeyFrameSize; + /**< Size of keyframes in the current + * animation */ + RwInt32 numNodes; + /**< Number of nodes driven by the animation */ + RwBool isSubInterpolator; + /**< Internal use */ + RwInt32 offsetInParent; + /**< Internal use */ + RtAnimInterpolator *parentAnimation; + /**< Internal use */ + + RtAnimKeyFrameApplyCallBack keyFrameApplyCB; + /**< Internal use */ + RtAnimKeyFrameBlendCallBack keyFrameBlendCB; + /**< Internal use */ + RtAnimKeyFrameInterpolateCallBack keyFrameInterpolateCB; + /**< Internal use */ + RtAnimKeyFrameAddCallBack keyFrameAddCB; + /**< Internal use */ +}; + +/* Access to array of interpolated frames occupying a block of memory + * after the end of the RtAnimInterpolator structure. + */ +#define rtANIMGETINTERPFRAME( anim, nodeIndex ) \ + ( (void *)( ( (RwUInt8 *)&(anim[1]) + \ + ((nodeIndex) * \ + anim->currentKeyFrameSize) ) ) ) + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/* Engine functions */ +extern void +RtAnimAnimationFreeListCreateParams( RwInt32 blockSize, RwInt32 numBlocksToPrealloc ); + +extern RwBool +RtAnimInitialize(void); + +extern RwBool +RtAnimRegisterInterpolationScheme(RtAnimInterpolatorInfo *interpolatorInfo); + +extern RtAnimInterpolatorInfo * +RtAnimGetInterpolatorInfo(RwInt32 typeID); + +/* RtAnimAnimation */ +extern RtAnimAnimation * +RtAnimAnimationCreate(RwInt32 typeID, + RwInt32 numFrames, + RwInt32 flags, + RwReal duration); + +extern RtAnimAnimation * +RtAnimAnimationDestroy(RtAnimAnimation *animation); + +extern RtAnimAnimation * +RtAnimAnimationRead(const RwChar * filename); + +extern RwBool +RtAnimAnimationWrite(RtAnimAnimation *animation, + const RwChar * filename); + +extern RtAnimAnimation * +RtAnimAnimationStreamRead(RwStream *stream); + +extern RwBool +RtAnimAnimationStreamWrite(RtAnimAnimation *animation, + RwStream *stream); + +extern RwInt32 +RtAnimAnimationStreamGetSize(RtAnimAnimation *animation); + +extern RwUInt32 +RtAnimAnimationGetNumNodes(RtAnimAnimation *animation); + +#ifdef RWDEBUG + +extern RwInt32 +RtAnimAnimationGetTypeID(RtAnimAnimation *animation); + +#else /* RWDEBUG */ + +#define RtAnimAnimationGetTypeID(animation) \ + (animation->interpInfo->typeID) + +#endif /* RWDEBUG */ + +/* RtAnimInterpolator */ +extern RtAnimInterpolator * +RtAnimInterpolatorCreate(RwInt32 numNodes, + RwInt32 maxKeyFrameSize); + +extern void +RtAnimInterpolatorDestroy(RtAnimInterpolator *anim); + +extern RwBool +RtAnimInterpolatorSetCurrentAnim(RtAnimInterpolator *animI, + RtAnimAnimation *anim); + + +#ifdef RWDEBUG + +extern RtAnimAnimation * +RtAnimInterpolatorGetCurrentAnim(RtAnimInterpolator *animI); + +#else /* RWDEBUG */ + +#define RtAnimInterpolatorGetCurrentAnim(animI) \ + (animI->pCurrentAnim) + +#endif /* RWDEBUG */ + + +extern RwBool +RtAnimInterpolatorSetKeyFrameCallBacks(RtAnimInterpolator *anim, + RwInt32 keyFrameTypeID); + + +extern void +RtAnimInterpolatorSetAnimLoopCallBack(RtAnimInterpolator *anim, + RtAnimCallBack callBack, + void *data ); + +extern void +RtAnimInterpolatorSetAnimCallBack(RtAnimInterpolator *anim, + RtAnimCallBack callBack, + RwReal time, + void *data ); + +extern RwBool +RtAnimInterpolatorCopy(RtAnimInterpolator *outAnim, + RtAnimInterpolator *inAnim); + +extern RwBool +RtAnimInterpolatorSubAnimTime(RtAnimInterpolator *anim, + RwReal time); + +extern RwBool +RtAnimInterpolatorAddAnimTime(RtAnimInterpolator *anim, + RwReal time); + +extern RwBool +RtAnimInterpolatorSetCurrentTime(RtAnimInterpolator *anim, + RwReal time); + +extern RwBool +RtAnimAnimationMakeDelta(RtAnimAnimation *animation, + RwInt32 numNodes, + RwReal time); + + +extern RwBool +RtAnimInterpolatorBlend(RtAnimInterpolator *outAnim, + RtAnimInterpolator *inAnim1, + RtAnimInterpolator *inAnim2, + RwReal alpha); + +extern RwBool +RtAnimInterpolatorAddTogether(RtAnimInterpolator *outAnim, + RtAnimInterpolator *inAnim1, + RtAnimInterpolator *inAnim2); + +#define RtAnimKeyFrameApplyMacro(animation, out, in) \ +MACRO_START \ +{ \ + (anim)->keyFrameApplyCB((out), (in1), (in2), (time)); \ +} \ +MACRO_STOP + + +#define RtAnimKeyFrameInterpolateMacro(anim, out, in1, in2, time) \ +MACRO_START \ +{ \ + (anim)->keyFrameInterpolateCB((out), (in1), (in2), (time)); \ +} \ +MACRO_STOP + +#define RtAnimKeyFrameBlendMacro(anim, out, in1, in2, fAlpha) \ +MACRO_START \ +{ \ + (anim)->keyFrameBlendCB((out), (in1), (in2), (fAlpha)); \ +} \ +MACRO_STOP + +#define RtAnimKeyFrameAddTogetherMacro(anim, out, in1, in2) \ +MACRO_START \ +{ \ + (anim)->keyFrameAddCB((out), (in1), (in2)); \ +} \ +MACRO_STOP + +#ifdef RWDEBUG +extern void +RtAnimKeyFrameApply(RtAnimInterpolator *animation, + void *result, void *iFrame); + +extern void +RtAnimKeyFrameInterpolate(RtAnimInterpolator *animation, + void *out, void *in1, + void *in2, RwReal time); + +extern void +RtAnimKeyFrameBlend(RtAnimInterpolator *animation, + void *out, + void *in1, + void *in2, + RwReal alpha); + +extern void +RtAnimKeyFrameAddTogether(RtAnimInterpolator *animation, + void *out, void *in1, void *in2); + +#else /* RWDEBUG */ +#define RtAnimKeyFrameApply(animation, out, in) \ + RtAnimKeyFrameApplyMacro(animation, out, in) + +#define RtAnimKeyFrameInterpolate(animation, out, in1, in2, time) \ + RtAnimKeyFrameInterpolateMacro(animation, out, in1, in2, time) + +#define RtAnimKeyFrameBlend(animation, out, in1, in2, alpha) \ + RtAnimKeyFrameBlendMacro(animation, out, in1, in2, alpha) + +#define RtAnimKeyFrameAddTogether(animation, out, in1, in2) \ + RtAnimKeyFrameAddTogetherMacro(animation, out, in1, in2) +#endif /* RWDEBUG */ + +extern RtAnimInterpolator * +RtAnimInterpolatorCreateSubInterpolator( + RtAnimInterpolator *parentAnim, + RwInt32 startNode, + RwInt32 numNodes, + RwInt32 maxKeyFrameSize); + +extern RwBool +RtAnimInterpolatorBlendSubInterpolator(RtAnimInterpolator *outAnim, + RtAnimInterpolator *inAnim1, + RtAnimInterpolator *inAnim2, + RwReal alpha); + +extern RwBool +RtAnimInterpolatorAddSubInterpolator(RtAnimInterpolator *outAnim, + RtAnimInterpolator *mainAnim, + RtAnimInterpolator *subAnim); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* RTANIM_H */ diff --git a/sdk/rwsdk/include/d3d8/rtanim.rpe b/sdk/rwsdk/include/d3d8/rtanim.rpe new file mode 100644 index 00000000..ae8fcf33 --- /dev/null +++ b/sdk/rwsdk/include/d3d8/rtanim.rpe @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enum e_rwdb_CriterionAnim +{ + + +E_RT_ANIM_INTERP_IDINUSE, + +E_RT_ANIM_INTERP_BLOCKFULL, + +E_RT_ANIM_INTERP_IDUNKNOWN, + + e_rwdb_CriterionAnimLAST = RWFORCEENUMSIZEINT +}; + +typedef enum e_rwdb_CriterionAnim e_rwdb_CriterionAnim; + + diff --git a/rwsdk/include/d3d8/rtbary.h b/sdk/rwsdk/include/d3d8/rtbary.h similarity index 100% rename from rwsdk/include/d3d8/rtbary.h rename to sdk/rwsdk/include/d3d8/rtbary.h diff --git a/rwsdk/include/d3d8/rtbary.rpe b/sdk/rwsdk/include/d3d8/rtbary.rpe similarity index 100% rename from rwsdk/include/d3d8/rtbary.rpe rename to sdk/rwsdk/include/d3d8/rtbary.rpe diff --git a/rwsdk/include/d3d8/rtbezpat.h b/sdk/rwsdk/include/d3d8/rtbezpat.h similarity index 100% rename from rwsdk/include/d3d8/rtbezpat.h rename to sdk/rwsdk/include/d3d8/rtbezpat.h diff --git a/rwsdk/include/d3d8/rtbezpat.rpe b/sdk/rwsdk/include/d3d8/rtbezpat.rpe similarity index 100% rename from rwsdk/include/d3d8/rtbezpat.rpe rename to sdk/rwsdk/include/d3d8/rtbezpat.rpe diff --git a/rwsdk/include/d3d8/rtbmp.h b/sdk/rwsdk/include/d3d8/rtbmp.h similarity index 100% rename from rwsdk/include/d3d8/rtbmp.h rename to sdk/rwsdk/include/d3d8/rtbmp.h diff --git a/rwsdk/include/d3d8/rtbmp.rpe b/sdk/rwsdk/include/d3d8/rtbmp.rpe similarity index 100% rename from rwsdk/include/d3d8/rtbmp.rpe rename to sdk/rwsdk/include/d3d8/rtbmp.rpe diff --git a/rwsdk/include/d3d8/rtcharse.h b/sdk/rwsdk/include/d3d8/rtcharse.h similarity index 100% rename from rwsdk/include/d3d8/rtcharse.h rename to sdk/rwsdk/include/d3d8/rtcharse.h diff --git a/rwsdk/include/d3d8/rtcharse.rpe b/sdk/rwsdk/include/d3d8/rtcharse.rpe similarity index 100% rename from rwsdk/include/d3d8/rtcharse.rpe rename to sdk/rwsdk/include/d3d8/rtcharse.rpe diff --git a/sdk/rwsdk/include/d3d8/rtgncpip.h b/sdk/rwsdk/include/d3d8/rtgncpip.h new file mode 100644 index 00000000..b18f2bb7 --- /dev/null +++ b/sdk/rwsdk/include/d3d8/rtgncpip.h @@ -0,0 +1,256 @@ +/* *INDENT-OFF* */ + +/* RWPUBLIC */ + +/**************************************************************************** + * + * File: rwg/rwsdk/tool/gencpipe/rtgncpip.h + * + * Copyright (C) 2002 Criterion Technologies. + * + * Purpose: Toolkit containing generic C rendering pipeline nodes. + * + ****************************************************************************/ + +#if (!defined(_RTGNCPIP_H)) +#define _RTGNCPIP_H + +/*===========================================================================* + *--- Include files ---------------------------------------------------------* + *===========================================================================*/ + +#include "rwcore.h" +#include "rpworld.h" + + + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + + +/**************************************************************************** + global types + */ + +typedef RpLight *RxLight; + + +/* RGBA Interpolation node structures */ +#if (!defined(DOXYGEN)) +struct NodeRGBAInterpData +{ + RwBool rgbaInterpOn; + RxRenderStateVector state; +}; +#endif /* (!defined(DOXYGEN)) */ + +typedef struct NodeRGBAInterpData NodeRGBAInterpData; + +/* UV Interpolation node structures */ +typedef struct RxNodeUVInterpSettings RxNodeUVInterpSettings; + +/** + * \ingroup rtgencpipe + * \struct RxNodeUVInterpSettings + * + * TODO + */ +struct RxNodeUVInterpSettings +{ + RwBool uvInterpOn; /**< TODO */ + RxRenderStateVector state; /**< TODO */ +}; + +/* Cloning node structures */ +typedef struct RxPacketCacheCluster RxPacketCacheCluster; + +/** + * \ingroup rtgencpipe + * \struct RxPacketCacheCluster + * structure containing a cache of an \ref RxCluster's + * within an \ref RxPacketCache + */ +struct RxPacketCacheCluster +{ + RwUInt32 slot; /**< A \ref RwUInt32 index into the \ref RxPacketCache's + * array of RxPacketCacheCluster's */ + RwUInt16 flags; /**< A cache of the original cluster's flags */ + RwUInt16 stride; /**< A cache of the original cluster's stride */ + void *data; /**< A cache of the original cluster's data */ + RwUInt32 numAlloced; /**< A cache of the original cluster's numAlloced */ + RwUInt32 numUsed; /**< A cache of the original cluster's numUsed */ + RxPipelineCluster *clusterRef; /**< A cache of the original cluster's \ref RxPipelineCluster */ +}; +typedef struct RxPacketCache RxPacketCache; + +/** + * \ingroup rtgencpipe + * \struct RxPacketCache + * structure containing a cache of a \ref RxPacket */ +struct RxPacketCache +{ + RwUInt16 packetFlags; /**< A cache of the original packet's flags */ + RwUInt16 pad[1]; /**< Alignment padding */ + RwUInt32 numClusters; /**< The number of present clusters in the + * original packet when it was cloned */ + RwBool lastCloneDone;/**< Once the cache has been cloned by \ref RxPacketCacheClone + * with (lastClone == TRUE), it should not be used again! */ + RwUInt32 pad2[1]; /**< Alignment padding */ + RxPacketCacheCluster clusters[1]; /**< An array of \ref RxPacketCacheCluster's, + * extending beyond 1 element */ +}; + + +typedef struct RxNodeCloneInitData RxNodeCloneInitData; +/** + * \ingroup rtgencpipe + * \struct RxNodeCloneInitData + * structure with which to initialize + * clone a \ref RxNodeDefinition, + * through \ref RxNodeDefinitionCloneCreate and + * set up cloned \ref RxPipelineNode modes, through + * \ref RxPipelineNodeCloneDefineModes */ +struct RxNodeCloneInitData +{ + RwUInt32 numModes; /**< Specifies the number of modes in + which the node should operate */ + RwUInt32 numOutputs; /**< Specifies the number of outputs of this + Clone node, which is also the maximum + number of outputs to which any one mode + may dispatch packets */ + RwUInt32 *modeSizes; /**< Specifies the number of outputs to which + each mode dispatches packets */ + RwUInt32 **modes; /**< An array of numModes pointers to arrays + (of length numOutputs) specifying the + outputs, in order, to which each mode + should dispatch packets (output zero is + the first output) */ +}; + +/** + * \ingroup rtgencpipe + * \struct RxNodeCloneData + * structure which is the private + * data of Clone nodes \ref RxPipelineNode */ +typedef struct RxNodeCloneData RxNodeCloneData; +struct RxNodeCloneData +{ + RwBool optimized; /**< \ref RwBool specifying whether \ref RxPipelineNodeCloneOptimize + * has been run on this \ref RxPipelineNode yet */ + RwUInt32 currentMode; /**< \ref RwUInt32 The current mode of operation */ + RxNodeCloneInitData *data;/**< A pointer to \ref RxNodeCloneInitData data + * specifying the modes of operation */ +}; + +/**************************************************************************** + global prototypes + */ + +extern RxClusterDefinition RxClLights; /* Uses the RxLight type (see above) */ + + +/********************************************************************************* + + Generic Nodes + + *******************************************************************************/ + +extern RxNodeDefinition *RxNodeDefinitionGetAtomicInstance(void); +extern RxNodeDefinition *RxNodeDefinitionGetClipLine(void); +extern RxNodeDefinition *RxNodeDefinitionGetClipTriangle(void); +extern RxNodeDefinition *RxNodeDefinitionGetWorldSectorEnumerateLights(void); +extern RxNodeDefinition *RxNodeDefinitionGetCullTriangle(void); +extern RxNodeDefinition *RxNodeDefinitionGetFastPathSplitter(void); +extern RxNodeDefinition *RxNodeDefinitionGetImmInstance(void); +extern RxNodeDefinition *RxNodeDefinitionGetImmMangleLineIndices(void); +extern RxNodeDefinition *RxNodeDefinitionGetImmMangleTriangleIndices(void); +extern RxNodeDefinition *RxNodeDefinitionGetImmRenderSetup(void); +extern RxNodeDefinition *RxNodeDefinitionGetImmStash(void); +extern RxNodeDefinition *RxNodeDefinitionGetLight(void); +extern RxNodeDefinition *RxNodeDefinitionGetMaterialScatter(void); +extern RxNodeDefinition *RxNodeDefinitionGetPostLight(void); +extern RxNodeDefinition *RxNodeDefinitionGetPreLight(void); +extern RxNodeDefinition *RxNodeDefinitionGetRGBAInterp(void); +extern RxNodeDefinition *RxNodeDefinitionGetUVInterp(void); +extern RxNodeDefinition *RxNodeDefinitionGetScatter(void); +extern RxNodeDefinition *RxNodeDefinitionGetSubmitLine(void); +extern RxNodeDefinition *RxNodeDefinitionGetSubmitTriangle(void); +extern RxNodeDefinition *RxNodeDefinitionGetTransform(void); +extern RxNodeDefinition *RxNodeDefinitionGetAtomicEnumerateLights(void); +extern RxNodeDefinition *RxNodeDefinitionGetWorldSectorInstance(void); +extern RxNodeDefinition *RxNodeDefinitionCloneCreate(RxNodeCloneInitData *data); +extern RwBool RxPipelineNodeCloneDefineModes( + RxPipeline *pipeline, + RxPipelineNode *node, + RxNodeCloneInitData *data); +extern RwBool RxNodeDefinitionCloneDestroy(RxNodeDefinition *def); +extern RwBool RxPipelineNodeCloneOptimize(RxPipeline *pipeline, + RxPipelineNode *node); + + +/********************************************************************************* + + Generic Core Pipes + + *******************************************************************************/ + + +extern RwBool RtGenCPipeCreateGenericIm3DTransformPipeline(void); +extern void RtGenCPipeDestroyGenericIm3DTransformPipeline(void); +extern RwBool RtGenCPipeCreateGenericIm3DRenderPipelines(void); +extern void RtGenCPipeDestroyGenericIm3DRenderPipelines(void); + +extern RxPipeline *RwIm3DGetGenericTransformPipeline(void); +extern RxPipeline *RwIm3DGetGenericRenderPipeline(RwPrimitiveType primType); + + +/********************************************************************************* + + Generic World Pipes + + *******************************************************************************/ + +extern RwBool RtGenCPipeCreateGenericWorldPipelines(void); +extern void RtGenCPipeDestroyGenericWorldPipelines(void); + +#define RpWorldGetGenericSectorPipelineMacro() \ + (RXPIPELINEGLOBAL(genericWorldSectorPipeline)) + +#define RpAtomicGetGenericPipelineMacro() \ + (RXPIPELINEGLOBAL(genericAtomicPipeline)) + +#define RpMaterialGetGenericPipelineMacro() \ + (RXPIPELINEGLOBAL(genericMaterialPipeline)) + + +#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) + +#define RpWorldGetGenericSectorPipeline RpWorldGetGenericSectorPipelineMacro +#define RpAtomicGetGenericPipeline RpAtomicGetGenericPipelineMacro +#define RpMaterialGetGenericPipeline RpMaterialGetGenericPipelineMacro + +#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ + + +#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) + +extern RxPipeline *RpWorldGetGenericSectorPipeline(void); + +extern RxPipeline *RpAtomicGetGenericPipeline(void); + +extern RxPipeline *RpMaterialGetGenericPipeline(void); + +#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + + +#endif /* (!defined(_RTGNCPIP_H)) */ + +/* RWPUBLICEND */ + +/* *INDENT-ON* */ diff --git a/sdk/rwsdk/include/d3d8/rtgncpip.rpe b/sdk/rwsdk/include/d3d8/rtgncpip.rpe new file mode 100644 index 00000000..4f676526 --- /dev/null +++ b/sdk/rwsdk/include/d3d8/rtgncpip.rpe @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enum e_rwdb_CriterionGENCPIPETOOL +{ + + + + e_rwdb_CriterionGENCPIPETOOLLAST = RWFORCEENUMSIZEINT +}; + +typedef enum e_rwdb_CriterionGENCPIPETOOL e_rwdb_CriterionGENCPIPETOOL; + + diff --git a/rwsdk/include/d3d8/rtimport.h b/sdk/rwsdk/include/d3d8/rtimport.h similarity index 100% rename from rwsdk/include/d3d8/rtimport.h rename to sdk/rwsdk/include/d3d8/rtimport.h diff --git a/rwsdk/include/d3d8/rtimport.rpe b/sdk/rwsdk/include/d3d8/rtimport.rpe similarity index 100% rename from rwsdk/include/d3d8/rtimport.rpe rename to sdk/rwsdk/include/d3d8/rtimport.rpe diff --git a/rwsdk/include/d3d8/rtintsec.h b/sdk/rwsdk/include/d3d8/rtintsec.h similarity index 100% rename from rwsdk/include/d3d8/rtintsec.h rename to sdk/rwsdk/include/d3d8/rtintsec.h diff --git a/rwsdk/include/d3d8/rtintsec.rpe b/sdk/rwsdk/include/d3d8/rtintsec.rpe similarity index 100% rename from rwsdk/include/d3d8/rtintsec.rpe rename to sdk/rwsdk/include/d3d8/rtintsec.rpe diff --git a/rwsdk/include/d3d8/rtltmap.h b/sdk/rwsdk/include/d3d8/rtltmap.h similarity index 100% rename from rwsdk/include/d3d8/rtltmap.h rename to sdk/rwsdk/include/d3d8/rtltmap.h diff --git a/rwsdk/include/d3d8/rtltmap.rpe b/sdk/rwsdk/include/d3d8/rtltmap.rpe similarity index 100% rename from rwsdk/include/d3d8/rtltmap.rpe rename to sdk/rwsdk/include/d3d8/rtltmap.rpe diff --git a/rwsdk/include/d3d8/rtmipk.h b/sdk/rwsdk/include/d3d8/rtmipk.h similarity index 100% rename from rwsdk/include/d3d8/rtmipk.h rename to sdk/rwsdk/include/d3d8/rtmipk.h diff --git a/rwsdk/include/d3d8/rtmipk.rpe b/sdk/rwsdk/include/d3d8/rtmipk.rpe similarity index 100% rename from rwsdk/include/d3d8/rtmipk.rpe rename to sdk/rwsdk/include/d3d8/rtmipk.rpe diff --git a/rwsdk/include/d3d8/rtpick.h b/sdk/rwsdk/include/d3d8/rtpick.h similarity index 100% rename from rwsdk/include/d3d8/rtpick.h rename to sdk/rwsdk/include/d3d8/rtpick.h diff --git a/rwsdk/include/d3d8/rtpick.rpe b/sdk/rwsdk/include/d3d8/rtpick.rpe similarity index 100% rename from rwsdk/include/d3d8/rtpick.rpe rename to sdk/rwsdk/include/d3d8/rtpick.rpe diff --git a/rwsdk/include/d3d8/rtpitexd.h b/sdk/rwsdk/include/d3d8/rtpitexd.h similarity index 100% rename from rwsdk/include/d3d8/rtpitexd.h rename to sdk/rwsdk/include/d3d8/rtpitexd.h diff --git a/rwsdk/include/d3d8/rtpitexd.rpe b/sdk/rwsdk/include/d3d8/rtpitexd.rpe similarity index 100% rename from rwsdk/include/d3d8/rtpitexd.rpe rename to sdk/rwsdk/include/d3d8/rtpitexd.rpe diff --git a/rwsdk/include/d3d8/rtpng.h b/sdk/rwsdk/include/d3d8/rtpng.h similarity index 100% rename from rwsdk/include/d3d8/rtpng.h rename to sdk/rwsdk/include/d3d8/rtpng.h diff --git a/rwsdk/include/d3d8/rtpng.rpe b/sdk/rwsdk/include/d3d8/rtpng.rpe similarity index 100% rename from rwsdk/include/d3d8/rtpng.rpe rename to sdk/rwsdk/include/d3d8/rtpng.rpe diff --git a/rwsdk/include/d3d8/rtquat.h b/sdk/rwsdk/include/d3d8/rtquat.h similarity index 100% rename from rwsdk/include/d3d8/rtquat.h rename to sdk/rwsdk/include/d3d8/rtquat.h diff --git a/rwsdk/include/d3d8/rtquat.rpe b/sdk/rwsdk/include/d3d8/rtquat.rpe similarity index 100% rename from rwsdk/include/d3d8/rtquat.rpe rename to sdk/rwsdk/include/d3d8/rtquat.rpe diff --git a/rwsdk/include/d3d8/rtras.h b/sdk/rwsdk/include/d3d8/rtras.h similarity index 100% rename from rwsdk/include/d3d8/rtras.h rename to sdk/rwsdk/include/d3d8/rtras.h diff --git a/rwsdk/include/d3d8/rtras.rpe b/sdk/rwsdk/include/d3d8/rtras.rpe similarity index 100% rename from rwsdk/include/d3d8/rtras.rpe rename to sdk/rwsdk/include/d3d8/rtras.rpe diff --git a/rwsdk/include/d3d8/rtray.h b/sdk/rwsdk/include/d3d8/rtray.h similarity index 100% rename from rwsdk/include/d3d8/rtray.h rename to sdk/rwsdk/include/d3d8/rtray.h diff --git a/rwsdk/include/d3d8/rtray.rpe b/sdk/rwsdk/include/d3d8/rtray.rpe similarity index 100% rename from rwsdk/include/d3d8/rtray.rpe rename to sdk/rwsdk/include/d3d8/rtray.rpe diff --git a/sdk/rwsdk/include/d3d8/rtskinsp.h b/sdk/rwsdk/include/d3d8/rtskinsp.h new file mode 100644 index 00000000..7e40c13f --- /dev/null +++ b/sdk/rwsdk/include/d3d8/rtskinsp.h @@ -0,0 +1,57 @@ +/*************************************************************************** + * * + * Module : * + * * + * Purpose : * + * * + **************************************************************************/ + +/* RWPUBLIC */ + +#ifndef RTSKINSP_H +#define RTSKINSP_H + +/** + * \defgroup rtskinsplit RtSkinSplit + * \ingroup skinning + * + * Skin Splitting Toolkit for RenderWare Graphics. + */ + +/**************************************************************************** + Includes + */ +#include +#include + +/**************************************************************************** + Defines + */ + +/**************************************************************************** + Global Types + */ + +/**************************************************************************** + Global variables (across program) + */ + +/**************************************************************************** + Function prototypes + */ + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cpluscplus */ + +extern RpAtomic * +RtSkinSplitAtomicSplitGeometry( RpAtomic *atomic, RwUInt32 boneLimit ); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* RTSKINSP_H */ + +/* RWPUBLICEND */ diff --git a/sdk/rwsdk/include/d3d8/rtskinsp.rpe b/sdk/rwsdk/include/d3d8/rtskinsp.rpe new file mode 100644 index 00000000..f86623b4 --- /dev/null +++ b/sdk/rwsdk/include/d3d8/rtskinsp.rpe @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enum e_rwdb_CriterionSkinSplit +{ + + + + e_rwdb_CriterionSkinSplitLAST = RWFORCEENUMSIZEINT +}; + +typedef enum e_rwdb_CriterionSkinSplit e_rwdb_CriterionSkinSplit; + + diff --git a/rwsdk/include/d3d8/rtslerp.h b/sdk/rwsdk/include/d3d8/rtslerp.h similarity index 100% rename from rwsdk/include/d3d8/rtslerp.h rename to sdk/rwsdk/include/d3d8/rtslerp.h diff --git a/rwsdk/include/d3d8/rtslerp.rpe b/sdk/rwsdk/include/d3d8/rtslerp.rpe similarity index 100% rename from rwsdk/include/d3d8/rtslerp.rpe rename to sdk/rwsdk/include/d3d8/rtslerp.rpe diff --git a/rwsdk/include/d3d8/rtsplpvs.h b/sdk/rwsdk/include/d3d8/rtsplpvs.h similarity index 100% rename from rwsdk/include/d3d8/rtsplpvs.h rename to sdk/rwsdk/include/d3d8/rtsplpvs.h diff --git a/rwsdk/include/d3d8/rtsplpvs.rpe b/sdk/rwsdk/include/d3d8/rtsplpvs.rpe similarity index 100% rename from rwsdk/include/d3d8/rtsplpvs.rpe rename to sdk/rwsdk/include/d3d8/rtsplpvs.rpe diff --git a/rwsdk/include/d3d8/rttiff.h b/sdk/rwsdk/include/d3d8/rttiff.h similarity index 100% rename from rwsdk/include/d3d8/rttiff.h rename to sdk/rwsdk/include/d3d8/rttiff.h diff --git a/rwsdk/include/d3d8/rttiff.rpe b/sdk/rwsdk/include/d3d8/rttiff.rpe similarity index 100% rename from rwsdk/include/d3d8/rttiff.rpe rename to sdk/rwsdk/include/d3d8/rttiff.rpe diff --git a/rwsdk/include/d3d8/rttilerd.h b/sdk/rwsdk/include/d3d8/rttilerd.h similarity index 100% rename from rwsdk/include/d3d8/rttilerd.h rename to sdk/rwsdk/include/d3d8/rttilerd.h diff --git a/rwsdk/include/d3d8/rttilerd.rpe b/sdk/rwsdk/include/d3d8/rttilerd.rpe similarity index 100% rename from rwsdk/include/d3d8/rttilerd.rpe rename to sdk/rwsdk/include/d3d8/rttilerd.rpe diff --git a/rwsdk/include/d3d8/rttoc.h b/sdk/rwsdk/include/d3d8/rttoc.h similarity index 100% rename from rwsdk/include/d3d8/rttoc.h rename to sdk/rwsdk/include/d3d8/rttoc.h diff --git a/rwsdk/include/d3d8/rttoc.rpe b/sdk/rwsdk/include/d3d8/rttoc.rpe similarity index 100% rename from rwsdk/include/d3d8/rttoc.rpe rename to sdk/rwsdk/include/d3d8/rttoc.rpe diff --git a/rwsdk/include/d3d8/rtvcat.h b/sdk/rwsdk/include/d3d8/rtvcat.h similarity index 100% rename from rwsdk/include/d3d8/rtvcat.h rename to sdk/rwsdk/include/d3d8/rtvcat.h diff --git a/rwsdk/include/d3d8/rtvcat.rpe b/sdk/rwsdk/include/d3d8/rtvcat.rpe similarity index 100% rename from rwsdk/include/d3d8/rtvcat.rpe rename to sdk/rwsdk/include/d3d8/rtvcat.rpe diff --git a/rwsdk/include/d3d8/rtworld.h b/sdk/rwsdk/include/d3d8/rtworld.h similarity index 100% rename from rwsdk/include/d3d8/rtworld.h rename to sdk/rwsdk/include/d3d8/rtworld.h diff --git a/rwsdk/include/d3d8/rtworld.rpe b/sdk/rwsdk/include/d3d8/rtworld.rpe similarity index 100% rename from rwsdk/include/d3d8/rtworld.rpe rename to sdk/rwsdk/include/d3d8/rtworld.rpe diff --git a/rwsdk/include/d3d8/rwcore.h b/sdk/rwsdk/include/d3d8/rwcore.h similarity index 100% rename from rwsdk/include/d3d8/rwcore.h rename to sdk/rwsdk/include/d3d8/rwcore.h diff --git a/rwsdk/include/d3d8/rwplcore.h b/sdk/rwsdk/include/d3d8/rwplcore.h similarity index 100% rename from rwsdk/include/d3d8/rwplcore.h rename to sdk/rwsdk/include/d3d8/rwplcore.h diff --git a/eax/eax-util.cpp b/src/audio/eax/eax-util.cpp similarity index 100% rename from eax/eax-util.cpp rename to src/audio/eax/eax-util.cpp diff --git a/eax/eax-util.h b/src/audio/eax/eax-util.h similarity index 100% rename from eax/eax-util.h rename to src/audio/eax/eax-util.h diff --git a/eax/eax.h b/src/audio/eax/eax.h similarity index 100% rename from eax/eax.h rename to src/audio/eax/eax.h diff --git a/src/audio/oal/stream.cpp b/src/audio/oal/stream.cpp index b689e929..f2a9eb22 100644 --- a/src/audio/oal/stream.cpp +++ b/src/audio/oal/stream.cpp @@ -4,6 +4,9 @@ #include "stream.h" #include "sampman.h" +#ifdef AUDIO_OPUS +#include +#else #ifdef _WIN32 // TODO: This is due to version difference of 32-bit libmpg123 and 64-bit libmpg123, fix it @@ -17,7 +20,9 @@ typedef long ssize_t; #endif #include #include +#endif +#ifndef AUDIO_OPUS class CSndFile : public IDecoder { SNDFILE *m_pfSound; @@ -184,6 +189,98 @@ public: return (uint32)size; } }; +#else +class COpusFile : public IDecoder +{ + OggOpusFile *m_FileH; + bool m_bOpened; + uint32 m_nRate; + uint32 m_nChannels; +public: + COpusFile(const char *path) : m_FileH(nil), + m_bOpened(false), + m_nRate(0), + m_nChannels(0) + { + int ret; + m_FileH = op_open_file(path, &ret); + + if (m_FileH) { + m_nChannels = op_head(m_FileH, 0)->channel_count; + m_nRate = op_head(m_FileH, 0)->input_sample_rate; + const OpusTags *tags = op_tags(m_FileH, 0); + for (int i = 0; i < tags->comments; i++) { + if (strncmp(tags->user_comments[i], "SAMPLERATE", sizeof("SAMPLERATE")-1) == 0) + { + sscanf(tags->user_comments[i], "SAMPLERATE=%i", &m_nRate); + break; + } + } + + m_bOpened = true; + } + } + + ~COpusFile() + { + if (m_FileH) + { + op_free(m_FileH); + m_FileH = nil; + } + } + + bool IsOpened() + { + return m_bOpened; + } + + uint32 GetSampleSize() + { + return sizeof(uint16); + } + + uint32 GetSampleCount() + { + if ( !IsOpened() ) return 0; + return op_pcm_total(m_FileH, 0); + } + + uint32 GetSampleRate() + { + return m_nRate; + } + + uint32 GetChannels() + { + return m_nChannels; + } + + void Seek(uint32 milliseconds) + { + if ( !IsOpened() ) return; + op_pcm_seek(m_FileH, ms2samples(milliseconds) * GetSampleSize()); + } + + uint32 Tell() + { + if ( !IsOpened() ) return 0; + return samples2ms(op_pcm_tell(m_FileH)/GetSampleSize()); + } + + uint32 Decode(void *buffer) + { + if ( !IsOpened() ) return 0; + + int size = op_read(m_FileH, (opus_int16 *)buffer, GetBufferSamples(), NULL); + + if (size < 0) + return 0; + + return size * m_nChannels * GetSampleSize(); + } +}; +#endif class CADFFile : public CMP3File { @@ -232,12 +329,16 @@ public: void CStream::Initialise() { +#ifndef AUDIO_OPUS mpg123_init(); +#endif } void CStream::Terminate() { +#ifndef AUDIO_OPUS mpg123_exit(); +#endif } CStream::CStream(char *filename, ALuint &source, ALuint (&buffers)[NUM_STREAMBUFFERS]) : @@ -268,12 +369,17 @@ CStream::CStream(char *filename, ALuint &source, ALuint (&buffers)[NUM_STREAMBUF DEV("Stream %s\n", m_aFilename); +#ifndef AUDIO_OPUS if (!strcasecmp(&m_aFilename[strlen(m_aFilename) - strlen(".mp3")], ".mp3")) m_pSoundFile = new CMP3File(m_aFilename); else if (!strcasecmp(&m_aFilename[strlen(m_aFilename) - strlen(".wav")], ".wav")) m_pSoundFile = new CSndFile(m_aFilename); else if (!strcasecmp(&m_aFilename[strlen(m_aFilename) - strlen(".adf")], ".adf")) m_pSoundFile = new CADFFile(m_aFilename); +#else + if (!strcasecmp(&m_aFilename[strlen(m_aFilename) - strlen(".opus")], ".opus")) + m_pSoundFile = new COpusFile(m_aFilename); +#endif else m_pSoundFile = nil; ASSERT(m_pSoundFile != nil); diff --git a/src/audio/sampman.h b/src/audio/sampman.h index 04f2e0c4..773fbda1 100644 --- a/src/audio/sampman.h +++ b/src/audio/sampman.h @@ -218,6 +218,42 @@ public: extern cSampleManager SampleManager; extern uint32 BankStartOffset[MAX_SAMPLEBANKS]; +#ifdef AUDIO_OPUS +static char StreamedNameTable[][25] = { + "AUDIO\\HEAD.OPUS", "AUDIO\\CLASS.OPUS", "AUDIO\\KJAH.OPUS", "AUDIO\\RISE.OPUS", "AUDIO\\LIPS.OPUS", "AUDIO\\GAME.OPUS", + "AUDIO\\MSX.OPUS", "AUDIO\\FLASH.OPUS", "AUDIO\\CHAT.OPUS", "AUDIO\\HEAD.OPUS", "AUDIO\\POLICE.OPUS", "AUDIO\\CITY.OPUS", + "AUDIO\\WATER.OPUS", "AUDIO\\COMOPEN.OPUS", "AUDIO\\SUBOPEN.OPUS", "AUDIO\\JB.OPUS", "AUDIO\\BET.OPUS", "AUDIO\\L1_LG.OPUS", + "AUDIO\\L2_DSB.OPUS", "AUDIO\\L3_DM.OPUS", "AUDIO\\L4_PAP.OPUS", "AUDIO\\L5_TFB.OPUS", "AUDIO\\J0_DM2.OPUS", "AUDIO\\J1_LFL.OPUS", + "AUDIO\\J2_KCL.OPUS", "AUDIO\\J3_VH.OPUS", "AUDIO\\J4_ETH.OPUS", "AUDIO\\J5_DST.OPUS", "AUDIO\\J6_TBJ.OPUS", "AUDIO\\T1_TOL.OPUS", + "AUDIO\\T2_TPU.OPUS", "AUDIO\\T3_MAS.OPUS", "AUDIO\\T4_TAT.OPUS", "AUDIO\\T5_BF.OPUS", "AUDIO\\S0_MAS.OPUS", "AUDIO\\S1_PF.OPUS", + "AUDIO\\S2_CTG.OPUS", "AUDIO\\S3_RTC.OPUS", "AUDIO\\S5_LRQ.OPUS", "AUDIO\\S4_BDBA.OPUS", "AUDIO\\S4_BDBB.OPUS", "AUDIO\\S2_CTG2.OPUS", + "AUDIO\\S4_BDBD.OPUS", "AUDIO\\S5_LRQB.OPUS", "AUDIO\\S5_LRQC.OPUS", "AUDIO\\A1_SSO.OPUS", "AUDIO\\A2_PP.OPUS", "AUDIO\\A3_SS.OPUS", + "AUDIO\\A4_PDR.OPUS", "AUDIO\\A5_K2FT.OPUS", "AUDIO\\K1_KBO.OPUS", "AUDIO\\K2_GIS.OPUS", "AUDIO\\K3_DS.OPUS", "AUDIO\\K4_SHI.OPUS", + "AUDIO\\K5_SD.OPUS", "AUDIO\\R0_PDR2.OPUS", "AUDIO\\R1_SW.OPUS", "AUDIO\\R2_AP.OPUS", "AUDIO\\R3_ED.OPUS", "AUDIO\\R4_GF.OPUS", + "AUDIO\\R5_PB.OPUS", "AUDIO\\R6_MM.OPUS", "AUDIO\\D1_STOG.OPUS", "AUDIO\\D2_KK.OPUS", "AUDIO\\D3_ADO.OPUS", "AUDIO\\D5_ES.OPUS", + "AUDIO\\D7_MLD.OPUS", "AUDIO\\D4_GTA.OPUS", "AUDIO\\D4_GTA2.OPUS", "AUDIO\\D6_STS.OPUS", "AUDIO\\A6_BAIT.OPUS", "AUDIO\\A7_ETG.OPUS", + "AUDIO\\A8_PS.OPUS", "AUDIO\\A9_ASD.OPUS", "AUDIO\\K4_SHI2.OPUS", "AUDIO\\C1_TEX.OPUS", "AUDIO\\EL_PH1.OPUS", "AUDIO\\EL_PH2.OPUS", + "AUDIO\\EL_PH3.OPUS", "AUDIO\\EL_PH4.OPUS", "AUDIO\\YD_PH1.OPUS", "AUDIO\\YD_PH2.OPUS", "AUDIO\\YD_PH3.OPUS", "AUDIO\\YD_PH4.OPUS", + "AUDIO\\HD_PH1.OPUS", "AUDIO\\HD_PH2.OPUS", "AUDIO\\HD_PH3.OPUS", "AUDIO\\HD_PH4.OPUS", "AUDIO\\HD_PH5.OPUS", "AUDIO\\MT_PH1.OPUS", + "AUDIO\\MT_PH2.OPUS", "AUDIO\\MT_PH3.OPUS", "AUDIO\\MT_PH4.OPUS", "AUDIO\\MISCOM.OPUS", "AUDIO\\END.OPUS", "AUDIO\\lib_a1.OPUS", + "AUDIO\\lib_a2.OPUS", "AUDIO\\lib_a.OPUS", "AUDIO\\lib_b.OPUS", "AUDIO\\lib_c.OPUS", "AUDIO\\lib_d.OPUS", "AUDIO\\l2_a.OPUS", + "AUDIO\\j4t_1.OPUS", "AUDIO\\j4t_2.OPUS", "AUDIO\\j4t_3.OPUS", "AUDIO\\j4t_4.OPUS", "AUDIO\\j4_a.OPUS", "AUDIO\\j4_b.OPUS", + "AUDIO\\j4_c.OPUS", "AUDIO\\j4_d.OPUS", "AUDIO\\j4_e.OPUS", "AUDIO\\j4_f.OPUS", "AUDIO\\j6_1.OPUS", "AUDIO\\j6_a.OPUS", + "AUDIO\\j6_b.OPUS", "AUDIO\\j6_c.OPUS", "AUDIO\\j6_d.OPUS", "AUDIO\\t4_a.OPUS", "AUDIO\\s1_a.OPUS", "AUDIO\\s1_a1.OPUS", + "AUDIO\\s1_b.OPUS", "AUDIO\\s1_c.OPUS", "AUDIO\\s1_c1.OPUS", "AUDIO\\s1_d.OPUS", "AUDIO\\s1_e.OPUS", "AUDIO\\s1_f.OPUS", + "AUDIO\\s1_g.OPUS", "AUDIO\\s1_h.OPUS", "AUDIO\\s1_i.OPUS", "AUDIO\\s1_j.OPUS", "AUDIO\\s1_k.OPUS", "AUDIO\\s1_l.OPUS", + "AUDIO\\s3_a.OPUS", "AUDIO\\s3_b.OPUS", "AUDIO\\el3_a.OPUS", "AUDIO\\mf1_a.OPUS", "AUDIO\\mf2_a.OPUS", "AUDIO\\mf3_a.OPUS", + "AUDIO\\mf3_b.OPUS", "AUDIO\\mf3_b1.OPUS", "AUDIO\\mf3_c.OPUS", "AUDIO\\mf4_a.OPUS", "AUDIO\\mf4_b.OPUS", "AUDIO\\mf4_c.OPUS", + "AUDIO\\a1_a.OPUS", "AUDIO\\a3_a.OPUS", "AUDIO\\a5_a.OPUS", "AUDIO\\a4_a.OPUS", "AUDIO\\a4_b.OPUS", "AUDIO\\a4_c.OPUS", + "AUDIO\\a4_d.OPUS", "AUDIO\\k1_a.OPUS", "AUDIO\\k3_a.OPUS", "AUDIO\\r1_a.OPUS", "AUDIO\\r2_a.OPUS", "AUDIO\\r2_b.OPUS", + "AUDIO\\r2_c.OPUS", "AUDIO\\r2_d.OPUS", "AUDIO\\r2_e.OPUS", "AUDIO\\r2_f.OPUS", "AUDIO\\r2_g.OPUS", "AUDIO\\r2_h.OPUS", + "AUDIO\\r5_a.OPUS", "AUDIO\\r6_a.OPUS", "AUDIO\\r6_a1.OPUS", "AUDIO\\r6_b.OPUS", "AUDIO\\lo2_a.OPUS", "AUDIO\\lo6_a.OPUS", + "AUDIO\\yd2_a.OPUS", "AUDIO\\yd2_b.OPUS", "AUDIO\\yd2_c.OPUS", "AUDIO\\yd2_c1.OPUS", "AUDIO\\yd2_d.OPUS", "AUDIO\\yd2_e.OPUS", + "AUDIO\\yd2_f.OPUS", "AUDIO\\yd2_g.OPUS", "AUDIO\\yd2_h.OPUS", "AUDIO\\yd2_ass.OPUS", "AUDIO\\yd2_ok.OPUS", "AUDIO\\h5_a.OPUS", + "AUDIO\\h5_b.OPUS", "AUDIO\\h5_c.OPUS", "AUDIO\\ammu_a.OPUS", "AUDIO\\ammu_b.OPUS", "AUDIO\\ammu_c.OPUS", "AUDIO\\door_1.OPUS", + "AUDIO\\door_2.OPUS", "AUDIO\\door_3.OPUS", "AUDIO\\door_4.OPUS", "AUDIO\\door_5.OPUS", "AUDIO\\door_6.OPUS", "AUDIO\\t3_a.OPUS", + "AUDIO\\t3_b.OPUS", "AUDIO\\t3_c.OPUS", "AUDIO\\k1_b.OPUS", "AUDIO\\cat1.OPUS"}; +#else static char StreamedNameTable[][25]= { "AUDIO\\WILD.ADF", @@ -1445,3 +1481,4 @@ static char StreamedNameTable[][25]= "AUDIO\\BUST_27.WAV", "AUDIO\\BUST_28.WAV", }; +#endif \ No newline at end of file diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp index bf2eca7d..a2943aff 100644 --- a/src/audio/sampman_oal.cpp +++ b/src/audio/sampman_oal.cpp @@ -27,6 +27,9 @@ #include "MusicManager.h" #include "Frontend.h" #include "Timer.h" +#ifdef AUDIO_OPUS +#include +#endif //TODO: fix eax3 reverb //TODO: max channals @@ -69,7 +72,11 @@ char SampleBankDescFilename[] = "audio/sfx.SDT"; char SampleBankDataFilename[] = "audio/sfx.RAW"; FILE *fpSampleDescHandle; +#ifdef AUDIO_OPUS +OggOpusFile *fpSampleDataHandle; +#else FILE *fpSampleDataHandle; +#endif bool bSampleBankLoaded [MAX_SAMPLEBANKS]; int32 nSampleBankDiscStartOffset [MAX_SAMPLEBANKS]; int32 nSampleBankSize [MAX_SAMPLEBANKS]; @@ -444,6 +451,8 @@ int8 cSampleManager::GetCurrent3DProviderIndex(void) int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider) { ASSERT( nProvider < m_nNumberOfProviders ); + if (nProvider >= m_nNumberOfProviders) + nProvider = 0; int savedprovider = curprovider; if ( nProvider < m_nNumberOfProviders ) @@ -754,12 +763,27 @@ cSampleManager::LoadSampleBank(uint8 nBank) return false; } +#ifdef AUDIO_OPUS + int samplesRead = 0; + int samplesSize = nSampleBankSize[nBank] / 2; + op_pcm_seek(fpSampleDataHandle, 0); + while (samplesSize > 0) { + int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[nBank] + samplesRead), samplesSize, NULL); + if (size <= 0) { + // huh? + //assert(0); + break; + } + samplesRead += size*2; + samplesSize -= size; + } +#else if ( fseek(fpSampleDataHandle, nSampleBankDiscStartOffset[nBank], SEEK_SET) != 0 ) return false; if ( fread((void *)nSampleBankMemoryStartAddress[nBank], 1, nSampleBankSize[nBank], fpSampleDataHandle) != nSampleBankSize[nBank] ) return false; - +#endif bSampleBankLoaded[nBank] = true; return true; @@ -851,13 +875,28 @@ cSampleManager::LoadPedComment(uint32 nComment) } } } - + +#ifdef AUDIO_OPUS + int samplesRead = 0; + int samplesSize = m_aSamples[nComment].nSize / 2; + op_pcm_seek(fpSampleDataHandle, m_aSamples[nComment].nOffset / 2); + while (samplesSize > 0) { + int size = op_read(fpSampleDataHandle, (opus_int16 *)(nSampleBankMemoryStartAddress[SAMPLEBANK_PED] + PED_BLOCKSIZE * nCurrentPedSlot + samplesRead), + samplesSize, NULL); + if (size <= 0) { + return false; + } + samplesRead += size * 2; + samplesSize -= size; + } +#else if ( fseek(fpSampleDataHandle, m_aSamples[nComment].nOffset, SEEK_SET) != 0 ) return false; if ( fread((void *)(nSampleBankMemoryStartAddress[SAMPLEBANK_PED] + PED_BLOCKSIZE*nCurrentPedSlot), 1, m_aSamples[nComment].nSize, fpSampleDataHandle) != m_aSamples[nComment].nSize ) return false; - + +#endif nPedSlotSfx[nCurrentPedSlot] = nComment; alBufferData(pedBuffers[nCurrentPedSlot], @@ -1387,7 +1426,7 @@ cSampleManager::InitialiseSampleBanks(void) fpSampleDescHandle = fopen(SampleBankDescFilename, "rb"); if ( fpSampleDescHandle == NULL ) return false; - +#ifndef AUDIO_OPUS fpSampleDataHandle = fopen(SampleBankDataFilename, "rb"); if ( fpSampleDataHandle == NULL ) { @@ -1400,9 +1439,14 @@ cSampleManager::InitialiseSampleBanks(void) fseek(fpSampleDataHandle, 0, SEEK_END); int32 _nSampleDataEndOffset = ftell(fpSampleDataHandle); rewind(fpSampleDataHandle); - +#else + int e; + fpSampleDataHandle = op_open_file(SampleBankDataFilename, &e); +#endif fread(m_aSamples, sizeof(tSample), TOTAL_AUDIO_SAMPLES, fpSampleDescHandle); - +#ifdef AUDIO_OPUS + int32 _nSampleDataEndOffset = m_aSamples[TOTAL_AUDIO_SAMPLES - 1].nOffset + m_aSamples[TOTAL_AUDIO_SAMPLES - 1].nSize; +#endif fclose(fpSampleDescHandle); fpSampleDescHandle = NULL; @@ -1420,7 +1464,7 @@ cSampleManager::InitialiseSampleBanks(void) nSampleBankSize[SAMPLEBANK_MAIN] = nSampleBankDiscStartOffset[SAMPLEBANK_PED] - nSampleBankDiscStartOffset[SAMPLEBANK_MAIN]; nSampleBankSize[SAMPLEBANK_PED] = _nSampleDataEndOffset - nSampleBankDiscStartOffset[SAMPLEBANK_PED]; - + return true; }