summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitmodules12
-rw-r--r--README.md2
-rw-r--r--dxsdk/Include/Msvidctl.tlbbin108028 -> 0 bytes
-rw-r--r--dxsdk/Include/Tuner.tlbbin53292 -> 0 bytes
m---------ogg0
m---------opus0
m---------opusfile0
-rw-r--r--premake5.lua45
-rw-r--r--sdk/dx8sdk/Include/Amvideo.h (renamed from dxsdk/Include/Amvideo.h)0
-rw-r--r--sdk/dx8sdk/Include/Bdatif.h (renamed from dxsdk/Include/Bdatif.h)0
-rw-r--r--sdk/dx8sdk/Include/DShow.h (renamed from dxsdk/Include/DShow.h)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Bdatif.idl (renamed from dxsdk/Include/DShowIDL/Bdatif.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Mpeg2Data.idl (renamed from dxsdk/Include/DShowIDL/Mpeg2Data.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Mpeg2Structs.idl (renamed from dxsdk/Include/DShowIDL/Mpeg2Structs.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Mstvca.idl (renamed from dxsdk/Include/DShowIDL/Mstvca.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Mstvgs.idl (renamed from dxsdk/Include/DShowIDL/Mstvgs.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Msvidctl.idl (renamed from dxsdk/Include/DShowIDL/Msvidctl.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Segment.idl (renamed from dxsdk/Include/DShowIDL/Segment.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Videoacc.idl (renamed from dxsdk/Include/DShowIDL/Videoacc.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/Vmrender.idl (renamed from dxsdk/Include/DShowIDL/Vmrender.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/amstream.idl (renamed from dxsdk/Include/DShowIDL/amstream.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/austream.idl (renamed from dxsdk/Include/DShowIDL/austream.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/axcore.idl (renamed from dxsdk/Include/DShowIDL/axcore.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/axextend.idl (renamed from dxsdk/Include/DShowIDL/axextend.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/bdaiface.idl (renamed from dxsdk/Include/DShowIDL/bdaiface.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/control.odl (renamed from dxsdk/Include/DShowIDL/control.odl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/ddstream.idl (renamed from dxsdk/Include/DShowIDL/ddstream.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/devenum.idl (renamed from dxsdk/Include/DShowIDL/devenum.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/dmodshow.idl (renamed from dxsdk/Include/DShowIDL/dmodshow.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/dshowasf.idl (renamed from dxsdk/Include/DShowIDL/dshowasf.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/dvdif.idl (renamed from dxsdk/Include/DShowIDL/dvdif.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/dxtrans.idl (renamed from dxsdk/Include/DShowIDL/dxtrans.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/dyngraph.idl (renamed from dxsdk/Include/DShowIDL/dyngraph.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/mediaobj.idl (renamed from dxsdk/Include/DShowIDL/mediaobj.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/medparam.idl (renamed from dxsdk/Include/DShowIDL/medparam.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/mixerocx.idl (renamed from dxsdk/Include/DShowIDL/mixerocx.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/mmstream.idl (renamed from dxsdk/Include/DShowIDL/mmstream.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/mstve.idl (renamed from dxsdk/Include/DShowIDL/mstve.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/qedit.idl (renamed from dxsdk/Include/DShowIDL/qedit.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/regbag.idl (renamed from dxsdk/Include/DShowIDL/regbag.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/sbe.idl (renamed from dxsdk/Include/DShowIDL/sbe.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/strmif.idl (renamed from dxsdk/Include/DShowIDL/strmif.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/tuner.idl (renamed from dxsdk/Include/DShowIDL/tuner.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/tvratings.idl (renamed from dxsdk/Include/DShowIDL/tvratings.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/vidcap.idl (renamed from dxsdk/Include/DShowIDL/vidcap.idl)0
-rw-r--r--sdk/dx8sdk/Include/DShowIDL/vmr9.idl (renamed from dxsdk/Include/DShowIDL/vmr9.idl)0
-rw-r--r--sdk/dx8sdk/Include/DxDiag.h (renamed from dxsdk/Include/DxDiag.h)0
-rw-r--r--sdk/dx8sdk/Include/Iwstdec.h (renamed from dxsdk/Include/Iwstdec.h)0
-rw-r--r--sdk/dx8sdk/Include/Mpeg2Bits.h (renamed from dxsdk/Include/Mpeg2Bits.h)0
-rw-r--r--sdk/dx8sdk/Include/Mpeg2Error.h (renamed from dxsdk/Include/Mpeg2Error.h)0
-rw-r--r--sdk/dx8sdk/Include/Mstvca.h (renamed from dxsdk/Include/Mstvca.h)0
-rw-r--r--sdk/dx8sdk/Include/Mstve.h (renamed from dxsdk/Include/Mstve.h)0
-rw-r--r--sdk/dx8sdk/Include/Msvidctl.h (renamed from dxsdk/Include/Msvidctl.h)0
-rw-r--r--sdk/dx8sdk/Include/PixPlugin.h (renamed from dxsdk/Include/PixPlugin.h)0
-rw-r--r--sdk/dx8sdk/Include/Segment.h (renamed from dxsdk/Include/Segment.h)0
-rw-r--r--sdk/dx8sdk/Include/activecf.h (renamed from dxsdk/Include/activecf.h)0
-rw-r--r--sdk/dx8sdk/Include/amaudio.h (renamed from dxsdk/Include/amaudio.h)0
-rw-r--r--sdk/dx8sdk/Include/amparse.h (renamed from dxsdk/Include/amparse.h)0
-rw-r--r--sdk/dx8sdk/Include/amstream.h (renamed from dxsdk/Include/amstream.h)0
-rw-r--r--sdk/dx8sdk/Include/amva.h (renamed from dxsdk/Include/amva.h)0
-rw-r--r--sdk/dx8sdk/Include/atsmedia.h (renamed from dxsdk/Include/atsmedia.h)0
-rw-r--r--sdk/dx8sdk/Include/audevcod.h (renamed from dxsdk/Include/audevcod.h)0
-rw-r--r--sdk/dx8sdk/Include/austream.h (renamed from dxsdk/Include/austream.h)0
-rw-r--r--sdk/dx8sdk/Include/aviriff.h (renamed from dxsdk/Include/aviriff.h)0
-rw-r--r--sdk/dx8sdk/Include/bdaiface.h (renamed from dxsdk/Include/bdaiface.h)0
-rw-r--r--sdk/dx8sdk/Include/bdamedia.h (renamed from dxsdk/Include/bdamedia.h)0
-rw-r--r--sdk/dx8sdk/Include/bdatypes.h (renamed from dxsdk/Include/bdatypes.h)0
-rw-r--r--sdk/dx8sdk/Include/comlite.h (renamed from dxsdk/Include/comlite.h)0
-rw-r--r--sdk/dx8sdk/Include/control.h (renamed from dxsdk/Include/control.h)0
-rw-r--r--sdk/dx8sdk/Include/d3d.h (renamed from dxsdk/Include/d3d.h)0
-rw-r--r--sdk/dx8sdk/Include/d3d8.h (renamed from dxsdk/Include/d3d8.h)0
-rw-r--r--sdk/dx8sdk/Include/d3d8caps.h (renamed from dxsdk/Include/d3d8caps.h)0
-rw-r--r--sdk/dx8sdk/Include/d3d8types.h (renamed from dxsdk/Include/d3d8types.h)0
-rw-r--r--sdk/dx8sdk/Include/d3d9.h (renamed from dxsdk/Include/d3d9.h)0
-rw-r--r--sdk/dx8sdk/Include/d3d9caps.h (renamed from dxsdk/Include/d3d9caps.h)0
-rw-r--r--sdk/dx8sdk/Include/d3d9types.h (renamed from dxsdk/Include/d3d9types.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dcaps.h (renamed from dxsdk/Include/d3dcaps.h)0
-rw-r--r--sdk/dx8sdk/Include/d3drm.h (renamed from dxsdk/Include/d3drm.h)0
-rw-r--r--sdk/dx8sdk/Include/d3drmdef.h (renamed from dxsdk/Include/d3drmdef.h)0
-rw-r--r--sdk/dx8sdk/Include/d3drmobj.h (renamed from dxsdk/Include/d3drmobj.h)0
-rw-r--r--sdk/dx8sdk/Include/d3drmwin.h (renamed from dxsdk/Include/d3drmwin.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dtypes.h (renamed from dxsdk/Include/d3dtypes.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dvec.inl (renamed from dxsdk/Include/d3dvec.inl)0
-rw-r--r--sdk/dx8sdk/Include/d3dx.h (renamed from dxsdk/Include/d3dx.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8.h (renamed from dxsdk/Include/d3dx8.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8core.h (renamed from dxsdk/Include/d3dx8core.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8effect.h (renamed from dxsdk/Include/d3dx8effect.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8math.h (renamed from dxsdk/Include/d3dx8math.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8math.inl (renamed from dxsdk/Include/d3dx8math.inl)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8mesh.h (renamed from dxsdk/Include/d3dx8mesh.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8shape.h (renamed from dxsdk/Include/d3dx8shape.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx8tex.h (renamed from dxsdk/Include/d3dx8tex.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9.h (renamed from dxsdk/Include/d3dx9.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9anim.h (renamed from dxsdk/Include/d3dx9anim.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9core.h (renamed from dxsdk/Include/d3dx9core.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9effect.h (renamed from dxsdk/Include/d3dx9effect.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9math.h (renamed from dxsdk/Include/d3dx9math.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9math.inl (renamed from dxsdk/Include/d3dx9math.inl)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9mesh.h (renamed from dxsdk/Include/d3dx9mesh.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9shader.h (renamed from dxsdk/Include/d3dx9shader.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9shape.h (renamed from dxsdk/Include/d3dx9shape.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9tex.h (renamed from dxsdk/Include/d3dx9tex.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dx9xof.h (renamed from dxsdk/Include/d3dx9xof.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dxcore.h (renamed from dxsdk/Include/d3dxcore.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dxerr.h (renamed from dxsdk/Include/d3dxerr.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dxmath.h (renamed from dxsdk/Include/d3dxmath.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dxmath.inl (renamed from dxsdk/Include/d3dxmath.inl)0
-rw-r--r--sdk/dx8sdk/Include/d3dxshapes.h (renamed from dxsdk/Include/d3dxshapes.h)0
-rw-r--r--sdk/dx8sdk/Include/d3dxsprite.h (renamed from dxsdk/Include/d3dxsprite.h)0
-rw-r--r--sdk/dx8sdk/Include/ddraw.h (renamed from dxsdk/Include/ddraw.h)0
-rw-r--r--sdk/dx8sdk/Include/ddstream.h (renamed from dxsdk/Include/ddstream.h)0
-rw-r--r--sdk/dx8sdk/Include/dinput.h (renamed from dxsdk/Include/dinput.h)0
-rw-r--r--sdk/dx8sdk/Include/dinputd.h (renamed from dxsdk/Include/dinputd.h)0
-rw-r--r--sdk/dx8sdk/Include/dls1.h (renamed from dxsdk/Include/dls1.h)0
-rw-r--r--sdk/dx8sdk/Include/dls2.h (renamed from dxsdk/Include/dls2.h)0
-rw-r--r--sdk/dx8sdk/Include/dmdls.h (renamed from dxsdk/Include/dmdls.h)0
-rw-r--r--sdk/dx8sdk/Include/dmerror.h (renamed from dxsdk/Include/dmerror.h)0
-rw-r--r--sdk/dx8sdk/Include/dmksctrl.h (renamed from dxsdk/Include/dmksctrl.h)0
-rw-r--r--sdk/dx8sdk/Include/dmo.h (renamed from dxsdk/Include/dmo.h)0
-rw-r--r--sdk/dx8sdk/Include/dmodshow.h (renamed from dxsdk/Include/dmodshow.h)0
-rw-r--r--sdk/dx8sdk/Include/dmoimpl.h (renamed from dxsdk/Include/dmoimpl.h)0
-rw-r--r--sdk/dx8sdk/Include/dmoreg.h (renamed from dxsdk/Include/dmoreg.h)0
-rw-r--r--sdk/dx8sdk/Include/dmort.h (renamed from dxsdk/Include/dmort.h)0
-rw-r--r--sdk/dx8sdk/Include/dmplugin.h (renamed from dxsdk/Include/dmplugin.h)0
-rw-r--r--sdk/dx8sdk/Include/dmusbuff.h (renamed from dxsdk/Include/dmusbuff.h)0
-rw-r--r--sdk/dx8sdk/Include/dmusicc.h (renamed from dxsdk/Include/dmusicc.h)0
-rw-r--r--sdk/dx8sdk/Include/dmusicf.h (renamed from dxsdk/Include/dmusicf.h)0
-rw-r--r--sdk/dx8sdk/Include/dmusici.h (renamed from dxsdk/Include/dmusici.h)0
-rw-r--r--sdk/dx8sdk/Include/dmusics.h (renamed from dxsdk/Include/dmusics.h)0
-rw-r--r--sdk/dx8sdk/Include/dpaddr.h (renamed from dxsdk/Include/dpaddr.h)0
-rw-r--r--sdk/dx8sdk/Include/dplay.h (renamed from dxsdk/Include/dplay.h)0
-rw-r--r--sdk/dx8sdk/Include/dplay8.h (renamed from dxsdk/Include/dplay8.h)0
-rw-r--r--sdk/dx8sdk/Include/dplobby.h (renamed from dxsdk/Include/dplobby.h)0
-rw-r--r--sdk/dx8sdk/Include/dplobby8.h (renamed from dxsdk/Include/dplobby8.h)0
-rw-r--r--sdk/dx8sdk/Include/dpnathlp.h (renamed from dxsdk/Include/dpnathlp.h)0
-rw-r--r--sdk/dx8sdk/Include/dsconf.h (renamed from dxsdk/Include/dsconf.h)0
-rw-r--r--sdk/dx8sdk/Include/dsetup.h (renamed from dxsdk/Include/dsetup.h)0
-rw-r--r--sdk/dx8sdk/Include/dshowasf.h (renamed from dxsdk/Include/dshowasf.h)0
-rw-r--r--sdk/dx8sdk/Include/dsound.h (renamed from dxsdk/Include/dsound.h)0
-rw-r--r--sdk/dx8sdk/Include/dv.h (renamed from dxsdk/Include/dv.h)0
-rw-r--r--sdk/dx8sdk/Include/dvdevcod.h (renamed from dxsdk/Include/dvdevcod.h)0
-rw-r--r--sdk/dx8sdk/Include/dvdmedia.h (renamed from dxsdk/Include/dvdmedia.h)0
-rw-r--r--sdk/dx8sdk/Include/dvoice.h (renamed from dxsdk/Include/dvoice.h)0
-rw-r--r--sdk/dx8sdk/Include/dvp.h (renamed from dxsdk/Include/dvp.h)0
-rw-r--r--sdk/dx8sdk/Include/dx7todx8.h (renamed from dxsdk/Include/dx7todx8.h)0
-rw-r--r--sdk/dx8sdk/Include/dxerr8.h (renamed from dxsdk/Include/dxerr8.h)0
-rw-r--r--sdk/dx8sdk/Include/dxerr9.h (renamed from dxsdk/Include/dxerr9.h)0
-rw-r--r--sdk/dx8sdk/Include/dxfile.h (renamed from dxsdk/Include/dxfile.h)0
-rw-r--r--sdk/dx8sdk/Include/dxtrans.h (renamed from dxsdk/Include/dxtrans.h)0
-rw-r--r--sdk/dx8sdk/Include/dxva.h (renamed from dxsdk/Include/dxva.h)0
-rw-r--r--sdk/dx8sdk/Include/edevctrl.h (renamed from dxsdk/Include/edevctrl.h)0
-rw-r--r--sdk/dx8sdk/Include/edevdefs.h (renamed from dxsdk/Include/edevdefs.h)0
-rw-r--r--sdk/dx8sdk/Include/errors.h (renamed from dxsdk/Include/errors.h)0
-rw-r--r--sdk/dx8sdk/Include/evcode.h (renamed from dxsdk/Include/evcode.h)0
-rw-r--r--sdk/dx8sdk/Include/il21dec.h (renamed from dxsdk/Include/il21dec.h)0
-rw-r--r--sdk/dx8sdk/Include/ks.h (renamed from dxsdk/Include/ks.h)0
-rw-r--r--sdk/dx8sdk/Include/ksguid.h (renamed from dxsdk/Include/ksguid.h)0
-rw-r--r--sdk/dx8sdk/Include/ksmedia.h (renamed from dxsdk/Include/ksmedia.h)0
-rw-r--r--sdk/dx8sdk/Include/ksproxy.h (renamed from dxsdk/Include/ksproxy.h)0
-rw-r--r--sdk/dx8sdk/Include/ksuuids.h (renamed from dxsdk/Include/ksuuids.h)0
-rw-r--r--sdk/dx8sdk/Include/mediaerr.h (renamed from dxsdk/Include/mediaerr.h)0
-rw-r--r--sdk/dx8sdk/Include/mediaobj.h (renamed from dxsdk/Include/mediaobj.h)0
-rw-r--r--sdk/dx8sdk/Include/medparam.h (renamed from dxsdk/Include/medparam.h)0
-rw-r--r--sdk/dx8sdk/Include/mixerocx.h (renamed from dxsdk/Include/mixerocx.h)0
-rw-r--r--sdk/dx8sdk/Include/mmstream.h (renamed from dxsdk/Include/mmstream.h)0
-rw-r--r--sdk/dx8sdk/Include/mpconfig.h (renamed from dxsdk/Include/mpconfig.h)0
-rw-r--r--sdk/dx8sdk/Include/mpeg2data.h (renamed from dxsdk/Include/mpeg2data.h)0
-rw-r--r--sdk/dx8sdk/Include/mpegtype.h (renamed from dxsdk/Include/mpegtype.h)0
-rw-r--r--sdk/dx8sdk/Include/multimon.h (renamed from dxsdk/Include/multimon.h)0
-rw-r--r--sdk/dx8sdk/Include/playlist.h (renamed from dxsdk/Include/playlist.h)0
-rw-r--r--sdk/dx8sdk/Include/qedit.h (renamed from dxsdk/Include/qedit.h)0
-rw-r--r--sdk/dx8sdk/Include/qnetwork.h (renamed from dxsdk/Include/qnetwork.h)0
-rw-r--r--sdk/dx8sdk/Include/regbag.h (renamed from dxsdk/Include/regbag.h)0
-rw-r--r--sdk/dx8sdk/Include/rmxfguid.h (renamed from dxsdk/Include/rmxfguid.h)0
-rw-r--r--sdk/dx8sdk/Include/rmxftmpl.h (renamed from dxsdk/Include/rmxftmpl.h)0
-rw-r--r--sdk/dx8sdk/Include/sbe.h (renamed from dxsdk/Include/sbe.h)0
-rw-r--r--sdk/dx8sdk/Include/strmif.h (renamed from dxsdk/Include/strmif.h)0
-rw-r--r--sdk/dx8sdk/Include/strsafe.h (renamed from dxsdk/Include/strsafe.h)0
-rw-r--r--sdk/dx8sdk/Include/tune.h (renamed from dxsdk/Include/tune.h)0
-rw-r--r--sdk/dx8sdk/Include/tuner.h (renamed from dxsdk/Include/tuner.h)0
-rw-r--r--sdk/dx8sdk/Include/tvratings.h (renamed from dxsdk/Include/tvratings.h)0
-rw-r--r--sdk/dx8sdk/Include/uuids.h (renamed from dxsdk/Include/uuids.h)0
-rw-r--r--sdk/dx8sdk/Include/vfwmsgs.h (renamed from dxsdk/Include/vfwmsgs.h)0
-rw-r--r--sdk/dx8sdk/Include/vidcap.h (renamed from dxsdk/Include/vidcap.h)0
-rw-r--r--sdk/dx8sdk/Include/videoacc.h (renamed from dxsdk/Include/videoacc.h)0
-rw-r--r--sdk/dx8sdk/Include/vmr9.h (renamed from dxsdk/Include/vmr9.h)0
-rw-r--r--sdk/dx8sdk/Include/vpconfig.h (renamed from dxsdk/Include/vpconfig.h)0
-rw-r--r--sdk/dx8sdk/Include/vpnotify.h (renamed from dxsdk/Include/vpnotify.h)0
-rw-r--r--sdk/dx8sdk/Include/vptype.h (renamed from dxsdk/Include/vptype.h)0
-rw-r--r--sdk/dx8sdk/Include/xprtdefs.h (renamed from dxsdk/Include/xprtdefs.h)0
-rw-r--r--sdk/dx8sdk/Lib/DxErr8.lib (renamed from dxsdk/Lib/DxErr8.lib)bin1083572 -> 1083572 bytes
-rw-r--r--sdk/dx8sdk/Lib/DxErr9.lib (renamed from dxsdk/Lib/DxErr9.lib)bin3901404 -> 3901404 bytes
-rw-r--r--sdk/dx8sdk/Lib/amstrmid.lib (renamed from dxsdk/Lib/amstrmid.lib)bin272820 -> 272820 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3d8.lib (renamed from dxsdk/Lib/d3d8.lib)bin2466 -> 2466 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3d9.lib (renamed from dxsdk/Lib/d3d9.lib)bin4988 -> 4988 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dx.lib (renamed from dxsdk/Lib/d3dx.lib)bin614522 -> 614522 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dx8.lib (renamed from dxsdk/Lib/d3dx8.lib)bin2151212 -> 2151212 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dx8d.lib (renamed from dxsdk/Lib/d3dx8d.lib)bin53414 -> 53414 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dx8dt.lib (renamed from dxsdk/Lib/d3dx8dt.lib)bin2467156 -> 2467156 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dx9.lib (renamed from dxsdk/Lib/d3dx9.lib)bin5959648 -> 5959648 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dx9d.lib (renamed from dxsdk/Lib/d3dx9d.lib)bin82586 -> 82586 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dx9dt.lib (renamed from dxsdk/Lib/d3dx9dt.lib)bin6948164 -> 6948164 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dxd.lib (renamed from dxsdk/Lib/d3dxd.lib)bin565570 -> 565570 bytes
-rw-r--r--sdk/dx8sdk/Lib/d3dxof.lib (renamed from dxsdk/Lib/d3dxof.lib)bin1722 -> 1722 bytes
-rw-r--r--sdk/dx8sdk/Lib/ddraw.lib (renamed from dxsdk/Lib/ddraw.lib)bin4540 -> 4540 bytes
-rw-r--r--sdk/dx8sdk/Lib/dinput.lib (renamed from dxsdk/Lib/dinput.lib)bin17790 -> 17790 bytes
-rw-r--r--sdk/dx8sdk/Lib/dinput8.lib (renamed from dxsdk/Lib/dinput8.lib)bin19978 -> 19978 bytes
-rw-r--r--sdk/dx8sdk/Lib/dmoguids.lib (renamed from dxsdk/Lib/dmoguids.lib)bin18408 -> 18408 bytes
-rw-r--r--sdk/dx8sdk/Lib/dplayx.lib (renamed from dxsdk/Lib/dplayx.lib)bin3142 -> 3142 bytes
-rw-r--r--sdk/dx8sdk/Lib/dsetup.lib (renamed from dxsdk/Lib/dsetup.lib)bin5998 -> 5998 bytes
-rw-r--r--sdk/dx8sdk/Lib/dsound.lib (renamed from dxsdk/Lib/dsound.lib)bin4042 -> 4042 bytes
-rw-r--r--sdk/dx8sdk/Lib/dxguid.lib (renamed from dxsdk/Lib/dxguid.lib)bin107734 -> 107734 bytes
-rw-r--r--sdk/dx8sdk/Lib/dxtrans.lib (renamed from dxsdk/Lib/dxtrans.lib)bin3700 -> 3700 bytes
-rw-r--r--sdk/dx8sdk/Lib/encapi.lib (renamed from dxsdk/Lib/encapi.lib)bin1522 -> 1522 bytes
-rw-r--r--sdk/dx8sdk/Lib/ksproxy.lib (renamed from dxsdk/Lib/ksproxy.lib)bin3054 -> 3054 bytes
-rw-r--r--sdk/dx8sdk/Lib/ksuser.lib (renamed from dxsdk/Lib/ksuser.lib)bin196016 -> 196016 bytes
-rw-r--r--sdk/dx8sdk/Lib/msdmo.lib (renamed from dxsdk/Lib/msdmo.lib)bin4620 -> 4620 bytes
-rw-r--r--sdk/dx8sdk/Lib/quartz.lib (renamed from dxsdk/Lib/quartz.lib)bin2370 -> 2370 bytes
-rw-r--r--sdk/dx8sdk/Lib/strmiids.lib (renamed from dxsdk/Lib/strmiids.lib)bin272820 -> 272820 bytes
-rw-r--r--sdk/milessdk/include/mss.h (renamed from milessdk/include/mss.h)0
-rw-r--r--sdk/milessdk/lib/mss32.lib (renamed from milessdk/lib/mss32.lib)bin15570 -> 15570 bytes
-rw-r--r--sdk/rwsdk/include/d3d8/errcom.def (renamed from rwsdk/include/d3d8/errcom.def)0
-rw-r--r--sdk/rwsdk/include/d3d8/errcore.def (renamed from rwsdk/include/d3d8/errcore.def)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpanisot.h (renamed from rwsdk/include/d3d8/rpanisot.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpanisot.rpe (renamed from rwsdk/include/d3d8/rpanisot.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpcollis.h (renamed from rwsdk/include/d3d8/rpcollis.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpcollis.rpe (renamed from rwsdk/include/d3d8/rpcollis.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpcriter.h (renamed from rwsdk/include/d3d8/rpcriter.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpdbgerr.c (renamed from rwsdk/include/d3d8/rpdbgerr.c)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpdbgerr.h (renamed from rwsdk/include/d3d8/rpdbgerr.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpdmorph.h (renamed from rwsdk/include/d3d8/rpdmorph.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpdmorph.rpe (renamed from rwsdk/include/d3d8/rpdmorph.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rperror.h (renamed from rwsdk/include/d3d8/rperror.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rphanim.h (renamed from rwsdk/include/d3d8/rphanim.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rphanim.rpe (renamed from rwsdk/include/d3d8/rphanim.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rplodatm.h (renamed from rwsdk/include/d3d8/rplodatm.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rplodatm.rpe (renamed from rwsdk/include/d3d8/rplodatm.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rplogo.h (renamed from rwsdk/include/d3d8/rplogo.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rplogo.rpe (renamed from rwsdk/include/d3d8/rplogo.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpltmap.h (renamed from rwsdk/include/d3d8/rpltmap.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpltmap.rpe (renamed from rwsdk/include/d3d8/rpltmap.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpmatfx.h (renamed from rwsdk/include/d3d8/rpmatfx.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpmatfx.rpe (renamed from rwsdk/include/d3d8/rpmatfx.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpmipkl.h (renamed from rwsdk/include/d3d8/rpmipkl.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpmipkl.rpe (renamed from rwsdk/include/d3d8/rpmipkl.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpmorph.h (renamed from rwsdk/include/d3d8/rpmorph.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpmorph.rpe (renamed from rwsdk/include/d3d8/rpmorph.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rppatch.h (renamed from rwsdk/include/d3d8/rppatch.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rppatch.rpe (renamed from rwsdk/include/d3d8/rppatch.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpprtstd.h (renamed from rwsdk/include/d3d8/rpprtstd.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpprtstd.rpe (renamed from rwsdk/include/d3d8/rpprtstd.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpptank.h (renamed from rwsdk/include/d3d8/rpptank.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpptank.rpe (renamed from rwsdk/include/d3d8/rpptank.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rppvs.h (renamed from rwsdk/include/d3d8/rppvs.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rppvs.rpe (renamed from rwsdk/include/d3d8/rppvs.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rprandom.h (renamed from rwsdk/include/d3d8/rprandom.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rprandom.rpe (renamed from rwsdk/include/d3d8/rprandom.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpskin.h (renamed from rwsdk/include/d3d8/rpskin.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpskin.rpe (renamed from rwsdk/include/d3d8/rpskin.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpspline.h (renamed from rwsdk/include/d3d8/rpspline.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpspline.rpe (renamed from rwsdk/include/d3d8/rpspline.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpusrdat.h (renamed from rwsdk/include/d3d8/rpusrdat.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpusrdat.rpe (renamed from rwsdk/include/d3d8/rpusrdat.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpworld.h (renamed from rwsdk/include/d3d8/rpworld.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rpworld.rpe (renamed from rwsdk/include/d3d8/rpworld.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rt2d.h (renamed from rwsdk/include/d3d8/rt2d.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rt2d.rpe (renamed from rwsdk/include/d3d8/rt2d.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rt2danim.h (renamed from rwsdk/include/d3d8/rt2danim.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rt2danim.rpe (renamed from rwsdk/include/d3d8/rt2danim.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtanim.h638
-rw-r--r--sdk/rwsdk/include/d3d8/rtanim.rpe168
-rw-r--r--sdk/rwsdk/include/d3d8/rtbary.h (renamed from rwsdk/include/d3d8/rtbary.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtbary.rpe (renamed from rwsdk/include/d3d8/rtbary.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtbezpat.h (renamed from rwsdk/include/d3d8/rtbezpat.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtbezpat.rpe (renamed from rwsdk/include/d3d8/rtbezpat.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtbmp.h (renamed from rwsdk/include/d3d8/rtbmp.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtbmp.rpe (renamed from rwsdk/include/d3d8/rtbmp.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtcharse.h (renamed from rwsdk/include/d3d8/rtcharse.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtcharse.rpe (renamed from rwsdk/include/d3d8/rtcharse.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtgncpip.h256
-rw-r--r--sdk/rwsdk/include/d3d8/rtgncpip.rpe172
-rw-r--r--sdk/rwsdk/include/d3d8/rtimport.h (renamed from rwsdk/include/d3d8/rtimport.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtimport.rpe (renamed from rwsdk/include/d3d8/rtimport.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtintsec.h (renamed from rwsdk/include/d3d8/rtintsec.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtintsec.rpe (renamed from rwsdk/include/d3d8/rtintsec.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtltmap.h (renamed from rwsdk/include/d3d8/rtltmap.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtltmap.rpe (renamed from rwsdk/include/d3d8/rtltmap.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtmipk.h (renamed from rwsdk/include/d3d8/rtmipk.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtmipk.rpe (renamed from rwsdk/include/d3d8/rtmipk.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtpick.h (renamed from rwsdk/include/d3d8/rtpick.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtpick.rpe (renamed from rwsdk/include/d3d8/rtpick.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtpitexd.h (renamed from rwsdk/include/d3d8/rtpitexd.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtpitexd.rpe (renamed from rwsdk/include/d3d8/rtpitexd.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtpng.h (renamed from rwsdk/include/d3d8/rtpng.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtpng.rpe (renamed from rwsdk/include/d3d8/rtpng.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtquat.h (renamed from rwsdk/include/d3d8/rtquat.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtquat.rpe (renamed from rwsdk/include/d3d8/rtquat.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtras.h (renamed from rwsdk/include/d3d8/rtras.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtras.rpe (renamed from rwsdk/include/d3d8/rtras.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtray.h (renamed from rwsdk/include/d3d8/rtray.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtray.rpe (renamed from rwsdk/include/d3d8/rtray.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtskinsp.h57
-rw-r--r--sdk/rwsdk/include/d3d8/rtskinsp.rpe163
-rw-r--r--sdk/rwsdk/include/d3d8/rtslerp.h (renamed from rwsdk/include/d3d8/rtslerp.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtslerp.rpe (renamed from rwsdk/include/d3d8/rtslerp.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtsplpvs.h (renamed from rwsdk/include/d3d8/rtsplpvs.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtsplpvs.rpe (renamed from rwsdk/include/d3d8/rtsplpvs.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rttiff.h (renamed from rwsdk/include/d3d8/rttiff.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rttiff.rpe (renamed from rwsdk/include/d3d8/rttiff.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rttilerd.h (renamed from rwsdk/include/d3d8/rttilerd.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rttilerd.rpe (renamed from rwsdk/include/d3d8/rttilerd.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rttoc.h (renamed from rwsdk/include/d3d8/rttoc.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rttoc.rpe (renamed from rwsdk/include/d3d8/rttoc.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtvcat.h (renamed from rwsdk/include/d3d8/rtvcat.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtvcat.rpe (renamed from rwsdk/include/d3d8/rtvcat.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtworld.h (renamed from rwsdk/include/d3d8/rtworld.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rtworld.rpe (renamed from rwsdk/include/d3d8/rtworld.rpe)0
-rw-r--r--sdk/rwsdk/include/d3d8/rwcore.h (renamed from rwsdk/include/d3d8/rwcore.h)0
-rw-r--r--sdk/rwsdk/include/d3d8/rwplcore.h (renamed from rwsdk/include/d3d8/rwplcore.h)0
-rw-r--r--src/animation/AnimManager.cpp22
-rw-r--r--src/animation/CutsceneMgr.cpp81
-rw-r--r--src/animation/CutsceneMgr.h4
-rw-r--r--src/audio/eax/eax-util.cpp (renamed from eax/eax-util.cpp)0
-rw-r--r--src/audio/eax/eax-util.h (renamed from eax/eax-util.h)0
-rw-r--r--src/audio/eax/eax.h (renamed from eax/eax.h)0
-rw-r--r--src/audio/oal/stream.cpp106
-rw-r--r--src/audio/sampman.h37
-rw-r--r--src/audio/sampman_oal.cpp58
-rw-r--r--src/control/Pickups.cpp139
-rw-r--r--src/control/Pickups.h16
-rw-r--r--src/control/Script.cpp53
-rw-r--r--src/core/Camera.cpp4
-rw-r--r--src/core/Fire.cpp7
-rw-r--r--src/core/Frontend.cpp4
-rw-r--r--src/core/Game.cpp18
-rw-r--r--src/core/Pad.cpp33
-rw-r--r--src/core/Pad.h1
-rw-r--r--src/core/config.h5
-rw-r--r--src/objects/Object.h1
-rw-r--r--src/render/Fluff.cpp230
-rw-r--r--src/render/Fluff.h30
-rw-r--r--src/render/Hud.cpp6
-rw-r--r--src/render/Hud.h1
-rw-r--r--src/render/Shadows.cpp3
-rw-r--r--src/rw/RwHelper.cpp40
-rw-r--r--src/rw/RwHelper.h8
-rw-r--r--src/rw/RwMatFX.cpp10
-rw-r--r--src/rw/RwPS2AlphaTest.cpp247
-rw-r--r--src/vehicles/Automobile.cpp2
349 files changed, 2564 insertions, 115 deletions
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
--- a/dxsdk/Include/Msvidctl.tlb
+++ /dev/null
Binary files differ
diff --git a/dxsdk/Include/Tuner.tlb b/dxsdk/Include/Tuner.tlb
deleted file mode 100644
index c90fc4ec..00000000
--- a/dxsdk/Include/Tuner.tlb
+++ /dev/null
Binary files differ
diff --git a/ogg b/ogg
new file mode 160000
+Subproject 1e8d7cce266df61afc9d35db0283bbacc0237ab
diff --git a/opus b/opus
new file mode 160000
+Subproject 8aa7767207b1e3633004c26aecbb67d1c511848
diff --git a/opusfile b/opusfile
new file mode 160000
+Subproject eb252537f374e30f7b68b84223c5a2303c05eca
diff --git a/premake5.lua b/premake5.lua
index cdf1819e..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" }
@@ -226,7 +246,7 @@ project "reVC"
includedirs { "libsndfile.32/include" }
includedirs { "mpg123.32/include" }
libdirs { "mpg123.32/lib" }
- libdirs { "libsndfile32/lib" }
+ libdirs { "libsndfile.32/lib" }
libdirs { "openal-soft/libs/Win32" }
filter "platforms:win-amd64*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
index 89339266..89339266 100644
--- a/dxsdk/Include/Amvideo.h
+++ b/sdk/dx8sdk/Include/Amvideo.h
diff --git a/dxsdk/Include/Bdatif.h b/sdk/dx8sdk/Include/Bdatif.h
index 9ea62f09..9ea62f09 100644
--- a/dxsdk/Include/Bdatif.h
+++ b/sdk/dx8sdk/Include/Bdatif.h
diff --git a/dxsdk/Include/DShow.h b/sdk/dx8sdk/Include/DShow.h
index 54b6fbfb..54b6fbfb 100644
--- a/dxsdk/Include/DShow.h
+++ b/sdk/dx8sdk/Include/DShow.h
diff --git a/dxsdk/Include/DShowIDL/Bdatif.idl b/sdk/dx8sdk/Include/DShowIDL/Bdatif.idl
index bc94db40..bc94db40 100644
--- a/dxsdk/Include/DShowIDL/Bdatif.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Bdatif.idl
diff --git a/dxsdk/Include/DShowIDL/Mpeg2Data.idl b/sdk/dx8sdk/Include/DShowIDL/Mpeg2Data.idl
index 6762c49c..6762c49c 100644
--- a/dxsdk/Include/DShowIDL/Mpeg2Data.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Mpeg2Data.idl
diff --git a/dxsdk/Include/DShowIDL/Mpeg2Structs.idl b/sdk/dx8sdk/Include/DShowIDL/Mpeg2Structs.idl
index e04353f4..e04353f4 100644
--- a/dxsdk/Include/DShowIDL/Mpeg2Structs.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Mpeg2Structs.idl
diff --git a/dxsdk/Include/DShowIDL/Mstvca.idl b/sdk/dx8sdk/Include/DShowIDL/Mstvca.idl
index a9b257d8..a9b257d8 100644
--- a/dxsdk/Include/DShowIDL/Mstvca.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Mstvca.idl
diff --git a/dxsdk/Include/DShowIDL/Mstvgs.idl b/sdk/dx8sdk/Include/DShowIDL/Mstvgs.idl
index 7ce83f13..7ce83f13 100644
--- a/dxsdk/Include/DShowIDL/Mstvgs.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Mstvgs.idl
diff --git a/dxsdk/Include/DShowIDL/Msvidctl.idl b/sdk/dx8sdk/Include/DShowIDL/Msvidctl.idl
index d1a4d94e..d1a4d94e 100644
--- a/dxsdk/Include/DShowIDL/Msvidctl.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Msvidctl.idl
diff --git a/dxsdk/Include/DShowIDL/Segment.idl b/sdk/dx8sdk/Include/DShowIDL/Segment.idl
index a9895cbd..a9895cbd 100644
--- a/dxsdk/Include/DShowIDL/Segment.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Segment.idl
diff --git a/dxsdk/Include/DShowIDL/Videoacc.idl b/sdk/dx8sdk/Include/DShowIDL/Videoacc.idl
index 6c55aa73..6c55aa73 100644
--- a/dxsdk/Include/DShowIDL/Videoacc.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Videoacc.idl
diff --git a/dxsdk/Include/DShowIDL/Vmrender.idl b/sdk/dx8sdk/Include/DShowIDL/Vmrender.idl
index ed5e50ec..ed5e50ec 100644
--- a/dxsdk/Include/DShowIDL/Vmrender.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/Vmrender.idl
diff --git a/dxsdk/Include/DShowIDL/amstream.idl b/sdk/dx8sdk/Include/DShowIDL/amstream.idl
index f52db99e..f52db99e 100644
--- a/dxsdk/Include/DShowIDL/amstream.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/amstream.idl
diff --git a/dxsdk/Include/DShowIDL/austream.idl b/sdk/dx8sdk/Include/DShowIDL/austream.idl
index 4987aa08..4987aa08 100644
--- a/dxsdk/Include/DShowIDL/austream.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/austream.idl
diff --git a/dxsdk/Include/DShowIDL/axcore.idl b/sdk/dx8sdk/Include/DShowIDL/axcore.idl
index 4aceea78..4aceea78 100644
--- a/dxsdk/Include/DShowIDL/axcore.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/axcore.idl
diff --git a/dxsdk/Include/DShowIDL/axextend.idl b/sdk/dx8sdk/Include/DShowIDL/axextend.idl
index 257fb19a..257fb19a 100644
--- a/dxsdk/Include/DShowIDL/axextend.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/axextend.idl
diff --git a/dxsdk/Include/DShowIDL/bdaiface.idl b/sdk/dx8sdk/Include/DShowIDL/bdaiface.idl
index e1d27ca9..e1d27ca9 100644
--- a/dxsdk/Include/DShowIDL/bdaiface.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/bdaiface.idl
diff --git a/dxsdk/Include/DShowIDL/control.odl b/sdk/dx8sdk/Include/DShowIDL/control.odl
index 4fba88cf..4fba88cf 100644
--- a/dxsdk/Include/DShowIDL/control.odl
+++ b/sdk/dx8sdk/Include/DShowIDL/control.odl
diff --git a/dxsdk/Include/DShowIDL/ddstream.idl b/sdk/dx8sdk/Include/DShowIDL/ddstream.idl
index 30fa0475..30fa0475 100644
--- a/dxsdk/Include/DShowIDL/ddstream.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/ddstream.idl
diff --git a/dxsdk/Include/DShowIDL/devenum.idl b/sdk/dx8sdk/Include/DShowIDL/devenum.idl
index 257193f4..257193f4 100644
--- a/dxsdk/Include/DShowIDL/devenum.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/devenum.idl
diff --git a/dxsdk/Include/DShowIDL/dmodshow.idl b/sdk/dx8sdk/Include/DShowIDL/dmodshow.idl
index 246f5ae6..246f5ae6 100644
--- a/dxsdk/Include/DShowIDL/dmodshow.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/dmodshow.idl
diff --git a/dxsdk/Include/DShowIDL/dshowasf.idl b/sdk/dx8sdk/Include/DShowIDL/dshowasf.idl
index 8add5111..8add5111 100644
--- a/dxsdk/Include/DShowIDL/dshowasf.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/dshowasf.idl
diff --git a/dxsdk/Include/DShowIDL/dvdif.idl b/sdk/dx8sdk/Include/DShowIDL/dvdif.idl
index 4ad2bca1..4ad2bca1 100644
--- a/dxsdk/Include/DShowIDL/dvdif.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/dvdif.idl
diff --git a/dxsdk/Include/DShowIDL/dxtrans.idl b/sdk/dx8sdk/Include/DShowIDL/dxtrans.idl
index 6395d325..6395d325 100644
--- a/dxsdk/Include/DShowIDL/dxtrans.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/dxtrans.idl
diff --git a/dxsdk/Include/DShowIDL/dyngraph.idl b/sdk/dx8sdk/Include/DShowIDL/dyngraph.idl
index 569def6e..569def6e 100644
--- a/dxsdk/Include/DShowIDL/dyngraph.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/dyngraph.idl
diff --git a/dxsdk/Include/DShowIDL/mediaobj.idl b/sdk/dx8sdk/Include/DShowIDL/mediaobj.idl
index 6852ced9..6852ced9 100644
--- a/dxsdk/Include/DShowIDL/mediaobj.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/mediaobj.idl
diff --git a/dxsdk/Include/DShowIDL/medparam.idl b/sdk/dx8sdk/Include/DShowIDL/medparam.idl
index b45eab97..b45eab97 100644
--- a/dxsdk/Include/DShowIDL/medparam.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/medparam.idl
diff --git a/dxsdk/Include/DShowIDL/mixerocx.idl b/sdk/dx8sdk/Include/DShowIDL/mixerocx.idl
index 5e45b459..5e45b459 100644
--- a/dxsdk/Include/DShowIDL/mixerocx.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/mixerocx.idl
diff --git a/dxsdk/Include/DShowIDL/mmstream.idl b/sdk/dx8sdk/Include/DShowIDL/mmstream.idl
index b94f1ed1..b94f1ed1 100644
--- a/dxsdk/Include/DShowIDL/mmstream.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/mmstream.idl
diff --git a/dxsdk/Include/DShowIDL/mstve.idl b/sdk/dx8sdk/Include/DShowIDL/mstve.idl
index 07383041..07383041 100644
--- a/dxsdk/Include/DShowIDL/mstve.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/mstve.idl
diff --git a/dxsdk/Include/DShowIDL/qedit.idl b/sdk/dx8sdk/Include/DShowIDL/qedit.idl
index b75a3e35..b75a3e35 100644
--- a/dxsdk/Include/DShowIDL/qedit.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/qedit.idl
diff --git a/dxsdk/Include/DShowIDL/regbag.idl b/sdk/dx8sdk/Include/DShowIDL/regbag.idl
index 103aff17..103aff17 100644
--- a/dxsdk/Include/DShowIDL/regbag.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/regbag.idl
diff --git a/dxsdk/Include/DShowIDL/sbe.idl b/sdk/dx8sdk/Include/DShowIDL/sbe.idl
index 246b148c..246b148c 100644
--- a/dxsdk/Include/DShowIDL/sbe.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/sbe.idl
diff --git a/dxsdk/Include/DShowIDL/strmif.idl b/sdk/dx8sdk/Include/DShowIDL/strmif.idl
index 87da1d8b..87da1d8b 100644
--- a/dxsdk/Include/DShowIDL/strmif.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/strmif.idl
diff --git a/dxsdk/Include/DShowIDL/tuner.idl b/sdk/dx8sdk/Include/DShowIDL/tuner.idl
index 75f1beb4..75f1beb4 100644
--- a/dxsdk/Include/DShowIDL/tuner.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/tuner.idl
diff --git a/dxsdk/Include/DShowIDL/tvratings.idl b/sdk/dx8sdk/Include/DShowIDL/tvratings.idl
index 5bf80214..5bf80214 100644
--- a/dxsdk/Include/DShowIDL/tvratings.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/tvratings.idl
diff --git a/dxsdk/Include/DShowIDL/vidcap.idl b/sdk/dx8sdk/Include/DShowIDL/vidcap.idl
index 523bfde3..523bfde3 100644
--- a/dxsdk/Include/DShowIDL/vidcap.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/vidcap.idl
diff --git a/dxsdk/Include/DShowIDL/vmr9.idl b/sdk/dx8sdk/Include/DShowIDL/vmr9.idl
index ae9245f2..ae9245f2 100644
--- a/dxsdk/Include/DShowIDL/vmr9.idl
+++ b/sdk/dx8sdk/Include/DShowIDL/vmr9.idl
diff --git a/dxsdk/Include/DxDiag.h b/sdk/dx8sdk/Include/DxDiag.h
index 602c88f0..602c88f0 100644
--- a/dxsdk/Include/DxDiag.h
+++ b/sdk/dx8sdk/Include/DxDiag.h
diff --git a/dxsdk/Include/Iwstdec.h b/sdk/dx8sdk/Include/Iwstdec.h
index 40007a86..40007a86 100644
--- a/dxsdk/Include/Iwstdec.h
+++ b/sdk/dx8sdk/Include/Iwstdec.h
diff --git a/dxsdk/Include/Mpeg2Bits.h b/sdk/dx8sdk/Include/Mpeg2Bits.h
index 45debbb6..45debbb6 100644
--- a/dxsdk/Include/Mpeg2Bits.h
+++ b/sdk/dx8sdk/Include/Mpeg2Bits.h
diff --git a/dxsdk/Include/Mpeg2Error.h b/sdk/dx8sdk/Include/Mpeg2Error.h
index e2731fb3..e2731fb3 100644
--- a/dxsdk/Include/Mpeg2Error.h
+++ b/sdk/dx8sdk/Include/Mpeg2Error.h
diff --git a/dxsdk/Include/Mstvca.h b/sdk/dx8sdk/Include/Mstvca.h
index b840f3e4..b840f3e4 100644
--- a/dxsdk/Include/Mstvca.h
+++ b/sdk/dx8sdk/Include/Mstvca.h
diff --git a/dxsdk/Include/Mstve.h b/sdk/dx8sdk/Include/Mstve.h
index 4cee53a6..4cee53a6 100644
--- a/dxsdk/Include/Mstve.h
+++ b/sdk/dx8sdk/Include/Mstve.h
diff --git a/dxsdk/Include/Msvidctl.h b/sdk/dx8sdk/Include/Msvidctl.h
index 82e1e1e3..82e1e1e3 100644
--- a/dxsdk/Include/Msvidctl.h
+++ b/sdk/dx8sdk/Include/Msvidctl.h
diff --git a/dxsdk/Include/PixPlugin.h b/sdk/dx8sdk/Include/PixPlugin.h
index 4825cd3a..4825cd3a 100644
--- a/dxsdk/Include/PixPlugin.h
+++ b/sdk/dx8sdk/Include/PixPlugin.h
diff --git a/dxsdk/Include/Segment.h b/sdk/dx8sdk/Include/Segment.h
index da51f252..da51f252 100644
--- a/dxsdk/Include/Segment.h
+++ b/sdk/dx8sdk/Include/Segment.h
diff --git a/dxsdk/Include/activecf.h b/sdk/dx8sdk/Include/activecf.h
index 5efd8cfc..5efd8cfc 100644
--- a/dxsdk/Include/activecf.h
+++ b/sdk/dx8sdk/Include/activecf.h
diff --git a/dxsdk/Include/amaudio.h b/sdk/dx8sdk/Include/amaudio.h
index cd6d0532..cd6d0532 100644
--- a/dxsdk/Include/amaudio.h
+++ b/sdk/dx8sdk/Include/amaudio.h
diff --git a/dxsdk/Include/amparse.h b/sdk/dx8sdk/Include/amparse.h
index ce7a388d..ce7a388d 100644
--- a/dxsdk/Include/amparse.h
+++ b/sdk/dx8sdk/Include/amparse.h
diff --git a/dxsdk/Include/amstream.h b/sdk/dx8sdk/Include/amstream.h
index 421fb80e..421fb80e 100644
--- a/dxsdk/Include/amstream.h
+++ b/sdk/dx8sdk/Include/amstream.h
diff --git a/dxsdk/Include/amva.h b/sdk/dx8sdk/Include/amva.h
index fd46164f..fd46164f 100644
--- a/dxsdk/Include/amva.h
+++ b/sdk/dx8sdk/Include/amva.h
diff --git a/dxsdk/Include/atsmedia.h b/sdk/dx8sdk/Include/atsmedia.h
index 3e268a55..3e268a55 100644
--- a/dxsdk/Include/atsmedia.h
+++ b/sdk/dx8sdk/Include/atsmedia.h
diff --git a/dxsdk/Include/audevcod.h b/sdk/dx8sdk/Include/audevcod.h
index 98dfbfc2..98dfbfc2 100644
--- a/dxsdk/Include/audevcod.h
+++ b/sdk/dx8sdk/Include/audevcod.h
diff --git a/dxsdk/Include/austream.h b/sdk/dx8sdk/Include/austream.h
index b6ed5c27..b6ed5c27 100644
--- a/dxsdk/Include/austream.h
+++ b/sdk/dx8sdk/Include/austream.h
diff --git a/dxsdk/Include/aviriff.h b/sdk/dx8sdk/Include/aviriff.h
index 5ba2990c..5ba2990c 100644
--- a/dxsdk/Include/aviriff.h
+++ b/sdk/dx8sdk/Include/aviriff.h
diff --git a/dxsdk/Include/bdaiface.h b/sdk/dx8sdk/Include/bdaiface.h
index 5b149029..5b149029 100644
--- a/dxsdk/Include/bdaiface.h
+++ b/sdk/dx8sdk/Include/bdaiface.h
diff --git a/dxsdk/Include/bdamedia.h b/sdk/dx8sdk/Include/bdamedia.h
index 92389192..92389192 100644
--- a/dxsdk/Include/bdamedia.h
+++ b/sdk/dx8sdk/Include/bdamedia.h
diff --git a/dxsdk/Include/bdatypes.h b/sdk/dx8sdk/Include/bdatypes.h
index 2c44f1ba..2c44f1ba 100644
--- a/dxsdk/Include/bdatypes.h
+++ b/sdk/dx8sdk/Include/bdatypes.h
diff --git a/dxsdk/Include/comlite.h b/sdk/dx8sdk/Include/comlite.h
index 5fc91932..5fc91932 100644
--- a/dxsdk/Include/comlite.h
+++ b/sdk/dx8sdk/Include/comlite.h
diff --git a/dxsdk/Include/control.h b/sdk/dx8sdk/Include/control.h
index 906fbc4f..906fbc4f 100644
--- a/dxsdk/Include/control.h
+++ b/sdk/dx8sdk/Include/control.h
diff --git a/dxsdk/Include/d3d.h b/sdk/dx8sdk/Include/d3d.h
index eea7dff4..eea7dff4 100644
--- a/dxsdk/Include/d3d.h
+++ b/sdk/dx8sdk/Include/d3d.h
diff --git a/dxsdk/Include/d3d8.h b/sdk/dx8sdk/Include/d3d8.h
index adf91ebf..adf91ebf 100644
--- a/dxsdk/Include/d3d8.h
+++ b/sdk/dx8sdk/Include/d3d8.h
diff --git a/dxsdk/Include/d3d8caps.h b/sdk/dx8sdk/Include/d3d8caps.h
index 6af8e6c4..6af8e6c4 100644
--- a/dxsdk/Include/d3d8caps.h
+++ b/sdk/dx8sdk/Include/d3d8caps.h
diff --git a/dxsdk/Include/d3d8types.h b/sdk/dx8sdk/Include/d3d8types.h
index 5d622af4..5d622af4 100644
--- a/dxsdk/Include/d3d8types.h
+++ b/sdk/dx8sdk/Include/d3d8types.h
diff --git a/dxsdk/Include/d3d9.h b/sdk/dx8sdk/Include/d3d9.h
index 85bd9579..85bd9579 100644
--- a/dxsdk/Include/d3d9.h
+++ b/sdk/dx8sdk/Include/d3d9.h
diff --git a/dxsdk/Include/d3d9caps.h b/sdk/dx8sdk/Include/d3d9caps.h
index 6489f0ef..6489f0ef 100644
--- a/dxsdk/Include/d3d9caps.h
+++ b/sdk/dx8sdk/Include/d3d9caps.h
diff --git a/dxsdk/Include/d3d9types.h b/sdk/dx8sdk/Include/d3d9types.h
index 4c2108fd..4c2108fd 100644
--- a/dxsdk/Include/d3d9types.h
+++ b/sdk/dx8sdk/Include/d3d9types.h
diff --git a/dxsdk/Include/d3dcaps.h b/sdk/dx8sdk/Include/d3dcaps.h
index 6066c7ab..6066c7ab 100644
--- a/dxsdk/Include/d3dcaps.h
+++ b/sdk/dx8sdk/Include/d3dcaps.h
diff --git a/dxsdk/Include/d3drm.h b/sdk/dx8sdk/Include/d3drm.h
index 143c0e05..143c0e05 100644
--- a/dxsdk/Include/d3drm.h
+++ b/sdk/dx8sdk/Include/d3drm.h
diff --git a/dxsdk/Include/d3drmdef.h b/sdk/dx8sdk/Include/d3drmdef.h
index 9da4b18a..9da4b18a 100644
--- a/dxsdk/Include/d3drmdef.h
+++ b/sdk/dx8sdk/Include/d3drmdef.h
diff --git a/dxsdk/Include/d3drmobj.h b/sdk/dx8sdk/Include/d3drmobj.h
index 45ad81dd..45ad81dd 100644
--- a/dxsdk/Include/d3drmobj.h
+++ b/sdk/dx8sdk/Include/d3drmobj.h
diff --git a/dxsdk/Include/d3drmwin.h b/sdk/dx8sdk/Include/d3drmwin.h
index d051ef48..d051ef48 100644
--- a/dxsdk/Include/d3drmwin.h
+++ b/sdk/dx8sdk/Include/d3drmwin.h
diff --git a/dxsdk/Include/d3dtypes.h b/sdk/dx8sdk/Include/d3dtypes.h
index 79490418..79490418 100644
--- a/dxsdk/Include/d3dtypes.h
+++ b/sdk/dx8sdk/Include/d3dtypes.h
diff --git a/dxsdk/Include/d3dvec.inl b/sdk/dx8sdk/Include/d3dvec.inl
index ff7fdfea..ff7fdfea 100644
--- a/dxsdk/Include/d3dvec.inl
+++ b/sdk/dx8sdk/Include/d3dvec.inl
diff --git a/dxsdk/Include/d3dx.h b/sdk/dx8sdk/Include/d3dx.h
index 7a511e3f..7a511e3f 100644
--- a/dxsdk/Include/d3dx.h
+++ b/sdk/dx8sdk/Include/d3dx.h
diff --git a/dxsdk/Include/d3dx8.h b/sdk/dx8sdk/Include/d3dx8.h
index 31927a27..31927a27 100644
--- a/dxsdk/Include/d3dx8.h
+++ b/sdk/dx8sdk/Include/d3dx8.h
diff --git a/dxsdk/Include/d3dx8core.h b/sdk/dx8sdk/Include/d3dx8core.h
index 46552a95..46552a95 100644
--- a/dxsdk/Include/d3dx8core.h
+++ b/sdk/dx8sdk/Include/d3dx8core.h
diff --git a/dxsdk/Include/d3dx8effect.h b/sdk/dx8sdk/Include/d3dx8effect.h
index 97c44df9..97c44df9 100644
--- a/dxsdk/Include/d3dx8effect.h
+++ b/sdk/dx8sdk/Include/d3dx8effect.h
diff --git a/dxsdk/Include/d3dx8math.h b/sdk/dx8sdk/Include/d3dx8math.h
index 9c8f2030..9c8f2030 100644
--- a/dxsdk/Include/d3dx8math.h
+++ b/sdk/dx8sdk/Include/d3dx8math.h
diff --git a/dxsdk/Include/d3dx8math.inl b/sdk/dx8sdk/Include/d3dx8math.inl
index a64e5c54..a64e5c54 100644
--- a/dxsdk/Include/d3dx8math.inl
+++ b/sdk/dx8sdk/Include/d3dx8math.inl
diff --git a/dxsdk/Include/d3dx8mesh.h b/sdk/dx8sdk/Include/d3dx8mesh.h
index 5408cd31..5408cd31 100644
--- a/dxsdk/Include/d3dx8mesh.h
+++ b/sdk/dx8sdk/Include/d3dx8mesh.h
diff --git a/dxsdk/Include/d3dx8shape.h b/sdk/dx8sdk/Include/d3dx8shape.h
index b7ab6378..b7ab6378 100644
--- a/dxsdk/Include/d3dx8shape.h
+++ b/sdk/dx8sdk/Include/d3dx8shape.h
diff --git a/dxsdk/Include/d3dx8tex.h b/sdk/dx8sdk/Include/d3dx8tex.h
index dd9fe9d0..dd9fe9d0 100644
--- a/dxsdk/Include/d3dx8tex.h
+++ b/sdk/dx8sdk/Include/d3dx8tex.h
diff --git a/dxsdk/Include/d3dx9.h b/sdk/dx8sdk/Include/d3dx9.h
index 822f0a81..822f0a81 100644
--- a/dxsdk/Include/d3dx9.h
+++ b/sdk/dx8sdk/Include/d3dx9.h
diff --git a/dxsdk/Include/d3dx9anim.h b/sdk/dx8sdk/Include/d3dx9anim.h
index fedb1dbe..fedb1dbe 100644
--- a/dxsdk/Include/d3dx9anim.h
+++ b/sdk/dx8sdk/Include/d3dx9anim.h
diff --git a/dxsdk/Include/d3dx9core.h b/sdk/dx8sdk/Include/d3dx9core.h
index bc65377c..bc65377c 100644
--- a/dxsdk/Include/d3dx9core.h
+++ b/sdk/dx8sdk/Include/d3dx9core.h
diff --git a/dxsdk/Include/d3dx9effect.h b/sdk/dx8sdk/Include/d3dx9effect.h
index 3359a1d5..3359a1d5 100644
--- a/dxsdk/Include/d3dx9effect.h
+++ b/sdk/dx8sdk/Include/d3dx9effect.h
diff --git a/dxsdk/Include/d3dx9math.h b/sdk/dx8sdk/Include/d3dx9math.h
index 2ba4a606..2ba4a606 100644
--- a/dxsdk/Include/d3dx9math.h
+++ b/sdk/dx8sdk/Include/d3dx9math.h
diff --git a/dxsdk/Include/d3dx9math.inl b/sdk/dx8sdk/Include/d3dx9math.inl
index ecf52f96..ecf52f96 100644
--- a/dxsdk/Include/d3dx9math.inl
+++ b/sdk/dx8sdk/Include/d3dx9math.inl
diff --git a/dxsdk/Include/d3dx9mesh.h b/sdk/dx8sdk/Include/d3dx9mesh.h
index ba2bd47d..ba2bd47d 100644
--- a/dxsdk/Include/d3dx9mesh.h
+++ b/sdk/dx8sdk/Include/d3dx9mesh.h
diff --git a/dxsdk/Include/d3dx9shader.h b/sdk/dx8sdk/Include/d3dx9shader.h
index cae915a7..cae915a7 100644
--- a/dxsdk/Include/d3dx9shader.h
+++ b/sdk/dx8sdk/Include/d3dx9shader.h
diff --git a/dxsdk/Include/d3dx9shape.h b/sdk/dx8sdk/Include/d3dx9shape.h
index 4c230915..4c230915 100644
--- a/dxsdk/Include/d3dx9shape.h
+++ b/sdk/dx8sdk/Include/d3dx9shape.h
diff --git a/dxsdk/Include/d3dx9tex.h b/sdk/dx8sdk/Include/d3dx9tex.h
index 0d62b699..0d62b699 100644
--- a/dxsdk/Include/d3dx9tex.h
+++ b/sdk/dx8sdk/Include/d3dx9tex.h
diff --git a/dxsdk/Include/d3dx9xof.h b/sdk/dx8sdk/Include/d3dx9xof.h
index c513f0fc..c513f0fc 100644
--- a/dxsdk/Include/d3dx9xof.h
+++ b/sdk/dx8sdk/Include/d3dx9xof.h
diff --git a/dxsdk/Include/d3dxcore.h b/sdk/dx8sdk/Include/d3dxcore.h
index da1e9893..da1e9893 100644
--- a/dxsdk/Include/d3dxcore.h
+++ b/sdk/dx8sdk/Include/d3dxcore.h
diff --git a/dxsdk/Include/d3dxerr.h b/sdk/dx8sdk/Include/d3dxerr.h
index 155005b7..155005b7 100644
--- a/dxsdk/Include/d3dxerr.h
+++ b/sdk/dx8sdk/Include/d3dxerr.h
diff --git a/dxsdk/Include/d3dxmath.h b/sdk/dx8sdk/Include/d3dxmath.h
index 42f00d1a..42f00d1a 100644
--- a/dxsdk/Include/d3dxmath.h
+++ b/sdk/dx8sdk/Include/d3dxmath.h
diff --git a/dxsdk/Include/d3dxmath.inl b/sdk/dx8sdk/Include/d3dxmath.inl
index 05f04319..05f04319 100644
--- a/dxsdk/Include/d3dxmath.inl
+++ b/sdk/dx8sdk/Include/d3dxmath.inl
diff --git a/dxsdk/Include/d3dxshapes.h b/sdk/dx8sdk/Include/d3dxshapes.h
index 765c59f5..765c59f5 100644
--- a/dxsdk/Include/d3dxshapes.h
+++ b/sdk/dx8sdk/Include/d3dxshapes.h
diff --git a/dxsdk/Include/d3dxsprite.h b/sdk/dx8sdk/Include/d3dxsprite.h
index a08b4a99..a08b4a99 100644
--- a/dxsdk/Include/d3dxsprite.h
+++ b/sdk/dx8sdk/Include/d3dxsprite.h
diff --git a/dxsdk/Include/ddraw.h b/sdk/dx8sdk/Include/ddraw.h
index e66314bf..e66314bf 100644
--- a/dxsdk/Include/ddraw.h
+++ b/sdk/dx8sdk/Include/ddraw.h
diff --git a/dxsdk/Include/ddstream.h b/sdk/dx8sdk/Include/ddstream.h
index 49c3171e..49c3171e 100644
--- a/dxsdk/Include/ddstream.h
+++ b/sdk/dx8sdk/Include/ddstream.h
diff --git a/dxsdk/Include/dinput.h b/sdk/dx8sdk/Include/dinput.h
index 5aac2563..5aac2563 100644
--- a/dxsdk/Include/dinput.h
+++ b/sdk/dx8sdk/Include/dinput.h
diff --git a/dxsdk/Include/dinputd.h b/sdk/dx8sdk/Include/dinputd.h
index f5343538..f5343538 100644
--- a/dxsdk/Include/dinputd.h
+++ b/sdk/dx8sdk/Include/dinputd.h
diff --git a/dxsdk/Include/dls1.h b/sdk/dx8sdk/Include/dls1.h
index fc88a317..fc88a317 100644
--- a/dxsdk/Include/dls1.h
+++ b/sdk/dx8sdk/Include/dls1.h
diff --git a/dxsdk/Include/dls2.h b/sdk/dx8sdk/Include/dls2.h
index 30cec23a..30cec23a 100644
--- a/dxsdk/Include/dls2.h
+++ b/sdk/dx8sdk/Include/dls2.h
diff --git a/dxsdk/Include/dmdls.h b/sdk/dx8sdk/Include/dmdls.h
index c5072681..c5072681 100644
--- a/dxsdk/Include/dmdls.h
+++ b/sdk/dx8sdk/Include/dmdls.h
diff --git a/dxsdk/Include/dmerror.h b/sdk/dx8sdk/Include/dmerror.h
index a0a61ffc..a0a61ffc 100644
--- a/dxsdk/Include/dmerror.h
+++ b/sdk/dx8sdk/Include/dmerror.h
diff --git a/dxsdk/Include/dmksctrl.h b/sdk/dx8sdk/Include/dmksctrl.h
index f53e714b..f53e714b 100644
--- a/dxsdk/Include/dmksctrl.h
+++ b/sdk/dx8sdk/Include/dmksctrl.h
diff --git a/dxsdk/Include/dmo.h b/sdk/dx8sdk/Include/dmo.h
index 30cc2e9d..30cc2e9d 100644
--- a/dxsdk/Include/dmo.h
+++ b/sdk/dx8sdk/Include/dmo.h
diff --git a/dxsdk/Include/dmodshow.h b/sdk/dx8sdk/Include/dmodshow.h
index 48b323d8..48b323d8 100644
--- a/dxsdk/Include/dmodshow.h
+++ b/sdk/dx8sdk/Include/dmodshow.h
diff --git a/dxsdk/Include/dmoimpl.h b/sdk/dx8sdk/Include/dmoimpl.h
index 8ba6e3a8..8ba6e3a8 100644
--- a/dxsdk/Include/dmoimpl.h
+++ b/sdk/dx8sdk/Include/dmoimpl.h
diff --git a/dxsdk/Include/dmoreg.h b/sdk/dx8sdk/Include/dmoreg.h
index 6c6c22f7..6c6c22f7 100644
--- a/dxsdk/Include/dmoreg.h
+++ b/sdk/dx8sdk/Include/dmoreg.h
diff --git a/dxsdk/Include/dmort.h b/sdk/dx8sdk/Include/dmort.h
index cfe25a4a..cfe25a4a 100644
--- a/dxsdk/Include/dmort.h
+++ b/sdk/dx8sdk/Include/dmort.h
diff --git a/dxsdk/Include/dmplugin.h b/sdk/dx8sdk/Include/dmplugin.h
index 3f3e1414..3f3e1414 100644
--- a/dxsdk/Include/dmplugin.h
+++ b/sdk/dx8sdk/Include/dmplugin.h
diff --git a/dxsdk/Include/dmusbuff.h b/sdk/dx8sdk/Include/dmusbuff.h
index 54884538..54884538 100644
--- a/dxsdk/Include/dmusbuff.h
+++ b/sdk/dx8sdk/Include/dmusbuff.h
diff --git a/dxsdk/Include/dmusicc.h b/sdk/dx8sdk/Include/dmusicc.h
index 3084d110..3084d110 100644
--- a/dxsdk/Include/dmusicc.h
+++ b/sdk/dx8sdk/Include/dmusicc.h
diff --git a/dxsdk/Include/dmusicf.h b/sdk/dx8sdk/Include/dmusicf.h
index 195edd7e..195edd7e 100644
--- a/dxsdk/Include/dmusicf.h
+++ b/sdk/dx8sdk/Include/dmusicf.h
diff --git a/dxsdk/Include/dmusici.h b/sdk/dx8sdk/Include/dmusici.h
index d985806b..d985806b 100644
--- a/dxsdk/Include/dmusici.h
+++ b/sdk/dx8sdk/Include/dmusici.h
diff --git a/dxsdk/Include/dmusics.h b/sdk/dx8sdk/Include/dmusics.h
index 8f1e45d8..8f1e45d8 100644
--- a/dxsdk/Include/dmusics.h
+++ b/sdk/dx8sdk/Include/dmusics.h
diff --git a/dxsdk/Include/dpaddr.h b/sdk/dx8sdk/Include/dpaddr.h
index 6e3fccf6..6e3fccf6 100644
--- a/dxsdk/Include/dpaddr.h
+++ b/sdk/dx8sdk/Include/dpaddr.h
diff --git a/dxsdk/Include/dplay.h b/sdk/dx8sdk/Include/dplay.h
index d91c0a5e..d91c0a5e 100644
--- a/dxsdk/Include/dplay.h
+++ b/sdk/dx8sdk/Include/dplay.h
diff --git a/dxsdk/Include/dplay8.h b/sdk/dx8sdk/Include/dplay8.h
index c6799a9d..c6799a9d 100644
--- a/dxsdk/Include/dplay8.h
+++ b/sdk/dx8sdk/Include/dplay8.h
diff --git a/dxsdk/Include/dplobby.h b/sdk/dx8sdk/Include/dplobby.h
index c91d3238..c91d3238 100644
--- a/dxsdk/Include/dplobby.h
+++ b/sdk/dx8sdk/Include/dplobby.h
diff --git a/dxsdk/Include/dplobby8.h b/sdk/dx8sdk/Include/dplobby8.h
index e63a5aac..e63a5aac 100644
--- a/dxsdk/Include/dplobby8.h
+++ b/sdk/dx8sdk/Include/dplobby8.h
diff --git a/dxsdk/Include/dpnathlp.h b/sdk/dx8sdk/Include/dpnathlp.h
index 720e43ad..720e43ad 100644
--- a/dxsdk/Include/dpnathlp.h
+++ b/sdk/dx8sdk/Include/dpnathlp.h
diff --git a/dxsdk/Include/dsconf.h b/sdk/dx8sdk/Include/dsconf.h
index 018f65a0..018f65a0 100644
--- a/dxsdk/Include/dsconf.h
+++ b/sdk/dx8sdk/Include/dsconf.h
diff --git a/dxsdk/Include/dsetup.h b/sdk/dx8sdk/Include/dsetup.h
index 0f4e3b0e..0f4e3b0e 100644
--- a/dxsdk/Include/dsetup.h
+++ b/sdk/dx8sdk/Include/dsetup.h
diff --git a/dxsdk/Include/dshowasf.h b/sdk/dx8sdk/Include/dshowasf.h
index 14d19487..14d19487 100644
--- a/dxsdk/Include/dshowasf.h
+++ b/sdk/dx8sdk/Include/dshowasf.h
diff --git a/dxsdk/Include/dsound.h b/sdk/dx8sdk/Include/dsound.h
index 8020a660..8020a660 100644
--- a/dxsdk/Include/dsound.h
+++ b/sdk/dx8sdk/Include/dsound.h
diff --git a/dxsdk/Include/dv.h b/sdk/dx8sdk/Include/dv.h
index d0fe0485..d0fe0485 100644
--- a/dxsdk/Include/dv.h
+++ b/sdk/dx8sdk/Include/dv.h
diff --git a/dxsdk/Include/dvdevcod.h b/sdk/dx8sdk/Include/dvdevcod.h
index 15b47931..15b47931 100644
--- a/dxsdk/Include/dvdevcod.h
+++ b/sdk/dx8sdk/Include/dvdevcod.h
diff --git a/dxsdk/Include/dvdmedia.h b/sdk/dx8sdk/Include/dvdmedia.h
index 132c5bab..132c5bab 100644
--- a/dxsdk/Include/dvdmedia.h
+++ b/sdk/dx8sdk/Include/dvdmedia.h
diff --git a/dxsdk/Include/dvoice.h b/sdk/dx8sdk/Include/dvoice.h
index 000ac511..000ac511 100644
--- a/dxsdk/Include/dvoice.h
+++ b/sdk/dx8sdk/Include/dvoice.h
diff --git a/dxsdk/Include/dvp.h b/sdk/dx8sdk/Include/dvp.h
index c40dc793..c40dc793 100644
--- a/dxsdk/Include/dvp.h
+++ b/sdk/dx8sdk/Include/dvp.h
diff --git a/dxsdk/Include/dx7todx8.h b/sdk/dx8sdk/Include/dx7todx8.h
index a513d693..a513d693 100644
--- a/dxsdk/Include/dx7todx8.h
+++ b/sdk/dx8sdk/Include/dx7todx8.h
diff --git a/dxsdk/Include/dxerr8.h b/sdk/dx8sdk/Include/dxerr8.h
index 8b7813da..8b7813da 100644
--- a/dxsdk/Include/dxerr8.h
+++ b/sdk/dx8sdk/Include/dxerr8.h
diff --git a/dxsdk/Include/dxerr9.h b/sdk/dx8sdk/Include/dxerr9.h
index 3fc6fba3..3fc6fba3 100644
--- a/dxsdk/Include/dxerr9.h
+++ b/sdk/dx8sdk/Include/dxerr9.h
diff --git a/dxsdk/Include/dxfile.h b/sdk/dx8sdk/Include/dxfile.h
index 8b5995a5..8b5995a5 100644
--- a/dxsdk/Include/dxfile.h
+++ b/sdk/dx8sdk/Include/dxfile.h
diff --git a/dxsdk/Include/dxtrans.h b/sdk/dx8sdk/Include/dxtrans.h
index 8df2ff77..8df2ff77 100644
--- a/dxsdk/Include/dxtrans.h
+++ b/sdk/dx8sdk/Include/dxtrans.h
diff --git a/dxsdk/Include/dxva.h b/sdk/dx8sdk/Include/dxva.h
index 05d46680..05d46680 100644
--- a/dxsdk/Include/dxva.h
+++ b/sdk/dx8sdk/Include/dxva.h
diff --git a/dxsdk/Include/edevctrl.h b/sdk/dx8sdk/Include/edevctrl.h
index 07510447..07510447 100644
--- a/dxsdk/Include/edevctrl.h
+++ b/sdk/dx8sdk/Include/edevctrl.h
diff --git a/dxsdk/Include/edevdefs.h b/sdk/dx8sdk/Include/edevdefs.h
index 16af462d..16af462d 100644
--- a/dxsdk/Include/edevdefs.h
+++ b/sdk/dx8sdk/Include/edevdefs.h
diff --git a/dxsdk/Include/errors.h b/sdk/dx8sdk/Include/errors.h
index cee756fb..cee756fb 100644
--- a/dxsdk/Include/errors.h
+++ b/sdk/dx8sdk/Include/errors.h
diff --git a/dxsdk/Include/evcode.h b/sdk/dx8sdk/Include/evcode.h
index 32cc1958..32cc1958 100644
--- a/dxsdk/Include/evcode.h
+++ b/sdk/dx8sdk/Include/evcode.h
diff --git a/dxsdk/Include/il21dec.h b/sdk/dx8sdk/Include/il21dec.h
index a2c7fc67..a2c7fc67 100644
--- a/dxsdk/Include/il21dec.h
+++ b/sdk/dx8sdk/Include/il21dec.h
diff --git a/dxsdk/Include/ks.h b/sdk/dx8sdk/Include/ks.h
index 4f766b9f..4f766b9f 100644
--- a/dxsdk/Include/ks.h
+++ b/sdk/dx8sdk/Include/ks.h
diff --git a/dxsdk/Include/ksguid.h b/sdk/dx8sdk/Include/ksguid.h
index 42cd2c70..42cd2c70 100644
--- a/dxsdk/Include/ksguid.h
+++ b/sdk/dx8sdk/Include/ksguid.h
diff --git a/dxsdk/Include/ksmedia.h b/sdk/dx8sdk/Include/ksmedia.h
index 136c5ccd..136c5ccd 100644
--- a/dxsdk/Include/ksmedia.h
+++ b/sdk/dx8sdk/Include/ksmedia.h
diff --git a/dxsdk/Include/ksproxy.h b/sdk/dx8sdk/Include/ksproxy.h
index 62be50ec..62be50ec 100644
--- a/dxsdk/Include/ksproxy.h
+++ b/sdk/dx8sdk/Include/ksproxy.h
diff --git a/dxsdk/Include/ksuuids.h b/sdk/dx8sdk/Include/ksuuids.h
index 816fff26..816fff26 100644
--- a/dxsdk/Include/ksuuids.h
+++ b/sdk/dx8sdk/Include/ksuuids.h
diff --git a/dxsdk/Include/mediaerr.h b/sdk/dx8sdk/Include/mediaerr.h
index 74c242a5..74c242a5 100644
--- a/dxsdk/Include/mediaerr.h
+++ b/sdk/dx8sdk/Include/mediaerr.h
diff --git a/dxsdk/Include/mediaobj.h b/sdk/dx8sdk/Include/mediaobj.h
index d90d0943..d90d0943 100644
--- a/dxsdk/Include/mediaobj.h
+++ b/sdk/dx8sdk/Include/mediaobj.h
diff --git a/dxsdk/Include/medparam.h b/sdk/dx8sdk/Include/medparam.h
index db38cac8..db38cac8 100644
--- a/dxsdk/Include/medparam.h
+++ b/sdk/dx8sdk/Include/medparam.h
diff --git a/dxsdk/Include/mixerocx.h b/sdk/dx8sdk/Include/mixerocx.h
index fd7814e3..fd7814e3 100644
--- a/dxsdk/Include/mixerocx.h
+++ b/sdk/dx8sdk/Include/mixerocx.h
diff --git a/dxsdk/Include/mmstream.h b/sdk/dx8sdk/Include/mmstream.h
index ec91bc0b..ec91bc0b 100644
--- a/dxsdk/Include/mmstream.h
+++ b/sdk/dx8sdk/Include/mmstream.h
diff --git a/dxsdk/Include/mpconfig.h b/sdk/dx8sdk/Include/mpconfig.h
index 49f8cf10..49f8cf10 100644
--- a/dxsdk/Include/mpconfig.h
+++ b/sdk/dx8sdk/Include/mpconfig.h
diff --git a/dxsdk/Include/mpeg2data.h b/sdk/dx8sdk/Include/mpeg2data.h
index f3301c69..f3301c69 100644
--- a/dxsdk/Include/mpeg2data.h
+++ b/sdk/dx8sdk/Include/mpeg2data.h
diff --git a/dxsdk/Include/mpegtype.h b/sdk/dx8sdk/Include/mpegtype.h
index 4e79fcb0..4e79fcb0 100644
--- a/dxsdk/Include/mpegtype.h
+++ b/sdk/dx8sdk/Include/mpegtype.h
diff --git a/dxsdk/Include/multimon.h b/sdk/dx8sdk/Include/multimon.h
index 88e2862a..88e2862a 100644
--- a/dxsdk/Include/multimon.h
+++ b/sdk/dx8sdk/Include/multimon.h
diff --git a/dxsdk/Include/playlist.h b/sdk/dx8sdk/Include/playlist.h
index 1a796f3a..1a796f3a 100644
--- a/dxsdk/Include/playlist.h
+++ b/sdk/dx8sdk/Include/playlist.h
diff --git a/dxsdk/Include/qedit.h b/sdk/dx8sdk/Include/qedit.h
index 947c8a08..947c8a08 100644
--- a/dxsdk/Include/qedit.h
+++ b/sdk/dx8sdk/Include/qedit.h
diff --git a/dxsdk/Include/qnetwork.h b/sdk/dx8sdk/Include/qnetwork.h
index 2df21946..2df21946 100644
--- a/dxsdk/Include/qnetwork.h
+++ b/sdk/dx8sdk/Include/qnetwork.h
diff --git a/dxsdk/Include/regbag.h b/sdk/dx8sdk/Include/regbag.h
index 6cb54d78..6cb54d78 100644
--- a/dxsdk/Include/regbag.h
+++ b/sdk/dx8sdk/Include/regbag.h
diff --git a/dxsdk/Include/rmxfguid.h b/sdk/dx8sdk/Include/rmxfguid.h
index d3326ccc..d3326ccc 100644
--- a/dxsdk/Include/rmxfguid.h
+++ b/sdk/dx8sdk/Include/rmxfguid.h
diff --git a/dxsdk/Include/rmxftmpl.h b/sdk/dx8sdk/Include/rmxftmpl.h
index e0018d04..e0018d04 100644
--- a/dxsdk/Include/rmxftmpl.h
+++ b/sdk/dx8sdk/Include/rmxftmpl.h
diff --git a/dxsdk/Include/sbe.h b/sdk/dx8sdk/Include/sbe.h
index 0fcc4011..0fcc4011 100644
--- a/dxsdk/Include/sbe.h
+++ b/sdk/dx8sdk/Include/sbe.h
diff --git a/dxsdk/Include/strmif.h b/sdk/dx8sdk/Include/strmif.h
index 600105e7..600105e7 100644
--- a/dxsdk/Include/strmif.h
+++ b/sdk/dx8sdk/Include/strmif.h
diff --git a/dxsdk/Include/strsafe.h b/sdk/dx8sdk/Include/strsafe.h
index 061b3c4d..061b3c4d 100644
--- a/dxsdk/Include/strsafe.h
+++ b/sdk/dx8sdk/Include/strsafe.h
diff --git a/dxsdk/Include/tune.h b/sdk/dx8sdk/Include/tune.h
index 63920f90..63920f90 100644
--- a/dxsdk/Include/tune.h
+++ b/sdk/dx8sdk/Include/tune.h
diff --git a/dxsdk/Include/tuner.h b/sdk/dx8sdk/Include/tuner.h
index cd08a15c..cd08a15c 100644
--- a/dxsdk/Include/tuner.h
+++ b/sdk/dx8sdk/Include/tuner.h
diff --git a/dxsdk/Include/tvratings.h b/sdk/dx8sdk/Include/tvratings.h
index 53e6cfea..53e6cfea 100644
--- a/dxsdk/Include/tvratings.h
+++ b/sdk/dx8sdk/Include/tvratings.h
diff --git a/dxsdk/Include/uuids.h b/sdk/dx8sdk/Include/uuids.h
index c713d0df..c713d0df 100644
--- a/dxsdk/Include/uuids.h
+++ b/sdk/dx8sdk/Include/uuids.h
diff --git a/dxsdk/Include/vfwmsgs.h b/sdk/dx8sdk/Include/vfwmsgs.h
index 57852e9f..57852e9f 100644
--- a/dxsdk/Include/vfwmsgs.h
+++ b/sdk/dx8sdk/Include/vfwmsgs.h
diff --git a/dxsdk/Include/vidcap.h b/sdk/dx8sdk/Include/vidcap.h
index 23d810bb..23d810bb 100644
--- a/dxsdk/Include/vidcap.h
+++ b/sdk/dx8sdk/Include/vidcap.h
diff --git a/dxsdk/Include/videoacc.h b/sdk/dx8sdk/Include/videoacc.h
index 7121ff46..7121ff46 100644
--- a/dxsdk/Include/videoacc.h
+++ b/sdk/dx8sdk/Include/videoacc.h
diff --git a/dxsdk/Include/vmr9.h b/sdk/dx8sdk/Include/vmr9.h
index 0a4e1fe4..0a4e1fe4 100644
--- a/dxsdk/Include/vmr9.h
+++ b/sdk/dx8sdk/Include/vmr9.h
diff --git a/dxsdk/Include/vpconfig.h b/sdk/dx8sdk/Include/vpconfig.h
index 776d99f5..776d99f5 100644
--- a/dxsdk/Include/vpconfig.h
+++ b/sdk/dx8sdk/Include/vpconfig.h
diff --git a/dxsdk/Include/vpnotify.h b/sdk/dx8sdk/Include/vpnotify.h
index 2e1d1b6b..2e1d1b6b 100644
--- a/dxsdk/Include/vpnotify.h
+++ b/sdk/dx8sdk/Include/vpnotify.h
diff --git a/dxsdk/Include/vptype.h b/sdk/dx8sdk/Include/vptype.h
index b03baae6..b03baae6 100644
--- a/dxsdk/Include/vptype.h
+++ b/sdk/dx8sdk/Include/vptype.h
diff --git a/dxsdk/Include/xprtdefs.h b/sdk/dx8sdk/Include/xprtdefs.h
index 7bdde244..7bdde244 100644
--- a/dxsdk/Include/xprtdefs.h
+++ b/sdk/dx8sdk/Include/xprtdefs.h
diff --git a/dxsdk/Lib/DxErr8.lib b/sdk/dx8sdk/Lib/DxErr8.lib
index c22ccde6..c22ccde6 100644
--- a/dxsdk/Lib/DxErr8.lib
+++ b/sdk/dx8sdk/Lib/DxErr8.lib
Binary files differ
diff --git a/dxsdk/Lib/DxErr9.lib b/sdk/dx8sdk/Lib/DxErr9.lib
index 3f039fa2..3f039fa2 100644
--- a/dxsdk/Lib/DxErr9.lib
+++ b/sdk/dx8sdk/Lib/DxErr9.lib
Binary files differ
diff --git a/dxsdk/Lib/amstrmid.lib b/sdk/dx8sdk/Lib/amstrmid.lib
index 8d921239..8d921239 100644
--- a/dxsdk/Lib/amstrmid.lib
+++ b/sdk/dx8sdk/Lib/amstrmid.lib
Binary files differ
diff --git a/dxsdk/Lib/d3d8.lib b/sdk/dx8sdk/Lib/d3d8.lib
index 828ed30d..828ed30d 100644
--- a/dxsdk/Lib/d3d8.lib
+++ b/sdk/dx8sdk/Lib/d3d8.lib
Binary files differ
diff --git a/dxsdk/Lib/d3d9.lib b/sdk/dx8sdk/Lib/d3d9.lib
index 9e08d863..9e08d863 100644
--- a/dxsdk/Lib/d3d9.lib
+++ b/sdk/dx8sdk/Lib/d3d9.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dx.lib b/sdk/dx8sdk/Lib/d3dx.lib
index e9450b1b..e9450b1b 100644
--- a/dxsdk/Lib/d3dx.lib
+++ b/sdk/dx8sdk/Lib/d3dx.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dx8.lib b/sdk/dx8sdk/Lib/d3dx8.lib
index 8305ff4c..8305ff4c 100644
--- a/dxsdk/Lib/d3dx8.lib
+++ b/sdk/dx8sdk/Lib/d3dx8.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dx8d.lib b/sdk/dx8sdk/Lib/d3dx8d.lib
index 70ac0e3a..70ac0e3a 100644
--- a/dxsdk/Lib/d3dx8d.lib
+++ b/sdk/dx8sdk/Lib/d3dx8d.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dx8dt.lib b/sdk/dx8sdk/Lib/d3dx8dt.lib
index 755e2901..755e2901 100644
--- a/dxsdk/Lib/d3dx8dt.lib
+++ b/sdk/dx8sdk/Lib/d3dx8dt.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dx9.lib b/sdk/dx8sdk/Lib/d3dx9.lib
index ffc9f0d8..ffc9f0d8 100644
--- a/dxsdk/Lib/d3dx9.lib
+++ b/sdk/dx8sdk/Lib/d3dx9.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dx9d.lib b/sdk/dx8sdk/Lib/d3dx9d.lib
index feacd895..feacd895 100644
--- a/dxsdk/Lib/d3dx9d.lib
+++ b/sdk/dx8sdk/Lib/d3dx9d.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dx9dt.lib b/sdk/dx8sdk/Lib/d3dx9dt.lib
index 8d6d32a9..8d6d32a9 100644
--- a/dxsdk/Lib/d3dx9dt.lib
+++ b/sdk/dx8sdk/Lib/d3dx9dt.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dxd.lib b/sdk/dx8sdk/Lib/d3dxd.lib
index bf370d3c..bf370d3c 100644
--- a/dxsdk/Lib/d3dxd.lib
+++ b/sdk/dx8sdk/Lib/d3dxd.lib
Binary files differ
diff --git a/dxsdk/Lib/d3dxof.lib b/sdk/dx8sdk/Lib/d3dxof.lib
index c7e51781..c7e51781 100644
--- a/dxsdk/Lib/d3dxof.lib
+++ b/sdk/dx8sdk/Lib/d3dxof.lib
Binary files differ
diff --git a/dxsdk/Lib/ddraw.lib b/sdk/dx8sdk/Lib/ddraw.lib
index d7d0583e..d7d0583e 100644
--- a/dxsdk/Lib/ddraw.lib
+++ b/sdk/dx8sdk/Lib/ddraw.lib
Binary files differ
diff --git a/dxsdk/Lib/dinput.lib b/sdk/dx8sdk/Lib/dinput.lib
index 3abb4540..3abb4540 100644
--- a/dxsdk/Lib/dinput.lib
+++ b/sdk/dx8sdk/Lib/dinput.lib
Binary files differ
diff --git a/dxsdk/Lib/dinput8.lib b/sdk/dx8sdk/Lib/dinput8.lib
index 3fad62fb..3fad62fb 100644
--- a/dxsdk/Lib/dinput8.lib
+++ b/sdk/dx8sdk/Lib/dinput8.lib
Binary files differ
diff --git a/dxsdk/Lib/dmoguids.lib b/sdk/dx8sdk/Lib/dmoguids.lib
index ad5fbfb2..ad5fbfb2 100644
--- a/dxsdk/Lib/dmoguids.lib
+++ b/sdk/dx8sdk/Lib/dmoguids.lib
Binary files differ
diff --git a/dxsdk/Lib/dplayx.lib b/sdk/dx8sdk/Lib/dplayx.lib
index d8e42998..d8e42998 100644
--- a/dxsdk/Lib/dplayx.lib
+++ b/sdk/dx8sdk/Lib/dplayx.lib
Binary files differ
diff --git a/dxsdk/Lib/dsetup.lib b/sdk/dx8sdk/Lib/dsetup.lib
index 8acfa3ea..8acfa3ea 100644
--- a/dxsdk/Lib/dsetup.lib
+++ b/sdk/dx8sdk/Lib/dsetup.lib
Binary files differ
diff --git a/dxsdk/Lib/dsound.lib b/sdk/dx8sdk/Lib/dsound.lib
index 6e9604d3..6e9604d3 100644
--- a/dxsdk/Lib/dsound.lib
+++ b/sdk/dx8sdk/Lib/dsound.lib
Binary files differ
diff --git a/dxsdk/Lib/dxguid.lib b/sdk/dx8sdk/Lib/dxguid.lib
index f251a925..f251a925 100644
--- a/dxsdk/Lib/dxguid.lib
+++ b/sdk/dx8sdk/Lib/dxguid.lib
Binary files differ
diff --git a/dxsdk/Lib/dxtrans.lib b/sdk/dx8sdk/Lib/dxtrans.lib
index 20a49952..20a49952 100644
--- a/dxsdk/Lib/dxtrans.lib
+++ b/sdk/dx8sdk/Lib/dxtrans.lib
Binary files differ
diff --git a/dxsdk/Lib/encapi.lib b/sdk/dx8sdk/Lib/encapi.lib
index 0e3d774d..0e3d774d 100644
--- a/dxsdk/Lib/encapi.lib
+++ b/sdk/dx8sdk/Lib/encapi.lib
Binary files differ
diff --git a/dxsdk/Lib/ksproxy.lib b/sdk/dx8sdk/Lib/ksproxy.lib
index 4f362460..4f362460 100644
--- a/dxsdk/Lib/ksproxy.lib
+++ b/sdk/dx8sdk/Lib/ksproxy.lib
Binary files differ
diff --git a/dxsdk/Lib/ksuser.lib b/sdk/dx8sdk/Lib/ksuser.lib
index 7aba7bd7..7aba7bd7 100644
--- a/dxsdk/Lib/ksuser.lib
+++ b/sdk/dx8sdk/Lib/ksuser.lib
Binary files differ
diff --git a/dxsdk/Lib/msdmo.lib b/sdk/dx8sdk/Lib/msdmo.lib
index 290e308f..290e308f 100644
--- a/dxsdk/Lib/msdmo.lib
+++ b/sdk/dx8sdk/Lib/msdmo.lib
Binary files differ
diff --git a/dxsdk/Lib/quartz.lib b/sdk/dx8sdk/Lib/quartz.lib
index 47fcd1d2..47fcd1d2 100644
--- a/dxsdk/Lib/quartz.lib
+++ b/sdk/dx8sdk/Lib/quartz.lib
Binary files differ
diff --git a/dxsdk/Lib/strmiids.lib b/sdk/dx8sdk/Lib/strmiids.lib
index 8d921239..8d921239 100644
--- a/dxsdk/Lib/strmiids.lib
+++ b/sdk/dx8sdk/Lib/strmiids.lib
Binary files differ
diff --git a/milessdk/include/mss.h b/sdk/milessdk/include/mss.h
index 94bfc065..94bfc065 100644
--- a/milessdk/include/mss.h
+++ b/sdk/milessdk/include/mss.h
diff --git a/milessdk/lib/mss32.lib b/sdk/milessdk/lib/mss32.lib
index 49cea2d2..49cea2d2 100644
--- a/milessdk/lib/mss32.lib
+++ b/sdk/milessdk/lib/mss32.lib
Binary files differ
diff --git a/rwsdk/include/d3d8/errcom.def b/sdk/rwsdk/include/d3d8/errcom.def
index 25f44e1e..25f44e1e 100644
--- a/rwsdk/include/d3d8/errcom.def
+++ b/sdk/rwsdk/include/d3d8/errcom.def
diff --git a/rwsdk/include/d3d8/errcore.def b/sdk/rwsdk/include/d3d8/errcore.def
index c71eed5a..c71eed5a 100644
--- a/rwsdk/include/d3d8/errcore.def
+++ b/sdk/rwsdk/include/d3d8/errcore.def
diff --git a/rwsdk/include/d3d8/rpanisot.h b/sdk/rwsdk/include/d3d8/rpanisot.h
index 323786f4..323786f4 100644
--- a/rwsdk/include/d3d8/rpanisot.h
+++ b/sdk/rwsdk/include/d3d8/rpanisot.h
diff --git a/rwsdk/include/d3d8/rpanisot.rpe b/sdk/rwsdk/include/d3d8/rpanisot.rpe
index 0464081f..0464081f 100644
--- a/rwsdk/include/d3d8/rpanisot.rpe
+++ b/sdk/rwsdk/include/d3d8/rpanisot.rpe
diff --git a/rwsdk/include/d3d8/rpcollis.h b/sdk/rwsdk/include/d3d8/rpcollis.h
index 23e67f35..23e67f35 100644
--- a/rwsdk/include/d3d8/rpcollis.h
+++ b/sdk/rwsdk/include/d3d8/rpcollis.h
diff --git a/rwsdk/include/d3d8/rpcollis.rpe b/sdk/rwsdk/include/d3d8/rpcollis.rpe
index 49ad286f..49ad286f 100644
--- a/rwsdk/include/d3d8/rpcollis.rpe
+++ b/sdk/rwsdk/include/d3d8/rpcollis.rpe
diff --git a/rwsdk/include/d3d8/rpcriter.h b/sdk/rwsdk/include/d3d8/rpcriter.h
index de55389f..de55389f 100644
--- a/rwsdk/include/d3d8/rpcriter.h
+++ b/sdk/rwsdk/include/d3d8/rpcriter.h
diff --git a/rwsdk/include/d3d8/rpdbgerr.c b/sdk/rwsdk/include/d3d8/rpdbgerr.c
index 70bc941d..70bc941d 100644
--- a/rwsdk/include/d3d8/rpdbgerr.c
+++ b/sdk/rwsdk/include/d3d8/rpdbgerr.c
diff --git a/rwsdk/include/d3d8/rpdbgerr.h b/sdk/rwsdk/include/d3d8/rpdbgerr.h
index e0500057..e0500057 100644
--- a/rwsdk/include/d3d8/rpdbgerr.h
+++ b/sdk/rwsdk/include/d3d8/rpdbgerr.h
diff --git a/rwsdk/include/d3d8/rpdmorph.h b/sdk/rwsdk/include/d3d8/rpdmorph.h
index 89c51b31..89c51b31 100644
--- a/rwsdk/include/d3d8/rpdmorph.h
+++ b/sdk/rwsdk/include/d3d8/rpdmorph.h
diff --git a/rwsdk/include/d3d8/rpdmorph.rpe b/sdk/rwsdk/include/d3d8/rpdmorph.rpe
index b35acc4e..b35acc4e 100644
--- a/rwsdk/include/d3d8/rpdmorph.rpe
+++ b/sdk/rwsdk/include/d3d8/rpdmorph.rpe
diff --git a/rwsdk/include/d3d8/rperror.h b/sdk/rwsdk/include/d3d8/rperror.h
index 2a8c5630..2a8c5630 100644
--- a/rwsdk/include/d3d8/rperror.h
+++ b/sdk/rwsdk/include/d3d8/rperror.h
diff --git a/rwsdk/include/d3d8/rphanim.h b/sdk/rwsdk/include/d3d8/rphanim.h
index 0d1bba7a..0d1bba7a 100644
--- a/rwsdk/include/d3d8/rphanim.h
+++ b/sdk/rwsdk/include/d3d8/rphanim.h
diff --git a/rwsdk/include/d3d8/rphanim.rpe b/sdk/rwsdk/include/d3d8/rphanim.rpe
index 1c05d0e9..1c05d0e9 100644
--- a/rwsdk/include/d3d8/rphanim.rpe
+++ b/sdk/rwsdk/include/d3d8/rphanim.rpe
diff --git a/rwsdk/include/d3d8/rplodatm.h b/sdk/rwsdk/include/d3d8/rplodatm.h
index 4e9c8648..4e9c8648 100644
--- a/rwsdk/include/d3d8/rplodatm.h
+++ b/sdk/rwsdk/include/d3d8/rplodatm.h
diff --git a/rwsdk/include/d3d8/rplodatm.rpe b/sdk/rwsdk/include/d3d8/rplodatm.rpe
index a5764cfc..a5764cfc 100644
--- a/rwsdk/include/d3d8/rplodatm.rpe
+++ b/sdk/rwsdk/include/d3d8/rplodatm.rpe
diff --git a/rwsdk/include/d3d8/rplogo.h b/sdk/rwsdk/include/d3d8/rplogo.h
index a46823ac..a46823ac 100644
--- a/rwsdk/include/d3d8/rplogo.h
+++ b/sdk/rwsdk/include/d3d8/rplogo.h
diff --git a/rwsdk/include/d3d8/rplogo.rpe b/sdk/rwsdk/include/d3d8/rplogo.rpe
index a7f66565..a7f66565 100644
--- a/rwsdk/include/d3d8/rplogo.rpe
+++ b/sdk/rwsdk/include/d3d8/rplogo.rpe
diff --git a/rwsdk/include/d3d8/rpltmap.h b/sdk/rwsdk/include/d3d8/rpltmap.h
index 18c91955..18c91955 100644
--- a/rwsdk/include/d3d8/rpltmap.h
+++ b/sdk/rwsdk/include/d3d8/rpltmap.h
diff --git a/rwsdk/include/d3d8/rpltmap.rpe b/sdk/rwsdk/include/d3d8/rpltmap.rpe
index 6e58b62b..6e58b62b 100644
--- a/rwsdk/include/d3d8/rpltmap.rpe
+++ b/sdk/rwsdk/include/d3d8/rpltmap.rpe
diff --git a/rwsdk/include/d3d8/rpmatfx.h b/sdk/rwsdk/include/d3d8/rpmatfx.h
index fb7ade45..fb7ade45 100644
--- a/rwsdk/include/d3d8/rpmatfx.h
+++ b/sdk/rwsdk/include/d3d8/rpmatfx.h
diff --git a/rwsdk/include/d3d8/rpmatfx.rpe b/sdk/rwsdk/include/d3d8/rpmatfx.rpe
index ba83d96a..ba83d96a 100644
--- a/rwsdk/include/d3d8/rpmatfx.rpe
+++ b/sdk/rwsdk/include/d3d8/rpmatfx.rpe
diff --git a/rwsdk/include/d3d8/rpmipkl.h b/sdk/rwsdk/include/d3d8/rpmipkl.h
index 82ad7f03..82ad7f03 100644
--- a/rwsdk/include/d3d8/rpmipkl.h
+++ b/sdk/rwsdk/include/d3d8/rpmipkl.h
diff --git a/rwsdk/include/d3d8/rpmipkl.rpe b/sdk/rwsdk/include/d3d8/rpmipkl.rpe
index 0464081f..0464081f 100644
--- a/rwsdk/include/d3d8/rpmipkl.rpe
+++ b/sdk/rwsdk/include/d3d8/rpmipkl.rpe
diff --git a/rwsdk/include/d3d8/rpmorph.h b/sdk/rwsdk/include/d3d8/rpmorph.h
index 52ea70df..52ea70df 100644
--- a/rwsdk/include/d3d8/rpmorph.h
+++ b/sdk/rwsdk/include/d3d8/rpmorph.h
diff --git a/rwsdk/include/d3d8/rpmorph.rpe b/sdk/rwsdk/include/d3d8/rpmorph.rpe
index 47834a81..47834a81 100644
--- a/rwsdk/include/d3d8/rpmorph.rpe
+++ b/sdk/rwsdk/include/d3d8/rpmorph.rpe
diff --git a/rwsdk/include/d3d8/rppatch.h b/sdk/rwsdk/include/d3d8/rppatch.h
index 0b54fb1b..0b54fb1b 100644
--- a/rwsdk/include/d3d8/rppatch.h
+++ b/sdk/rwsdk/include/d3d8/rppatch.h
diff --git a/rwsdk/include/d3d8/rppatch.rpe b/sdk/rwsdk/include/d3d8/rppatch.rpe
index 85dca470..85dca470 100644
--- a/rwsdk/include/d3d8/rppatch.rpe
+++ b/sdk/rwsdk/include/d3d8/rppatch.rpe
diff --git a/rwsdk/include/d3d8/rpprtstd.h b/sdk/rwsdk/include/d3d8/rpprtstd.h
index ba0bf1d6..ba0bf1d6 100644
--- a/rwsdk/include/d3d8/rpprtstd.h
+++ b/sdk/rwsdk/include/d3d8/rpprtstd.h
diff --git a/rwsdk/include/d3d8/rpprtstd.rpe b/sdk/rwsdk/include/d3d8/rpprtstd.rpe
index d628c6c0..d628c6c0 100644
--- a/rwsdk/include/d3d8/rpprtstd.rpe
+++ b/sdk/rwsdk/include/d3d8/rpprtstd.rpe
diff --git a/rwsdk/include/d3d8/rpptank.h b/sdk/rwsdk/include/d3d8/rpptank.h
index d4c1116d..d4c1116d 100644
--- a/rwsdk/include/d3d8/rpptank.h
+++ b/sdk/rwsdk/include/d3d8/rpptank.h
diff --git a/rwsdk/include/d3d8/rpptank.rpe b/sdk/rwsdk/include/d3d8/rpptank.rpe
index 2a9b45d3..2a9b45d3 100644
--- a/rwsdk/include/d3d8/rpptank.rpe
+++ b/sdk/rwsdk/include/d3d8/rpptank.rpe
diff --git a/rwsdk/include/d3d8/rppvs.h b/sdk/rwsdk/include/d3d8/rppvs.h
index 08738933..08738933 100644
--- a/rwsdk/include/d3d8/rppvs.h
+++ b/sdk/rwsdk/include/d3d8/rppvs.h
diff --git a/rwsdk/include/d3d8/rppvs.rpe b/sdk/rwsdk/include/d3d8/rppvs.rpe
index 62c983b0..62c983b0 100644
--- a/rwsdk/include/d3d8/rppvs.rpe
+++ b/sdk/rwsdk/include/d3d8/rppvs.rpe
diff --git a/rwsdk/include/d3d8/rprandom.h b/sdk/rwsdk/include/d3d8/rprandom.h
index aebbfed9..aebbfed9 100644
--- a/rwsdk/include/d3d8/rprandom.h
+++ b/sdk/rwsdk/include/d3d8/rprandom.h
diff --git a/rwsdk/include/d3d8/rprandom.rpe b/sdk/rwsdk/include/d3d8/rprandom.rpe
index d3fe964b..d3fe964b 100644
--- a/rwsdk/include/d3d8/rprandom.rpe
+++ b/sdk/rwsdk/include/d3d8/rprandom.rpe
diff --git a/rwsdk/include/d3d8/rpskin.h b/sdk/rwsdk/include/d3d8/rpskin.h
index 8a6ea204..8a6ea204 100644
--- a/rwsdk/include/d3d8/rpskin.h
+++ b/sdk/rwsdk/include/d3d8/rpskin.h
diff --git a/rwsdk/include/d3d8/rpskin.rpe b/sdk/rwsdk/include/d3d8/rpskin.rpe
index 02d7e162..02d7e162 100644
--- a/rwsdk/include/d3d8/rpskin.rpe
+++ b/sdk/rwsdk/include/d3d8/rpskin.rpe
diff --git a/rwsdk/include/d3d8/rpspline.h b/sdk/rwsdk/include/d3d8/rpspline.h
index df3a21d9..df3a21d9 100644
--- a/rwsdk/include/d3d8/rpspline.h
+++ b/sdk/rwsdk/include/d3d8/rpspline.h
diff --git a/rwsdk/include/d3d8/rpspline.rpe b/sdk/rwsdk/include/d3d8/rpspline.rpe
index 55748bdd..55748bdd 100644
--- a/rwsdk/include/d3d8/rpspline.rpe
+++ b/sdk/rwsdk/include/d3d8/rpspline.rpe
diff --git a/rwsdk/include/d3d8/rpusrdat.h b/sdk/rwsdk/include/d3d8/rpusrdat.h
index 92a56e31..92a56e31 100644
--- a/rwsdk/include/d3d8/rpusrdat.h
+++ b/sdk/rwsdk/include/d3d8/rpusrdat.h
diff --git a/rwsdk/include/d3d8/rpusrdat.rpe b/sdk/rwsdk/include/d3d8/rpusrdat.rpe
index f5879a00..f5879a00 100644
--- a/rwsdk/include/d3d8/rpusrdat.rpe
+++ b/sdk/rwsdk/include/d3d8/rpusrdat.rpe
diff --git a/rwsdk/include/d3d8/rpworld.h b/sdk/rwsdk/include/d3d8/rpworld.h
index 0d0489ce..0d0489ce 100644
--- a/rwsdk/include/d3d8/rpworld.h
+++ b/sdk/rwsdk/include/d3d8/rpworld.h
diff --git a/rwsdk/include/d3d8/rpworld.rpe b/sdk/rwsdk/include/d3d8/rpworld.rpe
index 080eefa5..080eefa5 100644
--- a/rwsdk/include/d3d8/rpworld.rpe
+++ b/sdk/rwsdk/include/d3d8/rpworld.rpe
diff --git a/rwsdk/include/d3d8/rt2d.h b/sdk/rwsdk/include/d3d8/rt2d.h
index 0584d3a5..0584d3a5 100644
--- a/rwsdk/include/d3d8/rt2d.h
+++ b/sdk/rwsdk/include/d3d8/rt2d.h
diff --git a/rwsdk/include/d3d8/rt2d.rpe b/sdk/rwsdk/include/d3d8/rt2d.rpe
index b18db155..b18db155 100644
--- a/rwsdk/include/d3d8/rt2d.rpe
+++ b/sdk/rwsdk/include/d3d8/rt2d.rpe
diff --git a/rwsdk/include/d3d8/rt2danim.h b/sdk/rwsdk/include/d3d8/rt2danim.h
index 996262af..996262af 100644
--- a/rwsdk/include/d3d8/rt2danim.h
+++ b/sdk/rwsdk/include/d3d8/rt2danim.h
diff --git a/rwsdk/include/d3d8/rt2danim.rpe b/sdk/rwsdk/include/d3d8/rt2danim.rpe
index 0e61ec5c..0e61ec5c 100644
--- a/rwsdk/include/d3d8/rt2danim.rpe
+++ b/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 <rtanim.rpe> /* 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
index 2531914d..2531914d 100644
--- a/rwsdk/include/d3d8/rtbary.h
+++ b/sdk/rwsdk/include/d3d8/rtbary.h
diff --git a/rwsdk/include/d3d8/rtbary.rpe b/sdk/rwsdk/include/d3d8/rtbary.rpe
index 0fec6a77..0fec6a77 100644
--- a/rwsdk/include/d3d8/rtbary.rpe
+++ b/sdk/rwsdk/include/d3d8/rtbary.rpe
diff --git a/rwsdk/include/d3d8/rtbezpat.h b/sdk/rwsdk/include/d3d8/rtbezpat.h
index f25f5ce9..f25f5ce9 100644
--- a/rwsdk/include/d3d8/rtbezpat.h
+++ b/sdk/rwsdk/include/d3d8/rtbezpat.h
diff --git a/rwsdk/include/d3d8/rtbezpat.rpe b/sdk/rwsdk/include/d3d8/rtbezpat.rpe
index 0f6dc700..0f6dc700 100644
--- a/rwsdk/include/d3d8/rtbezpat.rpe
+++ b/sdk/rwsdk/include/d3d8/rtbezpat.rpe
diff --git a/rwsdk/include/d3d8/rtbmp.h b/sdk/rwsdk/include/d3d8/rtbmp.h
index c3bb5c95..c3bb5c95 100644
--- a/rwsdk/include/d3d8/rtbmp.h
+++ b/sdk/rwsdk/include/d3d8/rtbmp.h
diff --git a/rwsdk/include/d3d8/rtbmp.rpe b/sdk/rwsdk/include/d3d8/rtbmp.rpe
index 37c546f9..37c546f9 100644
--- a/rwsdk/include/d3d8/rtbmp.rpe
+++ b/sdk/rwsdk/include/d3d8/rtbmp.rpe
diff --git a/rwsdk/include/d3d8/rtcharse.h b/sdk/rwsdk/include/d3d8/rtcharse.h
index 6c7a3902..6c7a3902 100644
--- a/rwsdk/include/d3d8/rtcharse.h
+++ b/sdk/rwsdk/include/d3d8/rtcharse.h
diff --git a/rwsdk/include/d3d8/rtcharse.rpe b/sdk/rwsdk/include/d3d8/rtcharse.rpe
index 30c5ff4d..30c5ff4d 100644
--- a/rwsdk/include/d3d8/rtcharse.rpe
+++ b/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
index 2cc6383b..2cc6383b 100644
--- a/rwsdk/include/d3d8/rtimport.h
+++ b/sdk/rwsdk/include/d3d8/rtimport.h
diff --git a/rwsdk/include/d3d8/rtimport.rpe b/sdk/rwsdk/include/d3d8/rtimport.rpe
index ff8d3d5c..ff8d3d5c 100644
--- a/rwsdk/include/d3d8/rtimport.rpe
+++ b/sdk/rwsdk/include/d3d8/rtimport.rpe
diff --git a/rwsdk/include/d3d8/rtintsec.h b/sdk/rwsdk/include/d3d8/rtintsec.h
index a2e4c3d6..a2e4c3d6 100644
--- a/rwsdk/include/d3d8/rtintsec.h
+++ b/sdk/rwsdk/include/d3d8/rtintsec.h
diff --git a/rwsdk/include/d3d8/rtintsec.rpe b/sdk/rwsdk/include/d3d8/rtintsec.rpe
index 3c7f7bf3..3c7f7bf3 100644
--- a/rwsdk/include/d3d8/rtintsec.rpe
+++ b/sdk/rwsdk/include/d3d8/rtintsec.rpe
diff --git a/rwsdk/include/d3d8/rtltmap.h b/sdk/rwsdk/include/d3d8/rtltmap.h
index 8ee15a43..8ee15a43 100644
--- a/rwsdk/include/d3d8/rtltmap.h
+++ b/sdk/rwsdk/include/d3d8/rtltmap.h
diff --git a/rwsdk/include/d3d8/rtltmap.rpe b/sdk/rwsdk/include/d3d8/rtltmap.rpe
index fb171c51..fb171c51 100644
--- a/rwsdk/include/d3d8/rtltmap.rpe
+++ b/sdk/rwsdk/include/d3d8/rtltmap.rpe
diff --git a/rwsdk/include/d3d8/rtmipk.h b/sdk/rwsdk/include/d3d8/rtmipk.h
index 6c777b41..6c777b41 100644
--- a/rwsdk/include/d3d8/rtmipk.h
+++ b/sdk/rwsdk/include/d3d8/rtmipk.h
diff --git a/rwsdk/include/d3d8/rtmipk.rpe b/sdk/rwsdk/include/d3d8/rtmipk.rpe
index 04500e1d..04500e1d 100644
--- a/rwsdk/include/d3d8/rtmipk.rpe
+++ b/sdk/rwsdk/include/d3d8/rtmipk.rpe
diff --git a/rwsdk/include/d3d8/rtpick.h b/sdk/rwsdk/include/d3d8/rtpick.h
index 62f564a3..62f564a3 100644
--- a/rwsdk/include/d3d8/rtpick.h
+++ b/sdk/rwsdk/include/d3d8/rtpick.h
diff --git a/rwsdk/include/d3d8/rtpick.rpe b/sdk/rwsdk/include/d3d8/rtpick.rpe
index 779e2f9a..779e2f9a 100644
--- a/rwsdk/include/d3d8/rtpick.rpe
+++ b/sdk/rwsdk/include/d3d8/rtpick.rpe
diff --git a/rwsdk/include/d3d8/rtpitexd.h b/sdk/rwsdk/include/d3d8/rtpitexd.h
index 602c608a..602c608a 100644
--- a/rwsdk/include/d3d8/rtpitexd.h
+++ b/sdk/rwsdk/include/d3d8/rtpitexd.h
diff --git a/rwsdk/include/d3d8/rtpitexd.rpe b/sdk/rwsdk/include/d3d8/rtpitexd.rpe
index 290ac864..290ac864 100644
--- a/rwsdk/include/d3d8/rtpitexd.rpe
+++ b/sdk/rwsdk/include/d3d8/rtpitexd.rpe
diff --git a/rwsdk/include/d3d8/rtpng.h b/sdk/rwsdk/include/d3d8/rtpng.h
index 4ba8cf0f..4ba8cf0f 100644
--- a/rwsdk/include/d3d8/rtpng.h
+++ b/sdk/rwsdk/include/d3d8/rtpng.h
diff --git a/rwsdk/include/d3d8/rtpng.rpe b/sdk/rwsdk/include/d3d8/rtpng.rpe
index e3f6f0d7..e3f6f0d7 100644
--- a/rwsdk/include/d3d8/rtpng.rpe
+++ b/sdk/rwsdk/include/d3d8/rtpng.rpe
diff --git a/rwsdk/include/d3d8/rtquat.h b/sdk/rwsdk/include/d3d8/rtquat.h
index a0a6e89d..a0a6e89d 100644
--- a/rwsdk/include/d3d8/rtquat.h
+++ b/sdk/rwsdk/include/d3d8/rtquat.h
diff --git a/rwsdk/include/d3d8/rtquat.rpe b/sdk/rwsdk/include/d3d8/rtquat.rpe
index b239aba0..b239aba0 100644
--- a/rwsdk/include/d3d8/rtquat.rpe
+++ b/sdk/rwsdk/include/d3d8/rtquat.rpe
diff --git a/rwsdk/include/d3d8/rtras.h b/sdk/rwsdk/include/d3d8/rtras.h
index 957e21e6..957e21e6 100644
--- a/rwsdk/include/d3d8/rtras.h
+++ b/sdk/rwsdk/include/d3d8/rtras.h
diff --git a/rwsdk/include/d3d8/rtras.rpe b/sdk/rwsdk/include/d3d8/rtras.rpe
index a242ef49..a242ef49 100644
--- a/rwsdk/include/d3d8/rtras.rpe
+++ b/sdk/rwsdk/include/d3d8/rtras.rpe
diff --git a/rwsdk/include/d3d8/rtray.h b/sdk/rwsdk/include/d3d8/rtray.h
index b2f3d4bc..b2f3d4bc 100644
--- a/rwsdk/include/d3d8/rtray.h
+++ b/sdk/rwsdk/include/d3d8/rtray.h
diff --git a/rwsdk/include/d3d8/rtray.rpe b/sdk/rwsdk/include/d3d8/rtray.rpe
index c1ff4458..c1ff4458 100644
--- a/rwsdk/include/d3d8/rtray.rpe
+++ b/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 <rwcore.h>
+#include <rpworld.h>
+
+/****************************************************************************
+ 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
index 4262b894..4262b894 100644
--- a/rwsdk/include/d3d8/rtslerp.h
+++ b/sdk/rwsdk/include/d3d8/rtslerp.h
diff --git a/rwsdk/include/d3d8/rtslerp.rpe b/sdk/rwsdk/include/d3d8/rtslerp.rpe
index 64bd7571..64bd7571 100644
--- a/rwsdk/include/d3d8/rtslerp.rpe
+++ b/sdk/rwsdk/include/d3d8/rtslerp.rpe
diff --git a/rwsdk/include/d3d8/rtsplpvs.h b/sdk/rwsdk/include/d3d8/rtsplpvs.h
index 419717a1..419717a1 100644
--- a/rwsdk/include/d3d8/rtsplpvs.h
+++ b/sdk/rwsdk/include/d3d8/rtsplpvs.h
diff --git a/rwsdk/include/d3d8/rtsplpvs.rpe b/sdk/rwsdk/include/d3d8/rtsplpvs.rpe
index 9736cbbc..9736cbbc 100644
--- a/rwsdk/include/d3d8/rtsplpvs.rpe
+++ b/sdk/rwsdk/include/d3d8/rtsplpvs.rpe
diff --git a/rwsdk/include/d3d8/rttiff.h b/sdk/rwsdk/include/d3d8/rttiff.h
index b5d0ec00..b5d0ec00 100644
--- a/rwsdk/include/d3d8/rttiff.h
+++ b/sdk/rwsdk/include/d3d8/rttiff.h
diff --git a/rwsdk/include/d3d8/rttiff.rpe b/sdk/rwsdk/include/d3d8/rttiff.rpe
index 260b2329..260b2329 100644
--- a/rwsdk/include/d3d8/rttiff.rpe
+++ b/sdk/rwsdk/include/d3d8/rttiff.rpe
diff --git a/rwsdk/include/d3d8/rttilerd.h b/sdk/rwsdk/include/d3d8/rttilerd.h
index 7cb8f887..7cb8f887 100644
--- a/rwsdk/include/d3d8/rttilerd.h
+++ b/sdk/rwsdk/include/d3d8/rttilerd.h
diff --git a/rwsdk/include/d3d8/rttilerd.rpe b/sdk/rwsdk/include/d3d8/rttilerd.rpe
index 15c929f9..15c929f9 100644
--- a/rwsdk/include/d3d8/rttilerd.rpe
+++ b/sdk/rwsdk/include/d3d8/rttilerd.rpe
diff --git a/rwsdk/include/d3d8/rttoc.h b/sdk/rwsdk/include/d3d8/rttoc.h
index 88926062..88926062 100644
--- a/rwsdk/include/d3d8/rttoc.h
+++ b/sdk/rwsdk/include/d3d8/rttoc.h
diff --git a/rwsdk/include/d3d8/rttoc.rpe b/sdk/rwsdk/include/d3d8/rttoc.rpe
index 706372f2..706372f2 100644
--- a/rwsdk/include/d3d8/rttoc.rpe
+++ b/sdk/rwsdk/include/d3d8/rttoc.rpe
diff --git a/rwsdk/include/d3d8/rtvcat.h b/sdk/rwsdk/include/d3d8/rtvcat.h
index 474095e1..474095e1 100644
--- a/rwsdk/include/d3d8/rtvcat.h
+++ b/sdk/rwsdk/include/d3d8/rtvcat.h
diff --git a/rwsdk/include/d3d8/rtvcat.rpe b/sdk/rwsdk/include/d3d8/rtvcat.rpe
index ef5e286e..ef5e286e 100644
--- a/rwsdk/include/d3d8/rtvcat.rpe
+++ b/sdk/rwsdk/include/d3d8/rtvcat.rpe
diff --git a/rwsdk/include/d3d8/rtworld.h b/sdk/rwsdk/include/d3d8/rtworld.h
index 727d8122..727d8122 100644
--- a/rwsdk/include/d3d8/rtworld.h
+++ b/sdk/rwsdk/include/d3d8/rtworld.h
diff --git a/rwsdk/include/d3d8/rtworld.rpe b/sdk/rwsdk/include/d3d8/rtworld.rpe
index 83449720..83449720 100644
--- a/rwsdk/include/d3d8/rtworld.rpe
+++ b/sdk/rwsdk/include/d3d8/rtworld.rpe
diff --git a/rwsdk/include/d3d8/rwcore.h b/sdk/rwsdk/include/d3d8/rwcore.h
index 583de35f..583de35f 100644
--- a/rwsdk/include/d3d8/rwcore.h
+++ b/sdk/rwsdk/include/d3d8/rwcore.h
diff --git a/rwsdk/include/d3d8/rwplcore.h b/sdk/rwsdk/include/d3d8/rwplcore.h
index 3740ae60..3740ae60 100644
--- a/rwsdk/include/d3d8/rwplcore.h
+++ b/sdk/rwsdk/include/d3d8/rwplcore.h
diff --git a/src/animation/AnimManager.cpp b/src/animation/AnimManager.cpp
index f682964f..a85149e6 100644
--- a/src/animation/AnimManager.cpp
+++ b/src/animation/AnimManager.cpp
@@ -12,7 +12,7 @@
#include "AnimManager.h"
#include "Streaming.h"
-//--MIAMI: code done (except for pointless TODO)
+//--MIAMI: file done
CAnimBlock CAnimManager::ms_aAnimBlocks[NUMANIMBLOCKS];
CAnimBlendHierarchy CAnimManager::ms_aAnimations[NUMANIMATIONS];
@@ -1276,7 +1276,7 @@ CAnimManager::LoadAnimFile(const char *filename)
RwStreamClose(stream, nil);
}
-//--MIAMI: done (except maybe implement some unimplemented compression?)
+//--MIAMI: done
void
CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*somename)[32])
{
@@ -1323,7 +1323,14 @@ CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*somename)[32]
RwStreamRead(stream, buf, name.size);
hier->SetName(buf);
- // TODO(MIAMI)? some unused crap here
+ // Unimplemented uncompressed anim thing
+ if (somename) {
+ for (int i = 0; somename[i][0]; i++) {
+ if (!CGeneral::faststricmp(somename[i], hier->name))
+ debug("Loading %s uncompressed\n", hier->name);
+ }
+ }
+
hier->compressed = false;
hier->compressed2 = false;
@@ -1357,6 +1364,9 @@ CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*somename)[32]
if(strncmp(info.ident, "KR00", 4) == 0){
seq->SetNumFrames(numFrames, false, false);
KeyFrame *kf = seq->GetKeyFrame(0);
+ if (strstr(seq->name, "L Toe"))
+ debug("anim %s has toe keyframes\n", hier->name); // , seq->name);
+
for(l = 0; l < numFrames; l++, kf++){
RwStreamRead(stream, buf, 0x14);
kf->rotation.x = -fbuf[0];
@@ -1368,6 +1378,9 @@ CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*somename)[32]
}else if(strncmp(info.ident, "KRT0", 4) == 0){
seq->SetNumFrames(numFrames, true, false);
KeyFrameTrans *kf = (KeyFrameTrans*)seq->GetKeyFrame(0);
+ if (strstr(seq->name, "L Toe"))
+ debug("anim %s has toe keyframes\n", hier->name); // , seq->name);
+
for(l = 0; l < numFrames; l++, kf++){
RwStreamRead(stream, buf, 0x20);
kf->rotation.x = -fbuf[0];
@@ -1382,6 +1395,9 @@ CAnimManager::LoadAnimFile(RwStream *stream, bool compress, char (*somename)[32]
}else if(strncmp(info.ident, "KRTS", 4) == 0){
seq->SetNumFrames(numFrames, true, false);
KeyFrameTrans *kf = (KeyFrameTrans*)seq->GetKeyFrame(0);
+ if (strstr(seq->name, "L Toe"))
+ debug("anim %s has toe keyframes\n", hier->name); // , seq->name);
+
for(l = 0; l < numFrames; l++, kf++){
RwStreamRead(stream, buf, 0x2C);
kf->rotation.x = -fbuf[0];
diff --git a/src/animation/CutsceneMgr.cpp b/src/animation/CutsceneMgr.cpp
index b4f226e8..e720fccb 100644
--- a/src/animation/CutsceneMgr.cpp
+++ b/src/animation/CutsceneMgr.cpp
@@ -119,7 +119,10 @@ int32 CCutsceneMgr::ms_numCutsceneObjs;
bool CCutsceneMgr::ms_loaded;
bool CCutsceneMgr::ms_animLoaded;
bool CCutsceneMgr::ms_useLodMultiplier;
+bool CCutsceneMgr::ms_camLoaded;
char CCutsceneMgr::ms_cutsceneName[CUTSCENENAMESIZE];
+char CCutsceneMgr::ms_uncompressedAnims[8][32];
+uint32 CCutsceneMgr::ms_numUncompressedAnims;
CAnimBlendAssocGroup CCutsceneMgr::ms_cutsceneAssociations;
CVector CCutsceneMgr::ms_cutsceneOffset;
float CCutsceneMgr::ms_cutsceneTimer;
@@ -154,6 +157,9 @@ CCutsceneMgr::Initialise(void)
ms_pCutsceneDir = new CDirectory(CUTSCENEDIRSIZE);
ms_pCutsceneDir->ReadDirFile("ANIM\\CUTS.DIR");
+
+ ms_numUncompressedAnims = 0;
+ ms_uncompressedAnims[0][0] = '\0';
}
void
@@ -194,7 +200,7 @@ CCutsceneMgr::LoadCutsceneData(const char *szCutsceneName)
CStreaming::MakeSpaceFor(size << 11);
CStreaming::ImGonnaUseStreamingMemory();
RwStreamSkip(stream, offset << 11);
- CAnimManager::LoadAnimFile(stream, false);
+ CAnimManager::LoadAnimFile(stream, true, ms_uncompressedAnims);
ms_cutsceneAssociations.CreateAssociations(szCutsceneName);
CStreaming::IHaveUsedStreamingMemory();
ms_animLoaded = true;
@@ -207,13 +213,18 @@ CCutsceneMgr::LoadCutsceneData(const char *szCutsceneName)
file = CFileMgr::OpenFile("ANIM\\CUTS.IMG", "rb");
sprintf(gString, "%s.DAT", szCutsceneName);
if (ms_pCutsceneDir->FindItem(gString, offset, size)) {
+ CStreaming::ImGonnaUseStreamingMemory();
CFileMgr::Seek(file, offset << 11, SEEK_SET);
TheCamera.LoadPathSplines(file);
+ CStreaming::IHaveUsedStreamingMemory();
+ ms_camLoaded = true;
+ } else {
+ ms_camLoaded = false;
}
CFileMgr::CloseFile(file);
- if (CGeneral::faststricmp(ms_cutsceneName, "end")) {
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale")) {
DMAudio.ChangeMusicMode(MUSICMODE_CUTSCENE);
int trackId = FindCutsceneAudioTrackId(szCutsceneName);
if (trackId != -1) {
@@ -241,8 +252,10 @@ void
CCutsceneMgr::FinishCutscene()
{
ms_wasCutsceneSkipped = true;
- CCutsceneMgr::ms_cutsceneTimer = TheCamera.GetCutSceneFinishTime() * 0.001f;
- TheCamera.FinishCutscene();
+ if (ms_camLoaded) {
+ CCutsceneMgr::ms_cutsceneTimer = TheCamera.GetCutSceneFinishTime() * 0.001f;
+ TheCamera.FinishCutscene();
+ }
FindPlayerPed()->bIsVisible = true;
CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(false);
@@ -251,9 +264,11 @@ CCutsceneMgr::FinishCutscene()
void
CCutsceneMgr::SetupCutsceneToStart(void)
{
- TheCamera.SetCamCutSceneOffSet(ms_cutsceneOffset);
- TheCamera.TakeControlWithSpline(JUMP_CUT);
- TheCamera.SetWideScreenOn();
+ if (ms_camLoaded) {
+ TheCamera.SetCamCutSceneOffSet(ms_cutsceneOffset);
+ TheCamera.TakeControlWithSpline(JUMP_CUT);
+ TheCamera.SetWideScreenOn();
+ }
ms_cutsceneOffset.z++;
@@ -363,8 +378,14 @@ CCutsceneMgr::DeleteCutsceneData(void)
CAnimManager::RemoveLastAnimFile();
ms_animLoaded = false;
- TheCamera.RestoreWithJumpCut();
- TheCamera.SetWideScreenOff();
+ ms_numUncompressedAnims = 0;
+ ms_uncompressedAnims[0][0] = '\0';
+
+ if (ms_camLoaded) {
+ TheCamera.RestoreWithJumpCut();
+ TheCamera.SetWideScreenOff();
+ TheCamera.DeleteCutSceneCamDataMemory();
+ }
ms_running = false;
ms_loaded = false;
@@ -372,12 +393,14 @@ CCutsceneMgr::DeleteCutsceneData(void)
CPad::GetPad(0)->SetEnablePlayerControls(PLAYERCONTROL_CUTSCENE);
CWorld::Players[CWorld::PlayerInFocus].MakePlayerSafe(false);
- if (CGeneral::faststricmp(ms_cutsceneName, "end")) {
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale")) {
DMAudio.StopCutSceneMusic();
- if (CGeneral::faststricmp(ms_cutsceneName, "bet"))
- DMAudio.ChangeMusicMode(MUSICMODE_GAME);
+ DMAudio.ChangeMusicMode(MUSICMODE_GAME);
}
- CGame::DrasticTidyUpMemory(TheCamera.GetScreenFadeStatus() == 2);
+
+ if(ms_camLoaded)
+ CGame::DrasticTidyUpMemory(TheCamera.GetScreenFadeStatus() == 2);
+
CTimer::Resume();
}
@@ -395,7 +418,7 @@ CCutsceneMgr::Update(void)
switch (ms_cutsceneLoadStatus) {
case CUTSCENE_LOADING_AUDIO:
SetupCutsceneToStart();
- if (CGeneral::faststricmp(ms_cutsceneName, "end"))
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale"))
DMAudio.PlayPreloadedCutSceneMusic();
ms_cutsceneLoadStatus++;
break;
@@ -413,15 +436,27 @@ CCutsceneMgr::Update(void)
if (!ms_running) return;
ms_cutsceneTimer += CTimer::GetTimeStepNonClippedInSeconds();
- if (CGeneral::faststricmp(ms_cutsceneName, "end") && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FLYBY && ms_cutsceneLoadStatus == CUTSCENE_LOADING_0) {
- if (CPad::GetPad(0)->GetCrossJustDown()
- || (CGame::playingIntro && CPad::GetPad(0)->GetStartJustDown())
- || CPad::GetPad(0)->GetLeftMouseJustDown()
- || CPad::GetPad(0)->GetEnterJustDown()
- || CPad::GetPad(0)->GetCharJustDown(' '))
- FinishCutscene();
- }
+
+ if (ms_camLoaded)
+ if (CGeneral::faststricmp(ms_cutsceneName, "finale") && TheCamera.Cams[TheCamera.ActiveCam].Mode == CCam::MODE_FLYBY && ms_cutsceneLoadStatus == CUTSCENE_LOADING_0) {
+ if (CPad::GetPad(0)->GetCrossJustDown()
+ || (CGame::playingIntro && CPad::GetPad(0)->GetStartJustDown())
+ || CPad::GetPad(0)->GetLeftMouseJustDown()
+ || CPad::GetPad(0)->GetEnterJustDown()
+ || CPad::GetPad(0)->GetCharJustDown(' '))
+ FinishCutscene();
+ }
}
-bool CCutsceneMgr::HasCutsceneFinished(void) { return TheCamera.GetPositionAlongSpline() == 1.0f; }
+bool CCutsceneMgr::HasCutsceneFinished(void) { return !ms_camLoaded || TheCamera.GetPositionAlongSpline() == 1.0f; }
+void
+CCutsceneMgr::LoadAnimationUncompressed(char const* name)
+{
+ strcpy(ms_uncompressedAnims[ms_numUncompressedAnims], name);
+
+ // Because that's how CAnimManager knows the end of array
+ ++ms_numUncompressedAnims;
+ assert(ms_numUncompressedAnims < ARRAY_SIZE(ms_uncompressedAnims));
+ ms_uncompressedAnims[ms_numUncompressedAnims][0] = '\0';
+} \ No newline at end of file
diff --git a/src/animation/CutsceneMgr.h b/src/animation/CutsceneMgr.h
index 97093fb1..c3f86273 100644
--- a/src/animation/CutsceneMgr.h
+++ b/src/animation/CutsceneMgr.h
@@ -17,7 +17,10 @@ class CCutsceneMgr
static bool ms_animLoaded;
static bool ms_useLodMultiplier;
+ static bool ms_camLoaded;
static char ms_cutsceneName[CUTSCENENAMESIZE];
+ static char ms_uncompressedAnims[8][32];
+ static uint32 ms_numUncompressedAnims;
static CAnimBlendAssocGroup ms_cutsceneAssociations;
static CVector ms_cutsceneOffset;
static float ms_cutsceneTimer;
@@ -49,5 +52,6 @@ public:
static CCutsceneHead *AddCutsceneHead(CObject *pObject, int modelId);
static CCutsceneObject *CreateCutsceneObject(int modelId);
static void DeleteCutsceneData(void);
+ static void LoadAnimationUncompressed(char const*);
static void Update(void);
};
diff --git a/eax/eax-util.cpp b/src/audio/eax/eax-util.cpp
index 42eef738..42eef738 100644
--- a/eax/eax-util.cpp
+++ b/src/audio/eax/eax-util.cpp
diff --git a/eax/eax-util.h b/src/audio/eax/eax-util.h
index 441f0115..441f0115 100644
--- a/eax/eax-util.h
+++ b/src/audio/eax/eax-util.h
diff --git a/eax/eax.h b/src/audio/eax/eax.h
index b2210936..b2210936 100644
--- a/eax/eax.h
+++ b/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 <opusfile.h>
+#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 <sndfile.h>
#include <mpg123.h>
+#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 <opusfile.h>
+#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;
}
diff --git a/src/control/Pickups.cpp b/src/control/Pickups.cpp
index 6576be7f..7a9808f6 100644
--- a/src/control/Pickups.cpp
+++ b/src/control/Pickups.cpp
@@ -30,6 +30,8 @@
#include "Timer.h"
#include "WaterLevel.h"
#include "World.h"
+#include "Hud.h"
+#include "Messages.h"
CPickup CPickups::aPickUps[NUMPICKUPS];
int16 CPickups::NumMessages;
@@ -37,6 +39,7 @@ int32 CPickups::aPickUpsCollected[NUMCOLLECTEDPICKUPS];
int16 CPickups::CollectedPickUpIndex;
int32 CPickups::PlayerOnWeaponPickup;
+int32 CPickups::CollectPickupBuffer;
// unused
bool CPickups::bPickUpcamActivated;
@@ -72,6 +75,32 @@ uint8 aWeaponBlues[] = { 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
0, 128, 255, 0, 0 };
void
+ModifyStringLabelForControlSetting(char *str)
+{
+ int len = (int)strlen(str);
+ if (len <= 2)
+ return;
+
+ if (str[len - 2] != '_')
+ return;
+
+ switch (CPad::GetPad(0)->Mode) {
+ case 0:
+ case 1:
+ str[len - 1] = 'L';
+ break;
+ case 2:
+ str[len - 1] = 'T';
+ break;
+ case 3:
+ str[len - 1] = 'C';
+ break;
+ default:
+ return;
+ }
+}
+
+void
CPickup::RemoveKeepType()
{
CWorld::Remove(m_pObject);
@@ -163,6 +192,31 @@ CPickup::Update(CPlayerPed *player, CVehicle *vehicle, int playerId)
{
float waterLevel;
+ if (m_pObject) {
+ m_pObject->SetPosition(m_vecPos);
+ // TODO(Miami): Extra object
+ }
+ if (m_eType == PICKUP_ASSET_REVENUE) {
+ uint32 oldTimer = m_nTimer;
+ m_nTimer = CTimer::GetTimeInMilliseconds();
+ float calculatedRevenue;
+ if ((FindPlayerCoors() - m_vecPos).Magnitude() > 10.0) {
+ uint32 timePassed = CTimer::GetTimeInMilliseconds() - oldTimer;
+ calculatedRevenue = m_nRevenue + (timePassed * m_nMoneySpeed) * sq(1.f / 1200.f);
+ } else {
+ calculatedRevenue = m_nRevenue;
+ }
+ m_nRevenue = Min(calculatedRevenue, m_nQuantity);
+ // TODO(Miami): For pickup glow effect?
+ /*
+ if (calculatedRevenue < 10.0) {
+ m_pObject->m_nCostValue = 0;
+ } else {
+ m_pObject->m_nCostValue = calculatedRevenue;
+ }
+ */
+ }
+
if (m_bRemoved) {
if (CTimer::GetTimeInMilliseconds() > m_nTimer) {
// respawn pickup if we're far enough
@@ -290,6 +344,32 @@ CPickup::Update(CPlayerPed *player, CVehicle *vehicle, int playerId)
Remove();
DMAudio.PlayFrontEndSound(SOUND_PICKUP_MONEY, 0);
return true;
+ case PICKUP_ASSET_REVENUE:
+ CWorld::Players[CWorld::PlayerInFocus].m_nMoney += m_nRevenue;
+ m_nRevenue = 0;
+ DMAudio.PlayFrontEndSound(SOUND_PICKUP_MONEY, 0);
+ return false;
+ // TODO(Miami): Control flow
+ case PICKUP_PROPERTY_FORSALE:
+ ModifyStringLabelForControlSetting(m_sTextKey);
+ CMessages::InsertNumberInString(TheText.Get(m_sTextKey), m_nQuantity,
+ 0, 0, 0, 0, 0, gUString);
+ if (!CHud::IsHelpMessageBeingDisplayed())
+ CHud::SetHelpMessage(gUString, false); // 0, 0, 0);
+ if (CPickups::CollectPickupBuffer == 0)
+ return false;
+ if (CTheScripts::IsPlayerOnAMission()) {
+ CHud::SetHelpMessage(TheText.Get("PROP_2"), true); // , false);
+ } else {
+ if (CWorld::Players[CWorld::PlayerInFocus].m_nMoney >= m_nQuantity) {
+ CWorld::Players[CWorld::PlayerInFocus].m_nMoney -= m_nQuantity;
+ CHud::SetHelpMessage(nil, true); //, false);
+ Remove();
+ return true;
+ }
+ CHud::SetHelpMessage(TheText.Get("PROP_1"), true); //, false);
+ }
+ return false;
default:
break;
}
@@ -528,12 +608,12 @@ CPickups::RemovePickUp(int32 pickupIndex)
}
int32
-CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity, uint32 rate, bool highPriority, wchar* pText)
+CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity, uint32 rate, bool highPriority, char* pText)
{
bool bFreeFound = false;
int32 slot = 0;
- if (type == PICKUP_FLOATINGPACKAGE || type == PICKUP_NAUTICAL_MINE_INACTIVE) {
+ if (type == PICKUP_FLOATINGPACKAGE || type == PICKUP_NAUTICAL_MINE_INACTIVE || highPriority) {
for (slot = NUMPICKUPS-1; slot >= 0; slot--) {
if (aPickUps[slot].m_eType == PICKUP_NONE) {
bFreeFound = true;
@@ -556,7 +636,7 @@ CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quan
if (slot >= NUMGENERALPICKUPS) {
for (slot = 0; slot < NUMGENERALPICKUPS; slot++) {
- if (aPickUps[slot].m_eType == PICKUP_ONCE_TIMEOUT) break;
+ if (aPickUps[slot].m_eType == PICKUP_ONCE_TIMEOUT || aPickUps[slot].m_eType == PICKUP_ONCE_TIMEOUT_SLOW) break;
}
if (slot >= NUMGENERALPICKUPS) return -1;
@@ -568,8 +648,13 @@ CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quan
aPickUps[slot].m_eType = (ePickupType)type;
aPickUps[slot].m_bRemoved = false;
aPickUps[slot].m_nQuantity = quantity;
+ aPickUps[slot].m_nMoneySpeed = rate;
+ aPickUps[slot].m_nRevenue = 0;
+ aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds();
if (type == PICKUP_ONCE_TIMEOUT)
aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 20000;
+ else if (type == PICKUP_ONCE_TIMEOUT_SLOW)
+ aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 120000;
else if (type == PICKUP_MONEY)
aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 30000;
else if (type == PICKUP_MINE_INACTIVE || type == PICKUP_MINE_ARMED) {
@@ -580,6 +665,11 @@ CPickups::GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quan
aPickUps[slot].m_nTimer = CTimer::GetTimeInMilliseconds() + 1500;
}
aPickUps[slot].m_eModelIndex = modelIndex;
+ if (pText)
+ strncpy(aPickUps[slot].m_sTextKey, pText, 8);
+ else
+ aPickUps[slot].m_sTextKey[0] = '\0';
+
aPickUps[slot].m_vecPos = pos;
aPickUps[slot].m_pObject = aPickUps[slot].GiveUsAPickUpObject(-1);
if (aPickUps[slot].m_pObject)
@@ -664,6 +754,16 @@ CPickups::Update()
}
}
#endif
+ if (CPad::GetPad(0)->CollectPickupJustDown()) {
+ CollectPickupBuffer = 6;
+ } else {
+ CollectPickupBuffer = Max(0, CollectPickupBuffer - 1);
+ }
+
+ if (PlayerOnWeaponPickup) {
+ PlayerOnWeaponPickup = Max(0, PlayerOnWeaponPickup - 1);
+ }
+
#define PICKUPS_FRAME_SPAN (6)
#ifdef FIX_BUGS
for (uint32 i = NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN) / PICKUPS_FRAME_SPAN; i < NUMGENERALPICKUPS * (CTimer::GetFrameCounter() % PICKUPS_FRAME_SPAN + 1) / PICKUPS_FRAME_SPAN; i++) {
@@ -720,15 +820,9 @@ CPickups::DoPickUpEffects(CEntity *entity)
const CVector& pos = entity->GetPosition();
if (doOuterGlow) {
float colorModifier = ((CGeneral::GetRandomNumber() & 0x1F) * 0.015f + 1.0f) * modifiedSin * 0.15f;
- CShadows::StoreStaticShadow(
- (uintptr)entity,
- SHADOWTYPE_ADDITIVE,
- gpShadowExplosionTex,
- &pos,
- 2.0f, 0.0f, 0.0f, -2.0f,
- 255, // this is 0 on PC which results in no shadow
- aWeaponReds[colorId] * colorModifier, aWeaponGreens[colorId] * colorModifier, aWeaponBlues[colorId] * colorModifier,
- 4.0f, 1.0f, 40.0f, false, 0.0f);
+ CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, 2.0f, 0.0f, 0.0f, -2.0f, 0,
+ aWeaponReds[colorId] * colorModifier, aWeaponGreens[colorId] * colorModifier, aWeaponBlues[colorId] * colorModifier, 4.0f,
+ 1.0f, 40.0f, false, 0.0f);
float radius = (CGeneral::GetRandomNumber() & 0xF) * 0.1f + 3.0f;
CPointLights::AddLight(CPointLights::LIGHT_POINT, pos, CVector(0.0f, 0.0f, 0.0f), radius, aWeaponReds[colorId] * modifiedSin / 256.0f, aWeaponGreens[colorId] * modifiedSin / 256.0f, aWeaponBlues[colorId] * modifiedSin / 256.0f, CPointLights::FOG_NONE, true);
@@ -792,11 +886,8 @@ CPickups::DoMineEffects(CEntity *entity)
float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x1FF) * DEGTORAD(360.0f / 0x200));
int32 red = (MAXDIST - dist) * (0.5f * s + 0.5f) / MAXDIST * 64.0f;
- CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos,
- 2.0f, 0.0f, 0.0f, -2.0f,
- 255, // this is 0 on PC which results in no shadow
- red, 0, 0,
- 4.0f, 1.0f, 40.0f, false, 0.0f);
+ CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, 2.0f, 0.0f, 0.0f, -2.0f, 0, red, 0, 0, 4.0f, 1.0f, 40.0f,
+ false, 0.0f);
CCoronas::RegisterCorona((uintptr)entity, red, 0, 0, 255, pos, 0.6f, 60.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f);
}
@@ -814,11 +905,8 @@ CPickups::DoMoneyEffects(CEntity *entity)
float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x3FF) * DEGTORAD(360.0f / 0x400));
int32 green = (MAXDIST - dist) * (0.2f * s + 0.3f) / MAXDIST * 64.0f;
- CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos,
- 2.0f, 0.0f, 0.0f, -2.0f,
- 255, // this is 0 on PC which results in no shadow
- 0, green, 0,
- 4.0f, 1.0f, 40.0f, false, 0.0f);
+ CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, 2.0f, 0.0f, 0.0f, -2.0f, 0, 0, green, 0, 4.0f, 1.0f,
+ 40.0f, false, 0.0f);
CCoronas::RegisterCorona((uintptr)entity, 0, green, 0, 255, pos, 0.4f, 40.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f);
}
@@ -836,11 +924,8 @@ CPickups::DoCollectableEffects(CEntity *entity)
float s = Sin((float)((CTimer::GetTimeInMilliseconds() + (uintptr)entity) & 0x7FF) * DEGTORAD(360.0f / 0x800));
int32 color = (MAXDIST - dist) * (0.5f * s + 0.5f) / MAXDIST * 255.0f;
- CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos,
- 2.0f, 0.0f, 0.0f, -2.0f,
- 255, // this is 0 on PC which results in no shadow
- color, color, color,
- 4.0f, 1.0f, 40.0f, false, 0.0f);
+ CShadows::StoreStaticShadow((uintptr)entity, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &pos, 2.0f, 0.0f, 0.0f, -2.0f, 0, color, color, color, 4.0f,
+ 1.0f, 40.0f, false, 0.0f);
CCoronas::RegisterCorona((uintptr)entity, color, color, color, 255, pos, 0.6f, 40.0f, CCoronas::TYPE_RING, CCoronas::FLARE_NONE, CCoronas::REFLECTION_OFF, CCoronas::LOSCHECK_OFF, CCoronas::STREAK_OFF, 0.0f);
}
diff --git a/src/control/Pickups.h b/src/control/Pickups.h
index 423f864b..8f6ef4c3 100644
--- a/src/control/Pickups.h
+++ b/src/control/Pickups.h
@@ -33,14 +33,19 @@ class CPlayerPed;
class CPickup
{
public:
- ePickupType m_eType;
- bool m_bRemoved;
- uint16 m_nQuantity;
+ CVector m_vecPos;
+ uint32 m_nRevenue;
CObject *m_pObject;
+ CObject *m_pExtraObject;
+ uint16 m_nQuantity;
uint32 m_nTimer;
+ int16 m_nMoneySpeed;
int16 m_eModelIndex;
uint16 m_nIndex;
- CVector m_vecPos;
+ char m_sTextKey[8];
+ ePickupType m_eType;
+ bool m_bRemoved;
+ uint8 m_effects;
CObject *GiveUsAPickUpObject(int32 handle);
bool Update(CPlayerPed *player, CVehicle *vehicle, int playerId);
@@ -71,6 +76,7 @@ class CPickups
static tPickupMessage aMessages[NUMPICKUPMESSAGES];
public:
static int32 PlayerOnWeaponPickup;
+ static int32 CollectPickupBuffer;
static void Init();
static void Update();
@@ -79,7 +85,7 @@ public:
static void DoMoneyEffects(CEntity *ent);
static void DoMineEffects(CEntity *ent);
static void DoPickUpEffects(CEntity *ent);
- static int32 GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity, uint32 rate = 0, bool highPriority = false, wchar* pText = nil);
+ static int32 GenerateNewOne(CVector pos, uint32 modelIndex, uint8 type, uint32 quantity, uint32 rate = 0, bool highPriority = false, char* pText = nil);
static int32 GenerateNewOne_WeaponType(CVector pos, eWeaponType weaponType, uint8 type, uint32 quantity);
static void RemovePickUp(int32 pickupIndex);
static void RemoveAllFloatingPickups();
diff --git a/src/control/Script.cpp b/src/control/Script.cpp
index 88a62f4e..eb950464 100644
--- a/src/control/Script.cpp
+++ b/src/control/Script.cpp
@@ -80,6 +80,8 @@
#include "World.h"
#include "Zones.h"
#include "main.h"
+#include "Ropes.h"
+#include "MBlur.h"
#ifdef USE_ADVANCED_SCRIPT_DEBUG_OUTPUT
#include <stdarg.h>
#endif
@@ -12110,6 +12112,7 @@ int8 CRunningScript::ProcessCommands1100To1199(int32 command)
CVector pos = *(CVector*)&ScriptParams[0];
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
+ CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_REVENUE, PICKUP_ASSET_REVENUE, ScriptParams[3], ScriptParams[4]);
StoreParameters(&m_nIp, 1);
return 0;
@@ -12790,7 +12793,7 @@ int8 CRunningScript::ProcessCommands1200To1299(int32 command)
case COMMAND_CREATE_SWAT_ROPE:
{
CollectParameters(&m_nIp, 3);
- debug("CREATE_SWAT_ROPE is not implemented\n");
+ CRopes::CreateRopeWithSwatComingDown(*(CVector*)&ScriptParams[0]);
return 0;
}
//case COMMAND_SET_FIRST_PERSON_CONTROL_CAMERA:
@@ -12902,10 +12905,12 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
CVector pos = *(CVector*)&ScriptParams[0];
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
- wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- // TODO(MIAMI) - add text
+ char key[KEY_LENGTH_IN_SCRIPT];
+ CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
+ m_nIp += KEY_LENGTH_IN_SCRIPT;
+ // TheText.Get(key);
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY, PICKUP_PROPERTY_LOCKED, 0, 0, false, text);
+ ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY, PICKUP_PROPERTY_LOCKED, 0, 0, false, key);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -12915,10 +12920,12 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
CVector pos = *(CVector*)&ScriptParams[0];
if (pos.z <= MAP_Z_LOW_LIMIT)
pos.z = CWorld::FindGroundZForCoord(pos.x, pos.y) + PICKUP_PLACEMENT_OFFSET;
- wchar* text = CTheScripts::GetTextByKeyFromScript(&m_nIp);
- // TODO(MIAMI) - add text
+ char key[KEY_LENGTH_IN_SCRIPT];
+ CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
+ m_nIp += KEY_LENGTH_IN_SCRIPT;
+ // TheText.Get(key);
CPickups::GetActualPickupIndex(CollectNextParameterWithoutIncreasingPC(m_nIp));
- ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY_FORSALE, PICKUP_PROPERTY_FORSALE, ScriptParams[3], 0, false, text);
+ ScriptParams[0] = CPickups::GenerateNewOne(pos, MI_PICKUP_PROPERTY_FORSALE, PICKUP_PROPERTY_FORSALE, ScriptParams[3], 0, false, key);
StoreParameters(&m_nIp, 1);
return 0;
}
@@ -13021,7 +13028,11 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
case COMMAND_SET_PLAYER_DRUNKENNESS:
{
CollectParameters(&m_nIp, 2);
- debug("SET_PLAYER_DRUNKENNESS not implemented\n"); // TODO(MIAMI)
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
+ pPlayerInfo->m_pPed->m_nDrunkenness = ScriptParams[1];
+ pPlayerInfo->m_pPed->m_nFadeDrunkenness = 0;
+ if (pPlayerInfo->m_pPed->m_nDrunkenness == 0)
+ CMBlur::ClearDrunkBlur();
return 0;
}
//case COMMAND_GET_PLAYER_DRUNKENNESS:
@@ -13421,7 +13432,7 @@ int8 CRunningScript::ProcessCommands1300To1399(int32 command)
char key[KEY_LENGTH_IN_SCRIPT];
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- debug("LOAD_UNCOMPRESSED_ANIM not implemented\n"); // TODO(MIAMI)
+ CCutsceneMgr::LoadAnimationUncompressed(key);
return 0;
}
case COMMAND_WAS_CUTSCENE_SKIPPED:
@@ -13624,15 +13635,13 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_IS_PLAYER_IN_INFO_ZONE:
{
CollectParameters(&m_nIp, 1);
+ CPlayerInfo* pPlayerInfo = &CWorld::Players[ScriptParams[0]];
char key[KEY_LENGTH_IN_SCRIPT];
CTheScripts::ReadTextLabelFromScript(&m_nIp, key);
m_nIp += KEY_LENGTH_IN_SCRIPT;
- static bool bShowed = false;
- if (!bShowed) {
- debug("IS_PLAYER_IN_INFO_ZONE not implemented, default to FALSE\n");
- bShowed = true;
- }
- UpdateCompareFlag(false);
+ CVector pos = pPlayerInfo->GetPos();
+ CZone *infoZone = CTheZones::FindInformationZoneForPosition(&pos);
+ UpdateCompareFlag(strncmp(key, infoZone->name, 8) == 0);
return 0;
}
case COMMAND_CLEAR_CHAR_ICE_CREAM_PURCHASE:
@@ -13828,7 +13837,19 @@ int8 CRunningScript::ProcessCommands1400To1499(int32 command)
case COMMAND_CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI:
{
CollectParameters(&m_nIp, 3);
- debug("CREATE_DUST_EFFECT_FOR_CUTSCENE_HELI not implemented\n"); // TODO(MIAMI)
+ CObject *pHeli = CPools::GetObjectPool()->GetAt(ScriptParams[0]);
+ bool found = false;
+ float waterLevel = -1000.0f;
+ CVector pos = pHeli->GetPosition();
+ float radius = *(float*)&ScriptParams[1];
+ float ground = CWorld::FindGroundZFor3DCoord(pos.x, pos.y, pos.z, &found);
+ if (!CWaterLevel::GetWaterLevel(pos.x, pos.y, pos.z, &waterLevel, false))
+ waterLevel = 0.0f;
+ if (waterLevel > ground)
+ ground = waterLevel;
+ if (ScriptParams[2] > 8)
+ ScriptParams[2] = 8;
+ CVehicle::HeliDustGenerate(pHeli, (pos.z - ground - 1.0f - radius) * 0.3 + radius, ground, ScriptParams[2]);
return 0;
}
case COMMAND_REGISTER_FIRE_LEVEL:
diff --git a/src/core/Camera.cpp b/src/core/Camera.cpp
index 9f3646e2..2f977a20 100644
--- a/src/core/Camera.cpp
+++ b/src/core/Camera.cpp
@@ -3995,8 +3995,8 @@ CCamera::CalculateDerivedValues(void)
m_cameraMatrix = Invert(m_matrix);
float hfov = DEGTORAD(CDraw::GetScaledFOV()/2.0f);
- float c = cos(hfov);
- float s = sin(hfov);
+ float c = Cos(hfov);
+ float s = Sin(hfov);
// right plane
m_vecFrustumNormals[0] = CVector(c, -s, 0.0f);
diff --git a/src/core/Fire.cpp b/src/core/Fire.cpp
index 3752f1ba..a6928def 100644
--- a/src/core/Fire.cpp
+++ b/src/core/Fire.cpp
@@ -141,11 +141,8 @@ CFire::ProcessFire(void)
lightpos.z = m_vecPos.z + 5.0f;
if (!m_pEntity) {
- CShadows::StoreStaticShadow((uintptr)this, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &lightpos,
- 7.0f, 0.0f, 0.0f, -7.0f,
- 255, // this is 0 on PC which results in no shadow
- nRandNumber / 2, nRandNumber / 2, 0,
- 10.0f, 1.0f, 40.0f, 0, 0.0f);
+ CShadows::StoreStaticShadow((uintptr)this, SHADOWTYPE_ADDITIVE, gpShadowExplosionTex, &lightpos, 7.0f, 0.0f, 0.0f, -7.0f, 0, nRandNumber / 2,
+ nRandNumber / 2, 0, 10.0f, 1.0f, 40.0f, 0, 0.0f);
}
fGreen = nRandNumber / 128;
fRed = nRandNumber / 128;
diff --git a/src/core/Frontend.cpp b/src/core/Frontend.cpp
index 06744ac2..ccb89fbd 100644
--- a/src/core/Frontend.cpp
+++ b/src/core/Frontend.cpp
@@ -3409,9 +3409,9 @@ CMenuManager::SmallMessageScreen(const char* text)
CFont::SetPropOn();
CFont::SetJustifyOn();
CFont::SetBackGroundOnlyTextOn();
- CSprite2d::DrawRect(CRect(SCREEN_SCALE_X(95.0f), SCREEN_SCALE_FROM_BOTTOM(165.0f), SCREEN_SCALE_FROM_RIGHT(95.0f), SCREEN_SCALE_Y(115.0f)), CRGBA(50, 50, 50, FadeIn(210)));
+ CSprite2d::DrawRect(CRect(SCREEN_STRETCH_X(95.0f), SCREEN_SCALE_FROM_BOTTOM(165.0f), SCREEN_STRETCH_FROM_RIGHT(95.0f), SCREEN_SCALE_Y(115.0f)), CRGBA(50, 50, 50, FadeIn(210)));
CFont::SetFontStyle(FONT_LOCALE(FONT_STANDARD));
- CFont::SetCentreSize(SCREEN_SCALE_X(430.0f));
+ CFont::SetCentreSize(SCREEN_STRETCH_X(430.0f));
CFont::SetCentreOn();
CFont::SetColor(CRGBA(LABEL_COLOR.r, LABEL_COLOR.g, LABEL_COLOR.b, FadeIn(255)));
CFont::SetDropShadowPosition(2);
diff --git a/src/core/Game.cpp b/src/core/Game.cpp
index 39bbd364..7700d321 100644
--- a/src/core/Game.cpp
+++ b/src/core/Game.cpp
@@ -152,9 +152,14 @@ CGame::InitialiseOnceBeforeRW(void)
return true;
}
-#if !defined(LIBRW) && defined(PS2_MATFX)
+#ifndef LIBRW
+#ifdef PS2_MATFX
void ReplaceMatFxCallback();
-#endif
+#endif // PS2_MATFX
+#ifdef PS2_ALPHA_TEST
+void ReplaceAtomicPipeCallback();
+#endif // PS2_ALPHA_TEST
+#endif // !LIBRW
bool
CGame::InitialiseRenderWare(void)
@@ -206,9 +211,14 @@ CGame::InitialiseRenderWare(void)
#else
rw::MatFX::modulateEnvMap = false;
#endif
-#elif defined(PS2_MATFX)
+#else
+#ifdef PS2_MATFX
ReplaceMatFxCallback();
-#endif
+#endif // PS2_MATFX
+#ifdef PS2_ALPHA_TEST
+ ReplaceAtomicPipeCallback();
+#endif // PS2_ALPHA_TEST
+#endif // LIBRW
CFont::Initialise();
CHud::Initialise();
diff --git a/src/core/Pad.cpp b/src/core/Pad.cpp
index 8043bb6c..c1016bdd 100644
--- a/src/core/Pad.cpp
+++ b/src/core/Pad.cpp
@@ -8,6 +8,7 @@
#include "common.h"
#include "crossplatform.h"
+#include "platform.h"
#ifdef XINPUT
#include <xinput.h>
#pragma comment( lib, "Xinput9_1_0.lib" )
@@ -2643,6 +2644,38 @@ bool CPad::TargetJustDown(void)
return false;
}
+bool CPad::CollectPickupJustDown(void)
+{
+ if ( ArePlayerControlsDisabled() )
+ return false;
+
+ switch (CURMODE)
+ {
+ case 0:
+ case 1:
+ {
+ return !!(NewState.LeftShoulder1 && !OldState.LeftShoulder1);
+
+ break;
+ }
+ case 2:
+ {
+ return !!(NewState.Triangle && !OldState.Triangle);
+
+ break;
+ }
+
+ case 3:
+ {
+ return !!(NewState.Circle && !OldState.Circle);
+
+ break;
+ }
+ }
+
+ return false;
+}
+
bool CPad::DuckJustDown(void)
{
if (ArePlayerControlsDisabled())
diff --git a/src/core/Pad.h b/src/core/Pad.h
index f76d7b5d..2a0bb7d3 100644
--- a/src/core/Pad.h
+++ b/src/core/Pad.h
@@ -238,6 +238,7 @@ public:
bool GetTarget(void);
bool TargetJustDown(void);
bool DuckJustDown(void);
+ bool CollectPickupJustDown(void);
bool JumpJustDown(void);
bool GetSprint(void);
bool ShiftTargetLeftJustDown(void);
diff --git a/src/core/config.h b/src/core/config.h
index c9c65051..4cd4cbe1 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -135,6 +135,7 @@ enum Config {
NUM_GARAGE_STORED_CARS = 4,
NUM_CRANES = 8,
+ NUM_ESCALATORS = 22,
NUM_EXPLOSIONS = 48,
@@ -214,6 +215,7 @@ enum Config {
#define ASPECT_RATIO_SCALE // Not just makes everything scale with aspect ratio, also adds support for all aspect ratios
#define DEFAULT_NATIVE_RESOLUTION // Set default video mode to your native resolution (fixes Windows 10 launch)
#define USE_TXD_CDIMAGE // generate and load textures from txd.img
+#define PS2_ALPHA_TEST // emulate ps2 alpha test
#define IMPROVED_VIDEOMODE // save and load videomode parameters instead of a magic number
//#define DISABLE_LOADING_SCREEN // disable the loading screen which vastly improves the loading time
//#define NO_ISLAND_LOADING // disable loadscreen between islands via loading all island data at once, consumes more memory and CPU
@@ -292,4 +294,7 @@ enum Config {
#define FREE_CAM // Rotating cam
// Audio
+#ifndef AUDIO_OAL // is not working yet for openal
#define AUDIO_CACHE // cache sound lengths to speed up the cold boot
+#endif
+//#define PS2_AUDIO // changes audio paths for cutscenes and radio to PS2 paths, needs vbdec to support VB with MSS \ No newline at end of file
diff --git a/src/objects/Object.h b/src/objects/Object.h
index 5a9c0195..5f0ec0ab 100644
--- a/src/objects/Object.h
+++ b/src/objects/Object.h
@@ -8,6 +8,7 @@ enum {
MISSION_OBJECT = 2,
TEMP_OBJECT = 3,
CUTSCENE_OBJECT = 4,
+ ESCALATOR_OBJECT = 5,
};
enum CollisionSpecialResponseCase
diff --git a/src/render/Fluff.cpp b/src/render/Fluff.cpp
index e4aff5c4..5d8ccf47 100644
--- a/src/render/Fluff.cpp
+++ b/src/render/Fluff.cpp
@@ -20,6 +20,7 @@
#include "PlayerPed.h"
#include "Bones.h"
#include "World.h"
+#include "Replay.h"
CPlaneTrail CPlaneTrails::aArray[6];
RwImVertexIndex TrailIndices[32] = {
@@ -390,6 +391,7 @@ void CMovingThings::Init()
CPlaneTrails::Init();
CSmokeTrails::Init();
CPlaneBanners::Init();
+ CEscalators::Init();
StartCloseList.m_pNext = &CMovingThings::EndCloseList;
StartCloseList.m_pPrev = nil;
@@ -444,12 +446,14 @@ void CMovingThings::Shutdown()
for (i = 0; i < ARRAY_SIZE(aDigitalClocks); ++i)
aDigitalClocks[i].SetVisibility(false);
*/
+ CEscalators::Shutdown();
}
void CMovingThings::Update()
{
CPlaneBanners::Update();
CPlaneTrails::Update();
+ CEscalators::Update();
const int TIME_SPAN = 64; // frames to process all aMovingThings
@@ -1287,4 +1291,230 @@ CSmokeTrails::Update(void) {
RwIm3DRenderIndexedPrimitive(rwPRIMTYPEPOLYLINE, SmokeTrailIndices, 2);
RwIm3DEnd();
}
+}
+
+CEscalator CEscalators::aEscalators[NUM_ESCALATORS];
+int32 CEscalators::NumEscalators;
+
+CEscalator::CEscalator() {
+ m_bIsActive = false;
+
+ for (int i = 0; i < 24; i++) {
+ m_pSteps[i] = nil;
+ }
+}
+
+void
+CEscalator::AddThisOne(CVector pos0, CVector pos1, CVector pos2, CVector pos3, bool b_isMovingDown) {
+ m_pos0 = pos0;
+ m_pos1 = pos1;
+ m_pos2 = pos2;
+ m_pos3 = pos3;
+
+ float escalatorStepHeight = CModelInfo::GetModelInfo(MI_ESCALATORSTEP)->GetColModel()->boundingBox.max.z;
+ m_pos0.z -= escalatorStepHeight;
+ m_pos1.z -= escalatorStepHeight;
+ m_pos2.z -= escalatorStepHeight;
+ m_pos3.z -= escalatorStepHeight;
+
+ float magnitudes[3];
+ magnitudes[0] = (m_pos0 - m_pos1).Magnitude();
+ magnitudes[1] = (m_pos1 - m_pos2).Magnitude();
+ magnitudes[2] = (m_pos2 - m_pos3).Magnitude();
+
+ float length = magnitudes[0] + magnitudes[1] + magnitudes[2];
+
+ m_lowerEnd = magnitudes[0] / length;
+ m_upperEnd = (magnitudes[0] + magnitudes[1]) / length;
+
+ m_stepsCount = Max(24.0f, length / 0.6f);
+
+ CVector direction(m_pos0.x - m_pos1.x, m_pos0.y - m_pos1.y, 0.0f);
+ direction.Normalise();
+
+ m_matrix.GetUp() = CVector(0.0f, 0.0f, 1.0f);
+ m_matrix.GetForward() = CVector(direction.x, direction.y, 0.0f);
+ m_matrix.GetRight() = CVector(direction.y, -direction.x, 0.0f);
+ m_matrix.GetPosition() = CVector(0.0f, 0.0f, 0.0f);
+
+ m_bIsMovingDown = b_isMovingDown;
+
+ m_midPoint = (m_pos0 + m_pos3) / 2.0f;
+
+ m_radius = (m_pos0 - m_midPoint).Magnitude();
+}
+
+void
+CEscalator::Update(void) {
+ if (!m_bIsActive) {
+ if ((TheCamera.GetPosition() - m_midPoint).Magnitude() < 25.0f) {
+ if (TheCamera.IsSphereVisible(m_midPoint, m_radius) && (m_stepsCount + 10 < CPools::GetObjectPool()->GetNoOfFreeSpaces())) {
+ m_bIsActive = true;
+ for (int i = 0; i < m_stepsCount; i++) {
+ m_pSteps[i] = new CObject(MI_ESCALATORSTEP, TRUE);
+ if (m_pSteps[i]) {
+ m_pSteps[i]->SetPosition(m_pos1);
+ CWorld::Add(m_pSteps[i]);
+ m_pSteps[i]->ObjectCreatedBy = ESCALATOR_OBJECT;
+ }
+ }
+ }
+ }
+ }
+
+ if (m_bIsActive) {
+ float time = (CTimer::GetTimeInMilliseconds() % 16384) / 16384.0f;
+ for (int i = 0; i < m_stepsCount; i++) {
+ if (m_pSteps[i]) {
+ float t = i / (float)m_stepsCount + time;
+
+ if (t > 1.0f)
+ t -= 1.0f;
+
+ if (m_bIsMovingDown)
+ t = 1.0f - t;
+
+ CVector oldPosition = m_pSteps[i]->GetPosition();
+ m_pSteps[i]->GetMatrix() = m_matrix;
+
+ CVector newPosition;
+ if (t < m_lowerEnd) {
+ float ratio = t / m_lowerEnd;
+ newPosition = (ratio * m_pos1) + ((1.0f - ratio) * m_pos0);
+ }
+ else if (t < m_upperEnd) {
+ float ratio = (t - m_lowerEnd) / (m_upperEnd - m_lowerEnd);
+ newPosition = (ratio * m_pos2) + ((1.0f - ratio) * m_pos1);
+ }
+ else {
+ float ratio = (t - m_upperEnd) / (1.0f - m_upperEnd);
+ newPosition = (ratio * m_pos3) + ((1.0f - ratio) * m_pos2);
+ }
+
+ m_pSteps[i]->SetPosition(newPosition);
+ m_pSteps[i]->m_vecMoveSpeed = (newPosition - oldPosition) / Max(CTimer::GetTimeStep(), 1.0f);
+ m_pSteps[i]->GetMatrix().UpdateRW();
+ m_pSteps[i]->UpdateRwFrame();
+ }
+ if ((TheCamera.GetPosition() - m_midPoint).Magnitude() > 28.0f || !TheCamera.IsSphereVisible(m_midPoint, m_radius))
+ SwitchOff();
+ }
+ }
+}
+
+bool deletingEscalator;
+
+void
+CEscalator::SwitchOff(void) {
+ if (m_bIsActive) {
+ for (int i = 0; i < m_stepsCount; i++) {
+ if (m_pSteps[i]) {
+ CWorld::Remove(m_pSteps[i]);
+ deletingEscalator = true;
+ delete m_pSteps[i];
+ m_pSteps[i] = nil;
+ deletingEscalator = false;
+ }
+ }
+ m_bIsActive = false;
+ }
+}
+
+void
+CEscalators::AddOne(CVector pos0, CVector pos1, CVector pos2, CVector pos3, bool b_isMovingDown) {
+ aEscalators[NumEscalators++].AddThisOne(pos0, pos1, pos2, pos3, b_isMovingDown);
+}
+
+void
+CEscalators::Init(void) {
+ Shutdown();
+ NumEscalators = 0;
+
+ AddOne(CVector(-9.82999f, -938.04498f, 9.4219f), CVector(-8.573f, -938.04498f, 9.4219f),
+ CVector(-0.747f, -938.045f, 15.065f), CVector(0.88f, -938.045f, 15.065f), TRUE);
+
+ AddOne(CVector(-9.83f, -939.966f, 9.422f), CVector(-8.573f, -939.966f, 9.422f),
+ CVector(-0.747f, -939.966f, 15.065f), CVector(0.880f, -939.966f, 15.065f), FALSE);
+
+ AddOne(CVector(408.116f, 1058.36f, 18.261f), CVector(408.094f, 1057.04f, 18.261f),
+ CVector(408.116f, 1048.0f, 24.765f), CVector(408.094f, 1046.57f, 24.799f), TRUE);
+
+ AddOne(CVector(406.195f, 1058.36f, 18.261f), CVector(406.173f, 1057.04f, 18.261f),
+ CVector(406.195f, 1048.0f, 24.729f), CVector(406.173f, 1046.57f, 24.79f), FALSE);
+
+ AddOne(CVector(421.729f, 1058.3789f, 18.075f), CVector(421.707f, 1057.052f, 18.099f),
+ CVector(421.729f, 1048.016f, 24.604f), CVector(421.707f, 1046.589f, 24.637f), TRUE);
+
+ AddOne(CVector(419.808f, 1058.378f, 18.099f), CVector(419.786f, 1057.052f, 18.099f),
+ CVector(419.808f, 1048.016f, 24.568f), CVector(419.786f, 1046.589f, 24.637f), FALSE);
+
+ AddOne(CVector(412.69901f, 1102.729f, 17.569f), CVector(412.72198f, 1104.057f, 17.57f),
+ CVector(412.69901f, 1113.092f, 24.073f), CVector(412.72198f, 1114.3201f, 24.108f), TRUE);
+
+ AddOne(CVector(414.62f, 1102.729f, 17.569f), CVector(414.64301f, 1104.057f, 17.57f),
+ CVector(414.62f, 1113.092f, 24.037001f), CVector(414.64301f, 1114.3201f, 24.099001f), FALSE);
+
+ AddOne(CVector(414.64301f, 1145.589f, 17.57f), CVector(414.62f, 1144.261f, 17.569f),
+ CVector(414.64301f, 1135.226f, 24.073999f), CVector(414.62f, 1133.798f, 24.107f), TRUE);
+
+ AddOne(CVector(412.72198f, 1145.589f, 17.57f), CVector(412.69901f, 1144.261f, 17.569f),
+ CVector(412.72198f, 1135.226f, 24.038f), CVector(412.69901f, 1133.798f, 24.098f), FALSE);
+
+ AddOne(CVector(406.05099f, 1193.4771f, 18.016001f), CVector(406.07401f, 1194.8051f, 18.017f),
+ CVector(406.05099f, 1203.84f, 24.52f), CVector(406.07401f, 1205.2679f, 24.555f), TRUE);
+
+ AddOne(CVector(407.97198f, 1193.4771f, 18.016001f), CVector(407.995f, 1194.8051f, 18.017f),
+ CVector(407.97198f, 1203.84f, 24.483999f), CVector(407.995f, 1205.2679f, 24.546f), FALSE);
+
+ AddOne(CVector(419.659f, 1193.479f, 17.979f), CVector(419.68201f, 1194.807f, 17.98f),
+ CVector(419.659f, 1203.842f, 24.483f), CVector(419.68201f, 1205.27f, 24.518f), TRUE);
+
+ AddOne(CVector(421.57999f, 1193.479f, 17.979f), CVector(421.603f, 1194.807f, 17.98f),
+ CVector(421.57999f, 1203.842f, 24.447001f), CVector(421.603f, 1205.27f, 24.509001f), FALSE);
+
+ AddOne(CVector(406.23199f, 1022.857f, 17.917f), CVector(406.23199f, 1024.1851f, 17.917f),
+ CVector(406.23199f, 1033.22f, 24.521f), CVector(406.23199f, 1034.647f, 24.555f), TRUE);
+
+ AddOne(CVector(408.15302f, 1022.857f, 17.917f), CVector(408.15302f, 1024.1851f, 17.916f),
+ CVector(408.15302f, 1033.22f, 24.486f), CVector(408.15302f, 1034.647f, 24.52f), FALSE);
+
+ AddOne(CVector(-1506.39f, -813.13f, 13.834f), CVector(-1506.177f, -814.51703f, 13.834f),
+ CVector(-1504.566f, -823.20898f, 19.836f), CVector(-1504.329f, -824.48499f, 19.837f), FALSE);
+
+ AddOne(CVector(-1481.951f, -859.05402f, 13.834f), CVector(-1482.7791f, -858.22498f, 13.834f),
+ CVector(-1489.03f, -851.974f, 19.836f), CVector(-1489.948f, -851.05701f, 19.837f), TRUE);
+
+ AddOne(CVector(-1461.743f, -871.35901f, 13.834f), CVector(-1460.62f, -871.69202f, 13.834f),
+ CVector(-1452.144f, -874.20203f, 19.836f), CVector(-1450.9f, -874.57098f, 19.837f), FALSE);
+
+ AddOne(CVector(-1409.889f, -871.41498f, 13.834f), CVector(-1411.0129f, -871.74701f, 13.834f),
+ CVector(-1419.489f, -874.258f, 19.836f), CVector(-1420.733f, -874.62701f, 19.837f), TRUE);
+
+ AddOne(CVector(-1389.577f, -858.89301f, 13.834f), CVector(-1388.7271f, -858.08698f, 13.834f),
+ CVector(-1382.314f, -852.00201f, 19.836f), CVector(-1381.373f, -851.10797f, 19.837f), FALSE);
+
+ AddOne(CVector(-1364.981f, -813.13f, 13.834f), CVector(-1365.204f, -814.28003f, 13.834f),
+ CVector(-1366.891f, -822.95801f, 19.83f), CVector(-1367.139f, -824.23199f, 19.837f), TRUE);
+
+ for (int i = 0; i < NUM_ESCALATORS; i++) {
+ aEscalators[i].SwitchOff();
+ }
+}
+
+void
+CEscalators::Update(void) {
+ if (CReplay::IsPlayingBack())
+ return;
+
+ for (int i = 0; i < NUM_ESCALATORS; i++) {
+ aEscalators[i].Update();
+ }
+}
+
+void
+CEscalators::Shutdown(void) {
+ for (int i = 0; i < NUM_ESCALATORS; i++) {
+ aEscalators[i].SwitchOff();
+ }
+ NumEscalators = 0;
} \ No newline at end of file
diff --git a/src/render/Fluff.h b/src/render/Fluff.h
index b8b529f3..a938a4fe 100644
--- a/src/render/Fluff.h
+++ b/src/render/Fluff.h
@@ -1,6 +1,7 @@
#pragma once
#include "common.h"
#include "Vector.h"
+#include "Object.h"
// TODO
class CScriptPath
@@ -54,16 +55,37 @@ public:
static void RegisterPoint(CVector pos, uint32 id);
};
-// TODO
-class CEscalators
+class CEscalator
{
+ CVector m_pos0;
+ CVector m_pos1;
+ CVector m_pos2;
+ CVector m_pos3;
+ CMatrix m_matrix;
+ bool m_bIsActive;
+ bool m_bIsMovingDown;
+ int32 m_stepsCount;
+ float m_lowerEnd;
+ float m_upperEnd;
+ CVector m_midPoint;
+ float m_radius;
+ CObject *m_pSteps[24];
public:
+ CEscalator();
+ void Update(void);
+ void SwitchOff(void);
+ void AddThisOne(CVector pos0, CVector pos1, CVector pos2, CVector pos3, bool b_isMovingDown);
};
-// TODO
-class CEscalator
+class CEscalators
{
+ static CEscalator aEscalators[NUM_ESCALATORS];
public:
+ static int32 NumEscalators;
+ static void Init(void);
+ static void Update(void);
+ static void AddOne(CVector pos0, CVector pos1, CVector pos2, CVector pos3, bool b_isMovingDown);
+ static void Shutdown(void);
};
class CMovingThing
diff --git a/src/render/Hud.cpp b/src/render/Hud.cpp
index daafd27b..10408355 100644
--- a/src/render/Hud.cpp
+++ b/src/render/Hud.cpp
@@ -1708,6 +1708,12 @@ void CHud::SetHelpMessage(wchar *message, bool quick)
}
}
+bool CHud::IsHelpMessageBeingDisplayed(void)
+{
+ return m_HelpMessageState != 0;
+}
+
+
void CHud::SetMessage(wchar *message)
{
int i = 0;
diff --git a/src/render/Hud.h b/src/render/Hud.h
index 9106f6fa..4dd52aa8 100644
--- a/src/render/Hud.h
+++ b/src/render/Hud.h
@@ -133,6 +133,7 @@ public:
static void ReInitialise();
static void SetBigMessage(wchar *message, int16 style);
static void SetHelpMessage(wchar *message, bool quick);
+ static bool IsHelpMessageBeingDisplayed(void);
static void SetMessage(wchar *message);
static void SetPagerMessage(wchar *message);
static void SetVehicleName(wchar *name);
diff --git a/src/render/Shadows.cpp b/src/render/Shadows.cpp
index 284b2be0..c22afa76 100644
--- a/src/render/Shadows.cpp
+++ b/src/render/Shadows.cpp
@@ -1241,6 +1241,8 @@ CShadows::RenderStaticShadows(void)
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)TRUE);
RwRenderStateSet(rwRENDERSTATEFOGENABLE, (void *)FALSE);
+ SetAlphaTest(0);
+
for ( int32 i = 0; i < MAX_STATICSHADOWS; i++ )
aStaticShadows[i].m_bRendered = false;
@@ -1294,6 +1296,7 @@ CShadows::RenderStaticShadows(void)
RenderBuffer::RenderStuffInBuffer();
}
}
+ RestoreAlphaTest();
RwRenderStateSet(rwRENDERSTATEVERTEXALPHAENABLE, (void *)FALSE);
RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)TRUE);
diff --git a/src/rw/RwHelper.cpp b/src/rw/RwHelper.cpp
index 5c44eb84..58791ce2 100644
--- a/src/rw/RwHelper.cpp
+++ b/src/rw/RwHelper.cpp
@@ -11,7 +11,11 @@
RtCharset *debugCharset;
#endif
-bool gPS2alphaTest = 1;
+#ifdef PS2_ALPHA_TEST
+bool gPS2alphaTest = true;
+#else
+bool gPS2alphaTest = false;
+#endif
bool gBackfaceCulling;
#ifndef FINAL
@@ -807,3 +811,37 @@ ConvertPlatformAtomic(RpAtomic *atomic, void *data)
return atomic;
}
#endif
+
+#if defined(FIX_BUGS) && defined(GTA_PC)
+RwUInt32 saved_alphafunc, saved_alpharef;
+
+void
+SetAlphaTest(RwUInt32 alpharef)
+{
+#ifdef LIBRW
+ saved_alphafunc = rw::GetRenderState(rw::ALPHATESTFUNC);
+ saved_alpharef = rw::GetRenderState(rw::ALPHATESTREF);
+
+ rw::SetRenderState(rw::ALPHATESTFUNC, rw::ALPHAGREATEREQUAL);
+ rw::SetRenderState(rw::ALPHATESTREF, 0);
+#else
+ RwD3D8GetRenderState(D3DRS_ALPHAFUNC, &saved_alphafunc);
+ RwD3D8GetRenderState(D3DRS_ALPHAREF, &saved_alpharef);
+
+ RwD3D8SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
+ RwD3D8SetRenderState(D3DRS_ALPHAREF, alpharef);
+#endif
+}
+
+void
+RestoreAlphaTest()
+{
+#ifdef LIBRW
+ rw::SetRenderState(rw::ALPHATESTFUNC, saved_alphafunc);
+ rw::SetRenderState(rw::ALPHATESTREF, saved_alpharef);
+#else
+ RwD3D8SetRenderState(D3DRS_ALPHAFUNC, saved_alphafunc);
+ RwD3D8SetRenderState(D3DRS_ALPHAREF, saved_alpharef);
+#endif
+}
+#endif \ No newline at end of file
diff --git a/src/rw/RwHelper.h b/src/rw/RwHelper.h
index 0bd7b27b..3f1a3d19 100644
--- a/src/rw/RwHelper.h
+++ b/src/rw/RwHelper.h
@@ -60,3 +60,11 @@ void _TexturePoolsInitialise();
void _TexturePoolsShutdown();
RpAtomic *ConvertPlatformAtomic(RpAtomic *atomic, void *data);
+
+#if defined(FIX_BUGS) && defined (GTA_PC)
+void SetAlphaTest(RwUInt32 alpharef);
+void RestoreAlphaTest();
+#else
+#define SetAlphaTest(a) (0)
+#define RestoreAlphaTest() (0)
+#endif \ No newline at end of file
diff --git a/src/rw/RwMatFX.cpp b/src/rw/RwMatFX.cpp
index 3533eb24..c8384b0f 100644
--- a/src/rw/RwMatFX.cpp
+++ b/src/rw/RwMatFX.cpp
@@ -2,7 +2,6 @@
#define WITHD3D
#include "common.h"
-#include "rwcore.h"
#include "rpmatfx.h"
struct MatFXNothing { int pad[5]; int effect; };
@@ -51,9 +50,9 @@ extern "C" {
extern int MatFXAtomicDataOffset;
void _rpMatFXD3D8AtomicMatFXEnvRender(RxD3D8InstanceData* inst, int flags, int sel, RwTexture* texture, RwTexture* envMap);
- void _rpMatFXD3D8AtomicMatFXRenderBlack(RxD3D8InstanceData *inst);
- void _rpMatFXD3D8AtomicMatFXBumpMapRender(RxD3D8InstanceData *inst, int flags, RwTexture *texture, RwTexture *bumpMap, RwTexture *envMap);
- void _rpMatFXD3D8AtomicMatFXDualPassRender(RxD3D8InstanceData *inst, int flags, RwTexture *texture, RwTexture *dualTexture);
+ void _rpMatFXD3D8AtomicMatFXRenderBlack(RxD3D8InstanceData *inst);
+ void _rpMatFXD3D8AtomicMatFXBumpMapRender(RxD3D8InstanceData *inst, int flags, RwTexture *texture, RwTexture *bumpMap, RwTexture *envMap);
+ void _rpMatFXD3D8AtomicMatFXDualPassRender(RxD3D8InstanceData *inst, int flags, RwTexture *texture, RwTexture *dualTexture);
}
@@ -305,7 +304,8 @@ ReplaceMatFxCallback()
{
RxD3D8AllInOneSetRenderCallBack(
RxPipelineFindNodeByName(RpMatFXGetD3D8Pipeline(rpMATFXD3D8ATOMICPIPELINE), RxNodeDefinitionGetD3D8AtomicAllInOne()->name, nil, nil),
- _rwD3D8AtomicMatFXRenderCallback);
+ _rwD3D8AtomicMatFXRenderCallback);
+
}
#endif // PS2_MATFX
diff --git a/src/rw/RwPS2AlphaTest.cpp b/src/rw/RwPS2AlphaTest.cpp
new file mode 100644
index 00000000..c0d68355
--- /dev/null
+++ b/src/rw/RwPS2AlphaTest.cpp
@@ -0,0 +1,247 @@
+#ifndef LIBRW
+
+#define WITHD3D
+#include "common.h"
+#ifdef PS2_ALPHA_TEST
+#include "rwcore.h"
+
+extern "C" {
+RwBool _rwD3D8RenderStateIsVertexAlphaEnable(void);
+RwBool _rwD3D8RenderStateVertexAlphaEnable(RwBool enable);
+RwRaster *_rwD3D8RWGetRasterStage(RwUInt32 stage);
+}
+
+extern bool gPS2alphaTest;
+
+void
+_rxD3D8DualPassRenderCallback(RwResEntry *repEntry, void *object, RwUInt8 type, RwUInt32 flags)
+{
+ RxD3D8ResEntryHeader *resEntryHeader;
+ RxD3D8InstanceData *instancedData;
+ RwInt32 numMeshes;
+ RwBool lighting;
+ RwBool vertexAlphaBlend;
+ RwBool forceBlack;
+ RwUInt32 ditherEnable;
+ RwUInt32 shadeMode;
+ void *lastVertexBuffer;
+
+ /* Get lighting state */
+ RwD3D8GetRenderState(D3DRS_LIGHTING, &lighting);
+
+ forceBlack = FALSE;
+
+ if (lighting) {
+ if (flags & rxGEOMETRY_PRELIT) {
+ /* Emmisive color from the vertex colors */
+ RwD3D8SetRenderState(D3DRS_COLORVERTEX, TRUE);
+ RwD3D8SetRenderState(D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_COLOR1);
+ } else {
+ /* Emmisive color from material, set to black in the submit node */
+ RwD3D8SetRenderState(D3DRS_COLORVERTEX, FALSE);
+ RwD3D8SetRenderState(D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_MATERIAL);
+ }
+ } else {
+ if ((flags & rxGEOMETRY_PRELIT) == 0) {
+ forceBlack = TRUE;
+
+ RwD3D8GetRenderState(D3DRS_DITHERENABLE, &ditherEnable);
+ RwD3D8GetRenderState(D3DRS_SHADEMODE, &shadeMode);
+
+ RwD3D8SetRenderState(D3DRS_TEXTUREFACTOR, 0xff000000);
+ RwD3D8SetRenderState(D3DRS_DITHERENABLE, FALSE);
+ RwD3D8SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);
+ }
+ }
+
+ /* Enable clipping */
+ if (type == rpATOMIC) {
+ RpAtomic *atomic;
+ RwCamera *cam;
+
+ atomic = (RpAtomic *)object;
+
+ cam = RwCameraGetCurrentCamera();
+ // RWASSERT(cam);
+
+ if (RwD3D8CameraIsSphereFullyInsideFrustum(cam, RpAtomicGetWorldBoundingSphere(atomic))) {
+ RwD3D8SetRenderState(D3DRS_CLIPPING, FALSE);
+ } else {
+ RwD3D8SetRenderState(D3DRS_CLIPPING, TRUE);
+ }
+ } else {
+ RpWorldSector *worldSector;
+ RwCamera *cam;
+
+ worldSector = (RpWorldSector *)object;
+
+ cam = RwCameraGetCurrentCamera();
+ // RWASSERT(cam);
+
+ if (RwD3D8CameraIsBBoxFullyInsideFrustum(cam, RpWorldSectorGetTightBBox(worldSector))) {
+ RwD3D8SetRenderState(D3DRS_CLIPPING, FALSE);
+ } else {
+ RwD3D8SetRenderState(D3DRS_CLIPPING, TRUE);
+ }
+ }
+
+ /* Set texture to NULL if hasn't any texture flags */
+ if ((flags & (rxGEOMETRY_TEXTURED | rpGEOMETRYTEXTURED2)) == 0) {
+ RwD3D8SetTexture(NULL, 0);
+
+ if (forceBlack) {
+ RwD3D8SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG2);
+ RwD3D8SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR);
+
+ RwD3D8SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_DISABLE);
+ }
+ }
+
+ /* Get vertex alpha Blend state */
+ vertexAlphaBlend = _rwD3D8RenderStateIsVertexAlphaEnable();
+
+ /* Set Last vertex buffer to force the call */
+ lastVertexBuffer = (void *)0xffffffff;
+
+ /* Get the instanced data */
+ resEntryHeader = (RxD3D8ResEntryHeader *)(repEntry + 1);
+ instancedData = (RxD3D8InstanceData *)(resEntryHeader + 1);
+
+ /*
+ * Data shared between meshes
+ */
+
+ /*
+ * Set the Default Pixel shader
+ */
+ RwD3D8SetPixelShader(0);
+
+ /*
+ * Vertex shader
+ */
+ RwD3D8SetVertexShader(instancedData->vertexShader);
+
+ /* Get the number of meshes */
+ numMeshes = resEntryHeader->numMeshes;
+ while (numMeshes--) {
+ // RWASSERT(instancedData->material != NULL);
+
+ if ((flags & (rxGEOMETRY_TEXTURED | rpGEOMETRYTEXTURED2))) {
+ RwD3D8SetTexture(instancedData->material->texture, 0);
+
+ if (forceBlack) {
+ /* Only change the colorop, we need to use the texture alpha channel */
+ RwD3D8SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG2);
+ RwD3D8SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TFACTOR);
+ }
+ }
+
+ if (instancedData->vertexAlpha || (0xFF != instancedData->material->color.alpha)) {
+ if (!vertexAlphaBlend) {
+ vertexAlphaBlend = TRUE;
+
+ _rwD3D8RenderStateVertexAlphaEnable(TRUE);
+ }
+ } else {
+ if (vertexAlphaBlend) {
+ vertexAlphaBlend = FALSE;
+
+ _rwD3D8RenderStateVertexAlphaEnable(FALSE);
+ }
+ }
+
+ if (lighting) {
+ if (instancedData->vertexAlpha) {
+ RwD3D8SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
+ } else {
+ RwD3D8SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);
+ }
+
+ RwD3D8SetSurfaceProperties(&instancedData->material->color, &instancedData->material->surfaceProps, (flags & rxGEOMETRY_MODULATE));
+ }
+
+ /*
+ * Render
+ */
+
+ /* Set the stream source */
+ if (lastVertexBuffer != instancedData->vertexBuffer) {
+ RwD3D8SetStreamSource(0, instancedData->vertexBuffer, instancedData->stride);
+
+ lastVertexBuffer = instancedData->vertexBuffer;
+ }
+ if (!gPS2alphaTest) {
+ /* Set the Index buffer */
+ if (instancedData->indexBuffer != NULL) {
+ RwD3D8SetIndices(instancedData->indexBuffer, instancedData->baseIndex);
+
+ /* Draw the indexed primitive */
+ RwD3D8DrawIndexedPrimitive((D3DPRIMITIVETYPE)instancedData->primType, 0, instancedData->numVertices, 0, instancedData->numIndices);
+ } else {
+ RwD3D8DrawPrimitive((D3DPRIMITIVETYPE)instancedData->primType, instancedData->baseIndex, instancedData->numVertices);
+ }
+ } else {
+ RwD3D8SetIndices(instancedData->indexBuffer, instancedData->baseIndex);
+
+ int hasAlpha, alphafunc, alpharef, zwrite;
+ RwD3D8GetRenderState(D3DRS_ALPHABLENDENABLE, &hasAlpha);
+ RwD3D8GetRenderState(D3DRS_ZWRITEENABLE, &zwrite);
+ if (hasAlpha && zwrite) {
+ RwD3D8GetRenderState(D3DRS_ALPHAFUNC, &alphafunc);
+ RwD3D8GetRenderState(D3DRS_ALPHAREF, &alpharef);
+
+ RwD3D8SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
+ RwD3D8SetRenderState(D3DRS_ALPHAREF, 128);
+
+ if (instancedData->indexBuffer)
+ RwD3D8DrawIndexedPrimitive(instancedData->primType, 0, instancedData->numVertices, 0, instancedData->numIndices);
+ else
+ RwD3D8DrawPrimitive(instancedData->primType, instancedData->baseIndex, instancedData->numVertices);
+
+ RwD3D8SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_LESS);
+ RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, FALSE);
+
+ if (instancedData->indexBuffer)
+ RwD3D8DrawIndexedPrimitive(instancedData->primType, 0, instancedData->numVertices, 0, instancedData->numIndices);
+ else
+ RwD3D8DrawPrimitive(instancedData->primType, instancedData->baseIndex, instancedData->numVertices);
+
+ RwD3D8SetRenderState(D3DRS_ALPHAFUNC, alphafunc);
+ RwD3D8SetRenderState(D3DRS_ALPHAREF, alpharef);
+ RwRenderStateSet(rwRENDERSTATEZWRITEENABLE, (void *)TRUE);
+ } else {
+ if (instancedData->indexBuffer)
+ RwD3D8DrawIndexedPrimitive(instancedData->primType, 0, instancedData->numVertices, 0, instancedData->numIndices);
+ else
+ RwD3D8DrawPrimitive(instancedData->primType, instancedData->baseIndex, instancedData->numVertices);
+ }
+ }
+
+ /* Move onto the next instancedData */
+ instancedData++;
+ }
+
+ if (forceBlack) {
+ RwD3D8SetRenderState(D3DRS_DITHERENABLE, ditherEnable);
+ RwD3D8SetRenderState(D3DRS_SHADEMODE, shadeMode);
+
+ if (_rwD3D8RWGetRasterStage(0)) {
+ RwD3D8SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
+ RwD3D8SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
+ } else {
+ RwD3D8SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_SELECTARG2);
+ RwD3D8SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE);
+ }
+ }
+}
+
+void
+ReplaceAtomicPipeCallback()
+{
+ RxD3D8AllInOneSetRenderCallBack(RxPipelineFindNodeByName(RXPIPELINEGLOBAL(platformAtomicPipeline), RxNodeDefinitionGetD3D8AtomicAllInOne()->name, nil, nil),
+ _rxD3D8DualPassRenderCallback);
+}
+
+#endif // PS2_ALPHA_TEST
+
+#endif // !LIBRW \ No newline at end of file
diff --git a/src/vehicles/Automobile.cpp b/src/vehicles/Automobile.cpp
index 08f14d68..e06ce03b 100644
--- a/src/vehicles/Automobile.cpp
+++ b/src/vehicles/Automobile.cpp
@@ -5581,7 +5581,7 @@ CAutomobile::TellHeliToGoToCoors(float x, float y, float z, uint8 speed)
void
CAutomobile::TellPlaneToGoToCoors(float x, float y, float z, uint8 speed)
{
- AutoPilot.m_nCarMission = MISSION_HELI_FLYTOCOORS;
+ AutoPilot.m_nCarMission = MISSION_PLANE_FLYTOCOORS;
AutoPilot.m_vecDestinationCoors.x = x;
AutoPilot.m_vecDestinationCoors.y = y;
AutoPilot.m_vecDestinationCoors.z = z;