x
This commit is contained in:
@@ -8,3 +8,9 @@ Release
|
||||
_release
|
||||
*__Win32_*
|
||||
/innosetup/installs
|
||||
/#Intermediate
|
||||
/#Build
|
||||
*.vcxproj.user
|
||||
*.VC.db
|
||||
*.VC.opendb
|
||||
/ipch
|
||||
Binary file not shown.
+644
@@ -0,0 +1,644 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25123.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asm_makeinsts", "asm_makeinsts\asm_makeinsts.vcxproj", "{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bblaunch", "bblaunch\bblaunch.vcxproj", "{C74A383E-81B0-4679-AAC9-535C94C92EA5}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbruntime", "bbruntime\bbruntime.vcxproj", "{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bbruntime_dll", "bbruntime_dll\bbruntime_dll.vcxproj", "{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blitz", "blitz\blitz.vcxproj", "{C23AF61E-9509-411F-933E-17DB18884B21}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blitz3d", "blitz3d\blitz3d.vcxproj", "{BE0BA538-6215-4836-9227-1D3627E40D61}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blitzide", "blitzide\blitzide.vcxproj", "{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "compiler", "compiler\compiler.vcxproj", "{D884A075-E3B8-44E1-838D-74F28B33391B}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "config", "config\config.vcxproj", "{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "debugger", "debugger\debugger.vcxproj", "{4132C330-95D9-4F68-A51A-3B90381587C5}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gxruntime", "gxruntime\gxruntime.vcxproj", "{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linker", "linker\linker.vcxproj", "{0B629BA3-D138-407A-801D-DBE7C8DC4324}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "linker_dll", "linker_dll\linker_dll.vcxproj", "{778BCC7F-40F9-4309-9A88-C0F60D9B364D}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "stdutil", "stdutil\stdutil.vcxproj", "{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
AppStore|Any CPU = AppStore|Any CPU
|
||||
AppStore|ARM = AppStore|ARM
|
||||
AppStore|iPhone = AppStore|iPhone
|
||||
AppStore|iPhoneSimulator = AppStore|iPhoneSimulator
|
||||
AppStore|x86 = AppStore|x86
|
||||
Blitz2DRelease|Any CPU = Blitz2DRelease|Any CPU
|
||||
Blitz2DRelease|ARM = Blitz2DRelease|ARM
|
||||
Blitz2DRelease|iPhone = Blitz2DRelease|iPhone
|
||||
Blitz2DRelease|iPhoneSimulator = Blitz2DRelease|iPhoneSimulator
|
||||
Blitz2DRelease|x86 = Blitz2DRelease|x86
|
||||
Blitz3DRelease|Any CPU = Blitz3DRelease|Any CPU
|
||||
Blitz3DRelease|ARM = Blitz3DRelease|ARM
|
||||
Blitz3DRelease|iPhone = Blitz3DRelease|iPhone
|
||||
Blitz3DRelease|iPhoneSimulator = Blitz3DRelease|iPhoneSimulator
|
||||
Blitz3DRelease|x86 = Blitz3DRelease|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|ARM = Debug|ARM
|
||||
Debug|iPhone = Debug|iPhone
|
||||
Debug|iPhoneSimulator = Debug|iPhoneSimulator
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|ARM = Release|ARM
|
||||
Release|iPhone = Release|iPhone
|
||||
Release|iPhoneSimulator = Release|iPhoneSimulator
|
||||
Release|x86 = Release|x86
|
||||
Template|Any CPU = Template|Any CPU
|
||||
Template|ARM = Template|ARM
|
||||
Template|iPhone = Template|iPhone
|
||||
Template|iPhoneSimulator = Template|iPhoneSimulator
|
||||
Template|x86 = Template|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|Any CPU.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|Any CPU.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|ARM.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|ARM.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|iPhone.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|iPhone.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|iPhoneSimulator.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|x86.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.AppStore|x86.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|Any CPU.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|Any CPU.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|ARM.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|ARM.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|iPhone.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|iPhone.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|iPhoneSimulator.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|x86.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz2DRelease|x86.Build.0 = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|Any CPU.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|Any CPU.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|ARM.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|ARM.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|iPhone.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|iPhone.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|iPhoneSimulator.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|x86.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Blitz3DRelease|x86.Build.0 = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Release|x86.Build.0 = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|Any CPU.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|Any CPU.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|ARM.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|ARM.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|iPhone.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|iPhone.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|iPhoneSimulator.Build.0 = Debug|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|x86.ActiveCfg = Release|Win32
|
||||
{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}.Template|x86.Build.0 = Release|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.AppStore|x86.Build.0 = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Debug|x86.Build.0 = Debug|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Release|x86.ActiveCfg = Release|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Release|x86.Build.0 = Release|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Template|x86.ActiveCfg = Template|Win32
|
||||
{C74A383E-81B0-4679-AAC9-535C94C92EA5}.Template|x86.Build.0 = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.AppStore|x86.Build.0 = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Debug|x86.Build.0 = Debug|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Release|x86.ActiveCfg = Release|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Release|x86.Build.0 = Release|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Template|x86.ActiveCfg = Template|Win32
|
||||
{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}.Template|x86.Build.0 = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.AppStore|x86.Build.0 = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Debug|x86.Build.0 = Debug|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Release|x86.ActiveCfg = Release|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Release|x86.Build.0 = Release|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Template|x86.ActiveCfg = Template|Win32
|
||||
{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}.Template|x86.Build.0 = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.AppStore|x86.Build.0 = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Debug|x86.Build.0 = Debug|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Release|x86.ActiveCfg = Release|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Release|x86.Build.0 = Release|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Template|x86.ActiveCfg = Template|Win32
|
||||
{C23AF61E-9509-411F-933E-17DB18884B21}.Template|x86.Build.0 = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.AppStore|x86.Build.0 = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Debug|x86.Build.0 = Debug|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Release|x86.ActiveCfg = Release|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Release|x86.Build.0 = Release|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Template|x86.ActiveCfg = Template|Win32
|
||||
{BE0BA538-6215-4836-9227-1D3627E40D61}.Template|x86.Build.0 = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.AppStore|x86.Build.0 = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Debug|x86.Build.0 = Debug|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Release|x86.ActiveCfg = Release|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Release|x86.Build.0 = Release|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Template|x86.ActiveCfg = Template|Win32
|
||||
{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}.Template|x86.Build.0 = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.AppStore|x86.Build.0 = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Debug|x86.Build.0 = Debug|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Release|x86.ActiveCfg = Release|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Release|x86.Build.0 = Release|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Template|x86.ActiveCfg = Template|Win32
|
||||
{D884A075-E3B8-44E1-838D-74F28B33391B}.Template|x86.Build.0 = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.AppStore|x86.Build.0 = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Debug|x86.Build.0 = Debug|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Release|x86.ActiveCfg = Release|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Release|x86.Build.0 = Release|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Template|x86.ActiveCfg = Template|Win32
|
||||
{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}.Template|x86.Build.0 = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.AppStore|x86.Build.0 = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Debug|x86.Build.0 = Debug|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Release|x86.ActiveCfg = Release|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Release|x86.Build.0 = Release|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Template|x86.ActiveCfg = Template|Win32
|
||||
{4132C330-95D9-4F68-A51A-3B90381587C5}.Template|x86.Build.0 = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.AppStore|x86.Build.0 = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Debug|x86.Build.0 = Debug|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Release|x86.ActiveCfg = Release|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Release|x86.Build.0 = Release|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Template|x86.ActiveCfg = Template|Win32
|
||||
{FF2D8BF7-1930-4CAB-BC48-05CD33B7DC18}.Template|x86.Build.0 = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.AppStore|x86.Build.0 = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Debug|x86.Build.0 = Debug|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Release|x86.ActiveCfg = Release|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Release|x86.Build.0 = Release|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Template|x86.ActiveCfg = Template|Win32
|
||||
{0B629BA3-D138-407A-801D-DBE7C8DC4324}.Template|x86.Build.0 = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.AppStore|x86.Build.0 = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Debug|x86.Build.0 = Debug|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Release|x86.ActiveCfg = Release|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Release|x86.Build.0 = Release|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Template|x86.ActiveCfg = Template|Win32
|
||||
{778BCC7F-40F9-4309-9A88-C0F60D9B364D}.Template|x86.Build.0 = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|Any CPU.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|Any CPU.Build.0 = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|ARM.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|ARM.Build.0 = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|iPhone.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|iPhone.Build.0 = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|iPhoneSimulator.Build.0 = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|x86.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.AppStore|x86.Build.0 = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz2DRelease|Any CPU.ActiveCfg = Blitz2DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz2DRelease|ARM.ActiveCfg = Blitz2DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz2DRelease|iPhone.ActiveCfg = Blitz2DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz2DRelease|iPhoneSimulator.ActiveCfg = Blitz2DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz2DRelease|x86.ActiveCfg = Blitz2DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz2DRelease|x86.Build.0 = Blitz2DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz3DRelease|Any CPU.ActiveCfg = Blitz3DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz3DRelease|ARM.ActiveCfg = Blitz3DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz3DRelease|iPhone.ActiveCfg = Blitz3DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz3DRelease|iPhoneSimulator.ActiveCfg = Blitz3DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz3DRelease|x86.ActiveCfg = Blitz3DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Blitz3DRelease|x86.Build.0 = Blitz3DRelease|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Debug|ARM.ActiveCfg = Debug|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Debug|iPhone.ActiveCfg = Debug|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Debug|x86.ActiveCfg = Debug|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Debug|x86.Build.0 = Debug|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Release|ARM.ActiveCfg = Release|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Release|iPhone.ActiveCfg = Release|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Release|iPhoneSimulator.ActiveCfg = Release|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Release|x86.ActiveCfg = Release|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Release|x86.Build.0 = Release|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Template|Any CPU.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Template|ARM.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Template|iPhone.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Template|iPhoneSimulator.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Template|x86.ActiveCfg = Template|Win32
|
||||
{6BCFC5CA-EA71-4AE9-8B96-28B8701F939E}.Template|x86.Build.0 = Template|Win32
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
Binary file not shown.
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{E85F5BD3-FEA3-4342-885E-2C00AFBFE12E}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<StringPooling>true</StringPooling>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\asm_makeinsts.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<TypeLibraryName>.\Release\asm_makeinsts.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\asm_makeinsts.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>.\Release\asm_makeinsts.exe</OutputFile>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\asm_makeinsts.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<TypeLibraryName>.\Debug\asm_makeinsts.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\asm_makeinsts.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>.\Debug\asm_makeinsts.exe</OutputFile>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Text Include="nasm_insts.txt" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,323 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{C74A383E-81B0-4679-AAC9-535C94C92EA5}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\bblaunch___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\bblaunch___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\bblaunch___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\bblaunch___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\bblaunch___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\bblaunch___Win32_Blitz2DRelease\bblaunch.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\bblaunch___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\bblaunch___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\bblaunch___Win32_Blitz2DRelease\bblaunch.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bblaunch___Win32_Blitz2DRelease\bblaunch.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>..\..\release\blitz2drelease\BlitzBasic.exe</OutputFile>
|
||||
<AdditionalDependencies>dxguid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_WINDOWS;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\bblaunch___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\bblaunch___Win32_Blitz3DRelease\bblaunch.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\bblaunch___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\bblaunch___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\bblaunch___Win32_Blitz3DRelease\bblaunch.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bblaunch___Win32_Blitz3DRelease\bblaunch.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>../_release/Blitz3D.exe</OutputFile>
|
||||
<AdditionalDependencies>dxguid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\bblaunch.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Debug\bblaunch.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\bblaunch.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>..\blitzbasic\blitzbasic.exe</OutputFile>
|
||||
<AdditionalOptions> /FIXED:NO</AdditionalOptions>
|
||||
<AdditionalDependencies>dxguid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\bblaunch.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Release\bblaunch.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\bblaunch.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>..\blitzbasic\blitzbasic.exe</OutputFile>
|
||||
<AdditionalDependencies>dxguid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="bblaunch.cpp" />
|
||||
<ClCompile Include="checkdx.cpp" />
|
||||
<ClCompile Include="checkie.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="bblaunch.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="bblaunch.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="checkdx.h" />
|
||||
<ClInclude Include="checkie.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\bbruntime\bbruntime.vcxproj">
|
||||
<Project>{df8caa9d-7154-4d5f-bccc-0d7bb57c7354}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\bbruntime_dll\bbruntime_dll.vcxproj">
|
||||
<Project>{5fa2fd4a-f9a4-41ba-9484-07c3a57a87e3}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\blitz3d\blitz3d.vcxproj">
|
||||
<Project>{be0ba538-6215-4836-9227-1d3627e40d61}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\blitzide\blitzide.vcxproj">
|
||||
<Project>{b61d8348-b715-42b8-a759-c7bbb0c8cd4d}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\blitz\blitz.vcxproj">
|
||||
<Project>{c23af61e-9509-411f-933e-17db18884b21}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\compiler\compiler.vcxproj">
|
||||
<Project>{d884a075-e3b8-44e1-838d-74f28b33391b}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\config\config.vcxproj">
|
||||
<Project>{3e355353-96d8-4aaf-bf95-8e6ca0d4b1ba}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\debugger\debugger.vcxproj">
|
||||
<Project>{4132c330-95d9-4f68-a51a-3b90381587c5}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\gxruntime\gxruntime.vcxproj">
|
||||
<Project>{ff2d8bf7-1930-4cab-bc48-05cd33b7dc18}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\linker\linker.vcxproj">
|
||||
<Project>{0b629ba3-d138-407a-801d-dbe7c8dc4324}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\linker_dll\linker_dll.vcxproj">
|
||||
<Project>{778bcc7f-40f9-4309-9a88-c0f60d9b364d}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\stdutil\stdutil.vcxproj">
|
||||
<Project>{6bcfc5ca-ea71-4ae9-8b96-28b8701f939e}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -1,8 +1,6 @@
|
||||
|
||||
#include "std.h"
|
||||
|
||||
#ifdef PRO
|
||||
|
||||
#include "bbblitz3d.h"
|
||||
#include "bbgraphics.h"
|
||||
#include "../blitz3d/blitz3d.h"
|
||||
@@ -1855,7 +1853,7 @@ void bbPointEntity( Entity *e,Entity *t,float roll ){
|
||||
void bbAlignToVector( Entity *e,float nx,float ny,float nz,int axis,float rate ){
|
||||
Vector ax( nx,ny,nz );
|
||||
float l=ax.length();
|
||||
if( l<=EPSILON ) return;
|
||||
if( l<=FLT_EPSILON ) return;
|
||||
ax/=l;
|
||||
|
||||
Quat q=e->getWorldRotation();
|
||||
@@ -1863,9 +1861,9 @@ void bbAlignToVector( Entity *e,float nx,float ny,float nz,int axis,float rate
|
||||
|
||||
float dp=ax.dot( tv );
|
||||
|
||||
if( dp>=1-EPSILON ) return;
|
||||
if( dp>=1-FLT_EPSILON ) return;
|
||||
|
||||
if( dp<=-1+EPSILON ){
|
||||
if( dp<=-1+FLT_EPSILON ){
|
||||
float an=PI*rate/2;
|
||||
Vector cp=(axis==1) ? q.j() : (axis==2 ? q.k() : q.i());
|
||||
e->setWorldRotation( Quat( cosf(an),cp*sinf(an) ) * q );
|
||||
@@ -2226,5 +2224,3 @@ void blitz3d_link( void (*rtSym)( const char *sym,void *pc ) ){
|
||||
rtSym( "$EntityName%entity",bbEntityName );
|
||||
rtSym( "$EntityClass%entity",bbEntityClass );
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{DF8CAA9D-7154-4D5F-BCCC-0D7BB57C7354}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\bbruntime___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\bbruntime___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\bbruntime___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\bbruntime___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\bbruntime.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\bbruntime.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\bbruntime.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\bbruntime___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\bbruntime___Win32_Blitz2DRelease\bbruntime.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\bbruntime___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\bbruntime___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bbruntime___Win32_Blitz2DRelease\bbruntime.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bbruntime___Win32_Blitz2DRelease\bbruntime.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_LIB;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\bbruntime___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\bbruntime___Win32_Blitz3DRelease\bbruntime.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader />
|
||||
<ObjectFileName>.\bbruntime___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\bbruntime___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bbruntime___Win32_Blitz3DRelease\bbruntime.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bbruntime___Win32_Blitz3DRelease\bbruntime.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<StringPooling>true</StringPooling>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\bbruntime.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\bbruntime.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\bbruntime.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="basic.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbaudio.cpp" />
|
||||
<ClCompile Include="bbbank.cpp" />
|
||||
<ClCompile Include="bbblitz3d.cpp" />
|
||||
<ClCompile Include="bbfilesystem.cpp" />
|
||||
<ClCompile Include="bbgraphics.cpp" />
|
||||
<ClCompile Include="bbinput.cpp" />
|
||||
<ClCompile Include="bbmath.cpp" />
|
||||
<ClCompile Include="bbruntime.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbsockets.cpp" />
|
||||
<ClCompile Include="bbstream.cpp" />
|
||||
<ClCompile Include="bbstring.cpp" />
|
||||
<ClCompile Include="bbsys.cpp" />
|
||||
<ClCompile Include="multiplay.cpp" />
|
||||
<ClCompile Include="multiplay_setup.cpp" />
|
||||
<ClCompile Include="std.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="userlibs.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="multiplay_setup.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="basic.h" />
|
||||
<ClInclude Include="bbaudio.h" />
|
||||
<ClInclude Include="bbbank.h" />
|
||||
<ClInclude Include="bbblitz3d.h" />
|
||||
<ClInclude Include="bbfilesystem.h" />
|
||||
<ClInclude Include="bbgraphics.h" />
|
||||
<ClInclude Include="bbinput.h" />
|
||||
<ClInclude Include="bbmath.h" />
|
||||
<ClInclude Include="bbruntime.h" />
|
||||
<ClInclude Include="bbsockets.h" />
|
||||
<ClInclude Include="bbstream.h" />
|
||||
<ClInclude Include="bbstring.h" />
|
||||
<ClInclude Include="bbsys.h" />
|
||||
<ClInclude Include="multiplay.h" />
|
||||
<ClInclude Include="multiplay_setup.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="std.h" />
|
||||
<ClInclude Include="userlibs.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{2be14919-a9d3-4029-97d0-c02d529d1a8e}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{2a5eb825-a520-433a-88ff-a2f0408189ac}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="basic.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbaudio.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbbank.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbblitz3d.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbfilesystem.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbgraphics.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbinput.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbmath.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbruntime.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbsockets.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbstream.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbstring.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="bbsys.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="multiplay.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="multiplay_setup.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="std.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="userlibs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="multiplay_setup.rc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="basic.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbaudio.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbbank.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbblitz3d.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbfilesystem.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbgraphics.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbinput.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbmath.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbruntime.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbsockets.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbstream.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbstring.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="bbsys.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="multiplay.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="multiplay_setup.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="std.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="userlibs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
+264
-264
@@ -8,12 +8,12 @@ static int recv_timeout;
|
||||
static int read_timeout;
|
||||
static int accept_timeout;
|
||||
|
||||
static void close( SOCKET sock,int e ){
|
||||
if( e<0 ){
|
||||
int opt=1;
|
||||
setsockopt( sock,SOL_SOCKET,SO_DONTLINGER,(char*)&opt,sizeof(opt) );
|
||||
static void close(SOCKET sock, int e) {
|
||||
if (e < 0) {
|
||||
int opt = 1;
|
||||
setsockopt(sock, SOL_SOCKET, SO_DONTLINGER, (char*)&opt, sizeof(opt));
|
||||
}
|
||||
closesocket( sock );
|
||||
closesocket(sock);
|
||||
}
|
||||
|
||||
class UDPStream;
|
||||
@@ -24,18 +24,18 @@ static set<UDPStream*> udp_set;
|
||||
static set<TCPStream*> tcp_set;
|
||||
static set<TCPServer*> server_set;
|
||||
|
||||
class UDPStream : public bbStream{
|
||||
class UDPStream : public bbStream {
|
||||
public:
|
||||
UDPStream( SOCKET s );
|
||||
UDPStream(SOCKET s);
|
||||
~UDPStream();
|
||||
|
||||
int read( char *buff,int size );
|
||||
int write( const char *buff,int size );
|
||||
int read(char *buff, int size);
|
||||
int write(const char *buff, int size);
|
||||
int avail();
|
||||
int eof();
|
||||
|
||||
int recv();
|
||||
int send( int ip,int port );
|
||||
int send(int ip, int port);
|
||||
int getIP();
|
||||
int getPort();
|
||||
int getMsgIP();
|
||||
@@ -43,108 +43,108 @@ public:
|
||||
|
||||
private:
|
||||
SOCKET sock;
|
||||
vector<char> in_buf,out_buf;
|
||||
sockaddr_in addr,in_addr,out_addr;
|
||||
int in_get,e;
|
||||
vector<char> in_buf, out_buf;
|
||||
sockaddr_in addr, in_addr, out_addr;
|
||||
int in_get, e;
|
||||
};
|
||||
|
||||
UDPStream::UDPStream( SOCKET s ):sock(s),in_get(0),e(0){
|
||||
int len=sizeof(addr);
|
||||
getsockname( s,(sockaddr*)&addr,&len );
|
||||
in_addr=out_addr=addr;
|
||||
UDPStream::UDPStream(SOCKET s) :sock(s), in_get(0), e(0) {
|
||||
int len = sizeof(addr);
|
||||
getsockname(s, (sockaddr*)&addr, &len);
|
||||
in_addr = out_addr = addr;
|
||||
}
|
||||
|
||||
UDPStream::~UDPStream(){
|
||||
close( sock,e );
|
||||
UDPStream::~UDPStream() {
|
||||
close(sock, e);
|
||||
}
|
||||
|
||||
int UDPStream::read( char *buff,int size ){
|
||||
if( e ) return 0;
|
||||
int n=in_buf.size()-in_get;
|
||||
if( n<size ) size=n;
|
||||
memcpy( buff,&in_buf[in_get],size );
|
||||
in_get+=size;
|
||||
int UDPStream::read(char *buff, int size) {
|
||||
if (e) return 0;
|
||||
int n = in_buf.size() - in_get;
|
||||
if (n < size) size = n;
|
||||
memcpy(buff, &in_buf[in_get], size);
|
||||
in_get += size;
|
||||
return size;
|
||||
}
|
||||
|
||||
int UDPStream::write( const char *buff,int size ){
|
||||
if( e ) return 0;
|
||||
out_buf.insert( out_buf.end(),buff,buff+size );
|
||||
int UDPStream::write(const char *buff, int size) {
|
||||
if (e) return 0;
|
||||
out_buf.insert(out_buf.end(), buff, buff + size);
|
||||
return size;
|
||||
}
|
||||
|
||||
int UDPStream::avail(){
|
||||
if( e ) return 0;
|
||||
return in_buf.size()-in_get;
|
||||
int UDPStream::avail() {
|
||||
if (e) return 0;
|
||||
return in_buf.size() - in_get;
|
||||
}
|
||||
|
||||
int UDPStream::eof(){
|
||||
return e ? e : in_get==in_buf.size();
|
||||
int UDPStream::eof() {
|
||||
return e ? e : in_get == in_buf.size();
|
||||
}
|
||||
|
||||
//fill buffer, return sender
|
||||
int UDPStream::recv(){
|
||||
if( e ) return 0;
|
||||
int UDPStream::recv() {
|
||||
if (e) return 0;
|
||||
int tout;
|
||||
if( recv_timeout ) tout=gx_runtime->getMilliSecs()+recv_timeout;
|
||||
for(;;){
|
||||
int dt=0;
|
||||
if( recv_timeout ){
|
||||
dt=tout-gx_runtime->getMilliSecs();
|
||||
if( dt<0 ) dt=0;
|
||||
if (recv_timeout) tout = gx_runtime->getMilliSecs() + recv_timeout;
|
||||
for (;;) {
|
||||
int dt = 0;
|
||||
if (recv_timeout) {
|
||||
dt = tout - gx_runtime->getMilliSecs();
|
||||
if (dt < 0) dt = 0;
|
||||
}
|
||||
fd_set fd={ 1,sock };
|
||||
timeval tv={ dt/1000,(dt%1000)*1000 };
|
||||
int n=::select( 0,&fd,0,0,&tv );
|
||||
if( !n ) return 0;
|
||||
if( n!=1 ){ e=-1;return 0; }
|
||||
unsigned long sz=-1;
|
||||
if( ioctlsocket( sock,FIONREAD,&sz ) ){ e=-1;return 0; }
|
||||
in_buf.resize( sz );in_get=0;
|
||||
int len=sizeof(in_addr);
|
||||
n=::recvfrom( sock,in_buf.begin(),sz,0,(sockaddr*)&in_addr,&len );
|
||||
if( n==SOCKET_ERROR ) continue; //{ e=-1;return 0; }
|
||||
in_buf.resize( n );
|
||||
fd_set fd = { 1,sock };
|
||||
timeval tv = { dt / 1000,(dt % 1000) * 1000 };
|
||||
int n = ::select(0, &fd, 0, 0, &tv);
|
||||
if (!n) return 0;
|
||||
if (n != 1) { e = -1; return 0; }
|
||||
unsigned long sz = -1;
|
||||
if (ioctlsocket(sock, FIONREAD, &sz)) { e = -1; return 0; }
|
||||
in_buf.resize(sz); in_get = 0;
|
||||
int len = sizeof(in_addr);
|
||||
n = ::recvfrom(sock, &(in_buf.begin())[0], sz, 0, (sockaddr*)&in_addr, &len);
|
||||
if (n == SOCKET_ERROR) continue; //{ e=-1;return 0; }
|
||||
in_buf.resize(n);
|
||||
return getMsgIP();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
//send, empty buffer
|
||||
int UDPStream::send( int ip,int port ){
|
||||
if( e ) return 0;
|
||||
int sz=out_buf.size();
|
||||
out_addr.sin_addr.S_un.S_addr=htonl( ip );
|
||||
out_addr.sin_port=htons( port ? port : addr.sin_port );
|
||||
int n=::sendto( sock,out_buf.begin(),sz,0,(sockaddr*)&out_addr,sizeof(out_addr) );
|
||||
if( n!=sz ) return e=-1;
|
||||
int UDPStream::send(int ip, int port) {
|
||||
if (e) return 0;
|
||||
int sz = out_buf.size();
|
||||
out_addr.sin_addr.S_un.S_addr = htonl(ip);
|
||||
out_addr.sin_port = htons(port ? port : addr.sin_port);
|
||||
int n = ::sendto(sock, &(out_buf.begin())[0], sz, 0, (sockaddr*)&out_addr, sizeof(out_addr));
|
||||
if (n != sz) return e = -1;
|
||||
out_buf.clear();
|
||||
return sz;
|
||||
}
|
||||
|
||||
int UDPStream::getIP(){
|
||||
return ntohl( addr.sin_addr.S_un.S_addr );
|
||||
int UDPStream::getIP() {
|
||||
return ntohl(addr.sin_addr.S_un.S_addr);
|
||||
}
|
||||
|
||||
int UDPStream::getPort(){
|
||||
return ntohs( addr.sin_port );
|
||||
int UDPStream::getPort() {
|
||||
return ntohs(addr.sin_port);
|
||||
}
|
||||
|
||||
int UDPStream::getMsgIP(){
|
||||
return ntohl( in_addr.sin_addr.S_un.S_addr );
|
||||
int UDPStream::getMsgIP() {
|
||||
return ntohl(in_addr.sin_addr.S_un.S_addr);
|
||||
}
|
||||
|
||||
int UDPStream::getMsgPort(){
|
||||
return ntohs( in_addr.sin_port );
|
||||
int UDPStream::getMsgPort() {
|
||||
return ntohs(in_addr.sin_port);
|
||||
}
|
||||
|
||||
class TCPStream : public bbStream{
|
||||
class TCPStream : public bbStream {
|
||||
public:
|
||||
TCPStream( SOCKET s,TCPServer *t );
|
||||
TCPStream(SOCKET s, TCPServer *t);
|
||||
~TCPStream();
|
||||
|
||||
int read( char *buff,int size );
|
||||
int write( const char *buff,int size );
|
||||
int read(char *buff, int size);
|
||||
int write(const char *buff, int size);
|
||||
int avail();
|
||||
int eof();
|
||||
|
||||
@@ -154,17 +154,17 @@ public:
|
||||
private:
|
||||
SOCKET sock;
|
||||
TCPServer *server;
|
||||
int e,ip,port;
|
||||
int e, ip, port;
|
||||
};
|
||||
|
||||
class TCPServer{
|
||||
class TCPServer {
|
||||
public:
|
||||
TCPServer( SOCKET S );
|
||||
TCPServer(SOCKET S);
|
||||
~TCPServer();
|
||||
|
||||
TCPStream *accept();
|
||||
|
||||
void remove( TCPStream *s );
|
||||
void remove(TCPStream *s);
|
||||
|
||||
private:
|
||||
int e;
|
||||
@@ -172,258 +172,258 @@ private:
|
||||
set<TCPStream*> accepted_set;
|
||||
};
|
||||
|
||||
TCPStream::TCPStream( SOCKET s,TCPServer *t ):sock(s),server(t),e(0){
|
||||
TCPStream::TCPStream(SOCKET s, TCPServer *t) :sock(s), server(t), e(0) {
|
||||
sockaddr_in addr;
|
||||
int len=sizeof(addr);
|
||||
if( getpeername( s,(sockaddr*)&addr,&len ) ){
|
||||
ip=port=0;
|
||||
int len = sizeof(addr);
|
||||
if (getpeername(s, (sockaddr*)&addr, &len)) {
|
||||
ip = port = 0;
|
||||
return;
|
||||
}
|
||||
ip=ntohl(addr.sin_addr.S_un.S_addr);
|
||||
port=ntohs(addr.sin_port);
|
||||
ip = ntohl(addr.sin_addr.S_un.S_addr);
|
||||
port = ntohs(addr.sin_port);
|
||||
}
|
||||
|
||||
TCPStream::~TCPStream(){
|
||||
if( server ) server->remove( this );
|
||||
close( sock,e );
|
||||
TCPStream::~TCPStream() {
|
||||
if (server) server->remove(this);
|
||||
close(sock, e);
|
||||
}
|
||||
|
||||
int TCPStream::read( char *buff,int size ){
|
||||
if( e ) return 0;
|
||||
char *b=buff,*l=buff+size;
|
||||
int TCPStream::read(char *buff, int size) {
|
||||
if (e) return 0;
|
||||
char *b = buff, *l = buff + size;
|
||||
int tout;
|
||||
if( read_timeout ) tout=gx_runtime->getMilliSecs()+read_timeout;
|
||||
while( b<l ){
|
||||
int dt=0;
|
||||
if( read_timeout ){
|
||||
dt=tout-gx_runtime->getMilliSecs();
|
||||
if( dt<0 ) dt=0;
|
||||
if (read_timeout) tout = gx_runtime->getMilliSecs() + read_timeout;
|
||||
while (b < l) {
|
||||
int dt = 0;
|
||||
if (read_timeout) {
|
||||
dt = tout - gx_runtime->getMilliSecs();
|
||||
if (dt < 0) dt = 0;
|
||||
}
|
||||
fd_set fd={ 1,sock };
|
||||
timeval tv={ dt/1000,(dt%1000)*1000 };
|
||||
int n=::select( 0,&fd,0,0,&tv );
|
||||
if( n!=1 ){ e=-1;break; }
|
||||
n=::recv( sock,b,l-b,0 );
|
||||
if( n==0 ){ e=1;break; }
|
||||
if( n==SOCKET_ERROR ){ e=-1;break; }
|
||||
b+=n;
|
||||
fd_set fd = { 1,sock };
|
||||
timeval tv = { dt / 1000,(dt % 1000) * 1000 };
|
||||
int n = ::select(0, &fd, 0, 0, &tv);
|
||||
if (n != 1) { e = -1; break; }
|
||||
n = ::recv(sock, b, l - b, 0);
|
||||
if (n == 0) { e = 1; break; }
|
||||
if (n == SOCKET_ERROR) { e = -1; break; }
|
||||
b += n;
|
||||
}
|
||||
return b-buff;
|
||||
return b - buff;
|
||||
}
|
||||
|
||||
int TCPStream::write( const char *buff,int size ){
|
||||
if( e ) return 0;
|
||||
int n=::send( sock,buff,size,0 );
|
||||
if( n==SOCKET_ERROR ){ e=-1;return 0; }
|
||||
int TCPStream::write(const char *buff, int size) {
|
||||
if (e) return 0;
|
||||
int n = ::send(sock, buff, size, 0);
|
||||
if (n == SOCKET_ERROR) { e = -1; return 0; }
|
||||
return n;
|
||||
}
|
||||
|
||||
int TCPStream::avail(){
|
||||
int TCPStream::avail() {
|
||||
unsigned long t;
|
||||
int n=::ioctlsocket( sock,FIONREAD,&t );
|
||||
if( n==SOCKET_ERROR ){ e=-1;return 0; }
|
||||
int n = ::ioctlsocket(sock, FIONREAD, &t);
|
||||
if (n == SOCKET_ERROR) { e = -1; return 0; }
|
||||
return t;
|
||||
}
|
||||
|
||||
int TCPStream::eof(){
|
||||
if( e ) return e;
|
||||
fd_set fd={ 1,sock };
|
||||
timeval tv={ 0,0 };
|
||||
switch( ::select( 0,&fd,0,0,&tv ) ){
|
||||
int TCPStream::eof() {
|
||||
if (e) return e;
|
||||
fd_set fd = { 1,sock };
|
||||
timeval tv = { 0,0 };
|
||||
switch (::select(0, &fd, 0, 0, &tv)) {
|
||||
case 0:break;
|
||||
case 1:if( !avail() ) e=1;break;
|
||||
default:e=-1;
|
||||
case 1:if (!avail()) e = 1; break;
|
||||
default:e = -1;
|
||||
}
|
||||
return e;
|
||||
}
|
||||
|
||||
int TCPStream::getIP(){
|
||||
int TCPStream::getIP() {
|
||||
return ip;
|
||||
}
|
||||
|
||||
int TCPStream::getPort(){
|
||||
int TCPStream::getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
TCPServer::TCPServer( SOCKET s ):sock(s),e(0){
|
||||
TCPServer::TCPServer(SOCKET s) :sock(s), e(0) {
|
||||
}
|
||||
|
||||
TCPServer::~TCPServer(){
|
||||
while( accepted_set.size() ) delete *accepted_set.begin();
|
||||
close( sock,e );
|
||||
TCPServer::~TCPServer() {
|
||||
while (accepted_set.size()) delete *accepted_set.begin();
|
||||
close(sock, e);
|
||||
}
|
||||
|
||||
TCPStream *TCPServer::accept(){
|
||||
if( e ) return 0;
|
||||
fd_set fd={ 1,sock };
|
||||
timeval tv={ accept_timeout/1000,(accept_timeout%1000)*1000 };
|
||||
int n=::select( 0,&fd,0,0,&tv );
|
||||
if( n==0 ) return 0;
|
||||
if( n!=1 ){ e=-1;return 0; }
|
||||
SOCKET t=::accept( sock,0,0 );
|
||||
if( t==INVALID_SOCKET ){ e=-1;return 0; }
|
||||
TCPStream *s=d_new TCPStream( t,this );
|
||||
accepted_set.insert( s );
|
||||
TCPStream *TCPServer::accept() {
|
||||
if (e) return 0;
|
||||
fd_set fd = { 1,sock };
|
||||
timeval tv = { accept_timeout / 1000,(accept_timeout % 1000) * 1000 };
|
||||
int n = ::select(0, &fd, 0, 0, &tv);
|
||||
if (n == 0) return 0;
|
||||
if (n != 1) { e = -1; return 0; }
|
||||
SOCKET t = ::accept(sock, 0, 0);
|
||||
if (t == INVALID_SOCKET) { e = -1; return 0; }
|
||||
TCPStream *s = d_new TCPStream(t, this);
|
||||
accepted_set.insert(s);
|
||||
return s;
|
||||
}
|
||||
|
||||
void TCPServer::remove( TCPStream *s ){
|
||||
accepted_set.erase( s );
|
||||
void TCPServer::remove(TCPStream *s) {
|
||||
accepted_set.erase(s);
|
||||
}
|
||||
|
||||
static inline void debugUDPStream( UDPStream *p ){
|
||||
if( debug && !udp_set.count(p) ){
|
||||
RTEX( "UDP Stream does not exist" );
|
||||
static inline void debugUDPStream(UDPStream *p) {
|
||||
if (debug && !udp_set.count(p)) {
|
||||
RTEX("UDP Stream does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
static inline void debugTCPStream( TCPStream *p ){
|
||||
if( debug && !tcp_set.count(p) ){
|
||||
RTEX( "TCP Stream does not exist" );
|
||||
static inline void debugTCPStream(TCPStream *p) {
|
||||
if (debug && !tcp_set.count(p)) {
|
||||
RTEX("TCP Stream does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
static inline void debugTCPServer( TCPServer *p ){
|
||||
if( debug && !server_set.count(p) ){
|
||||
RTEX( "TCP Server does not exist" );
|
||||
static inline void debugTCPServer(TCPServer *p) {
|
||||
if (debug && !server_set.count(p)) {
|
||||
RTEX("TCP Server does not exist");
|
||||
}
|
||||
}
|
||||
|
||||
static vector<int> host_ips;
|
||||
|
||||
int bbCountHostIPs( BBStr *host ){
|
||||
int bbCountHostIPs(BBStr *host) {
|
||||
host_ips.clear();
|
||||
HOSTENT *h=gethostbyname( host->c_str() );
|
||||
delete host;if( !h ) return 0;
|
||||
char **p=h->h_addr_list;
|
||||
while( char *t=*p++ ) host_ips.push_back( ntohl(*(int*)t) );
|
||||
HOSTENT *h = gethostbyname(host->c_str());
|
||||
delete host; if (!h) return 0;
|
||||
char **p = h->h_addr_list;
|
||||
while (char *t = *p++) host_ips.push_back(ntohl(*(int*)t));
|
||||
return host_ips.size();
|
||||
}
|
||||
|
||||
int bbHostIP( int index ){
|
||||
if( debug ){
|
||||
if( index<1 || index>host_ips.size() ){
|
||||
RTEX( "Host index out of range" );
|
||||
int bbHostIP(int index) {
|
||||
if (debug) {
|
||||
if (index<1 || index>host_ips.size()) {
|
||||
RTEX("Host index out of range");
|
||||
}
|
||||
}
|
||||
return host_ips[index-1];
|
||||
return host_ips[index - 1];
|
||||
}
|
||||
|
||||
UDPStream *bbCreateUDPStream( int port ){
|
||||
if( !socks_ok ) return 0;
|
||||
SOCKET s=::socket( AF_INET,SOCK_DGRAM,0 );
|
||||
if( s!=INVALID_SOCKET ){
|
||||
sockaddr_in addr={AF_INET,htons(port)};
|
||||
if( !::bind( s,(sockaddr*)&addr,sizeof(addr) ) ){
|
||||
UDPStream *p=d_new UDPStream( s );
|
||||
udp_set.insert( p );
|
||||
UDPStream *bbCreateUDPStream(int port) {
|
||||
if (!socks_ok) return 0;
|
||||
SOCKET s = ::socket(AF_INET, SOCK_DGRAM, 0);
|
||||
if (s != INVALID_SOCKET) {
|
||||
sockaddr_in addr = { AF_INET,htons(port) };
|
||||
if (!::bind(s, (sockaddr*)&addr, sizeof(addr))) {
|
||||
UDPStream *p = d_new UDPStream(s);
|
||||
udp_set.insert(p);
|
||||
return p;
|
||||
}
|
||||
::closesocket( s );
|
||||
::closesocket(s);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bbCloseUDPStream( UDPStream *p ){
|
||||
debugUDPStream( p );
|
||||
udp_set.erase( p );
|
||||
void bbCloseUDPStream(UDPStream *p) {
|
||||
debugUDPStream(p);
|
||||
udp_set.erase(p);
|
||||
delete p;
|
||||
}
|
||||
|
||||
int bbRecvUDPMsg( UDPStream *p ){
|
||||
debugUDPStream( p );
|
||||
int bbRecvUDPMsg(UDPStream *p) {
|
||||
debugUDPStream(p);
|
||||
return p->recv();
|
||||
}
|
||||
|
||||
void bbSendUDPMsg( UDPStream *p,int ip,int port ){
|
||||
debugUDPStream( p );
|
||||
p->send( ip,port );
|
||||
void bbSendUDPMsg(UDPStream *p, int ip, int port) {
|
||||
debugUDPStream(p);
|
||||
p->send(ip, port);
|
||||
}
|
||||
|
||||
int bbUDPStreamIP( UDPStream *p ){
|
||||
debugUDPStream( p );
|
||||
int bbUDPStreamIP(UDPStream *p) {
|
||||
debugUDPStream(p);
|
||||
return p->getIP();
|
||||
}
|
||||
|
||||
int bbUDPStreamPort( UDPStream *p ){
|
||||
debugUDPStream( p );
|
||||
int bbUDPStreamPort(UDPStream *p) {
|
||||
debugUDPStream(p);
|
||||
return p->getPort();
|
||||
}
|
||||
|
||||
int bbUDPMsgIP( UDPStream *p ){
|
||||
debugUDPStream( p );
|
||||
int bbUDPMsgIP(UDPStream *p) {
|
||||
debugUDPStream(p);
|
||||
return p->getMsgIP();
|
||||
}
|
||||
|
||||
int bbUDPMsgPort( UDPStream *p ){
|
||||
debugUDPStream( p );
|
||||
int bbUDPMsgPort(UDPStream *p) {
|
||||
debugUDPStream(p);
|
||||
return p->getMsgPort();
|
||||
}
|
||||
|
||||
void bbUDPTimeouts( int rt ){
|
||||
recv_timeout=rt;
|
||||
void bbUDPTimeouts(int rt) {
|
||||
recv_timeout = rt;
|
||||
}
|
||||
|
||||
BBStr *bbDottedIP( int ip ){
|
||||
BBStr *bbDottedIP(int ip) {
|
||||
return d_new BBStr(
|
||||
itoa((ip>>24)&255)+"."+itoa((ip>>16)&255)+"."+
|
||||
itoa((ip>>8)&255)+"."+itoa(ip&255) );
|
||||
itoa((ip >> 24) & 255) + "." + itoa((ip >> 16) & 255) + "." +
|
||||
itoa((ip >> 8) & 255) + "." + itoa(ip & 255));
|
||||
}
|
||||
|
||||
static int findHostIP( const string &t ){
|
||||
int ip=inet_addr( t.c_str() );
|
||||
if( ip!=INADDR_NONE ) return ip;
|
||||
HOSTENT *h=gethostbyname( t.c_str() );
|
||||
if( !h ) return -1;
|
||||
static int findHostIP(const string &t) {
|
||||
int ip = inet_addr(t.c_str());
|
||||
if (ip != INADDR_NONE) return ip;
|
||||
HOSTENT *h = gethostbyname(t.c_str());
|
||||
if (!h) return -1;
|
||||
char *p;
|
||||
for( char **list=h->h_addr_list;p=*list;++list ){
|
||||
for (char **list = h->h_addr_list; p = *list; ++list) {
|
||||
return *(int*)p;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
TCPStream *bbOpenTCPStream( BBStr *server,int port,int local_port ){
|
||||
if( !socks_ok ){
|
||||
TCPStream *bbOpenTCPStream(BBStr *server, int port, int local_port) {
|
||||
if (!socks_ok) {
|
||||
delete server;
|
||||
return 0;
|
||||
}
|
||||
int ip=findHostIP( *server );delete server;
|
||||
if( ip==-1 ) return 0;
|
||||
SOCKET s=::socket( AF_INET,SOCK_STREAM,0 );
|
||||
if( s!=INVALID_SOCKET ){
|
||||
if( local_port ){
|
||||
sockaddr_in addr={AF_INET,htons(local_port)};
|
||||
if( ::bind( s,(sockaddr*)&addr,sizeof(addr) ) ){
|
||||
::closesocket( s );
|
||||
int ip = findHostIP(*server); delete server;
|
||||
if (ip == -1) return 0;
|
||||
SOCKET s = ::socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (s != INVALID_SOCKET) {
|
||||
if (local_port) {
|
||||
sockaddr_in addr = { AF_INET,htons(local_port) };
|
||||
if (::bind(s, (sockaddr*)&addr, sizeof(addr))) {
|
||||
::closesocket(s);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
sockaddr_in addr={AF_INET,htons(port)};
|
||||
addr.sin_addr.S_un.S_addr=ip;
|
||||
if( !::connect( s,(sockaddr*)&addr,sizeof(addr) ) ){
|
||||
TCPStream *p=d_new TCPStream( s,0 );
|
||||
tcp_set.insert( p );
|
||||
sockaddr_in addr = { AF_INET,htons(port) };
|
||||
addr.sin_addr.S_un.S_addr = ip;
|
||||
if (!::connect(s, (sockaddr*)&addr, sizeof(addr))) {
|
||||
TCPStream *p = d_new TCPStream(s, 0);
|
||||
tcp_set.insert(p);
|
||||
return p;
|
||||
}
|
||||
::closesocket( s );
|
||||
::closesocket(s);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bbCloseTCPStream( TCPStream *p ){
|
||||
debugTCPStream( p );
|
||||
tcp_set.erase( p );
|
||||
void bbCloseTCPStream(TCPStream *p) {
|
||||
debugTCPStream(p);
|
||||
tcp_set.erase(p);
|
||||
delete p;
|
||||
}
|
||||
|
||||
TCPServer * bbCreateTCPServer( int port ){
|
||||
SOCKET s=::socket( AF_INET,SOCK_STREAM,0 );
|
||||
if( s!=INVALID_SOCKET ){
|
||||
sockaddr_in addr={AF_INET,htons(port)};
|
||||
if( !::bind( s,(sockaddr*)&addr,sizeof(addr) ) ){
|
||||
if( !::listen( s,SOMAXCONN ) ){
|
||||
TCPServer *p=d_new TCPServer( s );
|
||||
server_set.insert( p );
|
||||
TCPServer * bbCreateTCPServer(int port) {
|
||||
SOCKET s = ::socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (s != INVALID_SOCKET) {
|
||||
sockaddr_in addr = { AF_INET,htons(port) };
|
||||
if (!::bind(s, (sockaddr*)&addr, sizeof(addr))) {
|
||||
if (!::listen(s, SOMAXCONN)) {
|
||||
TCPServer *p = d_new TCPServer(s);
|
||||
server_set.insert(p);
|
||||
return p;
|
||||
}
|
||||
}
|
||||
@@ -432,74 +432,74 @@ TCPServer * bbCreateTCPServer( int port ){
|
||||
return 0;
|
||||
}
|
||||
|
||||
void bbCloseTCPServer( TCPServer *p ){
|
||||
debugTCPServer( p );
|
||||
server_set.erase( p );
|
||||
void bbCloseTCPServer(TCPServer *p) {
|
||||
debugTCPServer(p);
|
||||
server_set.erase(p);
|
||||
delete p;
|
||||
}
|
||||
|
||||
TCPStream * bbAcceptTCPStream( TCPServer *server ){
|
||||
debugTCPServer( server );
|
||||
if( !gx_runtime->idle() ) RTEX( 0 );
|
||||
if( TCPStream *tcp=server->accept() ){
|
||||
tcp_set.insert( tcp );
|
||||
TCPStream * bbAcceptTCPStream(TCPServer *server) {
|
||||
debugTCPServer(server);
|
||||
if (!gx_runtime->idle()) RTEX(0);
|
||||
if (TCPStream *tcp = server->accept()) {
|
||||
tcp_set.insert(tcp);
|
||||
return tcp;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bbTCPStreamIP( TCPStream *p ){
|
||||
debugTCPStream( p );
|
||||
int bbTCPStreamIP(TCPStream *p) {
|
||||
debugTCPStream(p);
|
||||
return p->getIP();
|
||||
}
|
||||
|
||||
int bbTCPStreamPort( TCPStream *p ){
|
||||
debugTCPStream( p );
|
||||
int bbTCPStreamPort(TCPStream *p) {
|
||||
debugTCPStream(p);
|
||||
return p->getPort();
|
||||
}
|
||||
|
||||
void bbTCPTimeouts( int rt,int at ){
|
||||
read_timeout=rt;
|
||||
accept_timeout=at;
|
||||
void bbTCPTimeouts(int rt, int at) {
|
||||
read_timeout = rt;
|
||||
accept_timeout = at;
|
||||
}
|
||||
|
||||
bool sockets_create(){
|
||||
socks_ok=WSAStartup( 0x0101,&wsadata )==0;
|
||||
recv_timeout=0;
|
||||
read_timeout=10000;
|
||||
accept_timeout=0;
|
||||
bool sockets_create() {
|
||||
socks_ok = WSAStartup(0x0101, &wsadata) == 0;
|
||||
recv_timeout = 0;
|
||||
read_timeout = 10000;
|
||||
accept_timeout = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool sockets_destroy(){
|
||||
while( udp_set.size() ) bbCloseUDPStream( *udp_set.begin() );
|
||||
while( tcp_set.size() ) bbCloseTCPStream( *tcp_set.begin() );
|
||||
while( server_set.size() ) bbCloseTCPServer( *server_set.begin() );
|
||||
if( socks_ok ) WSACleanup();
|
||||
bool sockets_destroy() {
|
||||
while (udp_set.size()) bbCloseUDPStream(*udp_set.begin());
|
||||
while (tcp_set.size()) bbCloseTCPStream(*tcp_set.begin());
|
||||
while (server_set.size()) bbCloseTCPServer(*server_set.begin());
|
||||
if (socks_ok) WSACleanup();
|
||||
return true;
|
||||
}
|
||||
|
||||
void sockets_link( void(*rtSym)(const char*,void*) ){
|
||||
rtSym( "$DottedIP%IP",bbDottedIP );
|
||||
rtSym( "%CountHostIPs$host_name",bbCountHostIPs );
|
||||
rtSym( "%HostIP%host_index",bbHostIP );
|
||||
void sockets_link(void(*rtSym)(const char*, void*)) {
|
||||
rtSym("$DottedIP%IP", bbDottedIP);
|
||||
rtSym("%CountHostIPs$host_name", bbCountHostIPs);
|
||||
rtSym("%HostIP%host_index", bbHostIP);
|
||||
|
||||
rtSym( "%CreateUDPStream%port=0",bbCreateUDPStream );
|
||||
rtSym( "CloseUDPStream%udp_stream",bbCloseUDPStream );
|
||||
rtSym( "SendUDPMsg%udp_stream%dest_ip%dest_port=0",bbSendUDPMsg );
|
||||
rtSym( "%RecvUDPMsg%udp_stream",bbRecvUDPMsg );
|
||||
rtSym( "%UDPStreamIP%udp_stream",bbUDPStreamIP );
|
||||
rtSym( "%UDPStreamPort%udp_stream",bbUDPStreamPort );
|
||||
rtSym( "%UDPMsgIP%udp_stream",bbUDPMsgIP );
|
||||
rtSym( "%UDPMsgPort%udp_stream",bbUDPMsgPort );
|
||||
rtSym( "UDPTimeouts%recv_timeout",bbUDPTimeouts );
|
||||
rtSym("%CreateUDPStream%port=0", bbCreateUDPStream);
|
||||
rtSym("CloseUDPStream%udp_stream", bbCloseUDPStream);
|
||||
rtSym("SendUDPMsg%udp_stream%dest_ip%dest_port=0", bbSendUDPMsg);
|
||||
rtSym("%RecvUDPMsg%udp_stream", bbRecvUDPMsg);
|
||||
rtSym("%UDPStreamIP%udp_stream", bbUDPStreamIP);
|
||||
rtSym("%UDPStreamPort%udp_stream", bbUDPStreamPort);
|
||||
rtSym("%UDPMsgIP%udp_stream", bbUDPMsgIP);
|
||||
rtSym("%UDPMsgPort%udp_stream", bbUDPMsgPort);
|
||||
rtSym("UDPTimeouts%recv_timeout", bbUDPTimeouts);
|
||||
|
||||
rtSym( "%OpenTCPStream$server%server_port%local_port=0",bbOpenTCPStream );
|
||||
rtSym( "CloseTCPStream%tcp_stream",bbCloseTCPStream );
|
||||
rtSym( "%CreateTCPServer%port",bbCreateTCPServer );
|
||||
rtSym( "CloseTCPServer%tcp_server",bbCloseTCPServer );
|
||||
rtSym( "%AcceptTCPStream%tcp_server",bbAcceptTCPStream );
|
||||
rtSym( "%TCPStreamIP%tcp_stream",bbTCPStreamIP );
|
||||
rtSym( "%TCPStreamPort%tcp_stream",bbTCPStreamPort );
|
||||
rtSym( "TCPTimeouts%read_millis%accept_millis",bbTCPTimeouts );
|
||||
rtSym("%OpenTCPStream$server%server_port%local_port=0", bbOpenTCPStream);
|
||||
rtSym("CloseTCPStream%tcp_stream", bbCloseTCPStream);
|
||||
rtSym("%CreateTCPServer%port", bbCreateTCPServer);
|
||||
rtSym("CloseTCPServer%tcp_server", bbCloseTCPServer);
|
||||
rtSym("%AcceptTCPStream%tcp_server", bbAcceptTCPStream);
|
||||
rtSym("%TCPStreamIP%tcp_stream", bbTCPStreamIP);
|
||||
rtSym("%TCPStreamPort%tcp_stream", bbTCPStreamPort);
|
||||
rtSym("TCPTimeouts%read_millis%accept_millis", bbTCPTimeouts);
|
||||
}
|
||||
|
||||
+298
-298
@@ -9,301 +9,301 @@
|
||||
#include "multiplay.h"
|
||||
#include "multiplay_setup.h"
|
||||
|
||||
struct Player;
|
||||
|
||||
static bool host;
|
||||
|
||||
static map<DPID,Player*> player_map;
|
||||
static list<Player*> players,new_players;
|
||||
|
||||
static int msg_type;
|
||||
static string msg_data;
|
||||
static DPID msg_from,msg_to;
|
||||
|
||||
static char *recv_buff;
|
||||
static int recv_buff_sz;
|
||||
|
||||
static char *send_buff;
|
||||
static int send_buff_sz;
|
||||
|
||||
#pragma pack( push,1 )
|
||||
struct bbMsg{
|
||||
DPID from,to;
|
||||
char type;
|
||||
};
|
||||
#pragma pack( pop )
|
||||
|
||||
struct Player{
|
||||
DPID id;
|
||||
string name;
|
||||
bool remote;
|
||||
|
||||
Player( DPID i,const string &n,bool r ):id(i),name(n),remote(r){
|
||||
players.push_back( this );
|
||||
if( remote ) new_players.push_back( this );
|
||||
player_map.clear();
|
||||
}
|
||||
|
||||
Player::~Player(){
|
||||
new_players.remove( this );
|
||||
players.remove( this );
|
||||
player_map.clear();
|
||||
}
|
||||
};
|
||||
|
||||
static void chk(){
|
||||
if( !dirPlay ){
|
||||
RTEX( "Multiplayer game not started" );
|
||||
}
|
||||
}
|
||||
|
||||
static void clearPlayers(){
|
||||
while( players.size() ) delete players.back();
|
||||
new_players.clear();
|
||||
player_map.clear();
|
||||
}
|
||||
|
||||
static Player *findPlayer( DPID id ){
|
||||
if( !player_map.size() ){
|
||||
list<Player*>::iterator it;
|
||||
for( it=players.begin();it!=players.end();++it ){
|
||||
player_map.insert( pair<DPID,Player*>( (*it)->id,(*it) ) );
|
||||
}
|
||||
}
|
||||
map<DPID,Player*>::iterator it=player_map.find( id );
|
||||
return it==player_map.end() ? 0 : it->second;
|
||||
}
|
||||
|
||||
static BOOL FAR PASCAL enumPlayer( DPID id,DWORD type,LPCDPNAME name,DWORD flags,LPVOID context ){
|
||||
Player *p=findPlayer( id );if( p ) return TRUE;
|
||||
p=d_new Player( id,string( name->lpszShortNameA ),true );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void multiplay_link( void(*rtSym)(const char*,void*) ){
|
||||
rtSym( "%StartNetGame",bbStartNetGame );
|
||||
rtSym( "%HostNetGame$game_name",bbHostNetGame );
|
||||
rtSym( "%JoinNetGame$game_name$ip_address",bbJoinNetGame );
|
||||
rtSym( "StopNetGame",bbStopNetGame );
|
||||
|
||||
rtSym( "%CreateNetPlayer$name",bbCreateNetPlayer );
|
||||
rtSym( "DeleteNetPlayer%player",bbDeleteNetPlayer );
|
||||
rtSym( "$NetPlayerName%player",bbNetPlayerName );
|
||||
rtSym( "%NetPlayerLocal%player",bbNetPlayerLocal );
|
||||
|
||||
rtSym( "%SendNetMsg%type$msg%from_player%to_player=0%reliable=1",bbSendNetMsg );
|
||||
|
||||
rtSym( "%RecvNetMsg",bbRecvNetMsg );
|
||||
rtSym( "%NetMsgType",bbNetMsgType );
|
||||
rtSym( "%NetMsgFrom",bbNetMsgFrom );
|
||||
rtSym( "%NetMsgTo",bbNetMsgTo );
|
||||
rtSym( "$NetMsgData",bbNetMsgData );
|
||||
}
|
||||
|
||||
bool multiplay_create(){
|
||||
|
||||
recv_buff_sz=send_buff_sz=1024;
|
||||
recv_buff=d_new char[recv_buff_sz];
|
||||
send_buff=d_new char[send_buff_sz];
|
||||
|
||||
multiplay_setup_create();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool multiplay_destroy(){
|
||||
|
||||
bbStopNetGame();
|
||||
|
||||
multiplay_setup_destroy();
|
||||
|
||||
delete[] recv_buff;recv_buff=0;
|
||||
delete[] send_buff;send_buff=0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static int startGame( int n ){
|
||||
clearPlayers();
|
||||
if( !n ) return 0;
|
||||
if( dirPlay->EnumPlayers( 0,enumPlayer,0,0 )>=0 ){
|
||||
host=n==2;
|
||||
return n;
|
||||
}
|
||||
multiplay_setup_close();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bbStartNetGame(){
|
||||
if( dirPlay ){
|
||||
RTEX( "Multiplayer game already started" );
|
||||
}
|
||||
return startGame( multiplay_setup_open() );
|
||||
}
|
||||
|
||||
int bbHostNetGame( BBStr *name ){
|
||||
if( dirPlay ){
|
||||
RTEX( "Multiplayer game already started" );
|
||||
}
|
||||
string n=*name;delete name;
|
||||
return startGame( multiplay_setup_host( n ) );
|
||||
}
|
||||
|
||||
int bbJoinNetGame( BBStr *name,BBStr *address ){
|
||||
if( dirPlay ){
|
||||
RTEX( "Multiplayer game already started" );
|
||||
}
|
||||
string n=*name,a=*address;delete name;delete address;
|
||||
return startGame( multiplay_setup_join( n,a ) );
|
||||
}
|
||||
|
||||
void bbStopNetGame(){
|
||||
multiplay_setup_close();
|
||||
clearPlayers();
|
||||
}
|
||||
|
||||
DPID bbCreateNetPlayer( BBStr *nm ){
|
||||
chk();
|
||||
|
||||
string t=*nm;
|
||||
string t0=t+'\0';
|
||||
delete nm;
|
||||
|
||||
DPID id;
|
||||
DPNAME name;
|
||||
memset( &name,0,sizeof( name ) );
|
||||
name.dwSize=sizeof(name);name.lpszShortNameA=(char*)t0.data();
|
||||
|
||||
if( dirPlay->CreatePlayer( &id,&name,0,0,0,0 )<0 ) return 0;
|
||||
|
||||
Player *p=d_new Player( id,t,false );
|
||||
|
||||
if( players.size()==1 ){
|
||||
if( dirPlay->EnumPlayers( 0,enumPlayer,0,0 )<0 ){
|
||||
dirPlay->DestroyPlayer( id );
|
||||
delete p;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
void bbDeleteNetPlayer( DPID player ){
|
||||
chk();
|
||||
|
||||
if( Player *p=findPlayer( player ) ){
|
||||
dirPlay->DestroyPlayer( player );
|
||||
delete p;
|
||||
}
|
||||
}
|
||||
|
||||
BBStr *bbNetPlayerName( DPID player ){
|
||||
if( !player ) return d_new BBStr( "<all>" );
|
||||
Player *p=findPlayer( player );
|
||||
return d_new BBStr( p ? p->name : "<unknown>" );
|
||||
}
|
||||
|
||||
int bbNetPlayerLocal( DPID player ){
|
||||
if( Player *p=findPlayer( player ) ) return p->remote ? 0 : 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int bbRecvNetMsg(){
|
||||
chk();
|
||||
|
||||
msg_type=0;
|
||||
msg_data.resize(0);
|
||||
msg_from=DPID_UNKNOWN;msg_to=DPID_ALLPLAYERS;
|
||||
|
||||
while( !msg_type ){
|
||||
|
||||
if( new_players.size() ){
|
||||
msg_from=new_players.front()->id;
|
||||
new_players.pop_front();
|
||||
msg_type=100;
|
||||
return 1;
|
||||
}
|
||||
|
||||
DPID from,to;
|
||||
DWORD sz=recv_buff_sz;
|
||||
int n=dirPlay->Receive( &from,&to,0,recv_buff,&sz );
|
||||
|
||||
if( n==DPERR_BUFFERTOOSMALL ){
|
||||
sz=recv_buff_sz=sz/2+sz;
|
||||
delete[] recv_buff;recv_buff=d_new char[recv_buff_sz];
|
||||
n=dirPlay->Receive( &from,&to,0,recv_buff,&sz );
|
||||
}
|
||||
|
||||
if( n!=DP_OK ) return 0;
|
||||
|
||||
if( from==DPID_SYSMSG ){
|
||||
switch( *(DWORD*)recv_buff ){
|
||||
case DPSYS_CREATEPLAYERORGROUP:
|
||||
if( DPMSG_CREATEPLAYERORGROUP *msg=(DPMSG_CREATEPLAYERORGROUP*)recv_buff ){
|
||||
if( findPlayer( from=msg->dpId ) ) continue;
|
||||
d_new Player( from,string( msg->dpnName.lpszShortNameA ),true );
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
case DPSYS_DESTROYPLAYERORGROUP:
|
||||
if( DPMSG_DESTROYPLAYERORGROUP *msg=(DPMSG_DESTROYPLAYERORGROUP*)recv_buff ){
|
||||
Player *p=findPlayer( msg->dpId );if( !p ) continue;
|
||||
delete p;msg_from=msg->dpId;msg_type=101;
|
||||
}
|
||||
break;
|
||||
case DPSYS_HOST:
|
||||
if( !host ){
|
||||
host=true;msg_type=102;
|
||||
}
|
||||
break;
|
||||
case DPSYS_SESSIONLOST:
|
||||
msg_type=200;
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
bbMsg *m=(bbMsg*)recv_buff;
|
||||
Player *p=findPlayer( m->from );
|
||||
if( p && !p->remote ) continue;
|
||||
msg_data=string( (char*)(m+1),sz-sizeof(bbMsg) );
|
||||
msg_from=m->from;msg_to=m->to;
|
||||
msg_type=m->type;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int bbNetMsgType(){
|
||||
return msg_type;
|
||||
}
|
||||
|
||||
BBStr *bbNetMsgData(){
|
||||
return d_new BBStr( msg_data );
|
||||
}
|
||||
|
||||
DPID bbNetMsgFrom(){
|
||||
return msg_from;
|
||||
}
|
||||
|
||||
DPID bbNetMsgTo(){
|
||||
return msg_to;
|
||||
}
|
||||
|
||||
int bbSendNetMsg( int type,BBStr *msg,DPID from,DPID to,int reliable ){
|
||||
chk();
|
||||
|
||||
int sz=msg->size()+sizeof(bbMsg);
|
||||
if( sz>send_buff_sz ){
|
||||
send_buff_sz=sz/2+sz;
|
||||
delete send_buff;send_buff=d_new char[send_buff_sz];
|
||||
}
|
||||
bbMsg *m=(bbMsg*)send_buff;
|
||||
m->type=type;m->from=from;m->to=to;
|
||||
|
||||
memcpy( m+1,msg->data(),msg->size() );
|
||||
|
||||
if( !to ) to=DPID_ALLPLAYERS;
|
||||
int n=dirPlay->Send( from,to,reliable ? DPSEND_GUARANTEED : 0,send_buff,sz );
|
||||
delete msg;
|
||||
|
||||
return n>=0;
|
||||
}
|
||||
//struct Player;
|
||||
//
|
||||
//static bool host;
|
||||
//
|
||||
//static map<DPID,Player*> player_map;
|
||||
//static list<Player*> players,new_players;
|
||||
//
|
||||
//static int msg_type;
|
||||
//static string msg_data;
|
||||
//static DPID msg_from,msg_to;
|
||||
//
|
||||
//static char *recv_buff;
|
||||
//static int recv_buff_sz;
|
||||
//
|
||||
//static char *send_buff;
|
||||
//static int send_buff_sz;
|
||||
//
|
||||
//#pragma pack( push,1 )
|
||||
//struct bbMsg{
|
||||
// DPID from,to;
|
||||
// char type;
|
||||
//};
|
||||
//#pragma pack( pop )
|
||||
//
|
||||
//struct Player{
|
||||
// DPID id;
|
||||
// string name;
|
||||
// bool remote;
|
||||
//
|
||||
// Player( DPID i,const string &n,bool r ):id(i),name(n),remote(r){
|
||||
// players.push_back( this );
|
||||
// if( remote ) new_players.push_back( this );
|
||||
// player_map.clear();
|
||||
// }
|
||||
//
|
||||
// Player::~Player(){
|
||||
// new_players.remove( this );
|
||||
// players.remove( this );
|
||||
// player_map.clear();
|
||||
// }
|
||||
//};
|
||||
//
|
||||
//static void chk(){
|
||||
// if( !dirPlay ){
|
||||
// RTEX( "Multiplayer game not started" );
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//static void clearPlayers(){
|
||||
// while( players.size() ) delete players.back();
|
||||
// new_players.clear();
|
||||
// player_map.clear();
|
||||
//}
|
||||
//
|
||||
//static Player *findPlayer( DPID id ){
|
||||
// if( !player_map.size() ){
|
||||
// list<Player*>::iterator it;
|
||||
// for( it=players.begin();it!=players.end();++it ){
|
||||
// player_map.insert( pair<DPID,Player*>( (*it)->id,(*it) ) );
|
||||
// }
|
||||
// }
|
||||
// map<DPID,Player*>::iterator it=player_map.find( id );
|
||||
// return it==player_map.end() ? 0 : it->second;
|
||||
//}
|
||||
//
|
||||
//static BOOL FAR PASCAL enumPlayer( DPID id,DWORD type,LPCDPNAME name,DWORD flags,LPVOID context ){
|
||||
// Player *p=findPlayer( id );if( p ) return TRUE;
|
||||
// p=d_new Player( id,string( name->lpszShortNameA ),true );
|
||||
// return TRUE;
|
||||
//}
|
||||
//
|
||||
//void multiplay_link( void(*rtSym)(const char*,void*) ){
|
||||
// rtSym( "%StartNetGame",bbStartNetGame );
|
||||
// rtSym( "%HostNetGame$game_name",bbHostNetGame );
|
||||
// rtSym( "%JoinNetGame$game_name$ip_address",bbJoinNetGame );
|
||||
// rtSym( "StopNetGame",bbStopNetGame );
|
||||
//
|
||||
// rtSym( "%CreateNetPlayer$name",bbCreateNetPlayer );
|
||||
// rtSym( "DeleteNetPlayer%player",bbDeleteNetPlayer );
|
||||
// rtSym( "$NetPlayerName%player",bbNetPlayerName );
|
||||
// rtSym( "%NetPlayerLocal%player",bbNetPlayerLocal );
|
||||
//
|
||||
// rtSym( "%SendNetMsg%type$msg%from_player%to_player=0%reliable=1",bbSendNetMsg );
|
||||
//
|
||||
// rtSym( "%RecvNetMsg",bbRecvNetMsg );
|
||||
// rtSym( "%NetMsgType",bbNetMsgType );
|
||||
// rtSym( "%NetMsgFrom",bbNetMsgFrom );
|
||||
// rtSym( "%NetMsgTo",bbNetMsgTo );
|
||||
// rtSym( "$NetMsgData",bbNetMsgData );
|
||||
//}
|
||||
//
|
||||
//bool multiplay_create(){
|
||||
//
|
||||
// recv_buff_sz=send_buff_sz=1024;
|
||||
// recv_buff=d_new char[recv_buff_sz];
|
||||
// send_buff=d_new char[send_buff_sz];
|
||||
//
|
||||
// multiplay_setup_create();
|
||||
//
|
||||
// return true;
|
||||
//}
|
||||
//
|
||||
//bool multiplay_destroy(){
|
||||
//
|
||||
// bbStopNetGame();
|
||||
//
|
||||
// multiplay_setup_destroy();
|
||||
//
|
||||
// delete[] recv_buff;recv_buff=0;
|
||||
// delete[] send_buff;send_buff=0;
|
||||
//
|
||||
// return true;
|
||||
//}
|
||||
//
|
||||
//static int startGame( int n ){
|
||||
// clearPlayers();
|
||||
// if( !n ) return 0;
|
||||
// if( dirPlay->EnumPlayers( 0,enumPlayer,0,0 )>=0 ){
|
||||
// host=n==2;
|
||||
// return n;
|
||||
// }
|
||||
// multiplay_setup_close();
|
||||
// return 0;
|
||||
//}
|
||||
//
|
||||
//int bbStartNetGame(){
|
||||
// if( dirPlay ){
|
||||
// RTEX( "Multiplayer game already started" );
|
||||
// }
|
||||
// return startGame( multiplay_setup_open() );
|
||||
//}
|
||||
//
|
||||
//int bbHostNetGame( BBStr *name ){
|
||||
// if( dirPlay ){
|
||||
// RTEX( "Multiplayer game already started" );
|
||||
// }
|
||||
// string n=*name;delete name;
|
||||
// return startGame( multiplay_setup_host( n ) );
|
||||
//}
|
||||
//
|
||||
//int bbJoinNetGame( BBStr *name,BBStr *address ){
|
||||
// if( dirPlay ){
|
||||
// RTEX( "Multiplayer game already started" );
|
||||
// }
|
||||
// string n=*name,a=*address;delete name;delete address;
|
||||
// return startGame( multiplay_setup_join( n,a ) );
|
||||
//}
|
||||
//
|
||||
//void bbStopNetGame(){
|
||||
// multiplay_setup_close();
|
||||
// clearPlayers();
|
||||
//}
|
||||
//
|
||||
//DPID bbCreateNetPlayer( BBStr *nm ){
|
||||
// chk();
|
||||
//
|
||||
// string t=*nm;
|
||||
// string t0=t+'\0';
|
||||
// delete nm;
|
||||
//
|
||||
// DPID id;
|
||||
// DPNAME name;
|
||||
// memset( &name,0,sizeof( name ) );
|
||||
// name.dwSize=sizeof(name);name.lpszShortNameA=(char*)t0.data();
|
||||
//
|
||||
// if( dirPlay->CreatePlayer( &id,&name,0,0,0,0 )<0 ) return 0;
|
||||
//
|
||||
// Player *p=d_new Player( id,t,false );
|
||||
//
|
||||
// if( players.size()==1 ){
|
||||
// if( dirPlay->EnumPlayers( 0,enumPlayer,0,0 )<0 ){
|
||||
// dirPlay->DestroyPlayer( id );
|
||||
// delete p;
|
||||
// return 0;
|
||||
// }
|
||||
// }
|
||||
// return id;
|
||||
//}
|
||||
//
|
||||
//void bbDeleteNetPlayer( DPID player ){
|
||||
// chk();
|
||||
//
|
||||
// if( Player *p=findPlayer( player ) ){
|
||||
// dirPlay->DestroyPlayer( player );
|
||||
// delete p;
|
||||
// }
|
||||
//}
|
||||
//
|
||||
//BBStr *bbNetPlayerName( DPID player ){
|
||||
// if( !player ) return d_new BBStr( "<all>" );
|
||||
// Player *p=findPlayer( player );
|
||||
// return d_new BBStr( p ? p->name : "<unknown>" );
|
||||
//}
|
||||
//
|
||||
//int bbNetPlayerLocal( DPID player ){
|
||||
// if( Player *p=findPlayer( player ) ) return p->remote ? 0 : 1;
|
||||
// return 0;
|
||||
//}
|
||||
//
|
||||
//int bbRecvNetMsg(){
|
||||
// chk();
|
||||
//
|
||||
// msg_type=0;
|
||||
// msg_data.resize(0);
|
||||
// msg_from=DPID_UNKNOWN;msg_to=DPID_ALLPLAYERS;
|
||||
//
|
||||
// while( !msg_type ){
|
||||
//
|
||||
// if( new_players.size() ){
|
||||
// msg_from=new_players.front()->id;
|
||||
// new_players.pop_front();
|
||||
// msg_type=100;
|
||||
// return 1;
|
||||
// }
|
||||
//
|
||||
// DPID from,to;
|
||||
// DWORD sz=recv_buff_sz;
|
||||
// int n=dirPlay->Receive( &from,&to,0,recv_buff,&sz );
|
||||
//
|
||||
// if( n==DPERR_BUFFERTOOSMALL ){
|
||||
// sz=recv_buff_sz=sz/2+sz;
|
||||
// delete[] recv_buff;recv_buff=d_new char[recv_buff_sz];
|
||||
// n=dirPlay->Receive( &from,&to,0,recv_buff,&sz );
|
||||
// }
|
||||
//
|
||||
// if( n!=DP_OK ) return 0;
|
||||
//
|
||||
// if( from==DPID_SYSMSG ){
|
||||
// switch( *(DWORD*)recv_buff ){
|
||||
// case DPSYS_CREATEPLAYERORGROUP:
|
||||
// if( DPMSG_CREATEPLAYERORGROUP *msg=(DPMSG_CREATEPLAYERORGROUP*)recv_buff ){
|
||||
// if( findPlayer( from=msg->dpId ) ) continue;
|
||||
// d_new Player( from,string( msg->dpnName.lpszShortNameA ),true );
|
||||
// continue;
|
||||
// }
|
||||
// break;
|
||||
// case DPSYS_DESTROYPLAYERORGROUP:
|
||||
// if( DPMSG_DESTROYPLAYERORGROUP *msg=(DPMSG_DESTROYPLAYERORGROUP*)recv_buff ){
|
||||
// Player *p=findPlayer( msg->dpId );if( !p ) continue;
|
||||
// delete p;msg_from=msg->dpId;msg_type=101;
|
||||
// }
|
||||
// break;
|
||||
// case DPSYS_HOST:
|
||||
// if( !host ){
|
||||
// host=true;msg_type=102;
|
||||
// }
|
||||
// break;
|
||||
// case DPSYS_SESSIONLOST:
|
||||
// msg_type=200;
|
||||
// break;
|
||||
// }
|
||||
// }else{
|
||||
// bbMsg *m=(bbMsg*)recv_buff;
|
||||
// Player *p=findPlayer( m->from );
|
||||
// if( p && !p->remote ) continue;
|
||||
// msg_data=string( (char*)(m+1),sz-sizeof(bbMsg) );
|
||||
// msg_from=m->from;msg_to=m->to;
|
||||
// msg_type=m->type;
|
||||
// }
|
||||
// }
|
||||
// return 1;
|
||||
//}
|
||||
//
|
||||
//int bbNetMsgType(){
|
||||
// return msg_type;
|
||||
//}
|
||||
//
|
||||
//BBStr *bbNetMsgData(){
|
||||
// return d_new BBStr( msg_data );
|
||||
//}
|
||||
//
|
||||
//DPID bbNetMsgFrom(){
|
||||
// return msg_from;
|
||||
//}
|
||||
//
|
||||
//DPID bbNetMsgTo(){
|
||||
// return msg_to;
|
||||
//}
|
||||
//
|
||||
//int bbSendNetMsg( int type,BBStr *msg,DPID from,DPID to,int reliable ){
|
||||
// chk();
|
||||
//
|
||||
// int sz=msg->size()+sizeof(bbMsg);
|
||||
// if( sz>send_buff_sz ){
|
||||
// send_buff_sz=sz/2+sz;
|
||||
// delete send_buff;send_buff=d_new char[send_buff_sz];
|
||||
// }
|
||||
// bbMsg *m=(bbMsg*)send_buff;
|
||||
// m->type=type;m->from=from;m->to=to;
|
||||
//
|
||||
// memcpy( m+1,msg->data(),msg->size() );
|
||||
//
|
||||
// if( !to ) to=DPID_ALLPLAYERS;
|
||||
// int n=dirPlay->Send( from,to,reliable ? DPSEND_GUARANTEED : 0,send_buff,sz );
|
||||
// delete msg;
|
||||
//
|
||||
// return n>=0;
|
||||
//}
|
||||
|
||||
+22
-22
@@ -3,28 +3,28 @@
|
||||
#define MULTIPLAY_H
|
||||
|
||||
#include "bbsys.h"
|
||||
#include <dplay.h>
|
||||
//#include <dplay.h>
|
||||
|
||||
void multiplay_link();
|
||||
bool multiplay_create();
|
||||
bool multiplay_destroy();
|
||||
|
||||
int bbStartNetGame();
|
||||
int bbHostNetGame( BBStr *name );
|
||||
int bbJoinNetGame( BBStr *name,BBStr *address );
|
||||
void bbStopNetGame();
|
||||
|
||||
DPID bbCreateNetPlayer( BBStr *name );
|
||||
void bbDeleteNetPlayer( DPID player );
|
||||
BBStr * bbNetPlayerName( DPID player );
|
||||
int bbNetPlayerLocal( DPID player );
|
||||
|
||||
int bbSendNetMsg( int type,BBStr *msg,DPID from,DPID to,int reliable );
|
||||
|
||||
int bbRecvNetMsg();
|
||||
int bbNetMsgType();
|
||||
BBStr * bbNetMsgData();
|
||||
DPID bbNetMsgFrom();
|
||||
DPID bbNetMsgTo();
|
||||
//void multiplay_link();
|
||||
//bool multiplay_create();
|
||||
//bool multiplay_destroy();
|
||||
//
|
||||
//int bbStartNetGame();
|
||||
//int bbHostNetGame( BBStr *name );
|
||||
//int bbJoinNetGame( BBStr *name,BBStr *address );
|
||||
//void bbStopNetGame();
|
||||
//
|
||||
//DPID bbCreateNetPlayer( BBStr *name );
|
||||
//void bbDeleteNetPlayer( DPID player );
|
||||
//BBStr * bbNetPlayerName( DPID player );
|
||||
//int bbNetPlayerLocal( DPID player );
|
||||
//
|
||||
//int bbSendNetMsg( int type,BBStr *msg,DPID from,DPID to,int reliable );
|
||||
//
|
||||
//int bbRecvNetMsg();
|
||||
//int bbNetMsgType();
|
||||
//BBStr * bbNetMsgData();
|
||||
//DPID bbNetMsgFrom();
|
||||
//DPID bbNetMsgTo();
|
||||
|
||||
#endif
|
||||
|
||||
+375
-375
@@ -4,378 +4,378 @@
|
||||
#include "resource.h"
|
||||
#include "multiplay_setup.h"
|
||||
|
||||
IDirectPlay4 *dirPlay;
|
||||
|
||||
struct Connection{
|
||||
GUID guid;
|
||||
string name;
|
||||
void *data;
|
||||
|
||||
Connection( const GUID &g,const string &n,void *d,int sz ):guid(g),name(n){
|
||||
data=d_new char[sz];memcpy( data,d,sz );
|
||||
}
|
||||
|
||||
~Connection(){
|
||||
delete[] data;
|
||||
}
|
||||
};
|
||||
|
||||
struct Session{
|
||||
GUID guid;
|
||||
string name;
|
||||
int max_players,curr_players,data1,data2;
|
||||
|
||||
Session( const DPSESSIONDESC2 *desc ){
|
||||
guid=desc->guidInstance;
|
||||
name=string( desc->lpszSessionNameA );
|
||||
max_players=desc->dwMaxPlayers;
|
||||
curr_players=desc->dwCurrentPlayers;
|
||||
data1=desc->dwUser1;data2=desc->dwUser2;
|
||||
}
|
||||
};
|
||||
|
||||
static int timer;
|
||||
static vector<Connection*> connections;
|
||||
static vector<Session*> sessions;
|
||||
|
||||
static void clearSessions(){
|
||||
for( ;sessions.size();sessions.pop_back() ) delete sessions.back();
|
||||
}
|
||||
|
||||
static void clearConnections(){
|
||||
for( ;connections.size();connections.pop_back() ) delete connections.back();
|
||||
}
|
||||
|
||||
static bool openDirPlay( HWND hwnd ){
|
||||
if( dirPlay ) return true;
|
||||
if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dirPlay )>=0 ) return true;
|
||||
MessageBox( hwnd,"Error opening DirectPlay","DirectPlay Error",MB_ICONWARNING );
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool closeDirPlay( HWND hwnd ){
|
||||
if( hwnd && timer ) KillTimer( hwnd,timer );
|
||||
timer=0;if( !dirPlay ) return true;
|
||||
dirPlay->Close();
|
||||
int n=dirPlay->Release();
|
||||
dirPlay=0;return n==0;
|
||||
}
|
||||
|
||||
static BOOL FAR PASCAL enumConnection( LPCGUID guid,LPVOID conn,DWORD size,LPCDPNAME name,DWORD flags,LPVOID context ){
|
||||
IDirectPlay4 *dp;
|
||||
if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dp )<0 ) return FALSE;
|
||||
int n=dp->InitializeConnection( conn,0 );
|
||||
dp->Release();if( n<0 ) return TRUE;
|
||||
|
||||
Connection *c=d_new Connection( *guid,string( strdup( name->lpszShortNameA ) ),conn,size );
|
||||
connections.push_back( c );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL FAR PASCAL enumSession( LPCDPSESSIONDESC2 desc,LPDWORD timeout,DWORD flags,LPVOID lpContext ){
|
||||
|
||||
if( !desc ) return FALSE;
|
||||
sessions.push_back( d_new Session( desc ) );
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static bool startGame( HWND hwnd ){
|
||||
if( !dirPlay ) return false;
|
||||
|
||||
char buff[MAX_PATH];
|
||||
int n=GetWindowText( GetDlgItem( hwnd,IDC_GAMENAME ),buff,MAX_PATH );
|
||||
if( !n ){
|
||||
MessageBox( hwnd,"Please enter a name for the new game","DirectPlay Request",MB_SETFOREGROUND|MB_TOPMOST|MB_ICONINFORMATION|MB_OK );
|
||||
return false;
|
||||
}
|
||||
|
||||
string name=string( buff )+'\0';
|
||||
|
||||
DPSESSIONDESC2 desc;
|
||||
memset(&desc,0,sizeof(desc));
|
||||
desc.dwSize=sizeof(desc);
|
||||
desc.guidApplication=GUID_NULL;
|
||||
desc.dwFlags=
|
||||
DPSESSION_KEEPALIVE|
|
||||
DPSESSION_MIGRATEHOST|
|
||||
DPSESSION_NOMESSAGEID|
|
||||
DPSESSION_OPTIMIZELATENCY|
|
||||
DPSESSION_DIRECTPLAYPROTOCOL;
|
||||
desc.lpszSessionNameA=(char*)name.data();
|
||||
|
||||
if( dirPlay->Open( &desc,DPOPEN_CREATE )<0 ){
|
||||
MessageBox( hwnd,"Unable to create new game","DirPlay Error",MB_ICONWARNING );
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool joinGame( HWND hwnd ){
|
||||
if( !dirPlay ) return false;
|
||||
|
||||
int ses=SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_GETCURSEL,0,0 );
|
||||
if( ses<0 || ses>=sessions.size() ) return false;
|
||||
|
||||
DPSESSIONDESC2 desc;
|
||||
memset(&desc,0,sizeof(desc));
|
||||
desc.dwSize=sizeof(desc);
|
||||
desc.guidInstance=sessions[ses]->guid;
|
||||
|
||||
if( dirPlay->Open( &desc,DPOPEN_JOIN )<0 ){
|
||||
MessageBox( hwnd,"Unable to join game","DirPlay Error",MB_ICONWARNING );
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool enumSessions( HWND hwnd ){
|
||||
if( !dirPlay ) return false;
|
||||
|
||||
clearSessions();
|
||||
EnableWindow( GetDlgItem( hwnd,IDC_GAMELIST ),true );
|
||||
SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_RESETCONTENT,0,0 );
|
||||
|
||||
DPSESSIONDESC2 desc;
|
||||
memset(&desc,0,sizeof(desc));
|
||||
desc.dwSize=sizeof(desc);
|
||||
desc.guidApplication=GUID_NULL;
|
||||
|
||||
int n=dirPlay->EnumSessions( &desc,0,enumSession,0,DPENUMSESSIONS_ASYNC );
|
||||
if( n>=0 ){
|
||||
if( !timer ) SetTimer( hwnd,timer=1,1000,0 );
|
||||
for( int k=0;k<sessions.size();++k ){
|
||||
SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_ADDSTRING,0,(LPARAM)strdup( sessions[k]->name.c_str() ) );
|
||||
}
|
||||
if( !sessions.size() ){
|
||||
SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_ADDSTRING,0,(LPARAM)"<no games found>" );
|
||||
EnableWindow( GetDlgItem( hwnd,IDC_GAMELIST ),false );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
closeDirPlay( hwnd );
|
||||
if( n==DPERR_USERCANCEL ) return false;
|
||||
MessageBox( hwnd,"Unable to enumerate sessions","DirPlay Error",MB_ICONWARNING );
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool connect( HWND hwnd ){
|
||||
int con=SendDlgItemMessage( hwnd,IDC_CONNECTIONS,CB_GETCURSEL,0,0 );
|
||||
if( con<1 || con>=connections.size() ) return false;
|
||||
|
||||
closeDirPlay( hwnd );
|
||||
if( openDirPlay( hwnd ) ){
|
||||
int n=dirPlay->InitializeConnection( connections[con]->data,0 );
|
||||
if( n>=0 ){
|
||||
if( enumSessions( hwnd ) ) return true;
|
||||
}else{
|
||||
if( n!=DPERR_USERCANCEL ){
|
||||
string t="Unable to open "+connections[con]->name;
|
||||
MessageBox( hwnd,t.c_str(),"DirPlay Error",MB_ICONWARNING );
|
||||
}
|
||||
}
|
||||
closeDirPlay( hwnd );
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static void endDialog( HWND hwnd,int rc ){
|
||||
if( timer ) KillTimer( hwnd,timer );
|
||||
timer=0;
|
||||
if( !rc ) closeDirPlay( hwnd );
|
||||
EndDialog( hwnd,rc );
|
||||
}
|
||||
|
||||
static BOOL CALLBACK dialogProc( HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam ){
|
||||
|
||||
int k,lo=LOWORD(wparam),hi=HIWORD(wparam);
|
||||
|
||||
bool reset=false;
|
||||
|
||||
switch( msg ){
|
||||
case WM_INITDIALOG:
|
||||
SetForegroundWindow( hwnd );
|
||||
clearConnections();
|
||||
connections.push_back( d_new Connection( GUID_NULL,"<no connection>","",0 ) );
|
||||
if( openDirPlay( hwnd ) ){
|
||||
if( dirPlay->EnumConnections( 0,enumConnection,0,0 )<0 ){
|
||||
MessageBox( hwnd,"Failed to enumerate connections","DirectPlay Error",MB_SETFOREGROUND|MB_TOPMOST|MB_ICONWARNING|MB_OK );
|
||||
}
|
||||
closeDirPlay( hwnd );
|
||||
}
|
||||
for( k=0;k<connections.size();++k ){
|
||||
string t=connections[k]->name;
|
||||
SendDlgItemMessage( hwnd,IDC_CONNECTIONS,CB_ADDSTRING,0,(LPARAM)t.c_str() );
|
||||
}
|
||||
timer=0;
|
||||
reset=true;
|
||||
break;
|
||||
case WM_TIMER: //refresh sessions list!
|
||||
if( timer && wparam==timer && !enumSessions( hwnd ) ) reset=true;
|
||||
break;
|
||||
case WM_CLOSE:
|
||||
endDialog( hwnd,0 );
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
switch( hi ){
|
||||
case BN_CLICKED:
|
||||
switch( lo ){
|
||||
case IDC_CANCEL:
|
||||
endDialog( hwnd,0 );
|
||||
break;
|
||||
case IDC_GAMENAME:case IDC_HOSTGAME:
|
||||
if( startGame( hwnd ) ){
|
||||
endDialog( hwnd,2 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case LBN_DBLCLK:
|
||||
switch( lo ){
|
||||
case IDC_GAMELIST:
|
||||
if( joinGame( hwnd ) ){
|
||||
endDialog( hwnd,1 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case CBN_SELCHANGE:
|
||||
switch( lo ){
|
||||
case IDC_CONNECTIONS:
|
||||
if( connect( hwnd ) ){
|
||||
EnableWindow( GetDlgItem( hwnd,IDC_GAMENAME ),true );
|
||||
EnableWindow( GetDlgItem( hwnd,IDC_HOSTGAME ),true );
|
||||
break;
|
||||
}else{
|
||||
reset=true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
if( reset ){
|
||||
closeDirPlay( hwnd );
|
||||
SendDlgItemMessage( hwnd,IDC_CONNECTIONS,CB_SETCURSEL,0,0 );
|
||||
EnableWindow( GetDlgItem( hwnd,IDC_GAMELIST ),false );
|
||||
EnableWindow( GetDlgItem( hwnd,IDC_HOSTGAME ),false );
|
||||
EnableWindow( GetDlgItem( hwnd,IDC_GAMENAME ),false );
|
||||
SetWindowText( GetDlgItem( hwnd,IDC_GAMENAME ),"" );
|
||||
SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_RESETCONTENT,0,0 );
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
void multiplay_setup_create(){
|
||||
dirPlay=0;
|
||||
}
|
||||
|
||||
void multiplay_setup_destroy(){
|
||||
multiplay_setup_close();
|
||||
}
|
||||
|
||||
int multiplay_setup_open(){
|
||||
gx_runtime->idle();
|
||||
|
||||
int n=DialogBox( GetModuleHandle( "runtime" ),MAKEINTRESOURCE( IDD_MULTIPLAYER ),GetDesktopWindow(),dialogProc );
|
||||
|
||||
if( n!=1 && n!=2 ) n=0;
|
||||
|
||||
clearSessions();
|
||||
clearConnections();
|
||||
|
||||
//NAUGHTY!
|
||||
gx_runtime->asyncRun();
|
||||
gx_runtime->idle();
|
||||
return n;
|
||||
}
|
||||
|
||||
void multiplay_setup_close(){
|
||||
closeDirPlay( 0 );
|
||||
}
|
||||
|
||||
int multiplay_setup_host( const string &game_name ){
|
||||
int ret=0;
|
||||
IDirectPlayLobby *lobby;
|
||||
IDirectPlayLobby3 *lobby3;
|
||||
if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dirPlay )>=0 ){
|
||||
if( DirectPlayLobbyCreate( 0,&lobby,0,0,0 )>=0 ){
|
||||
if( lobby->QueryInterface( IID_IDirectPlayLobby3,(void**)&lobby3 )>=0 ){
|
||||
//ok, create an address for initializeconnection
|
||||
string ip( "\0" );
|
||||
char address[256];DWORD sz=256;
|
||||
if( lobby3->CreateAddress( DPSPGUID_TCPIP,DPAID_INet,ip.data(),ip.size(),address,&sz )>=0 ){
|
||||
if( dirPlay->InitializeConnection( address,0 )>=0 ){
|
||||
string name=game_name+'\0';
|
||||
DPSESSIONDESC2 desc;
|
||||
memset(&desc,0,sizeof(desc));
|
||||
desc.dwSize=sizeof(desc);
|
||||
desc.guidApplication=GUID_NULL;
|
||||
desc.dwFlags=
|
||||
DPSESSION_KEEPALIVE|
|
||||
DPSESSION_MIGRATEHOST|
|
||||
DPSESSION_NOMESSAGEID|
|
||||
DPSESSION_OPTIMIZELATENCY|
|
||||
DPSESSION_DIRECTPLAYPROTOCOL;
|
||||
desc.lpszSessionNameA=(char*)name.data();
|
||||
if( dirPlay->Open( &desc,DPOPEN_CREATE )>=0 ){
|
||||
ret=2;
|
||||
}
|
||||
}
|
||||
}
|
||||
lobby3->Release();
|
||||
}
|
||||
lobby->Release();
|
||||
}
|
||||
if( !ret ){
|
||||
dirPlay->Release();
|
||||
dirPlay=0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int multiplay_setup_join( const string &game_name,const string &ip_add ){
|
||||
int ret=0;
|
||||
IDirectPlayLobby *lobby;
|
||||
IDirectPlayLobby3 *lobby3;
|
||||
if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dirPlay )>=0 ){
|
||||
if( DirectPlayLobbyCreate( 0,&lobby,0,0,0 )>=0 ){
|
||||
if( lobby->QueryInterface( IID_IDirectPlayLobby3,(void**)&lobby3 )>=0 ){
|
||||
//ok, create an address for initializeconnection
|
||||
string ip=ip_add+'\0';
|
||||
char address[256];DWORD sz=256;
|
||||
if( lobby3->CreateAddress( DPSPGUID_TCPIP,DPAID_INet,ip.data(),ip.size(),address,&sz )>=0 ){
|
||||
if( dirPlay->InitializeConnection( address,0 )>=0 ){
|
||||
DPSESSIONDESC2 desc;
|
||||
memset(&desc,0,sizeof(desc));
|
||||
desc.dwSize=sizeof(desc);
|
||||
desc.guidApplication=GUID_NULL;
|
||||
if( dirPlay->EnumSessions( &desc,0,enumSession,0,0 )>=0 ){
|
||||
for( int k=0;k<sessions.size();++k ){
|
||||
if( sessions[k]->name!=game_name ) continue;
|
||||
desc.guidInstance=sessions[k]->guid;
|
||||
if( dirPlay->Open( &desc,DPOPEN_JOIN )>=0 ){
|
||||
ret=1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
clearSessions();
|
||||
}
|
||||
}
|
||||
lobby3->Release();
|
||||
}
|
||||
lobby->Release();
|
||||
}
|
||||
if( !ret ){
|
||||
dirPlay->Release();
|
||||
dirPlay=0;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
//IDirectPlay4 *dirPlay;
|
||||
//
|
||||
//struct Connection{
|
||||
// GUID guid;
|
||||
// string name;
|
||||
// void *data;
|
||||
//
|
||||
// Connection( const GUID &g,const string &n,void *d,int sz ):guid(g),name(n){
|
||||
// data=d_new char[sz];memcpy( data,d,sz );
|
||||
// }
|
||||
//
|
||||
// ~Connection(){
|
||||
// delete[] data;
|
||||
// }
|
||||
//};
|
||||
//
|
||||
//struct Session{
|
||||
// GUID guid;
|
||||
// string name;
|
||||
// int max_players,curr_players,data1,data2;
|
||||
//
|
||||
// Session( const DPSESSIONDESC2 *desc ){
|
||||
// guid=desc->guidInstance;
|
||||
// name=string( desc->lpszSessionNameA );
|
||||
// max_players=desc->dwMaxPlayers;
|
||||
// curr_players=desc->dwCurrentPlayers;
|
||||
// data1=desc->dwUser1;data2=desc->dwUser2;
|
||||
// }
|
||||
//};
|
||||
//
|
||||
//static int timer;
|
||||
//static vector<Connection*> connections;
|
||||
//static vector<Session*> sessions;
|
||||
//
|
||||
//static void clearSessions(){
|
||||
// for( ;sessions.size();sessions.pop_back() ) delete sessions.back();
|
||||
//}
|
||||
//
|
||||
//static void clearConnections(){
|
||||
// for( ;connections.size();connections.pop_back() ) delete connections.back();
|
||||
//}
|
||||
//
|
||||
//static bool openDirPlay( HWND hwnd ){
|
||||
// if( dirPlay ) return true;
|
||||
// if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dirPlay )>=0 ) return true;
|
||||
// MessageBox( hwnd,"Error opening DirectPlay","DirectPlay Error",MB_ICONWARNING );
|
||||
// return false;
|
||||
//}
|
||||
//
|
||||
//static bool closeDirPlay( HWND hwnd ){
|
||||
// if( hwnd && timer ) KillTimer( hwnd,timer );
|
||||
// timer=0;if( !dirPlay ) return true;
|
||||
// dirPlay->Close();
|
||||
// int n=dirPlay->Release();
|
||||
// dirPlay=0;return n==0;
|
||||
//}
|
||||
//
|
||||
//static BOOL FAR PASCAL enumConnection( LPCGUID guid,LPVOID conn,DWORD size,LPCDPNAME name,DWORD flags,LPVOID context ){
|
||||
// IDirectPlay4 *dp;
|
||||
// if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dp )<0 ) return FALSE;
|
||||
// int n=dp->InitializeConnection( conn,0 );
|
||||
// dp->Release();if( n<0 ) return TRUE;
|
||||
//
|
||||
// Connection *c=d_new Connection( *guid,string( strdup( name->lpszShortNameA ) ),conn,size );
|
||||
// connections.push_back( c );
|
||||
//
|
||||
// return TRUE;
|
||||
//}
|
||||
//
|
||||
//static BOOL FAR PASCAL enumSession( LPCDPSESSIONDESC2 desc,LPDWORD timeout,DWORD flags,LPVOID lpContext ){
|
||||
//
|
||||
// if( !desc ) return FALSE;
|
||||
// sessions.push_back( d_new Session( desc ) );
|
||||
// return TRUE;
|
||||
//}
|
||||
//
|
||||
//static bool startGame( HWND hwnd ){
|
||||
// if( !dirPlay ) return false;
|
||||
//
|
||||
// char buff[MAX_PATH];
|
||||
// int n=GetWindowText( GetDlgItem( hwnd,IDC_GAMENAME ),buff,MAX_PATH );
|
||||
// if( !n ){
|
||||
// MessageBox( hwnd,"Please enter a name for the new game","DirectPlay Request",MB_SETFOREGROUND|MB_TOPMOST|MB_ICONINFORMATION|MB_OK );
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// string name=string( buff )+'\0';
|
||||
//
|
||||
// DPSESSIONDESC2 desc;
|
||||
// memset(&desc,0,sizeof(desc));
|
||||
// desc.dwSize=sizeof(desc);
|
||||
// desc.guidApplication=GUID_NULL;
|
||||
// desc.dwFlags=
|
||||
// DPSESSION_KEEPALIVE|
|
||||
// DPSESSION_MIGRATEHOST|
|
||||
// DPSESSION_NOMESSAGEID|
|
||||
// DPSESSION_OPTIMIZELATENCY|
|
||||
// DPSESSION_DIRECTPLAYPROTOCOL;
|
||||
// desc.lpszSessionNameA=(char*)name.data();
|
||||
//
|
||||
// if( dirPlay->Open( &desc,DPOPEN_CREATE )<0 ){
|
||||
// MessageBox( hwnd,"Unable to create new game","DirPlay Error",MB_ICONWARNING );
|
||||
// return false;
|
||||
// }
|
||||
// return true;
|
||||
//}
|
||||
//
|
||||
//static bool joinGame( HWND hwnd ){
|
||||
// if( !dirPlay ) return false;
|
||||
//
|
||||
// int ses=SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_GETCURSEL,0,0 );
|
||||
// if( ses<0 || ses>=sessions.size() ) return false;
|
||||
//
|
||||
// DPSESSIONDESC2 desc;
|
||||
// memset(&desc,0,sizeof(desc));
|
||||
// desc.dwSize=sizeof(desc);
|
||||
// desc.guidInstance=sessions[ses]->guid;
|
||||
//
|
||||
// if( dirPlay->Open( &desc,DPOPEN_JOIN )<0 ){
|
||||
// MessageBox( hwnd,"Unable to join game","DirPlay Error",MB_ICONWARNING );
|
||||
// return false;
|
||||
// }
|
||||
// return true;
|
||||
//}
|
||||
//
|
||||
//static bool enumSessions( HWND hwnd ){
|
||||
// if( !dirPlay ) return false;
|
||||
//
|
||||
// clearSessions();
|
||||
// EnableWindow( GetDlgItem( hwnd,IDC_GAMELIST ),true );
|
||||
// SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_RESETCONTENT,0,0 );
|
||||
//
|
||||
// DPSESSIONDESC2 desc;
|
||||
// memset(&desc,0,sizeof(desc));
|
||||
// desc.dwSize=sizeof(desc);
|
||||
// desc.guidApplication=GUID_NULL;
|
||||
//
|
||||
// int n=dirPlay->EnumSessions( &desc,0,enumSession,0,DPENUMSESSIONS_ASYNC );
|
||||
// if( n>=0 ){
|
||||
// if( !timer ) SetTimer( hwnd,timer=1,1000,0 );
|
||||
// for( int k=0;k<sessions.size();++k ){
|
||||
// SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_ADDSTRING,0,(LPARAM)strdup( sessions[k]->name.c_str() ) );
|
||||
// }
|
||||
// if( !sessions.size() ){
|
||||
// SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_ADDSTRING,0,(LPARAM)"<no games found>" );
|
||||
// EnableWindow( GetDlgItem( hwnd,IDC_GAMELIST ),false );
|
||||
// }
|
||||
// return true;
|
||||
// }
|
||||
// closeDirPlay( hwnd );
|
||||
// if( n==DPERR_USERCANCEL ) return false;
|
||||
// MessageBox( hwnd,"Unable to enumerate sessions","DirPlay Error",MB_ICONWARNING );
|
||||
// return false;
|
||||
//}
|
||||
//
|
||||
//static bool connect( HWND hwnd ){
|
||||
// int con=SendDlgItemMessage( hwnd,IDC_CONNECTIONS,CB_GETCURSEL,0,0 );
|
||||
// if( con<1 || con>=connections.size() ) return false;
|
||||
//
|
||||
// closeDirPlay( hwnd );
|
||||
// if( openDirPlay( hwnd ) ){
|
||||
// int n=dirPlay->InitializeConnection( connections[con]->data,0 );
|
||||
// if( n>=0 ){
|
||||
// if( enumSessions( hwnd ) ) return true;
|
||||
// }else{
|
||||
// if( n!=DPERR_USERCANCEL ){
|
||||
// string t="Unable to open "+connections[con]->name;
|
||||
// MessageBox( hwnd,t.c_str(),"DirPlay Error",MB_ICONWARNING );
|
||||
// }
|
||||
// }
|
||||
// closeDirPlay( hwnd );
|
||||
// }
|
||||
// return false;
|
||||
//}
|
||||
//
|
||||
//static void endDialog( HWND hwnd,int rc ){
|
||||
// if( timer ) KillTimer( hwnd,timer );
|
||||
// timer=0;
|
||||
// if( !rc ) closeDirPlay( hwnd );
|
||||
// EndDialog( hwnd,rc );
|
||||
//}
|
||||
//
|
||||
//static BOOL CALLBACK dialogProc( HWND hwnd,UINT msg,WPARAM wparam,LPARAM lparam ){
|
||||
//
|
||||
// int k,lo=LOWORD(wparam),hi=HIWORD(wparam);
|
||||
//
|
||||
// bool reset=false;
|
||||
//
|
||||
// switch( msg ){
|
||||
// case WM_INITDIALOG:
|
||||
// SetForegroundWindow( hwnd );
|
||||
// clearConnections();
|
||||
// connections.push_back( d_new Connection( GUID_NULL,"<no connection>","",0 ) );
|
||||
// if( openDirPlay( hwnd ) ){
|
||||
// if( dirPlay->EnumConnections( 0,enumConnection,0,0 )<0 ){
|
||||
// MessageBox( hwnd,"Failed to enumerate connections","DirectPlay Error",MB_SETFOREGROUND|MB_TOPMOST|MB_ICONWARNING|MB_OK );
|
||||
// }
|
||||
// closeDirPlay( hwnd );
|
||||
// }
|
||||
// for( k=0;k<connections.size();++k ){
|
||||
// string t=connections[k]->name;
|
||||
// SendDlgItemMessage( hwnd,IDC_CONNECTIONS,CB_ADDSTRING,0,(LPARAM)t.c_str() );
|
||||
// }
|
||||
// timer=0;
|
||||
// reset=true;
|
||||
// break;
|
||||
// case WM_TIMER: //refresh sessions list!
|
||||
// if( timer && wparam==timer && !enumSessions( hwnd ) ) reset=true;
|
||||
// break;
|
||||
// case WM_CLOSE:
|
||||
// endDialog( hwnd,0 );
|
||||
// break;
|
||||
// case WM_COMMAND:
|
||||
// switch( hi ){
|
||||
// case BN_CLICKED:
|
||||
// switch( lo ){
|
||||
// case IDC_CANCEL:
|
||||
// endDialog( hwnd,0 );
|
||||
// break;
|
||||
// case IDC_GAMENAME:case IDC_HOSTGAME:
|
||||
// if( startGame( hwnd ) ){
|
||||
// endDialog( hwnd,2 );
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// case LBN_DBLCLK:
|
||||
// switch( lo ){
|
||||
// case IDC_GAMELIST:
|
||||
// if( joinGame( hwnd ) ){
|
||||
// endDialog( hwnd,1 );
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// case CBN_SELCHANGE:
|
||||
// switch( lo ){
|
||||
// case IDC_CONNECTIONS:
|
||||
// if( connect( hwnd ) ){
|
||||
// EnableWindow( GetDlgItem( hwnd,IDC_GAMENAME ),true );
|
||||
// EnableWindow( GetDlgItem( hwnd,IDC_HOSTGAME ),true );
|
||||
// break;
|
||||
// }else{
|
||||
// reset=true;
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// break;
|
||||
// default:
|
||||
// return 0;
|
||||
// }
|
||||
//
|
||||
// if( reset ){
|
||||
// closeDirPlay( hwnd );
|
||||
// SendDlgItemMessage( hwnd,IDC_CONNECTIONS,CB_SETCURSEL,0,0 );
|
||||
// EnableWindow( GetDlgItem( hwnd,IDC_GAMELIST ),false );
|
||||
// EnableWindow( GetDlgItem( hwnd,IDC_HOSTGAME ),false );
|
||||
// EnableWindow( GetDlgItem( hwnd,IDC_GAMENAME ),false );
|
||||
// SetWindowText( GetDlgItem( hwnd,IDC_GAMENAME ),"" );
|
||||
// SendDlgItemMessage( hwnd,IDC_GAMELIST,LB_RESETCONTENT,0,0 );
|
||||
// }
|
||||
// return 1;
|
||||
//}
|
||||
//
|
||||
//void multiplay_setup_create(){
|
||||
// dirPlay=0;
|
||||
//}
|
||||
//
|
||||
//void multiplay_setup_destroy(){
|
||||
// multiplay_setup_close();
|
||||
//}
|
||||
//
|
||||
//int multiplay_setup_open(){
|
||||
// gx_runtime->idle();
|
||||
//
|
||||
// int n=DialogBox( GetModuleHandle( "runtime" ),MAKEINTRESOURCE( IDD_MULTIPLAYER ),GetDesktopWindow(),dialogProc );
|
||||
//
|
||||
// if( n!=1 && n!=2 ) n=0;
|
||||
//
|
||||
// clearSessions();
|
||||
// clearConnections();
|
||||
//
|
||||
// //NAUGHTY!
|
||||
// gx_runtime->asyncRun();
|
||||
// gx_runtime->idle();
|
||||
// return n;
|
||||
//}
|
||||
//
|
||||
//void multiplay_setup_close(){
|
||||
// closeDirPlay( 0 );
|
||||
//}
|
||||
//
|
||||
//int multiplay_setup_host( const string &game_name ){
|
||||
// int ret=0;
|
||||
// IDirectPlayLobby *lobby;
|
||||
// IDirectPlayLobby3 *lobby3;
|
||||
// if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dirPlay )>=0 ){
|
||||
// if( DirectPlayLobbyCreate( 0,&lobby,0,0,0 )>=0 ){
|
||||
// if( lobby->QueryInterface( IID_IDirectPlayLobby3,(void**)&lobby3 )>=0 ){
|
||||
// //ok, create an address for initializeconnection
|
||||
// string ip( "\0" );
|
||||
// char address[256];DWORD sz=256;
|
||||
// if( lobby3->CreateAddress( DPSPGUID_TCPIP,DPAID_INet,ip.data(),ip.size(),address,&sz )>=0 ){
|
||||
// if( dirPlay->InitializeConnection( address,0 )>=0 ){
|
||||
// string name=game_name+'\0';
|
||||
// DPSESSIONDESC2 desc;
|
||||
// memset(&desc,0,sizeof(desc));
|
||||
// desc.dwSize=sizeof(desc);
|
||||
// desc.guidApplication=GUID_NULL;
|
||||
// desc.dwFlags=
|
||||
// DPSESSION_KEEPALIVE|
|
||||
// DPSESSION_MIGRATEHOST|
|
||||
// DPSESSION_NOMESSAGEID|
|
||||
// DPSESSION_OPTIMIZELATENCY|
|
||||
// DPSESSION_DIRECTPLAYPROTOCOL;
|
||||
// desc.lpszSessionNameA=(char*)name.data();
|
||||
// if( dirPlay->Open( &desc,DPOPEN_CREATE )>=0 ){
|
||||
// ret=2;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// lobby3->Release();
|
||||
// }
|
||||
// lobby->Release();
|
||||
// }
|
||||
// if( !ret ){
|
||||
// dirPlay->Release();
|
||||
// dirPlay=0;
|
||||
// }
|
||||
// }
|
||||
// return ret;
|
||||
//}
|
||||
//
|
||||
//int multiplay_setup_join( const string &game_name,const string &ip_add ){
|
||||
// int ret=0;
|
||||
// IDirectPlayLobby *lobby;
|
||||
// IDirectPlayLobby3 *lobby3;
|
||||
// if( CoCreateInstance( CLSID_DirectPlay,0,CLSCTX_ALL,IID_IDirectPlay4A,(void**)&dirPlay )>=0 ){
|
||||
// if( DirectPlayLobbyCreate( 0,&lobby,0,0,0 )>=0 ){
|
||||
// if( lobby->QueryInterface( IID_IDirectPlayLobby3,(void**)&lobby3 )>=0 ){
|
||||
// //ok, create an address for initializeconnection
|
||||
// string ip=ip_add+'\0';
|
||||
// char address[256];DWORD sz=256;
|
||||
// if( lobby3->CreateAddress( DPSPGUID_TCPIP,DPAID_INet,ip.data(),ip.size(),address,&sz )>=0 ){
|
||||
// if( dirPlay->InitializeConnection( address,0 )>=0 ){
|
||||
// DPSESSIONDESC2 desc;
|
||||
// memset(&desc,0,sizeof(desc));
|
||||
// desc.dwSize=sizeof(desc);
|
||||
// desc.guidApplication=GUID_NULL;
|
||||
// if( dirPlay->EnumSessions( &desc,0,enumSession,0,0 )>=0 ){
|
||||
// for( int k=0;k<sessions.size();++k ){
|
||||
// if( sessions[k]->name!=game_name ) continue;
|
||||
// desc.guidInstance=sessions[k]->guid;
|
||||
// if( dirPlay->Open( &desc,DPOPEN_JOIN )>=0 ){
|
||||
// ret=1;
|
||||
// }
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// clearSessions();
|
||||
// }
|
||||
// }
|
||||
// lobby3->Release();
|
||||
// }
|
||||
// lobby->Release();
|
||||
// }
|
||||
// if( !ret ){
|
||||
// dirPlay->Release();
|
||||
// dirPlay=0;
|
||||
// }
|
||||
// }
|
||||
// return ret;
|
||||
//}
|
||||
|
||||
+11
-11
@@ -2,17 +2,17 @@
|
||||
#ifndef MULTIPLAY_SETUP_H
|
||||
#define MULTIPLAY_SETUP_H
|
||||
|
||||
#include <dplay.h>
|
||||
#include <dplobby.h>
|
||||
//#include <dplay.h>
|
||||
//#include <dplobby.h>
|
||||
//
|
||||
//extern IDirectPlay4 *dirPlay;
|
||||
|
||||
extern IDirectPlay4 *dirPlay;
|
||||
|
||||
void multiplay_setup_create();
|
||||
void multiplay_setup_destroy();
|
||||
|
||||
int multiplay_setup_open();
|
||||
int multiplay_setup_host( const string &game_name );
|
||||
int multiplay_setup_join( const string &game_name,const string &ip_add );
|
||||
void multiplay_setup_close();
|
||||
//void multiplay_setup_create();
|
||||
//void multiplay_setup_destroy();
|
||||
//
|
||||
//int multiplay_setup_open();
|
||||
//int multiplay_setup_host( const string &game_name );
|
||||
//int multiplay_setup_join( const string &game_name,const string &ip_add );
|
||||
//void multiplay_setup_close();
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,304 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{5FA2FD4A-F9A4-41BA-9484-07C3A57A87E3}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\bbruntime_dll___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\bbruntime_dll___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\bbruntime_dll___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\bbruntime_dll___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;BBRUNTIME_DLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\bbruntime_dll.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Debug\bbruntime_dll.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\bbruntime_dll.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>..\blitzbasic\bin\runtime.dll</OutputFile>
|
||||
<ImportLibrary>.\Debug\runtime.lib</ImportLibrary>
|
||||
<AdditionalOptions> /FIXED:NO</AdditionalOptions>
|
||||
<AdditionalDependencies>wsock32.lib;winmm.lib;dxguid.lib;d3dxof.lib;dplayx.lib;ddraw.lib;dinput.lib;dsound.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BBRUNTIME_DLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerOutput>AssemblyCode</AssemblerOutput>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\bbruntime_dll.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Release\bbruntime_dll.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\bbruntime_dll.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>..\blitzbasic\bin\runtime.dll</OutputFile>
|
||||
<ImportLibrary>.\Release\runtime.lib</ImportLibrary>
|
||||
<AdditionalDependencies>wsock32.lib;winmm.lib;dxguid.lib;d3dxof.lib;dplayx.lib;ddraw.lib;dinput.lib;dsound.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;BBRUNTIME_DLL_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerOutput>AssemblyCode</AssemblerOutput>
|
||||
<AssemblerListingLocation>.\bbruntime_dll___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\bbruntime_dll___Win32_Blitz2DRelease\bbruntime_dll.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\bbruntime_dll___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\bbruntime_dll___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\bbruntime_dll___Win32_Blitz2DRelease\bbruntime_dll.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bbruntime_dll___Win32_Blitz2DRelease\bbruntime_dll.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>..\..\release\blitz2drelease\bin\runtime.dll</OutputFile>
|
||||
<ImportLibrary>.\bbruntime_dll___Win32_Blitz2DRelease\runtime.lib</ImportLibrary>
|
||||
<AdditionalDependencies>wsock32.lib;winmm.lib;dxguid.lib;d3dxof.lib;dplayx.lib;ddraw.lib;dinput.lib;dsound.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_WINDOWS;_USRDLL;BBRUNTIME_DLL_EXPORTS;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerOutput>AssemblyCode</AssemblerOutput>
|
||||
<AssemblerListingLocation>.\bbruntime_dll___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\bbruntime_dll___Win32_Blitz3DRelease\bbruntime_dll.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\bbruntime_dll___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\bbruntime_dll___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\bbruntime_dll___Win32_Blitz3DRelease\bbruntime_dll.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\bbruntime_dll___Win32_Blitz3DRelease\bbruntime_dll.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>../_release/bin/runtime.dll</OutputFile>
|
||||
<ImportLibrary>.\bbruntime_dll___Win32_Blitz3DRelease\runtime.lib</ImportLibrary>
|
||||
<AdditionalDependencies>wsock32.lib;amstrmid.lib;winmm.lib;dxguid.lib;d3dxof.lib;dplayx.lib;ddraw.lib;dinput.lib;dsound.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="bbruntime_dll.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="bbruntime_dll.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="bbruntime_dll.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="bbexe.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Library Include="..\..\fmodapi375win\api\lib\fmodvc.lib" />
|
||||
<Library Include="..\..\FreeImage241\Source\FreeImageLib\Release\FreeImage.lib" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\bbruntime\bbruntime.vcxproj">
|
||||
<Project>{df8caa9d-7154-4d5f-bccc-0d7bb57c7354}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\blitz3d\blitz3d.vcxproj">
|
||||
<Project>{be0ba538-6215-4836-9227-1d3627e40d61}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\gxruntime\gxruntime.vcxproj">
|
||||
<Project>{ff2d8bf7-1930-4cab-bc48-05cd33b7dc18}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\stdutil\stdutil.vcxproj">
|
||||
<Project>{6bcfc5ca-ea71-4ae9-8b96-28b8701f939e}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{a65b2e3f-fc88-4d53-91dd-eb0642bee121}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{aca80be8-67eb-4554-af3e-500c319542c5}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{09c1e929-5d9c-4e04-ab45-9a6a24fdd23c}</UniqueIdentifier>
|
||||
<Extensions>ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="bbruntime_dll.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="bbruntime_dll.rc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="bbruntime_dll.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="bbexe.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Library Include="..\..\FreeImage241\Source\FreeImageLib\Release\FreeImage.lib" />
|
||||
<Library Include="..\..\fmodapi375win\api\lib\fmodvc.lib" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,258 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{C23AF61E-9509-411F-933E-17DB18884B21}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\blitz___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\blitz___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\blitz___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\blitz___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\blitz.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<TypeLibraryName>.\Debug\blitz.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x1409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\blitz.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>.\Debug\blitz.exe</OutputFile>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\blitz___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\blitz___Win32_Blitz2DRelease\blitz.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\blitz___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\blitz___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<TypeLibraryName>.\blitz___Win32_Blitz2DRelease\blitz.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x1409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitz___Win32_Blitz2DRelease\blitz.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>..\..\release\blitz2drelease\bin\blitzcc.exe</OutputFile>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_CONSOLE;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\blitz___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\blitz___Win32_Blitz3DRelease\blitz.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\blitz___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\blitz___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<TypeLibraryName>.\blitz___Win32_Blitz3DRelease\blitz.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x1409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitz___Win32_Blitz3DRelease\blitz.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>../_release/bin/blitzcc.exe</OutputFile>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\blitz.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<TypeLibraryName>.\Release\blitz.tlb</TypeLibraryName>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x1409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\blitz.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>..\blitzbasic\bin\blitzcc.exe</OutputFile>
|
||||
<AdditionalDependencies>odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="libs.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="libs.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\compiler\compiler.vcxproj">
|
||||
<Project>{d884a075-e3b8-44e1-838d-74f28b33391b}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\stdutil\stdutil.vcxproj">
|
||||
<Project>{6bcfc5ca-ea71-4ae9-8b96-28b8701f939e}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
-266
@@ -1,266 +0,0 @@
|
||||
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "asm_makeinsts"=.\asm_makeinsts\asm_makeinsts.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "bblaunch"=.\bblaunch\bblaunch.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name blitzide
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name compiler
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name config
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name linker_dll
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stdutil
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name linker
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name bbruntime
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name bbruntime_dll
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gxruntime
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name debugger
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name blitz
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name blitz3d
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "bbruntime"=.\bbruntime\bbruntime.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "bbruntime_dll"=.\bbruntime_dll\bbruntime_dll.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name bbruntime
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name gxruntime
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stdutil
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name blitz3d
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "blitz"=.\blitz\blitz.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name compiler
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stdutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "blitz3d"=.\blitz3d\blitz3d.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "blitzide"=.\blitzide\blitzide.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name config
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "compiler"=.\compiler\compiler.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name config
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stdutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "config"=.\config\config.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "debugger"=.\debugger\debugger.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "gxruntime"=.\gxruntime\gxruntime.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "linker"=.\linker\linker.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name config
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stdutil
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "linker_dll"=.\linker_dll\linker_dll.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name linker
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name stdutil
|
||||
End Project Dependency
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name config
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Project: "stdutil"=.\stdutil\stdutil.dsp - Package Owner=<4>
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<4>
|
||||
{{{
|
||||
Begin Project Dependency
|
||||
Project_Dep_Name config
|
||||
End Project Dependency
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
Global:
|
||||
|
||||
Package=<5>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
Package=<3>
|
||||
{{{
|
||||
}}}
|
||||
|
||||
###############################################################################
|
||||
|
||||
@@ -0,0 +1,308 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{BE0BA538-6215-4836-9227-1D3627E40D61}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\blitz3d___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\blitz3d___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\blitz3d___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\blitz3d___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\blitz3d.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\blitz3d.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\blitz3d.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\blitz3d___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\blitz3d___Win32_Blitz2DRelease\blitz3d.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\blitz3d___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\blitz3d___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitz3d___Win32_Blitz2DRelease\blitz3d.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitz3d___Win32_Blitz2DRelease\blitz3d.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_LIB;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\blitz3d___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\blitz3d___Win32_Blitz3DRelease\blitz3d.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader />
|
||||
<ObjectFileName>.\blitz3d___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\blitz3d___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitz3d___Win32_Blitz3DRelease\blitz3d.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitz3d___Win32_Blitz3DRelease\blitz3d.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\blitz3d.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\blitz3d.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\blitz3d.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="animation.cpp" />
|
||||
<ClCompile Include="animator.cpp" />
|
||||
<ClCompile Include="brush.cpp" />
|
||||
<ClCompile Include="cachedtexture.cpp" />
|
||||
<ClCompile Include="camera.cpp" />
|
||||
<ClCompile Include="collision.cpp" />
|
||||
<ClCompile Include="entity.cpp" />
|
||||
<ClCompile Include="frustum.cpp" />
|
||||
<ClCompile Include="geom.cpp" />
|
||||
<ClCompile Include="light.cpp" />
|
||||
<ClCompile Include="listener.cpp" />
|
||||
<ClCompile Include="loader_3ds.cpp" />
|
||||
<ClCompile Include="loader_b3d.cpp" />
|
||||
<ClCompile Include="loader_x.cpp" />
|
||||
<ClCompile Include="md2model.cpp" />
|
||||
<ClCompile Include="md2norms.cpp" />
|
||||
<ClCompile Include="md2rep.cpp" />
|
||||
<ClCompile Include="meshcollider.cpp" />
|
||||
<ClCompile Include="meshloader.cpp" />
|
||||
<ClCompile Include="meshmodel.cpp" />
|
||||
<ClCompile Include="meshutil.cpp" />
|
||||
<ClCompile Include="mirror.cpp" />
|
||||
<ClCompile Include="model.cpp" />
|
||||
<ClCompile Include="object.cpp" />
|
||||
<ClCompile Include="pivot.cpp" />
|
||||
<ClCompile Include="planemodel.cpp" />
|
||||
<ClCompile Include="q3bspmodel.cpp" />
|
||||
<ClCompile Include="q3bsprep.cpp" />
|
||||
<ClCompile Include="sprite.cpp" />
|
||||
<ClCompile Include="std.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="surface.cpp" />
|
||||
<ClCompile Include="terrain.cpp" />
|
||||
<ClCompile Include="terrainrep.cpp" />
|
||||
<ClCompile Include="texture.cpp" />
|
||||
<ClCompile Include="world.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="animation.h" />
|
||||
<ClInclude Include="animator.h" />
|
||||
<ClInclude Include="blitz3d.h" />
|
||||
<ClInclude Include="brush.h" />
|
||||
<ClInclude Include="cachedtexture.h" />
|
||||
<ClInclude Include="camera.h" />
|
||||
<ClInclude Include="collision.h" />
|
||||
<ClInclude Include="entity.h" />
|
||||
<ClInclude Include="frustum.h" />
|
||||
<ClInclude Include="geom.h" />
|
||||
<ClInclude Include="light.h" />
|
||||
<ClInclude Include="listener.h" />
|
||||
<ClInclude Include="loader_3ds.h" />
|
||||
<ClInclude Include="loader_b3d.h" />
|
||||
<ClInclude Include="loader_x.h" />
|
||||
<ClInclude Include="md2model.h" />
|
||||
<ClInclude Include="md2norms.h" />
|
||||
<ClInclude Include="md2rep.h" />
|
||||
<ClInclude Include="meshcollider.h" />
|
||||
<ClInclude Include="meshloader.h" />
|
||||
<ClInclude Include="meshmodel.h" />
|
||||
<ClInclude Include="meshutil.h" />
|
||||
<ClInclude Include="mirror.h" />
|
||||
<ClInclude Include="model.h" />
|
||||
<ClInclude Include="object.h" />
|
||||
<ClInclude Include="pivot.h" />
|
||||
<ClInclude Include="planemodel.h" />
|
||||
<ClInclude Include="q3bspmodel.h" />
|
||||
<ClInclude Include="q3bsprep.h" />
|
||||
<ClInclude Include="rendercontext.h" />
|
||||
<ClInclude Include="sprite.h" />
|
||||
<ClInclude Include="std.h" />
|
||||
<ClInclude Include="surface.h" />
|
||||
<ClInclude Include="terrain.h" />
|
||||
<ClInclude Include="terrainrep.h" />
|
||||
<ClInclude Include="texture.h" />
|
||||
<ClInclude Include="world.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,233 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{962a947f-b247-4138-9efd-8b71759b7a57}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{8867a7d7-3bbe-4ef6-a38a-cd4e1a7180d9}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="animation.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="animator.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="brush.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="cachedtexture.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="camera.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="collision.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="entity.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="frustum.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="geom.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="light.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="listener.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="loader_3ds.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="loader_b3d.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="loader_x.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="md2model.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="md2norms.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="md2rep.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="meshcollider.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="meshloader.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="meshmodel.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="meshutil.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="mirror.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="model.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="object.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="pivot.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="planemodel.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="q3bspmodel.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="q3bsprep.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="sprite.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="std.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="surface.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="terrain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="terrainrep.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="texture.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="world.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="animation.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="animator.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="blitz3d.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="brush.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="cachedtexture.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="camera.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="collision.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="entity.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="frustum.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="geom.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="light.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="listener.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="loader_3ds.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="loader_b3d.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="loader_x.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="md2model.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="md2norms.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="md2rep.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="meshcollider.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="meshloader.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="meshmodel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="meshutil.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mirror.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="model.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="object.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="pivot.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="planemodel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="q3bspmodel.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="q3bsprep.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="rendercontext.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sprite.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="std.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="surface.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="terrain.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="terrainrep.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="texture.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="world.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -2,7 +2,7 @@
|
||||
#include "std.h"
|
||||
#include "collision.h"
|
||||
|
||||
const float COLLISION_EPSILON=.001f;
|
||||
const float COLLISION_FLT_EPSILON=.001f;
|
||||
|
||||
/*
|
||||
//
|
||||
@@ -202,7 +202,7 @@ bool Collision::update( const Line &line,float t,const Vector &n ){
|
||||
if( t>time ) return false;
|
||||
Plane p(line*t,n);
|
||||
if( p.n.dot( line.d )>=0 ) return false;
|
||||
if( p.distance(line.o)<-COLLISION_EPSILON ) return false;
|
||||
if( p.distance(line.o)<-COLLISION_FLT_EPSILON ) return false;
|
||||
|
||||
time=t;
|
||||
normal=n;
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
#include "geom.h"
|
||||
|
||||
extern const float COLLISION_EPSILON;
|
||||
extern const float COLLISION_FLT_EPSILON;
|
||||
|
||||
struct Collision{
|
||||
float time;
|
||||
|
||||
+327
-327
@@ -10,549 +10,549 @@ class Plane;
|
||||
class Matrix;
|
||||
class Transform;
|
||||
|
||||
const float PI=3.14159265359f; //180 degrees
|
||||
const float TWOPI=PI*2.0f; //360 degrees
|
||||
const float HALFPI=PI*.5f; //90 degrees
|
||||
const float QUARTERPI=PI*.25f; //45 degrees
|
||||
const float EPSILON=.000001f; //small value
|
||||
const float INFINITY=10000000.0f; //big value
|
||||
static float PI = 3.14159265359f; //180 degrees
|
||||
static float TWOPI = PI*2.0f; //360 degrees
|
||||
static float HALFPI = PI*.5f; //90 degrees
|
||||
static float QUARTERPI = PI*.25f; //45 degrees
|
||||
//static float FLT_EPSILON=.000001f; //small value
|
||||
//static float INFINITY=10000000.0f; //big value
|
||||
|
||||
class Vector{
|
||||
class Vector {
|
||||
public:
|
||||
float x,y,z;
|
||||
float x, y, z;
|
||||
|
||||
Vector():x(0),y(0),z(0){
|
||||
Vector() :x(0), y(0), z(0) {
|
||||
}
|
||||
Vector( float x,float y,float z ):x(x),y(y),z(z){
|
||||
Vector(float x, float y, float z) :x(x), y(y), z(z) {
|
||||
}
|
||||
operator float*(){
|
||||
operator float*() {
|
||||
return &x;
|
||||
}
|
||||
operator const float *(){
|
||||
operator const float *() {
|
||||
return &x;
|
||||
}
|
||||
float &operator[]( int n ){
|
||||
float &operator[](int n) {
|
||||
return (&x)[n];
|
||||
}
|
||||
float operator[]( int n )const{
|
||||
float operator[](int n)const {
|
||||
return (&x)[n];
|
||||
}
|
||||
Vector operator-()const{
|
||||
return Vector( -x,-y,-z );
|
||||
Vector operator-()const {
|
||||
return Vector(-x, -y, -z);
|
||||
}
|
||||
Vector operator*( float scale )const{
|
||||
return Vector( x*scale,y*scale,z*scale );
|
||||
Vector operator*(float scale)const {
|
||||
return Vector(x*scale, y*scale, z*scale);
|
||||
}
|
||||
Vector operator*( const Vector &q )const{
|
||||
return Vector( x*q.x,y*q.y,z*q.z );
|
||||
Vector operator*(const Vector &q)const {
|
||||
return Vector(x*q.x, y*q.y, z*q.z);
|
||||
}
|
||||
Vector operator/( float scale )const{
|
||||
return Vector( x/scale,y/scale,z/scale );
|
||||
Vector operator/(float scale)const {
|
||||
return Vector(x / scale, y / scale, z / scale);
|
||||
}
|
||||
Vector operator/( const Vector &q )const{
|
||||
return Vector( x/q.x,y/q.y,z/q.z );
|
||||
Vector operator/(const Vector &q)const {
|
||||
return Vector(x / q.x, y / q.y, z / q.z);
|
||||
}
|
||||
Vector operator+( const Vector &q )const{
|
||||
return Vector( x+q.x,y+q.y,z+q.z );
|
||||
Vector operator+(const Vector &q)const {
|
||||
return Vector(x + q.x, y + q.y, z + q.z);
|
||||
}
|
||||
Vector operator-( const Vector &q )const{
|
||||
return Vector( x-q.x,y-q.y,z-q.z );
|
||||
Vector operator-(const Vector &q)const {
|
||||
return Vector(x - q.x, y - q.y, z - q.z);
|
||||
}
|
||||
Vector &operator*=( float scale ){
|
||||
x*=scale;y*=scale;z*=scale;return *this;
|
||||
Vector &operator*=(float scale) {
|
||||
x *= scale; y *= scale; z *= scale; return *this;
|
||||
}
|
||||
Vector &operator*=( const Vector &q ){
|
||||
x*=q.x;y*=q.y;z*=q.z;return *this;
|
||||
Vector &operator*=(const Vector &q) {
|
||||
x *= q.x; y *= q.y; z *= q.z; return *this;
|
||||
}
|
||||
Vector &operator/=( float scale ){
|
||||
x/=scale;y/=scale;z/=scale;return *this;
|
||||
Vector &operator/=(float scale) {
|
||||
x /= scale; y /= scale; z /= scale; return *this;
|
||||
}
|
||||
Vector &operator/=( const Vector &q ){
|
||||
x/=q.x;y/=q.y;z/=q.z;return *this;
|
||||
Vector &operator/=(const Vector &q) {
|
||||
x /= q.x; y /= q.y; z /= q.z; return *this;
|
||||
}
|
||||
Vector &operator+=( const Vector &q ){
|
||||
x+=q.x;y+=q.y;z+=q.z;return *this;
|
||||
Vector &operator+=(const Vector &q) {
|
||||
x += q.x; y += q.y; z += q.z; return *this;
|
||||
}
|
||||
Vector &operator-=( const Vector &q ){
|
||||
x-=q.x;y-=q.y;z-=q.z;return *this;
|
||||
Vector &operator-=(const Vector &q) {
|
||||
x -= q.x; y -= q.y; z -= q.z; return *this;
|
||||
}
|
||||
bool operator<( const Vector &q )const{
|
||||
if( fabs(x-q.x)>EPSILON ) return x<q.x ? true : false;
|
||||
if( fabs(y-q.y)>EPSILON ) return y<q.y ? true : false;
|
||||
return fabs(z-q.z)>EPSILON && z<q.z;
|
||||
bool operator<(const Vector &q)const {
|
||||
if (fabs(x - q.x) > FLT_FLT_EPSILON) return x < q.x ? true : false;
|
||||
if (fabs(y - q.y) > FLT_FLT_EPSILON) return y < q.y ? true : false;
|
||||
return fabs(z - q.z) > FLT_FLT_EPSILON && z < q.z;
|
||||
}
|
||||
bool operator==( const Vector &q )const{
|
||||
return fabs(x-q.x)<=EPSILON && fabs(y-q.y)<=EPSILON && fabs(z-q.z)<=EPSILON;
|
||||
bool operator==(const Vector &q)const {
|
||||
return fabs(x - q.x) <= FLT_FLT_EPSILON && fabs(y - q.y) <= FLT_FLT_EPSILON && fabs(z - q.z) <= FLT_FLT_EPSILON;
|
||||
}
|
||||
bool operator!=( const Vector &q )const{
|
||||
return fabs(x-q.x)>EPSILON || fabs(y-q.y)>EPSILON || fabs(z-q.z)>EPSILON;
|
||||
bool operator!=(const Vector &q)const {
|
||||
return fabs(x - q.x) > FLT_FLT_EPSILON || fabs(y - q.y) > FLT_FLT_EPSILON || fabs(z - q.z) > FLT_FLT_EPSILON;
|
||||
}
|
||||
float dot( const Vector &q )const{
|
||||
return x*q.x+y*q.y+z*q.z;
|
||||
float dot(const Vector &q)const {
|
||||
return x*q.x + y*q.y + z*q.z;
|
||||
}
|
||||
Vector cross( const Vector &q )const{
|
||||
return Vector( y*q.z-z*q.y,z*q.x-x*q.z,x*q.y-y*q.x );
|
||||
Vector cross(const Vector &q)const {
|
||||
return Vector(y*q.z - z*q.y, z*q.x - x*q.z, x*q.y - y*q.x);
|
||||
}
|
||||
float length()const{
|
||||
return sqrtf(x*x+y*y+z*z);
|
||||
float length()const {
|
||||
return sqrtf(x*x + y*y + z*z);
|
||||
}
|
||||
float distance( const Vector &q )const{
|
||||
float dx=x-q.x,dy=y-q.y,dz=z-q.z;return sqrtf(dx*dx+dy*dy+dz*dz);
|
||||
float distance(const Vector &q)const {
|
||||
float dx = x - q.x, dy = y - q.y, dz = z - q.z; return sqrtf(dx*dx + dy*dy + dz*dz);
|
||||
}
|
||||
Vector normalized()const{
|
||||
float l=length();return Vector( x/l,y/l,z/l );
|
||||
Vector normalized()const {
|
||||
float l = length(); return Vector(x / l, y / l, z / l);
|
||||
}
|
||||
void normalize(){
|
||||
float l=length();x/=l;y/=l;z/=l;
|
||||
void normalize() {
|
||||
float l = length(); x /= l; y /= l; z /= l;
|
||||
}
|
||||
float yaw()const{
|
||||
return -atan2f( x,z );
|
||||
float yaw()const {
|
||||
return -atan2f(x, z);
|
||||
}
|
||||
float pitch()const{
|
||||
return -atan2f( y,sqrtf( x*x+z*z ) );
|
||||
float pitch()const {
|
||||
return -atan2f(y, sqrtf(x*x + z*z));
|
||||
}
|
||||
void clear(){
|
||||
x=y=z=0;
|
||||
void clear() {
|
||||
x = y = z = 0;
|
||||
}
|
||||
};
|
||||
|
||||
class Line{
|
||||
class Line {
|
||||
public:
|
||||
Vector o,d;
|
||||
Line(){
|
||||
Vector o, d;
|
||||
Line() {
|
||||
}
|
||||
Line( const Vector &o,const Vector &d ):o(o),d(d){
|
||||
Line(const Vector &o, const Vector &d) :o(o), d(d) {
|
||||
}
|
||||
Line operator+( const Vector &q )const{
|
||||
return Line( o+q,d );
|
||||
Line operator+(const Vector &q)const {
|
||||
return Line(o + q, d);
|
||||
}
|
||||
Line operator-( const Vector &q )const{
|
||||
return Line( o-q,d );
|
||||
Line operator-(const Vector &q)const {
|
||||
return Line(o - q, d);
|
||||
}
|
||||
Vector operator*( float q )const{
|
||||
return o+d*q;
|
||||
Vector operator*(float q)const {
|
||||
return o + d*q;
|
||||
}
|
||||
Vector nearest( const Vector &q )const{
|
||||
return o+d*(d.dot(q-o)/d.dot(d));
|
||||
Vector nearest(const Vector &q)const {
|
||||
return o + d*(d.dot(q - o) / d.dot(d));
|
||||
}
|
||||
};
|
||||
|
||||
class Plane{
|
||||
class Plane {
|
||||
public:
|
||||
Vector n;
|
||||
float d;
|
||||
|
||||
Plane():d(0){
|
||||
Plane() :d(0) {
|
||||
}
|
||||
//normal/offset form
|
||||
Plane( const Vector &n,float d ):n(n),d(d){
|
||||
Plane(const Vector &n, float d) :n(n), d(d) {
|
||||
}
|
||||
//point/normal form
|
||||
Plane( const Vector &p,const Vector &n ):n(n),d(-n.dot(p)){
|
||||
Plane(const Vector &p, const Vector &n) :n(n), d(-n.dot(p)) {
|
||||
}
|
||||
//create plane from tri
|
||||
Plane( const Vector &v0,const Vector &v1,const Vector &v2 ){
|
||||
n=(v1-v0).cross(v2-v0).normalized();d=-n.dot(v0);
|
||||
Plane(const Vector &v0, const Vector &v1, const Vector &v2) {
|
||||
n = (v1 - v0).cross(v2 - v0).normalized(); d = -n.dot(v0);
|
||||
}
|
||||
Plane operator-()const{
|
||||
return Plane( -n,-d );
|
||||
Plane operator-()const {
|
||||
return Plane(-n, -d);
|
||||
}
|
||||
float t_intersect( const Line &q )const{
|
||||
return -distance(q.o)/n.dot(q.d);
|
||||
float t_intersect(const Line &q)const {
|
||||
return -distance(q.o) / n.dot(q.d);
|
||||
}
|
||||
Vector intersect( const Line &q )const{
|
||||
Vector intersect(const Line &q)const {
|
||||
return q*t_intersect(q);
|
||||
}
|
||||
Line intersect( const Plane &q )const{
|
||||
Vector lv=n.cross( q.n ).normalized();
|
||||
return Line( q.intersect( Line( nearest( n*-d ),n.cross(lv) ) ),lv );
|
||||
Line intersect(const Plane &q)const {
|
||||
Vector lv = n.cross(q.n).normalized();
|
||||
return Line(q.intersect(Line(nearest(n*-d), n.cross(lv))), lv);
|
||||
}
|
||||
Vector nearest( const Vector &q )const{
|
||||
return q-n*distance(q);
|
||||
Vector nearest(const Vector &q)const {
|
||||
return q - n*distance(q);
|
||||
}
|
||||
void negate(){
|
||||
n=-n;d=-d;
|
||||
void negate() {
|
||||
n = -n; d = -d;
|
||||
}
|
||||
float distance( const Vector &q )const{
|
||||
return n.dot(q)+d;
|
||||
float distance(const Vector &q)const {
|
||||
return n.dot(q) + d;
|
||||
}
|
||||
};
|
||||
|
||||
struct Quat{
|
||||
struct Quat {
|
||||
float w;
|
||||
Vector v;
|
||||
Quat():w(1){
|
||||
Quat() :w(1) {
|
||||
}
|
||||
Quat( float w,const Vector &v ):w(w),v(v){
|
||||
Quat(float w, const Vector &v) :w(w), v(v) {
|
||||
}
|
||||
Quat operator-()const{
|
||||
return Quat( w,-v );
|
||||
Quat operator-()const {
|
||||
return Quat(w, -v);
|
||||
}
|
||||
Quat operator+( const Quat &q )const{
|
||||
return Quat( w+q.w,v+q.v );
|
||||
Quat operator+(const Quat &q)const {
|
||||
return Quat(w + q.w, v + q.v);
|
||||
}
|
||||
Quat operator-( const Quat &q )const{
|
||||
return Quat( w-q.w,v-q.v );
|
||||
Quat operator-(const Quat &q)const {
|
||||
return Quat(w - q.w, v - q.v);
|
||||
}
|
||||
Quat operator*( const Quat &q )const{
|
||||
return Quat( w*q.w-v.dot(q.v),q.v.cross(v)+q.v*w+v*q.w );
|
||||
Quat operator*(const Quat &q)const {
|
||||
return Quat(w*q.w - v.dot(q.v), q.v.cross(v) + q.v*w + v*q.w);
|
||||
}
|
||||
Vector operator*( const Vector &q )const{
|
||||
return (*this * Quat(0,q) * -*this).v;
|
||||
Vector operator*(const Vector &q)const {
|
||||
return (*this * Quat(0, q) * -*this).v;
|
||||
}
|
||||
Quat operator*( float q )const{
|
||||
return Quat( w*q,v*q );
|
||||
Quat operator*(float q)const {
|
||||
return Quat(w*q, v*q);
|
||||
}
|
||||
Quat operator/( float q )const{
|
||||
return Quat( w/q,v/q );
|
||||
Quat operator/(float q)const {
|
||||
return Quat(w / q, v / q);
|
||||
}
|
||||
float dot( const Quat &q )const{
|
||||
return v.x*q.v.x+v.y*q.v.y+v.z*q.v.z+w*q.w;
|
||||
float dot(const Quat &q)const {
|
||||
return v.x*q.v.x + v.y*q.v.y + v.z*q.v.z + w*q.w;
|
||||
}
|
||||
float length()const{
|
||||
return sqrtf( w*w+v.x*v.x+v.y*v.y+v.z*v.z );
|
||||
float length()const {
|
||||
return sqrtf(w*w + v.x*v.x + v.y*v.y + v.z*v.z);
|
||||
}
|
||||
void normalize(){
|
||||
*this=*this/length();
|
||||
void normalize() {
|
||||
*this = *this / length();
|
||||
}
|
||||
Quat normalized()const{
|
||||
return *this/length();
|
||||
Quat normalized()const {
|
||||
return *this / length();
|
||||
}
|
||||
Quat slerpTo( const Quat &q,float a )const{
|
||||
Quat t=q;
|
||||
float d=dot(q),b=1-a;
|
||||
if( d<0 ){ t.w=-t.w;t.v=-t.v;d=-d; }
|
||||
if( d<1-EPSILON ){
|
||||
float om=acosf( d );
|
||||
float si=sinf( om );
|
||||
a=sinf( a*om )/si;
|
||||
b=sinf( b*om )/si;
|
||||
Quat slerpTo(const Quat &q, float a)const {
|
||||
Quat t = q;
|
||||
float d = dot(q), b = 1 - a;
|
||||
if (d < 0) { t.w = -t.w; t.v = -t.v; d = -d; }
|
||||
if (d < 1 - FLT_FLT_EPSILON) {
|
||||
float om = acosf(d);
|
||||
float si = sinf(om);
|
||||
a = sinf(a*om) / si;
|
||||
b = sinf(b*om) / si;
|
||||
}
|
||||
return *this*b + t*a;
|
||||
}
|
||||
Vector i()const{
|
||||
float xz=v.x*v.z,wy=w*v.y;
|
||||
float xy=v.x*v.y,wz=w*v.z;
|
||||
float yy=v.y*v.y,zz=v.z*v.z;
|
||||
return Vector( 1-2*(yy+zz),2*(xy-wz),2*(xz+wy) );
|
||||
Vector i()const {
|
||||
float xz = v.x*v.z, wy = w*v.y;
|
||||
float xy = v.x*v.y, wz = w*v.z;
|
||||
float yy = v.y*v.y, zz = v.z*v.z;
|
||||
return Vector(1 - 2 * (yy + zz), 2 * (xy - wz), 2 * (xz + wy));
|
||||
}
|
||||
Vector j()const{
|
||||
float yz=v.y*v.z,wx=w*v.x;
|
||||
float xy=v.x*v.y,wz=w*v.z;
|
||||
float xx=v.x*v.x,zz=v.z*v.z;
|
||||
return Vector( 2*(xy+wz),1-2*(xx+zz),2*(yz-wx) );
|
||||
Vector j()const {
|
||||
float yz = v.y*v.z, wx = w*v.x;
|
||||
float xy = v.x*v.y, wz = w*v.z;
|
||||
float xx = v.x*v.x, zz = v.z*v.z;
|
||||
return Vector(2 * (xy + wz), 1 - 2 * (xx + zz), 2 * (yz - wx));
|
||||
}
|
||||
Vector k()const{
|
||||
float xz=v.x*v.z,wy=w*v.y;
|
||||
float yz=v.y*v.z,wx=w*v.x;
|
||||
float xx=v.x*v.x,yy=v.y*v.y;
|
||||
return Vector( 2*(xz-wy),2*(yz+wx),1-2*(xx+yy) );
|
||||
Vector k()const {
|
||||
float xz = v.x*v.z, wy = w*v.y;
|
||||
float yz = v.y*v.z, wx = w*v.x;
|
||||
float xx = v.x*v.x, yy = v.y*v.y;
|
||||
return Vector(2 * (xz - wy), 2 * (yz + wx), 1 - 2 * (xx + yy));
|
||||
}
|
||||
};
|
||||
|
||||
class Matrix{
|
||||
class Matrix {
|
||||
static Matrix tmps[64];
|
||||
static Matrix &alloc_tmp(){ static int tmp=0;return tmps[tmp++&63]; }
|
||||
static Matrix &alloc_tmp() { static int tmp = 0; return tmps[tmp++ & 63]; }
|
||||
friend class Transform;
|
||||
public:
|
||||
Vector i,j,k;
|
||||
Vector i, j, k;
|
||||
|
||||
Matrix():i(Vector(1,0,0)),j(Vector(0,1,0)),k(Vector(0,0,1)){
|
||||
Matrix() :i(Vector(1, 0, 0)), j(Vector(0, 1, 0)), k(Vector(0, 0, 1)) {
|
||||
}
|
||||
Matrix( const Vector &i,const Vector &j,const Vector &k ):i(i),j(j),k(k){
|
||||
Matrix(const Vector &i, const Vector &j, const Vector &k) :i(i), j(j), k(k) {
|
||||
}
|
||||
Matrix( const Quat &q ){
|
||||
float xx=q.v.x*q.v.x,yy=q.v.y*q.v.y,zz=q.v.z*q.v.z;
|
||||
float xy=q.v.x*q.v.y,xz=q.v.x*q.v.z,yz=q.v.y*q.v.z;
|
||||
float wx=q.w*q.v.x,wy=q.w*q.v.y,wz=q.w*q.v.z;
|
||||
i=Vector( 1-2*(yy+zz),2*(xy-wz),2*(xz+wy) ),
|
||||
j=Vector( 2*(xy+wz),1-2*(xx+zz),2*(yz-wx) ),
|
||||
k=Vector( 2*(xz-wy),2*(yz+wx),1-2*(xx+yy) );
|
||||
Matrix(const Quat &q) {
|
||||
float xx = q.v.x*q.v.x, yy = q.v.y*q.v.y, zz = q.v.z*q.v.z;
|
||||
float xy = q.v.x*q.v.y, xz = q.v.x*q.v.z, yz = q.v.y*q.v.z;
|
||||
float wx = q.w*q.v.x, wy = q.w*q.v.y, wz = q.w*q.v.z;
|
||||
i = Vector(1 - 2 * (yy + zz), 2 * (xy - wz), 2 * (xz + wy)),
|
||||
j = Vector(2 * (xy + wz), 1 - 2 * (xx + zz), 2 * (yz - wx)),
|
||||
k = Vector(2 * (xz - wy), 2 * (yz + wx), 1 - 2 * (xx + yy));
|
||||
}
|
||||
Matrix( float angle,const Vector &axis ){
|
||||
const Vector &u=axis;
|
||||
float c=cosf(angle),s=sinf(angle);
|
||||
float x2=axis.x*axis.x,y2=axis.y*axis.y,z2=axis.z*axis.z;
|
||||
i=Vector( x2+c*(1-x2),u.x*u.y*(1-c)-u.z*s,u.z*u.x*(1-c)+u.y*s );
|
||||
j=Vector( u.x*u.y*(1-c)+u.z*s,y2+c*(1-y2),u.y*u.z*(1-c)-u.x*s );
|
||||
k=Vector( u.z*u.x*(1-c)-u.y*s,u.y*u.z*(1-c)+u.x*s,z2+c*(1-z2) );
|
||||
Matrix(float angle, const Vector &axis) {
|
||||
const Vector &u = axis;
|
||||
float c = cosf(angle), s = sinf(angle);
|
||||
float x2 = axis.x*axis.x, y2 = axis.y*axis.y, z2 = axis.z*axis.z;
|
||||
i = Vector(x2 + c*(1 - x2), u.x*u.y*(1 - c) - u.z*s, u.z*u.x*(1 - c) + u.y*s);
|
||||
j = Vector(u.x*u.y*(1 - c) + u.z*s, y2 + c*(1 - y2), u.y*u.z*(1 - c) - u.x*s);
|
||||
k = Vector(u.z*u.x*(1 - c) - u.y*s, u.y*u.z*(1 - c) + u.x*s, z2 + c*(1 - z2));
|
||||
}
|
||||
Vector &operator[]( int n ){
|
||||
Vector &operator[](int n) {
|
||||
return (&i)[n];
|
||||
}
|
||||
const Vector &operator[]( int n )const{
|
||||
const Vector &operator[](int n)const {
|
||||
return (&i)[n];
|
||||
}
|
||||
Matrix &operator~()const{
|
||||
Matrix &m=alloc_tmp();
|
||||
m.i.x=i.x;m.i.y=j.x;m.i.z=k.x;
|
||||
m.j.x=i.y;m.j.y=j.y;m.j.z=k.y;
|
||||
m.k.x=i.z;m.k.y=j.z;m.k.z=k.z;
|
||||
Matrix &operator~()const {
|
||||
Matrix &m = alloc_tmp();
|
||||
m.i.x = i.x; m.i.y = j.x; m.i.z = k.x;
|
||||
m.j.x = i.y; m.j.y = j.y; m.j.z = k.y;
|
||||
m.k.x = i.z; m.k.y = j.z; m.k.z = k.z;
|
||||
return m;
|
||||
}
|
||||
float determinant()const{
|
||||
return i.x*(j.y*k.z-j.z*k.y )-i.y*(j.x*k.z-j.z*k.x )+i.z*(j.x*k.y-j.y*k.x );
|
||||
float determinant()const {
|
||||
return i.x*(j.y*k.z - j.z*k.y) - i.y*(j.x*k.z - j.z*k.x) + i.z*(j.x*k.y - j.y*k.x);
|
||||
}
|
||||
Matrix &operator-()const{
|
||||
Matrix &m=alloc_tmp();
|
||||
float t=1.0f/determinant();
|
||||
m.i.x= t*(j.y*k.z-j.z*k.y);m.i.y=-t*(i.y*k.z-i.z*k.y);m.i.z= t*(i.y*j.z-i.z*j.y);
|
||||
m.j.x=-t*(j.x*k.z-j.z*k.x);m.j.y= t*(i.x*k.z-i.z*k.x);m.j.z=-t*(i.x*j.z-i.z*j.x);
|
||||
m.k.x= t*(j.x*k.y-j.y*k.x);m.k.y=-t*(i.x*k.y-i.y*k.x);m.k.z= t*(i.x*j.y-i.y*j.x);
|
||||
Matrix &operator-()const {
|
||||
Matrix &m = alloc_tmp();
|
||||
float t = 1.0f / determinant();
|
||||
m.i.x = t*(j.y*k.z - j.z*k.y); m.i.y = -t*(i.y*k.z - i.z*k.y); m.i.z = t*(i.y*j.z - i.z*j.y);
|
||||
m.j.x = -t*(j.x*k.z - j.z*k.x); m.j.y = t*(i.x*k.z - i.z*k.x); m.j.z = -t*(i.x*j.z - i.z*j.x);
|
||||
m.k.x = t*(j.x*k.y - j.y*k.x); m.k.y = -t*(i.x*k.y - i.y*k.x); m.k.z = t*(i.x*j.y - i.y*j.x);
|
||||
return m;
|
||||
}
|
||||
Matrix &cofactor()const{
|
||||
Matrix &m=alloc_tmp();
|
||||
m.i.x= (j.y*k.z-j.z*k.y);m.i.y=-(j.x*k.z-j.z*k.x);m.i.z= (j.x*k.y-j.y*k.x);
|
||||
m.j.x=-(i.y*k.z-i.z*k.y);m.j.y= (i.x*k.z-i.z*k.x);m.j.z=-(i.x*k.y-i.y*k.x);
|
||||
m.k.x= (i.y*j.z-i.z*j.y);m.k.y=-(i.x*j.z-i.z*j.x);m.k.z= (i.x*j.y-i.y*j.x);
|
||||
Matrix &cofactor()const {
|
||||
Matrix &m = alloc_tmp();
|
||||
m.i.x = (j.y*k.z - j.z*k.y); m.i.y = -(j.x*k.z - j.z*k.x); m.i.z = (j.x*k.y - j.y*k.x);
|
||||
m.j.x = -(i.y*k.z - i.z*k.y); m.j.y = (i.x*k.z - i.z*k.x); m.j.z = -(i.x*k.y - i.y*k.x);
|
||||
m.k.x = (i.y*j.z - i.z*j.y); m.k.y = -(i.x*j.z - i.z*j.x); m.k.z = (i.x*j.y - i.y*j.x);
|
||||
return m;
|
||||
}
|
||||
bool operator==( const Matrix &q )const{
|
||||
return i==q.i && j==q.j && k==q.k;
|
||||
bool operator==(const Matrix &q)const {
|
||||
return i == q.i && j == q.j && k == q.k;
|
||||
}
|
||||
bool operator!=( const Matrix &q )const{
|
||||
return i!=q.i || j!=q.j || k!=q.k;
|
||||
bool operator!=(const Matrix &q)const {
|
||||
return i != q.i || j != q.j || k != q.k;
|
||||
}
|
||||
Vector operator*( const Vector &q )const{
|
||||
return Vector( i.x*q.x+j.x*q.y+k.x*q.z,i.y*q.x+j.y*q.y+k.y*q.z,i.z*q.x+j.z*q.y+k.z*q.z );
|
||||
Vector operator*(const Vector &q)const {
|
||||
return Vector(i.x*q.x + j.x*q.y + k.x*q.z, i.y*q.x + j.y*q.y + k.y*q.z, i.z*q.x + j.z*q.y + k.z*q.z);
|
||||
}
|
||||
Matrix &operator*( const Matrix &q )const{
|
||||
Matrix &m=alloc_tmp();
|
||||
m.i.x=i.x*q.i.x+j.x*q.i.y+k.x*q.i.z;m.i.y=i.y*q.i.x+j.y*q.i.y+k.y*q.i.z;m.i.z=i.z*q.i.x+j.z*q.i.y+k.z*q.i.z;
|
||||
m.j.x=i.x*q.j.x+j.x*q.j.y+k.x*q.j.z;m.j.y=i.y*q.j.x+j.y*q.j.y+k.y*q.j.z;m.j.z=i.z*q.j.x+j.z*q.j.y+k.z*q.j.z;
|
||||
m.k.x=i.x*q.k.x+j.x*q.k.y+k.x*q.k.z;m.k.y=i.y*q.k.x+j.y*q.k.y+k.y*q.k.z;m.k.z=i.z*q.k.x+j.z*q.k.y+k.z*q.k.z;
|
||||
Matrix &operator*(const Matrix &q)const {
|
||||
Matrix &m = alloc_tmp();
|
||||
m.i.x = i.x*q.i.x + j.x*q.i.y + k.x*q.i.z; m.i.y = i.y*q.i.x + j.y*q.i.y + k.y*q.i.z; m.i.z = i.z*q.i.x + j.z*q.i.y + k.z*q.i.z;
|
||||
m.j.x = i.x*q.j.x + j.x*q.j.y + k.x*q.j.z; m.j.y = i.y*q.j.x + j.y*q.j.y + k.y*q.j.z; m.j.z = i.z*q.j.x + j.z*q.j.y + k.z*q.j.z;
|
||||
m.k.x = i.x*q.k.x + j.x*q.k.y + k.x*q.k.z; m.k.y = i.y*q.k.x + j.y*q.k.y + k.y*q.k.z; m.k.z = i.z*q.k.x + j.z*q.k.y + k.z*q.k.z;
|
||||
return m;
|
||||
}
|
||||
void orthogonalize(){
|
||||
void orthogonalize() {
|
||||
k.normalize();
|
||||
i=j.cross( k ).normalized();
|
||||
j=k.cross( i );
|
||||
i = j.cross(k).normalized();
|
||||
j = k.cross(i);
|
||||
}
|
||||
Matrix &orthogonalized()const{
|
||||
Matrix &m=alloc_tmp();
|
||||
m=*this;m.orthogonalize();
|
||||
Matrix &orthogonalized()const {
|
||||
Matrix &m = alloc_tmp();
|
||||
m = *this; m.orthogonalize();
|
||||
return m;
|
||||
}
|
||||
};
|
||||
|
||||
class Box{
|
||||
class Box {
|
||||
public:
|
||||
Vector a,b;
|
||||
Box():a( Vector(INFINITY,INFINITY,INFINITY) ),b( Vector(-INFINITY,-INFINITY,-INFINITY) ){
|
||||
Vector a, b;
|
||||
Box() :a(Vector(INFINITY, INFINITY, INFINITY)), b(Vector(-INFINITY, -INFINITY, -INFINITY)) {
|
||||
}
|
||||
Box( const Vector &q ):a(q),b(q){
|
||||
Box(const Vector &q) :a(q), b(q) {
|
||||
}
|
||||
Box( const Vector &a,const Vector &b ):a(a),b(b){
|
||||
Box(const Vector &a, const Vector &b) :a(a), b(b) {
|
||||
}
|
||||
Box( const Line &l ):a(l.o),b(l.o){
|
||||
update( l.o+l.d );
|
||||
Box(const Line &l) :a(l.o), b(l.o) {
|
||||
update(l.o + l.d);
|
||||
}
|
||||
void clear(){
|
||||
a.x=a.y=a.z=INFINITY;
|
||||
b.x=b.y=b.z=-INFINITY;
|
||||
void clear() {
|
||||
a.x = a.y = a.z = INFINITY;
|
||||
b.x = b.y = b.z = -INFINITY;
|
||||
}
|
||||
bool empty()const{
|
||||
return b.x<a.x || b.y<a.y || b.z<a.z;
|
||||
bool empty()const {
|
||||
return b.x < a.x || b.y < a.y || b.z < a.z;
|
||||
}
|
||||
Vector centre()const{
|
||||
return Vector( (a.x+b.x)*.5f,(a.y+b.y)*.5f,(a.z+b.z)*.5f );
|
||||
Vector centre()const {
|
||||
return Vector((a.x + b.x)*.5f, (a.y + b.y)*.5f, (a.z + b.z)*.5f);
|
||||
}
|
||||
Vector corner( int n )const{
|
||||
return Vector( ((n&1)?b:a).x,((n&2)?b:a).y,((n&4)?b:a).z );
|
||||
Vector corner(int n)const {
|
||||
return Vector(((n & 1) ? b : a).x, ((n & 2) ? b : a).y, ((n & 4) ? b : a).z);
|
||||
}
|
||||
void update( const Vector &q ){
|
||||
if( q.x<a.x ) a.x=q.x;if( q.y<a.y ) a.y=q.y;if( q.z<a.z ) a.z=q.z;
|
||||
if( q.x>b.x ) b.x=q.x;if( q.y>b.y ) b.y=q.y;if( q.z>b.z ) b.z=q.z;
|
||||
void update(const Vector &q) {
|
||||
if (q.x < a.x) a.x = q.x; if (q.y < a.y) a.y = q.y; if (q.z < a.z) a.z = q.z;
|
||||
if (q.x > b.x) b.x = q.x; if (q.y > b.y) b.y = q.y; if (q.z > b.z) b.z = q.z;
|
||||
}
|
||||
void update( const Box &q ){
|
||||
if( q.a.x<a.x ) a.x=q.a.x;if( q.a.y<a.y ) a.y=q.a.y;if( q.a.z<a.z ) a.z=q.a.z;
|
||||
if( q.b.x>b.x ) b.x=q.b.x;if( q.b.y>b.y ) b.y=q.b.y;if( q.b.z>b.z ) b.z=q.b.z;
|
||||
void update(const Box &q) {
|
||||
if (q.a.x < a.x) a.x = q.a.x; if (q.a.y < a.y) a.y = q.a.y; if (q.a.z < a.z) a.z = q.a.z;
|
||||
if (q.b.x > b.x) b.x = q.b.x; if (q.b.y > b.y) b.y = q.b.y; if (q.b.z > b.z) b.z = q.b.z;
|
||||
}
|
||||
bool overlaps( const Box &q )const{
|
||||
bool overlaps(const Box &q)const {
|
||||
return
|
||||
(b.x<q.b.x?b.x:q.b.x)>=(a.x>q.a.x?a.x:q.a.x) &&
|
||||
(b.y<q.b.y?b.y:q.b.y)>=(a.y>q.a.y?a.y:q.a.y) &&
|
||||
(b.z<q.b.z?b.z:q.b.z)>=(a.z>q.a.z?a.z:q.a.z);
|
||||
(b.x < q.b.x ? b.x : q.b.x) >= (a.x > q.a.x ? a.x : q.a.x) &&
|
||||
(b.y < q.b.y ? b.y : q.b.y) >= (a.y > q.a.y ? a.y : q.a.y) &&
|
||||
(b.z < q.b.z ? b.z : q.b.z) >= (a.z > q.a.z ? a.z : q.a.z);
|
||||
}
|
||||
void expand( float n ){
|
||||
a.x-=n;a.y-=n;a.z-=n;b.x+=n;b.y+=n;b.z+=n;
|
||||
void expand(float n) {
|
||||
a.x -= n; a.y -= n; a.z -= n; b.x += n; b.y += n; b.z += n;
|
||||
}
|
||||
float width()const{
|
||||
return b.x-a.x;
|
||||
float width()const {
|
||||
return b.x - a.x;
|
||||
}
|
||||
float height()const{
|
||||
return b.y-a.y;
|
||||
float height()const {
|
||||
return b.y - a.y;
|
||||
}
|
||||
float depth()const{
|
||||
return b.z-a.z;
|
||||
float depth()const {
|
||||
return b.z - a.z;
|
||||
}
|
||||
bool contains( const Vector &q ){
|
||||
return q.x>=a.x && q.x<=b.x && q.y>=a.y && q.y<=b.y && q.z>=a.z && q.z<=b.z;
|
||||
bool contains(const Vector &q) {
|
||||
return q.x >= a.x && q.x <= b.x && q.y >= a.y && q.y <= b.y && q.z >= a.z && q.z <= b.z;
|
||||
}
|
||||
};
|
||||
|
||||
class Transform{
|
||||
class Transform {
|
||||
static Transform tmps[64];
|
||||
static Transform &alloc_tmp(){ static int tmp=0;return tmps[tmp++&63]; }
|
||||
static Transform &alloc_tmp() { static int tmp = 0; return tmps[tmp++ & 63]; }
|
||||
public:
|
||||
Matrix m;
|
||||
Vector v;
|
||||
|
||||
Transform(){
|
||||
Transform() {
|
||||
}
|
||||
Transform( const Matrix &m ):m(m){
|
||||
Transform(const Matrix &m) :m(m) {
|
||||
}
|
||||
Transform( const Vector &v ):v(v){
|
||||
Transform(const Vector &v) :v(v) {
|
||||
}
|
||||
Transform( const Matrix &m,const Vector &v ):m(m),v(v){
|
||||
Transform(const Matrix &m, const Vector &v) :m(m), v(v) {
|
||||
}
|
||||
Transform &operator-()const{
|
||||
Transform &t=alloc_tmp();
|
||||
t.m=-m;t.v=t.m*-v;
|
||||
Transform &operator-()const {
|
||||
Transform &t = alloc_tmp();
|
||||
t.m = -m; t.v = t.m*-v;
|
||||
return t;
|
||||
}
|
||||
Transform &operator~()const{
|
||||
Transform &t=alloc_tmp();
|
||||
t.m=~m;t.v=t.m*-v;
|
||||
Transform &operator~()const {
|
||||
Transform &t = alloc_tmp();
|
||||
t.m = ~m; t.v = t.m*-v;
|
||||
return t;
|
||||
}
|
||||
Vector operator*( const Vector &q )const{
|
||||
return m*q+v;
|
||||
Vector operator*(const Vector &q)const {
|
||||
return m*q + v;
|
||||
}
|
||||
Line operator*( const Line &q )const{
|
||||
Vector t=(*this)*q.o;
|
||||
return Line( t,(*this)*(q.o+q.d)-t );
|
||||
Line operator*(const Line &q)const {
|
||||
Vector t = (*this)*q.o;
|
||||
return Line(t, (*this)*(q.o + q.d) - t);
|
||||
}
|
||||
Box operator*( const Box &q )const{
|
||||
Box t( (*this*q.corner(0) ) );
|
||||
for( int k=1;k<8;++k ) t.update( *this*q.corner(k) );
|
||||
Box operator*(const Box &q)const {
|
||||
Box t((*this*q.corner(0)));
|
||||
for (int k = 1; k < 8; ++k) t.update(*this*q.corner(k));
|
||||
return t;
|
||||
}
|
||||
Transform &operator*( const Transform &q )const{
|
||||
Transform &t=alloc_tmp();
|
||||
t.m=m*q.m;t.v=m*q.v+v;
|
||||
Transform &operator*(const Transform &q)const {
|
||||
Transform &t = alloc_tmp();
|
||||
t.m = m*q.m; t.v = m*q.v + v;
|
||||
return t;
|
||||
}
|
||||
bool operator==( const Transform &q )const{
|
||||
return m==q.m && v==q.v;
|
||||
bool operator==(const Transform &q)const {
|
||||
return m == q.m && v == q.v;
|
||||
}
|
||||
bool operator!=( const Transform &q )const{
|
||||
return !operator==( q );
|
||||
bool operator!=(const Transform &q)const {
|
||||
return !operator==(q);
|
||||
}
|
||||
};
|
||||
|
||||
inline float transformRadius( float r,const Matrix &t ){
|
||||
static const float sq_3=sqrtf(1.0f/3.0f);
|
||||
return (t * Vector( sq_3,sq_3,sq_3 )).length()*r;
|
||||
inline float transformRadius(float r, const Matrix &t) {
|
||||
static const float sq_3 = sqrtf(1.0f / 3.0f);
|
||||
return (t * Vector(sq_3, sq_3, sq_3)).length()*r;
|
||||
}
|
||||
|
||||
inline Matrix pitchMatrix( float q ){
|
||||
return Matrix( Vector(1,0,0),Vector(0,cosf(q),sinf(q)),Vector(0,-sinf(q),cosf(q)) );
|
||||
inline Matrix pitchMatrix(float q) {
|
||||
return Matrix(Vector(1, 0, 0), Vector(0, cosf(q), sinf(q)), Vector(0, -sinf(q), cosf(q)));
|
||||
}
|
||||
|
||||
inline Matrix yawMatrix( float q ){
|
||||
return Matrix( Vector(cosf(q),0,sinf(q)),Vector(0,1,0),Vector(-sinf(q),0,cosf(q)) );
|
||||
inline Matrix yawMatrix(float q) {
|
||||
return Matrix(Vector(cosf(q), 0, sinf(q)), Vector(0, 1, 0), Vector(-sinf(q), 0, cosf(q)));
|
||||
}
|
||||
|
||||
inline Matrix rollMatrix( float q ){
|
||||
return Matrix( Vector(cosf(q),sinf(q),0),Vector(-sinf(q),cosf(q),0),Vector(0,0,1) );
|
||||
inline Matrix rollMatrix(float q) {
|
||||
return Matrix(Vector(cosf(q), sinf(q), 0), Vector(-sinf(q), cosf(q), 0), Vector(0, 0, 1));
|
||||
}
|
||||
|
||||
inline float matrixPitch( const Matrix &m ){
|
||||
inline float matrixPitch(const Matrix &m) {
|
||||
return m.k.pitch();
|
||||
// return asinf( -m.k.y );
|
||||
// return asinf( -m.k.y );
|
||||
}
|
||||
|
||||
inline float matrixYaw( const Matrix &m ){
|
||||
inline float matrixYaw(const Matrix &m) {
|
||||
return m.k.yaw();
|
||||
//return atan2f( -m.k.x,m.k.z );
|
||||
}
|
||||
|
||||
inline float matrixRoll( const Matrix &m ){
|
||||
return atan2f( m.i.y,m.j.y );
|
||||
inline float matrixRoll(const Matrix &m) {
|
||||
return atan2f(m.i.y, m.j.y);
|
||||
//Matrix t=pitchMatrix( -matrixPitch(m) )*yawMatrix( -matrixYaw(m) )*m;
|
||||
//return atan2f( t.i.y,t.i.x );
|
||||
}
|
||||
|
||||
inline Matrix scaleMatrix( float x,float y,float z ){
|
||||
return Matrix( Vector( x,0,0 ),Vector( 0,y,0 ),Vector( 0,0,z ) );
|
||||
inline Matrix scaleMatrix(float x, float y, float z) {
|
||||
return Matrix(Vector(x, 0, 0), Vector(0, y, 0), Vector(0, 0, z));
|
||||
}
|
||||
|
||||
inline Matrix scaleMatrix( const Vector &scale ){
|
||||
return Matrix( Vector( scale.x,0,0 ),Vector( 0,scale.y,0 ),Vector( 0,0,scale.z ) );
|
||||
inline Matrix scaleMatrix(const Vector &scale) {
|
||||
return Matrix(Vector(scale.x, 0, 0), Vector(0, scale.y, 0), Vector(0, 0, scale.z));
|
||||
}
|
||||
|
||||
inline Quat pitchQuat( float p ){
|
||||
return Quat( cosf(p/-2),Vector( sinf(p/-2),0,0 ) );
|
||||
inline Quat pitchQuat(float p) {
|
||||
return Quat(cosf(p / -2), Vector(sinf(p / -2), 0, 0));
|
||||
}
|
||||
|
||||
inline Quat yawQuat( float y ){
|
||||
return Quat( cosf(y/2),Vector( 0,sinf(y/2),0 ) );
|
||||
inline Quat yawQuat(float y) {
|
||||
return Quat(cosf(y / 2), Vector(0, sinf(y / 2), 0));
|
||||
}
|
||||
|
||||
inline Quat rollQuat( float r ){
|
||||
return Quat( cosf(r/-2),Vector( 0,0,sinf(r/-2) ) );
|
||||
inline Quat rollQuat(float r) {
|
||||
return Quat(cosf(r / -2), Vector(0, 0, sinf(r / -2)));
|
||||
}
|
||||
|
||||
//inline Quat rotationQuat( float p,float y,float r ){
|
||||
// return yawQuat(y)*pitchQuat(p)*rollQuat(r);
|
||||
//}
|
||||
|
||||
Quat rotationQuat( float p,float y,float r );
|
||||
Quat rotationQuat(float p, float y, float r);
|
||||
|
||||
inline Matrix rotationMatrix( float p,float y,float r ){
|
||||
inline Matrix rotationMatrix(float p, float y, float r) {
|
||||
return yawMatrix(y)*pitchMatrix(p)*rollMatrix(r);
|
||||
}
|
||||
|
||||
inline Matrix rotationMatrix( const Vector &rot ){
|
||||
inline Matrix rotationMatrix(const Vector &rot) {
|
||||
return yawMatrix(rot.y)*pitchMatrix(rot.x)*rollMatrix(rot.z);
|
||||
}
|
||||
|
||||
inline float quatPitch( const Quat &q ){
|
||||
inline float quatPitch(const Quat &q) {
|
||||
return q.k().pitch();
|
||||
}
|
||||
|
||||
inline float quatYaw( const Quat &q ){
|
||||
inline float quatYaw(const Quat &q) {
|
||||
return q.k().yaw();
|
||||
}
|
||||
|
||||
inline float quatRoll( const Quat &q ){
|
||||
// Vector i=q.i(),j=q.j();
|
||||
// return atan2f( i.y,j.y );
|
||||
return matrixRoll( q );
|
||||
inline float quatRoll(const Quat &q) {
|
||||
// Vector i=q.i(),j=q.j();
|
||||
// return atan2f( i.y,j.y );
|
||||
return matrixRoll(q);
|
||||
}
|
||||
|
||||
inline Quat matrixQuat( const Matrix &p ){
|
||||
Matrix m=p;
|
||||
inline Quat matrixQuat(const Matrix &p) {
|
||||
Matrix m = p;
|
||||
m.orthogonalize();
|
||||
float t=m.i.x+m.j.y+m.k.z,w,x,y,z;
|
||||
if( t>EPSILON ){
|
||||
t=sqrtf( t+1 )*2;
|
||||
x=(m.k.y-m.j.z)/t;
|
||||
y=(m.i.z-m.k.x)/t;
|
||||
z=(m.j.x-m.i.y)/t;
|
||||
w=t/4;
|
||||
}else if( m.i.x>m.j.y && m.i.x>m.k.z ){
|
||||
t=sqrtf( m.i.x-m.j.y-m.k.z+1 )*2;
|
||||
x=t/4;
|
||||
y=(m.j.x+m.i.y)/t;
|
||||
z=(m.i.z+m.k.x)/t;
|
||||
w=(m.k.y-m.j.z)/t;
|
||||
}else if( m.j.y>m.k.z ){
|
||||
t=sqrtf( m.j.y-m.k.z-m.i.x+1 )*2;
|
||||
x=(m.j.x+m.i.y)/t;
|
||||
y=t/4;
|
||||
z=(m.k.y+m.j.z)/t;
|
||||
w=(m.i.z-m.k.x)/t;
|
||||
}else{
|
||||
t=sqrtf( m.k.z-m.j.y-m.i.x+1 )*2;
|
||||
x=(m.i.z+m.k.x)/t;
|
||||
y=(m.k.y+m.j.z)/t;
|
||||
z=t/4;
|
||||
w=(m.j.x-m.i.y)/t;
|
||||
float t = m.i.x + m.j.y + m.k.z, w, x, y, z;
|
||||
if (t > FLT_FLT_EPSILON) {
|
||||
t = sqrtf(t + 1) * 2;
|
||||
x = (m.k.y - m.j.z) / t;
|
||||
y = (m.i.z - m.k.x) / t;
|
||||
z = (m.j.x - m.i.y) / t;
|
||||
w = t / 4;
|
||||
} else if (m.i.x > m.j.y && m.i.x > m.k.z) {
|
||||
t = sqrtf(m.i.x - m.j.y - m.k.z + 1) * 2;
|
||||
x = t / 4;
|
||||
y = (m.j.x + m.i.y) / t;
|
||||
z = (m.i.z + m.k.x) / t;
|
||||
w = (m.k.y - m.j.z) / t;
|
||||
} else if (m.j.y > m.k.z) {
|
||||
t = sqrtf(m.j.y - m.k.z - m.i.x + 1) * 2;
|
||||
x = (m.j.x + m.i.y) / t;
|
||||
y = t / 4;
|
||||
z = (m.k.y + m.j.z) / t;
|
||||
w = (m.i.z - m.k.x) / t;
|
||||
} else {
|
||||
t = sqrtf(m.k.z - m.j.y - m.i.x + 1) * 2;
|
||||
x = (m.i.z + m.k.x) / t;
|
||||
y = (m.k.y + m.j.z) / t;
|
||||
z = t / 4;
|
||||
w = (m.j.x - m.i.y) / t;
|
||||
}
|
||||
return Quat( w,Vector( x,y,z ) );
|
||||
return Quat(w, Vector(x, y, z));
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -343,7 +343,7 @@ static void parseAnimKeys( Animation *anim,int type ){
|
||||
in.sgetn( (char*)&angle,4 );
|
||||
in.sgetn( (char*)&axis,12 );
|
||||
// _log( "ROT_KEY: time="+itoa(time)+" angle="+ftoa(angle)+" axis="+ftoa(axis.x)+","+ftoa(axis.y)+","+ftoa(axis.z) );
|
||||
if( axis.length()>EPSILON ){
|
||||
if( axis.length()>FLT_EPSILON ){
|
||||
if( flip_tris ) angle=-angle;
|
||||
if( conv ) axis=conv_tform.m*axis;
|
||||
quat=Quat( cosf( angle/2 ),axis.normalized()*sinf( angle/2 ) )*quat;
|
||||
@@ -394,8 +394,8 @@ static void parseMeshInfo( MeshModel *root,float curr_time ){
|
||||
_log( "PIVOT: "+ftoa(pivot.x)+","+ftoa(pivot.y)+","+ftoa(pivot.z) );
|
||||
break;
|
||||
case 0xb014: //BOUNDBOX
|
||||
in.sgetn( (char*)&box.a,12 );
|
||||
in.sgetn( (char*)&box.b,12 );
|
||||
in.sgetn( (char*)&(box.a),12 );
|
||||
in.sgetn( (char*)&(box.b),12 );
|
||||
box_centre=box.centre();
|
||||
if( conv ) box_centre=conv_tform * box_centre;
|
||||
_log( "BOUNDBOX: min="+ftoa(box.a.x)+","+ftoa(box.a.y)+","+ftoa(box.a.z)+" max="+ftoa(box.b.x)+","+ftoa(box.b.y)+","+ftoa(box.b.z) );
|
||||
|
||||
@@ -34,7 +34,7 @@ static void parseAnimKey( IDirectXFileData *fileData,MeshModel *e ){
|
||||
if( n==4 ){
|
||||
Quat rot=*(Quat*)data;
|
||||
if( conv ){
|
||||
if( fabs(rot.w)<1-EPSILON ){
|
||||
if( fabs(rot.w)<1-FLT_EPSILON ){
|
||||
rot.normalize();
|
||||
//quat-to-axis/angle
|
||||
float half=acosf( rot.w );
|
||||
|
||||
+133
-133
@@ -6,12 +6,12 @@
|
||||
extern gxRuntime *gx_runtime;
|
||||
extern gxGraphics *gx_graphics;
|
||||
|
||||
static Vector *normals=0;
|
||||
static float tex_coords[2][2]={{0,0},{0,0}};
|
||||
static Vector *normals = 0;
|
||||
static float tex_coords[2][2] = { {0,0},{0,0} };
|
||||
|
||||
#pragma pack( push,1 )
|
||||
|
||||
struct md2_header{
|
||||
struct md2_header {
|
||||
int magic;
|
||||
int version;
|
||||
int skinWidth;
|
||||
@@ -31,139 +31,139 @@ struct md2_header{
|
||||
int offsetEnd;
|
||||
};
|
||||
|
||||
struct md2_uv{
|
||||
short u,v;
|
||||
struct md2_uv {
|
||||
short u, v;
|
||||
};
|
||||
|
||||
struct md2_vert{
|
||||
unsigned char x,y,z,n;
|
||||
struct md2_vert {
|
||||
unsigned char x, y, z, n;
|
||||
};
|
||||
|
||||
struct md2_tri{
|
||||
unsigned short verts[3],uvs[3];
|
||||
struct md2_tri {
|
||||
unsigned short verts[3], uvs[3];
|
||||
};
|
||||
|
||||
#pragma pack( pop )
|
||||
|
||||
struct t_vert{
|
||||
unsigned short i,uv;
|
||||
bool operator<( const t_vert &t )const{
|
||||
return memcmp( &i,&t.i,4 )<0;
|
||||
struct t_vert {
|
||||
unsigned short i, uv;
|
||||
bool operator<(const t_vert &t)const {
|
||||
return memcmp(&i, &t.i, 4) < 0;
|
||||
}
|
||||
};
|
||||
|
||||
struct t_tri{
|
||||
struct t_tri {
|
||||
unsigned short verts[3];
|
||||
};
|
||||
|
||||
MD2Rep::MD2Rep( const string &f ):
|
||||
mesh(0),n_verts(0),n_tris(0),n_frames(0){
|
||||
MD2Rep::MD2Rep(const string &f) :
|
||||
mesh(0), n_verts(0), n_tris(0), n_frames(0) {
|
||||
|
||||
filebuf in;
|
||||
md2_header header;
|
||||
|
||||
if( !in.open( f.c_str(),ios_base::in|ios_base::binary ) ) return;
|
||||
if( in.sgetn( (char*)&header,sizeof(header) )!=sizeof(header) ) return;
|
||||
if( header.magic!='2PDI' || header.version!=8 ) return;
|
||||
if (!in.open(f.c_str(), ios_base::in | ios_base::binary)) return;
|
||||
if (in.sgetn((char*)&header, sizeof(header)) != sizeof(header)) return;
|
||||
if (header.magic != '2PDI' || header.version != 8) return;
|
||||
|
||||
n_frames=header.numFrames;
|
||||
n_tris=header.numTriangles;
|
||||
n_frames = header.numFrames;
|
||||
n_tris = header.numTriangles;
|
||||
|
||||
//read in tex coords
|
||||
vector<md2_uv> md2_uvs;
|
||||
md2_uvs.resize( header.numTexCoords );
|
||||
in.pubseekpos( header.offsetTexCoords );
|
||||
in.sgetn( (char*)md2_uvs.begin(),header.numTexCoords*sizeof(md2_uv) );
|
||||
md2_uvs.resize(header.numTexCoords);
|
||||
in.pubseekpos(header.offsetTexCoords);
|
||||
in.sgetn((char*)(&md2_uvs.begin()[0]), header.numTexCoords * sizeof(md2_uv));
|
||||
|
||||
//read in triangles
|
||||
vector<md2_tri> md2_tris;
|
||||
md2_tris.resize( n_tris );
|
||||
in.pubseekpos( header.offsetTriangles );
|
||||
in.sgetn( (char*)md2_tris.begin(),n_tris*sizeof(md2_tri) );
|
||||
md2_tris.resize(n_tris);
|
||||
in.pubseekpos(header.offsetTriangles);
|
||||
in.sgetn((char*)(&md2_tris.begin()[0]), n_tris * sizeof(md2_tri));
|
||||
|
||||
vector<t_tri> t_tris;
|
||||
vector<t_vert> t_verts;
|
||||
map<t_vert,int> t_map;
|
||||
map<t_vert, int> t_map;
|
||||
|
||||
int k;
|
||||
for( k=0;k<n_tris;++k ){
|
||||
for (k = 0; k < n_tris; ++k) {
|
||||
t_tri tr;
|
||||
for( int j=0;j<3;++j ){
|
||||
for (int j = 0; j < 3; ++j) {
|
||||
t_vert t;
|
||||
t.i=md2_tris[k].verts[j];
|
||||
t.uv=md2_tris[k].uvs[j];
|
||||
map<t_vert,int>::iterator it=t_map.find( t );
|
||||
if( it==t_map.end() ){
|
||||
t.i = md2_tris[k].verts[j];
|
||||
t.uv = md2_tris[k].uvs[j];
|
||||
map<t_vert, int>::iterator it = t_map.find(t);
|
||||
if (it == t_map.end()) {
|
||||
//create new vert
|
||||
tr.verts[j]=t_map[t]=t_verts.size();
|
||||
t_verts.push_back( t );
|
||||
tr.verts[j] = t_map[t] = t_verts.size();
|
||||
t_verts.push_back(t);
|
||||
//add UVs
|
||||
VertexUV uv;
|
||||
uv.u=md2_uvs[t.uv].u/(float)(header.skinWidth);
|
||||
uv.v=md2_uvs[t.uv].v/(float)(header.skinHeight);
|
||||
uvs.push_back( uv );
|
||||
}else{
|
||||
uv.u = md2_uvs[t.uv].u / (float)(header.skinWidth);
|
||||
uv.v = md2_uvs[t.uv].v / (float)(header.skinHeight);
|
||||
uvs.push_back(uv);
|
||||
} else {
|
||||
//reuse vert
|
||||
tr.verts[j]=it->second;
|
||||
tr.verts[j] = it->second;
|
||||
}
|
||||
}
|
||||
t_tris.push_back( tr );
|
||||
t_tris.push_back(tr);
|
||||
}
|
||||
n_verts=t_verts.size();
|
||||
n_verts = t_verts.size();
|
||||
|
||||
frames.resize( n_frames );
|
||||
in.pubseekpos( header.offsetFrames );
|
||||
frames.resize(n_frames);
|
||||
in.pubseekpos(header.offsetFrames);
|
||||
|
||||
vector<md2_vert> md2_verts;
|
||||
md2_verts.resize( header.numVertices );
|
||||
md2_verts.resize(header.numVertices);
|
||||
|
||||
//read in frames
|
||||
for( k=0;k<n_frames;++k ){
|
||||
for (k = 0; k < n_frames; ++k) {
|
||||
char t_buff[16];
|
||||
Frame *fr=&frames[k];
|
||||
in.sgetn( (char*)&fr->scale,12 );
|
||||
in.sgetn( (char*)&fr->trans,12 );
|
||||
in.sgetn( t_buff,16 );
|
||||
Frame *fr = &frames[k];
|
||||
in.sgetn((char*)&fr->scale, 12);
|
||||
in.sgetn((char*)&fr->trans, 12);
|
||||
in.sgetn(t_buff, 16);
|
||||
|
||||
fr->scale=Vector( fr->scale.y,fr->scale.z,fr->scale.x );
|
||||
fr->trans=Vector( fr->trans.y,fr->trans.z,fr->trans.x );
|
||||
fr->scale = Vector(fr->scale.y, fr->scale.z, fr->scale.x);
|
||||
fr->trans = Vector(fr->trans.y, fr->trans.z, fr->trans.x);
|
||||
|
||||
//read vertices
|
||||
in.sgetn( (char*)md2_verts.begin(),header.numVertices*sizeof(md2_vert) );
|
||||
in.sgetn((char*)&md2_verts.begin()[0], header.numVertices * sizeof(md2_vert));
|
||||
|
||||
fr->verts.resize( n_verts );
|
||||
for( int j=0;j<n_verts;++j ){
|
||||
Vertex *v=&fr->verts[j];
|
||||
const t_vert &tv=t_verts[j];
|
||||
const md2_vert &mv=md2_verts[tv.i];
|
||||
v->x=mv.y;
|
||||
v->y=mv.z;
|
||||
v->z=mv.x;
|
||||
v->n=mv.n;
|
||||
box.update( Vector( v->x,v->y,v->z ) * fr->scale + fr->trans );
|
||||
fr->verts.resize(n_verts);
|
||||
for (int j = 0; j < n_verts; ++j) {
|
||||
Vertex *v = &fr->verts[j];
|
||||
const t_vert &tv = t_verts[j];
|
||||
const md2_vert &mv = md2_verts[tv.i];
|
||||
v->x = mv.y;
|
||||
v->y = mv.z;
|
||||
v->z = mv.x;
|
||||
v->n = mv.n;
|
||||
box.update(Vector(v->x, v->y, v->z) * fr->scale + fr->trans);
|
||||
}
|
||||
}
|
||||
|
||||
//create mesh and setup tris
|
||||
mesh=gx_graphics->createMesh( n_verts,n_tris,0 );
|
||||
mesh->lock( true );
|
||||
for( k=0;k<n_tris;++k ){
|
||||
const t_tri &t=t_tris[k];
|
||||
mesh->setTriangle( k,t.verts[0],t.verts[2],t.verts[1] );
|
||||
mesh = gx_graphics->createMesh(n_verts, n_tris, 0);
|
||||
mesh->lock(true);
|
||||
for (k = 0; k < n_tris; ++k) {
|
||||
const t_tri &t = t_tris[k];
|
||||
mesh->setTriangle(k, t.verts[0], t.verts[2], t.verts[1]);
|
||||
}
|
||||
mesh->unlock();
|
||||
|
||||
//build normals
|
||||
if( !normals ){
|
||||
normals=(Vector*)md2norms;
|
||||
for( int k=0;k<sizeof(md2norms)/12;++k ){
|
||||
normals[k]=Vector(normals[k].y,normals[k].z,normals[k].x);
|
||||
if (!normals) {
|
||||
normals = (Vector*)md2norms;
|
||||
for (int k = 0; k < sizeof(md2norms) / 12; ++k) {
|
||||
normals[k] = Vector(normals[k].y, normals[k].z, normals[k].x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MD2Rep::~MD2Rep(){
|
||||
if( mesh ) gx_graphics->freeMesh( mesh );
|
||||
MD2Rep::~MD2Rep() {
|
||||
if (mesh) gx_graphics->freeMesh(mesh);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -180,41 +180,41 @@ void MD2Rep::render( Vert *v,int frame ){
|
||||
}
|
||||
*/
|
||||
|
||||
void MD2Rep::render( Vert *v,int frame,float time ){
|
||||
void MD2Rep::render(Vert *v, int frame, float time) {
|
||||
|
||||
const Frame &frame_b=frames[frame];
|
||||
const Vertex *v_b=frame_b.verts.begin();
|
||||
const Vector scale_b=frame_b.scale,trans_b=frame_b.trans;
|
||||
const Frame &frame_b = frames[frame];
|
||||
const Vertex *v_b = (Vertex*)(&frame_b.verts.begin()[0]);
|
||||
const Vector scale_b = frame_b.scale, trans_b = frame_b.trans;
|
||||
|
||||
for( int k=0;k<n_verts;++v,++v_b,++k ){
|
||||
for (int k = 0; k < n_verts; ++v, ++v_b, ++k) {
|
||||
|
||||
const Vector t_b( v_b->x*scale_b.x+trans_b.x,v_b->y*scale_b.y+trans_b.y,v_b->z*scale_b.z+trans_b.z );
|
||||
const Vector &n_b=normals[ v_b->n ];
|
||||
const Vector t_b(v_b->x*scale_b.x + trans_b.x, v_b->y*scale_b.y + trans_b.y, v_b->z*scale_b.z + trans_b.z);
|
||||
const Vector &n_b = normals[v_b->n];
|
||||
|
||||
v->coords+=(t_b-v->coords)*time;
|
||||
v->normal+=(n_b-v->normal)*time;
|
||||
v->coords += (t_b - v->coords)*time;
|
||||
v->normal += (n_b - v->normal)*time;
|
||||
}
|
||||
}
|
||||
|
||||
void MD2Rep::render( Vert *v,int render_a,int render_b,float render_t ){
|
||||
const Frame &frame_a=frames[render_a];
|
||||
const Vector scale_a=frame_a.scale,trans_a=frame_a.trans;
|
||||
void MD2Rep::render(Vert *v, int render_a, int render_b, float render_t) {
|
||||
const Frame &frame_a = frames[render_a];
|
||||
const Vector scale_a = frame_a.scale, trans_a = frame_a.trans;
|
||||
|
||||
const Frame &frame_b=frames[render_b];
|
||||
const Vector scale_b=frame_b.scale,trans_b=frame_b.trans;
|
||||
const Frame &frame_b = frames[render_b];
|
||||
const Vector scale_b = frame_b.scale, trans_b = frame_b.trans;
|
||||
|
||||
const Vertex *v_a=frame_a.verts.begin();
|
||||
const Vertex *v_b=frame_b.verts.begin();
|
||||
const Vertex *v_a = (Vertex*)(&frame_a.verts.begin()[0]);
|
||||
const Vertex *v_b = (Vertex*)(&frame_b.verts.begin()[0]);
|
||||
|
||||
for( int k=0;k<n_verts;++v,++v_a,++v_b,++k ){
|
||||
for (int k = 0; k < n_verts; ++v, ++v_a, ++v_b, ++k) {
|
||||
|
||||
const Vector t_a( v_a->x*scale_a.x+trans_a.x,v_a->y*scale_a.y+trans_a.y,v_a->z*scale_a.z+trans_a.z );
|
||||
const Vector t_b( v_b->x*scale_b.x+trans_b.x,v_b->y*scale_b.y+trans_b.y,v_b->z*scale_b.z+trans_b.z );
|
||||
v->coords=(t_b-t_a)*render_t+t_a;
|
||||
const Vector t_a(v_a->x*scale_a.x + trans_a.x, v_a->y*scale_a.y + trans_a.y, v_a->z*scale_a.z + trans_a.z);
|
||||
const Vector t_b(v_b->x*scale_b.x + trans_b.x, v_b->y*scale_b.y + trans_b.y, v_b->z*scale_b.z + trans_b.z);
|
||||
v->coords = (t_b - t_a)*render_t + t_a;
|
||||
|
||||
const Vector &n_a=normals[v_a->n];
|
||||
const Vector &n_b=normals[v_b->n];
|
||||
v->normal=(n_b-n_a)*render_t+n_a;
|
||||
const Vector &n_a = normals[v_a->n];
|
||||
const Vector &n_b = normals[v_b->n];
|
||||
v->normal = (n_b - n_a)*render_t + n_a;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,36 +227,36 @@ void MD2Rep::render( Vert *v,const Vert *v_a,const Vert *v_b,float render_t ){
|
||||
}
|
||||
*/
|
||||
|
||||
void MD2Rep::render( Model *model,int render_a,int render_b,float render_t ){
|
||||
const Frame &frame_a=frames[render_a];
|
||||
const Vector scale_a=frame_a.scale,trans_a=frame_a.trans;
|
||||
void MD2Rep::render(Model *model, int render_a, int render_b, float render_t) {
|
||||
const Frame &frame_a = frames[render_a];
|
||||
const Vector scale_a = frame_a.scale, trans_a = frame_a.trans;
|
||||
|
||||
const Frame &frame_b=frames[render_b];
|
||||
const Vector scale_b=frame_b.scale,trans_b=frame_b.trans;
|
||||
const Frame &frame_b = frames[render_b];
|
||||
const Vector scale_b = frame_b.scale, trans_b = frame_b.trans;
|
||||
|
||||
const VertexUV *uv=uvs.begin();
|
||||
const Vertex *v_a=frame_a.verts.begin();
|
||||
const Vertex *v_b=frame_b.verts.begin();
|
||||
const VertexUV *uv = (VertexUV*)&uvs.begin()[0];
|
||||
const Vertex *v_a = (Vertex*)(&frame_a.verts.begin()[0]);
|
||||
const Vertex *v_b = (Vertex*)(&frame_b.verts.begin()[0]);
|
||||
|
||||
mesh->lock( true );
|
||||
for( int k=0;k<n_verts;++uv,++v_a,++v_b,++k ){
|
||||
mesh->lock(true);
|
||||
for (int k = 0; k < n_verts; ++uv, ++v_a, ++v_b, ++k) {
|
||||
|
||||
const Vector t_a( v_a->x*scale_a.x+trans_a.x,v_a->y*scale_a.y+trans_a.y,v_a->z*scale_a.z+trans_a.z );
|
||||
const Vector t_b( v_b->x*scale_b.x+trans_b.x,v_b->y*scale_b.y+trans_b.y,v_b->z*scale_b.z+trans_b.z );
|
||||
const Vector t( (t_b-t_a)*render_t+t_a );
|
||||
const Vector t_a(v_a->x*scale_a.x + trans_a.x, v_a->y*scale_a.y + trans_a.y, v_a->z*scale_a.z + trans_a.z);
|
||||
const Vector t_b(v_b->x*scale_b.x + trans_b.x, v_b->y*scale_b.y + trans_b.y, v_b->z*scale_b.z + trans_b.z);
|
||||
const Vector t((t_b - t_a)*render_t + t_a);
|
||||
|
||||
const Vector &n_a=normals[v_a->n];
|
||||
const Vector &n_b=normals[v_b->n];
|
||||
const Vector n( (n_b-n_a)*render_t+n_a );
|
||||
const Vector &n_a = normals[v_a->n];
|
||||
const Vector &n_b = normals[v_b->n];
|
||||
const Vector n((n_b - n_a)*render_t + n_a);
|
||||
|
||||
tex_coords[0][0]=uv->u;
|
||||
tex_coords[0][1]=uv->v;
|
||||
tex_coords[0][0] = uv->u;
|
||||
tex_coords[0][1] = uv->v;
|
||||
|
||||
mesh->setVertex( k,&t.x,&n.x,tex_coords );
|
||||
mesh->setVertex(k, &t.x, &n.x, tex_coords);
|
||||
}
|
||||
mesh->unlock();
|
||||
|
||||
model->enqueue( mesh,0,n_verts,0,n_tris );
|
||||
model->enqueue(mesh, 0, n_verts, 0, n_tris);
|
||||
}
|
||||
/*
|
||||
void MD2Rep::render( Model *model,const Vert *v_a,const Vert *v_b,float render_t ){
|
||||
@@ -280,30 +280,30 @@ void MD2Rep::render( Model *model,const Vert *v_a,const Vert *v_b,float render_t
|
||||
}
|
||||
*/
|
||||
|
||||
void MD2Rep::render( Model *model,const Vert *v_a,int render_b,float render_t ){
|
||||
void MD2Rep::render(Model *model, const Vert *v_a, int render_b, float render_t) {
|
||||
|
||||
const Frame &frame_b=frames[render_b];
|
||||
const Vector scale_b=frame_b.scale,trans_b=frame_b.trans;
|
||||
const Frame &frame_b = frames[render_b];
|
||||
const Vector scale_b = frame_b.scale, trans_b = frame_b.trans;
|
||||
|
||||
const VertexUV *uv=uvs.begin();
|
||||
const Vertex *v_b=frame_b.verts.begin();
|
||||
const VertexUV *uv = (VertexUV*)&uvs.begin()[0];
|
||||
const Vertex *v_b = (Vertex*)&frame_b.verts.begin()[0];
|
||||
|
||||
mesh->lock( true );
|
||||
for( int k=0;k<n_verts;++uv,++v_a,++v_b,++k ){
|
||||
mesh->lock(true);
|
||||
for (int k = 0; k < n_verts; ++uv, ++v_a, ++v_b, ++k) {
|
||||
|
||||
const Vector t_b( v_b->x*scale_b.x+trans_b.x,v_b->y*scale_b.y+trans_b.y,v_b->z*scale_b.z+trans_b.z );
|
||||
const Vector t( (t_b-v_a->coords)*render_t+v_a->coords );
|
||||
const Vector t_b(v_b->x*scale_b.x + trans_b.x, v_b->y*scale_b.y + trans_b.y, v_b->z*scale_b.z + trans_b.z);
|
||||
const Vector t((t_b - v_a->coords)*render_t + v_a->coords);
|
||||
|
||||
const Vector &n_b=normals[v_b->n];
|
||||
const Vector n( (n_b-v_a->normal)*render_t+v_a->normal );
|
||||
const Vector &n_b = normals[v_b->n];
|
||||
const Vector n((n_b - v_a->normal)*render_t + v_a->normal);
|
||||
|
||||
tex_coords[0][0]=uv->u;
|
||||
tex_coords[0][1]=uv->v;
|
||||
tex_coords[0][0] = uv->u;
|
||||
tex_coords[0][1] = uv->v;
|
||||
|
||||
mesh->setVertex( k,&t.x,&n.x,tex_coords );
|
||||
mesh->setVertex(k, &t.x, &n.x, tex_coords);
|
||||
}
|
||||
mesh->unlock();
|
||||
|
||||
model->enqueue( mesh,0,n_verts,0,n_tris );
|
||||
model->enqueue(mesh, 0, n_verts, 0, n_tris);
|
||||
}
|
||||
|
||||
|
||||
@@ -166,11 +166,11 @@ Vector static tf( const Vector &v ){
|
||||
}
|
||||
|
||||
#ifdef BETA
|
||||
static log( const string &t ){
|
||||
static int log( const string &t ){
|
||||
gx_runtime->debugLog( t.c_str() );
|
||||
}
|
||||
#else
|
||||
static log( const string &t ){}
|
||||
static int log( const string &t ){}
|
||||
#endif
|
||||
|
||||
static Surf *findSurf( q3_face *f ){
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ void Surface::updateNormals(){
|
||||
const Vector &v1=vertices[t.verts[1]].coords;
|
||||
const Vector &v2=vertices[t.verts[2]].coords;
|
||||
Vector n=(v1-v0).cross(v2-v0);
|
||||
if( n.length()<=EPSILON ) continue;
|
||||
if( n.length()<= FLT_FLT_EPSILON ) continue;
|
||||
n.normalize();
|
||||
norm_map[v0]+=n;
|
||||
norm_map[v1]+=n;
|
||||
|
||||
@@ -15,7 +15,7 @@ static const TerrainRep *curr;
|
||||
static Frustum frustum;
|
||||
static int out_cnt,proc_cnt,clip_cnt;
|
||||
|
||||
static float proj_epsilon=EPSILON; //.01f;
|
||||
static float proj_epsilon= FLT_FLT_EPSILON; //.01f;
|
||||
|
||||
struct TerrainRep::Cell{
|
||||
unsigned char height;
|
||||
@@ -259,7 +259,7 @@ void TerrainRep::insert( Tri *t ){
|
||||
Vector v=Vector( verts[t->v1].v+verts[t->v2].v )/2;
|
||||
// float d=eye_plane.distance( v );
|
||||
float d=eye_vec.distance( v );
|
||||
if( d<EPSILON ) d=EPSILON;
|
||||
if( d<FLT_FLT_EPSILON ) d= FLT_FLT_EPSILON;
|
||||
t->proj_err=errors[t->id].error/d;
|
||||
if( t->proj_err>proj_epsilon ){
|
||||
tri_que.push( t );
|
||||
@@ -344,7 +344,7 @@ TerrainRep::Error TerrainRep::calcErr( int id,const Vert &v0,const Vert &v1,cons
|
||||
|
||||
Vert tv( (v1.x+v2.x)/2,(v1.z+v2.z)/2 );
|
||||
float e=fabs(tv.v.y-(v1.v.y+v2.v.y)/2);
|
||||
et.error= e>=1 ? 255 : ceil( (e-EPSILON)*255.0f );
|
||||
et.error= e>=1 ? 255 : ceil( (e- FLT_FLT_EPSILON)*255.0f );
|
||||
|
||||
Error el=calcErr( id*2,tv,v2,v0 );
|
||||
Error er=calcErr( id*2+1,tv,v0,v1 );
|
||||
@@ -382,7 +382,7 @@ TerrainRep::Error TerrainRep::calcErr( int id,int x,int z,const Vert &v0,const V
|
||||
|
||||
Vert tv( (v1.x+v2.x)/2,(v1.z+v2.z)/2 );
|
||||
float e=fabs(tv.v.y-(v1.v.y+v2.v.y)/2);
|
||||
et.error= e>=1 ? 255 : ceil( (e-EPSILON)*255.0f );
|
||||
et.error= e>=1 ? 255 : ceil( (e- FLT_FLT_EPSILON)*255.0f );
|
||||
|
||||
Error el=calcErr( id*2,x,z,tv,v2,v0 );
|
||||
Error er=calcErr( id*2+1,x,z,tv,v0,v1 );
|
||||
|
||||
+9
-9
@@ -234,10 +234,10 @@ void World::collide( Object *src ){
|
||||
|
||||
Plane coll_plane( coll_line*coll.time,coll.normal );
|
||||
|
||||
coll_plane.d-=COLLISION_EPSILON;
|
||||
coll_plane.d-=COLLISION_FLT_EPSILON;
|
||||
coll.time=coll_plane.t_intersect( coll_line );
|
||||
|
||||
if( coll.time>0 ){// && fabs(coll.normal.dot( coll_line.d ))>EPSILON ){
|
||||
if( coll.time>0 ){// && fabs(coll.normal.dot( coll_line.d ))>FLT_EPSILON ){
|
||||
//update source position - ONLY IF AHEAD!
|
||||
sv=coll_line*coll.time;
|
||||
td*=1-coll.time;
|
||||
@@ -257,7 +257,7 @@ void World::collide( Object *src ){
|
||||
}else if( n_hit==1 ){
|
||||
if( planes[0].distance(nv)>=0 ){
|
||||
dv=nv;n_hit=0;
|
||||
}else if( fabs( planes[0].n.dot( coll_plane.n ) )<1-EPSILON ){
|
||||
}else if( fabs( planes[0].n.dot( coll_plane.n ) )<1-FLT_FLT_EPSILON ){
|
||||
dv=coll_plane.intersect( planes[0] ).nearest( dv );
|
||||
}else{
|
||||
//SQUISHED!
|
||||
@@ -277,11 +277,11 @@ void World::collide( Object *src ){
|
||||
|
||||
if( coll_info->response==COLLISION_RESPONSE_SLIDE ){
|
||||
float d=dd.length();
|
||||
if( d<=EPSILON ){ dv=sv;break; }
|
||||
if( d<= FLT_FLT_EPSILON ){ dv=sv;break; }
|
||||
if( d>td ) dd*=td/d;
|
||||
}else if( coll_info->response==COLLISION_RESPONSE_SLIDEXZ ){
|
||||
float d=Vector( dd.x,0,dd.z ).length();
|
||||
if( d<=EPSILON ){ dv=sv;break; }
|
||||
if( d<= FLT_FLT_EPSILON ){ dv=sv;break; }
|
||||
if( d>td_xz ) dd*=td_xz/d;
|
||||
}
|
||||
|
||||
@@ -396,7 +396,7 @@ void World::collide( Object *src ){
|
||||
//move plane out a bit (cough)
|
||||
coll_plane.d-=.001f;
|
||||
|
||||
if( fabs(coll.normal.dot( coll_line.d ))>EPSILON ){
|
||||
if( fabs(coll.normal.dot( coll_line.d ))>FLT_EPSILON ){
|
||||
float t=coll_plane.t_intersect( coll_line );
|
||||
//update source position - ONLY IF AHEAD!
|
||||
if( t>0 ){
|
||||
@@ -421,7 +421,7 @@ void World::collide( Object *src ){
|
||||
}else if( n_hit==1 ){
|
||||
if( planes[0].distance(nv)>=0 ){
|
||||
dv=nv;n_hit=0;
|
||||
}else if( fabs( planes[0].n.dot( coll_plane.n ) )<1-EPSILON ){
|
||||
}else if( fabs( planes[0].n.dot( coll_plane.n ) )<1-FLT_EPSILON ){
|
||||
dv=coll_plane.intersect( planes[0] ).nearest( dv );
|
||||
}else{
|
||||
hits=MAX_HITS;break;
|
||||
@@ -439,11 +439,11 @@ void World::collide( Object *src ){
|
||||
|
||||
if( coll_info->response==COLLISION_RESPONSE_SLIDE ){
|
||||
float d=dd.length();
|
||||
if( d<=EPSILON ){ dv=sv;break; }
|
||||
if( d<=FLT_EPSILON ){ dv=sv;break; }
|
||||
if( d>td ) dd*=td/d;
|
||||
}else if( coll_info->response==COLLISION_RESPONSE_SLIDEXZ ){
|
||||
float d=Vector( dd.x,0,dd.z ).length();
|
||||
if( d<=EPSILON ){ dv=sv;break; }
|
||||
if( d<=FLT_EPSILON ){ dv=sv;break; }
|
||||
if( d>td_xz ) dd*=td_xz/d;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,320 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<Keyword>MFCProj</Keyword>
|
||||
<ProjectGuid>{B61D8348-B715-42B8-A759-C7BBB0C8CD4D}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\blitzide___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\blitzide___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\blitzide___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\blitzide___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\blitzide___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\blitzide___Win32_Blitz2DRelease\blitzide.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\blitzide___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\blitzide___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\blitzide___Win32_Blitz2DRelease\blitzide.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitzide___Win32_Blitz2DRelease\blitzide.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<OutputFile>..\..\release\blitz2drelease\bin\ide.exe</OutputFile>
|
||||
<AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_WINDOWS;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\blitzide___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\blitzide___Win32_Blitz3DRelease\blitzide.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader />
|
||||
<ObjectFileName>.\blitzide___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\blitzide___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\blitzide___Win32_Blitz3DRelease\blitzide.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\blitzide___Win32_Blitz3DRelease\blitzide.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<OutputFile>../_release/bin/ide.exe</OutputFile>
|
||||
<AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\blitzide.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Debug\blitzide.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\blitzide.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<IgnoreSpecificDefaultLibraries>afxmem.obj;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<OutputFile>..\blitzbasic\bin\ide.exe</OutputFile>
|
||||
<AdditionalOptions> /FIXED:NO</AdditionalOptions>
|
||||
<AdditionalDependencies>ddraw.lib;dinput.lib;dsound.lib;dplayx.lib;dxguid.lib;winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\blitzide.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>stdafx.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Release\blitzide.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\blitzide.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
|
||||
<OutputFile>..\blitzbasic\bin\ide.exe</OutputFile>
|
||||
<AdditionalDependencies>winmm.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="about.cpp" />
|
||||
<ClCompile Include="blitzide.cpp" />
|
||||
<ClCompile Include="editor.cpp" />
|
||||
<ClCompile Include="funclist.cpp" />
|
||||
<ClCompile Include="htmlhelp.cpp" />
|
||||
<ClCompile Include="libs.cpp" />
|
||||
<ClCompile Include="mainframe.cpp" />
|
||||
<ClCompile Include="prefs.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">stdafx.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">stdafx.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">stdafx.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">stdafx.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="tabber.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="blitzide.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="about.h" />
|
||||
<ClInclude Include="blitzide.h" />
|
||||
<ClInclude Include="editor.h" />
|
||||
<ClInclude Include="funclist.h" />
|
||||
<ClInclude Include="htmlhelp.h" />
|
||||
<ClInclude Include="libs.h" />
|
||||
<ClInclude Include="mainframe.h" />
|
||||
<ClInclude Include="prefs.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="tabber.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="b3dlogo.bmp" />
|
||||
<Image Include="bplogo.bmp" />
|
||||
<Image Include="IDE (logo, no code) 32.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\config\config.vcxproj">
|
||||
<Project>{3e355353-96d8-4aaf-bf95-8e6ca0d4b1ba}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{9c2049a6-f32f-4502-857f-a4ae3ffa8d7d}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{a084b10a-802f-4ff7-b0fa-c89f7b661e28}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="about.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="blitzide.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="editor.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="funclist.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="htmlhelp.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="libs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="mainframe.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="prefs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="tabber.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="blitzide.rc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="about.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="blitzide.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="editor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="funclist.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="htmlhelp.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="libs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mainframe.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="prefs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="tabber.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="b3dlogo.bmp" />
|
||||
<Image Include="bplogo.bmp" />
|
||||
<Image Include="IDE (logo, no code) 32.ico" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -74,8 +74,8 @@ private:
|
||||
CToolBar toolBar;
|
||||
CStatusBar statusBar;
|
||||
|
||||
map<CWnd*,Editor*> editors;
|
||||
map<CWnd*,HtmlHelp*> helps;
|
||||
std::map<CWnd*, Editor*> editors;
|
||||
std::map<CWnd*, HtmlHelp*> helps;
|
||||
|
||||
string last_quick_help;
|
||||
|
||||
|
||||
@@ -0,0 +1,334 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{D884A075-E3B8-44E1-838D-74F28B33391B}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\compiler___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\compiler___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\compiler___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\compiler___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\compiler___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\compiler___Win32_Blitz2DRelease\compiler.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\compiler___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\compiler___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\compiler___Win32_Blitz2DRelease\compiler.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\compiler___Win32_Blitz2DRelease\compiler.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_LIB;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\compiler___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\compiler___Win32_Blitz3DRelease\compiler.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader />
|
||||
<ObjectFileName>.\compiler___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\compiler___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\compiler___Win32_Blitz3DRelease\compiler.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\compiler___Win32_Blitz3DRelease\compiler.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\compiler.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\compiler.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\compiler.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\compiler.pch</PrecompiledHeaderOutputFile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile>std.h</PrecompiledHeaderFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\compiler.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\compiler.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="assem_x86\asm_insts.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="assem_x86\assem_x86.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="assem_x86\operand.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="codegen_x86\codegen_x86.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="codegen_x86\tile.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Use</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="decl.cpp" />
|
||||
<ClCompile Include="declnode.cpp" />
|
||||
<ClCompile Include="environ.cpp" />
|
||||
<ClCompile Include="exprnode.cpp" />
|
||||
<ClCompile Include="node.cpp" />
|
||||
<ClCompile Include="parser.cpp" />
|
||||
<ClCompile Include="prognode.cpp" />
|
||||
<ClCompile Include="std.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">std.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">std.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stmtnode.cpp" />
|
||||
<ClCompile Include="toker.cpp" />
|
||||
<ClCompile Include="type.cpp" />
|
||||
<ClCompile Include="varnode.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="assem.h" />
|
||||
<ClInclude Include="assem_x86\assem_x86.h" />
|
||||
<ClInclude Include="assem_x86\insts.h" />
|
||||
<ClInclude Include="assem_x86\operand.h" />
|
||||
<ClInclude Include="codegen.h" />
|
||||
<ClInclude Include="codegen_x86\codegen_x86.h" />
|
||||
<ClInclude Include="codegen_x86\tile.h" />
|
||||
<ClInclude Include="decl.h" />
|
||||
<ClInclude Include="declnode.h" />
|
||||
<ClInclude Include="environ.h" />
|
||||
<ClInclude Include="ex.h" />
|
||||
<ClInclude Include="exprnode.h" />
|
||||
<ClInclude Include="label.h" />
|
||||
<ClInclude Include="node.h" />
|
||||
<ClInclude Include="nodes.h" />
|
||||
<ClInclude Include="parser.h" />
|
||||
<ClInclude Include="prognode.h" />
|
||||
<ClInclude Include="std.h" />
|
||||
<ClInclude Include="stmtnode.h" />
|
||||
<ClInclude Include="toker.h" />
|
||||
<ClInclude Include="type.h" />
|
||||
<ClInclude Include="varnode.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\config\config.vcxproj">
|
||||
<Project>{3e355353-96d8-4aaf-bf95-8e6ca0d4b1ba}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\stdutil\stdutil.vcxproj">
|
||||
<Project>{6bcfc5ca-ea71-4ae9-8b96-28b8701f939e}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="nodes">
|
||||
<UniqueIdentifier>{0b6321df-3a3e-4216-9d78-49d53be3c776}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="environ">
|
||||
<UniqueIdentifier>{7504da95-9f66-48b8-a5a8-18b4ea7e3f61}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="parser">
|
||||
<UniqueIdentifier>{bd57d294-2c5f-436a-b0ea-611753bab52a}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="codegen">
|
||||
<UniqueIdentifier>{2d9d1b9e-3980-46dc-8780-4acfc27cdfe1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="codegen\codegen_x86">
|
||||
<UniqueIdentifier>{a3cafe0f-afd9-403e-9b3d-4274d9934b74}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="assem">
|
||||
<UniqueIdentifier>{780f6104-16ed-450b-870a-be4469b42eb9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="assem\assem_x86">
|
||||
<UniqueIdentifier>{3990d4b7-2d61-49b0-b1dd-019167e36b1d}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="declnode.cpp">
|
||||
<Filter>nodes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="exprnode.cpp">
|
||||
<Filter>nodes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="node.cpp">
|
||||
<Filter>nodes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="prognode.cpp">
|
||||
<Filter>nodes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stmtnode.cpp">
|
||||
<Filter>nodes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="varnode.cpp">
|
||||
<Filter>nodes</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="decl.cpp">
|
||||
<Filter>environ</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="environ.cpp">
|
||||
<Filter>environ</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="type.cpp">
|
||||
<Filter>environ</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="parser.cpp">
|
||||
<Filter>parser</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="toker.cpp">
|
||||
<Filter>parser</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="codegen_x86\codegen_x86.cpp">
|
||||
<Filter>codegen\codegen_x86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="codegen_x86\tile.cpp">
|
||||
<Filter>codegen\codegen_x86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="assem_x86\asm_insts.cpp">
|
||||
<Filter>assem\assem_x86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="assem_x86\assem_x86.cpp">
|
||||
<Filter>assem\assem_x86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="assem_x86\operand.cpp">
|
||||
<Filter>assem\assem_x86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="std.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="declnode.h">
|
||||
<Filter>nodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="exprnode.h">
|
||||
<Filter>nodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="node.h">
|
||||
<Filter>nodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="nodes.h">
|
||||
<Filter>nodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="prognode.h">
|
||||
<Filter>nodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stmtnode.h">
|
||||
<Filter>nodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="varnode.h">
|
||||
<Filter>nodes</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="decl.h">
|
||||
<Filter>environ</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="environ.h">
|
||||
<Filter>environ</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="label.h">
|
||||
<Filter>environ</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="type.h">
|
||||
<Filter>environ</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="parser.h">
|
||||
<Filter>parser</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="toker.h">
|
||||
<Filter>parser</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="codegen_x86\codegen_x86.h">
|
||||
<Filter>codegen\codegen_x86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="codegen_x86\tile.h">
|
||||
<Filter>codegen\codegen_x86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="codegen.h">
|
||||
<Filter>codegen</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="assem_x86\assem_x86.h">
|
||||
<Filter>assem\assem_x86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="assem_x86\insts.h">
|
||||
<Filter>assem\assem_x86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="assem_x86\operand.h">
|
||||
<Filter>assem\assem_x86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="assem.h">
|
||||
<Filter>assem</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ex.h" />
|
||||
<ClInclude Include="std.h" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
#define BASE_VER 1108
|
||||
|
||||
#define PRO
|
||||
#ifdef PRO
|
||||
#define PRO_F 0x010000
|
||||
#else
|
||||
|
||||
@@ -0,0 +1,225 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<ProjectGuid>{3E355353-96D8-4AAF-BF95-8E6CA0D4B1BA}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>false</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\config___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\config___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\config___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\config___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\config___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\config___Win32_Blitz2DRelease\config.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\config___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\config___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\config___Win32_Blitz2DRelease\config.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\config___Win32_Blitz2DRelease\config.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_LIB;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\config___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\config___Win32_Blitz3DRelease\config.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\config___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\config___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\config___Win32_Blitz3DRelease\config.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\config___Win32_Blitz3DRelease\config.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<StringPooling>true</StringPooling>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\config.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\config.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\config.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\config.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\config.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Lib>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\config.lib</OutputFile>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="config.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,293 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Blitz2DRelease|Win32">
|
||||
<Configuration>Blitz2DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Blitz3DRelease|Win32">
|
||||
<Configuration>Blitz3DRelease</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Template|Win32">
|
||||
<Configuration>Template</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<SccProjectName />
|
||||
<SccLocalPath />
|
||||
<Keyword>MFCProj</Keyword>
|
||||
<ProjectGuid>{4132C330-95D9-4F68-A51A-3B90381587C5}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0.10586.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Template|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<UseOfMfc>Static</UseOfMfc>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Template|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="$(VCTargetsPath)Microsoft.Cpp.UpgradeFromVC60.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>.\Release\</OutDir>
|
||||
<IntDir>.\Release\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<OutDir>.\debugger___Win32_Blitz2DRelease\</OutDir>
|
||||
<IntDir>.\debugger___Win32_Blitz2DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<OutDir>.\debugger___Win32_Blitz3DRelease\</OutDir>
|
||||
<IntDir>.\debugger___Win32_Blitz3DRelease\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>..\#Build\$(ProjectName)\$(ConfigurationName)\</OutDir>
|
||||
<IntDir>..\#Intermediate\$(ProjectName)\$(ConfigurationName)\</IntDir>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DEBUGGER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Release\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Release\debugger.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Release\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Release\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Release\debugger.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Release\debugger.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>..\blitzbasic\bin\debugger.dll</OutputFile>
|
||||
<ImportLibrary>.\Release\debugger.lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;DEBUGGER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\debugger___Win32_Blitz2DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\debugger___Win32_Blitz2DRelease\debugger.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\debugger___Win32_Blitz2DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\debugger___Win32_Blitz2DRelease\</ProgramDataBaseFileName>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\debugger___Win32_Blitz2DRelease\debugger.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\debugger___Win32_Blitz2DRelease\debugger.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>..\..\release\blitz2drelease\bin\debugger.dll</OutputFile>
|
||||
<ImportLibrary>.\debugger___Win32_Blitz2DRelease\debugger.lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<StringPooling>true</StringPooling>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PreprocessorDefinitions>_WINDOWS;_USRDLL;DEBUGGER_EXPORTS;WIN32;NDEBUG;PRO;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\debugger___Win32_Blitz3DRelease\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\debugger___Win32_Blitz3DRelease\debugger.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\debugger___Win32_Blitz3DRelease\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\debugger___Win32_Blitz3DRelease\</ProgramDataBaseFileName>
|
||||
<CallingConvention>StdCall</CallingConvention>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\debugger___Win32_Blitz3DRelease\debugger.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\debugger___Win32_Blitz3DRelease\debugger.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<OutputFile>../_release/bin/debugger.dll</OutputFile>
|
||||
<ImportLibrary>.\debugger___Win32_Blitz3DRelease\debugger.lib</ImportLibrary>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<InlineFunctionExpansion>Default</InlineFunctionExpansion>
|
||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;DEBUGGER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AssemblerListingLocation>.\Debug\</AssemblerListingLocation>
|
||||
<PrecompiledHeaderOutputFile>.\Debug\debugger.pch</PrecompiledHeaderOutputFile>
|
||||
<ObjectFileName>.\Debug\</ObjectFileName>
|
||||
<ProgramDataBaseFileName>.\Debug\</ProgramDataBaseFileName>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<TypeLibraryName>.\Debug\debugger.tlb</TypeLibraryName>
|
||||
<MkTypLibCompatible>true</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x1409</Culture>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Bscmake>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<OutputFile>.\Debug\debugger.bsc</OutputFile>
|
||||
</Bscmake>
|
||||
<Link>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<LinkDLL>true</LinkDLL>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OutputFile>..\blitzbasic\bin\debugger.dll</OutputFile>
|
||||
<ImportLibrary>.\Debug\debugger.lib</ImportLibrary>
|
||||
<AdditionalOptions> /FIXED:NO</AdditionalOptions>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="debugger.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="debuggerapp.cpp" />
|
||||
<ClCompile Include="debugtree.cpp" />
|
||||
<ClCompile Include="mainframe.cpp" />
|
||||
<ClCompile Include="prefs.cpp" />
|
||||
<ClCompile Include="sourcefile.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">stdafx.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz2DRelease|Win32'">stdafx.h</PrecompiledHeaderFile>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Blitz3DRelease|Win32'">stdafx.h</PrecompiledHeaderFile>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdutil.cpp" />
|
||||
<ClCompile Include="tabber.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="debugger.h" />
|
||||
<ClInclude Include="debuggerapp.h" />
|
||||
<ClInclude Include="debugtree.h" />
|
||||
<ClInclude Include="mainframe.h" />
|
||||
<ClInclude Include="prefs.h" />
|
||||
<ClInclude Include="sourcefile.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="tabber.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{e724ef2d-96f4-4a45-850b-146498babe2e}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{5b254165-41b7-415b-bb46-4ff914fc5a5f}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="debugger.rc">
|
||||
<Filter>Source Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="debuggerapp.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="debugtree.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="mainframe.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="prefs.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="sourcefile.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="stdutil.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="tabber.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="debugger.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="debuggerapp.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="debugtree.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="mainframe.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="prefs.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="sourcefile.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="tabber.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -285,8 +285,8 @@ SourceFile *MainFrame::sourceFile(const char *file){
|
||||
|
||||
file_tabs.insert( make_pair(file,tab) );
|
||||
|
||||
if( char *p=strrchr(file,'/') ) file=p+1;
|
||||
if( char *p=strrchr(file,'\\') ) file=p+1;
|
||||
if(const char *p=strrchr(file,'/') ) file=p+1;
|
||||
if(const char *p=strrchr(file,'\\') ) file=p+1;
|
||||
tabber.insert( tab,t,file );
|
||||
|
||||
tabber.setCurrent( tab );
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
----------------------------------------------------------------------------
|
||||
FMOD 3.75
|
||||
Copyright (c) Firelight Technologies Pty, Ltd,
|
||||
1994 - 2004
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
http://www.fmod.org
|
||||
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
WIN32 specific issues.
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Remember to use the correct import library!
|
||||
|
||||
MSVC Users - use FMODVC.LIB
|
||||
METROWERKS/CODEWARRIOR Users - use FMODVC.LIB
|
||||
WATCOM Users - use FMODWC.LIB
|
||||
BORLAND Users - use FMODBC.LIB
|
||||
LCC-WIN32 Users - use FMODLCC.LIB
|
||||
DEV-C++, MINGW AND CYGWIN Users - use LIBFMOD.A
|
||||
|
||||
Linux users - link with libfmod-3.75.so (i.e. gcc file.c -lfmod-3.75)
|
||||
Delphi Users - use FMOD.PAS
|
||||
Visual Basic Users - use FMOD.BAS
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
ASIO Config
|
||||
----------------------------------------------------------------------------
|
||||
FMOD ignores FSOUND_SetBufferSize in ASIO mode. It relies on settings
|
||||
provided by the ASIO control panel supplied with the driver. In the tools
|
||||
directory of the FMOD api, you will find an asioconfig.exe tool which allows
|
||||
you to configure the ASIO driver by doubleclicking on the appropriate driver.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
FMOD End User License Agreement
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
FMOD's names, sources, documentation and binaries contained within the
|
||||
distributed archive are copyright © Firelight Technologies, Pty, Ltd.
|
||||
1994-2004.
|
||||
|
||||
The contents of the FMOD distribution archive may not be redistributed,
|
||||
reproduced, modified, transmitted, broadcast, published or adapted in any
|
||||
way, shape or form, without the prior written consent of the owner,
|
||||
Firelight Technologies, be it by tangible or non tangible media.
|
||||
|
||||
The fmod.dll file may be redistributed without the authors prior permission,
|
||||
and must remain unmodified. The use of dll 'static linking' tools that aim
|
||||
to hide the fmod library are forbidden.
|
||||
|
||||
FMOD may not be used in a commercial product, or product that directly or
|
||||
indirectly receives income with the aid of the FMOD sound library, without
|
||||
a commercial license from Firelight Technologies. Releasing a product
|
||||
without a commercial license in this instance is a breach of the FMOD EULA
|
||||
and parties who violate this license will be prosecuted under the full
|
||||
extent of the law.
|
||||
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Ogg Vorbis License
|
||||
----------------------------------------------------------------------------
|
||||
Portions Copyright (c) 2001, Xiphophorus
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
- Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
- Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
- Neither the name of the Xiphophorus nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
Binary file not shown.
@@ -0,0 +1,783 @@
|
||||
{ =============================================================================================== }
|
||||
{ FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004. }
|
||||
{ =============================================================================================== }
|
||||
{
|
||||
NOTE: For the demos to run you must have either fmod.dll (in Windows)
|
||||
or libfmod-3.75.so (in Linux) installed.
|
||||
|
||||
In Windows, copy the fmod.dll file found in the api directory to either of
|
||||
the following locations (in order of preference)
|
||||
- your application directory
|
||||
- Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
|
||||
|
||||
In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
|
||||
file from the api directory to your /usr/lib/ directory.
|
||||
Then via a command line, navigate to the /usr/lib/ directory and create
|
||||
a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
|
||||
the following command (assuming you are in /usr/lib/)...
|
||||
ln -s libfmod-3.75.so libfmod.so.
|
||||
}
|
||||
{ =============================================================================================== }
|
||||
|
||||
{$IFDEF FPC}
|
||||
{$MODE DELPHI}
|
||||
{$IFDEF WIN32}
|
||||
{$DEFINE MSWINDOWS}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
unit fmod;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{$IFDEF MSWINDOWS}
|
||||
Windows,
|
||||
{$ENDIF}
|
||||
fmodtypes;
|
||||
|
||||
{
|
||||
Disable warning for unsafe types in Delphi 7
|
||||
}
|
||||
{$IFDEF VER150}
|
||||
{$WARN UNSAFE_TYPE OFF}
|
||||
{$ENDIF}
|
||||
|
||||
//===============================================================================================
|
||||
// FUNCTION PROTOTYPES
|
||||
//===============================================================================================
|
||||
|
||||
{ ================================== }
|
||||
{ Library load/unload functions. }
|
||||
{ ================================== }
|
||||
|
||||
{
|
||||
If no library name is passed to FMOD_Load, then the default library name
|
||||
used. These are stub functions.
|
||||
}
|
||||
|
||||
function FMOD_Load(LibName: PChar): Boolean;
|
||||
procedure FMOD_Unload;
|
||||
|
||||
{ ================================== }
|
||||
{ Initialization / Global functions. }
|
||||
{ ================================== }
|
||||
|
||||
{
|
||||
PRE - FSOUND_Init functions. These can't be called after FSOUND_Init is
|
||||
called (they will fail). They set up FMOD system functionality.
|
||||
}
|
||||
|
||||
function FSOUND_SetOutput(OutputType: TFSoundOutputTypes): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetDriver(Driver: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetMixer(Mixer: TFSoundMixerTypes): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetBufferSize(LenMs: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetHWND(Hwnd: THandle): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetMinHardwareChannels(Min: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetMaxHardwareChannels(Max: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetMemorySystem(Pool: Pointer; PoolLen: Integer;
|
||||
UserAlloc: TFSoundAllocCallback;
|
||||
UserRealloc: TFSoundReallocCallback;
|
||||
UserFree: TFSoundFreeCallback): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Main initialization / closedown functions.
|
||||
Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override
|
||||
with MIDI playback.
|
||||
: Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible no matter
|
||||
which window is in focus. (FSOUND_OUTPUT_DSOUND only)
|
||||
}
|
||||
|
||||
function FSOUND_Init(MixRate: Integer; MaxSoftwareChannels: Integer; Flags: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_Close; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Runtime system level functions
|
||||
}
|
||||
|
||||
procedure FSOUND_Update; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; // This is called to update 3d sound / non-realtime output
|
||||
|
||||
procedure FSOUND_SetSpeakerMode(SpeakerMode: Cardinal); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_SetSFXMasterVolume(Volume: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_SetPanSeperation(PanSep: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_File_SetCallbacks(OpenCallback: TFSoundOpenCallback;
|
||||
CloseCallback: TFSoundCloseCallback;
|
||||
ReadCallback: TFSoundReadCallback;
|
||||
SeekCallback: TFSoundSeekCallback;
|
||||
TellCallback: TFSoundTellCallback); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
System information functions
|
||||
}
|
||||
|
||||
function FSOUND_GetError: TFModErrors; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetVersion: Single; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetOutput: TFSoundOutputTypes; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetOutputHandle: Pointer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetDriver: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetMixer: TFSoundMixerTypes; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetNumDrivers: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetDriverName(Id: Integer): PChar; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetDriverCaps(Id: Integer; var Caps: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetOutputRate: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetMaxChannels: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetMaxSamples: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetSpeakerMode: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetSFXMasterVolume: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetNumHWChannels(var num2d: Integer; var num3d: Integer; var total: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetChannelsPlaying: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetCPUUsage: Single; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_GetMemoryStats(var CurrentAlloced: Cardinal; var MaxAlloced: Cardinal); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================================== }
|
||||
{ Sample management / load functions. }
|
||||
{ =================================== }
|
||||
|
||||
{
|
||||
Sample creation and management functions
|
||||
Note : Use FSOUND_LOADMEMORY flag with FSOUND_Sample_Load to load from memory.
|
||||
Use FSOUND_LOADRAW flag with FSOUND_Sample_Load to treat as as raw pcm data.
|
||||
}
|
||||
|
||||
function FSOUND_Sample_Load(Index: Integer; const NameOrData: PChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_Alloc(Index: Integer; Length: Integer; Mode: Cardinal; DefFreq: Integer; DefVol: Integer; DefPan: Integer; DefPri: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_Sample_Free(Sptr: PFSoundSample); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_Upload(Sptr: PFSoundSample; SrcData: Pointer; Mode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_Lock(Sptr: PFSoundSample; Offset: Integer; Length: Integer; var Ptr1: Pointer; var Ptr2: Pointer; var Len1: Cardinal; var Len2: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_Unlock(Sptr: PFSoundSample; Ptr1: Pointer; Ptr2: Pointer; Len1: Cardinal; Len2: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Sample control functions
|
||||
}
|
||||
|
||||
function FSOUND_Sample_SetMode(Sptr: PFSoundSample; Mode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_SetLoopPoints(Sptr: PFSoundSample; LoopStart, LoopEnd: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_SetDefaults(Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_SetDefaultsEx(Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri, VarFreq, VarVol, VarPan: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_SetMinMaxDistance(Sptr: PFSoundSample; Min, Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_SetMaxPlaybacks(Sptr: PFSoundSample; Max: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Sample information functions
|
||||
}
|
||||
|
||||
function FSOUND_Sample_Get(SampNo: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_GetName(Sptr: PFSoundSample): PCHAR; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_GetLength(Sptr: PFSoundSample): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_GetLoopPoints(Sptr: PFSoundSample; var LoopStart: Integer; var LoopEnd: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_GetDefaults(Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_GetDefaultsEx(Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer;var VarFreq: Integer; var VarVol: Integer; var VarPan: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_GetMode(Sptr: PFSoundSample): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Sample_GetMinMaxDistance(Sptr: PFSoundSample; var Min: Single; var Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ============================ }
|
||||
{ Channel control functions. }
|
||||
{ ============================ }
|
||||
|
||||
{
|
||||
Playing and stopping sounds.
|
||||
Note : Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
|
||||
Use FSOUND_ALL as the 'channel' variable to control ALL channels with one function call!
|
||||
}
|
||||
|
||||
function FSOUND_PlaySound(Channel: Integer; Sptr: PFSoundSample): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_PlaySoundEx(Channel: Integer; Sptr: PFSoundSample; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_StopSound(Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Functions to control playback of a channel.
|
||||
Note : FSOUND_ALL can be used on most of these functions as a channel value.
|
||||
}
|
||||
|
||||
function FSOUND_SetFrequency(Channel: Integer; Freq: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetVolume(Channel: Integer; Vol: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetVolumeAbsolute(Channel: Integer; Vol: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetPan(Channel: Integer; Pan: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetSurround(Channel: Integer; Surround: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetMute(Channel: Integer; Mute: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetPriority(Channel: Integer; Priority: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetReserved(Channel: Integer; Reserved: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetPaused(Channel: Integer; Paused: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetLoopMode(Channel: Integer; LoopMode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_SetCurrentPosition(Channel: Integer; Offset: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_3D_SetAttributes(Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_3D_SetMinMaxDistance(Channel: Integer; Min: Single; Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Channel information functions
|
||||
}
|
||||
|
||||
function FSOUND_IsPlaying(Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetFrequency(Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetVolume(Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetAmplitude(Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetPan(Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetSurround(Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetMute(Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetPriority(Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetReserved(Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetPaused(Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetLoopMode(Channel: Integer): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetCurrentPosition(Channel: Integer): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetCurrentSample(Channel: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetCurrentLevels(Channel: Integer; l, r: PSingle): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetNumSubChannels(Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_GetSubChannel(Channel: Integer; SubChannel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_3D_GetAttributes(Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_3D_GetMinMaxDistance(Channel: Integer; var Min: Single; var Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================== }
|
||||
{ 3D sound functions. }
|
||||
{ =================== }
|
||||
|
||||
{
|
||||
See also 3d sample and channel based functions above.
|
||||
Call FSOUND_Update once a frame to process 3d information.
|
||||
}
|
||||
|
||||
procedure FSOUND_3D_Listener_SetCurrent(current: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_3D_Listener_SetAttributes(Pos: PFSoundVector; Vel: PFSoundVector;
|
||||
fx: Single; fy: Single; fz: Single;
|
||||
tx: Single; ty: Single; tz: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_3D_Listener_GetAttributes(Pos: PFSoundVector; Vel: PFSoundVector;
|
||||
fx: PSingle; fy: PSingle; fz: PSingle;
|
||||
tx: PSingle; ty: PSingle; tz: PSingle); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_3D_SetDopplerFactor(Scale: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_3D_SetDistanceFactor(Scale: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_3D_SetRolloffFactor(Scale: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================== }
|
||||
{ FX functions. }
|
||||
{ =================== }
|
||||
|
||||
{
|
||||
Functions to control DX8 only effects processing.
|
||||
|
||||
- FX enabled samples can only be played once at a time, not multiple times at once.
|
||||
- Sounds have to be created with FSOUND_HW2D or FSOUND_HW3D for this to work.
|
||||
- FSOUND_INIT_ENABLESYSTEMCHANNELFX can be used to apply hardware effect processing to the
|
||||
global mixed output of FMOD's software channels.
|
||||
- FSOUND_FX_Enable returns an FX handle that you can use to alter fx parameters.
|
||||
- FSOUND_FX_Enable can be called multiple times in a row, even on the same FX type,
|
||||
it will return a unique handle for each FX.
|
||||
- FSOUND_FX_Enable cannot be called if the sound is playing or locked.
|
||||
- FSOUND_FX_Disable must be called to reset/clear the FX from a channel.
|
||||
}
|
||||
|
||||
function FSOUND_FX_Enable(Channel: Integer; Fx: TFSoundFXModes): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_Disable(Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_FX_SetChorus(FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetCompressor(FXId: Integer; Gain, Attack, Release, Threshold, Ratio, Predelay: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetDistortion(FXId: Integer; Gain, Edge, PostEQCenterFrequency, PostEQBandwidth, PreLowpassCutoff: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetEcho(FXId: Integer; WetDryMix, Feedback, LeftDelay, RightDelay: Single; PanDelay: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetFlanger(FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetGargle(FXId, RateHz, WaveShape: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetI3DL2Reverb(FXId, Room, RoomHF: Integer; RoomRolloffFactor, DecayTime, DecayHFRatio: Single; Reflections: Integer; ReflectionsDelay: Single; Reverb: Integer; ReverbDelay, Diffusion, Density, HFReference: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetParamEQ(FXId: Integer; Center, Bandwidth, Gain: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_FX_SetWavesReverb(FXId: Integer; InGain, ReverbMix, ReverbTime, HighFreqRTRatio: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ========================= }
|
||||
{ File Streaming functions. }
|
||||
{ ========================= }
|
||||
|
||||
{
|
||||
Note : Use FSOUND_LOADMEMORY flag with FSOUND_Stream_Open to stream from memory.
|
||||
Use FSOUND_LOADRAW flag with FSOUND_Stream_Open to treat stream as raw pcm data.
|
||||
Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_Open to open mpegs in 'accurate mode' for settime/gettime/getlengthms.
|
||||
Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
|
||||
}
|
||||
|
||||
function FSOUND_Stream_SetBufferSize(Ms: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_Open(const name_or_data: PChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundStream; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Create(Callback: TFSoundStreamCallback; Length: Integer; Mode: Cardinal; SampleRate: Integer; UserData: Integer): PFSoundStream; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Close(Stream: PFSoundStream): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_Play(Channel: Integer; Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_PlayEx(Channel: Integer; Stream: PFSoundStream; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Stop(Stream: PFSoundStream): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_SetPosition(Stream: PFSoundStream; Position: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetPosition(Stream: PFSoundStream): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_SetTime(Stream: PFSoundStream; Ms: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetTime(Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetLength(Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetLengthMs(Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_SetMode(Stream: PFSoundStream; mode: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetMode(Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_SetLoopPoints(Stream: PFSoundStream; LoopStartPCM, LoopEndPCM: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_SetLoopCount(Stream: PFSoundStream; Count: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetOpenState(Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetSample(Stream: PFSoundStream): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_CreateDSP(Stream: PFSoundStream; Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_SetEndCallback(Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_SetSyncCallback(Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_AddSyncPoint(Stream: PFSoundStream; PCMOffset: Cardinal; Name: PChar): PFSyncPoint; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_DeleteSyncPoint(Point: PFSyncPoint): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetNumSyncPoints(Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetSyncPoint(Stream: PFSoundStream; Index: Integer): PFSyncPoint; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetSyncPointInfo(Point: PFSyncPoint; var PCMOffset: Cardinal): PCHAR; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_SetSubStream(Stream: PFSoundStream; Index: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetNumSubStreams(Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_SetSubStreamSentence(Stream: PFSoundStream; var SentenceList: Cardinal; NumItems: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_Stream_GetNumTagFields(Stream: PFSoundStream; var Num: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_GetTagField(Stream: PFSoundStream; Num: Integer; var TagType: TFSoundTagFieldType; var Name: PChar; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_FindTagField(Stream: PFSoundStream; TagType: TFSoundTagFieldType; Name: PChar; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Internet streaming functions
|
||||
}
|
||||
|
||||
function FSOUND_Stream_Net_SetProxy(Proxy: PChar): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Net_GetLastServerStatus(): PChar; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Net_SetBufferProperties(BufferSize: Integer; PreBuffer_Percent: Integer; ReBuffer_Percent: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Net_GetBufferProperties(var Buffersize: Integer; var PreBuffer_Percent: Integer; var ReBuffer_Percent: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Net_SetMetadataCallback(Stream: PFSoundStream; Callback: TFMetaDataCallback; UserData: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Stream_Net_GetStatus(Stream: PFSoundStream; var Status: TFSoundStreamNetStatus; var BufferPercentUsed: Integer; var BitRate: Integer; var Flags: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================== }
|
||||
{ CD audio functions. }
|
||||
{ =================== }
|
||||
|
||||
{
|
||||
Note : 0 = default cdrom. Otherwise specify the drive letter, for example. 'D'.
|
||||
}
|
||||
|
||||
function FSOUND_CD_Play(Drive: Byte; Track: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_CD_SetPlayMode(Drive: Byte; Mode: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_Stop(Drive: Byte): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_SetPaused(Drive: Byte; Paused: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_SetVolume(Drive: Byte; Volume: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_SetTrackTime(Drive: Byte; ms: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_OpenTray(Drive: Byte; Open: Byte): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FSOUND_CD_GetPaused(Drive: Byte): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_GetTrack(Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_GetNumTracks(Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_GetVolume(Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_GetTrackLength(Drive: Byte; Track: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_CD_GetTrackTime(Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ============== }
|
||||
{ DSP functions. }
|
||||
{ ============== }
|
||||
|
||||
|
||||
{
|
||||
DSP Unit control and information functions.
|
||||
}
|
||||
|
||||
function FSOUND_DSP_Create(Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_DSP_Free(DSPUnit: PFSoundDSPUnit); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_DSP_SetPriority(DSPUnit: PFSoundDSPUnit; Priority: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_DSP_GetPriority(DSPUnit: PFSoundDSPUnit): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_DSP_SetActive(DSPUnit: PFSoundDSPUnit; Active: ByteBool); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_DSP_GetActive(DSPUnit: PFSoundDSPUnit): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Functions to get hold of FSOUND 'system DSP unit' handles.
|
||||
}
|
||||
|
||||
function FSOUND_DSP_GetClearUnit: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_DSP_GetSFXUnit: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_DSP_GetMusicUnit: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_DSP_GetFFTUnit: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_DSP_GetClipAndCopyUnit: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Miscellaneous DSP functions
|
||||
Note for the spectrum analysis function to work, you have to enable the FFT DSP unit with
|
||||
the following code FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE);
|
||||
It is off by default to save cpu usage.
|
||||
}
|
||||
|
||||
function FSOUND_DSP_MixBuffers(DestBuffer: Pointer; SrcBuffer: Pointer; Len: Integer; Freq: Integer; Vol: Integer; Pan: Integer; Mode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FSOUND_DSP_ClearMixBuffer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_DSP_GetBufferLength: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Length of each DSP update }
|
||||
function FSOUND_DSP_GetBufferLengthTotal: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Total buffer length due to FSOUND_SetBufferSize }
|
||||
function FSOUND_DSP_GetSpectrum: PSingle; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Array of 512 floats - call FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE)) for this to work. }
|
||||
|
||||
{ ========================================================================== }
|
||||
{ Reverb functions. (eax2/3 reverb) (NOT SUPPORTED IN LINUX/CE) }
|
||||
{ ========================================================================== }
|
||||
|
||||
{
|
||||
See structures above for definitions and information on the reverb parameters.
|
||||
}
|
||||
|
||||
function FSOUND_Reverb_SetProperties(var Prop: TFSoundReverbProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Reverb_GetProperties(var Prop: TFSoundReverbProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Reverb_SetChannelProperties(Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Reverb_GetChannelProperties(Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ================================================ }
|
||||
{ Recording functions (NOT SUPPORTED IN LINUX/MAC) }
|
||||
{ ================================================ }
|
||||
|
||||
{
|
||||
Recording initialization functions
|
||||
}
|
||||
|
||||
function FSOUND_Record_SetDriver(OutputType: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Record_GetNumDrivers: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Record_GetDriverName(Id: Integer): PChar; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Record_GetDriver: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Recording functionality. Only one recording session will work at a time.
|
||||
}
|
||||
|
||||
function FSOUND_Record_StartSample(Sptr: PFSoundSample; Loop: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Record_Stop: ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FSOUND_Record_GetPosition: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ============================================================================================= }
|
||||
{ FMUSIC API (MOD,S3M,XM,IT,MIDI PLAYBACK) }
|
||||
{ ============================================================================================= }
|
||||
|
||||
{
|
||||
Song management / playback functions.
|
||||
}
|
||||
|
||||
function FMUSIC_LoadSong(const Name: PChar): PFMusicModule; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_LoadSongEx(Name_Or_Data: Pointer; Offset: Integer; Length: Integer; Mode: Cardinal; var SampleList: Integer; SampleListNum: Integer): PFMusicModule; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetOpenState(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_FreeSong(Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_PlaySong(Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_StopSong(Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
procedure FMUSIC_StopAllSongs; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FMUSIC_SetZxxCallback(Module: PFMusicModule; Callback: TFMusicCallback): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetRowCallback(Module: PFMusicModule; Callback: TFMusicCallback; RowStep: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetOrderCallback(Module: PFMusicModule; Callback: TFMusicCallback; OrderStep: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetInstCallback(Module: PFMusicModule; Callback: TFMusicCallback; Instrument: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
function FMUSIC_SetSample(Module: PFMusicModule; SampNo: Integer; Sptr: PFSoundSample): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetUserData(Module: PFMusicModule; userdata: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_OptimizeChannels(Module: PFMusicModule; MaxChannels: Integer; MinVolume: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Runtime song functions.
|
||||
}
|
||||
|
||||
function FMUSIC_SetReverb(Reverb: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetLooping(Module: PFMusicModule; Looping: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetOrder(Module: PFMusicModule; Order: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetPaused(Module: PFMusicModule; Pause: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetMasterVolume(Module: PFMusicModule; Volume: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetMasterSpeed(Module: PFMusicModule; speed: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_SetPanSeperation(Module: PFMusicModule; PanSep: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Static song information functions.
|
||||
}
|
||||
|
||||
function FMUSIC_GetName(Module: PFMusicModule): PCHAR; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetType(Module: PFMusicModule): TFMusicTypes; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetNumOrders(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetNumPatterns(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetNumInstruments(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetNumSamples(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetNumChannels(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetSample(Module: PFMusicModule; SampNo: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetPatternLength(Module: PFMusicModule; OrderNo: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Runtime song information.
|
||||
}
|
||||
|
||||
function FMUSIC_IsFinished(Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_IsPlaying(Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetMasterVolume(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetGlobalVolume(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetOrder(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetPattern(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetSpeed(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetBPM(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetRow(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetPaused(Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetTime(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetRealChannel(Module: PFMusicModule; modchannel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
function FMUSIC_GetUserData(Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
{$IFDEF LINUX}
|
||||
FMOD_DLL = 'libfmod.so';
|
||||
{$ELSE}
|
||||
{$IFDEF MSWINDOWS}
|
||||
FMOD_DLL = 'fmod.dll';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
{
|
||||
Stub functions to allow applications to swap between static and dynamic with
|
||||
no code changes at all.
|
||||
}
|
||||
function FMOD_Load(LibName: PChar): Boolean;
|
||||
begin
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure FMOD_Unload;
|
||||
begin
|
||||
end;
|
||||
|
||||
function FSOUND_SetOutput; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetOutput@4' {$ENDIF};
|
||||
function FSOUND_SetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetDriver@4' {$ENDIF};
|
||||
function FSOUND_SetMixer; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMixer@4' {$ENDIF};
|
||||
function FSOUND_SetBufferSize; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetBufferSize@4' {$ENDIF};
|
||||
function FSOUND_SetHWND; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetHWND@4' {$ENDIF};
|
||||
function FSOUND_SetMinHardwareChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMinHardwareChannels@4' {$ENDIF};
|
||||
function FSOUND_SetMaxHardwareChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMaxHardwareChannels@4' {$ENDIF};
|
||||
function FSOUND_SetMemorySystem; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMemorySystem@20' {$ENDIF};
|
||||
function FSOUND_Init; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Init@12' {$ENDIF};
|
||||
procedure FSOUND_Close; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Close@0' {$ENDIF};
|
||||
procedure FSOUND_Update; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Update@0' {$ENDIF};
|
||||
procedure FSOUND_SetSpeakerMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetSpeakerMode@4' {$ENDIF};
|
||||
procedure FSOUND_SetSFXMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetSFXMasterVolume@4' {$ENDIF};
|
||||
procedure FSOUND_SetPanSeperation; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPanSeperation@4' {$ENDIF};
|
||||
function FSOUND_GetError; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetError@0' {$ENDIF};
|
||||
function FSOUND_GetVersion; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetVersion@0' {$ENDIF};
|
||||
function FSOUND_GetOutput; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetOutput@0' {$ENDIF};
|
||||
function FSOUND_GetOutputHandle; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetOutputHandle@0' {$ENDIF};
|
||||
function FSOUND_GetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetDriver@0' {$ENDIF};
|
||||
function FSOUND_GetMixer; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMixer@0' {$ENDIF};
|
||||
function FSOUND_GetNumDrivers; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetNumDrivers@0' {$ENDIF};
|
||||
function FSOUND_GetDriverName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetDriverName@4' {$ENDIF};
|
||||
function FSOUND_GetDriverCaps; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetDriverCaps@8' {$ENDIF};
|
||||
function FSOUND_GetOutputRate; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetOutputRate@0' {$ENDIF};
|
||||
function FSOUND_GetMaxChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMaxChannels@0' {$ENDIF};
|
||||
function FSOUND_GetMaxSamples; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMaxSamples@0' {$ENDIF};
|
||||
function FSOUND_GetSpeakerMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSpeakerMode@0' {$ENDIF};
|
||||
function FSOUND_GetSFXMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSFXMasterVolume@0' {$ENDIF};
|
||||
function FSOUND_GetNumHWChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetNumHWChannels@12' {$ENDIF};
|
||||
function FSOUND_GetChannelsPlaying; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetChannelsPlaying@0' {$ENDIF};
|
||||
function FSOUND_GetCPUUsage; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCPUUsage@0' {$ENDIF};
|
||||
procedure FSOUND_GetMemoryStats; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMemoryStats@8' {$ENDIF};
|
||||
function FSOUND_Sample_Load; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Load@20' {$ENDIF};
|
||||
function FSOUND_Sample_Alloc; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Alloc@28' {$ENDIF};
|
||||
procedure FSOUND_Sample_Free; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Free@4' {$ENDIF};
|
||||
function FSOUND_Sample_Upload; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Upload@12' {$ENDIF};
|
||||
function FSOUND_Sample_Lock; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Lock@28' {$ENDIF};
|
||||
function FSOUND_Sample_Unlock; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Unlock@20' {$ENDIF};
|
||||
function FSOUND_Sample_SetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetMode@8' {$ENDIF};
|
||||
function FSOUND_Sample_SetLoopPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetLoopPoints@12' {$ENDIF};
|
||||
function FSOUND_Sample_SetDefaults; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetDefaults@20' {$ENDIF};
|
||||
function FSOUND_Sample_SetDefaultsEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetDefaultsEx@32' {$ENDIF};
|
||||
function FSOUND_Sample_SetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetMinMaxDistance@12' {$ENDIF};
|
||||
function FSOUND_Sample_SetMaxPlaybacks; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_SetMaxPlaybacks@8' {$ENDIF};
|
||||
function FSOUND_Sample_Get; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_Get@4' {$ENDIF};
|
||||
function FSOUND_Sample_GetName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetName@4' {$ENDIF};
|
||||
function FSOUND_Sample_GetLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetLength@4' {$ENDIF};
|
||||
function FSOUND_Sample_GetLoopPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetLoopPoints@12' {$ENDIF};
|
||||
function FSOUND_Sample_GetDefaults; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetDefaults@20' {$ENDIF};
|
||||
function FSOUND_Sample_GetDefaultsEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetDefaultsEx@32' {$ENDIF};
|
||||
function FSOUND_Sample_GetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetMode@4' {$ENDIF};
|
||||
function FSOUND_Sample_GetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Sample_GetMinMaxDistance@12' {$ENDIF};
|
||||
function FSOUND_PlaySound; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_PlaySound@8' {$ENDIF};
|
||||
function FSOUND_PlaySoundEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_PlaySoundEx@16' {$ENDIF};
|
||||
function FSOUND_StopSound; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_StopSound@4' {$ENDIF};
|
||||
function FSOUND_SetFrequency; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetFrequency@8' {$ENDIF};
|
||||
function FSOUND_SetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetVolume@8' {$ENDIF};
|
||||
function FSOUND_SetVolumeAbsolute; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetVolumeAbsolute@8' {$ENDIF};
|
||||
function FSOUND_SetPan; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPan@8' {$ENDIF};
|
||||
function FSOUND_SetSurround; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetSurround@8' {$ENDIF};
|
||||
function FSOUND_SetMute; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetMute@8' {$ENDIF};
|
||||
function FSOUND_SetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPriority@8' {$ENDIF};
|
||||
function FSOUND_SetReserved; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetReserved@8' {$ENDIF};
|
||||
function FSOUND_SetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetPaused@8' {$ENDIF};
|
||||
function FSOUND_SetLoopMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetLoopMode@8' {$ENDIF};
|
||||
function FSOUND_SetCurrentPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_SetCurrentPosition@8' {$ENDIF};
|
||||
function FSOUND_3D_SetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetAttributes@12' {$ENDIF};
|
||||
function FSOUND_3D_SetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetMinMaxDistance@12' {$ENDIF};
|
||||
function FSOUND_IsPlaying; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_IsPlaying@4' {$ENDIF};
|
||||
function FSOUND_GetFrequency; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetFrequency@4' {$ENDIF};
|
||||
function FSOUND_GetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetVolume@4' {$ENDIF};
|
||||
function FSOUND_GetAmplitude; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetAmplitude@4' {$ENDIF};
|
||||
function FSOUND_GetPan; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetPan@4' {$ENDIF};
|
||||
function FSOUND_GetSurround; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSurround@4' {$ENDIF};
|
||||
function FSOUND_GetMute; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetMute@4' {$ENDIF};
|
||||
function FSOUND_GetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetPriority@4' {$ENDIF};
|
||||
function FSOUND_GetReserved; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetReserved@4' {$ENDIF};
|
||||
function FSOUND_GetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetPaused@4' {$ENDIF};
|
||||
function FSOUND_GetLoopMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetLoopMode@4' {$ENDIF};
|
||||
function FSOUND_GetCurrentPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCurrentPosition@4' {$ENDIF};
|
||||
function FSOUND_GetCurrentSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCurrentSample@4' {$ENDIF};
|
||||
function FSOUND_GetCurrentLevels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetCurrentLevels@12' {$ENDIF};
|
||||
function FSOUND_GetNumSubChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetNumSubChannels@4' {$ENDIF};
|
||||
function FSOUND_GetSubChannel; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_GetSubChannel@8' {$ENDIF};
|
||||
function FSOUND_3D_GetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_GetAttributes@12' {$ENDIF};
|
||||
function FSOUND_3D_GetMinMaxDistance; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_GetMinMaxDistance@12' {$ENDIF};
|
||||
procedure FSOUND_3D_Listener_SetCurrent; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_Listener_SetCurrent@8' {$ENDIF};
|
||||
procedure FSOUND_3D_Listener_SetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_Listener_SetAttributes@32' {$ENDIF};
|
||||
procedure FSOUND_3D_Listener_GetAttributes; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_Listener_GetAttributes@32' {$ENDIF};
|
||||
procedure FSOUND_3D_SetDopplerFactor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetDopplerFactor@4' {$ENDIF};
|
||||
procedure FSOUND_3D_SetDistanceFactor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetDistanceFactor@4' {$ENDIF};
|
||||
procedure FSOUND_3D_SetRolloffFactor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_3D_SetRolloffFactor@4' {$ENDIF};
|
||||
function FSOUND_FX_Enable; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_Enable@8' {$ENDIF};
|
||||
function FSOUND_FX_Disable; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_Disable@4' {$ENDIF};
|
||||
function FSOUND_FX_SetChorus; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetChorus@32' {$ENDIF};
|
||||
function FSOUND_FX_SetCompressor; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetCompressor@28' {$ENDIF};
|
||||
function FSOUND_FX_SetDistortion; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetDistortion@24' {$ENDIF};
|
||||
function FSOUND_FX_SetEcho; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetEcho@24' {$ENDIF};
|
||||
function FSOUND_FX_SetFlanger; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetFlanger@32' {$ENDIF};
|
||||
function FSOUND_FX_SetGargle; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetGargle@12' {$ENDIF};
|
||||
function FSOUND_FX_SetI3DL2Reverb; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetI3DL2Reverb@52' {$ENDIF};
|
||||
function FSOUND_FX_SetParamEQ; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetParamEQ@16' {$ENDIF};
|
||||
function FSOUND_FX_SetWavesReverb; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_FX_SetWavesReverb@20' {$ENDIF};
|
||||
function FSOUND_Stream_Open; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Open@16' {$ENDIF};
|
||||
function FSOUND_Stream_Create; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Create@20' {$ENDIF};
|
||||
function FSOUND_Stream_Play; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Play@8' {$ENDIF};
|
||||
function FSOUND_Stream_PlayEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_PlayEx@16' {$ENDIF};
|
||||
function FSOUND_Stream_Stop; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Stop@4' {$ENDIF};
|
||||
function FSOUND_Stream_Close; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Close@4' {$ENDIF};
|
||||
function FSOUND_Stream_SetEndCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetEndCallback@12' {$ENDIF};
|
||||
function FSOUND_Stream_SetSyncCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetSyncCallback@12' {$ENDIF};
|
||||
function FSOUND_Stream_GetSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetSample@4' {$ENDIF};
|
||||
function FSOUND_Stream_CreateDSP; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_CreateDSP@16' {$ENDIF};
|
||||
function FSOUND_Stream_SetBufferSize; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetBufferSize@4' {$ENDIF};
|
||||
function FSOUND_Stream_SetPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetPosition@8' {$ENDIF};
|
||||
function FSOUND_Stream_GetPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetPosition@4' {$ENDIF};
|
||||
function FSOUND_Stream_SetTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetTime@8' {$ENDIF};
|
||||
function FSOUND_Stream_GetTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetTime@4' {$ENDIF};
|
||||
function FSOUND_Stream_GetLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetLength@4' {$ENDIF};
|
||||
function FSOUND_Stream_GetLengthMs; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetLengthMs@4' {$ENDIF};
|
||||
function FSOUND_Stream_SetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetMode@8' {$ENDIF};
|
||||
function FSOUND_Stream_GetMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetMode@4' {$ENDIF};
|
||||
function FSOUND_Stream_SetLoopPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetLoopPoints@12' {$ENDIF};
|
||||
function FSOUND_Stream_SetLoopCount; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetLoopCount@8' {$ENDIF};
|
||||
function FSOUND_Stream_AddSyncPoint; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_AddSyncPoint@12' {$ENDIF};
|
||||
function FSOUND_Stream_DeleteSyncPoint; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_DeleteSyncPoint@4' {$ENDIF};
|
||||
function FSOUND_Stream_GetNumSyncPoints; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetNumSyncPoints@4' {$ENDIF};
|
||||
function FSOUND_Stream_GetSyncPoint; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetSyncPoint@8' {$ENDIF};
|
||||
function FSOUND_Stream_GetSyncPointInfo; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetSyncPointInfo@8' {$ENDIF};
|
||||
function FSOUND_Stream_GetOpenState; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetOpenState@4' {$ENDIF};
|
||||
function FSOUND_Stream_SetSubStream; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetSubStream@8' {$ENDIF};
|
||||
function FSOUND_Stream_GetNumSubStreams; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetNumSubStreams@4' {$ENDIF};
|
||||
function FSOUND_Stream_SetSubStreamSentence; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_SetSubStreamSentence@12' {$ENDIF};
|
||||
function FSOUND_Stream_GetNumTagFields; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetNumTagFields@8' {$ENDIF};
|
||||
function FSOUND_Stream_GetTagField; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_GetTagField@24' {$ENDIF};
|
||||
function FSOUND_Stream_FindTagField; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_FindTagField@20' {$ENDIF};
|
||||
function FSOUND_Stream_Net_SetProxy; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_SetProxy@4' {$ENDIF};
|
||||
function FSOUND_Stream_Net_GetLastServerStatus; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_GetLastServerStatus@0' {$ENDIF};
|
||||
function FSOUND_Stream_Net_SetBufferProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_SetBufferProperties@12' {$ENDIF};
|
||||
function FSOUND_Stream_Net_GetBufferProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_GetBufferProperties@12' {$ENDIF};
|
||||
function FSOUND_Stream_Net_SetMetadataCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_SetMetadataCallback@12' {$ENDIF};
|
||||
function FSOUND_Stream_Net_GetStatus; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Stream_Net_GetStatus@20' {$ENDIF};
|
||||
function FSOUND_CD_Play; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_Play@8' {$ENDIF};
|
||||
procedure FSOUND_CD_SetPlayMode; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetPlayMode@8' {$ENDIF};
|
||||
function FSOUND_CD_Stop; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_Stop@4' {$ENDIF};
|
||||
function FSOUND_CD_SetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetPaused@8' {$ENDIF};
|
||||
function FSOUND_CD_SetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetVolume@8' {$ENDIF};
|
||||
function FSOUND_CD_SetTrackTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_SetTrackTime@8' {$ENDIF};
|
||||
function FSOUND_CD_OpenTray; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_OpenTray@8' {$ENDIF};
|
||||
function FSOUND_CD_GetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetPaused@4' {$ENDIF};
|
||||
function FSOUND_CD_GetTrack; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetTrack@4' {$ENDIF};
|
||||
function FSOUND_CD_GetNumTracks; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetNumTracks@4' {$ENDIF};
|
||||
function FSOUND_CD_GetVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetVolume@4' {$ENDIF};
|
||||
function FSOUND_CD_GetTrackLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetTrackLength@8' {$ENDIF};
|
||||
function FSOUND_CD_GetTrackTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_CD_GetTrackTime@4' {$ENDIF};
|
||||
function FSOUND_DSP_Create; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_Create@12' {$ENDIF};
|
||||
procedure FSOUND_DSP_Free; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_Free@4' {$ENDIF};
|
||||
procedure FSOUND_DSP_SetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_SetPriority@8' {$ENDIF};
|
||||
function FSOUND_DSP_GetPriority; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetPriority@4' {$ENDIF};
|
||||
procedure FSOUND_DSP_SetActive; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_SetActive@8' {$ENDIF};
|
||||
function FSOUND_DSP_GetActive; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetActive@4' {$ENDIF};
|
||||
function FSOUND_DSP_GetClearUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetClearUnit@0' {$ENDIF};
|
||||
function FSOUND_DSP_GetSFXUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetSFXUnit@0' {$ENDIF};
|
||||
function FSOUND_DSP_GetMusicUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetMusicUnit@0' {$ENDIF};
|
||||
function FSOUND_DSP_GetClipAndCopyUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetClipAndCopyUnit@0' {$ENDIF};
|
||||
function FSOUND_DSP_GetFFTUnit; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetFFTUnit@0' {$ENDIF};
|
||||
function FSOUND_DSP_MixBuffers; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_MixBuffers@28' {$ENDIF};
|
||||
procedure FSOUND_DSP_ClearMixBuffer; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_ClearMixBuffer@0' {$ENDIF};
|
||||
function FSOUND_DSP_GetBufferLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetBufferLength@0' {$ENDIF};
|
||||
function FSOUND_DSP_GetBufferLengthTotal; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetBufferLengthTotal@0' {$ENDIF};
|
||||
function FSOUND_DSP_GetSpectrum; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_DSP_GetSpectrum@0' {$ENDIF};
|
||||
function FSOUND_Reverb_SetProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_SetProperties@4' {$ENDIF};
|
||||
function FSOUND_Reverb_GetProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_GetProperties@4' {$ENDIF};
|
||||
function FSOUND_Reverb_SetChannelProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_SetChannelProperties@8' {$ENDIF};
|
||||
function FSOUND_Reverb_GetChannelProperties; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Reverb_GetChannelProperties@8' {$ENDIF};
|
||||
function FSOUND_Record_SetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_SetDriver@4' {$ENDIF};
|
||||
function FSOUND_Record_GetNumDrivers; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetNumDrivers@0' {$ENDIF};
|
||||
function FSOUND_Record_GetDriverName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetDriverName@4' {$ENDIF};
|
||||
function FSOUND_Record_GetDriver; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetDriver@0' {$ENDIF};
|
||||
function FSOUND_Record_StartSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_StartSample@8' {$ENDIF};
|
||||
function FSOUND_Record_Stop; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_Stop@0' {$ENDIF};
|
||||
function FSOUND_Record_GetPosition; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_Record_GetPosition@0' {$ENDIF};
|
||||
procedure FSOUND_File_SetCallbacks; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FSOUND_File_SetCallbacks@20' {$ENDIF};
|
||||
function FMUSIC_LoadSong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_LoadSong@4' {$ENDIF};
|
||||
function FMUSIC_LoadSongEx; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_LoadSongEx@24' {$ENDIF};
|
||||
function FMUSIC_GetOpenState; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetOpenState@4' {$ENDIF};
|
||||
function FMUSIC_FreeSong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_FreeSong@4' {$ENDIF};
|
||||
function FMUSIC_PlaySong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_PlaySong@4' {$ENDIF};
|
||||
function FMUSIC_StopSong; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_StopSong@4' {$ENDIF};
|
||||
procedure FMUSIC_StopAllSongs; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_StopAllSongs@0' {$ENDIF};
|
||||
function FMUSIC_SetZxxCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetZxxCallback@8' {$ENDIF};
|
||||
function FMUSIC_SetRowCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetRowCallback@12' {$ENDIF};
|
||||
function FMUSIC_SetOrderCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetOrderCallback@12' {$ENDIF};
|
||||
function FMUSIC_SetInstCallback; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetInstCallback@12' {$ENDIF};
|
||||
function FMUSIC_SetSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetSample@12' {$ENDIF};
|
||||
function FMUSIC_SetUserData; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetUserData@8' {$ENDIF};
|
||||
function FMUSIC_OptimizeChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_OptimizeChannels@12' {$ENDIF};
|
||||
function FMUSIC_SetReverb; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetReverb@4' {$ENDIF};
|
||||
function FMUSIC_SetLooping; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetLooping@8' {$ENDIF};
|
||||
function FMUSIC_SetOrder; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetOrder@8' {$ENDIF};
|
||||
function FMUSIC_SetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetPaused@8' {$ENDIF};
|
||||
function FMUSIC_SetMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetMasterVolume@8' {$ENDIF};
|
||||
function FMUSIC_SetMasterSpeed; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetMasterSpeed@8' {$ENDIF};
|
||||
function FMUSIC_SetPanSeperation; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_SetPanSeperation@8' {$ENDIF};
|
||||
function FMUSIC_GetName; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetName@4' {$ENDIF};
|
||||
function FMUSIC_GetType; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetType@4' {$ENDIF};
|
||||
function FMUSIC_GetNumOrders; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumOrders@4' {$ENDIF};
|
||||
function FMUSIC_GetNumPatterns; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumPatterns@4' {$ENDIF};
|
||||
function FMUSIC_GetNumInstruments; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumInstruments@4' {$ENDIF};
|
||||
function FMUSIC_GetNumSamples; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumSamples@4' {$ENDIF};
|
||||
function FMUSIC_GetNumChannels; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetNumChannels@4' {$ENDIF};
|
||||
function FMUSIC_GetSample; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetSample@8' {$ENDIF};
|
||||
function FMUSIC_GetPatternLength; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetPatternLength@8' {$ENDIF};
|
||||
function FMUSIC_IsFinished; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_IsFinished@4' {$ENDIF};
|
||||
function FMUSIC_IsPlaying; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_IsPlaying@4' {$ENDIF};
|
||||
function FMUSIC_GetMasterVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetMasterVolume@4' {$ENDIF};
|
||||
function FMUSIC_GetGlobalVolume; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetGlobalVolume@4' {$ENDIF};
|
||||
function FMUSIC_GetOrder; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetOrder@4' {$ENDIF};
|
||||
function FMUSIC_GetPattern; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetPattern@4' {$ENDIF};
|
||||
function FMUSIC_GetSpeed; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetSpeed@4' {$ENDIF};
|
||||
function FMUSIC_GetBPM; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetBPM@4' {$ENDIF};
|
||||
function FMUSIC_GetRow; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetRow@4' {$ENDIF};
|
||||
function FMUSIC_GetPaused; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetPaused@4' {$ENDIF};
|
||||
function FMUSIC_GetTime; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetTime@4' {$ENDIF};
|
||||
function FMUSIC_GetRealChannel; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetRealChannel@8' {$ENDIF};
|
||||
function FMUSIC_GetUserData; external FMOD_DLL {$IFDEF MSWINDOWS} name '_FMUSIC_GetUserData@4' {$ENDIF};
|
||||
|
||||
var
|
||||
Saved8087CW: Word;
|
||||
|
||||
{$ifdef FPC} //FPC do not have this function in its RTL
|
||||
const
|
||||
Default8087CW = $1332; //according to the FPC site it's the value used in the
|
||||
//startup code.
|
||||
procedure Set8087CW( value :word ); Assembler;
|
||||
asm
|
||||
FLDCW value
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
|
||||
initialization
|
||||
{ Save the current FPU state and then disable FPU exceptions }
|
||||
Saved8087CW := Default8087CW;
|
||||
Set8087CW($133f); { Disable all fpu exceptions }
|
||||
|
||||
finalization
|
||||
{ Reset the FPU to the previous state }
|
||||
Set8087CW(Saved8087CW);
|
||||
|
||||
end.
|
||||
@@ -0,0 +1,864 @@
|
||||
{============================================================================================ }
|
||||
{ FMOD Main header file. Copyright (c), FireLight Technologies Pty, Ltd. 1999-2003. }
|
||||
{ =========================================================================================== }
|
||||
{
|
||||
NOTE: For the demos to run you must have either fmod.dll (in Windows)
|
||||
or libfmod-3.75.so (in Linux) installed.
|
||||
|
||||
In Windows, copy the fmod.dll file found in the api directory to either of
|
||||
the following locations (in order of preference)
|
||||
- your application directory
|
||||
- Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
|
||||
|
||||
In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
|
||||
file from the api directory to your /usr/lib/ directory.
|
||||
Then via a command line, navigate to the /usr/lib/ directory and create
|
||||
a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
|
||||
the following command (assuming you are in /usr/lib/)...
|
||||
ln -s libfmod-3.75.so libfmod.so.
|
||||
}
|
||||
{ =============================================================================================== }
|
||||
|
||||
unit fmoddyn;
|
||||
|
||||
{
|
||||
Disable assertions by changing the following compiler directive to OFF.
|
||||
Assertions are used to check the functions are correctly loaded when using
|
||||
dynamic loading.
|
||||
}
|
||||
{$ASSERTIONS ON}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
{$IFDEF MSWINDOWS}
|
||||
Windows,
|
||||
{$ENDIF}
|
||||
fmodtypes;
|
||||
|
||||
{
|
||||
Disable warning for unsafe types in Delphi 7
|
||||
}
|
||||
{$IFDEF VER150}
|
||||
{$WARN UNSAFE_TYPE OFF}
|
||||
{$ENDIF}
|
||||
|
||||
//===============================================================================================
|
||||
// FUNCTION PROTOTYPES
|
||||
//===============================================================================================
|
||||
|
||||
{ ================================== }
|
||||
{ Library load/unload functions. }
|
||||
{ ================================== }
|
||||
|
||||
{
|
||||
If no library name is passed to FMOD_Load, then the default library name
|
||||
used.
|
||||
}
|
||||
|
||||
function FMOD_Load(LibName: PChar {$ifndef FPC}= nil{$endif}): Boolean;
|
||||
procedure FMOD_Unload;
|
||||
|
||||
{ ================================== }
|
||||
{ Initialization / Global functions. }
|
||||
{ ================================== }
|
||||
|
||||
{
|
||||
Pre FSOUND_Init functions. These can't be called after FSOUND_Init is
|
||||
called (they will fail). They set up FMOD system functionality.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_SetOutput: function (OutputType: TFSoundOutputTypes): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetDriver: function (Driver: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetMixer: function (Mixer: TFSoundMixerTypes): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetBufferSize: function (LenMs: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetHWND: function (Hwnd: THandle): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetMinHardwareChannels: function (Min: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetMaxHardwareChannels: function (Max: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetMemorySystem: function (Pool: Pointer;
|
||||
PoolLen: Integer;
|
||||
UserAlloc: TFSoundAllocCallback;
|
||||
UserRealloc: TFSoundReallocCallback;
|
||||
UserFree: TFSoundFreeCallback): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Main initialization / closedown functions
|
||||
Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override with MIDI playback.
|
||||
: Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible
|
||||
no matter which window is in focus. (FSOUND_OUTPUT_DSOUND only)
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Init: function (MixRate: Integer; MaxSoftwareChannels: Integer; Flags: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Close: procedure; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Runtime system level functions
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Update: procedure; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; // This is called to update 3d sound / non-realtime output
|
||||
FSOUND_SetSpeakerMode: procedure (SpeakerMode: Cardinal); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetSFXMasterVolume: procedure (Volume: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetPanSeperation: procedure (PanSep: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_File_SetCallbacks: procedure (OpenCallback: TFSoundOpenCallback;
|
||||
CloseCallback: TFSoundCloseCallback;
|
||||
ReadCallback: TFSoundReadCallback;
|
||||
SeekCallback: TFSoundSeekCallback;
|
||||
TellCallback: TFSoundTellCallback); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
System information functions
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_GetError: function: TFModErrors; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetVersion: function: Single; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetOutput: function: TFSoundOutputTypes; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetOutputHandle: function: Pointer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetDriver: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetMixer: function: TFSoundMixerTypes; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetNumDrivers: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetDriverName: function (Id: Integer): PChar; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetDriverCaps: function (Id: Integer; var Caps: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
var
|
||||
FSOUND_GetOutputRate: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetMaxChannels: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetMaxSamples: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetSpeakerMode: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetSFXMasterVolume: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetNumHWChannels: function (var Num2D: Integer; var Num3D: Integer; var Total: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetChannelsPlaying: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetCPUUsage: function: Single; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetMemoryStats: Procedure (var CurrentAlloced: Cardinal; var MaxAlloced: Cardinal); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================================== }
|
||||
{ Sample management / load functions. }
|
||||
{ =================================== }
|
||||
|
||||
{
|
||||
Sample creation and management functions
|
||||
Note : Use FSOUND_LOADMEMORY flag with FSOUND_Sample_Load to load from memory.
|
||||
Use FSOUND_LOADRAW flag with FSOUND_Sample_Load to treat as as raw pcm data.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Sample_Load: function (Index: Integer; const NameOrData: PChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_Alloc: function (Index: Integer; Length: Integer; Mode: Cardinal; DefFreq: Integer; DefVol: Integer; DefPan: Integer; DefPri: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_Free: procedure (Sptr: PFSoundSample); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_Upload: function (Sptr: PFSoundSample; SrcData: Pointer; Mode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_Lock: function (Sptr: PFSoundSample; Offset: Integer; Length: Integer; var Ptr1: Pointer; var Ptr2: Pointer; var Len1: Cardinal; var Len2: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_Unlock: function (Sptr: PFSoundSample; Ptr1: Pointer; Ptr2: Pointer; Len1: Cardinal; Len2: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Sample control functions
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Sample_SetMode: function (Sptr: PFSoundSample; Mode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_SetLoopPoints: function (Sptr: PFSoundSample; LoopStart, LoopEnd: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_SetDefaults: function (Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_SetDefaultsEx: function (Sptr: PFSoundSample; DefFreq, DefVol, DefPan, DefPri, VarFreq, VarVol, VarPan: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_SetMinMaxDistance: function (Sptr: PFSoundSample; Min, Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_SetMaxPlaybacks: function (Sptr: PFSoundSample; Max: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Sample information functions
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Sample_Get: function (SampNo: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_GetName: function (Sptr: PFSoundSample): PCHAR; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_GetLength: function (Sptr: PFSoundSample): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_GetLoopPoints: function (Sptr: PFSoundSample; var LoopStart: Integer; var LoopEnd: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_GetDefaults: function (Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_GetDefaultsEx: function (Sptr: PFSoundSample; var DefFreq: Integer; var DefVol: Integer; var DefPan: Integer; var DefPri: Integer; var VarFreq: Integer; var VarVol: Integer; var VarPan): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_GetMode: function (Sptr: PFSoundSample): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Sample_GetMinMaxDistance: function (Sptr: PFSoundSample; var Min: Single; var Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ============================ }
|
||||
{ Channel control functions. }
|
||||
{ ============================ }
|
||||
|
||||
{
|
||||
Playing and stopping sounds.
|
||||
Note : Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
|
||||
Use FSOUND_ALL as the 'channel' variable to control ALL channels with one function call!
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_PlaySound: function (Channel: Integer; Sptr: PFSoundSample): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_PlaySoundEx: function (Channel: Integer; Sptr: PFSoundSample; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_StopSound: function (Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Functions to control playback of a channel.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_SetFrequency: function (Channel: Integer; Freq: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetVolume: function (Channel: Integer; Vol: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetVolumeAbsolute: function (Channel: Integer; Vol: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetPan: function (Channel: Integer; Pan: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetSurround: function (Channel: Integer; Surround: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetMute: function (Channel: Integer; Mute: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetPriority: function (Channel: Integer; Priority: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetReserved: function (Channel: Integer; Reserved: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetPaused: function (Channel: Integer; Paused: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetLoopMode: function (Channel: Integer; LoopMode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_SetCurrentPosition: function (Channel: Integer; Offset: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_SetAttributes: function (Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_SetMinMaxDistance: function (Channel: Integer; Min: Single; Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Channel information functions
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_IsPlaying: function (Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetFrequency: function (Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetVolume: function (Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetAmplitude: function (Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetPan: function (Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetSurround: function (Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetMute: function (Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetPriority: function (Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetReserved: function (Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetPaused: function (Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetLoopMode: function (Channel: Integer): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetCurrentPosition: function (Channel: Integer): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetCurrentSample: function (Channel: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetCurrentLevels: function (Channel: Integer; L, R: PSingle): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetNumSubChannels: function (Channel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_GetSubChannel: function (Channel: Integer; SubChannel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_GetAttributes: function (Channel: Integer; Pos: PFSoundVector; Vel: PFSoundVector): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_GetMinMaxDistance: function (Channel: Integer; var Min: Single; var Max: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================== }
|
||||
{ 3D sound functions. }
|
||||
{ =================== }
|
||||
|
||||
{
|
||||
See also 3d sample and channel based functions above.
|
||||
Call FSOUND_Update once a frame to process 3d information.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_3D_Listener_SetCurrent: procedure (current: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_Listener_SetAttributes: procedure (Pos: PFSoundVector; Vel: PFSoundVector;
|
||||
fx: Single; fy: Single; fz: Single;
|
||||
tx: Single; ty: Single; tz: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_Listener_GetAttributes: procedure (Pos: PFSoundVector; Vel: PFSoundVector;
|
||||
fx: PSingle; fy: PSingle; fz: PSingle;
|
||||
tx: PSingle; ty: PSingle; tz: PSingle); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_SetDopplerFactor: procedure (Scale: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_SetDistanceFactor: procedure (Scale: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_3D_SetRolloffFactor: procedure (Scale: Single); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================== }
|
||||
{ FX functions. }
|
||||
{ =================== }
|
||||
|
||||
{
|
||||
Functions to control DX8 only effects processing.
|
||||
|
||||
- FX enabled samples can only be played once at a time, not multiple times at once.
|
||||
- Sounds have to be created with FSOUND_HW2D or FSOUND_HW3D for this to work.
|
||||
- FSOUND_INIT_ENABLESYSTEMCHANNELFX can be used to apply hardware effect processing to the
|
||||
global mixed output of FMOD's software channels.
|
||||
- FSOUND_FX_Enable returns an FX handle that you can use to alter fx parameters.
|
||||
- FSOUND_FX_Enable can be called multiple times in a row, even on the same FX type,
|
||||
it will return a unique handle for each FX.
|
||||
- FSOUND_FX_Enable cannot be called if the sound is playing or locked.
|
||||
- Stopping or starting a sound resets all FX and they must be re-enabled each time
|
||||
if this happens.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_FX_Enable: function (Channel: Integer; Fx: TFSoundFXModes): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Set bits to enable following fx }
|
||||
FSOUND_FX_Disable: function (Channel: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_FX_SetChorus: function (FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetCompressor: function (FXId: Integer; Gain, Attack, Release, Threshold, Ratio, Predelay: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetDistortion: function (FXId: Integer; Gain, Edge, PostEQCenterFrequency, PostEQBandwidth, PreLowpassCutoff: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetEcho: function (FXId: Integer; WetDryMix, Feedback, LeftDelay, RightDelay: Single; PanDelay: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetFlanger: function (FXId: Integer; WetDryMix, Depth, Feedback, Frequency: Single; Waveform: Integer; Delay: Single; Phase: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetGargle: function (FXId, RateHz, WaveShape: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetI3DL2Reverb: function (FXId, Room, RoomHF: Integer; RoomRolloffFactor, DecayTime, DecayHFRatio: Single; Reflections: Integer; ReflectionsDelay: Single; Reverb: Integer; ReverbDelay, Diffusion, Density, HFReference: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetParamEQ: function (FXId: Integer; Center, Bandwidth, Gain: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_FX_SetWavesReverb: function (FXId: Integer; InGain, ReverbMix, ReverbTime, HighFreqRTRatio: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ========================= }
|
||||
{ File Streaming functions. }
|
||||
{ ========================= }
|
||||
|
||||
{
|
||||
Note : Use FSOUND_LOADMEMORY flag with FSOUND_Stream_Open to stream from memory.
|
||||
Use FSOUND_LOADRAW flag with FSOUND_Stream_Open to treat stream as raw pcm data.
|
||||
Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_Open to open mpegs in 'accurate mode' for settime/gettime/getlengthms.
|
||||
Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
|
||||
}
|
||||
|
||||
var
|
||||
// call this before opening streams, not after
|
||||
FSOUND_Stream_SetBufferSize: function (Ms: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_Open: function(const name_or_data: PChar; Mode: Cardinal; Offset: Integer; Length: Integer): PFSoundStream; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Create: function (Callback: TFSoundStreamCallback; Length: Integer; Mode: Cardinal; SampleRate: Integer; UserData: Integer): PFSoundStream; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Close: function(Stream: PFSoundStream): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_Play: function(Channel: Integer; Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_PlayEx: function (Channel: Integer; Stream: PFSoundStream; Dsp: PFSoundDSPUnit; StartPaused: ByteBool): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Stop: function(Stream: PFSoundStream): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_SetPosition: function (Stream: PFSoundStream; Position: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetPosition: function (Stream: PFSoundStream): Cardinal; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_SetTime: function (Stream: PFSoundStream; Ms: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetTime: function (Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetLength: function (Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetLengthMs: function (Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_SetMode: function (Stream: PFSoundStream; mode: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetMode: function (Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_SetLoopPoints: function (Stream: PFSoundStream; LoopStartPCM, LoopEndPCM: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_SetLoopCount: function (Stream: PFSoundStream; Count: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetOpenState: function (Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetSample: function (Stream: PFSoundStream): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Every stream contains a sample to play back on }
|
||||
FSOUND_Stream_CreateDSP: function (Stream: PFSoundStream; Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_SetEndCallback: function (Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_SetSyncCallback: function (Stream: PFSoundStream; Callback: TFSoundStreamCallback; UserData: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_AddSyncPoint: function (Stream: PFSoundStream; PCMOffset: Cardinal; Name: PChar): PFSyncPoint; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_DeleteSyncPoint: function (Point: PFSyncPoint): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetNumSyncPoints: function (Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetSyncPoint: function (Stream: PFSoundStream; Index: Integer): PFSyncPoint; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetSyncPointInfo: function (Point: PFSyncPoint; var PCMOffset: Cardinal): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_SetSubStream: function (Stream: PFSoundStream; Index: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetNumSubStreams: function (Stream: PFSoundStream): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_SetSubStreamSentence: function (Stream: PFSoundStream; var sentencelist: Cardinal; numitems: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_GetNumTagFields: function (Stream: PFSoundStream; var Num: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_GetTagField: function (Stream: PFSoundStream; Num: Integer; var _Type: TFSoundTagFieldType; var Name: PCHAR; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_FindTagField: function (Stream: PFSoundStream; _Type: TFSoundTagFieldType; Name: PChar; var Value: Pointer; var Length: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
FSOUND_Stream_Net_SetProxy: function (Proxy: PChar): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Net_GetLastServerStatus: function: PChar; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Net_SetBufferProperties: function (BufferSize: Integer; PreBuffer_Percent: Integer; ReBuffer_Percent: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Net_GetBufferProperties: function (var Buffersize: Integer; var PreBuffer_Percent: Integer; var ReBuffer_Percent: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Net_SetMetadataCallback: function (Stream: PFSoundStream; Callback: TFMetaDataCallback; UserData: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Stream_Net_GetStatus: function (Stream: PFSoundStream; var Status: TFSoundStreamNetStatus; var BufferPercentUsed: Integer; var BitRate: Integer; var Flags: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ =================== }
|
||||
{ CD audio functions. }
|
||||
{ =================== }
|
||||
|
||||
{
|
||||
Note : 0 = default cdrom. Otherwise specify the drive letter, for example. 'D'.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_CD_Play: function (Drive: Byte; Track: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_SetPlayMode: procedure (Drive: Byte; Mode: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_Stop: function (Drive: Byte): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_SetPaused: function (Drive: Byte; Paused: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_SetVolume: function (Drive: Byte; Volume: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_SetTrackTime: function (Drive: Byte; ms: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_OpenTray: function (Drive: Byte; Open: Byte): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
var
|
||||
FSOUND_CD_GetPaused: function (Drive: Byte): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_GetTrack: function (Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_GetNumTracks: function (Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_GetVolume: function (Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_GetTrackLength: function (Drive: Byte; Track: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_CD_GetTrackTime: function (Drive: Byte): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ============== }
|
||||
{ DSP functions. }
|
||||
{ ============== }
|
||||
|
||||
{
|
||||
DSP Unit control and information functions.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_DSP_Create: function (Callback: TFSoundDSPCallback; Priority: Integer; Param: Integer): PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_Free: procedure (DSPUnit: PFSoundDSPUnit); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_SetPriority: procedure (DSPUnit: PFSoundDSPUnit; Priority: Integer); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_GetPriority: function (DSPUnit: PFSoundDSPUnit): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_SetActive: procedure (DSPUnit: PFSoundDSPUnit; Active: ByteBool); {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_GetActive: function (DSPUnit: PFSoundDSPUnit): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Functions to get hold of FSOUND 'system DSP unit' handles.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_DSP_GetClearUnit: function: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_GetSFXUnit: function: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_GetMusicUnit: function: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_GetClipAndCopyUnit: function: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_GetFFTUnit: function: PFSoundDSPUnit; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Miscellaneous DSP functions
|
||||
Note for the spectrum analysis function to work, you have to enable the FFT DSP unit with
|
||||
the following code FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE);
|
||||
It is off by default to save cpu usage.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_DSP_MixBuffers: function (DestBuffer: Pointer; SrcBuffer: Pointer; Len: Integer; Freq: Integer; Vol: Integer; Pan: Integer; Mode: Cardinal): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_ClearMixBuffer: procedure; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_DSP_GetBufferLength: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Length of each DSP update }
|
||||
FSOUND_DSP_GetBufferLengthTotal: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Total buffer length due to FSOUND_SetBufferSize }
|
||||
FSOUND_DSP_GetSpectrum: function: PSingle; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF}; { Array of 512 floats - call FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE)) for this to work. }
|
||||
|
||||
{ ========================================================================== }
|
||||
{ Reverb functions. (eax2/eax3 reverb) (NOT SUPPORTED IN LINUX/CE) }
|
||||
{ ========================================================================== }
|
||||
|
||||
{
|
||||
See structures above for definitions and information on the reverb parameters.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Reverb_SetProperties: function (const Prop: TFSoundReverbProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Reverb_GetProperties: function (var Prop: TFSoundReverbProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Reverb_SetChannelProperties: function (Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Reverb_GetChannelProperties: function (Channel: Integer; var Prop: TFSoundReverbChannelProperties): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ================================================ }
|
||||
{ Recording functions (NOT SUPPORTED IN LINUX/MAC) }
|
||||
{ ================================================ }
|
||||
|
||||
{
|
||||
Recording initialization functions
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Record_SetDriver: function (OutputType: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Record_GetNumDrivers: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Record_GetDriverName: function (Id: Integer): PChar; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Record_GetDriver: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Recording functionality. Only one recording session will work at a time.
|
||||
}
|
||||
|
||||
var
|
||||
FSOUND_Record_StartSample: function (Sptr: PFSoundSample; Loop: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Record_Stop: function: ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FSOUND_Record_GetPosition: function: Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{ ============================================================================================= }
|
||||
{ FMUSIC API (MOD,S3M,XM,IT,MIDI PLAYBACK) }
|
||||
{ ============================================================================================= }
|
||||
|
||||
{
|
||||
Song management / playback functions.
|
||||
}
|
||||
|
||||
var
|
||||
FMUSIC_LoadSong: function (const Name: PChar): PFMusicModule; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_LoadSongEx: function (Name_Or_Data: Pointer; Offset: Integer; Length: Integer; Mode: Cardinal; var SampleList: Integer; SampleListNum: Integer): PFMusicModule; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetOpenState: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_FreeSong: function (Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_PlaySong: function (Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_StopSong: function (Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_StopAllSongs: procedure; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
var
|
||||
FMUSIC_SetZxxCallback: function (Module: PFMusicModule; Callback: TFMusicCallback): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetRowCallback: function (Module: PFMusicModule; Callback: TFMusicCallback; RowStep: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetOrderCallback: function (Module: PFMusicModule; Callback: TFMusicCallback; OrderStep: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetInstCallback: function (Module: PFMusicModule; Callback: TFMusicCallback; Instrument: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
var
|
||||
FMUSIC_SetSample: function (Module: PFMusicModule; SampNo: Integer; Sptr: PFSoundSample): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetUserData: function (Module: PFMusicModule; userdata: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_OptimizeChannels: function (Module: PFMusicModule; MaxChannels: Integer; MinVolume: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Runtime song functions.
|
||||
}
|
||||
|
||||
var
|
||||
FMUSIC_SetReverb: function (Reverb: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetLooping: function (Module: PFMusicModule; Looping: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetOrder: function (Module: PFMusicModule; Order: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetPaused: function (Module: PFMusicModule; Pause: ByteBool): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetMasterVolume: function (Module: PFMusicModule; Volume: Integer): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetMasterSpeed: function (Module: PFMusicModule; Speed: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_SetPanSeperation: function (Module: PFMusicModule; PanSep: Single): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Static song information functions.
|
||||
}
|
||||
|
||||
var
|
||||
FMUSIC_GetName: function (Module: PFMusicModule): PCHAR; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetType: function (Module: PFMusicModule): TFMusicTypes; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetNumOrders: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetNumPatterns: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetNumInstruments: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetNumSamples: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetNumChannels: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetSample: function (Module: PFMusicModule; SampNo: Integer): PFSoundSample; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetPatternLength: function (Module: PFMusicModule; OrderNo: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
{
|
||||
Runtime song information.
|
||||
}
|
||||
|
||||
var
|
||||
FMUSIC_IsFinished: function (Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_IsPlaying: function (Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetMasterVolume: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetGlobalVolume: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetOrder: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetPattern: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetSpeed: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetBPM: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetRow: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetPaused: function (Module: PFMusicModule): ByteBool; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetTime: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetRealChannel: function (Module: PFMusicModule; ModChannel: Integer): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
FMUSIC_GetUserData: function (Module: PFMusicModule): Integer; {$IFDEF LINUX} cdecl {$ELSE} stdcall {$ENDIF};
|
||||
|
||||
implementation
|
||||
|
||||
{$IFDEF LINUX}
|
||||
uses
|
||||
Libc;
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
{$IFDEF LINUX}
|
||||
FMOD_DLL = 'libfmod.so';
|
||||
{$ELSE}
|
||||
{$IFDEF MSWINDOWS}
|
||||
FMOD_DLL = 'fmod.dll';
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
type
|
||||
{$IFDEF LINUX}
|
||||
TFMODModuleHandle = Pointer;
|
||||
{$ELSE}
|
||||
TFMODModuleHandle = HINST;
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
{$IFDEF LINUX}
|
||||
INVALID_MODULEHANDLE_VALUE = TFMODModuleHandle(nil);
|
||||
{$ELSE}
|
||||
INVALID_MODULEHANDLE_VALUE = TFMODModuleHandle(0);
|
||||
{$ENDIF}
|
||||
|
||||
var
|
||||
FMODHandle: TFMODModuleHandle;
|
||||
|
||||
function GetAddress(Handle: TFMODModuleHandle; FuncName: PChar): Pointer;
|
||||
begin
|
||||
{$IFDEF MSWINDOWS}
|
||||
Result := GetProcAddress(Handle, FuncName);
|
||||
{$ELSE}
|
||||
Result := dlsym(Handle, FuncName);
|
||||
{$ENDIF}
|
||||
Assert(Result <> nil, 'Failed to find ' + FuncName + ' in ' + FMOD_DLL);
|
||||
end;
|
||||
|
||||
function FMOD_Load(LibName: PChar): Boolean;
|
||||
begin
|
||||
Result := False;
|
||||
|
||||
{ Make sure the previous library is unloaded }
|
||||
FMOD_Unload;
|
||||
|
||||
{ If no library name given, use the default library names }
|
||||
if LibName = nil then
|
||||
LibName := FMOD_DLL;
|
||||
|
||||
{ Load the library }
|
||||
{$IFDEF MSWINDOWS}
|
||||
FMODHandle := LoadLibrary(LibName);
|
||||
{$ELSE}
|
||||
FMODHandle := dlopen(LibName, RTLD_NOW);
|
||||
{$ENDIF}
|
||||
if FMODHandle = INVALID_MODULEHANDLE_VALUE then
|
||||
Exit;
|
||||
|
||||
{ Get all the function addresses from the library }
|
||||
FSOUND_SetOutput := GetAddress(FMODHandle, '_FSOUND_SetOutput@4');
|
||||
FSOUND_SetDriver := GetAddress(FMODHandle, '_FSOUND_SetDriver@4');
|
||||
FSOUND_SetMixer := GetAddress(FMODHandle, '_FSOUND_SetMixer@4');
|
||||
FSOUND_SetBufferSize := GetAddress(FMODHandle, '_FSOUND_SetBufferSize@4');
|
||||
FSOUND_SetHWND := GetAddress(FMODHandle, '_FSOUND_SetHWND@4');
|
||||
FSOUND_SetMinHardwareChannels := GetAddress(FMODHandle, '_FSOUND_SetMinHardwareChannels@4');
|
||||
FSOUND_SetMaxHardwareChannels := GetAddress(FMODHandle, '_FSOUND_SetMaxHardwareChannels@4');
|
||||
FSOUND_SetMemorySystem := GetAddress(FMODHandle, '_FSOUND_SetMemorySystem@20');
|
||||
FSOUND_Init := GetAddress(FMODHandle, '_FSOUND_Init@12');
|
||||
FSOUND_Close := GetAddress(FMODHandle, '_FSOUND_Close@0');
|
||||
FSOUND_Update := GetAddress(FMODHandle, '_FSOUND_Update@0');
|
||||
FSOUND_SetSpeakerMode := GetAddress(FMODHandle, '_FSOUND_SetSpeakerMode@4');
|
||||
FSOUND_SetSFXMasterVolume := GetAddress(FMODHandle, '_FSOUND_SetSFXMasterVolume@4');
|
||||
FSOUND_SetPanSeperation := GetAddress(FMODHandle, '_FSOUND_SetPanSeperation@4');
|
||||
FSOUND_GetError := GetAddress(FMODHandle, '_FSOUND_GetError@0');
|
||||
FSOUND_GetVersion := GetAddress(FMODHandle, '_FSOUND_GetVersion@0');
|
||||
FSOUND_GetOutput := GetAddress(FMODHandle, '_FSOUND_GetOutput@0');
|
||||
FSOUND_GetOutputHandle := GetAddress(FMODHandle, '_FSOUND_GetOutputHandle@0');
|
||||
FSOUND_GetDriver := GetAddress(FMODHandle, '_FSOUND_GetDriver@0');
|
||||
FSOUND_GetMixer := GetAddress(FMODHandle, '_FSOUND_GetMixer@0');
|
||||
FSOUND_GetNumDrivers := GetAddress(FMODHandle, '_FSOUND_GetNumDrivers@0');
|
||||
FSOUND_GetDriverName := GetAddress(FMODHandle, '_FSOUND_GetDriverName@4');
|
||||
FSOUND_GetDriverCaps := GetAddress(FMODHandle, '_FSOUND_GetDriverCaps@8');
|
||||
FSOUND_GetOutputRate := GetAddress(FMODHandle, '_FSOUND_GetOutputRate@0');
|
||||
FSOUND_GetMaxChannels := GetAddress(FMODHandle, '_FSOUND_GetMaxChannels@0');
|
||||
FSOUND_GetMaxSamples := GetAddress(FMODHandle, '_FSOUND_GetMaxSamples@0');
|
||||
FSOUND_GetSpeakerMode := GetAddress(FMODHandle, '_FSOUND_GetSpeakerMode@0');
|
||||
FSOUND_GetSFXMasterVolume := GetAddress(FMODHandle, '_FSOUND_GetSFXMasterVolume@0');
|
||||
FSOUND_GetNumHWChannels := GetAddress(FMODHandle, '_FSOUND_GetNumHWChannels@12');
|
||||
FSOUND_GetChannelsPlaying := GetAddress(FMODHandle, '_FSOUND_GetChannelsPlaying@0');
|
||||
FSOUND_GetCPUUsage := GetAddress(FMODHandle, '_FSOUND_GetCPUUsage@0');
|
||||
FSOUND_GetMemoryStats := GetAddress(FMODHandle, '_FSOUND_GetMemoryStats@8');
|
||||
FSOUND_Sample_Load := GetAddress(FMODHandle, '_FSOUND_Sample_Load@20');
|
||||
FSOUND_Sample_Alloc := GetAddress(FMODHandle, '_FSOUND_Sample_Alloc@28');
|
||||
FSOUND_Sample_Free := GetAddress(FMODHandle, '_FSOUND_Sample_Free@4');
|
||||
FSOUND_Sample_Upload := GetAddress(FMODHandle, '_FSOUND_Sample_Upload@12');
|
||||
FSOUND_Sample_Lock := GetAddress(FMODHandle, '_FSOUND_Sample_Lock@28');
|
||||
FSOUND_Sample_Unlock := GetAddress(FMODHandle, '_FSOUND_Sample_Unlock@20');
|
||||
FSOUND_Sample_SetMode := GetAddress(FMODHandle, '_FSOUND_Sample_SetMode@8');
|
||||
FSOUND_Sample_SetLoopPoints := GetAddress(FMODHandle, '_FSOUND_Sample_SetLoopPoints@12');
|
||||
FSOUND_Sample_SetDefaults := GetAddress(FMODHandle, '_FSOUND_Sample_SetDefaults@20');
|
||||
FSOUND_Sample_SetDefaultsEx := GetAddress(FMODHandle, '_FSOUND_Sample_SetDefaultsEx@32');
|
||||
FSOUND_Sample_SetMinMaxDistance := GetAddress(FMODHandle, '_FSOUND_Sample_SetMinMaxDistance@12');
|
||||
FSOUND_Sample_SetMaxPlaybacks := GetAddress(FMODHandle, '_FSOUND_Sample_SetMaxPlaybacks@8');
|
||||
FSOUND_Sample_Get := GetAddress(FMODHandle, '_FSOUND_Sample_Get@4');
|
||||
FSOUND_Sample_GetName := GetAddress(FMODHandle, '_FSOUND_Sample_GetName@4');
|
||||
FSOUND_Sample_GetLength := GetAddress(FMODHandle, '_FSOUND_Sample_GetLength@4');
|
||||
FSOUND_Sample_GetLoopPoints := GetAddress(FMODHandle, '_FSOUND_Sample_GetLoopPoints@12');
|
||||
FSOUND_Sample_GetDefaults := GetAddress(FMODHandle, '_FSOUND_Sample_GetDefaults@20');
|
||||
FSOUND_Sample_GetDefaultsEx := GetAddress(FMODHandle, '_FSOUND_Sample_GetDefaultsEx@32');
|
||||
FSOUND_Sample_GetMode := GetAddress(FMODHandle, '_FSOUND_Sample_GetMode@4');
|
||||
FSOUND_Sample_GetMinMaxDistance := GetAddress(FMODHandle, '_FSOUND_Sample_GetMinMaxDistance@12');
|
||||
FSOUND_PlaySound := GetAddress(FMODHandle, '_FSOUND_PlaySound@8');
|
||||
FSOUND_PlaySoundEx := GetAddress(FMODHandle, '_FSOUND_PlaySoundEx@16');
|
||||
FSOUND_StopSound := GetAddress(FMODHandle, '_FSOUND_StopSound@4');
|
||||
FSOUND_SetFrequency := GetAddress(FMODHandle, '_FSOUND_SetFrequency@8');
|
||||
FSOUND_SetVolume := GetAddress(FMODHandle, '_FSOUND_SetVolume@8');
|
||||
FSOUND_SetVolumeAbsolute := GetAddress(FMODHandle, '_FSOUND_SetVolumeAbsolute@8');
|
||||
FSOUND_SetPan := GetAddress(FMODHandle, '_FSOUND_SetPan@8');
|
||||
FSOUND_SetSurround := GetAddress(FMODHandle, '_FSOUND_SetSurround@8');
|
||||
FSOUND_SetMute := GetAddress(FMODHandle, '_FSOUND_SetMute@8');
|
||||
FSOUND_SetPriority := GetAddress(FMODHandle, '_FSOUND_SetPriority@8');
|
||||
FSOUND_SetReserved := GetAddress(FMODHandle, '_FSOUND_SetReserved@8');
|
||||
FSOUND_SetPaused := GetAddress(FMODHandle, '_FSOUND_SetPaused@8');
|
||||
FSOUND_SetLoopMode := GetAddress(FMODHandle, '_FSOUND_SetLoopMode@8');
|
||||
FSOUND_SetCurrentPosition := GetAddress(FMODHandle, '_FSOUND_SetCurrentPosition@8');
|
||||
FSOUND_3D_SetAttributes := GetAddress(FMODHandle, '_FSOUND_3D_SetAttributes@12');
|
||||
FSOUND_3D_SetMinMaxDistance := GetAddress(FMODHandle, '_FSOUND_3D_SetMinMaxDistance@12');
|
||||
FSOUND_IsPlaying := GetAddress(FMODHandle, '_FSOUND_IsPlaying@4');
|
||||
FSOUND_GetFrequency := GetAddress(FMODHandle, '_FSOUND_GetFrequency@4');
|
||||
FSOUND_GetVolume := GetAddress(FMODHandle, '_FSOUND_GetVolume@4');
|
||||
FSOUND_GetAmplitude := GetAddress(FMODHandle, '_FSOUND_GetAmplitude@4');
|
||||
FSOUND_GetPan := GetAddress(FMODHandle, '_FSOUND_GetPan@4');
|
||||
FSOUND_GetSurround := GetAddress(FMODHandle, '_FSOUND_GetSurround@4');
|
||||
FSOUND_GetMute := GetAddress(FMODHandle, '_FSOUND_GetMute@4');
|
||||
FSOUND_GetPriority := GetAddress(FMODHandle, '_FSOUND_GetPriority@4');
|
||||
FSOUND_GetReserved := GetAddress(FMODHandle, '_FSOUND_GetReserved@4');
|
||||
FSOUND_GetPaused := GetAddress(FMODHandle, '_FSOUND_GetPaused@4');
|
||||
FSOUND_GetLoopMode := GetAddress(FMODHandle, '_FSOUND_GetLoopMode@4');
|
||||
FSOUND_GetCurrentPosition := GetAddress(FMODHandle, '_FSOUND_GetCurrentPosition@4');
|
||||
FSOUND_GetCurrentSample := GetAddress(FMODHandle, '_FSOUND_GetCurrentSample@4');
|
||||
FSOUND_GetCurrentLevels := GetAddress(FMODHandle, '_FSOUND_GetCurrentLevels@12');
|
||||
FSOUND_GetNumSubChannels := GetAddress(FMODHandle, '_FSOUND_GetNumSubChannels@4');
|
||||
FSOUND_GetSubChannel := GetAddress(FMODHandle, '_FSOUND_GetSubChannel@8');
|
||||
FSOUND_3D_GetAttributes := GetAddress(FMODHandle, '_FSOUND_3D_GetAttributes@12');
|
||||
FSOUND_3D_GetMinMaxDistance := GetAddress(FMODHandle, '_FSOUND_3D_GetMinMaxDistance@12');
|
||||
FSOUND_3D_Listener_SetCurrent := GetAddress(FMODHandle, '_FSOUND_3D_Listener_SetCurrent@8');
|
||||
FSOUND_3D_Listener_SetAttributes := GetAddress(FMODHandle, '_FSOUND_3D_Listener_SetAttributes@32');
|
||||
FSOUND_3D_Listener_GetAttributes := GetAddress(FMODHandle, '_FSOUND_3D_Listener_GetAttributes@32');
|
||||
FSOUND_3D_SetDopplerFactor := GetAddress(FMODHandle, '_FSOUND_3D_SetDopplerFactor@4');
|
||||
FSOUND_3D_SetDistanceFactor := GetAddress(FMODHandle, '_FSOUND_3D_SetDistanceFactor@4');
|
||||
FSOUND_3D_SetRolloffFactor := GetAddress(FMODHandle, '_FSOUND_3D_SetRolloffFactor@4');
|
||||
FSOUND_FX_Enable := GetAddress(FMODHandle, '_FSOUND_FX_Enable@8');
|
||||
FSOUND_FX_SetChorus := GetAddress(FMODHandle, '_FSOUND_FX_SetChorus@32');
|
||||
FSOUND_FX_SetCompressor := GetAddress(FMODHandle, '_FSOUND_FX_SetCompressor@28');
|
||||
FSOUND_FX_SetDistortion := GetAddress(FMODHandle, '_FSOUND_FX_SetDistortion@24');
|
||||
FSOUND_FX_SetEcho := GetAddress(FMODHandle, '_FSOUND_FX_SetEcho@24');
|
||||
FSOUND_FX_SetFlanger := GetAddress(FMODHandle, '_FSOUND_FX_SetFlanger@32');
|
||||
FSOUND_FX_SetGargle := GetAddress(FMODHandle, '_FSOUND_FX_SetGargle@12');
|
||||
FSOUND_FX_SetI3DL2Reverb := GetAddress(FMODHandle, '_FSOUND_FX_SetI3DL2Reverb@52');
|
||||
FSOUND_FX_SetParamEQ := GetAddress(FMODHandle, '_FSOUND_FX_SetParamEQ@16');
|
||||
FSOUND_FX_SetWavesReverb := GetAddress(FMODHandle, '_FSOUND_FX_SetWavesReverb@20');
|
||||
FSOUND_Stream_Open := GetAddress(FMODHandle, '_FSOUND_Stream_Open@16');
|
||||
FSOUND_Stream_Create := GetAddress(FMODHandle, '_FSOUND_Stream_Create@20');
|
||||
FSOUND_Stream_Close := GetAddress(FMODHandle, '_FSOUND_Stream_Close@4');
|
||||
FSOUND_Stream_Play := GetAddress(FMODHandle, '_FSOUND_Stream_Play@8');
|
||||
FSOUND_Stream_PlayEx := GetAddress(FMODHandle, '_FSOUND_Stream_PlayEx@16');
|
||||
FSOUND_Stream_Stop := GetAddress(FMODHandle, '_FSOUND_Stream_Stop@4');
|
||||
FSOUND_Stream_SetEndCallback := GetAddress(FMODHandle, '_FSOUND_Stream_SetEndCallback@12');
|
||||
FSOUND_Stream_SetSyncCallback := GetAddress(FMODHandle, '_FSOUND_Stream_SetSyncCallback@12');
|
||||
FSOUND_Stream_GetSample := GetAddress(FMODHandle, '_FSOUND_Stream_GetSample@4');
|
||||
FSOUND_Stream_CreateDSP := GetAddress(FMODHandle, '_FSOUND_Stream_CreateDSP@16');
|
||||
FSOUND_Stream_SetBufferSize := GetAddress(FMODHandle, '_FSOUND_Stream_SetBufferSize@4');
|
||||
FSOUND_Stream_SetPosition := GetAddress(FMODHandle, '_FSOUND_Stream_SetPosition@8');
|
||||
FSOUND_Stream_GetPosition := GetAddress(FMODHandle, '_FSOUND_Stream_GetPosition@4');
|
||||
FSOUND_Stream_SetTime := GetAddress(FMODHandle, '_FSOUND_Stream_SetTime@8');
|
||||
FSOUND_Stream_GetTime := GetAddress(FMODHandle, '_FSOUND_Stream_GetTime@4');
|
||||
FSOUND_Stream_GetLength := GetAddress(FMODHandle, '_FSOUND_Stream_GetLength@4');
|
||||
FSOUND_Stream_GetLengthMs := GetAddress(FMODHandle, '_FSOUND_Stream_GetLengthMs@4');
|
||||
FSOUND_Stream_SetMode := GetAddress(FMODHandle, '_FSOUND_Stream_SetMode@8');
|
||||
FSOUND_Stream_GetMode := GetAddress(FMODHandle, '_FSOUND_Stream_GetMode@4');
|
||||
FSOUND_Stream_SetLoopPoints := GetAddress(FMODHandle, '_FSOUND_Stream_SetLoopPoints@12');
|
||||
FSOUND_Stream_SetLoopCount := GetAddress(FMODHandle, '_FSOUND_Stream_SetLoopCount@8');
|
||||
FSOUND_Stream_GetOpenState := GetAddress(FMODHandle, '_FSOUND_Stream_GetOpenState@4');
|
||||
FSOUND_Stream_AddSyncPoint := GetAddress(FMODHandle, '_FSOUND_Stream_AddSyncPoint@12');
|
||||
FSOUND_Stream_DeleteSyncPoint := GetAddress(FMODHandle, '_FSOUND_Stream_DeleteSyncPoint@4');
|
||||
FSOUND_Stream_GetNumSyncPoints := GetAddress(FMODHandle, '_FSOUND_Stream_GetNumSyncPoints@4');
|
||||
FSOUND_Stream_GetSyncPoint := GetAddress(FMODHandle, '_FSOUND_Stream_GetSyncPoint@8');
|
||||
FSOUND_Stream_GetSyncPointInfo := GetAddress(FMODHandle, '_FSOUND_Stream_GetSyncPointInfo@8');
|
||||
FSOUND_Stream_SetSubStream := GetAddress(FMODHandle, '_FSOUND_Stream_SetSubStream@8');
|
||||
FSOUND_Stream_GetNumSubStreams := GetAddress(FMODHandle, '_FSOUND_Stream_GetNumSubStreams@4');
|
||||
FSOUND_Stream_SetSubStreamSentence := GetAddress(FMODHandle, '_FSOUND_Stream_SetSubStreamSentence@12');
|
||||
FSOUND_Stream_GetNumTagFields := GetAddress(FMODHandle, '_FSOUND_Stream_GetNumTagFields@8');
|
||||
FSOUND_Stream_GetTagField := GetAddress(FMODHandle, '_FSOUND_Stream_GetTagField@24');
|
||||
FSOUND_Stream_FindTagField := GetAddress(FMODHandle, '_FSOUND_Stream_FindTagField@20');
|
||||
FSOUND_Stream_Net_SetProxy := GetAddress(FMODHandle, '_FSOUND_Stream_Net_SetProxy@4');
|
||||
FSOUND_Stream_Net_GetLastServerStatus := GetAddress(FMODHandle, '_FSOUND_Stream_Net_GetLastServerStatus@0');
|
||||
FSOUND_Stream_Net_SetBufferProperties := GetAddress(FMODHandle, '_FSOUND_Stream_Net_SetBufferProperties@12');
|
||||
FSOUND_Stream_Net_GetBufferProperties := GetAddress(FMODHandle, '_FSOUND_Stream_Net_GetBufferProperties@12');
|
||||
FSOUND_Stream_Net_SetMetadataCallback := GetAddress(FMODHandle, '_FSOUND_Stream_Net_SetMetadataCallback@12');
|
||||
FSOUND_Stream_Net_GetStatus := GetAddress(FMODHandle, '_FSOUND_Stream_Net_GetStatus@20');
|
||||
FSOUND_CD_Play := GetAddress(FMODHandle, '_FSOUND_CD_Play@8');
|
||||
FSOUND_CD_SetPlayMode := GetAddress(FMODHandle, '_FSOUND_CD_SetPlayMode@8');
|
||||
FSOUND_CD_Stop := GetAddress(FMODHandle, '_FSOUND_CD_Stop@4');
|
||||
FSOUND_CD_SetPaused := GetAddress(FMODHandle, '_FSOUND_CD_SetPaused@8');
|
||||
FSOUND_CD_SetVolume := GetAddress(FMODHandle, '_FSOUND_CD_SetVolume@8');
|
||||
FSOUND_CD_SetTrackTime := GetAddress(FMODHandle, '_FSOUND_CD_SetTrackTime@8');
|
||||
FSOUND_CD_OpenTray := GetAddress(FMODHandle, '_FSOUND_CD_OpenTray@8');
|
||||
FSOUND_CD_GetPaused := GetAddress(FMODHandle, '_FSOUND_CD_GetPaused@4');
|
||||
FSOUND_CD_GetTrack := GetAddress(FMODHandle, '_FSOUND_CD_GetTrack@4');
|
||||
FSOUND_CD_GetNumTracks := GetAddress(FMODHandle, '_FSOUND_CD_GetNumTracks@4');
|
||||
FSOUND_CD_GetVolume := GetAddress(FMODHandle, '_FSOUND_CD_GetVolume@4');
|
||||
FSOUND_CD_GetTrackLength := GetAddress(FMODHandle, '_FSOUND_CD_GetTrackLength@8');
|
||||
FSOUND_CD_GetTrackTime := GetAddress(FMODHandle, '_FSOUND_CD_GetTrackTime@4');
|
||||
FSOUND_DSP_Create := GetAddress(FMODHandle, '_FSOUND_DSP_Create@12');
|
||||
FSOUND_DSP_Free := GetAddress(FMODHandle, '_FSOUND_DSP_Free@4');
|
||||
FSOUND_DSP_SetPriority := GetAddress(FMODHandle, '_FSOUND_DSP_SetPriority@8');
|
||||
FSOUND_DSP_GetPriority := GetAddress(FMODHandle, '_FSOUND_DSP_GetPriority@4');
|
||||
FSOUND_DSP_SetActive := GetAddress(FMODHandle, '_FSOUND_DSP_SetActive@8');
|
||||
FSOUND_DSP_GetActive := GetAddress(FMODHandle, '_FSOUND_DSP_GetActive@4');
|
||||
FSOUND_DSP_GetClearUnit := GetAddress(FMODHandle, '_FSOUND_DSP_GetClearUnit@0');
|
||||
FSOUND_DSP_GetSFXUnit := GetAddress(FMODHandle, '_FSOUND_DSP_GetSFXUnit@0');
|
||||
FSOUND_DSP_GetMusicUnit := GetAddress(FMODHandle, '_FSOUND_DSP_GetMusicUnit@0');
|
||||
FSOUND_DSP_GetClipAndCopyUnit := GetAddress(FMODHandle, '_FSOUND_DSP_GetClipAndCopyUnit@0');
|
||||
FSOUND_DSP_GetFFTUnit := GetAddress(FMODHandle, '_FSOUND_DSP_GetFFTUnit@0');
|
||||
FSOUND_DSP_MixBuffers := GetAddress(FMODHandle, '_FSOUND_DSP_MixBuffers@28');
|
||||
FSOUND_DSP_ClearMixBuffer := GetAddress(FMODHandle, '_FSOUND_DSP_ClearMixBuffer@0');
|
||||
FSOUND_DSP_GetBufferLength := GetAddress(FMODHandle, '_FSOUND_DSP_GetBufferLength@0');
|
||||
FSOUND_DSP_GetBufferLengthTotal := GetAddress(FMODHandle, '_FSOUND_DSP_GetBufferLengthTotal@0');
|
||||
FSOUND_DSP_GetSpectrum := GetAddress(FMODHandle, '_FSOUND_DSP_GetSpectrum@0');
|
||||
FSOUND_Reverb_SetProperties := GetAddress(FMODHandle, '_FSOUND_Reverb_SetProperties@4');
|
||||
FSOUND_Reverb_GetProperties := GetAddress(FMODHandle, '_FSOUND_Reverb_GetProperties@4');
|
||||
FSOUND_Reverb_SetChannelProperties := GetAddress(FMODHandle, '_FSOUND_Reverb_SetChannelProperties@8');
|
||||
FSOUND_Reverb_GetChannelProperties := GetAddress(FMODHandle, '_FSOUND_Reverb_GetChannelProperties@8');
|
||||
FSOUND_Record_SetDriver := GetAddress(FMODHandle, '_FSOUND_Record_SetDriver@4');
|
||||
FSOUND_Record_GetNumDrivers := GetAddress(FMODHandle, '_FSOUND_Record_GetNumDrivers@0');
|
||||
FSOUND_Record_GetDriverName := GetAddress(FMODHandle, '_FSOUND_Record_GetDriverName@4');
|
||||
FSOUND_Record_GetDriver := GetAddress(FMODHandle, '_FSOUND_Record_GetDriver@0');
|
||||
FSOUND_Record_StartSample := GetAddress(FMODHandle, '_FSOUND_Record_StartSample@8');
|
||||
FSOUND_Record_Stop := GetAddress(FMODHandle, '_FSOUND_Record_Stop@0');
|
||||
FSOUND_Record_GetPosition := GetAddress(FMODHandle, '_FSOUND_Record_GetPosition@0');
|
||||
FSOUND_File_SetCallbacks := GetAddress(FMODHandle, '_FSOUND_File_SetCallbacks@20');
|
||||
FMUSIC_LoadSong := GetAddress(FMODHandle, '_FMUSIC_LoadSong@4');
|
||||
FMUSIC_LoadSongEx := GetAddress(FMODHandle, '_FMUSIC_LoadSongEx@24');
|
||||
FMUSIC_GetOpenState := GetAddress(FMODHandle, '_FMUSIC_GetOpenState@4');
|
||||
FMUSIC_FreeSong := GetAddress(FMODHandle, '_FMUSIC_FreeSong@4');
|
||||
FMUSIC_PlaySong := GetAddress(FMODHandle, '_FMUSIC_PlaySong@4');
|
||||
FMUSIC_StopSong := GetAddress(FMODHandle, '_FMUSIC_StopSong@4');
|
||||
FMUSIC_StopAllSongs := GetAddress(FMODHandle, '_FMUSIC_StopAllSongs@0');
|
||||
FMUSIC_SetZxxCallback := GetAddress(FMODHandle, '_FMUSIC_SetZxxCallback@8');
|
||||
FMUSIC_SetRowCallback := GetAddress(FMODHandle, '_FMUSIC_SetRowCallback@12');
|
||||
FMUSIC_SetOrderCallback := GetAddress(FMODHandle, '_FMUSIC_SetOrderCallback@12');
|
||||
FMUSIC_SetInstCallback := GetAddress(FMODHandle, '_FMUSIC_SetInstCallback@12');
|
||||
FMUSIC_SetSample := GetAddress(FMODHandle, '_FMUSIC_SetSample@12');
|
||||
FMUSIC_SetUserData := GetAddress(FMODHandle, '_FMUSIC_SetUserData@8');
|
||||
FMUSIC_OptimizeChannels := GetAddress(FMODHandle, '_FMUSIC_OptimizeChannels@12');
|
||||
FMUSIC_SetReverb := GetAddress(FMODHandle, '_FMUSIC_SetReverb@4');
|
||||
FMUSIC_SetLooping := GetAddress(FMODHandle, '_FMUSIC_SetLooping@8');
|
||||
FMUSIC_SetOrder := GetAddress(FMODHandle, '_FMUSIC_SetOrder@8');
|
||||
FMUSIC_SetPaused := GetAddress(FMODHandle, '_FMUSIC_SetPaused@8');
|
||||
FMUSIC_SetMasterVolume := GetAddress(FMODHandle, '_FMUSIC_SetMasterVolume@8');
|
||||
FMUSIC_SetMasterSpeed := GetAddress(FMODHandle, '_FMUSIC_SetMasterSpeed@8');
|
||||
FMUSIC_SetPanSeperation := GetAddress(FMODHandle, '_FMUSIC_SetPanSeperation@8');
|
||||
FMUSIC_GetName := GetAddress(FMODHandle, '_FMUSIC_GetName@4');
|
||||
FMUSIC_GetType := GetAddress(FMODHandle, '_FMUSIC_GetType@4');
|
||||
FMUSIC_GetNumOrders := GetAddress(FMODHandle, '_FMUSIC_GetNumOrders@4');
|
||||
FMUSIC_GetNumPatterns := GetAddress(FMODHandle, '_FMUSIC_GetNumPatterns@4');
|
||||
FMUSIC_GetNumInstruments := GetAddress(FMODHandle, '_FMUSIC_GetNumInstruments@4');
|
||||
FMUSIC_GetNumSamples := GetAddress(FMODHandle, '_FMUSIC_GetNumSamples@4');
|
||||
FMUSIC_GetNumChannels := GetAddress(FMODHandle, '_FMUSIC_GetNumChannels@4');
|
||||
FMUSIC_GetSample := GetAddress(FMODHandle, '_FMUSIC_GetSample@8');
|
||||
FMUSIC_GetPatternLength := GetAddress(FMODHandle, '_FMUSIC_GetPatternLength@8');
|
||||
FMUSIC_IsFinished := GetAddress(FMODHandle, '_FMUSIC_IsFinished@4');
|
||||
FMUSIC_IsPlaying := GetAddress(FMODHandle, '_FMUSIC_IsPlaying@4');
|
||||
FMUSIC_GetMasterVolume := GetAddress(FMODHandle, '_FMUSIC_GetMasterVolume@4');
|
||||
FMUSIC_GetGlobalVolume := GetAddress(FMODHandle, '_FMUSIC_GetGlobalVolume@4');
|
||||
FMUSIC_GetOrder := GetAddress(FMODHandle, '_FMUSIC_GetOrder@4');
|
||||
FMUSIC_GetPattern := GetAddress(FMODHandle, '_FMUSIC_GetPattern@4');
|
||||
FMUSIC_GetSpeed := GetAddress(FMODHandle, '_FMUSIC_GetSpeed@4');
|
||||
FMUSIC_GetBPM := GetAddress(FMODHandle, '_FMUSIC_GetBPM@4');
|
||||
FMUSIC_GetRow := GetAddress(FMODHandle, '_FMUSIC_GetRow@4');
|
||||
FMUSIC_GetPaused := GetAddress(FMODHandle, '_FMUSIC_GetPaused@4');
|
||||
FMUSIC_GetTime := GetAddress(FMODHandle, '_FMUSIC_GetTime@4');
|
||||
FMUSIC_GetRealChannel := GetAddress(FMODHandle, '_FMUSIC_GetRealChannel@8');
|
||||
FMUSIC_GetUserData := GetAddress(FMODHandle, '_FMUSIC_GetUserData@4');
|
||||
|
||||
Result := True;
|
||||
end;
|
||||
|
||||
procedure FMOD_Unload;
|
||||
begin
|
||||
{ Only free the library if it was already loaded }
|
||||
if FMODHandle <> INVALID_MODULEHANDLE_VALUE then
|
||||
{$IFDEF MSWINDOWS}
|
||||
FreeLibrary(FMODHandle);
|
||||
{$ELSE}
|
||||
dlclose(FMODHandle);
|
||||
{$ENDIF}
|
||||
FMODHandle := INVALID_MODULEHANDLE_VALUE;
|
||||
end;
|
||||
|
||||
var
|
||||
Saved8087CW: Word;
|
||||
|
||||
{$ifdef FPC} //FPC do not have this function in its RTL
|
||||
const
|
||||
Default8087CW = $1332; //according to the FPC site it's the value used in the
|
||||
//startup code.
|
||||
procedure Set8087CW( value :word ); Assembler;
|
||||
asm
|
||||
FLDCW value
|
||||
end;
|
||||
{$endif}
|
||||
|
||||
initialization
|
||||
FMODHandle := INVALID_MODULEHANDLE_VALUE;
|
||||
|
||||
{ Save the current FPU state and then disable FPU exceptions }
|
||||
Saved8087CW := Default8087CW;
|
||||
Set8087CW($133f); { Disable all fpu exceptions }
|
||||
|
||||
finalization
|
||||
{ Make sure the library is unloaded }
|
||||
FMOD_Unload;
|
||||
|
||||
{ Reset the FPU to the previous state }
|
||||
Set8087CW(Saved8087CW);
|
||||
end.
|
||||
Binary file not shown.
@@ -0,0 +1,67 @@
|
||||
{ =============================================================================================== }
|
||||
{ FMOD Main header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004. }
|
||||
{ =============================================================================================== }
|
||||
{
|
||||
NOTE: For the demos to run you must have either fmod.dll (in Windows)
|
||||
or libfmod-3.75.so (in Linux) installed.
|
||||
|
||||
In Windows, copy the fmod.dll file found in the api directory to either of
|
||||
the following locations (in order of preference)
|
||||
- your application directory
|
||||
- Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
|
||||
|
||||
In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
|
||||
file from the api directory to your /usr/lib/ directory.
|
||||
Then via a command line, navigate to the /usr/lib/ directory and create
|
||||
a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
|
||||
the following command (assuming you are in /usr/lib/)...
|
||||
ln -s libfmod-3.75.so libfmod.so.
|
||||
}
|
||||
{ =============================================================================================== }
|
||||
|
||||
unit fmoderrors;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
fmodtypes;
|
||||
|
||||
{
|
||||
Disable warning for unsafe types in Delphi 7
|
||||
}
|
||||
{$IFDEF VER150}
|
||||
{$WARN UNSAFE_TYPE OFF}
|
||||
{$ENDIF}
|
||||
|
||||
function FMOD_ErrorString(ErrorCode: TFModErrors): PChar;
|
||||
|
||||
implementation
|
||||
|
||||
function FMOD_ErrorString(ErrorCode: TFModErrors): PChar;
|
||||
begin
|
||||
case ErrorCode of
|
||||
FMOD_ERR_NONE: Result := 'No errors';
|
||||
FMOD_ERR_BUSY: Result := 'Cannot call this command after FSOUND_Init. Call FSOUND_Close first';
|
||||
FMOD_ERR_UNINITIALIZED: Result := 'This command failed because FSOUND_Init was not called';
|
||||
FMOD_ERR_PLAY: Result := 'Playing the sound failed';
|
||||
FMOD_ERR_INIT: Result := 'Error initializing output device';
|
||||
FMOD_ERR_ALLOCATED: Result := 'The output device is already in use and cannot be reused';
|
||||
FMOD_ERR_OUTPUT_FORMAT: Result := 'Soundcard does not support the features needed for this soundsystem (16bit stereo output)';
|
||||
FMOD_ERR_COOPERATIVELEVEL: Result := 'Error setting cooperative level for hardware';
|
||||
FMOD_ERR_CREATEBUFFER: Result := 'Error creating hardware sound buffer';
|
||||
FMOD_ERR_FILE_NOTFOUND: Result := 'File not found';
|
||||
FMOD_ERR_FILE_FORMAT: Result := 'Unknown file format';
|
||||
FMOD_ERR_FILE_BAD: Result := 'Error loading file';
|
||||
FMOD_ERR_MEMORY: Result := 'Not enough memory or resources';
|
||||
FMOD_ERR_VERSION: Result := 'The version number of this file format is not supported';
|
||||
FMOD_ERR_INVALID_PARAM: Result := 'An invalid parameter was passed to this function';
|
||||
FMOD_ERR_NO_EAX: Result := 'Tried to use an EAX command on a non EAX enabled channel or output';
|
||||
FMOD_ERR_CHANNEL_ALLOC: Result := 'Failed to allocate a new channel';
|
||||
FMOD_ERR_RECORD: Result := 'Recording is not supported on this machine';
|
||||
FMOD_ERR_MEDIAPLAYER: Result := 'Required Mediaplayer codec is not installed';
|
||||
else
|
||||
Result := 'Unknown error';
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
@@ -0,0 +1,95 @@
|
||||
{ =============================================================================================== }
|
||||
{ FMOD presets header file. Copyright (c), FireLight Technologies Pty, Ltd. 1999-2004. }
|
||||
{ =============================================================================================== }
|
||||
{
|
||||
NOTE: For the demos to run you must have either fmod.dll (in Windows)
|
||||
or libfmod-3.75.so (in Linux) installed.
|
||||
|
||||
In Windows, copy the fmod.dll file found in the api directory to either of
|
||||
the following locations (in order of preference)
|
||||
- your application directory
|
||||
- Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
|
||||
|
||||
In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
|
||||
file from the api directory to your /usr/lib/ directory.
|
||||
Then via a command line, navigate to the /usr/lib/ directory and create
|
||||
a symbolic link between libfmod-3.5.so and libfmod.so. This is done with
|
||||
the following command (assuming you are in /usr/lib/)...
|
||||
ln -s libfmod-3.75.so libfmod.so.
|
||||
}
|
||||
|
||||
unit fmodpresets;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
fmodtypes;
|
||||
|
||||
{$IFDEF VER140}
|
||||
{$DEFINE COMPILER6_UP}
|
||||
{$ELSE}
|
||||
{$IFDEF VER150}
|
||||
{$DEFINE COMPILER6_UP}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
(*
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_REVERB_PRESETS
|
||||
|
||||
[DESCRIPTION]
|
||||
A set of predefined environment PARAMETERS, created by Creative Labs
|
||||
These are used to initialize an FSOUND_REVERB_PROPERTIES structure statically.
|
||||
ie
|
||||
FSOUND_REVERB_PROPERTIES prop = FSOUND_PRESET_GENERIC;
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Reverb_SetProperties
|
||||
]
|
||||
*)
|
||||
|
||||
{$IFDEF COMPILER6_UP}{$J+}{$ENDIF}
|
||||
const
|
||||
FSOUND_PRESET_OFF: TFSoundReverbProperties = (Environment: 0; EnvSize: 7.5; EnvDiffusion: 1.00; Room: -10000; RoomHF: -10000; RoomLF: 0; DecayTime: 1.00; DecayHFRatio: 1.00; DecayLFRatio: 1.0; Reflections: -2602; ReflectionsDelay: 0.007; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 200; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 0.0; Density: 0.0; Flags: $33f);
|
||||
FSOUND_PRESET_GENERIC: TFSoundReverbProperties = (Environment: 0; EnvSize: 7.5; EnvDiffusion: 1.00; Room: -1000; RoomHF: -100; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.83; DecayLFRatio: 1.0; Reflections: -2602; ReflectionsDelay: 0.007; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 200; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_PADDEDCELL: TFSoundReverbProperties = (Environment: 1; EnvSize: 1.4; EnvDiffusion: 1.00; Room: -1000; RoomHF: -6000; RoomLF: 0; DecayTime: 0.17; DecayHFRatio: 0.10; DecayLFRatio: 1.0; Reflections: -1204; ReflectionsDelay: 0.001; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 207; ReverbDelay: 0.002; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_ROOM: TFSoundReverbProperties = (Environment: 2; EnvSize: 1.9; EnvDiffusion: 1.00; Room: -1000; RoomHF: -454; RoomLF: 0; DecayTime: 0.40; DecayHFRatio: 0.83; DecayLFRatio: 1.0; Reflections: -1646; ReflectionsDelay: 0.002; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 53; ReverbDelay: 0.003; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_BATHROOM: TFSoundReverbProperties = (Environment: 3; EnvSize: 1.4; EnvDiffusion: 1.00; Room: -1000; RoomHF: -1200; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.54; DecayLFRatio: 1.0; Reflections: -370; ReflectionsDelay: 0.007; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 1030; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 60.0; Flags: $3f);
|
||||
FSOUND_PRESET_LIVINGROOM: TFSoundReverbProperties = (Environment: 4; EnvSize: 2.5; EnvDiffusion: 1.00; Room: -1000; RoomHF: -6000; RoomLF: 0; DecayTime: 0.50; DecayHFRatio: 0.10; DecayLFRatio: 1.0; Reflections: -1376; ReflectionsDelay: 0.003; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-1104; ReverbDelay: 0.004; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_STONEROOM: TFSoundReverbProperties = (Environment: 5; EnvSize: 11.6; EnvDiffusion: 1.00; Room: -1000; RoomHF: -300; RoomLF: 0; DecayTime: 2.31; DecayHFRatio: 0.64; DecayLFRatio: 1.0; Reflections: -711; ReflectionsDelay: 0.012; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 83; ReverbDelay: 0.017; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_AUDITORIUM: TFSoundReverbProperties = (Environment: 6; EnvSize: 21.6; EnvDiffusion: 1.00; Room: -1000; RoomHF: -476; RoomLF: 0; DecayTime: 4.32; DecayHFRatio: 0.59; DecayLFRatio: 1.0; Reflections: -789; ReflectionsDelay: 0.020; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-289; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_CONCERTHALL: TFSoundReverbProperties = (Environment: 7; EnvSize: 19.6; EnvDiffusion: 1.00; Room: -1000; RoomHF: -500; RoomLF: 0; DecayTime: 3.92; DecayHFRatio: 0.70; DecayLFRatio: 1.0; Reflections: -1230; ReflectionsDelay: 0.020; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-2; ReverbDelay: 0.029; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_CAVE: TFSoundReverbProperties = (Environment: 8; EnvSize: 14.6; EnvDiffusion: 1.00; Room: -1000; RoomHF: 0; RoomLF: 0; DecayTime: 2.91; DecayHFRatio: 1.30; DecayLFRatio: 1.0; Reflections: -602; ReflectionsDelay: 0.015; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-302; ReverbDelay: 0.022; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
|
||||
FSOUND_PRESET_ARENA: TFSoundReverbProperties = (Environment: 9; EnvSize: 36.2; EnvDiffusion: 1.00; Room: -1000; RoomHF: -698; RoomLF: 0; DecayTime: 7.24; DecayHFRatio: 0.33; DecayLFRatio: 1.0; Reflections: -1166; ReflectionsDelay: 0.020; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 16; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_HANGAR: TFSoundReverbProperties = (Environment: 10; EnvSize: 50.3; EnvDiffusion: 1.00; Room: -1000; RoomHF: -1000; RoomLF: 0; DecayTime: 10.05; DecayHFRatio: 0.23; DecayLFRatio: 1.0; Reflections: -602; ReflectionsDelay: 0.020; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 198; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_CARPETTEDHALLWAY: TFSoundReverbProperties = (Environment: 11; EnvSize: 1.9; EnvDiffusion: 1.00; Room: -1000; RoomHF: -4000; RoomLF: 0; DecayTime: 0.30; DecayHFRatio: 0.10; DecayLFRatio: 1.0; Reflections: -1831; ReflectionsDelay: 0.002; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-1630; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_HALLWAY: TFSoundReverbProperties = (Environment: 12; EnvSize: 1.8; EnvDiffusion: 1.00; Room: -1000; RoomHF: -300; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.59; DecayLFRatio: 1.0; Reflections: -1219; ReflectionsDelay: 0.007; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 441; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_STONECORRIDOR: TFSoundReverbProperties = (Environment: 13; EnvSize: 13.5; EnvDiffusion: 1.00; Room: -1000; RoomHF: -237; RoomLF: 0; DecayTime: 2.70; DecayHFRatio: 0.79; DecayLFRatio: 1.0; Reflections: -1214; ReflectionsDelay: 0.013; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 395; ReverbDelay: 0.020; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_ALLEY: TFSoundReverbProperties = (Environment: 14; EnvSize: 7.5; EnvDiffusion: 0.30; Room: -1000; RoomHF: -270; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.86; DecayLFRatio: 1.0; Reflections: -1204; ReflectionsDelay: 0.007; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-4; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.125; EchoDepth: 0.95; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_FOREST: TFSoundReverbProperties = (Environment: 15; EnvSize: 38.0; EnvDiffusion: 0.30; Room: -1000; RoomHF: -3300; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.54; DecayLFRatio: 1.0; Reflections: -2560; ReflectionsDelay: 0.162; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-229; ReverbDelay: 0.088; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.125; EchoDepth: 1.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 79.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_CITY: TFSoundReverbProperties = (Environment: 16; EnvSize: 7.5; EnvDiffusion: 0.50; Room: -1000; RoomHF: -800; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.67; DecayLFRatio: 1.0; Reflections: -2273; ReflectionsDelay: 0.007; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-1691; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 50.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_MOUNTAINS: TFSoundReverbProperties = (Environment: 17; EnvSize: 100.0; EnvDiffusion: 0.27; Room: -1000; RoomHF: -2500; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.21; DecayLFRatio: 1.0; Reflections: -2780; ReflectionsDelay: 0.300; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-1434; ReverbDelay: 0.100; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 1.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 27.0; Density: 100.0; Flags: $1f);
|
||||
FSOUND_PRESET_QUARRY: TFSoundReverbProperties = (Environment: 18; EnvSize: 17.5; EnvDiffusion: 1.00; Room: -1000; RoomHF: -1000; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.83; DecayLFRatio: 1.0; Reflections: -10000;ReflectionsDelay: 0.061; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 500; ReverbDelay: 0.025; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.125; EchoDepth: 0.70; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_PLAIN: TFSoundReverbProperties = (Environment: 19; EnvSize: 42.5; EnvDiffusion: 0.21; Room: -1000; RoomHF: -2000; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.50; DecayLFRatio: 1.0; Reflections: -2466; ReflectionsDelay: 0.179; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-1926; ReverbDelay: 0.100; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 1.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 21.0; Density: 100.0; Flags: $3f);
|
||||
FSOUND_PRESET_PARKINGLOT: TFSoundReverbProperties = (Environment: 20; EnvSize: 8.3; EnvDiffusion: 1.00; Room: -1000; RoomHF: 0; RoomLF: 0; DecayTime: 1.65; DecayHFRatio: 1.50; DecayLFRatio: 1.0; Reflections: -1363; ReflectionsDelay: 0.008; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-1153; ReverbDelay: 0.012; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
|
||||
FSOUND_PRESET_SEWERPIPE: TFSoundReverbProperties = (Environment: 21; EnvSize: 1.7; EnvDiffusion: 0.80; Room: -1000; RoomHF: -1000; RoomLF: 0; DecayTime: 2.81; DecayHFRatio: 0.14; DecayLFRatio: 1.0; Reflections: 429; ReflectionsDelay: 0.014; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 1023; ReverbDelay: 0.021; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 0.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 80.0; Density: 60.0; Flags: $3f);
|
||||
FSOUND_PRESET_UNDERWATER: TFSoundReverbProperties = (Environment: 22; EnvSize: 1.8; EnvDiffusion: 1.00; Room: -1000; RoomHF: -4000; RoomLF: 0; DecayTime: 1.49; DecayHFRatio: 0.10; DecayLFRatio: 1.0; Reflections: -449; ReflectionsDelay: 0.007; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 1700; ReverbDelay: 0.011; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 1.18; ModulationDepth: 0.348; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $3f);
|
||||
|
||||
(* Non I3DL2 presets *)
|
||||
|
||||
FSOUND_PRESET_DRUGGED: TFSoundReverbProperties = (Environment: 23; EnvSize: 1.9; EnvDiffusion: 0.50; Room: -1000; RoomHF: 0; RoomLF: 0; DecayTime: 8.39; DecayHFRatio: 1.39; DecayLFRatio: 1.0; Reflections: -115; ReflectionsDelay: 0.002; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 985; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 0.25; ModulationDepth: 1.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
|
||||
FSOUND_PRESET_DIZZY: TFSoundReverbProperties = (Environment: 24; EnvSize: 1.8; EnvDiffusion: 0.60; Room: -1000; RoomHF: -400; RoomLF: 0; DecayTime: 17.23; DecayHFRatio: 0.56; DecayLFRatio: 1.0; Reflections: -1713; ReflectionsDelay: 0.020; ReflectionsPan: (0.0, 0.0, 0.0); Reverb:-613; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 1.00; ModulationTime: 0.81; ModulationDepth: 0.310; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
|
||||
FSOUND_PRESET_PSYCHOTIC: TFSoundReverbProperties = (Environment: 25; EnvSize: 1.0; EnvDiffusion: 0.50; Room: -1000; RoomHF: -151; RoomLF: 0; DecayTime: 7.56; DecayHFRatio: 0.91; DecayLFRatio: 1.0; Reflections: -626; ReflectionsDelay: 0.020; ReflectionsPan: (0.0, 0.0, 0.0); Reverb: 774; ReverbDelay: 0.030; ReverbPan: (0.0, 0.0, 0.0); EchoTime: 0.250; EchoDepth: 0.00; ModulationTime: 4.00; ModulationDepth: 1.000; AirAbsorptionHF: -5.0; HFReference: 5000.0; LFReference: 250.0; RoomRolloffFactor: 0.0; Diffusion: 100.0; Density: 100.0; Flags: $1f);
|
||||
|
||||
(* PlayStation 2 Only presets *)
|
||||
(* Delphi/Kylix cannot create PlayStation 2 executables, so there is no need to
|
||||
convert the PlayStation 2 presets. *)
|
||||
{$IFDEF COMPILER6_UP}{$J-}{$ENDIF}
|
||||
|
||||
(* [DEFINE_END] *)
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
Binary file not shown.
@@ -0,0 +1,821 @@
|
||||
{================================================================================================ }
|
||||
{ FMOD Types header file. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004. }
|
||||
{ =============================================================================================== }
|
||||
{
|
||||
NOTE: For the demos to run you must have either fmod.dll (in Windows)
|
||||
or libfmod-3.75.so (in Linux) installed.
|
||||
|
||||
In Windows, copy the fmod.dll file found in the api directory to either of
|
||||
the following locations (in order of preference)
|
||||
- your application directory
|
||||
- Windows\System (95/98) or WinNT\System32 (NT/2000/XP)
|
||||
|
||||
In Linux, make sure you are signed in as root and copy the libfmod-3.75.so
|
||||
file from the api directory to your /usr/lib/ directory.
|
||||
Then via a command line, navigate to the /usr/lib/ directory and create
|
||||
a symbolic link between libfmod-3.75.so and libfmod.so. This is done with
|
||||
the following command (assuming you are in /usr/lib/)...
|
||||
ln -s libfmod-3.75.so libfmod.so.
|
||||
}
|
||||
{ =============================================================================================== }
|
||||
|
||||
unit fmodtypes;
|
||||
|
||||
{$IFDEF FPC}
|
||||
{$MODE DELPHI}
|
||||
{$IFDEF WIN32}
|
||||
{$DEFINE MSWINDOWS}
|
||||
{$ENDIF}
|
||||
{$PACKRECORDS C}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF VER110}
|
||||
{$DEFINE DELPHI_5_OR_LOWER}
|
||||
{$ELSE}
|
||||
{$IFDEF VER120}
|
||||
{$DEFINE DELPHI_5_OR_LOWER}
|
||||
{$ELSE}
|
||||
{$IFDEF VER130}
|
||||
{$DEFINE DELPHI_5_OR_LOWER}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
{$ENDIF}
|
||||
|
||||
interface
|
||||
|
||||
{$IFDEF MSWINDOWS}
|
||||
uses
|
||||
Windows;
|
||||
{$ENDIF}
|
||||
|
||||
{ =============================================================================================== }
|
||||
{ DEFINITIONS }
|
||||
{ =============================================================================================== }
|
||||
|
||||
{
|
||||
Force four-byte enums
|
||||
}
|
||||
{$Z4}
|
||||
|
||||
{
|
||||
Disable warning for unsafe types in Delphi 7
|
||||
}
|
||||
{$IFDEF VER150}
|
||||
{$WARN UNSAFE_TYPE OFF}
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF DELPHI_5_OR_LOWER}
|
||||
type
|
||||
PSingle = ^Single;
|
||||
THandle = Cardinal;
|
||||
{$ENDIF}
|
||||
|
||||
const
|
||||
FMOD_VERSION: Single = 3.75;
|
||||
|
||||
{
|
||||
FMOD defined types
|
||||
}
|
||||
|
||||
type
|
||||
PFSoundSample = Pointer;
|
||||
PFSoundStream = Pointer;
|
||||
PFSoundDSPUnit = Pointer;
|
||||
PFMusicModule = Pointer;
|
||||
PFSyncPoint = Pointer;
|
||||
|
||||
PFSoundVector = ^TFSoundVector;
|
||||
TFSoundVector = record
|
||||
x: Single;
|
||||
y: Single;
|
||||
z: Single;
|
||||
end;
|
||||
|
||||
{
|
||||
Callback types
|
||||
}
|
||||
|
||||
TFSoundStreamCallback = function (Stream: PFSoundStream; Buff: Pointer; Length, Param: Integer): ByteBool; stdcall;
|
||||
TFSoundDSPCallback = function (OriginalBuffer: Pointer; NewBuffer: Pointer; Length, Param: Integer): Pointer; stdcall;
|
||||
TFMusicCallback = procedure (Module: PFMusicModule; Param: Byte); stdcall;
|
||||
|
||||
TFSoundOpenCallback = function (Name: PChar): Cardinal; stdcall;
|
||||
TFSoundCloseCallback = procedure (Handle: Cardinal); stdcall;
|
||||
TFSoundReadCallback = function (Buffer: Pointer; Size: Cardinal; Handle: Cardinal): Cardinal; stdcall;
|
||||
TFSoundSeekCallback = procedure (Handle: Cardinal; Pos: Cardinal; Mode: Byte); stdcall;
|
||||
TFSoundTellCallback = function (Handle: Cardinal): Cardinal; stdcall;
|
||||
|
||||
TFSoundAllocCallback = function(Size: Cardinal): Pointer; stdcall;
|
||||
TFSoundReallocCallback = function(Ptr: Pointer; Size: Cardinal): Pointer; stdcall;
|
||||
TFSoundFreeCallback = procedure(Ptr: Pointer); stdcall;
|
||||
|
||||
TFMetaDataCallback = function(Name: PChar; Value: PChar; userdata: Integer): ByteBool; stdcall;
|
||||
|
||||
{
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
On failure of commands in FMOD, use FSOUND_GetError to attain what happened.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_GetError
|
||||
]
|
||||
}
|
||||
|
||||
type
|
||||
TFModErrors = (
|
||||
FMOD_ERR_NONE, // No errors
|
||||
FMOD_ERR_BUSY, // Cannot call this command after FSOUND_Init. Call FSOUND_Close first.
|
||||
FMOD_ERR_UNINITIALIZED, // This command failed because FSOUND_Init was not called
|
||||
FMOD_ERR_INIT, // Error initializing output device.
|
||||
FMOD_ERR_ALLOCATED, // Error initializing output device, but more specifically, the output device is already in use and cannot be reused.
|
||||
FMOD_ERR_PLAY, // Playing the sound failed.
|
||||
FMOD_ERR_OUTPUT_FORMAT, // Soundcard does not support the features needed for this soundsystem (16bit stereo output)
|
||||
FMOD_ERR_COOPERATIVELEVEL, // Error setting cooperative level for hardware.
|
||||
FMOD_ERR_CREATEBUFFER, // Error creating hardware sound buffer.
|
||||
FMOD_ERR_FILE_NOTFOUND, // File not found
|
||||
FMOD_ERR_FILE_FORMAT, // Unknown file format
|
||||
FMOD_ERR_FILE_BAD, // Error loading file
|
||||
FMOD_ERR_MEMORY, // Not enough memory or resources
|
||||
FMOD_ERR_VERSION, // The version number of this file format is not supported
|
||||
FMOD_ERR_INVALID_PARAM, // An invalid parameter was passed to this function
|
||||
FMOD_ERR_NO_EAX, // Tried to use an EAX command on a non EAX enabled channel or output.
|
||||
FMOD_ERR_CHANNEL_ALLOC, // Failed to allocate a new channel
|
||||
FMOD_ERR_RECORD, // Recording is not supported on this machine
|
||||
FMOD_ERR_MEDIAPLAYER, // Windows Media Player not installed so cannot play wma or use internet streaming. */
|
||||
FMOD_ERR_CDDEVICE // An error occured trying to open the specified CD device
|
||||
);
|
||||
|
||||
{
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
These output types are used with FSOUND_SetOutput, to choose which output driver to use.
|
||||
|
||||
FSOUND_OUTPUT_DSOUND will not support hardware 3d acceleration if the sound card driver
|
||||
does not support DirectX 6 Voice Manager Extensions.
|
||||
|
||||
FSOUND_OUTPUT_WINMM is recommended for NT and CE.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_SetOutput
|
||||
FSOUND_GetOutput
|
||||
]
|
||||
}
|
||||
|
||||
type
|
||||
TFSoundOutputTypes = (
|
||||
FSOUND_OUTPUT_NOSOUND, // NoSound driver, all calls to this succeed but do nothing.
|
||||
FSOUND_OUTPUT_WINMM, // Windows Multimedia driver.
|
||||
FSOUND_OUTPUT_DSOUND, // DirectSound driver. You need this to get EAX2 or EAX3 support, or FX api support.
|
||||
FSOUND_OUTPUT_A3D, // A3D driver.
|
||||
|
||||
FSOUND_OUTPUT_OSS, // Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers.
|
||||
FSOUND_OUTPUT_ESD, // Linux/Unix ESD (Enlightment Sound Daemon) driver.
|
||||
FSOUND_OUTPUT_ALSA, // Linux Alsa driver.
|
||||
|
||||
FSOUND_OUTPUT_ASIO, // Low latency ASIO driver.
|
||||
FSOUND_OUTPUT_XBOX, // Xbox driver.
|
||||
FSOUND_OUTPUT_PS2, // PlayStation 2 driver.
|
||||
FSOUND_OUTPUT_MAC, // Mac SoundMager driver.
|
||||
FSOUND_OUTPUT_GC, // Gamecube driver.
|
||||
FSOUND_OUTPUT_PSP, // PlayStation Portable driver.
|
||||
|
||||
FSOUND_OUTPUT_NOSOUND_NONREALTIME // This is the same as nosound, but the sound generation is driven by FSOUND_Update
|
||||
);
|
||||
|
||||
|
||||
{
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
These mixer types are used with FSOUND_SetMixer, to choose which mixer to use, or to act
|
||||
upon for other reasons using FSOUND_GetMixer.
|
||||
It is not necessary to set the mixer. FMOD will autodetect the best mixer for you.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_SetMixer
|
||||
FSOUND_GetMixer
|
||||
]
|
||||
}
|
||||
type
|
||||
TFSoundMixerTypes = (
|
||||
FSOUND_MIXER_AUTODETECT, // CE/PS2/GC Only - Non interpolating/low quality mixer.
|
||||
FSOUND_MIXER_BLENDMODE, // Removed / obsolete
|
||||
FSOUND_MIXER_MMXP5, // Removed / obsolete
|
||||
FSOUND_MIXER_MMXP6, // Removed / obsolete
|
||||
|
||||
FSOUND_MIXER_QUALITY_AUTODETECT,// All platforms - Autodetect the fastest quality mixer based on your cpu.
|
||||
FSOUND_MIXER_QUALITY_FPU, // Win32/Linux only - Interpolating/volume ramping FPU mixer.
|
||||
FSOUND_MIXER_QUALITY_MMXP5, // Win32/Linux only - Interpolating/volume ramping P5 MMX mixer.
|
||||
FSOUND_MIXER_QUALITY_MMXP6, // Win32/Linux only - Interpolating/volume ramping ppro+ MMX mixer.
|
||||
|
||||
FSOUND_MIXER_MONO, // CE/PS2/GC only - MONO non interpolating/low quality mixer. For speed
|
||||
FSOUND_MIXER_QUALITY_MONO, // CE/PS2/GC only - MONO Interpolating mixer. For speed
|
||||
|
||||
FSOUND_MIXER_MAX
|
||||
);
|
||||
|
||||
|
||||
{
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
These definitions describe the type of song being played.
|
||||
|
||||
[SEE_ALSO]
|
||||
FMUSIC_GetType
|
||||
]
|
||||
}
|
||||
type
|
||||
TFMusicTypes = (
|
||||
FMUSIC_TYPE_NONE,
|
||||
FMUSIC_TYPE_MOD, // Protracker / FastTracker
|
||||
FMUSIC_TYPE_S3M, // ScreamTracker 3
|
||||
FMUSIC_TYPE_XM, // FastTracker 2
|
||||
FMUSIC_TYPE_IT, // Impulse Tracker
|
||||
FMUSIC_TYPE_MIDI, // MIDI file
|
||||
FMUSIC_TYPE_FSB // FMOD Sample Bank file
|
||||
);
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_DSP_PRIORITIES
|
||||
|
||||
[DESCRIPTION]
|
||||
These default priorities are used by FMOD internal system DSP units. They describe the
|
||||
position of the DSP chain, and the order of how audio processing is executed.
|
||||
You can actually through the use of FSOUND_DSP_GetxxxUnit (where xxx is the name of the DSP
|
||||
unit), disable or even change the priority of a DSP unit.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_DSP_Create
|
||||
FSOUND_DSP_SetPriority
|
||||
FSOUND_DSP_GetSpectrum
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT = 0; // DSP CLEAR unit - done first
|
||||
FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT = 100; // DSP SFX unit - done second
|
||||
FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT = 200; // DSP MUSIC unit - done third
|
||||
FSOUND_DSP_DEFAULTPRIORITY_USER = 300; // User priority, use this as reference for your own DSP units
|
||||
FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT = 900; // This reads data for FSOUND_DSP_GetSpectrum, so it comes after user units
|
||||
FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT = 1000; // DSP CLIP AND COPY unit - last
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_CAPS
|
||||
|
||||
[DESCRIPTION]
|
||||
Driver description bitfields. Use FSOUND_Driver_GetCaps to determine if a driver enumerated
|
||||
has the settings you are after. The enumerated driver depends on the output mode, see
|
||||
FSOUND_OUTPUTTYPES
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_GetDriverCaps
|
||||
FSOUND_OUTPUTTYPES
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_CAPS_HARDWARE = $1; // This driver supports hardware accelerated 3d sound.
|
||||
FSOUND_CAPS_EAX2 = $2; // This driver supports EAX 2 reverb
|
||||
FSOUND_CAPS_EAX3 = $10; // This driver supports EAX 3 reverb
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_MODES
|
||||
|
||||
[DESCRIPTION]
|
||||
Sample description bitfields, OR them together for loading and describing samples.
|
||||
NOTE. If the file format being loaded already has a defined format, such as WAV or MP3, then
|
||||
trying to override the pre-defined format with a new set of format flags will not work. For
|
||||
example, an 8 bit WAV file will not load as 16bit if you specify FSOUND_16BITS. It will just
|
||||
ignore the flag and go ahead loading it as 8bits. For these type of formats the only flags
|
||||
you can specify that will really alter the behaviour of how it is loaded, are the following.
|
||||
|
||||
Looping behaviour - FSOUND_LOOP_OFF, FSOUND_LOOP_NORMAL, FSOUND_LOOP_BIDI
|
||||
Load destination - FSOUND_HW3D, FSOUND_HW2D, FSOUND_2D
|
||||
Loading behaviour - FSOUND_NONBLOCKING, FSOUND_LOADMEMORY, FSOUND_LOADRAW, FSOUND_MPEGACCURATE, FSOUND_MPEGHALFRATE, FSOUND_FORCEMONO
|
||||
Playback behaviour - FSOUND_STREAMABLE, FSOUND_ENABLEFX
|
||||
PlayStation 2 only - FSOUND_USECORE0, FSOUND_USECORE1, FSOUND_LOADMEMORYIOP
|
||||
|
||||
See flag descriptions for what these do.
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_LOOP_OFF = $00000001; // For non looping samples.
|
||||
FSOUND_LOOP_NORMAL = $00000002; // For forward looping samples.
|
||||
FSOUND_LOOP_BIDI = $00000004; // For bidirectional looping samples. (no effect if in hardware).
|
||||
FSOUND_8BITS = $00000008; // For 8 bit samples.
|
||||
FSOUND_16BITS = $00000010; // For 16 bit samples.
|
||||
FSOUND_MONO = $00000020; // For mono samples.
|
||||
FSOUND_STEREO = $00000040; // For stereo samples.
|
||||
FSOUND_UNSIGNED = $00000080; // For user created source data containing unsigned samples.
|
||||
FSOUND_SIGNED = $00000100; // For user created source data containing signed data.
|
||||
FSOUND_DELTA = $00000200; // For user created source data stored as delta values.
|
||||
FSOUND_IT214 = $00000400; // For user created source data stored using IT214 compression.
|
||||
FSOUND_IT215 = $00000800; // For user created source data stored using IT215 compression.
|
||||
FSOUND_HW3D = $00001000; // Attempts to make samples use 3d hardware acceleration. (if the card supports it)
|
||||
FSOUND_2D = $00002000; // Ignores any 3d processing. Overrides FSOUND_HW3D. Located in software.
|
||||
FSOUND_STREAMABLE = $00004000; // For a streamimg sound where you feed the data to it. */
|
||||
FSOUND_LOADMEMORY = $00008000; // "name" will be interpreted as a pointer to data for streaming and samples.
|
||||
FSOUND_LOADRAW = $00010000; // Will ignore file format and treat as raw pcm.
|
||||
FSOUND_MPEGACCURATE = $00020000; // For FSOUND_Stream_OpenFile - for accurate FSOUND_Stream_GetLengthMs/FSOUND_Stream_SetTime. WARNING, see FSOUND_Stream_OpenFile for inital opening time performance issues.
|
||||
FSOUND_FORCEMONO = $00040000; // For forcing stereo streams and samples to be mono - needed if using FSOUND_HW3D and stereo data - incurs a small speed hit for streams
|
||||
FSOUND_HW2D = $00080000; // 2D hardware sounds. allows hardware specific effects
|
||||
FSOUND_ENABLEFX = $00100000; // Allows DX8 FX to be played back on a sound. Requires DirectX 8 - Note these sounds cannot be played more than once, be 8 bit, be less than a certain size, or have a changing frequency
|
||||
FSOUND_MPEGHALFRATE = $00200000; // For FMODCE only - decodes mpeg streams using a lower quality decode, but faster execution
|
||||
FSOUND_XADPCM = $00400000; // For XBOX only - Contents are compressed as XADPCM */
|
||||
FSOUND_VAG = $00800000; // For PS2 only - Contents are compressed as Sony VAG format */
|
||||
FSOUND_NONBLOCKING = $01000000; // For FSOUND_Stream_OpenFile - Causes stream to open in the background and not block the foreground app - stream plays only when ready.
|
||||
FSOUND_GCADPCM = $02000000; // For Gamecube only - Contents are compressed as Gamecube DSP-ADPCM format
|
||||
FSOUND_MULTICHANNEL = $04000000; // For PS2 only - Contents are interleaved into a multi-channel (more than stereo) format
|
||||
FSOUND_USECORE0 = $08000000; // For PS2 only - Sample/Stream is forced to use hardware voices 00-23
|
||||
FSOUND_USECORE1 = $10000000; // For PS2 only - Sample/Stream is forced to use hardware voices 24-47
|
||||
FSOUND_LOADMEMORYIOP = $20000000; // For PS2 only - "name" will be interpreted as a pointer to data for streaming and samples. The address provided will be an IOP address
|
||||
|
||||
const
|
||||
FSOUND_NORMAL = (FSOUND_16BITS or FSOUND_SIGNED or FSOUND_MONO);
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_CDPLAYMODES
|
||||
|
||||
[DESCRIPTION]
|
||||
Playback method for a CD Audio track, using FSOUND_CD_SetPlayMode
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_CD_SetPlayMode
|
||||
FSOUND_CD_Play
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_CD_PLAYCONTINUOUS = 0; // Starts from the current track and plays to end of CD.
|
||||
FSOUND_CD_PLAYONCE = 1; // Plays the specified track then stops.
|
||||
FSOUND_CD_PLAYLOOPED = 2; // Plays the specified track looped, forever until stopped manually.
|
||||
FSOUND_CD_PLAYRANDOM = 3; // Plays tracks in random order
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_CHANNELSAMPLEMODE
|
||||
|
||||
[DESCRIPTION]
|
||||
Miscellaneous values for FMOD functions.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_PlaySound
|
||||
FSOUND_PlaySoundEx
|
||||
FSOUND_Sample_Alloc
|
||||
FSOUND_Sample_Load
|
||||
FSOUND_SetPan
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_FREE = -1; // value to play on any free channel, or to allocate a sample in a free sample slot.
|
||||
FSOUND_UNMANAGED = -2; // value to allocate a sample that is NOT managed by FSOUND or placed in a sample slot.
|
||||
FSOUND_ALL = -3; // for a channel index , this flag will affect ALL channels available! Not supported by every function.
|
||||
FSOUND_STEREOPAN = -1; // value for FSOUND_SetPan so that stereo sounds are not played at half volume. See FSOUND_SetPan for more on this.
|
||||
FSOUND_SYSTEMCHANNEL = -1000; // special 'channel' ID for all channel based functions that want to alter the global FSOUND software mixing output
|
||||
FSOUND_SYSTEMSAMPLE = -1000; // special 'sample' ID for all sample based functions that want to alter the global FSOUND software mixing output sample
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[STRUCT_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_REVERB_PROPERTIES
|
||||
|
||||
[DESCRIPTION]
|
||||
Structure defining a reverb environment.
|
||||
|
||||
[REMARKS]
|
||||
For more indepth descriptions of the reverb properties under win32, please see the EAX2/EAX3
|
||||
documentation at http://developer.creative.com/ under the 'downloads' section.
|
||||
If they do not have the EAX3 documentation, then most information can be attained from
|
||||
the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
|
||||
EAX2.
|
||||
Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset.
|
||||
Note that integer values that typically range from -10,000 to 1000 are represented in
|
||||
decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear.
|
||||
PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).
|
||||
Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
|
||||
the reverb should product a similar effect on either platform.
|
||||
Only WIN32 supports the reverb api.
|
||||
|
||||
The numerical values listed below are the maximum, minimum and default values for each variable respectively.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Reverb_SetProperties
|
||||
FSOUND_Reverb_GetProperties
|
||||
FSOUND_REVERB_PRESETS
|
||||
FSOUND_REVERB_FLAGS
|
||||
]
|
||||
}
|
||||
type
|
||||
TFSoundReverbProperties = record // MIN MAX DEFAULT DESCRIPTION
|
||||
Environment: Cardinal; // 0 25 0 sets all listener properties (win32 only)
|
||||
EnvSize: Single; // 1.0 100.0 7.5 environment size in meters (win32 only)
|
||||
EnvDiffusion: Single; // 0.0 1.0 1.0 environment diffusion (win32/xbox)
|
||||
Room: Integer; // -10000 0 -1000 room effect level (at mid frequencies) (win32/xbox)
|
||||
RoomHF: Integer; // -10000 0 -100 relative room effect level at high frequencies (win32/xbox)
|
||||
RoomLF: Integer; // -10000 0 0 relative room effect level at low frequencies (win32 only)
|
||||
DecayTime: Single; // 0.1 20.0 1.49 reverberation decay time at mid frequencies (win32/xbox)
|
||||
DecayHFRatio: Single; // 0.1 2.0 0.83 high-frequency to mid-frequency decay time ratio (win32/xbox)
|
||||
DecayLFRatio: Single; // 0.1 2.0 1.0 low-frequency to mid-frequency decay time ratio (win32 only)
|
||||
Reflections: Integer; // -10000 1000 -2602 early reflections level relative to room effect (win32/xbox)
|
||||
ReflectionsDelay: Single; // 0.0 0.3 0.007 initial reflection delay time (win32/xbox)
|
||||
ReflectionsPan: array [0..2] of Single; // 0,0,0 early reflections panning vector (win32 only)
|
||||
Reverb: Integer; // -10000 2000 200 late reverberation level relative to room effect (win32/xbox)
|
||||
ReverbDelay: Single; // 0.0 0.1 0.011 late reverberation delay time relative to initial reflection (win32/xbox)
|
||||
ReverbPan: array [0..2] of Single; // 0,0,0 late reverberation panning vector (win32 only)
|
||||
EchoTime: Single; // .075 0.25 0.25 echo time (win32 only)
|
||||
EchoDepth: Single; // 0.0 1.0 0.0 echo depth (win32 only)
|
||||
ModulationTime: Single; // 0.04 4.0 0.25 modulation time (win32 only)
|
||||
ModulationDepth: Single; // 0.0 1.0 0.0 modulation depth (win32 only)
|
||||
AirAbsorptionHF: Single; // -100 0.0 -5.0 change in level per meter at high frequencies (win32 only)
|
||||
HFReference: Single; // 1000.0 20000 5000.0 reference high frequency (hz) (win32/xbox)
|
||||
LFReference: Single; // 20.0 1000.0 250.0 reference low frequency (hz) (win32 only)
|
||||
RoomRolloffFactor: Single; // 0.0 10.0 0.0 like FSOUND_3D_SetRolloffFactor but for room effect (win32/xbox)
|
||||
Diffusion: Single; // 0.0 100.0 100.0 Value that controls the echo density in the late reverberation decay. (xbox only)
|
||||
Density: Single; // 0.0 100.0 100.0 Value that controls the modal density in the late reverberation decay (xbox only)
|
||||
Flags: Cardinal; // FSOUND_REVERB_PROPERTYFLAGS - modifies the behavior of above properties (win32 only)
|
||||
end;
|
||||
// [STRUCT_END]
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_REVERB_FLAGS
|
||||
|
||||
[DESCRIPTION]
|
||||
Values for the Flags member of the FSOUND_REVERB_PROPERTIES structure.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_REVERB_PROPERTIES
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_REVERBFLAGS_DECAYTIMESCALE = $00000001; // EnvironmentSize affects reverberation decay time
|
||||
FSOUND_REVERBFLAGS_REFLECTIONSSCALE = $00000002; // EnvironmentSize affects reflection level
|
||||
FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE = $00000004; // EnvironmentSize affects initial reflection delay time
|
||||
FSOUND_REVERBFLAGS_REVERBSCALE = $00000008; // EnvironmentSize affects reflections level
|
||||
FSOUND_REVERBFLAGS_REVERBDELAYSCALE = $00000010; // EnvironmentSize affects late reverberation delay time
|
||||
FSOUND_REVERBFLAGS_DECAYHFLIMIT = $00000020; // AirAbsorptionHF affects DecayHFRatio
|
||||
FSOUND_REVERBFLAGS_ECHOTIMESCALE = $00000040; // EnvironmentSize affects echo time
|
||||
FSOUND_REVERBFLAGS_MODULATIONTIMESCALE = $00000080; // EnvironmentSize affects modulation time
|
||||
FSOUND_REVERB_FLAGS_CORE0 = $00000100; // PS2 Only - Reverb is applied to CORE0 (hw voices 0-23)
|
||||
FSOUND_REVERB_FLAGS_CORE1 = $00000200; // PS2 Only - Reverb is applied to CORE1 (hw voices 24-47)
|
||||
FSOUND_REVERBFLAGS_DEFAULT = FSOUND_REVERBFLAGS_DECAYTIMESCALE or FSOUND_REVERBFLAGS_REFLECTIONSSCALE or
|
||||
FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE or FSOUND_REVERBFLAGS_REVERBSCALE or
|
||||
FSOUND_REVERBFLAGS_REVERBDELAYSCALE or FSOUND_REVERBFLAGS_DECAYHFLIMIT or
|
||||
FSOUND_REVERB_FLAGS_CORE0 or FSOUND_REVERB_FLAGS_CORE1;
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_REVERB_PRESETS
|
||||
|
||||
[DESCRIPTION]
|
||||
A set of predefined environment PARAMETERS, created by Creative Labs
|
||||
These are used to initialize an FSOUND_REVERB_PROPERTIES structure statically.
|
||||
ie
|
||||
FSOUND_REVERB_PROPERTIES prop = FSOUND_PRESET_GENERIC;
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Reverb_SetProperties
|
||||
]
|
||||
}
|
||||
{
|
||||
const
|
||||
// Env Size Diffus Room RoomHF RmLF DecTm DecHF DecLF Refl RefDel RefPan Revb RevDel ReverbPan EchoTm EchDp ModTm ModDp AirAbs HFRef LFRef RRlOff Diffus Densty FLAGS
|
||||
FSOUND_PRESET_OFF = 0, 7.5f, 1.00f, -10000, -10000, 0, 1.00f, 1.00f, 1.0f, -2602, 0.007f, 0.0f,0.0f,0.0f, 200, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 0.0f, 0.0f, 0x3f ;
|
||||
FSOUND_PRESET_GENERIC = 0, 7.5f, 1.00f, -1000, -100, 0, 1.49f, 0.83f, 1.0f, -2602, 0.007f, 0.0f,0.0f,0.0f, 200, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_PADDEDCELL = 1, 1.4f, 1.00f, -1000, -6000, 0, 0.17f, 0.10f, 1.0f, -1204, 0.001f, 0.0f,0.0f,0.0f, 207, 0.002f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_ROOM = 2, 1.9f, 1.00f, -1000, -454, 0, 0.40f, 0.83f, 1.0f, -1646, 0.002f, 0.0f,0.0f,0.0f, 53, 0.003f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_BATHROOM = 3, 1.4f, 1.00f, -1000, -1200, 0, 1.49f, 0.54f, 1.0f, -370, 0.007f, 0.0f,0.0f,0.0f, 1030, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 60.0f, 0x3f ;
|
||||
FSOUND_PRESET_LIVINGROOM = 4, 2.5f, 1.00f, -1000, -6000, 0, 0.50f, 0.10f, 1.0f, -1376, 0.003f, 0.0f,0.0f,0.0f, -1104, 0.004f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_STONEROOM = 5, 11.6f, 1.00f, -1000, -300, 0, 2.31f, 0.64f, 1.0f, -711, 0.012f, 0.0f,0.0f,0.0f, 83, 0.017f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_AUDITORIUM = 6, 21.6f, 1.00f, -1000, -476, 0, 4.32f, 0.59f, 1.0f, -789, 0.020f, 0.0f,0.0f,0.0f, -289, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_CONCERTHALL = 7, 19.6f, 1.00f, -1000, -500, 0, 3.92f, 0.70f, 1.0f, -1230, 0.020f, 0.0f,0.0f,0.0f, -2, 0.029f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_CAVE = 8, 14.6f, 1.00f, -1000, 0, 0, 2.91f, 1.30f, 1.0f, -602, 0.015f, 0.0f,0.0f,0.0f, -302, 0.022f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
|
||||
FSOUND_PRESET_ARENA = 9, 36.2f, 1.00f, -1000, -698, 0, 7.24f, 0.33f, 1.0f, -1166, 0.020f, 0.0f,0.0f,0.0f, 16, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_HANGAR = 10, 50.3f, 1.00f, -1000, -1000, 0, 10.05f, 0.23f, 1.0f, -602, 0.020f, 0.0f,0.0f,0.0f, 198, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_CARPETTEDHALLWAY = 11, 1.9f, 1.00f, -1000, -4000, 0, 0.30f, 0.10f, 1.0f, -1831, 0.002f, 0.0f,0.0f,0.0f, -1630, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_HALLWAY = 12, 1.8f, 1.00f, -1000, -300, 0, 1.49f, 0.59f, 1.0f, -1219, 0.007f, 0.0f,0.0f,0.0f, 441, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_STONECORRIDOR = 13, 13.5f, 1.00f, -1000, -237, 0, 2.70f, 0.79f, 1.0f, -1214, 0.013f, 0.0f,0.0f,0.0f, 395, 0.020f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_ALLEY = 14, 7.5f, 0.30f, -1000, -270, 0, 1.49f, 0.86f, 1.0f, -1204, 0.007f, 0.0f,0.0f,0.0f, -4, 0.011f, 0.0f,0.0f,0.0f, 0.125f, 0.95f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_FOREST = 15, 38.0f, 0.30f, -1000, -3300, 0, 1.49f, 0.54f, 1.0f, -2560, 0.162f, 0.0f,0.0f,0.0f, -229, 0.088f, 0.0f,0.0f,0.0f, 0.125f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 79.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_CITY = 16, 7.5f, 0.50f, -1000, -800, 0, 1.49f, 0.67f, 1.0f, -2273, 0.007f, 0.0f,0.0f,0.0f, -1691, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 50.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_MOUNTAINS = 17, 100.0f, 0.27f, -1000, -2500, 0, 1.49f, 0.21f, 1.0f, -2780, 0.300f, 0.0f,0.0f,0.0f, -1434, 0.100f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 27.0f, 100.0f, 0x1f ;
|
||||
FSOUND_PRESET_QUARRY = 18, 17.5f, 1.00f, -1000, -1000, 0, 1.49f, 0.83f, 1.0f, -10000, 0.061f, 0.0f,0.0f,0.0f, 500, 0.025f, 0.0f,0.0f,0.0f, 0.125f, 0.70f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_PLAIN = 19, 42.5f, 0.21f, -1000, -2000, 0, 1.49f, 0.50f, 1.0f, -2466, 0.179f, 0.0f,0.0f,0.0f, -1926, 0.100f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 21.0f, 100.0f, 0x3f ;
|
||||
FSOUND_PRESET_PARKINGLOT = 20, 8.3f, 1.00f, -1000, 0, 0, 1.65f, 1.50f, 1.0f, -1363, 0.008f, 0.0f,0.0f,0.0f, -1153, 0.012f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
|
||||
FSOUND_PRESET_SEWERPIPE = 21, 1.7f, 0.80f, -1000, -1000, 0, 2.81f, 0.14f, 1.0f, 429, 0.014f, 0.0f,0.0f,0.0f, 1023, 0.021f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 0.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 80.0f, 60.0f, 0x3f ;
|
||||
FSOUND_PRESET_UNDERWATER = 22, 1.8f, 1.00f, -1000, -4000, 0, 1.49f, 0.10f, 1.0f, -449, 0.007f, 0.0f,0.0f,0.0f, 1700, 0.011f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 1.18f, 0.348f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x3f ;
|
||||
|
||||
// Non I3DL2 presets
|
||||
|
||||
FSOUND_PRESET_DRUGGED = 23, 1.9f, 0.50f, -1000, 0, 0, 8.39f, 1.39f, 1.0f, -115, 0.002f, 0.0f,0.0f,0.0f, 985, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 0.25f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
|
||||
FSOUND_PRESET_DIZZY = 24, 1.8f, 0.60f, -1000, -400, 0, 17.23f, 0.56f, 1.0f, -1713, 0.020f, 0.0f,0.0f,0.0f, -613, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 1.00f, 0.81f, 0.310f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
|
||||
FSOUND_PRESET_PSYCHOTIC = 25, 1.0f, 0.50f, -1000, -151, 0, 7.56f, 0.91f, 1.0f, -626, 0.020f, 0.0f,0.0f,0.0f, 774, 0.030f, 0.0f,0.0f,0.0f, 0.250f, 0.00f, 4.00f, 1.000f, -5.0f, 5000.0f, 250.0f, 0.0f, 100.0f, 100.0f, 0x1f ;
|
||||
}
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[STRUCTURE]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
Structure defining the properties for a reverb source, related to a FSOUND channel.
|
||||
For more indepth descriptions of the reverb properties under win32, please see the EAX3
|
||||
documentation at http://developer.creative.com/ under the 'downloads' section.
|
||||
If they do not have the EAX3 documentation, then most information can be attained from
|
||||
the EAX2 documentation, as EAX3 only adds some more parameters and functionality on top of
|
||||
EAX2.
|
||||
|
||||
Note the default reverb properties are the same as the FSOUND_PRESET_GENERIC preset.
|
||||
Note that integer values that typically range from -10,000 to 1000 are represented in
|
||||
decibels, and are of a logarithmic scale, not linear, wheras float values are typically linear.
|
||||
PORTABILITY: Each member has the platform it supports in braces ie (win32/xbox).
|
||||
Some reverb parameters are only supported in win32 and some only on xbox. If all parameters are set then
|
||||
the reverb should product a similar effect on either platform.
|
||||
Linux and FMODCE do not support the reverb api.
|
||||
|
||||
The numerical values listed below are the maximum, minimum and default values for each variable respectively.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Reverb_SetChannelProperties
|
||||
FSOUND_Reverb_GetChannelProperties
|
||||
FSOUND_REVERB_CHANNELFLAGS
|
||||
]
|
||||
}
|
||||
type
|
||||
TFSoundReverbChannelProperties = record // MIN MAX DEFAULT
|
||||
Direct: Integer; // -10000 1000 0 direct path level (at low and mid frequencies) (win32/xbox)
|
||||
DirectHF: Integer; // -10000 0 0 relative direct path level at high frequencies (win32/xbox)
|
||||
Room: Integer; // -10000 1000 0 room effect level (at low and mid frequencies) (win32/xbox)
|
||||
RoomHF: Integer; // -10000 0 0 relative room effect level at high frequencies (win32/xbox)
|
||||
Obstruction: Integer; // -10000 0 0 main obstruction control (attenuation at high frequencies) (win32/xbox)
|
||||
ObstructionLFRatio: Single; // 0.0 1.0 0.0 obstruction low-frequency level re. main control (win32/xbox)
|
||||
Occlusion: Integer; // -10000 0 0 main occlusion control (attenuation at high frequencies) (win32/xbox)
|
||||
OcclusionLFRatio: Single; // 0.0 1.0 0.25 occlusion low-frequency level re. main control (win32/xbox)
|
||||
OcclusionRoomRatio: Single; // 0.0 10.0 1.5 relative occlusion control for room effect (win32)
|
||||
OcclusionDirectRatio: Single; // 0.0 10.0 1.0 relative occlusion control for direct path (win32)
|
||||
Exclusion: Integer; // -10000 0 0 main exlusion control (attenuation at high frequencies) (win32)
|
||||
ExclusionLFRatio: Single; // 0.0 1.0 1.0 exclusion low-frequency level re. main control (win32)
|
||||
OutsideVolumeHF: Integer; // -10000 0 0 outside sound cone level at high frequencies (win32)
|
||||
DopplerFactor: Single; // 0.0 10.0 0.0 like DS3D flDopplerFactor but per source (win32)
|
||||
RolloffFactor: Single; // 0.0 10.0 0.0 like DS3D flRolloffFactor but per source (win32)
|
||||
RoomRolloffFactor: Single; // 0.0 10.0 0.0 like DS3D flRolloffFactor but for room effect (win32/xbox)
|
||||
AirAbsorptionFactor: Single; // 0.0 10.0 1.0 multiplies AirAbsorptionHF member of FSOUND_REVERB_PROPERTIES (win32)
|
||||
Flags: Integer; // FSOUND_REVERB_CHANNELFLAGS - modifies the behavior of properties (win32)
|
||||
end;
|
||||
// [STRUCT_END]
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_REVERB_CHANNELFLAGS
|
||||
|
||||
[DESCRIPTION]
|
||||
Values for the Flags member of the FSOUND_REVERB_CHANNELPROPERTIES structure.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_REVERB_CHANNELPROPERTIES
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO = $01; // Automatic setting of 'Direct' due to distance from listener
|
||||
FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO = $02; // Automatic setting of 'Room' due to distance from listener
|
||||
FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO = $04; // Automatic setting of 'RoomHF' due to distance from listener
|
||||
FSOUND_REVERB_CHANNELFLAGS_DEFAULT = FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO or
|
||||
FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO or
|
||||
FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO;
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
These values are used with FSOUND_FX_Enable to enable DirectX 8 FX for a channel.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_FX_Enable
|
||||
FSOUND_FX_Disable
|
||||
FSOUND_FX_SetChorus
|
||||
FSOUND_FX_SetCompressor
|
||||
FSOUND_FX_SetDistortion
|
||||
FSOUND_FX_SetEcho
|
||||
FSOUND_FX_SetFlanger
|
||||
FSOUND_FX_SetGargle
|
||||
FSOUND_FX_SetI3DL2Reverb
|
||||
FSOUND_FX_SetParamEQ
|
||||
FSOUND_FX_SetWavesReverb
|
||||
]
|
||||
}
|
||||
|
||||
type
|
||||
TFSoundFXModes = (
|
||||
FSOUND_FX_CHORUS,
|
||||
FSOUND_FX_COMPRESSOR,
|
||||
FSOUND_FX_DISTORTION,
|
||||
FSOUND_FX_ECHO,
|
||||
FSOUND_FX_FLANGER,
|
||||
FSOUND_FX_GARGLE,
|
||||
FSOUND_FX_I3DL2REVERB,
|
||||
FSOUND_FX_PARAMEQ,
|
||||
FSOUND_FX_WAVES_REVERB,
|
||||
FSOUND_FX_MAX
|
||||
);
|
||||
// [DEFINE_END]
|
||||
|
||||
|
||||
{
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
These are speaker types defined for use with the FSOUND_SetSpeakerMode command.
|
||||
Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes. Other output modes will only
|
||||
interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_SetSpeakerMode
|
||||
|
||||
[REMARKS]
|
||||
Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes. Other output modes will only
|
||||
interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo.
|
||||
|
||||
Using either DolbyDigital or DTS will use whatever 5.1 digital mode is available if destination hardware is unsure.
|
||||
]
|
||||
}
|
||||
type
|
||||
TFSoundSpeakerModes =
|
||||
(
|
||||
FSOUND_SPEAKERMODE_DOLBYDIGITAL, // The audio is played through a speaker arrangement of surround speakers with a subwoofer.
|
||||
FSOUND_SPEAKERMODE_HEADPHONES, // The speakers are headphones.
|
||||
FSOUND_SPEAKERMODE_MONO, // The speakers are monaural.
|
||||
FSOUND_SPEAKERMODE_QUAD, // The speakers are quadraphonic.
|
||||
FSOUND_SPEAKERMODE_STEREO, // The speakers are stereo (default value).
|
||||
FSOUND_SPEAKERMODE_SURROUND, // The speakers are surround sound.
|
||||
FSOUND_SPEAKERMODE_DTS // The audio is played through a speaker arrangement of surround speakers with a subwoofer.
|
||||
);
|
||||
FSOUND_SPEAKERMODES = TFSoundSpeakerModes;
|
||||
|
||||
|
||||
{
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_INIT_FLAGS
|
||||
|
||||
[DESCRIPTION]
|
||||
Initialization flags. Use them with FSOUND_Init in the flags parameter to change various behaviour.
|
||||
|
||||
FSOUND_INIT_ENABLESYSTEMCHANNELFX Is an init mode which enables the FSOUND mixer buffer to be affected by DirectX 8 effects.
|
||||
Note that due to limitations of DirectSound, FSOUND_Init may fail if this is enabled because the buffersize is too small.
|
||||
This can be fixed with FSOUND_SetBufferSize. Increase the BufferSize until it works.
|
||||
When it is enabled you can use the FSOUND_FX api, and use FSOUND_SYSTEMCHANNEL as the channel id when setting parameters.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Init
|
||||
]
|
||||
}
|
||||
const
|
||||
FSOUND_INIT_USEDEFAULTMIDISYNTH = $01; // Causes MIDI playback to force software decoding.
|
||||
FSOUND_INIT_GLOBALFOCUS = $02; // For DirectSound output - sound is not muted when window is out of focus.
|
||||
FSOUND_INIT_ENABLESYSTEMCHANNELFX = $04; // For DirectSound output - Allows FSOUND_FX api to be used on global software mixer output!
|
||||
FSOUND_INIT_ACCURATEVULEVELS = $08; // This latency adjusts FSOUND_GetCurrentLevels, but incurs a small cpu and memory hit.
|
||||
FSOUND_INIT_PS2_DISABLECORE0REVERB = $10; // PS2 only - Disable reverb on CORE 0 to regain SRAM.
|
||||
FSOUND_INIT_PS2_DISABLECORE1REVERB = $20; // PS2 only - Disable reverb on CORE 1 to regain SRAM.
|
||||
FSOUND_INIT_PS2_SWAPDMACORES = $40; // PS2 only - By default FMOD uses DMA CH0 for mixing, CH1 for uploads, this flag swaps them around.
|
||||
FSOUND_INIT_DONTLATENCYADJUST = $80; // Callbacks are not latency adjusted, and are called at mix time. Also information functions are immediate.
|
||||
FSOUND_INIT_GC_INITLIBS = $100; // Gamecube only - Initializes GC audio libraries.
|
||||
FSOUND_INIT_STREAM_FROM_MAIN_THREAD = $200; // Turns off fmod streamer thread, and makes streaming update from FSOUND_Update called by the user.
|
||||
FSOUND_INIT_PS2_USEVOLUMERAMPING = $400; // PS2 only - Turns on volume ramping system to remove hardware clicks.
|
||||
FSOUND_INIT_DSOUND_DEFERRED = $800; // Win32 only - For DirectSound output. 3D commands are batched together and executed at FSOUND_Update.
|
||||
FSOUND_INIT_DSOUND_HRTF_LIGHT = $1000; // Win32 only - For DirectSound output. FSOUND_HW3D buffers use a slightly higher quality algorithm when 3d hardware acceleration is not present.
|
||||
FSOUND_INIT_DSOUND_HRTF_FULL = $2000; // Win32 only - For DirectSound output. FSOUND_HW3D buffers use full quality 3d playback when 3d hardware acceleration is not present.
|
||||
FSOUND_INIT_XBOX_REMOVEHEADROOM = $4000; // XBox only - By default directsound attenuates all sound by 6db to avoid clipping/distortion. CAUTION. If you use this flag you are responsible for the final mix to make sure clipping / distortion doesn't happen.
|
||||
FSOUND_INIT_PSP_SILENCEONUNDERRUN = $8000; // PSP only - If streams skip / stutter when device is powered on, either increase stream buffersize, or use this flag instead to play silence while the UMD is recovering.
|
||||
|
||||
// [DEFINE_END]
|
||||
|
||||
(*
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
Status values for internet streams. Use FSOUND_Stream_Net_GetStatus to get the current status of an internet stream.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Stream_Net_GetStatus
|
||||
]
|
||||
*)
|
||||
type
|
||||
TFSoundStreamNetStatus =
|
||||
(
|
||||
FSOUND_STREAM_NET_NOTCONNECTED, (* Stream hasn't connected yet *)
|
||||
FSOUND_STREAM_NET_CONNECTING, (* Stream is connecting to remote host *)
|
||||
FSOUND_STREAM_NET_BUFFERING, (* Stream is buffering data *)
|
||||
FSOUND_STREAM_NET_READY, (* Stream is ready to play *)
|
||||
FSOUND_STREAM_NET_ERROR (* Stream has suffered a fatal error *)
|
||||
);
|
||||
|
||||
|
||||
(*
|
||||
[ENUM]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
Describes the type of a particular tag field.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Stream_GetNumTagFields
|
||||
FSOUND_Stream_GetTagField
|
||||
FSOUND_Stream_FindTagField
|
||||
]
|
||||
*)
|
||||
type
|
||||
TFSoundTagFieldType =
|
||||
(
|
||||
FSOUND_TAGFIELD_VORBISCOMMENT, (* A vorbis comment *)
|
||||
FSOUND_TAGFIELD_ID3V1, (* Part of an ID3v1 tag *)
|
||||
FSOUND_TAGFIELD_ID3V2, (* An ID3v2 frame *)
|
||||
FSOUND_TAGFIELD_SHOUTCAST, (* A SHOUTcast header line *)
|
||||
FSOUND_TAGFIELD_ICECAST, (* An Icecast header line *)
|
||||
FSOUND_TAGFIELD_ASF (* An Advanced Streaming Format header line *)
|
||||
);
|
||||
|
||||
|
||||
(*
|
||||
[DEFINE_START]
|
||||
[
|
||||
[NAME]
|
||||
FSOUND_STATUS_FLAGS
|
||||
|
||||
[DESCRIPTION]
|
||||
These values describe the protocol and format of an internet stream. Use FSOUND_Stream_Net_GetStatus to retrieve this information for an open internet stream.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Stream_Net_GetStatus
|
||||
]
|
||||
*)
|
||||
const
|
||||
FSOUND_PROTOCOL_SHOUTCAST = $00000001;
|
||||
FSOUND_PROTOCOL_ICECAST = $00000002;
|
||||
FSOUND_PROTOCOL_HTTP = $00000004;
|
||||
FSOUND_FORMAT_MPEG = $00010000;
|
||||
FSOUND_FORMAT_OGGVORBIS = $00020000;
|
||||
(* [DEFINE_END] *)
|
||||
|
||||
{
|
||||
[STRUCTURE]
|
||||
[
|
||||
[DESCRIPTION]
|
||||
Structure defining a CD table of contents. This structure is returned as a tag from FSOUND_Stream_FindTagField when the tag name "CD_TOC" is specified.
|
||||
Note: All tracks on the CD - including data tracks- will be represented in this structure so it's use for anything other than generating disc id information is not recommended.
|
||||
See the cdda example program for info on retrieving and using this structure.
|
||||
|
||||
[SEE_ALSO]
|
||||
FSOUND_Stream_Open
|
||||
FSOUND_Stream_FindTagField
|
||||
]
|
||||
}
|
||||
type
|
||||
TFSoundTOCTag = record
|
||||
Name: array [0..3] of Char; // The string "TOC" (4th character is 0), just in case this structure is accidentally treated as a string.
|
||||
NumTracks: Integer; // The number of tracks on the CD.
|
||||
Min: array [0..99] of Integer; // The start offset of each track in minutes.
|
||||
Sec: array [0..99] of Integer; // The start offset of each track in seconds.
|
||||
Frame: array [0..99] of Integer; // The start offset of each track in frames.
|
||||
end;
|
||||
// [STRUCT_END]
|
||||
|
||||
implementation
|
||||
|
||||
end.
|
||||
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,32 @@
|
||||
#ifndef _FMOD_ERRORS_H
|
||||
#define _FMOD_ERRORS_H
|
||||
|
||||
static char *FMOD_ErrorString(int errcode)
|
||||
{
|
||||
switch (errcode)
|
||||
{
|
||||
case FMOD_ERR_NONE: return "No errors";
|
||||
case FMOD_ERR_BUSY: return "Cannot call this command after FSOUND_Init. Call FSOUND_Close first.";
|
||||
case FMOD_ERR_UNINITIALIZED: return "This command failed because FSOUND_Init was not called";
|
||||
case FMOD_ERR_PLAY: return "Playing the sound failed.";
|
||||
case FMOD_ERR_INIT: return "Error initializing output device.";
|
||||
case FMOD_ERR_ALLOCATED: return "The output device is already in use and cannot be reused.";
|
||||
case FMOD_ERR_OUTPUT_FORMAT: return "Soundcard does not support the features needed for this soundsystem (16bit stereo output)";
|
||||
case FMOD_ERR_COOPERATIVELEVEL: return "Error setting cooperative level for hardware.";
|
||||
case FMOD_ERR_CREATEBUFFER: return "Error creating hardware sound buffer.";
|
||||
case FMOD_ERR_FILE_NOTFOUND: return "File not found";
|
||||
case FMOD_ERR_FILE_FORMAT: return "Unknown file format";
|
||||
case FMOD_ERR_FILE_BAD: return "Error loading file";
|
||||
case FMOD_ERR_MEMORY: return "Not enough memory ";
|
||||
case FMOD_ERR_VERSION: return "The version number of this file format is not supported";
|
||||
case FMOD_ERR_INVALID_PARAM: return "An invalid parameter was passed to this function";
|
||||
case FMOD_ERR_NO_EAX: return "Tried to use an EAX command on a non EAX enabled channel or output.";
|
||||
case FMOD_ERR_CHANNEL_ALLOC: return "Failed to allocate a new channel";
|
||||
case FMOD_ERR_RECORD: return "Recording not supported on this device";
|
||||
case FMOD_ERR_MEDIAPLAYER: return "Required Mediaplayer codec is not installed";
|
||||
|
||||
default : return "Unknown error";
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,546 @@
|
||||
/* =========================================================================================== */
|
||||
/* FMOD Dynamic DLL loading header. Copyright (c), Firelight Technologies Pty, Ltd. 1999-2004. */
|
||||
/* =========================================================================================== */
|
||||
|
||||
#ifndef _FMODDYN_H_
|
||||
#define _FMODDYN_H_
|
||||
|
||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <dlfcn.h>
|
||||
#include <string.h>
|
||||
#endif
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "fmod.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void *module;
|
||||
|
||||
signed char (F_API *FSOUND_SetOutput)(int outputtype);
|
||||
signed char (F_API *FSOUND_SetDriver)(int driver);
|
||||
signed char (F_API *FSOUND_SetMixer)(int mixer);
|
||||
signed char (F_API *FSOUND_SetBufferSize)(int len_ms);
|
||||
signed char (F_API *FSOUND_SetHWND)(void *hwnd);
|
||||
signed char (F_API *FSOUND_SetMinHardwareChannels)(int min);
|
||||
signed char (F_API *FSOUND_SetMaxHardwareChannels)(int max);
|
||||
signed char (F_API *FSOUND_SetMemorySystem)(void *pool, int poollen, FSOUND_ALLOCCALLBACK useralloc, FSOUND_REALLOCCALLBACK userrealloc, FSOUND_FREECALLBACK userfree);
|
||||
signed char (F_API *FSOUND_Init)(int mixrate, int maxsoftwarechannels, unsigned int flags);
|
||||
void (F_API *FSOUND_Close)();
|
||||
void (F_API *FSOUND_Update)(); /* you must call this once a frame */
|
||||
void (F_API *FSOUND_SetSpeakerMode)(unsigned int speakermode);
|
||||
void (F_API *FSOUND_SetSFXMasterVolume)(int volume);
|
||||
void (F_API *FSOUND_SetPanSeperation)(float pansep);
|
||||
void (F_API *FSOUND_File_SetCallbacks)(FSOUND_OPENCALLBACK useropen, FSOUND_CLOSECALLBACK userclose, FSOUND_READCALLBACK userread, FSOUND_SEEKCALLBACK userseek, FSOUND_TELLCALLBACK usertell);
|
||||
int (F_API *FSOUND_GetError)();
|
||||
float (F_API *FSOUND_GetVersion)();
|
||||
int (F_API *FSOUND_GetOutput)();
|
||||
void * (F_API *FSOUND_GetOutputHandle)();
|
||||
int (F_API *FSOUND_GetDriver)();
|
||||
int (F_API *FSOUND_GetMixer)();
|
||||
int (F_API *FSOUND_GetNumDrivers)();
|
||||
const char * (F_API *FSOUND_GetDriverName)(int id);
|
||||
signed char (F_API *FSOUND_GetDriverCaps)(int id, unsigned int *caps);
|
||||
int (F_API *FSOUND_GetOutputRate)();
|
||||
int (F_API *FSOUND_GetMaxChannels)();
|
||||
int (F_API *FSOUND_GetMaxSamples)();
|
||||
unsigned int (F_API *FSOUND_GetSpeakerMode)();
|
||||
int (F_API *FSOUND_GetSFXMasterVolume)();
|
||||
signed char (F_API *FSOUND_GetNumHWChannels)(int *num2d, int *num3d, int *total);
|
||||
int (F_API *FSOUND_GetChannelsPlaying)();
|
||||
float (F_API *FSOUND_GetCPUUsage)();
|
||||
void (F_API *FSOUND_GetMemoryStats)(unsigned int *currentalloced, unsigned int *maxalloced);
|
||||
FSOUND_SAMPLE * (F_API *FSOUND_Sample_Load)(int index, const char *name_or_data, unsigned int mode, int offset, int length);
|
||||
FSOUND_SAMPLE * (F_API *FSOUND_Sample_Alloc)(int index, int length, unsigned int mode, int deffreq, int defvol, int defpan, int defpri);
|
||||
void (F_API *FSOUND_Sample_Free)(FSOUND_SAMPLE *sptr);
|
||||
signed char (F_API *FSOUND_Sample_Upload)(FSOUND_SAMPLE *sptr, void *srcdata, unsigned int mode);
|
||||
signed char (F_API *FSOUND_Sample_Lock)(FSOUND_SAMPLE *sptr, int offset, int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2);
|
||||
signed char (F_API *FSOUND_Sample_Unlock)(FSOUND_SAMPLE *sptr, void *ptr1, void *ptr2, unsigned int len1, unsigned int len2);
|
||||
signed char (F_API *FSOUND_Sample_SetMode)(FSOUND_SAMPLE *sptr, unsigned int mode);
|
||||
signed char (F_API *FSOUND_Sample_SetLoopPoints)(FSOUND_SAMPLE *sptr, int loopstart, int loopend);
|
||||
signed char (F_API *FSOUND_Sample_SetDefaults)(FSOUND_SAMPLE *sptr, int deffreq, int defvol, int defpan, int defpri);
|
||||
signed char (F_API *FSOUND_Sample_SetDefaultsEx)(FSOUND_SAMPLE *sptr, int deffreq, int defvol, int defpan, int defpri, int varfreq, int varvol, int varpan);
|
||||
signed char (F_API *FSOUND_Sample_SetMinMaxDistance)(FSOUND_SAMPLE *sptr, float min, float max);
|
||||
signed char (F_API *FSOUND_Sample_SetMaxPlaybacks)(FSOUND_SAMPLE *sptr, int max);
|
||||
FSOUND_SAMPLE * (F_API *FSOUND_Sample_Get)(int sampno);
|
||||
const char * (F_API *FSOUND_Sample_GetName)(FSOUND_SAMPLE *sptr);
|
||||
unsigned int (F_API *FSOUND_Sample_GetLength)(FSOUND_SAMPLE *sptr);
|
||||
signed char (F_API *FSOUND_Sample_GetLoopPoints)(FSOUND_SAMPLE *sptr, int *loopstart, int *loopend);
|
||||
signed char (F_API *FSOUND_Sample_GetDefaults)(FSOUND_SAMPLE *sptr, int *deffreq, int *defvol, int *defpan, int *defpri);
|
||||
signed char (F_API *FSOUND_Sample_GetDefaultsEx)(FSOUND_SAMPLE *sptr, int *deffreq, int *defvol, int *defpan, int *defpri, int *varfreq, int *varvol, int *varpan);
|
||||
unsigned int (F_API *FSOUND_Sample_GetMode)(FSOUND_SAMPLE *sptr);
|
||||
signed char (F_API *FSOUND_Sample_GetMinMaxDistance)(FSOUND_SAMPLE *sptr, float *min, float *max);
|
||||
int (F_API *FSOUND_PlaySound)(int channel, FSOUND_SAMPLE *sptr);
|
||||
int (F_API *FSOUND_PlaySoundEx)(int channel, FSOUND_SAMPLE *sptr, FSOUND_DSPUNIT *dsp, signed char startpaused);
|
||||
signed char (F_API *FSOUND_StopSound)(int channel);
|
||||
signed char (F_API *FSOUND_SetFrequency)(int channel, int freq);
|
||||
signed char (F_API *FSOUND_SetVolume)(int channel, int vol);
|
||||
signed char (F_API *FSOUND_SetVolumeAbsolute)(int channel, int vol);
|
||||
signed char (F_API *FSOUND_SetPan)(int channel, int pan);
|
||||
signed char (F_API *FSOUND_SetSurround)(int channel, signed char surround);
|
||||
signed char (F_API *FSOUND_SetMute)(int channel, signed char mute);
|
||||
signed char (F_API *FSOUND_SetPriority)(int channel, int priority);
|
||||
signed char (F_API *FSOUND_SetReserved)(int channel, signed char reserved);
|
||||
signed char (F_API *FSOUND_SetPaused)(int channel, signed char paused);
|
||||
signed char (F_API *FSOUND_SetLoopMode)(int channel, unsigned int loopmode);
|
||||
signed char (F_API *FSOUND_SetCurrentPosition)(int channel, unsigned int offset);
|
||||
signed char (F_API *FSOUND_3D_SetAttributes)(int channel, const float *pos, const float *vel);
|
||||
signed char (F_API *FSOUND_3D_SetMinMaxDistance)(int channel, float min, float max);
|
||||
signed char (F_API *FSOUND_IsPlaying)(int channel);
|
||||
int (F_API *FSOUND_GetFrequency)(int channel);
|
||||
int (F_API *FSOUND_GetVolume)(int channel);
|
||||
int (F_API *FSOUND_GetAmplitude)(int channel);
|
||||
int (F_API *FSOUND_GetPan)(int channel);
|
||||
signed char (F_API *FSOUND_GetSurround)(int channel);
|
||||
signed char (F_API *FSOUND_GetMute)(int channel);
|
||||
int (F_API *FSOUND_GetPriority)(int channel);
|
||||
signed char (F_API *FSOUND_GetReserved)(int channel);
|
||||
signed char (F_API *FSOUND_GetPaused)(int channel);
|
||||
unsigned int (F_API *FSOUND_GetLoopMode)(int channel);
|
||||
unsigned int (F_API *FSOUND_GetCurrentPosition)(int channel);
|
||||
FSOUND_SAMPLE * (F_API *FSOUND_GetCurrentSample)(int channel);
|
||||
signed char (F_API *FSOUND_GetCurrentLevels)(int channel, float *l, float *r);
|
||||
int (F_API *FSOUND_GetNumSubChannels)(int channel);
|
||||
int (F_API *FSOUND_GetSubChannel)(int channel, int subchannel);
|
||||
signed char (F_API *FSOUND_3D_GetAttributes)(int channel, float *pos, float *vel);
|
||||
signed char (F_API *FSOUND_3D_GetMinMaxDistance)(int channel, float *min, float *max);
|
||||
void (F_API *FSOUND_3D_SetDopplerFactor)(float scale);
|
||||
void (F_API *FSOUND_3D_SetDistanceFactor)(float scale);
|
||||
void (F_API *FSOUND_3D_SetRolloffFactor)(float scale);
|
||||
void (F_API *FSOUND_3D_Listener_SetCurrent)(int current, int numlisteners); /* use this if you use multiple listeners / splitscreen */
|
||||
void (F_API *FSOUND_3D_Listener_SetAttributes)(const float *pos, const float *vel, float fx, float fy, float fz, float tx, float ty, float tz);
|
||||
void (F_API *FSOUND_3D_Listener_GetAttributes)(float *pos, float *vel, float *fx, float *fy, float *fz, float *tx, float *ty, float *tz);
|
||||
int (F_API *FSOUND_FX_Enable)(int channel, unsigned int fx); /* See FSOUND_FX_MODES */
|
||||
signed char (F_API *FSOUND_FX_Disable)(int channel);
|
||||
signed char (F_API *FSOUND_FX_SetChorus)(int fxid, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase);
|
||||
signed char (F_API *FSOUND_FX_SetCompressor)(int fxid, float Gain, float Attack, float Release, float Threshold, float Ratio, float Predelay);
|
||||
signed char (F_API *FSOUND_FX_SetDistortion)(int fxid, float Gain, float Edge, float PostEQCenterFrequency, float PostEQBandwidth, float PreLowpassCutoff);
|
||||
signed char (F_API *FSOUND_FX_SetEcho)(int fxid, float WetDryMix, float Feedback, float LeftDelay, float RightDelay, int PanDelay);
|
||||
signed char (F_API *FSOUND_FX_SetFlanger)(int fxid, float WetDryMix, float Depth, float Feedback, float Frequency, int Waveform, float Delay, int Phase);
|
||||
signed char (F_API *FSOUND_FX_SetGargle)(int fxid, int RateHz, int WaveShape);
|
||||
signed char (F_API *FSOUND_FX_SetI3DL2Reverb)(int fxid, int Room, int RoomHF, float RoomRolloffFactor, float DecayTime, float DecayHFRatio, int Reflections, float ReflectionsDelay, int Reverb, float ReverbDelay, float Diffusion, float Density, float HFReference);
|
||||
signed char (F_API *FSOUND_FX_SetParamEQ)(int fxid, float Center, float Bandwidth, float Gain);
|
||||
signed char (F_API *FSOUND_FX_SetWavesReverb)(int fxid, float InGain, float ReverbMix, float ReverbTime, float HighFreqRTRatio);
|
||||
signed char (F_API *FSOUND_Stream_SetBufferSize)(int ms); /* call this before opening streams, not after */
|
||||
FSOUND_STREAM * (F_API *FSOUND_Stream_Open)(const char *name_or_data, unsigned int mode, int offset, int length);
|
||||
FSOUND_STREAM * (F_API *FSOUND_Stream_Create)(FSOUND_STREAMCALLBACK callback, int length, unsigned int mode, int samplerate, void *userdata);
|
||||
signed char (F_API *FSOUND_Stream_Close)(FSOUND_STREAM *stream);
|
||||
int (F_API *FSOUND_Stream_Play)(int channel, FSOUND_STREAM *stream);
|
||||
int (F_API *FSOUND_Stream_PlayEx)(int channel, FSOUND_STREAM *stream, FSOUND_DSPUNIT *dsp, signed char startpaused);
|
||||
signed char (F_API *FSOUND_Stream_Stop)(FSOUND_STREAM *stream);
|
||||
signed char (F_API *FSOUND_Stream_SetPosition)(FSOUND_STREAM *stream, unsigned int position);
|
||||
unsigned int (F_API *FSOUND_Stream_GetPosition)(FSOUND_STREAM *stream);
|
||||
signed char (F_API *FSOUND_Stream_SetTime)(FSOUND_STREAM *stream, int ms);
|
||||
int (F_API *FSOUND_Stream_GetTime)(FSOUND_STREAM *stream);
|
||||
int (F_API *FSOUND_Stream_GetLength)(FSOUND_STREAM *stream);
|
||||
int (F_API *FSOUND_Stream_GetLengthMs)(FSOUND_STREAM *stream);
|
||||
signed char (F_API *FSOUND_Stream_SetMode)(FSOUND_STREAM *stream, unsigned int mode);
|
||||
unsigned int (F_API *FSOUND_Stream_GetMode)(FSOUND_STREAM *stream);
|
||||
signed char (F_API *FSOUND_Stream_SetLoopPoints)(FSOUND_STREAM *stream, unsigned int loopstartpcm, unsigned int loopendpcm);
|
||||
signed char (F_API *FSOUND_Stream_SetLoopCount)(FSOUND_STREAM *stream, int count);
|
||||
int (F_API *FSOUND_Stream_GetOpenState)(FSOUND_STREAM *stream);
|
||||
FSOUND_SAMPLE * (F_API *FSOUND_Stream_GetSample)(FSOUND_STREAM *stream); /* every stream contains a sample to playback on */
|
||||
FSOUND_DSPUNIT * (F_API *FSOUND_Stream_CreateDSP)(FSOUND_STREAM *stream, FSOUND_DSPCALLBACK callback, int priority, void *userdata);
|
||||
signed char (F_API *FSOUND_Stream_SetEndCallback)(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, void *userdata);
|
||||
signed char (F_API *FSOUND_Stream_SetSyncCallback)(FSOUND_STREAM *stream, FSOUND_STREAMCALLBACK callback, void *userdata);
|
||||
FSOUND_SYNCPOINT *(F_API *FSOUND_Stream_AddSyncPoint)(FSOUND_STREAM *stream, unsigned int pcmoffset, const char *name);
|
||||
signed char (F_API *FSOUND_Stream_DeleteSyncPoint)(FSOUND_SYNCPOINT *point);
|
||||
int (F_API *FSOUND_Stream_GetNumSyncPoints)(FSOUND_STREAM *stream);
|
||||
FSOUND_SYNCPOINT *(F_API *FSOUND_Stream_GetSyncPoint)(FSOUND_STREAM *stream, int index);
|
||||
char * (F_API *FSOUND_Stream_GetSyncPointInfo)(FSOUND_SYNCPOINT *point, unsigned int *pcmoffset);
|
||||
signed char (F_API *FSOUND_Stream_SetSubStream)(FSOUND_STREAM *stream, int index);
|
||||
int (F_API *FSOUND_Stream_GetNumSubStreams)(FSOUND_STREAM *stream);
|
||||
signed char (F_API *FSOUND_Stream_SetSubStreamSentence)(FSOUND_STREAM *stream, const int *sentencelist, int numitems);
|
||||
signed char (F_API *FSOUND_Stream_GetNumTagFields)(FSOUND_STREAM *stream, int *num);
|
||||
signed char (F_API *FSOUND_Stream_GetTagField)(FSOUND_STREAM *stream, int num, int *type, char **name, void **value, int *length);
|
||||
signed char (F_API *FSOUND_Stream_FindTagField)(FSOUND_STREAM *stream, int type, const char *name, void **value, int *length);
|
||||
signed char (F_API *FSOUND_Stream_Net_SetProxy)(const char *proxy);
|
||||
signed char (F_API *FSOUND_Stream_Net_SetTimeout)(int timeout);
|
||||
char * (F_API *FSOUND_Stream_Net_GetLastServerStatus)();
|
||||
signed char (F_API *FSOUND_Stream_Net_SetBufferProperties)(int buffersize, int prebuffer_percent, int rebuffer_percent);
|
||||
signed char (F_API *FSOUND_Stream_Net_GetBufferProperties)(int *buffersize, int *prebuffer_percent, int *rebuffer_percent);
|
||||
signed char (F_API *FSOUND_Stream_Net_SetMetadataCallback)(FSOUND_STREAM *stream, FSOUND_METADATACALLBACK callback, void *userdata);
|
||||
signed char (F_API *FSOUND_Stream_Net_GetStatus)(FSOUND_STREAM *stream, int *status, int *bufferpercentused, int *bitrate, unsigned int *flags);
|
||||
signed char (F_API *FSOUND_CD_Play)(char drive, int track);
|
||||
void (F_API *FSOUND_CD_SetPlayMode)(char drive, signed char mode);
|
||||
signed char (F_API *FSOUND_CD_Stop)(char drive);
|
||||
signed char (F_API *FSOUND_CD_SetPaused)(char drive, signed char paused);
|
||||
signed char (F_API *FSOUND_CD_SetVolume)(char drive, int volume);
|
||||
signed char (F_API *FSOUND_CD_SetTrackTime)(char drive, unsigned int ms);
|
||||
signed char (F_API *FSOUND_CD_OpenTray)(char drive, signed char open);
|
||||
signed char (F_API *FSOUND_CD_GetPaused)(char drive);
|
||||
int (F_API *FSOUND_CD_GetTrack)(char drive);
|
||||
int (F_API *FSOUND_CD_GetNumTracks)(char drive);
|
||||
int (F_API *FSOUND_CD_GetVolume)(char drive);
|
||||
int (F_API *FSOUND_CD_GetTrackLength)(char drive, int track);
|
||||
int (F_API *FSOUND_CD_GetTrackTime)(char drive);
|
||||
FSOUND_DSPUNIT * (F_API *FSOUND_DSP_Create)(FSOUND_DSPCALLBACK callback, int priority, void *userdata);
|
||||
void (F_API *FSOUND_DSP_Free)(FSOUND_DSPUNIT *unit);
|
||||
void (F_API *FSOUND_DSP_SetPriority)(FSOUND_DSPUNIT *unit, int priority);
|
||||
int (F_API *FSOUND_DSP_GetPriority)(FSOUND_DSPUNIT *unit);
|
||||
void (F_API *FSOUND_DSP_SetActive)(FSOUND_DSPUNIT *unit, signed char active);
|
||||
signed char (F_API *FSOUND_DSP_GetActive)(FSOUND_DSPUNIT *unit);
|
||||
FSOUND_DSPUNIT * (F_API *FSOUND_DSP_GetClearUnit)();
|
||||
FSOUND_DSPUNIT * (F_API *FSOUND_DSP_GetSFXUnit)();
|
||||
FSOUND_DSPUNIT * (F_API *FSOUND_DSP_GetMusicUnit)();
|
||||
FSOUND_DSPUNIT * (F_API *FSOUND_DSP_GetFFTUnit)();
|
||||
FSOUND_DSPUNIT * (F_API *FSOUND_DSP_GetClipAndCopyUnit)();
|
||||
signed char (F_API *FSOUND_DSP_MixBuffers)(void *destbuffer, void *srcbuffer, int len, int freq, int vol, int pan, unsigned int mode);
|
||||
void (F_API *FSOUND_DSP_ClearMixBuffer)();
|
||||
int (F_API *FSOUND_DSP_GetBufferLength)(); /* Length of each DSP update */
|
||||
int (F_API *FSOUND_DSP_GetBufferLengthTotal)(); /* Total buffer length due to FSOUND_SetBufferSize */
|
||||
float * (F_API *FSOUND_DSP_GetSpectrum)(); /* Array of 512 floats - call FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE)) for this to work. */
|
||||
signed char (F_API *FSOUND_Reverb_SetProperties)(const FSOUND_REVERB_PROPERTIES *prop);
|
||||
signed char (F_API *FSOUND_Reverb_GetProperties)(FSOUND_REVERB_PROPERTIES *prop);
|
||||
signed char (F_API *FSOUND_Reverb_SetChannelProperties)(int channel, const FSOUND_REVERB_CHANNELPROPERTIES *prop);
|
||||
signed char (F_API *FSOUND_Reverb_GetChannelProperties)(int channel, FSOUND_REVERB_CHANNELPROPERTIES *prop);
|
||||
signed char (F_API *FSOUND_Record_SetDriver)(int outputtype);
|
||||
int (F_API *FSOUND_Record_GetNumDrivers)();
|
||||
const char * (F_API *FSOUND_Record_GetDriverName)(int id);
|
||||
int (F_API *FSOUND_Record_GetDriver)();
|
||||
signed char (F_API *FSOUND_Record_StartSample)(FSOUND_SAMPLE *sptr, signed char loop);
|
||||
signed char (F_API *FSOUND_Record_Stop)();
|
||||
int (F_API *FSOUND_Record_GetPosition)();
|
||||
FMUSIC_MODULE * (F_API *FMUSIC_LoadSong)(const char *name);
|
||||
FMUSIC_MODULE * (F_API *FMUSIC_LoadSongEx)(const char *name_or_data, int offset, int length, unsigned int mode, const int *samplelist, int samplelistnum);
|
||||
int (F_API *FMUSIC_GetOpenState)(FMUSIC_MODULE *mod);
|
||||
signed char (F_API *FMUSIC_FreeSong)(FMUSIC_MODULE *mod);
|
||||
signed char (F_API *FMUSIC_PlaySong)(FMUSIC_MODULE *mod);
|
||||
signed char (F_API *FMUSIC_StopSong)(FMUSIC_MODULE *mod);
|
||||
void (F_API *FMUSIC_StopAllSongs)();
|
||||
signed char (F_API *FMUSIC_SetZxxCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback);
|
||||
signed char (F_API *FMUSIC_SetRowCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int rowstep);
|
||||
signed char (F_API *FMUSIC_SetOrderCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int orderstep);
|
||||
signed char (F_API *FMUSIC_SetInstCallback)(FMUSIC_MODULE *mod, FMUSIC_CALLBACK callback, int instrument);
|
||||
signed char (F_API *FMUSIC_SetSample)(FMUSIC_MODULE *mod, int sampno, FSOUND_SAMPLE *sptr);
|
||||
signed char (F_API *FMUSIC_SetUserData)(FMUSIC_MODULE *mod, void *userdata);
|
||||
signed char (F_API *FMUSIC_OptimizeChannels)(FMUSIC_MODULE *mod, int maxchannels, int minvolume);
|
||||
signed char (F_API *FMUSIC_SetReverb)(signed char reverb); /* MIDI only */
|
||||
signed char (F_API *FMUSIC_SetLooping)(FMUSIC_MODULE *mod, signed char looping);
|
||||
signed char (F_API *FMUSIC_SetOrder)(FMUSIC_MODULE *mod, int order);
|
||||
signed char (F_API *FMUSIC_SetPaused)(FMUSIC_MODULE *mod, signed char pause);
|
||||
signed char (F_API *FMUSIC_SetMasterVolume)(FMUSIC_MODULE *mod, int volume);
|
||||
signed char (F_API *FMUSIC_SetMasterSpeed)(FMUSIC_MODULE *mode, float speed);
|
||||
signed char (F_API *FMUSIC_SetPanSeperation)(FMUSIC_MODULE *mod, float pansep);
|
||||
const char * (F_API *FMUSIC_GetName)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetType)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetNumOrders)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetNumPatterns)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetNumInstruments)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetNumSamples)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetNumChannels)(FMUSIC_MODULE *mod);
|
||||
FSOUND_SAMPLE * (F_API *FMUSIC_GetSample)(FMUSIC_MODULE *mod, int sampno);
|
||||
int (F_API *FMUSIC_GetPatternLength)(FMUSIC_MODULE *mod, int orderno);
|
||||
signed char (F_API *FMUSIC_IsFinished)(FMUSIC_MODULE *mod);
|
||||
signed char (F_API *FMUSIC_IsPlaying)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetMasterVolume)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetGlobalVolume)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetOrder)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetPattern)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetSpeed)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetBPM)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetRow)(FMUSIC_MODULE *mod);
|
||||
signed char (F_API *FMUSIC_GetPaused)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetTime)(FMUSIC_MODULE *mod);
|
||||
int (F_API *FMUSIC_GetRealChannel)(FMUSIC_MODULE *mod, int modchannel);
|
||||
unsigned int (F_API *FMUSIC_GetUserData)(FMUSIC_MODULE *mod);
|
||||
} FMOD_INSTANCE;
|
||||
|
||||
|
||||
static FMOD_INSTANCE *FMOD_CreateInstance(char *dllName)
|
||||
{
|
||||
FMOD_INSTANCE *instance;
|
||||
|
||||
instance = (FMOD_INSTANCE *)calloc(sizeof(FMOD_INSTANCE), 1);
|
||||
if (!instance)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
|
||||
instance->module = LoadLibrary(dllName);
|
||||
#else
|
||||
instance->module = dlopen(dllName, RTLD_LAZY);
|
||||
#endif
|
||||
if (!instance->module)
|
||||
{
|
||||
free(instance);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
|
||||
#define F_GETPROC(_x, _y) \
|
||||
{ \
|
||||
*((unsigned int *)&instance->_x) = (unsigned int)GetProcAddress((HMODULE)instance->module, _y); \
|
||||
if (!instance->_x) \
|
||||
{ \
|
||||
FreeLibrary((HMODULE)instance->module); \
|
||||
free(instance); \
|
||||
return NULL; \
|
||||
} \
|
||||
}
|
||||
#else
|
||||
#define F_GETPROC(_x, _y) \
|
||||
{ \
|
||||
char tmp[] = _y; \
|
||||
*(strchr(tmp, '@')) = 0; \
|
||||
*((unsigned int *)&instance->_x) = (unsigned int)dlsym(instance->module, &tmp[1]); \
|
||||
if (!instance->_x) \
|
||||
{ \
|
||||
dlclose(instance->module); \
|
||||
free(instance); \
|
||||
return NULL; \
|
||||
} \
|
||||
}
|
||||
#endif
|
||||
|
||||
F_GETPROC(FSOUND_SetOutput, "_FSOUND_SetOutput@4");
|
||||
F_GETPROC(FSOUND_SetDriver, "_FSOUND_SetDriver@4");
|
||||
F_GETPROC(FSOUND_SetMixer, "_FSOUND_SetMixer@4");
|
||||
F_GETPROC(FSOUND_SetBufferSize, "_FSOUND_SetBufferSize@4");
|
||||
F_GETPROC(FSOUND_SetHWND, "_FSOUND_SetHWND@4");
|
||||
F_GETPROC(FSOUND_SetMinHardwareChannels, "_FSOUND_SetMinHardwareChannels@4");
|
||||
F_GETPROC(FSOUND_SetMaxHardwareChannels, "_FSOUND_SetMaxHardwareChannels@4");
|
||||
F_GETPROC(FSOUND_SetMemorySystem, "_FSOUND_SetMemorySystem@20");
|
||||
F_GETPROC(FSOUND_Init, "_FSOUND_Init@12");
|
||||
F_GETPROC(FSOUND_Close, "_FSOUND_Close@0");
|
||||
F_GETPROC(FSOUND_Update, "_FSOUND_Update@0");
|
||||
F_GETPROC(FSOUND_SetSFXMasterVolume, "_FSOUND_SetSFXMasterVolume@4");
|
||||
F_GETPROC(FSOUND_SetPanSeperation, "_FSOUND_SetPanSeperation@4");
|
||||
F_GETPROC(FSOUND_SetSpeakerMode, "_FSOUND_SetSpeakerMode@4");
|
||||
F_GETPROC(FSOUND_GetError, "_FSOUND_GetError@0");
|
||||
F_GETPROC(FSOUND_GetVersion, "_FSOUND_GetVersion@0");
|
||||
F_GETPROC(FSOUND_GetOutput, "_FSOUND_GetOutput@0");
|
||||
F_GETPROC(FSOUND_GetOutputHandle, "_FSOUND_GetOutputHandle@0");
|
||||
F_GETPROC(FSOUND_GetDriver, "_FSOUND_GetDriver@0");
|
||||
F_GETPROC(FSOUND_GetMixer, "_FSOUND_GetMixer@0");
|
||||
F_GETPROC(FSOUND_GetNumDrivers, "_FSOUND_GetNumDrivers@0");
|
||||
F_GETPROC(FSOUND_GetDriverName, "_FSOUND_GetDriverName@4");
|
||||
F_GETPROC(FSOUND_GetDriverCaps, "_FSOUND_GetDriverCaps@8");
|
||||
F_GETPROC(FSOUND_GetOutputRate, "_FSOUND_GetOutputRate@0");
|
||||
F_GETPROC(FSOUND_GetMaxChannels, "_FSOUND_GetMaxChannels@0");
|
||||
F_GETPROC(FSOUND_GetMaxSamples, "_FSOUND_GetMaxSamples@0");
|
||||
F_GETPROC(FSOUND_GetSpeakerMode, "_FSOUND_GetSpeakerMode@0");
|
||||
F_GETPROC(FSOUND_GetSFXMasterVolume, "_FSOUND_GetSFXMasterVolume@0");
|
||||
F_GETPROC(FSOUND_GetNumHWChannels, "_FSOUND_GetNumHWChannels@12");
|
||||
F_GETPROC(FSOUND_GetChannelsPlaying, "_FSOUND_GetChannelsPlaying@0");
|
||||
F_GETPROC(FSOUND_GetCPUUsage, "_FSOUND_GetCPUUsage@0");
|
||||
F_GETPROC(FSOUND_GetMemoryStats, "_FSOUND_GetMemoryStats@8");
|
||||
F_GETPROC(FSOUND_Sample_Load, "_FSOUND_Sample_Load@20");
|
||||
F_GETPROC(FSOUND_Sample_Alloc, "_FSOUND_Sample_Alloc@28");
|
||||
F_GETPROC(FSOUND_Sample_Free, "_FSOUND_Sample_Free@4");
|
||||
F_GETPROC(FSOUND_Sample_Upload, "_FSOUND_Sample_Upload@12");
|
||||
F_GETPROC(FSOUND_Sample_Lock, "_FSOUND_Sample_Lock@28");
|
||||
F_GETPROC(FSOUND_Sample_Unlock, "_FSOUND_Sample_Unlock@20");
|
||||
F_GETPROC(FSOUND_Sample_SetMode, "_FSOUND_Sample_SetMode@8");
|
||||
F_GETPROC(FSOUND_Sample_SetLoopPoints, "_FSOUND_Sample_SetLoopPoints@12");
|
||||
F_GETPROC(FSOUND_Sample_SetDefaults, "_FSOUND_Sample_SetDefaults@20");
|
||||
F_GETPROC(FSOUND_Sample_SetDefaultsEx, "_FSOUND_Sample_SetDefaultsEx@32");
|
||||
F_GETPROC(FSOUND_Sample_SetMinMaxDistance, "_FSOUND_Sample_SetMinMaxDistance@12");
|
||||
F_GETPROC(FSOUND_Sample_SetMaxPlaybacks, "_FSOUND_Sample_SetMaxPlaybacks@8");
|
||||
F_GETPROC(FSOUND_Sample_Get, "_FSOUND_Sample_Get@4");
|
||||
F_GETPROC(FSOUND_Sample_GetName, "_FSOUND_Sample_GetName@4");
|
||||
F_GETPROC(FSOUND_Sample_GetLength, "_FSOUND_Sample_GetLength@4");
|
||||
F_GETPROC(FSOUND_Sample_GetLoopPoints, "_FSOUND_Sample_GetLoopPoints@12");
|
||||
F_GETPROC(FSOUND_Sample_GetDefaults, "_FSOUND_Sample_GetDefaults@20");
|
||||
F_GETPROC(FSOUND_Sample_GetDefaultsEx, "_FSOUND_Sample_GetDefaultsEx@32");
|
||||
F_GETPROC(FSOUND_Sample_GetMode, "_FSOUND_Sample_GetMode@4");
|
||||
F_GETPROC(FSOUND_Sample_GetMinMaxDistance, "_FSOUND_Sample_GetMinMaxDistance@12");
|
||||
F_GETPROC(FSOUND_PlaySound, "_FSOUND_PlaySound@8");
|
||||
F_GETPROC(FSOUND_PlaySoundEx, "_FSOUND_PlaySoundEx@16");
|
||||
F_GETPROC(FSOUND_StopSound, "_FSOUND_StopSound@4");
|
||||
F_GETPROC(FSOUND_SetFrequency, "_FSOUND_SetFrequency@8");
|
||||
F_GETPROC(FSOUND_SetVolume, "_FSOUND_SetVolume@8");
|
||||
F_GETPROC(FSOUND_SetVolumeAbsolute, "_FSOUND_SetVolumeAbsolute@8");
|
||||
F_GETPROC(FSOUND_SetPan, "_FSOUND_SetPan@8");
|
||||
F_GETPROC(FSOUND_SetSurround, "_FSOUND_SetSurround@8");
|
||||
F_GETPROC(FSOUND_SetMute, "_FSOUND_SetMute@8");
|
||||
F_GETPROC(FSOUND_SetPriority, "_FSOUND_SetPriority@8");
|
||||
F_GETPROC(FSOUND_SetReserved, "_FSOUND_SetReserved@8");
|
||||
F_GETPROC(FSOUND_SetPaused, "_FSOUND_SetPaused@8");
|
||||
F_GETPROC(FSOUND_SetLoopMode, "_FSOUND_SetLoopMode@8");
|
||||
F_GETPROC(FSOUND_SetCurrentPosition, "_FSOUND_SetCurrentPosition@8");
|
||||
F_GETPROC(FSOUND_3D_SetAttributes, "_FSOUND_3D_SetAttributes@12");
|
||||
F_GETPROC(FSOUND_3D_SetMinMaxDistance, "_FSOUND_3D_SetMinMaxDistance@12");
|
||||
F_GETPROC(FSOUND_IsPlaying, "_FSOUND_IsPlaying@4");
|
||||
F_GETPROC(FSOUND_GetFrequency, "_FSOUND_GetFrequency@4");
|
||||
F_GETPROC(FSOUND_GetVolume, "_FSOUND_GetVolume@4");
|
||||
F_GETPROC(FSOUND_GetAmplitude, "_FSOUND_GetAmplitude@4");
|
||||
F_GETPROC(FSOUND_GetPan, "_FSOUND_GetPan@4");
|
||||
F_GETPROC(FSOUND_GetSurround, "_FSOUND_GetSurround@4");
|
||||
F_GETPROC(FSOUND_GetMute, "_FSOUND_GetMute@4");
|
||||
F_GETPROC(FSOUND_GetPriority, "_FSOUND_GetPriority@4");
|
||||
F_GETPROC(FSOUND_GetReserved, "_FSOUND_GetReserved@4");
|
||||
F_GETPROC(FSOUND_GetPaused, "_FSOUND_GetPaused@4");
|
||||
F_GETPROC(FSOUND_GetLoopMode, "_FSOUND_GetLoopMode@4");
|
||||
F_GETPROC(FSOUND_GetCurrentPosition, "_FSOUND_GetCurrentPosition@4");
|
||||
F_GETPROC(FSOUND_GetCurrentSample, "_FSOUND_GetCurrentSample@4");
|
||||
F_GETPROC(FSOUND_GetCurrentLevels, "_FSOUND_GetCurrentLevels@12");
|
||||
F_GETPROC(FSOUND_GetNumSubChannels, "_FSOUND_GetNumSubChannels@4");
|
||||
F_GETPROC(FSOUND_GetSubChannel, "_FSOUND_GetSubChannel@8");
|
||||
F_GETPROC(FSOUND_3D_GetAttributes, "_FSOUND_3D_GetAttributes@12");
|
||||
F_GETPROC(FSOUND_3D_GetMinMaxDistance, "_FSOUND_3D_GetMinMaxDistance@12");
|
||||
F_GETPROC(FSOUND_3D_Listener_SetCurrent, "_FSOUND_3D_Listener_SetCurrent@8");
|
||||
F_GETPROC(FSOUND_3D_Listener_SetAttributes, "_FSOUND_3D_Listener_SetAttributes@32");
|
||||
F_GETPROC(FSOUND_3D_Listener_GetAttributes, "_FSOUND_3D_Listener_GetAttributes@32");
|
||||
F_GETPROC(FSOUND_3D_SetDopplerFactor, "_FSOUND_3D_SetDopplerFactor@4");
|
||||
F_GETPROC(FSOUND_3D_SetDistanceFactor, "_FSOUND_3D_SetDistanceFactor@4");
|
||||
F_GETPROC(FSOUND_3D_SetRolloffFactor, "_FSOUND_3D_SetRolloffFactor@4");
|
||||
F_GETPROC(FSOUND_FX_Enable, "_FSOUND_FX_Enable@8");
|
||||
F_GETPROC(FSOUND_FX_Disable, "_FSOUND_FX_Disable@4");
|
||||
F_GETPROC(FSOUND_FX_SetChorus, "_FSOUND_FX_SetChorus@32");
|
||||
F_GETPROC(FSOUND_FX_SetCompressor, "_FSOUND_FX_SetCompressor@28");
|
||||
F_GETPROC(FSOUND_FX_SetDistortion, "_FSOUND_FX_SetDistortion@24");
|
||||
F_GETPROC(FSOUND_FX_SetEcho, "_FSOUND_FX_SetEcho@24");
|
||||
F_GETPROC(FSOUND_FX_SetFlanger, "_FSOUND_FX_SetFlanger@32");
|
||||
F_GETPROC(FSOUND_FX_SetGargle, "_FSOUND_FX_SetGargle@12");
|
||||
F_GETPROC(FSOUND_FX_SetI3DL2Reverb, "_FSOUND_FX_SetI3DL2Reverb@52");
|
||||
F_GETPROC(FSOUND_FX_SetParamEQ, "_FSOUND_FX_SetParamEQ@16");
|
||||
F_GETPROC(FSOUND_FX_SetWavesReverb, "_FSOUND_FX_SetWavesReverb@20");
|
||||
F_GETPROC(FSOUND_Stream_Open, "_FSOUND_Stream_Open@16");
|
||||
F_GETPROC(FSOUND_Stream_Create, "_FSOUND_Stream_Create@20");
|
||||
F_GETPROC(FSOUND_Stream_Play, "_FSOUND_Stream_Play@8");
|
||||
F_GETPROC(FSOUND_Stream_PlayEx, "_FSOUND_Stream_PlayEx@16");
|
||||
F_GETPROC(FSOUND_Stream_Stop, "_FSOUND_Stream_Stop@4");
|
||||
F_GETPROC(FSOUND_Stream_Close, "_FSOUND_Stream_Close@4");
|
||||
F_GETPROC(FSOUND_Stream_SetEndCallback, "_FSOUND_Stream_SetEndCallback@12");
|
||||
F_GETPROC(FSOUND_Stream_SetSyncCallback, "_FSOUND_Stream_SetSyncCallback@12");
|
||||
F_GETPROC(FSOUND_Stream_GetSample, "_FSOUND_Stream_GetSample@4");
|
||||
F_GETPROC(FSOUND_Stream_CreateDSP, "_FSOUND_Stream_CreateDSP@16");
|
||||
F_GETPROC(FSOUND_Stream_SetBufferSize, "_FSOUND_Stream_SetBufferSize@4");
|
||||
F_GETPROC(FSOUND_Stream_SetPosition, "_FSOUND_Stream_SetPosition@8");
|
||||
F_GETPROC(FSOUND_Stream_GetPosition, "_FSOUND_Stream_GetPosition@4");
|
||||
F_GETPROC(FSOUND_Stream_SetTime, "_FSOUND_Stream_SetTime@8");
|
||||
F_GETPROC(FSOUND_Stream_GetTime, "_FSOUND_Stream_GetTime@4");
|
||||
F_GETPROC(FSOUND_Stream_GetLength, "_FSOUND_Stream_GetLength@4");
|
||||
F_GETPROC(FSOUND_Stream_GetLengthMs, "_FSOUND_Stream_GetLengthMs@4");
|
||||
F_GETPROC(FSOUND_Stream_SetMode, "_FSOUND_Stream_SetMode@8");
|
||||
F_GETPROC(FSOUND_Stream_GetMode, "_FSOUND_Stream_GetMode@4");
|
||||
F_GETPROC(FSOUND_Stream_SetSubStream, "_FSOUND_Stream_SetSubStream@8");
|
||||
F_GETPROC(FSOUND_Stream_GetNumSubStreams, "_FSOUND_Stream_GetNumSubStreams@4");
|
||||
F_GETPROC(FSOUND_Stream_SetSubStreamSentence, "_FSOUND_Stream_SetSubStreamSentence@12");
|
||||
F_GETPROC(FSOUND_Stream_SetLoopPoints, "_FSOUND_Stream_SetLoopPoints@12");
|
||||
F_GETPROC(FSOUND_Stream_SetLoopCount, "_FSOUND_Stream_SetLoopCount@8");
|
||||
F_GETPROC(FSOUND_Stream_AddSyncPoint, "_FSOUND_Stream_AddSyncPoint@12");
|
||||
F_GETPROC(FSOUND_Stream_DeleteSyncPoint, "_FSOUND_Stream_DeleteSyncPoint@4");
|
||||
F_GETPROC(FSOUND_Stream_GetNumSyncPoints, "_FSOUND_Stream_GetNumSyncPoints@4");
|
||||
F_GETPROC(FSOUND_Stream_GetSyncPoint, "_FSOUND_Stream_GetSyncPoint@8");
|
||||
F_GETPROC(FSOUND_Stream_GetSyncPointInfo, "_FSOUND_Stream_GetSyncPointInfo@8");
|
||||
F_GETPROC(FSOUND_Stream_GetOpenState, "_FSOUND_Stream_GetOpenState@4");
|
||||
F_GETPROC(FSOUND_Stream_GetNumTagFields, "_FSOUND_Stream_GetNumTagFields@8");
|
||||
F_GETPROC(FSOUND_Stream_GetTagField, "_FSOUND_Stream_GetTagField@24");
|
||||
F_GETPROC(FSOUND_Stream_FindTagField, "_FSOUND_Stream_FindTagField@20");
|
||||
F_GETPROC(FSOUND_Stream_Net_SetProxy, "_FSOUND_Stream_Net_SetProxy@4");
|
||||
F_GETPROC(FSOUND_Stream_Net_GetLastServerStatus, "_FSOUND_Stream_Net_GetLastServerStatus@0");
|
||||
F_GETPROC(FSOUND_Stream_Net_SetBufferProperties, "_FSOUND_Stream_Net_SetBufferProperties@12");
|
||||
F_GETPROC(FSOUND_Stream_Net_GetBufferProperties, "_FSOUND_Stream_Net_GetBufferProperties@12");
|
||||
F_GETPROC(FSOUND_Stream_Net_SetMetadataCallback, "_FSOUND_Stream_Net_SetMetadataCallback@12");
|
||||
F_GETPROC(FSOUND_Stream_Net_GetStatus, "_FSOUND_Stream_Net_GetStatus@20");
|
||||
F_GETPROC(FSOUND_CD_Play, "_FSOUND_CD_Play@8");
|
||||
F_GETPROC(FSOUND_CD_SetPlayMode, "_FSOUND_CD_SetPlayMode@8");
|
||||
F_GETPROC(FSOUND_CD_Stop, "_FSOUND_CD_Stop@4");
|
||||
F_GETPROC(FSOUND_CD_SetPaused, "_FSOUND_CD_SetPaused@8");
|
||||
F_GETPROC(FSOUND_CD_SetVolume, "_FSOUND_CD_SetVolume@8");
|
||||
F_GETPROC(FSOUND_CD_SetTrackTime, "_FSOUND_CD_SetTrackTime@8");
|
||||
F_GETPROC(FSOUND_CD_OpenTray, "_FSOUND_CD_OpenTray@8");
|
||||
F_GETPROC(FSOUND_CD_GetPaused, "_FSOUND_CD_GetPaused@4");
|
||||
F_GETPROC(FSOUND_CD_GetTrack, "_FSOUND_CD_GetTrack@4");
|
||||
F_GETPROC(FSOUND_CD_GetNumTracks, "_FSOUND_CD_GetNumTracks@4");
|
||||
F_GETPROC(FSOUND_CD_GetVolume, "_FSOUND_CD_GetVolume@4");
|
||||
F_GETPROC(FSOUND_CD_GetTrackLength, "_FSOUND_CD_GetTrackLength@8");
|
||||
F_GETPROC(FSOUND_CD_GetTrackTime, "_FSOUND_CD_GetTrackTime@4");
|
||||
F_GETPROC(FSOUND_DSP_Create, "_FSOUND_DSP_Create@12");
|
||||
F_GETPROC(FSOUND_DSP_Free, "_FSOUND_DSP_Free@4");
|
||||
F_GETPROC(FSOUND_DSP_SetPriority, "_FSOUND_DSP_SetPriority@8");
|
||||
F_GETPROC(FSOUND_DSP_GetPriority, "_FSOUND_DSP_GetPriority@4");
|
||||
F_GETPROC(FSOUND_DSP_SetActive, "_FSOUND_DSP_SetActive@8");
|
||||
F_GETPROC(FSOUND_DSP_GetActive, "_FSOUND_DSP_GetActive@4");
|
||||
F_GETPROC(FSOUND_DSP_GetClearUnit, "_FSOUND_DSP_GetClearUnit@0");
|
||||
F_GETPROC(FSOUND_DSP_GetSFXUnit, "_FSOUND_DSP_GetSFXUnit@0");
|
||||
F_GETPROC(FSOUND_DSP_GetMusicUnit, "_FSOUND_DSP_GetMusicUnit@0");
|
||||
F_GETPROC(FSOUND_DSP_GetClipAndCopyUnit, "_FSOUND_DSP_GetClipAndCopyUnit@0");
|
||||
F_GETPROC(FSOUND_DSP_GetFFTUnit, "_FSOUND_DSP_GetFFTUnit@0");
|
||||
F_GETPROC(FSOUND_DSP_MixBuffers, "_FSOUND_DSP_MixBuffers@28");
|
||||
F_GETPROC(FSOUND_DSP_ClearMixBuffer, "_FSOUND_DSP_ClearMixBuffer@0");
|
||||
F_GETPROC(FSOUND_DSP_GetBufferLength, "_FSOUND_DSP_GetBufferLength@0");
|
||||
F_GETPROC(FSOUND_DSP_GetBufferLengthTotal, "_FSOUND_DSP_GetBufferLengthTotal@0");
|
||||
F_GETPROC(FSOUND_DSP_GetSpectrum, "_FSOUND_DSP_GetSpectrum@0");
|
||||
F_GETPROC(FSOUND_Reverb_SetProperties, "_FSOUND_Reverb_SetProperties@4");
|
||||
F_GETPROC(FSOUND_Reverb_GetProperties, "_FSOUND_Reverb_GetProperties@4");
|
||||
F_GETPROC(FSOUND_Reverb_SetChannelProperties, "_FSOUND_Reverb_SetChannelProperties@8");
|
||||
F_GETPROC(FSOUND_Reverb_GetChannelProperties, "_FSOUND_Reverb_GetChannelProperties@8");
|
||||
F_GETPROC(FSOUND_Record_SetDriver, "_FSOUND_Record_SetDriver@4");
|
||||
F_GETPROC(FSOUND_Record_GetNumDrivers, "_FSOUND_Record_GetNumDrivers@0");
|
||||
F_GETPROC(FSOUND_Record_GetDriverName, "_FSOUND_Record_GetDriverName@4");
|
||||
F_GETPROC(FSOUND_Record_GetDriver, "_FSOUND_Record_GetDriver@0");
|
||||
F_GETPROC(FSOUND_Record_StartSample, "_FSOUND_Record_StartSample@8");
|
||||
F_GETPROC(FSOUND_Record_Stop, "_FSOUND_Record_Stop@0");
|
||||
F_GETPROC(FSOUND_Record_GetPosition, "_FSOUND_Record_GetPosition@0");
|
||||
F_GETPROC(FSOUND_File_SetCallbacks, "_FSOUND_File_SetCallbacks@20");
|
||||
F_GETPROC(FMUSIC_LoadSong, "_FMUSIC_LoadSong@4");
|
||||
F_GETPROC(FMUSIC_LoadSongEx, "_FMUSIC_LoadSongEx@24");
|
||||
F_GETPROC(FMUSIC_GetOpenState, "_FMUSIC_GetOpenState@4");
|
||||
F_GETPROC(FMUSIC_FreeSong, "_FMUSIC_FreeSong@4");
|
||||
F_GETPROC(FMUSIC_PlaySong, "_FMUSIC_PlaySong@4");
|
||||
F_GETPROC(FMUSIC_StopSong, "_FMUSIC_StopSong@4");
|
||||
F_GETPROC(FMUSIC_StopAllSongs, "_FMUSIC_StopAllSongs@0");
|
||||
F_GETPROC(FMUSIC_SetZxxCallback, "_FMUSIC_SetZxxCallback@8");
|
||||
F_GETPROC(FMUSIC_SetRowCallback, "_FMUSIC_SetRowCallback@12");
|
||||
F_GETPROC(FMUSIC_SetOrderCallback, "_FMUSIC_SetOrderCallback@12");
|
||||
F_GETPROC(FMUSIC_SetInstCallback, "_FMUSIC_SetInstCallback@12");
|
||||
F_GETPROC(FMUSIC_SetSample, "_FMUSIC_SetSample@12");
|
||||
F_GETPROC(FMUSIC_SetUserData, "_FMUSIC_SetUserData@8");
|
||||
F_GETPROC(FMUSIC_OptimizeChannels, "_FMUSIC_OptimizeChannels@12");
|
||||
F_GETPROC(FMUSIC_SetReverb, "_FMUSIC_SetReverb@4");
|
||||
F_GETPROC(FMUSIC_SetLooping, "_FMUSIC_SetLooping@8");
|
||||
F_GETPROC(FMUSIC_SetOrder, "_FMUSIC_SetOrder@8");
|
||||
F_GETPROC(FMUSIC_SetPaused, "_FMUSIC_SetPaused@8");
|
||||
F_GETPROC(FMUSIC_SetMasterVolume, "_FMUSIC_SetMasterVolume@8");
|
||||
F_GETPROC(FMUSIC_SetMasterSpeed, "_FMUSIC_SetMasterSpeed@8");
|
||||
F_GETPROC(FMUSIC_SetPanSeperation, "_FMUSIC_SetPanSeperation@8");
|
||||
F_GETPROC(FMUSIC_GetName, "_FMUSIC_GetName@4");
|
||||
F_GETPROC(FMUSIC_GetType, "_FMUSIC_GetType@4");
|
||||
F_GETPROC(FMUSIC_GetNumOrders, "_FMUSIC_GetNumOrders@4");
|
||||
F_GETPROC(FMUSIC_GetNumPatterns, "_FMUSIC_GetNumPatterns@4");
|
||||
F_GETPROC(FMUSIC_GetNumInstruments, "_FMUSIC_GetNumInstruments@4");
|
||||
F_GETPROC(FMUSIC_GetNumSamples, "_FMUSIC_GetNumSamples@4");
|
||||
F_GETPROC(FMUSIC_GetNumChannels, "_FMUSIC_GetNumChannels@4");
|
||||
F_GETPROC(FMUSIC_GetSample, "_FMUSIC_GetSample@8");
|
||||
F_GETPROC(FMUSIC_GetPatternLength, "_FMUSIC_GetPatternLength@8");
|
||||
F_GETPROC(FMUSIC_IsFinished, "_FMUSIC_IsFinished@4");
|
||||
F_GETPROC(FMUSIC_IsPlaying, "_FMUSIC_IsPlaying@4");
|
||||
F_GETPROC(FMUSIC_GetMasterVolume, "_FMUSIC_GetMasterVolume@4");
|
||||
F_GETPROC(FMUSIC_GetGlobalVolume, "_FMUSIC_GetGlobalVolume@4");
|
||||
F_GETPROC(FMUSIC_GetOrder, "_FMUSIC_GetOrder@4");
|
||||
F_GETPROC(FMUSIC_GetPattern, "_FMUSIC_GetPattern@4");
|
||||
F_GETPROC(FMUSIC_GetSpeed, "_FMUSIC_GetSpeed@4");
|
||||
F_GETPROC(FMUSIC_GetBPM, "_FMUSIC_GetBPM@4");
|
||||
F_GETPROC(FMUSIC_GetRow, "_FMUSIC_GetRow@4");
|
||||
F_GETPROC(FMUSIC_GetPaused, "_FMUSIC_GetPaused@4");
|
||||
F_GETPROC(FMUSIC_GetTime, "_FMUSIC_GetTime@4");
|
||||
F_GETPROC(FMUSIC_GetRealChannel, "_FMUSIC_GetRealChannel@8");
|
||||
F_GETPROC(FMUSIC_GetUserData, "_FMUSIC_GetUserData@4");
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
static void FMOD_FreeInstance(FMOD_INSTANCE *instance)
|
||||
{
|
||||
if (instance)
|
||||
{
|
||||
if (instance->module)
|
||||
{
|
||||
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(_WIN64)
|
||||
FreeLibrary((HMODULE)instance->module);
|
||||
#else
|
||||
dlclose(instance->module);
|
||||
#endif
|
||||
}
|
||||
free(instance);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
#if !defined(WINCOMPAT_INCLUDED) && !defined(PLATFORM_WINDOWS) && !defined(WIN32) && !defined(WINDOWS) && !defined(__WIN32__)
|
||||
#define WINCOMPAT_INCLUDED
|
||||
|
||||
/**
|
||||
*
|
||||
* Author: Magnus Naeslund (mag@fbab.net, mag@bahnhof.se)
|
||||
* (c) 2000 Magnus Naeslund, all rights reserved
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <termios.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#define _kbhit kbhit
|
||||
#define stricmp strcasecmp
|
||||
#define strnicmp strncasecmp
|
||||
|
||||
#define Sleep(x) usleep((x)*1000)
|
||||
|
||||
static int inited=0;
|
||||
static struct termios ori;
|
||||
|
||||
static void tcatexit(){
|
||||
tcsetattr(0,0,&ori);
|
||||
}
|
||||
|
||||
static void init_terminal(){
|
||||
struct termios t;
|
||||
tcgetattr(0,&t);
|
||||
tcgetattr(0,&ori);
|
||||
t.c_lflag &= ~(ICANON);
|
||||
tcsetattr(0,0,&t);
|
||||
atexit(tcatexit);
|
||||
}
|
||||
|
||||
static inline int kbhit(){
|
||||
fd_set rfds;
|
||||
struct timeval tv;
|
||||
|
||||
if (!inited){
|
||||
inited=1;
|
||||
init_terminal();
|
||||
}
|
||||
|
||||
FD_ZERO(&rfds);
|
||||
FD_SET(0, &rfds);
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 10*1000;
|
||||
return select(1, &rfds, NULL, NULL, &tv)>0;
|
||||
}
|
||||
|
||||
static inline int getch(){
|
||||
fd_set rfds;
|
||||
|
||||
if (!inited){
|
||||
inited=1;
|
||||
init_terminal();
|
||||
}
|
||||
|
||||
FD_ZERO(&rfds);
|
||||
FD_SET(0, &rfds);
|
||||
if (select(1, &rfds, NULL, NULL, NULL)>0)
|
||||
return getchar();
|
||||
else{
|
||||
printf("wincompat.h: select() on fd 0 failed\n");
|
||||
return 0xDeadBeef;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,914 @@
|
||||
Attribute VB_Name = "FMod"
|
||||
Option Explicit
|
||||
|
||||
'
|
||||
'FMOD VB6 Module
|
||||
'
|
||||
|
||||
Public Const FMOD_VERSION = 3.75
|
||||
|
||||
'************
|
||||
'* Enums
|
||||
'************
|
||||
|
||||
|
||||
' FMOD_ERRORS
|
||||
' On failure of commands in FMOD, use FSOUND_GetError to attain what happened.
|
||||
'
|
||||
Public Enum FMOD_ERRORS
|
||||
FMOD_ERR_NONE ' No errors
|
||||
FMOD_ERR_BUSY ' Cannot call this command after FSOUND_Init. Call FSOUND_Close first.
|
||||
FMOD_ERR_UNINITIALIZED ' This command failed because FSOUND_Init was not called
|
||||
FMOD_ERR_INIT ' Error initializing output device.
|
||||
FMOD_ERR_ALLOCATED ' Error initializing output device, but more specifically, the output device is already in use and cannot be reused.
|
||||
FMOD_ERR_PLAY ' Playing the sound failed.
|
||||
FMOD_ERR_OUTPUT_FORMAT ' Soundcard does not support the features needed for this soundsystem (16bit stereo output)
|
||||
FMOD_ERR_COOPERATIVELEVEL ' Error setting cooperative level for hardware.
|
||||
FMOD_ERR_CREATEBUFFER ' Error creating hardware sound buffer.
|
||||
FMOD_ERR_FILE_NOTFOUND ' File not found
|
||||
FMOD_ERR_FILE_FORMAT ' Unknown file format
|
||||
FMOD_ERR_FILE_BAD ' Error loading file
|
||||
FMOD_ERR_MEMORY ' Not enough memory
|
||||
FMOD_ERR_VERSION ' The version number of this file format is not supported
|
||||
FMOD_ERR_INVALID_PARAM ' An invalid parameter was passed to this function
|
||||
FMOD_ERR_NO_EAX ' Tried to use an EAX command on a non EAX enabled channel or output.
|
||||
FMOD_ERR_CHANNEL_ALLOC ' Failed to allocate a new channel
|
||||
FMOD_ERR_RECORD ' Recording is not supported on this machine
|
||||
FMOD_ERR_MEDIAPLAYER ' Windows Media Player not installed so cannot play wma or use internet streaming.
|
||||
FMOD_ERR_CDDEVICE ' An error occured trying to open the specified CD device
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_OUTPUTTYPES
|
||||
' These output types are used with FSOUND_SetOutput, to choose which output driver to use.
|
||||
' FSOUND_OUTPUT_DSOUND will not support hardware 3d acceleration if the sound card driver
|
||||
' does not support DirectX 6 Voice Manager Extensions.
|
||||
' FSOUND_OUTPUT_WINMM is recommended for NT and CE.
|
||||
'
|
||||
Public Enum FSOUND_OUTPUTTYPES
|
||||
FSOUND_OUTPUT_NOSOUND ' NoSound driver, all calls to this succeed but do nothing.
|
||||
FSOUND_OUTPUT_WINMM ' Windows Multimedia driver.
|
||||
FSOUND_OUTPUT_DSOUND ' DirectSound driver. You need this to get EAX2 or EAX3 support, or FX api support.
|
||||
FSOUND_OUTPUT_A3D ' A3D driver.
|
||||
|
||||
FSOUND_OUTPUT_OSS ' Linux/Unix OSS (Open Sound System) driver, i.e. the kernel sound drivers.
|
||||
FSOUND_OUTPUT_ESD ' Linux/Unix ESD (Enlightment Sound Daemon) driver.
|
||||
FSOUND_OUTPUT_ALSA ' Linux Alsa driver.
|
||||
|
||||
FSOUND_OUTPUT_ASIO ' Low latency ASIO driver
|
||||
FSOUND_OUTPUT_XBOX ' Xbox driver
|
||||
FSOUND_OUTPUT_PS2 ' PlayStation 2 driver
|
||||
FSOUND_OUTPUT_MAC ' Mac SoundMager driver
|
||||
FSOUND_OUTPUT_GC ' Gamecube driver
|
||||
FSOUND_OUTPUT_PSP ' PlayStation Portable driver
|
||||
|
||||
FSOUND_OUTPUT_NOSOUND_NONREALTIME ' This is the same as nosound, but the sound generation is driven by FSOUND_Update
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_MIXERTYPES
|
||||
' These mixer types are used with FSOUND_SetMixer, to choose which mixer to use, or to act
|
||||
' upon for other reasons using FSOUND_GetMixer.
|
||||
' It is not nescessary to set the mixer. FMOD will autodetect the best mixer for you.
|
||||
'
|
||||
Public Enum FSOUND_MIXERTYPES
|
||||
FSOUND_MIXER_AUTODETECT ' CE/PS2 Only - Non interpolating/low quality mixer
|
||||
FSOUND_MIXER_BLENDMODE ' removed / obsolete.
|
||||
FSOUND_MIXER_MMXP5 ' removed / obsolete.
|
||||
FSOUND_MIXER_MMXP6 ' removed / obsolete.
|
||||
|
||||
FSOUND_MIXER_QUALITY_AUTODETECT ' All platforms - Autodetect the fastest quality mixer based on your cpu.
|
||||
FSOUND_MIXER_QUALITY_FPU ' Win32/Linux only - Interpolating/volume ramping FPU mixer.
|
||||
FSOUND_MIXER_QUALITY_MMXP5 ' Win32/Linux only - Interpolating/volume ramping FPU mixer.
|
||||
FSOUND_MIXER_QUALITY_MMXP6 ' Win32/Linux only - Interpolating/volume ramping ppro+ MMX mixer.
|
||||
|
||||
FSOUND_MIXER_MONO ' CE/PS2 only - MONO non interpolating/low quality mixer. For speed
|
||||
FSOUND_MIXER_QUALITY_MONO ' CE/PS2 only - MONO Interpolating mixer. For speed
|
||||
End Enum
|
||||
|
||||
|
||||
' FMUSIC_TYPES
|
||||
' These definitions describe the type of song being played.
|
||||
' See FMUSIC_GetType
|
||||
'
|
||||
Public Enum FMUSIC_TYPES
|
||||
FMUSIC_TYPE_NONE
|
||||
FMUSIC_TYPE_MOD 'Protracker / Fasttracker
|
||||
FMUSIC_TYPE_S3M 'ScreamTracker 3
|
||||
FMUSIC_TYPE_XM 'FastTracker 2
|
||||
FMUSIC_TYPE_IT 'Impulse Tracker.
|
||||
FMUSIC_TYPE_MIDI 'MIDI file
|
||||
FMUSIC_TYPE_FSB 'FMOD Sample Bank file
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_DSP_PRIORITIES
|
||||
' These default priorities are used by FMOD internal system DSP units. They describe the
|
||||
' position of the DSP chain, and the order of how audio processing is executed.
|
||||
' You can actually through the use of FSOUND_DSP_GetxxxUnit (where xxx is the name of the DSP
|
||||
' unit), disable or even change the priority of a DSP unit.
|
||||
'
|
||||
Public Enum FSOUND_DSP_PRIORITIES
|
||||
FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT = 0 'DSP CLEAR unit - done first
|
||||
FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT = 100 'DSP SFX unit - done second
|
||||
FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT = 200 'DSP MUSIC unit - done third
|
||||
FSOUND_DSP_DEFAULTPRIORITY_USER = 300 'User priority, use this as reference for your own dsp units
|
||||
FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT = 900 'This reads data for FSOUND_DSP_GetSpectrum, so it comes after user units
|
||||
FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT = 1000 'DSP CLIP AND COPY unit - last
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_CAPS
|
||||
' Driver description bitfields. Use FSOUND_Driver_GetCaps to determine if a driver enumerated
|
||||
' has the settings you are after. The enumerated driver depends on the output mode, see
|
||||
' FSOUND_OUTPUTTYPES
|
||||
'
|
||||
Public Enum FSOUND_CAPS
|
||||
FSOUND_CAPS_HARDWARE = &H1 ' This driver supports hardware accelerated 3d sound.
|
||||
FSOUND_CAPS_EAX2 = &H2 ' This driver supports EAX 2 reverb
|
||||
FSOUND_CAPS_EAX3 = &H10 ' This driver supports EAX 3 reverb
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_MODES
|
||||
' Sample description bitfields, OR them together for loading and describing samples.
|
||||
' NOTE. If the file format being loaded already has a defined format, such as WAV or MP3, then
|
||||
' trying to override the pre-defined format with a new set of format flags will not work. For
|
||||
' example, an 8 bit WAV file will not load as 16bit if you specify FSOUND_16BITS. It will just
|
||||
' ignore the flag and go ahead loading it as 8bits. For these type of formats the only flags
|
||||
' you can specify that will really alter the behaviour of how it is loaded, are the following.
|
||||
'
|
||||
' Looping behaviour - FSOUND_LOOP_OFF, FSOUND_LOOP_NORMAL, FSOUND_LOOP_BIDI
|
||||
' Load destination - FSOUND_HW3D, FSOUND_HW2D, FSOUND_2D
|
||||
' Loading behaviour - FSOUND_NONBLOCKING, FSOUND_LOADMEMORY, FSOUND_LOADRAW, FSOUND_MPEGACCURATE, FSOUND_MPEGHALFRATE, FSOUND_FORCEMONO
|
||||
' Playback behaviour - FSOUND_STREAMABLE, FSOUND_ENABLEFX
|
||||
' PlayStation 2 only - FSOUND_USECORE0, FSOUND_USECORE1, FSOUND_LOADMEMORYIOP
|
||||
'
|
||||
' See flag descriptions for what these do.
|
||||
'
|
||||
Public Enum FSOUND_MODES
|
||||
FSOUND_LOOP_OFF = &H1 ' For non looping samples.
|
||||
FSOUND_LOOP_NORMAL = &H2 ' For forward looping samples.
|
||||
FSOUND_LOOP_BIDI = &H4 ' For bidirectional looping samples. (no effect if in hardware).
|
||||
FSOUND_8BITS = &H8 ' For 8 bit samples.
|
||||
FSOUND_16BITS = &H10 ' For 16 bit samples.
|
||||
FSOUND_MONO = &H20 ' For mono samples.
|
||||
FSOUND_STEREO = &H40 ' For stereo samples.
|
||||
FSOUND_UNSIGNED = &H80 ' For source data containing unsigned samples.
|
||||
FSOUND_SIGNED = &H100 ' For source data containing signed data.
|
||||
FSOUND_DELTA = &H200 ' For source data stored as delta values.
|
||||
FSOUND_IT214 = &H400 ' For source data stored using IT214 compression.
|
||||
FSOUND_IT215 = &H800 ' For source data stored using IT215 compression.
|
||||
FSOUND_HW3D = &H1000 ' Attempts to make samples use 3d hardware acceleration. (if the card supports it)
|
||||
FSOUND_2D = &H2000 ' Ignores any 3d processing. overrides FSOUND_HW3D. Located in software.
|
||||
FSOUND_STREAMABLE = &H4000 ' For realtime streamable samples. If you dont supply this sound may come out corrupted.
|
||||
FSOUND_LOADMEMORY = &H8000 ' For FSOUND_Sample_Load - name will be interpreted as a pointer to data
|
||||
FSOUND_LOADRAW = &H10000 ' For FSOUND_Sample_Load/FSOUND_Stream_Open - will ignore file format and treat as raw pcm.
|
||||
FSOUND_MPEGACCURATE = &H20000 ' For FSOUND_Stream_Open - scans MP2/MP3 (VBR also) for accurate FSOUND_Stream_GetLengthMs/FSOUND_Stream_SetTime.
|
||||
FSOUND_FORCEMONO = &H40000 ' For forcing stereo streams and samples to be mono - needed with FSOUND_HW3D - incurs speed hit
|
||||
FSOUND_HW2D = &H80000 ' 2d hardware sounds. allows hardware specific effects
|
||||
FSOUND_ENABLEFX = &H100000 ' Allows DX8 FX to be played back on a sound. Requires DirectX 8 - Note these sounds cant be played more than once, or have a changing frequency
|
||||
FSOUND_MPEGHALFRATE = &H200000 ' For FMODCE only - decodes mpeg streams using a lower quality decode, but faster execution
|
||||
FSOUND_XADPCM = &H400000 ' For XBOX only - Describes a user sample that its contents are compressed as XADPCM
|
||||
FSOUND_VAG = &H800000 ' For PS2 only - Describes a user sample that its contents are compressed as Sony VAG format.
|
||||
FSOUND_NONBLOCKING = &H1000000 ' For FSOUND_Stream_Open - Causes stream to open in the background and not block the foreground app - stream plays only when ready.
|
||||
FSOUND_GCADPCM = &H2000000 ' For Gamecube only - Contents are compressed as Gamecube DSP-ADPCM format
|
||||
FSOUND_MULTICHANNEL = &H4000000 ' For PS2 only - Contents are interleaved into a multi-channel (more than stereo) format
|
||||
FSOUND_USECORE0 = &H8000000 ' For PS2 only - Sample/Stream is forced to use hardware voices 00-23
|
||||
FSOUND_USECORE1 = &H10000000 ' For PS2 only - Sample/Stream is forced to use hardware voices 24-47
|
||||
FSOUND_LOADMEMORYIOP = &H20000000 ' For PS2 only - "name" will be interpreted as a pointer to data for streaming and samples. The address provided will be an IOP address
|
||||
FSOUND_IGNORETAGS = &H40000000 ' Skips id3v2 etc tag checks when opening a stream, to reduce seek/read overhead when opening files (helps with CD performance)
|
||||
FSOUND_STREAM_NET = &H80000000 ' Specifies an internet stream
|
||||
|
||||
FSOUND_NORMAL = FSOUND_16BITS Or FSOUND_SIGNED Or FSOUND_MONO
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_CDPLAYMODES
|
||||
' Playback method for a CD Audio track, with FSOUND_CD_SetPlayMode
|
||||
'
|
||||
Public Enum FSOUND_CDPLAYMODES
|
||||
FSOUND_CD_PLAYCONTINUOUS 'Starts from the current track and plays to end of CD.
|
||||
FSOUND_CD_PLAYONCE 'Plays the specified track then stops.
|
||||
FSOUND_CD_PLAYLOOPED 'Plays the specified track looped, forever until stopped manually.
|
||||
FSOUND_CD_PLAYRANDOM 'Plays tracks in random order
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_CHANNELSAMPLEMODE
|
||||
' Miscellaneous values for FMOD functions.
|
||||
' FSOUND_PlaySound, FSOUND_PlaySoundEx, FSOUND_Sample_Alloc, FSOUND_Sample_Load, FSOUND_SetPan
|
||||
'
|
||||
Public Enum FSOUND_CHANNELSAMPLEMODE
|
||||
FSOUND_FREE = -1 ' definition for dynamically allocated channel or sample
|
||||
FSOUND_UNMANAGED = -2 ' definition for allocating a sample that is NOT managed by fsound
|
||||
FSOUND_ALL = -3 ' for a channel index or sample index, this flag affects ALL channels or samples available! Not supported by all functions.
|
||||
FSOUND_STEREOPAN = -1 ' definition for full middle stereo volume on both channels
|
||||
FSOUND_SYSTEMCHANNEL = -1000 ' special channel ID for channel based functions that want to alter the global FSOUND software mixing output channel
|
||||
FSOUND_SYSTEMSAMPLE = -1000 ' special sample ID for all sample based functions that want to alter the global FSOUND software mixing output sample
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_REVERB_PROPERTIES
|
||||
' FSOUND_Reverb_SetProperties, FSOUND_Reverb_GetProperties, FSOUND_REVERB_PROPERTYFLAGS
|
||||
'
|
||||
Public Type FSOUND_REVERB_PROPERTIES
|
||||
' MIN MAX DEFAULT DESCRIPTION
|
||||
Environment As Long ' 0 25 0 sets all listener properties
|
||||
EnvSize As Single ' 1.0 100.0 7.5 environment size in meters
|
||||
EnvDiffusion As Single ' 0.0 1.0 1.0 environment diffusion
|
||||
Room As Long ' -10000 0 -1000 room effect level (at mid frequencies)
|
||||
RoomHF As Long ' -10000 0 -100 relative room effect level at high frequencies
|
||||
RoomLF As Long ' -10000 0 0 relative room effect level at low frequencies
|
||||
DecayTime As Single ' 0.1 20.0 1.49 reverberation decay time at mid frequencies
|
||||
DecayHFRatio As Single ' 0.1 2.0 0.83 high-frequency to mid-frequency decay time ratio
|
||||
DecayLFRatio As Single ' 0.1 2.0 1.0 low-frequency to mid-frequency decay time ratio
|
||||
Reflections As Long ' -10000 1000 -2602 early reflections level relative to room effect
|
||||
ReflectionsDelay As Single ' 0.0 0.3 0.007 initial reflection delay time
|
||||
ReflectionsPan(3) As Single ' 0,0,0 early reflections panning vector
|
||||
Reverb As Long ' -1000 2000 200 late reverberation level relative to room effect
|
||||
ReverbDelay As Single ' 0.0 0.1 0.011 late reverberation delay time relative to initial reflection
|
||||
ReverbPan(3) As Single ' 0,0,0 late reverberation panning vector
|
||||
EchoTime As Single ' .075 0.25 0.25 echo time
|
||||
EchoDepth As Single ' 0.0 1.0 0.0 echo depth
|
||||
ModulationTime As Single ' 0.04 4.0 0.25 modulation time
|
||||
ModulationDepth As Single ' 0.0 1.0 0.0 modulation depth
|
||||
AirAbsorptionHF As Single ' -100 0.0 -5.0 change in level per meter at high frequencies
|
||||
HFReference As Single ' 1000.0 20000 5000.0 reference high frequency (hz)
|
||||
LFReference As Single ' 20.0 1000.0 250.0 reference low frequency (hz)
|
||||
RoomRolloffFactor As Single ' 0.0 10.0 0.0 like FSOUND_3D_SetRolloffFactor but for room effect
|
||||
Diffusion As Single ' 0.0 100.0 100.0 Value that controls the echo density in the late reverberation decay. (xbox only)
|
||||
Density As Single ' 0.0 100.0 100.0 Value that controls the modal density in the late reverberation decay (xbox only)
|
||||
flags As Long ' modifies the behavior of above properties
|
||||
End Type
|
||||
|
||||
|
||||
' FSOUND_REVERB_FLAGS
|
||||
' Values for the Flags member of the FSOUND_REVERB_PROPERTIES structure.
|
||||
'
|
||||
Public Enum FSOUND_REVERB_PROPERTYFLAGS
|
||||
FSOUND_REVERBFLAGS_DECAYTIMESCALE = &H1 ' EnvironmentSize affects reverberation decay time
|
||||
FSOUND_REVERBFLAGS_REFLECTIONSSCALE = &H2 ' EnvironmentSize affects reflection level
|
||||
FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE = &H4 ' EnvironmentSize affects initial reflection delay time
|
||||
FSOUND_REVERBFLAGS_REVERBSCALE = &H8 ' EnvironmentSize affects reflections level
|
||||
FSOUND_REVERBFLAGS_REVERBDELAYSCALE = &H10 ' EnvironmentSize affects late reverberation delay time
|
||||
FSOUND_REVERBFLAGS_DECAYHFLIMIT = &H20 ' AirAbsorptionHF affects DecayHFRatio
|
||||
FSOUND_REVERBFLAGS_ECHOTIMESCALE = &H40 ' EnvironmentSize affects echo time
|
||||
FSOUND_REVERBFLAGS_MODULATIONTIMESCALE = &H80 ' EnvironmentSize affects modulation time
|
||||
FSOUND_REVERB_FLAGS_CORE0 = &H100 ' PS2 Only - Reverb is applied to CORE0 (hw voices 0-23)
|
||||
FSOUND_REVERB_FLAGS_CORE1 = &H200 ' PS2 Only - Reverb is applied to CORE1 (hw voices 24-47)
|
||||
FSOUND_REVERBFLAGS_DEFAULT = FSOUND_REVERBFLAGS_DECAYTIMESCALE Or FSOUND_REVERBFLAGS_REFLECTIONSSCALE Or FSOUND_REVERBFLAGS_REFLECTIONSDELAYSCALE Or FSOUND_REVERBFLAGS_REVERBSCALE Or FSOUND_REVERBFLAGS_REVERBDELAYSCALE Or FSOUND_REVERBFLAGS_DECAYHFLIMIT Or FSOUND_REVERB_FLAGS_CORE0 Or FSOUND_REVERB_FLAGS_CORE1
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_REVERB_CHANNELPROPERTIES
|
||||
' Structure defining the properties for a reverb source, related to a FSOUND channel.
|
||||
' FSOUND_Reverb_SetEnvironment, FSOUND_Reverb_SetEnvironmentAdvanced
|
||||
'
|
||||
Public Type FSOUND_REVERB_CHANNELPROPERTIES
|
||||
Direct As Long ' direct path level (at low and mid frequencies)
|
||||
DirectHF As Long ' relative direct path level at high frequencies
|
||||
Room As Long ' room effect level (at low and mid frequencies)
|
||||
RoomHF As Long ' relative room effect level at high frequencies
|
||||
Obstruction As Long ' main obstruction control (attenuation at high frequencies)
|
||||
ObstructionLFRatio As Single ' obstruction low-frequency level re. main control
|
||||
Occlusion As Long ' main occlusion control (attenuation at high frequencies)
|
||||
OcclustionLFRatio As Single ' occlusion low-frequency level re. main control
|
||||
OcclusionRoomRatio As Single ' relative occlusion control for room effect
|
||||
OcclusionDirectRatio As Single ' relative occlusion control for direct path
|
||||
Exclusion As Long ' main exlusion control (attenuation at high frequencies)
|
||||
ExclusionLFRatio As Single ' exclusion low-frequency level re. main control
|
||||
OutsideVolumeHF As Long ' outside sound cone level at high frequencies
|
||||
DopplerFactor As Single ' like DS3D flDopplerFactor but per source
|
||||
RolloffFactor As Single ' like DS3D flRolloffFactor but per source
|
||||
RoomRolloffFactor As Single ' like DS3D flRolloffFactor but for room effect
|
||||
AirAbsorptionFactor As Single ' multiplies AirAbsorptionHF member of FSOUND_REVERB_PROPERTIES
|
||||
flags As Long ' modifies the behavior of properties
|
||||
End Type
|
||||
|
||||
|
||||
' FSOUND_REVERB_CHANNELFLAGS
|
||||
' Values for the Flags member of the FSOUND_REVERB_CHANNELPROPERTIES structure.
|
||||
'
|
||||
Public Enum FSOUND_REVERB_CHANNELFLAGS
|
||||
FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO = &H1 ' Automatic setting of Direct due to distance from listener
|
||||
FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO = &H2 ' Automatic setting of Room due to distance from listener
|
||||
FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO = &H4 ' Automatic setting of RoomHF due to distance from listener
|
||||
FSOUND_REVERB_CHANNELFLAGS_DEFAULT = FSOUND_REVERB_CHANNELFLAGS_DIRECTHFAUTO Or FSOUND_REVERB_CHANNELFLAGS_ROOMAUTO Or FSOUND_REVERB_CHANNELFLAGS_ROOMHFAUTO
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_FX_MODES
|
||||
' These values are used with FSOUND_FX_Enable to enable DirectX 8 FX for a channel.
|
||||
'
|
||||
Public Enum FSOUND_FX_MODES
|
||||
FSOUND_FX_CHORUS
|
||||
FSOUND_FX_COMPRESSOR
|
||||
FSOUND_FX_DISTORTION
|
||||
FSOUND_FX_ECHO
|
||||
FSOUND_FX_FLANGER
|
||||
FSOUND_FX_GARGLE
|
||||
FSOUND_FX_I3DL2REVERB
|
||||
FSOUND_FX_PARAMEQ
|
||||
FSOUND_FX_WAVES_REVERB
|
||||
End Enum
|
||||
|
||||
|
||||
'FSOUND_SPEAKERMODES
|
||||
'These are speaker types defined for use with the FSOUND_SetSpeakerMode command.
|
||||
'Note - Only reliably works with FSOUND_OUTPUT_DSOUND or FSOUND_OUTPUT_XBOX output modes. Other output modes will only
|
||||
'interpret FSOUND_SPEAKERMODE_MONO and set everything else to be stereo.
|
||||
'Using either DolbyDigital or DTS will use whatever 5.1 digital mode is available if destination hardware is unsure.
|
||||
'
|
||||
Public Enum FSOUND_SPEAKERMODES
|
||||
FSOUND_SPEAKERMODE_DOLBYDIGITAL ' The audio is played through a speaker arrangement of surround speakers with a subwoofer.
|
||||
FSOUND_SPEAKERMODE_HEADPHONE ' The speakers are headphones.
|
||||
FSOUND_SPEAKERMODE_MONO ' The speakers are monaural.
|
||||
FSOUND_SPEAKERMODE_QUAD ' The speakers are quadraphonic.
|
||||
FSOUND_SPEAKERMODE_STEREO ' The speakers are stereo (default value).
|
||||
FSOUND_SPEAKERMODE_SURROUND ' The speakers are surround sound.
|
||||
FSOUND_SPEAKERMODE_DTS ' The audio is played through a speaker arrangement of surround speakers with a subwoofer.
|
||||
FSOUND_SPEAKERMODE_PROLOGIC2 ' Dolby Prologic 2. Playstation 2 and Gamecube only
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_INIT_FLAGS
|
||||
' Initialization flags. Use them with FSOUND_Init in the flags parameter to change various behaviour.
|
||||
' FSOUND_INIT_ENABLESYSTEMCHANNELFX Is an init mode which enables the FSOUND mixer buffer to be affected by DirectX 8 effects.
|
||||
' Note that due to limitations of DirectSound, FSOUND_Init may fail if this is enabled because the buffersize is too small.
|
||||
' This can be fixed with FSOUND_SetBufferSize. Increase the BufferSize until it works.
|
||||
' When it is enabled you can use the FSOUND_FX api, and use FSOUND_SYSTEMCHANNEL as the channel id when setting parameters.
|
||||
'
|
||||
Public Enum FSOUND_INITMODES
|
||||
FSOUND_INIT_USEDEFAULTMIDISYNTH = &H1 'Causes MIDI playback to force software decoding.
|
||||
FSOUND_INIT_GLOBALFOCUS = &H2 'For DirectSound output - sound is not muted when window is out of focus.
|
||||
FSOUND_INIT_ENABLESYSTEMCHANNELFX = &H4 'For DirectSound output - Allows FSOUND_FX api to be used on global software mixer output!
|
||||
FSOUND_INIT_ACCURATEVULEVELS = &H8 'This latency adjusts FSOUND_GetCurrentLevels, but incurs a small cpu and memory hit
|
||||
FSOUND_INIT_PS2_DISABLECORE0REVERB = &H10 'PS2 only - Disable reverb on CORE 0 to regain SRAM
|
||||
FSOUND_INIT_PS2_DISABLECORE1REVERB = &H20 'PS2 only - Disable reverb on CORE 1 to regain SRAM
|
||||
FSOUND_INIT_PS2_SWAPDMACORES = &H40 'PS2 only - By default FMOD uses DMA CH0 for mixing, CH1 for uploads, this flag swaps them around
|
||||
FSOUND_INIT_DONTLATENCYADJUST = &H80 'Callbacks are not latency adjusted, and are called at mix time. Also information functions are immediate
|
||||
FSOUND_INIT_GC_INITLIBS = &H100 'Gamecube only - Initializes GC audio libraries
|
||||
FSOUND_INIT_STREAM_FROM_MAIN_THREAD = &H200 'Turns off fmod streamer thread, and makes streaming update from FSOUND_Update called by the user
|
||||
FSOUND_INIT_PS2_USEVOLUMERAMPING = &H400 'PS2 only - Turns on volume ramping system to remove hardware clicks.
|
||||
FSOUND_INIT_DSOUND_DEFERRED = &H800 'Win32 only - For DirectSound output. 3D commands are batched together and executed at FSOUND_Update.
|
||||
FSOUND_INIT_DSOUND_HRTF_LIGHT = &H1000 'Win32 only - For DirectSound output. FSOUND_HW3D buffers use a slightly higher quality algorithm when 3d hardware acceleration is not present.
|
||||
FSOUND_INIT_DSOUND_HRTF_FULL = &H2000 'Win32 only - For DirectSound output. FSOUND_HW3D buffers use full quality 3d playback when 3d hardware acceleration is not present.
|
||||
FSOUND_INIT_XBOX_REMOVEHEADROOM = &H4000 'XBox only - By default directsound attenuates all sound by 6db to avoid clipping/distortion. CAUTION. If you use this flag you are responsible for the final mix to make sure clipping / distortion doesn't happen.
|
||||
FSOUND_INIT_PSP_SILENCEONUNDERRUN = &H8000 'PSP only - If streams skip / stutter when device is powered on, either increase stream buffersize, or use this flag instead to play silence while the UMD is recovering.
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_STREAM_NET_STATUS
|
||||
' Status values for internet streams. Use FSOUND_Stream_Net_GetStatus to get the current status of an internet stream.
|
||||
'
|
||||
Public Enum FSOUND_STREAM_NET_STATUS
|
||||
FSOUND_STREAM_NET_NOTCONNECTED ' Stream hasn't connected yet
|
||||
FSOUND_STREAM_NET_CONNECTING ' Stream is connecting to remote host
|
||||
FSOUND_STREAM_NET_BUFFERING ' Stream is buffering data
|
||||
FSOUND_STREAM_NET_READY ' Stream is ready to play
|
||||
FSOUND_STREAM_NET_ERROR ' Stream has suffered a fatal error
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_TAGFIELD_TYPE
|
||||
' Describes the type of a particular tag field.
|
||||
' See FSOUND_Stream_GetNumTagFields, FSOUND_Stream_GetTagField, FSOUND_Stream_FindTagField
|
||||
'
|
||||
Public Enum FSOUND_TAGFIELD_TYPE
|
||||
FSOUND_TAGFIELD_VORBISCOMMENT = 0 ' A vorbis comment
|
||||
FSOUND_TAGFIELD_ID3V1 ' Part of an ID3v1 tag
|
||||
FSOUND_TAGFIELD_ID3V2 ' An ID3v2 frame
|
||||
FSOUND_TAGFIELD_SHOUTCAST ' A SHOUTcast header line
|
||||
FSOUND_TAGFIELD_ICECAST ' An Icecast header line
|
||||
FSOUND_TAGFIELD_ASF ' An Advanced Streaming Format header line
|
||||
End Enum
|
||||
|
||||
|
||||
' FSOUND_STATUS_FLAGS
|
||||
' These values describe the protocol and format of an internet stream. Use FSOUND_Stream_Net_GetStatus to retrieve this information for an open internet stream.
|
||||
'
|
||||
Public Enum FSOUND_STATUS_FLAGS
|
||||
FSOUND_PROTOCOL_SHOUTCAST = &H1
|
||||
FSOUND_PROTOCOL_ICECAST = &H2
|
||||
FSOUND_PROTOCOL_HTTP = &H4
|
||||
FSOUND_FORMAT_MPEG = &H10000
|
||||
FSOUND_FORMAT_OGGVORBIS = &H20000
|
||||
End Enum
|
||||
|
||||
' FSOUND_TOC_TAG
|
||||
' FSOUND_Stream_Open, FSOUND_Stream_FindTagField
|
||||
'
|
||||
Public Type FSOUND_TOC_TAG
|
||||
TagName(3) As Byte ' The string "TOC" (4th character is 0), just in case this structure is accidentally treated as a string.
|
||||
NumTracks As Long ' The number of tracks on the CD.
|
||||
Min(99) As Long ' The start offset of each track in minutes.
|
||||
Sec(99) As Long ' The start offset of each track in seconds.
|
||||
Frame(99) As Long ' The start offset of each track in frames.
|
||||
End Type
|
||||
|
||||
|
||||
'/* ================================== */
|
||||
'/* Initialization / Global functions. */
|
||||
'/* ================================== */
|
||||
|
||||
|
||||
' PRE - FSOUND_Init functions. These cant be called after FSOUND_Init is
|
||||
' called (they will fail). They set up FMOD system functionality.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_SetOutput Lib "fmod.dll" Alias "_FSOUND_SetOutput@4" (ByVal outputtype As FSOUND_OUTPUTTYPES) As Byte
|
||||
Public Declare Function FSOUND_SetDriver Lib "fmod.dll" Alias "_FSOUND_SetDriver@4" (ByVal driver As Long) As Byte
|
||||
Public Declare Function FSOUND_SetMixer Lib "fmod.dll" Alias "_FSOUND_SetMixer@4" (ByVal mixer As FSOUND_MIXERTYPES) As Byte
|
||||
Public Declare Function FSOUND_SetBufferSize Lib "fmod.dll" Alias "_FSOUND_SetBufferSize@4" (ByVal lenms As Long) As Byte
|
||||
Public Declare Function FSOUND_SetHWND Lib "fmod.dll" Alias "_FSOUND_SetHWND@4" (ByVal hwnd As Long) As Byte
|
||||
Public Declare Function FSOUND_SetMinHardwareChannels Lib "fmod.dll" Alias "_FSOUND_SetMinHardwareChannels@4" (ByVal min As Integer) As Byte
|
||||
Public Declare Function FSOUND_SetMaxHardwareChannels Lib "fmod.dll" Alias "_FSOUND_SetMaxHardwareChannels@4" (ByVal min As Integer) As Byte
|
||||
Public Declare Function FSOUND_SetMemorySystem Lib "fmod.dll" Alias "_FSOUND_SetMemorySystem@20" (ByVal pool As Long, ByVal poollen As Long, ByVal useralloc As Long, ByVal userrealloc As Long, ByVal userfree As Long) As Byte
|
||||
|
||||
'
|
||||
' Main initialization / closedown functions.
|
||||
' Note : Use FSOUND_INIT_USEDEFAULTMIDISYNTH with FSOUND_Init for software override
|
||||
' with MIDI playback.
|
||||
' : Use FSOUND_INIT_GLOBALFOCUS with FSOUND_Init to make sound audible no matter
|
||||
' which window is in focus. (FSOUND_OUTPUT_DSOUND only)
|
||||
'
|
||||
|
||||
Public Declare Function FSOUND_Init Lib "fmod.dll" Alias "_FSOUND_Init@12" (ByVal mixrate As Long, ByVal maxchannels As Long, ByVal flags As FSOUND_INITMODES) As Byte
|
||||
Public Declare Function FSOUND_Close Lib "fmod.dll" Alias "_FSOUND_Close@0" () As Long
|
||||
|
||||
'
|
||||
' Runtime system level functions
|
||||
'
|
||||
|
||||
Public Declare Function FSOUND_Update Lib "fmod.dll" Alias "_FSOUND_Update@0" () As Long
|
||||
|
||||
Public Declare Function FSOUND_SetSpeakerMode Lib "fmod.dll" Alias "_FSOUND_SetSpeakerMode@4" (ByVal speakermode As FSOUND_SPEAKERMODES) As Long
|
||||
Public Declare Function FSOUND_SetSFXMasterVolume Lib "fmod.dll" Alias "_FSOUND_SetSFXMasterVolume@4" (ByVal volume As Long) As Long
|
||||
Public Declare Function FSOUND_SetPanSeperation Lib "fmod.dll" Alias "_FSOUND_SetPanSeperation@4" (ByVal pansep As Single) As Long
|
||||
Public Declare Function FSOUND_File_SetCallbacks Lib "fmod.dll" Alias "_FSOUND_File_SetCallbacks@20" (ByVal OpenCallback As Long, ByVal CloseCallback As Long, ByVal ReadCallback As Long, ByVal SeekCallback As Long, ByVal TellCallback As Long) As Long
|
||||
|
||||
'
|
||||
' System information functions.
|
||||
'
|
||||
|
||||
Public Declare Function FSOUND_GetError Lib "fmod.dll" Alias "_FSOUND_GetError@0" () As FMOD_ERRORS
|
||||
Public Declare Function FSOUND_GetVersion Lib "fmod.dll" Alias "_FSOUND_GetVersion@0" () As Single
|
||||
Public Declare Function FSOUND_GetOutput Lib "fmod.dll" Alias "_FSOUND_GetOutput@0" () As FSOUND_OUTPUTTYPES
|
||||
Public Declare Function FSOUND_GetOutputHandle Lib "fmod.dll" Alias "_FSOUND_GetOutputHandle@0" () As Long
|
||||
Public Declare Function FSOUND_GetDriver Lib "fmod.dll" Alias "_FSOUND_GetDriver@0" () As Long
|
||||
Public Declare Function FSOUND_GetMixer Lib "fmod.dll" Alias "_FSOUND_GetMixer@0" () As FSOUND_MIXERTYPES
|
||||
Public Declare Function FSOUND_GetNumDrivers Lib "fmod.dll" Alias "_FSOUND_GetNumDrivers@0" () As Long
|
||||
Public Declare Function FSOUND_GetDriverName Lib "fmod.dll" Alias "_FSOUND_GetDriverName@4" (ByVal id As Long) As Long
|
||||
Public Declare Function FSOUND_GetDriverCaps Lib "fmod.dll" Alias "_FSOUND_GetDriverCaps@8" (ByVal id As Long, ByRef caps As Long) As Byte
|
||||
Public Declare Function FSOUND_GetOutputRate Lib "fmod.dll" Alias "_FSOUND_GetOutputRate@0" () As Long
|
||||
Public Declare Function FSOUND_GetMaxChannels Lib "fmod.dll" Alias "_FSOUND_GetMaxChannels@0" () As Long
|
||||
Public Declare Function FSOUND_GetMaxSamples Lib "fmod.dll" Alias "_FSOUND_GetMaxSamples@0" () As Long
|
||||
Public Declare Function FSOUND_GetSpeakerMode Lib "fmod.dll" Alias "_FSOUND_GetSpeakerMode@0" () As Long
|
||||
Public Declare Function FSOUND_GetSFXMasterVolume Lib "fmod.dll" Alias "_FSOUND_GetSFXMasterVolume@0" () As Long
|
||||
Public Declare Function FSOUND_GetNumHWChannels Lib "fmod.dll" Alias "_FSOUND_GetNumHWChannels@12" (ByRef num2d As Long, ByRef num3d As Long, ByRef total As Long)
|
||||
Public Declare Function FSOUND_GetChannelsPlaying Lib "fmod.dll" Alias "_FSOUND_GetChannelsPlaying@0" () As Long
|
||||
Public Declare Function FSOUND_GetCPUUsage Lib "fmod.dll" Alias "_FSOUND_GetCPUUsage@0" () As Single
|
||||
Public Declare Sub FSOUND_GetMemoryStats Lib "fmod.dll" Alias "_FSOUND_GetMemoryStats@8" (ByRef currentalloced As Long, ByRef maxalloced As Long)
|
||||
|
||||
'/* =================================== */
|
||||
'/* Sample management / load functions. */
|
||||
'/* =================================== */
|
||||
|
||||
|
||||
' Sample creation and management functions
|
||||
' Note : Use FSOUND_LOADMEMORY flag with FSOUND_Sample_Load to load from memory.
|
||||
' Use FSOUND_LOADRAW flag with FSOUND_Sample_Load to treat as as raw pcm data.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_Sample_Load Lib "fmod.dll" Alias "_FSOUND_Sample_Load@20" (ByVal index As Long, ByVal name As String, ByVal mode As FSOUND_MODES, ByVal offset As Long, ByVal length As Long) As Long
|
||||
Public Declare Function FSOUND_Sample_Alloc Lib "fmod.dll" Alias "_FSOUND_Sample_Alloc@28" (ByVal index As Long, ByVal length As Long, ByVal mode As Long, ByVal deffreq As Long, ByVal defvol As Long, ByVal defpan As Long, ByVal defpri As Long) As Long
|
||||
Public Declare Function FSOUND_Sample_Free Lib "fmod.dll" Alias "_FSOUND_Sample_Free@4" (ByVal sptr As Long) As Long
|
||||
Public Declare Function FSOUND_Sample_Upload Lib "fmod.dll" Alias "_FSOUND_Sample_Upload@12" (ByVal sptr As Long, ByRef srcdata As Long, ByVal mode As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_Lock Lib "fmod.dll" Alias "_FSOUND_Sample_Lock@28" (ByVal sptr As Long, ByVal offset As Long, ByVal length As Long, ByRef ptr1 As Long, ByRef ptr2 As Long, ByRef len1 As Long, ByRef len2 As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_Unlock Lib "fmod.dll" Alias "_FSOUND_Sample_Unlock@20" (ByVal sptr As Long, ByVal sptr1 As Long, ByVal sptr2 As Long, ByVal len1 As Long, ByVal len2 As Long) As Byte
|
||||
|
||||
|
||||
' Sample control functions
|
||||
|
||||
|
||||
Public Declare Function FSOUND_Sample_SetMode Lib "fmod.dll" Alias "_FSOUND_Sample_SetMode@8" (ByVal sptr As Long, ByVal mode As FSOUND_MODES) As Byte
|
||||
Public Declare Function FSOUND_Sample_SetLoopPoints Lib "fmod.dll" Alias "_FSOUND_Sample_SetLoopPoints@12" (ByVal sptr As Long, ByVal loopstart As Long, ByVal loopend As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_SetDefaults Lib "fmod.dll" Alias "_FSOUND_Sample_SetDefaults@20" (ByVal sptr As Long, ByVal deffreq As Long, ByVal defvol As Long, ByVal defpan As Long, ByVal defpri As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_SetDefaultsEx Lib "fmod.dll" Alias "_FSOUND_Sample_SetDefaultsEx@32" (ByVal sptr As Long, ByVal deffreq As Long, ByVal defvol As Long, ByVal defpan As Long, ByVal defpri As Long, ByVal varfreq As Long, ByVal varvol As Long, ByVal varpan As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_SetMinMaxDistance Lib "fmod.dll" Alias "_FSOUND_Sample_SetMinMaxDistance@12" (ByVal sptr As Long, ByVal min As Single, ByVal max As Single) As Byte
|
||||
Public Declare Function FSOUND_Sample_SetMaxPlaybacks Lib "fmod.dll" Alias "_FSOUND_Sample_SetMaxPlaybacks@8" (ByVal sptr As Long, ByVal max As Long) As Byte
|
||||
|
||||
|
||||
' Sample information functions
|
||||
|
||||
|
||||
Public Declare Function FSOUND_Sample_Get Lib "fmod.dll" Alias "_FSOUND_Sample_Get@4" (ByVal sampno As Long) As Long
|
||||
Public Declare Function FSOUND_Sample_GetName Lib "fmod.dll" Alias "_FSOUND_Sample_GetName@4" (ByVal sptr As Long) As Long
|
||||
Public Declare Function FSOUND_Sample_GetLength Lib "fmod.dll" Alias "_FSOUND_Sample_GetLength@4" (ByVal sptr As Long) As Long
|
||||
Public Declare Function FSOUND_Sample_GetLoopPoints Lib "fmod.dll" Alias "_FSOUND_Sample_GetLoopPoints@12" (ByVal sptr As Long, ByRef loopstart As Long, ByRef loopend As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_GetDefaults Lib "fmod.dll" Alias "_FSOUND_Sample_GetDefaults@20" (ByVal sptr As Long, ByRef deffreq As Long, ByRef defvol As Long, ByRef defpan As Long, ByRef defpri As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_GetDefaultsEx Lib "fmod.dll" Alias "_FSOUND_Sample_GetDefaultsEx@32" (ByVal sptr As Long, ByRef deffreq As Long, ByRef defvol As Long, ByRef defpan As Long, ByRef defpri As Long, ByRef varfreq As Long, ByRef varvol As Long, ByRef varpan As Long) As Byte
|
||||
Public Declare Function FSOUND_Sample_GetMode Lib "fmod.dll" Alias "_FSOUND_Sample_GetMode@4" (ByVal sptr As Long) As Long
|
||||
Public Declare Function FSOUND_Sample_GetMinMaxDistance Lib "fmod.dll" Alias "_FSOUND_Sample_GetMinMaxDistance@12" (ByVal sptr As Long, ByRef min As Single, ByRef max As Single) As Byte
|
||||
|
||||
'/* ============================ */
|
||||
'/* Channel control functions. */
|
||||
'/* ============================ */
|
||||
|
||||
|
||||
' Playing and stopping sounds.
|
||||
' Note : Use FSOUND_FREE as the channel variable, to let FMOD pick a free channel for you.
|
||||
' Use FSOUND_ALL as the channel variable to control ALL channels with one function call!
|
||||
|
||||
|
||||
Public Declare Function FSOUND_PlaySound Lib "fmod.dll" Alias "_FSOUND_PlaySound@8" (ByVal channel As Long, ByVal sptr As Long) As Long
|
||||
Public Declare Function FSOUND_PlaySoundEx Lib "fmod.dll" Alias "_FSOUND_PlaySoundEx@16" (ByVal channel As Long, ByVal sptr As Long, ByVal dsp As Long, ByVal startpaused As Byte) As Long
|
||||
Public Declare Function FSOUND_StopSound Lib "fmod.dll" Alias "_FSOUND_StopSound@4" (ByVal channel As Long) As Byte
|
||||
|
||||
|
||||
' Functions to control playback of a channel.
|
||||
' Note : FSOUND_ALL can be used on most of these functions as a channel value.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_SetFrequency Lib "fmod.dll" Alias "_FSOUND_SetFrequency@8" (ByVal channel As Long, ByVal freq As Long) As Byte
|
||||
Public Declare Function FSOUND_SetVolume Lib "fmod.dll" Alias "_FSOUND_SetVolume@8" (ByVal channel As Long, ByVal Vol As Long) As Byte
|
||||
Public Declare Function FSOUND_SetVolumeAbsolute Lib "fmod.dll" Alias "_FSOUND_SetVolumeAbsolute@8" (ByVal channel As Long, ByVal Vol As Long) As Byte
|
||||
Public Declare Function FSOUND_SetPan Lib "fmod.dll" Alias "_FSOUND_SetPan@8" (ByVal channel As Long, ByVal pan As Long) As Byte
|
||||
Public Declare Function FSOUND_SetSurround Lib "fmod.dll" Alias "_FSOUND_SetSurround@8" (ByVal channel As Long, ByVal surround As Long) As Byte
|
||||
Public Declare Function FSOUND_SetMute Lib "fmod.dll" Alias "_FSOUND_SetMute@8" (ByVal channel As Long, ByVal mute As Byte) As Byte
|
||||
Public Declare Function FSOUND_SetPriority Lib "fmod.dll" Alias "_FSOUND_SetPriority@8" (ByVal channel As Long, ByVal Priority As Long) As Byte
|
||||
Public Declare Function FSOUND_SetReserved Lib "fmod.dll" Alias "_FSOUND_SetReserved@8" (ByVal channel As Long, ByVal reserved As Long) As Byte
|
||||
Public Declare Function FSOUND_SetPaused Lib "fmod.dll" Alias "_FSOUND_SetPaused@8" (ByVal channel As Long, ByVal Paused As Byte) As Byte
|
||||
Public Declare Function FSOUND_SetLoopMode Lib "fmod.dll" Alias "_FSOUND_SetLoopMode@8" (ByVal channel As Long, ByVal loopmode As Long) As Byte
|
||||
Public Declare Function FSOUND_SetCurrentPosition Lib "fmod.dll" Alias "_FSOUND_SetCurrentPosition@8" (ByVal channel As Long, ByVal offset As Long) As Byte
|
||||
Public Declare Function FSOUND_3D_SetAttributes Lib "fmod.dll" Alias "_FSOUND_3D_SetAttributes@12" (ByVal channel As Long, ByRef Pos As Single, ByRef vel As Single) As Byte
|
||||
Public Declare Function FSOUND_3D_SetMinMaxDistance Lib "fmod.dll" Alias "_FSOUND_3D_SetMinMaxDistance@12" (ByVal channel As Long, ByVal min As Single, ByVal max As Single) As Byte
|
||||
|
||||
'
|
||||
' Channel information functions.
|
||||
'
|
||||
|
||||
Public Declare Function FSOUND_IsPlaying Lib "fmod.dll" Alias "_FSOUND_IsPlaying@4" (ByVal channel As Long) As Byte
|
||||
Public Declare Function FSOUND_GetFrequency Lib "fmod.dll" Alias "_FSOUND_GetFrequency@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetVolume Lib "fmod.dll" Alias "_FSOUND_GetVolume@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetAmplitude Lib "fmod.dll" Alias "_FSOUND_GetAmplitude@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetPan Lib "fmod.dll" Alias "_FSOUND_GetPan@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetSurround Lib "fmod.dll" Alias "_FSOUND_GetSurround@4" (ByVal channel As Long) As Byte
|
||||
Public Declare Function FSOUND_GetMute Lib "fmod.dll" Alias "_FSOUND_GetMute@4" (ByVal channel As Long) As Byte
|
||||
Public Declare Function FSOUND_GetPriority Lib "fmod.dll" Alias "_FSOUND_GetPriority@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetReserved Lib "fmod.dll" Alias "_FSOUND_GetReserved@4" (ByVal channel As Long) As Byte
|
||||
Public Declare Function FSOUND_GetPaused Lib "fmod.dll" Alias "_FSOUND_GetPaused@4" (ByVal channel As Long) As Byte
|
||||
Public Declare Function FSOUND_GetLoopMode Lib "fmod.dll" Alias "_FSOUND_GetLoopMode@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetCurrentPosition Lib "fmod.dll" Alias "_FSOUND_GetCurrentPosition@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetCurrentSample Lib "fmod.dll" Alias "_FSOUND_GetCurrentSample@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetCurrentLevels Lib "fmod.dll" Alias "_FSOUND_GetCurrentLevels@12" (ByVal channel As Long, ByRef l As Single, ByRef r As Single) As Byte
|
||||
Public Declare Function FSOUND_GetNumSubChannels Lib "fmod.dll" Alias "_FSOUND_GetNumSubChannels@4" (ByVal channel As Long) As Long
|
||||
Public Declare Function FSOUND_GetSubChannel Lib "fmod.dll" Alias "_FSOUND_GetSubChannel@8" (ByVal channel As Long, ByVal subchannel As Long) As Long
|
||||
Public Declare Function FSOUND_3D_GetAttributes Lib "fmod.dll" Alias "_FSOUND_3D_GetAttributes@12" (ByVal channel As Long, ByRef Pos As Single, ByRef vel As Single) As Byte
|
||||
Public Declare Function FSOUND_3D_GetMinMaxDistance Lib "fmod.dll" Alias "_FSOUND_3D_GetMinMaxDistance@12" (ByVal channel As Long, ByRef min As Single, ByRef max As Single) As Byte
|
||||
|
||||
'/* ========================== */
|
||||
'/* Global 3D sound functions. */
|
||||
'/* ========================== */
|
||||
|
||||
'
|
||||
' See also 3d sample and channel based functions above.
|
||||
' Call FSOUND_Update once a frame to process 3d information.
|
||||
'
|
||||
|
||||
Public Declare Function FSOUND_3D_Listener_SetCurrent Lib "fmod.dll" Alias "_FSOUND_3D_Listener_SetCurrent@8" (ByVal current As Long) As Long
|
||||
Public Declare Function FSOUND_3D_Listener_SetAttributes Lib "fmod.dll" Alias "_FSOUND_3D_Listener_SetAttributes@32" (ByVal Pos As Single, ByVal vel As Single, ByVal fx As Single, ByVal fy As Single, ByVal fz As Single, ByVal tx As Single, ByVal ty As Single, ByVal tz As Single) As Long
|
||||
Public Declare Function FSOUND_3D_Listener_GetAttributes Lib "fmod.dll" Alias "_FSOUND_3D_Listener_GetAttributes@32" (ByRef Pos As Single, ByRef vel As Single, ByRef fx As Single, ByRef fy As Single, ByRef fz As Single, ByRef tx As Single, ByRef ty As Single, ByRef tz As Single) As Long
|
||||
Public Declare Function FSOUND_3D_SetDopplerFactor Lib "fmod.dll" Alias "_FSOUND_3D_SetDopplerFactor@4" (ByVal fscale As Single) As Long
|
||||
Public Declare Function FSOUND_3D_SetDistanceFactor Lib "fmod.dll" Alias "_FSOUND_3D_SetDistanceFactor@4" (ByVal fscale As Single) As Long
|
||||
Public Declare Function FSOUND_3D_SetRolloffFactor Lib "fmod.dll" Alias "_FSOUND_3D_SetRolloffFactor@4" (ByVal fscale As Single) As Long
|
||||
|
||||
'/* =================== */
|
||||
'/* FX functions. */
|
||||
'/* =================== */
|
||||
|
||||
|
||||
' Functions to control DX8 only effects processing.
|
||||
'
|
||||
' - FX enabled samples can only be played once at a time, not multiple times at once.
|
||||
' - Sounds have to be created with FSOUND_HW2D or FSOUND_HW3D for this to work.
|
||||
' - FSOUND_INIT_ENABLESYSTEMCHANNELFX can be used to apply hardware effect processing to the
|
||||
' global mixed output of FMOD's software channels.
|
||||
' - FSOUND_FX_Enable returns an FX handle that you can use to alter fx parameters.
|
||||
' - FSOUND_FX_Enable can be called multiple times in a row, even on the same FX type,
|
||||
' it will return a unique handle for each FX.
|
||||
' - FSOUND_FX_Enable cannot be called if the sound is playing or locked.
|
||||
' - FSOUND_FX_Disable must be called to reset/clear the FX from a channel.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_FX_Enable Lib "fmod.dll" Alias "_FSOUND_FX_Enable@8" (ByVal channel As Long, ByVal fx As FSOUND_FX_MODES) As Long
|
||||
Public Declare Function FSOUND_FX_Disable Lib "fmod.dll" Alias "_FSOUND_FX_Disable@4" (ByVal channel As Long) As Byte
|
||||
|
||||
Public Declare Function FSOUND_FX_SetChorus Lib "fmod.dll" Alias "_FSOUND_FX_SetChorus@32" (ByVal fxid As Long, ByVal WetDryMix As Single, ByVal Depth As Single, ByVal Feedback As Single, ByVal Frequency As Single, ByVal Waveform As Long, ByVal Delay As Single, ByVal Phase As Long) As Byte
|
||||
Public Declare Function FSOUND_FX_SetCompressor Lib "fmod.dll" Alias "_FSOUND_FX_SetCompressor@28" (ByVal fxid As Long, ByVal Gain As Single, ByVal Attack As Single, ByVal Release As Single, ByVal Threshold As Single, ByVal Ratio As Single, ByVal Predelay As Single) As Byte
|
||||
Public Declare Function FSOUND_FX_SetDistortion Lib "fmod.dll" Alias "_FSOUND_FX_SetDistortion@24" (ByVal fxid As Long, ByVal Gain As Single, ByVal Edge As Single, ByVal PostEQCenterFrequency As Single, ByVal PostEQBandwidth As Single, ByVal PreLowpassCutoff As Single) As Byte
|
||||
Public Declare Function FSOUND_FX_SetEcho Lib "fmod.dll" Alias "_FSOUND_FX_SetEcho@24" (ByVal fxid As Long, ByVal WetDryMix As Single, ByVal Feedback As Single, ByVal LeftDelay As Single, ByVal RightDelay As Single, ByVal PanDelay As Long) As Byte
|
||||
Public Declare Function FSOUND_FX_SetFlanger Lib "fmod.dll" Alias "_FSOUND_FX_SetFlanger@32" (ByVal fxid As Long, ByVal WetDryMix As Single, ByVal Depth As Single, ByVal Feedback As Single, ByVal Frequency As Single, ByVal Waveform As Long, ByVal Delay As Single, ByVal Phase As Long) As Byte
|
||||
Public Declare Function FSOUND_FX_SetGargle Lib "fmod.dll" Alias "_FSOUND_FX_SetGargle@12" (ByVal fxid As Long, ByVal RateHz As Long, ByVal WaveShape As Long) As Byte
|
||||
Public Declare Function FSOUND_FX_SetI3DL2Reverb Lib "fmod.dll" Alias "_FSOUND_FX_SetI3DL2Reverb@52" (ByVal fxid As Long, ByVal Room As Long, ByVal RoomHF As Long, ByVal RoomRolloffFactor As Single, ByVal DecayTime As Single, ByVal DecayHFRatio As Single, ByVal Reflections As Long, ByVal ReflectionsDelay As Single, ByVal Reverb As Long, ByVal ReverbDelay As Single, ByVal Diffusion As Single, ByVal Density As Single, ByVal HFReference As Single) As Byte
|
||||
Public Declare Function FSOUND_FX_SetParamEQ Lib "fmod.dll" Alias "_FSOUND_FX_SetParamEQ@16" (ByVal fxid As Long, ByVal Center As Single, ByVal Bandwidth As Single, ByVal Gain As Single) As Byte
|
||||
Public Declare Function FSOUND_FX_SetWavesReverb Lib "fmod.dll" Alias "_FSOUND_FX_SetWavesReverb@20" (ByVal fxid As Long, ByVal InGain As Single, ByVal ReverbMix As Single, ByVal ReverbTime As Single, ByVal HighFreqRTRatio As Single) As Byte
|
||||
|
||||
' ========================= */
|
||||
' File Streaming functions. */
|
||||
' ========================= */
|
||||
|
||||
'
|
||||
' Note : Use FSOUND_LOADMEMORY flag with FSOUND_Stream_Open to stream from memory.
|
||||
' Use FSOUND_LOADRAW flag with FSOUND_Stream_Open to treat stream as raw pcm data.
|
||||
' Use FSOUND_MPEGACCURATE flag with FSOUND_Stream_Open to open mpegs in 'accurate mode' for settime/gettime/getlengthms.
|
||||
' Use FSOUND_FREE as the 'channel' variable, to let FMOD pick a free channel for you.
|
||||
'
|
||||
|
||||
Public Declare Function FSOUND_Stream_SetBufferSize Lib "fmod.dll" Alias "_FSOUND_Stream_SetBufferSize@4" (ByVal ms As Long) As Byte
|
||||
|
||||
Public Declare Function FSOUND_Stream_Open Lib "fmod.dll" Alias "_FSOUND_Stream_Open@16" (ByVal filename As String, ByVal mode As FSOUND_MODES, ByVal offset As Long, ByVal length As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_Open2 Lib "fmod.dll" Alias "_FSOUND_Stream_Open@16" (ByRef data As Byte, ByVal mode As FSOUND_MODES, ByVal offset As Long, ByVal length As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_Create Lib "fmod.dll" Alias "_FSOUND_Stream_Create@20" (ByVal callback As Long, ByVal length As Long, ByVal mode As Long, ByVal samplerate As Long, ByVal userdata As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_Close Lib "fmod.dll" Alias "_FSOUND_Stream_Close@4" (ByVal stream As Long) As Byte
|
||||
|
||||
Public Declare Function FSOUND_Stream_Play Lib "fmod.dll" Alias "_FSOUND_Stream_Play@8" (ByVal channel As Long, ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_PlayEx Lib "fmod.dll" Alias "_FSOUND_Stream_PlayEx@16" (ByVal channel As Long, ByVal stream As Long, ByVal dsp As Long, ByVal startpaused As Byte) As Long
|
||||
Public Declare Function FSOUND_Stream_Stop Lib "fmod.dll" Alias "_FSOUND_Stream_Stop@4" (ByVal stream As Long) As Byte
|
||||
|
||||
Public Declare Function FSOUND_Stream_SetPosition Lib "fmod.dll" Alias "_FSOUND_Stream_SetPosition@8" (ByVal stream As Long, ByVal positition As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_GetPosition Lib "fmod.dll" Alias "_FSOUND_Stream_GetPosition@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_SetTime Lib "fmod.dll" Alias "_FSOUND_Stream_SetTime@8" (ByVal stream As Long, ByVal ms As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_GetTime Lib "fmod.dll" Alias "_FSOUND_Stream_GetTime@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_GetLength Lib "fmod.dll" Alias "_FSOUND_Stream_GetLength@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_GetLengthMs Lib "fmod.dll" Alias "_FSOUND_Stream_GetLengthMs@4" (ByVal stream As Long) As Long
|
||||
|
||||
Public Declare Function FSOUND_Stream_SetMode Lib "fmod.dll" Alias "_FSOUND_Stream_SetMode@8" (ByVal stream As Long, ByVal mode As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_GetMode Lib "fmod.dll" Alias "_FSOUND_Stream_GetMode@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_SetLoopPoints Lib "fmod.dll" Alias "_FSOUND_Stream_SetLoopPoints@12" (ByVal stream As Long, ByVal loopstartpcm As Long, ByVal loopendpcm As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_SetLoopCount Lib "fmod.dll" Alias "_FSOUND_Stream_SetLoopCount@8" (ByVal stream As Long, ByVal count As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_GetOpenState Lib "fmod.dll" Alias "_FSOUND_Stream_GetOpenState@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_GetSample Lib "fmod.dll" Alias "_FSOUND_Stream_GetSample@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_CreateDSP Lib "fmod.dll" Alias "_FSOUND_Stream_CreateDSP@16" (ByVal stream As Long, ByVal callback As Long, ByVal Priority As Long, ByVal userdata As Long) As Long
|
||||
|
||||
Public Declare Function FSOUND_Stream_SetEndCallback Lib "fmod.dll" Alias "_FSOUND_Stream_SetEndCallback@12" (ByVal stream As Long, ByVal callback As Long, ByVal userdata As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_SetSyncCallback Lib "fmod.dll" Alias "_FSOUND_Stream_SetSyncCallback@12" (ByVal stream As Long, ByVal callback As Long, ByVal userdata As Long) As Byte
|
||||
|
||||
Public Declare Function FSOUND_Stream_AddSyncPoint Lib "fmod.dll" Alias "_FSOUND_Stream_AddSyncPoint@12" (ByVal stream As Long, ByVal pcmoffset As Long, ByVal name As String) As Long
|
||||
Public Declare Function FSOUND_Stream_DeleteSyncPoint Lib "fmod.dll" Alias "_FSOUND_Stream_DeleteSyncPoint@4" (ByVal point As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_GetNumSyncPoints Lib "fmod.dll" Alias "_FSOUND_Stream_GetNumSyncPoints@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_GetSyncPoint Lib "fmod.dll" Alias "_FSOUND_Stream_GetSyncPoint@8" (ByVal stream As Long, ByVal index As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_GetSyncPointInfo Lib "fmod.dll" Alias "_FSOUND_Stream_GetSyncPointInfo@8" (ByVal point As Long, ByRef pcmoffset As Long) As Long
|
||||
|
||||
Public Declare Function FSOUND_Stream_SetSubStream Lib "fmod.dll" Alias "_FSOUND_Stream_SetSubStream@8" (ByVal stream As Long, ByVal index As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_GetNumSubStreams Lib "fmod.dll" Alias "_FSOUND_Stream_GetNumSubStreams@4" (ByVal stream As Long) As Long
|
||||
Public Declare Function FSOUND_Stream_SetSubStreamSentence Lib "fmod.dll" Alias "_FSOUND_Stream_SetSubStreamSentence@12" (ByVal stream As Long, ByRef sentencelist As Long, ByVal numitems As Long) As Byte
|
||||
|
||||
Public Declare Function FSOUND_Stream_GetNumTagFields Lib "fmod.dll" Alias "_FSOUND_Stream_GetNumTagFields@8" (ByVal stream As Long, ByRef num As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_GetTagField Lib "fmod.dll" Alias "_FSOUND_Stream_GetTagField@24" (ByVal stream As Long, ByVal num As Long, ByRef tagtype As Long, ByRef name As Long, ByRef value As Long, ByRef length As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_FindTagField Lib "fmod.dll" Alias "_FSOUND_Stream_FindTagField@20" (ByVal stream As Long, ByVal tagtype As Long, ByVal name As String, ByRef value As Long, ByRef length As Long) As Byte
|
||||
|
||||
'
|
||||
' Internet streaming functions
|
||||
'
|
||||
|
||||
Public Declare Function FSOUND_Stream_Net_SetProxy Lib "fmod.dll" Alias "_FSOUND_Stream_Net_SetProxy@4" (ByVal proxy As String) As Byte
|
||||
Public Declare Function FSOUND_Stream_Net_GetLastServerStatus Lib "fmod.dll" Alias "_FSOUND_Stream_Net_GetLastServerStatus@0" () As Long
|
||||
Public Declare Function FSOUND_Stream_Net_SetBufferProperties Lib "fmod.dll" Alias "_FSOUND_Stream_Net_SetBufferProperties@12" (ByVal buffersize As Long, ByVal prebuffer_percent As Long, ByVal rebuffer_percent As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_Net_GetBufferProperties Lib "fmod.dll" Alias "_FSOUND_Stream_Net_GetBufferProperties@12" (ByRef buffersize As Long, ByRef prebuffer_percent As Long, ByRef rebuffer_percent As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_Net_SetMetadataCallback Lib "fmod.dll" Alias "_FSOUND_Stream_Net_SetMetadataCallback@12" (ByVal stream As Long, ByVal callback As Long, ByVal userdata As Long) As Byte
|
||||
Public Declare Function FSOUND_Stream_Net_GetStatus Lib "fmod.dll" Alias "_FSOUND_Stream_Net_GetStatus@20" (ByVal stream As Long, ByRef status As Long, ByRef bufferpercentused As Long, ByRef bitrate As Long, ByRef flags As Long) As Byte
|
||||
|
||||
'/* =================== */
|
||||
'/* CD audio functions. */
|
||||
'/* =================== */
|
||||
|
||||
|
||||
' Note : 0 = default cdrom. Otherwise specify the drive letter, for example. 'D'.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_CD_Play Lib "fmod.dll" Alias "_FSOUND_CD_Play@8" (ByVal drive As Byte, ByVal Track As Long) As Byte
|
||||
Public Declare Function FSOUND_CD_SetPlayMode Lib "fmod.dll" Alias "_FSOUND_CD_SetPlayMode@8" (ByVal drive As Byte, ByVal mode As FSOUND_CDPLAYMODES) As Long
|
||||
Public Declare Function FSOUND_CD_Stop Lib "fmod.dll" Alias "_FSOUND_CD_Stop@4" (ByVal drive As Byte) As Byte
|
||||
Public Declare Function FSOUND_CD_SetPaused Lib "fmod.dll" Alias "_FSOUND_CD_SetPaused@8" (ByVal drive As Byte, ByVal Paused As Byte) As Byte
|
||||
Public Declare Function FSOUND_CD_SetVolume Lib "fmod.dll" Alias "_FSOUND_CD_SetVolume@8" (ByVal drive As Byte, ByVal volume As Long) As Byte
|
||||
Public Declare Function FSOUND_CD_SetTrackTime Lib "fmod.dll" Alias "_FSOUND_CD_SetTrackTime@8" (ByVal drive As Byte, ByVal ms As Long) As Byte
|
||||
Public Declare Function FSOUND_CD_OpenTray Lib "fmod.dll" Alias "_FSOUND_CD_OpenTray@8" (ByVal drive As Byte, ByVal openState As Byte) As Byte
|
||||
|
||||
Public Declare Function FSOUND_CD_GetPaused Lib "fmod.dll" Alias "_FSOUND_CD_GetPaused@4" (ByVal drive As Byte) As Byte
|
||||
Public Declare Function FSOUND_CD_GetTrack Lib "fmod.dll" Alias "_FSOUND_CD_GetTrack@4" (ByVal drive As Byte) As Long
|
||||
Public Declare Function FSOUND_CD_GetNumTracks Lib "fmod.dll" Alias "_FSOUND_CD_GetNumTracks@4" (ByVal drive As Byte) As Long
|
||||
Public Declare Function FSOUND_CD_GetVolume Lib "fmod.dll" Alias "_FSOUND_CD_GetVolume@4" (ByVal drive As Byte) As Long
|
||||
Public Declare Function FSOUND_CD_GetTrackLength Lib "fmod.dll" Alias "_FSOUND_CD_GetTrackLength@8" (ByVal drive As Byte, ByVal Track As Long) As Long
|
||||
Public Declare Function FSOUND_CD_GetTrackTime Lib "fmod.dll" Alias "_FSOUND_CD_GetTrackTime@4" (ByVal drive As Byte) As Long
|
||||
|
||||
'/* ============== */
|
||||
'/* DSP functions. */
|
||||
'/* ============== */
|
||||
|
||||
|
||||
' DSP Unit control and information functions.
|
||||
' These functions allow you access to the mixed stream that FMOD uses to play back sound on.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_DSP_Create Lib "fmod.dll" Alias "_FSOUND_DSP_Create@12" (ByVal callback As Long, ByVal Priority As Long, ByVal param As Long) As Long
|
||||
Public Declare Function FSOUND_DSP_Free Lib "fmod.dll" Alias "_FSOUND_DSP_Free@4" (ByVal unit As Long) As Long
|
||||
Public Declare Function FSOUND_DSP_SetPriority Lib "fmod.dll" Alias "_FSOUND_DSP_SetPriority@8" (ByVal unit As Long, ByVal Priority As Long) As Long
|
||||
Public Declare Function FSOUND_DSP_GetPriority Lib "fmod.dll" Alias "_FSOUND_DSP_GetPriority@4" (ByVal unit As Long) As Long
|
||||
Public Declare Function FSOUND_DSP_SetActive Lib "fmod.dll" Alias "_FSOUND_DSP_SetActive@8" (ByVal unit As Long, ByVal active As Integer) As Long
|
||||
Public Declare Function FSOUND_DSP_GetActive Lib "fmod.dll" Alias "_FSOUND_DSP_GetActive@4" (ByVal unit As Long) As Byte
|
||||
|
||||
|
||||
' Functions to get hold of FSOUND 'system DSP unit' handles
|
||||
|
||||
|
||||
Public Declare Function FSOUND_DSP_GetClearUnit Lib "fmod.dll" Alias "_FSOUND_DSP_GetClearUnit@0" () As Long
|
||||
Public Declare Function FSOUND_DSP_GetSFXUnit Lib "fmod.dll" Alias "_FSOUND_DSP_GetSFXUnit@0" () As Long
|
||||
Public Declare Function FSOUND_DSP_GetMusicUnit Lib "fmod.dll" Alias "_FSOUND_DSP_GetMusicUnit@0" () As Long
|
||||
Public Declare Function FSOUND_DSP_GetFFTUnit Lib "fmod.dll" Alias "_FSOUND_DSP_GetFFTUnit@0" () As Long
|
||||
Public Declare Function FSOUND_DSP_GetClipAndCopyUnit Lib "fmod.dll" Alias "_FSOUND_DSP_GetClipAndCopyUnit@0" () As Long
|
||||
|
||||
|
||||
' Miscellaneous DSP functions
|
||||
' Note for the spectrum analysis function to work, you have to enable the FFT DSP unit with
|
||||
' the following code FSOUND_DSP_SetActive(FSOUND_DSP_GetFFTUnit(), TRUE);
|
||||
' It is off by default to save cpu usage.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_DSP_MixBuffers Lib "fmod.dll" Alias "_FSOUND_DSP_MixBuffers@28" (ByVal destbuffer As Long, ByVal srcbuffer As Long, ByVal length As Long, ByVal freq As Long, ByVal Vol As Long, ByVal pan As Long, ByVal mode As Long) As Byte
|
||||
Public Declare Function FSOUND_DSP_ClearMixBuffer Lib "fmod.dll" Alias "_FSOUND_DSP_ClearMixBuffer@0" () As Long
|
||||
Public Declare Function FSOUND_DSP_GetBufferLength Lib "fmod.dll" Alias "_FSOUND_DSP_GetBufferLength@0" () As Long
|
||||
Public Declare Function FSOUND_DSP_GetBufferLengthTotal Lib "fmod.dll" Alias "_FSOUND_DSP_GetBufferLengthTotal@0" () As Long
|
||||
Public Declare Function FSOUND_DSP_GetSpectrum Lib "fmod.dll" Alias "_FSOUND_DSP_GetSpectrum@0" () As Long
|
||||
|
||||
'/* =================================================================================== */
|
||||
'/* Reverb functions. (eax2/eax3 reverb) (ONLY SUPPORTED ON WIN32 W/ FSOUND_HW3D FLAG) */
|
||||
'/* =================================================================================== */
|
||||
|
||||
|
||||
' See top of file for definitions and information on the reverb parameters.
|
||||
|
||||
'The FSOUND_REVERB_PRESETS have not been included in VB yet so they cannot yet be used here...
|
||||
Public Declare Function FSOUND_Reverb_SetProperties Lib "fmod.dll" Alias "_FSOUND_Reverb_SetProperties@4" (ByRef prop As FSOUND_REVERB_PROPERTIES) As Byte
|
||||
Public Declare Function FSOUND_Reverb_GetProperties Lib "fmod.dll" Alias "_FSOUND_Reverb_GetProperties@4" (ByRef prop As FSOUND_REVERB_PROPERTIES) As Byte
|
||||
Public Declare Function FSOUND_Reverb_SetChannelProperties Lib "fmod.dll" Alias "_FSOUND_Reverb_SetChannelProperties@8" (ByVal channel As Long, ByRef prop As FSOUND_REVERB_CHANNELPROPERTIES) As Byte
|
||||
Public Declare Function FSOUND_Reverb_GetChannelProperties Lib "fmod.dll" Alias "_FSOUND_Reverb_GetChannelProperties@8" (ByVal channel As Long, ByRef prop As FSOUND_REVERB_CHANNELPROPERTIES) As Byte
|
||||
|
||||
'/* ===================================================== */
|
||||
'/* Recording functions (ONLY SUPPORTED IN WIN32, WINCE) */
|
||||
'/* ===================================================== */
|
||||
|
||||
|
||||
' Recording initialization functions
|
||||
|
||||
|
||||
Public Declare Function FSOUND_Record_SetDriver Lib "fmod.dll" Alias "_FSOUND_Record_SetDriver@4" (ByVal outputtype As Long) As Byte
|
||||
Public Declare Function FSOUND_Record_GetNumDrivers Lib "fmod.dll" Alias "_FSOUND_Record_GetNumDrivers@0" () As Long
|
||||
Public Declare Function FSOUND_Record_GetDriverName Lib "fmod.dll" Alias "_FSOUND_Record_GetDriverName@4" (ByVal id As Long) As Long
|
||||
Public Declare Function FSOUND_Record_GetDriver Lib "fmod.dll" Alias "_FSOUND_Record_GetDriver@0" () As Long
|
||||
|
||||
|
||||
' Recording functionality. Only one recording session will work at a time.
|
||||
|
||||
|
||||
Public Declare Function FSOUND_Record_StartSample Lib "fmod.dll" Alias "_FSOUND_Record_StartSample@8" (ByVal sample As Long, ByVal loopit As Boolean) As Byte
|
||||
Public Declare Function FSOUND_Record_Stop Lib "fmod.dll" Alias "_FSOUND_Record_Stop@0" () As Byte
|
||||
Public Declare Function FSOUND_Record_GetPosition Lib "fmod.dll" Alias "_FSOUND_Record_GetPosition@0" () As Long
|
||||
|
||||
'/* ========================================================================================== */
|
||||
'/* FMUSIC API (MOD,S3M,XM,IT,MIDI PLAYBACK) */
|
||||
'/* ========================================================================================== */
|
||||
|
||||
|
||||
' Song management / playback functions.
|
||||
|
||||
|
||||
Public Declare Function FMUSIC_LoadSong Lib "fmod.dll" Alias "_FMUSIC_LoadSong@4" (ByVal name As String) As Long
|
||||
Public Declare Function FMUSIC_LoadSongEx Lib "fmod.dll" Alias "_FMUSIC_LoadSongEx@24" (ByVal name As String, ByVal offset As Long, ByVal length As Long, ByVal mode As FSOUND_MODES, ByRef sentencelist As Long, ByVal numitems As Long) As Long
|
||||
Public Declare Function FMUSIC_LoadSongEx2 Lib "fmod.dll" Alias "_FMUSIC_LoadSongEx@24" (ByRef data As Byte, ByVal offset As Long, ByVal length As Long, ByVal mode As FSOUND_MODES, ByRef sentencelist As Long, ByVal numitems As Long) As Long
|
||||
Public Declare Function FMUSIC_GetOpenState Lib "fmod.dll" Alias "_FMUSIC_GetOpenState@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_FreeSong Lib "fmod.dll" Alias "_FMUSIC_FreeSong@4" (ByVal module As Long) As Byte
|
||||
Public Declare Function FMUSIC_PlaySong Lib "fmod.dll" Alias "_FMUSIC_PlaySong@4" (ByVal module As Long) As Byte
|
||||
Public Declare Function FMUSIC_StopSong Lib "fmod.dll" Alias "_FMUSIC_StopSong@4" (ByVal module As Long) As Byte
|
||||
Public Declare Function FMUSIC_StopAllSongs Lib "fmod.dll" Alias "_FMUSIC_StopAllSongs@0" () As Long
|
||||
|
||||
Public Declare Function FMUSIC_SetZxxCallback Lib "fmod.dll" Alias "_FMUSIC_SetZxxCallback@8" (ByVal module As Long, ByVal callback As Long) As Byte
|
||||
Public Declare Function FMUSIC_SetRowCallback Lib "fmod.dll" Alias "_FMUSIC_SetRowCallback@12" (ByVal module As Long, ByVal callback As Long, ByVal rowstep As Long) As Byte
|
||||
Public Declare Function FMUSIC_SetOrderCallback Lib "fmod.dll" Alias "_FMUSIC_SetOrderCallback@12" (ByVal module As Long, ByVal callback As Long, ByVal rowstep As Long) As Byte
|
||||
Public Declare Function FMUSIC_SetInstCallback Lib "fmod.dll" Alias "_FMUSIC_SetInstCallback@12" (ByVal module As Long, ByVal callback As Long, ByVal instrument As Long) As Byte
|
||||
|
||||
Public Declare Function FMUSIC_SetSample Lib "fmod.dll" Alias "_FMUSIC_SetSample@12" (ByVal module As Long, ByVal sampno As Long, ByVal sptr As Long) As Byte
|
||||
Public Declare Function FMUSIC_SetUserData Lib "fmod.dll" Alias "_FMUSIC_SetUserData@8" (ByVal module As Long, ByVal userdata As Long) As Byte
|
||||
Public Declare Function FMUSIC_OptimizeChannels Lib "fmod.dll" Alias "_FMUSIC_OptimizeChannels@12" (ByVal module As Long, ByVal maxchannels As Long, ByVal minvolume As Long) As Byte
|
||||
|
||||
|
||||
' Runtime song functions
|
||||
|
||||
|
||||
Public Declare Function FMUSIC_SetReverb Lib "fmod.dll" Alias "_FMUSIC_SetReverb@4" (ByVal Reverb As Byte) As Byte
|
||||
Public Declare Function FMUSIC_SetLooping Lib "fmod.dll" Alias "_FMUSIC_SetLooping@8" (ByVal module As Long, ByVal looping As Byte) As Byte
|
||||
Public Declare Function FMUSIC_SetOrder Lib "fmod.dll" Alias "_FMUSIC_SetOrder@8" (ByVal module As Long, ByVal order As Long) As Byte
|
||||
Public Declare Function FMUSIC_SetPaused Lib "fmod.dll" Alias "_FMUSIC_SetPaused@8" (ByVal module As Long, ByVal Pause As Byte) As Byte
|
||||
Public Declare Function FMUSIC_SetMasterVolume Lib "fmod.dll" Alias "_FMUSIC_SetMasterVolume@8" (ByVal module As Long, ByVal volume As Long) As Byte
|
||||
Public Declare Function FMUSIC_SetMasterSpeed Lib "fmod.dll" Alias "_FMUSIC_SetMasterSpeed@8" (ByVal module As Long, ByVal speed As Single) As Byte
|
||||
Public Declare Function FMUSIC_SetPanSeperation Lib "fmod.dll" Alias "_FMUSIC_SetPanSeperation@8" (ByVal module As Long, ByVal pansep As Single) As Byte
|
||||
|
||||
|
||||
' Static song information functions
|
||||
|
||||
|
||||
Public Declare Function FMUSIC_GetName Lib "fmod.dll" Alias "_FMUSIC_GetName@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetType Lib "fmod.dll" Alias "_FMUSIC_GetType@4" (ByVal module As Long) As FMUSIC_TYPES
|
||||
Public Declare Function FMUSIC_GetNumOrders Lib "fmod.dll" Alias "_FMUSIC_GetNumOrders@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetNumPatterns Lib "fmod.dll" Alias "_FMUSIC_GetNumPatterns@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetNumInstruments Lib "fmod.dll" Alias "_FMUSIC_GetNumInstruments@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetNumSamples Lib "fmod.dll" Alias "_FMUSIC_GetNumSamples@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetNumChannels Lib "fmod.dll" Alias "_FMUSIC_GetNumChannels@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetSample Lib "fmod.dll" Alias "_FMUSIC_GetSample@8" (ByVal module As Long, ByVal sampno As Long) As Long
|
||||
Public Declare Function FMUSIC_GetPatternLength Lib "fmod.dll" Alias "_FMUSIC_GetPatternLength@8" (ByVal module As Long, ByVal orderno As Long) As Long
|
||||
|
||||
|
||||
' Runtime song information
|
||||
|
||||
|
||||
Public Declare Function FMUSIC_IsFinished Lib "fmod.dll" Alias "_FMUSIC_IsFinished@4" (ByVal module As Long) As Byte
|
||||
Public Declare Function FMUSIC_IsPlaying Lib "fmod.dll" Alias "_FMUSIC_IsPlaying@4" (ByVal module As Long) As Byte
|
||||
Public Declare Function FMUSIC_GetMasterVolume Lib "fmod.dll" Alias "_FMUSIC_GetMasterVolume@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetGlobalVolume Lib "fmod.dll" Alias "_FMUSIC_GetGlobalVolume@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetOrder Lib "fmod.dll" Alias "_FMUSIC_GetOrder@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetPattern Lib "fmod.dll" Alias "_FMUSIC_GetPattern@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetSpeed Lib "fmod.dll" Alias "_FMUSIC_GetSpeed@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetBPM Lib "fmod.dll" Alias "_FMUSIC_GetBPM@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetRow Lib "fmod.dll" Alias "_FMUSIC_GetRow@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetPaused Lib "fmod.dll" Alias "_FMUSIC_GetPaused@4" (ByVal module As Long) As Byte
|
||||
Public Declare Function FMUSIC_GetTime Lib "fmod.dll" Alias "_FMUSIC_GetTime@4" (ByVal module As Long) As Long
|
||||
Public Declare Function FMUSIC_GetRealChannel Lib "fmod.dll" Alias "_FMUSIC_GetRealChannel@8" (ByVal module As Long, ByVal modchannel As Long) As Long
|
||||
Public Declare Function FMUSIC_GetUserData Lib "fmod.dll" Alias "_FMUSIC_GetUserData@4" (ByVal module As Long) As Long
|
||||
|
||||
'************
|
||||
'* Windows Declarations (Added by Adion)
|
||||
'************
|
||||
'Required for GetStringFromPointer
|
||||
Private Declare Function ConvCStringToVBString Lib "kernel32" Alias "lstrcpyA" (ByVal lpsz As String, ByVal pt As Long) As Long ' Notice the As Long return value replacing the As String given by the API Viewer.
|
||||
'Required for the FFT/Spectral functions
|
||||
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal length As Long)
|
||||
|
||||
'************
|
||||
'* FUNCTIONS (Added by Adion)
|
||||
'************
|
||||
'Usage: myerrorstring = FSOUND_GetErrorString(FSOUND_GetError)
|
||||
Public Function FSOUND_GetErrorString(ByVal errorcode As Long) As String
|
||||
Select Case errorcode
|
||||
Case FMOD_ERR_NONE: FSOUND_GetErrorString = "No errors"
|
||||
Case FMOD_ERR_BUSY: FSOUND_GetErrorString = "Cannot call this command after FSOUND_Init. Call FSOUND_Close first."
|
||||
Case FMOD_ERR_UNINITIALIZED: FSOUND_GetErrorString = "This command failed because FSOUND_Init was not called"
|
||||
Case FMOD_ERR_PLAY: FSOUND_GetErrorString = "Playing the sound failed."
|
||||
Case FMOD_ERR_INIT: FSOUND_GetErrorString = "Error initializing output device."
|
||||
Case FMOD_ERR_ALLOCATED: FSOUND_GetErrorString = "The output device is already in use and cannot be reused."
|
||||
Case FMOD_ERR_OUTPUT_FORMAT: FSOUND_GetErrorString = "Soundcard does not support the features needed for this soundsystem (16bit stereo output)"
|
||||
Case FMOD_ERR_COOPERATIVELEVEL: FSOUND_GetErrorString = "Error setting cooperative level for hardware."
|
||||
Case FMOD_ERR_CREATEBUFFER: FSOUND_GetErrorString = "Error creating hardware sound buffer."
|
||||
Case FMOD_ERR_FILE_NOTFOUND: FSOUND_GetErrorString = "File not found"
|
||||
Case FMOD_ERR_FILE_FORMAT: FSOUND_GetErrorString = "Unknown file format"
|
||||
Case FMOD_ERR_FILE_BAD: FSOUND_GetErrorString = "Error loading file"
|
||||
Case FMOD_ERR_MEMORY: FSOUND_GetErrorString = "Not enough memory "
|
||||
Case FMOD_ERR_VERSION: FSOUND_GetErrorString = "The version number of this file format is not supported"
|
||||
Case FMOD_ERR_INVALID_PARAM: FSOUND_GetErrorString = "An invalid parameter was passed to this function"
|
||||
Case FMOD_ERR_NO_EAX: FSOUND_GetErrorString = "Tried to use an EAX command on a non EAX enabled channel or output."
|
||||
Case FMOD_ERR_CHANNEL_ALLOC: FSOUND_GetErrorString = "Failed to allocate a new channel"
|
||||
Case FMOD_ERR_RECORD: FSOUND_GetErrorString = "Recording is not supported on this machine"
|
||||
Case FMOD_ERR_MEDIAPLAYER: FSOUND_GetErrorString = "Required Mediaplayer codec is not installed"
|
||||
Case FMOD_ERR_CDDEVICE: FSOUND_GetErrorString = "An error occured trying to open the specified CD device"
|
||||
Case Else: FSOUND_GetErrorString = "Unknown error"
|
||||
End Select
|
||||
End Function
|
||||
|
||||
'Thanks to KarLKoX for the following function
|
||||
'Example: MyDriverName = GetStringFromPointer(FSOUND_GetDriverName(count))
|
||||
Public Function GetStringFromPointer(ByVal lpString As Long) As String
|
||||
Dim NullCharPos As Long
|
||||
Dim szBuffer As String
|
||||
|
||||
szBuffer = String(255, 0)
|
||||
ConvCStringToVBString szBuffer, lpString
|
||||
' Look for the null char ending the C string
|
||||
NullCharPos = InStr(szBuffer, vbNullChar)
|
||||
GetStringFromPointer = Left(szBuffer, NullCharPos - 1)
|
||||
End Function
|
||||
|
||||
'These functions are added by Adion
|
||||
Public Function GetSingleFromPointer(ByVal lpSingle As Long) As Single
|
||||
'A Single is 4 bytes, so we copy 4 bytes
|
||||
CopyMemory GetSingleFromPointer, ByVal lpSingle, 4
|
||||
End Function
|
||||
'Warning: You should set the fft dsp to active before retreiving the spectrum
|
||||
'Also make sure the array you pass is dimensioned and ready to use
|
||||
'FSOUND_DSP_SetActive FSOUND_DSP_GetFFTUnit, 1
|
||||
Public Function GetSpectrum(ByRef Spectrum() As Single)
|
||||
Dim nrOfVals As Long, lpSpectrum As Long
|
||||
Dim a As Long
|
||||
If UBound(Spectrum) > 511 Then nrOfVals = 512 Else nrOfVals = UBound(Spectrum) + 1
|
||||
lpSpectrum = FSOUND_DSP_GetSpectrum
|
||||
CopyMemory Spectrum(0), ByVal lpSpectrum, nrOfVals * 4
|
||||
End Function
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,90 @@
|
||||
# Microsoft Developer Studio Project File - Name="3d" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=3d - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "3d.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "3d.mak" CFG="3d - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "3d - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "3d - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "3d - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ..\..\api\lib\fmodvc.lib /nologo /subsystem:console /machine:I386 /out:"3d.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "3d - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ..\..\api\lib\fmodvc.lib /nologo /subsystem:console /debug /machine:I386 /out:"3d.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "3d - Win32 Release"
|
||||
# Name "3d - Win32 Debug"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Main.cpp
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
Binary file not shown.
@@ -0,0 +1,450 @@
|
||||
//===============================================================================================
|
||||
// 3D.EXE
|
||||
// Copyright (c), Firelight Technologies Pty, Ltd, 1999-2004.
|
||||
//
|
||||
// This test shows EAX, DS3D and Software all being used together and the simple commands needed
|
||||
// to set up some 3d audio.
|
||||
// This application also displays the use of FSOUND_GetDriverCaps to get information on the
|
||||
// 3D capabilities of the selected driver
|
||||
//===============================================================================================
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#if defined(WIN32) || defined(__WATCOMC__) || defined(_WIN64)
|
||||
#include <conio.h>
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include "../../api/inc/wincompat.h"
|
||||
#endif
|
||||
|
||||
#include "../../api/inc/fmod.h"
|
||||
#include "../../api/inc/fmod_errors.h" // optional
|
||||
|
||||
#define INTERFACE_UPDATETIME 50 // 50ms update for interface
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
void Close(FSOUND_SAMPLE *samp1, FSOUND_SAMPLE *samp2, FSOUND_SAMPLE *samp3)
|
||||
{
|
||||
// you dont need to free samples if you let fsound's sample manager look after samples, as
|
||||
// it will free them all for you.
|
||||
FSOUND_Sample_Free(samp1);
|
||||
FSOUND_Sample_Free(samp2);
|
||||
FSOUND_Sample_Free(samp3);
|
||||
|
||||
FSOUND_Close();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
int main()
|
||||
{
|
||||
FSOUND_SAMPLE *samp1 = NULL, *samp2 = NULL, *samp3 = NULL;
|
||||
char key, listenerflag = 1;
|
||||
int driver, i = 0, channel1 = -1, channel2 = -1;
|
||||
float listenerpos[3] = { 0,0,0 };
|
||||
|
||||
if (FSOUND_GetVersion() < FMOD_VERSION)
|
||||
{
|
||||
printf("Error : You are using the wrong DLL version! You should be using FMOD %.02f\n", FMOD_VERSION);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// ==========================================================================================
|
||||
// SELECT OUTPUT METHOD
|
||||
// ==========================================================================================
|
||||
|
||||
printf("---------------------------------------------------------\n");
|
||||
printf("Output Type\n");
|
||||
printf("---------------------------------------------------------\n");
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__CYGWIN32__) || defined(__WATCOMC__)
|
||||
printf("1 - Direct Sound\n");
|
||||
printf("2 - Windows Multimedia Waveout\n");
|
||||
printf("3 - ASIO\n");
|
||||
#elif defined(__linux__)
|
||||
printf("1 - OSS - Open Sound System\n");
|
||||
printf("2 - ESD - Elightment Sound Daemon\n");
|
||||
printf("3 - ALSA 0.9 - Advanced Linux Sound Architecture\n");
|
||||
#endif
|
||||
printf("4 - NoSound\n");
|
||||
printf("---------------------------------------------------------\n"); // print driver names
|
||||
printf("Press a corresponding number or ESC to quit\n");
|
||||
|
||||
do
|
||||
{
|
||||
key = getch();
|
||||
} while (key != 27 && key < '1' && key > '4');
|
||||
|
||||
switch (key)
|
||||
{
|
||||
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__CYGWIN32__) || defined(__WATCOMC__)
|
||||
case '1' : FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
|
||||
break;
|
||||
case '2' : FSOUND_SetOutput(FSOUND_OUTPUT_WINMM);
|
||||
break;
|
||||
case '3' : FSOUND_SetOutput(FSOUND_OUTPUT_ASIO);
|
||||
break;
|
||||
#elif defined(__linux__)
|
||||
case '1' : FSOUND_SetOutput(FSOUND_OUTPUT_OSS);
|
||||
break;
|
||||
case '2' : FSOUND_SetOutput(FSOUND_OUTPUT_ESD);
|
||||
break;
|
||||
case '3' : FSOUND_SetOutput(FSOUND_OUTPUT_ALSA);
|
||||
break;
|
||||
#endif
|
||||
case '4' : FSOUND_SetOutput(FSOUND_OUTPUT_NOSOUND);
|
||||
break;
|
||||
default : return 1;
|
||||
}
|
||||
|
||||
|
||||
// ==========================================================================================
|
||||
// SELECT DRIVER
|
||||
// ==========================================================================================
|
||||
|
||||
// The following list are the drivers for the output method selected above.
|
||||
printf("---------------------------------------------------------\n");
|
||||
switch (FSOUND_GetOutput())
|
||||
{
|
||||
case FSOUND_OUTPUT_NOSOUND: printf("NoSound"); break;
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__CYGWIN32__) || defined(__WATCOMC__)
|
||||
case FSOUND_OUTPUT_WINMM: printf("Windows Multimedia Waveout"); break;
|
||||
case FSOUND_OUTPUT_DSOUND: printf("Direct Sound"); break;
|
||||
case FSOUND_OUTPUT_ASIO: printf("ASIO"); break;
|
||||
#elif defined(__linux__)
|
||||
case FSOUND_OUTPUT_OSS: printf("Open Sound System"); break;
|
||||
case FSOUND_OUTPUT_ESD: printf("Enlightment Sound Daemon"); break;
|
||||
case FSOUND_OUTPUT_ALSA: printf("Alsa"); break;
|
||||
#endif
|
||||
|
||||
};
|
||||
printf(" Driver list\n");
|
||||
printf("---------------------------------------------------------\n");
|
||||
|
||||
for (i=0; i < FSOUND_GetNumDrivers(); i++)
|
||||
{
|
||||
printf("%d - %s\n", i+1, FSOUND_GetDriverName(i)); // print driver names
|
||||
{
|
||||
unsigned int caps = 0;
|
||||
|
||||
FSOUND_GetDriverCaps(i, &caps);
|
||||
|
||||
if (caps & FSOUND_CAPS_HARDWARE)
|
||||
printf(" * Driver supports hardware 3D sound!\n");
|
||||
if (caps & FSOUND_CAPS_EAX2)
|
||||
printf(" * Driver supports EAX 2 reverb!\n");
|
||||
if (caps & FSOUND_CAPS_EAX3)
|
||||
printf(" * Driver supports EAX 3 reverb!\n");
|
||||
}
|
||||
}
|
||||
printf("---------------------------------------------------------\n"); // print driver names
|
||||
printf("Press a corresponding number or ESC to quit\n");
|
||||
|
||||
do
|
||||
{
|
||||
key = getch();
|
||||
if (key == 27)
|
||||
return 0;
|
||||
driver = key - '1';
|
||||
} while (driver < 0 || driver >= FSOUND_GetNumDrivers());
|
||||
|
||||
FSOUND_SetDriver(driver); // Select sound card (0 = default)
|
||||
|
||||
{
|
||||
unsigned int caps = 0;
|
||||
|
||||
FSOUND_GetDriverCaps(FSOUND_GetDriver(), &caps);
|
||||
|
||||
printf("---------------------------------------------------------\n");
|
||||
printf("Driver capabilities\n");
|
||||
printf("---------------------------------------------------------\n");
|
||||
if (!caps)
|
||||
printf("- This driver will support software mode only.\n It does not properly support 3D sound hardware.\n");
|
||||
if (caps & FSOUND_CAPS_HARDWARE)
|
||||
printf("- Driver supports hardware 3D sound!\n");
|
||||
if (caps & FSOUND_CAPS_EAX2)
|
||||
printf("- Driver supports EAX 2 reverb!\n");
|
||||
if (caps & FSOUND_CAPS_EAX3)
|
||||
printf("- Driver supports EAX 3 reverb!\n");
|
||||
printf("---------------------------------------------------------\n");
|
||||
}
|
||||
|
||||
FSOUND_SetMixer(FSOUND_MIXER_AUTODETECT);
|
||||
|
||||
// ==========================================================================================
|
||||
// INITIALIZE
|
||||
// ==========================================================================================
|
||||
if (!FSOUND_Init(44100, 32, 0))
|
||||
{
|
||||
printf("Init: %s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
// ==========================================================================================
|
||||
// LOAD SAMPLES
|
||||
// ==========================================================================================
|
||||
|
||||
// ==========================================================================================
|
||||
// 3D MONO
|
||||
// ==========================================================================================
|
||||
|
||||
samp1 = FSOUND_Sample_Load(FSOUND_FREE, "../../media/drumloop.wav", FSOUND_HW3D, 0, 0);
|
||||
if (!samp1)
|
||||
{
|
||||
printf("samp1: %s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
Close(samp1, samp2, samp3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// increasing mindistnace makes it louder in 3d space
|
||||
FSOUND_Sample_SetMinMaxDistance(samp1, 4.0f, 10000.0f);
|
||||
FSOUND_Sample_SetMode(samp1, FSOUND_LOOP_NORMAL);
|
||||
|
||||
// ==========================================================================================
|
||||
// 3D MONO
|
||||
// ==========================================================================================
|
||||
samp2 = FSOUND_Sample_Load(FSOUND_UNMANAGED, "../../media/jaguar.wav", FSOUND_HW3D, 0, 0);
|
||||
if (!samp2)
|
||||
{
|
||||
printf("samp2: %s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
Close(samp1, samp2, samp3);
|
||||
return 1;
|
||||
}
|
||||
// increasing mindistance makes it louder in 3d space
|
||||
FSOUND_Sample_SetMinMaxDistance(samp2, 4.0f, 10000.0f);
|
||||
FSOUND_Sample_SetMode(samp2, FSOUND_LOOP_NORMAL);
|
||||
|
||||
// ==========================================================================================
|
||||
// 2D STEREO
|
||||
// ==========================================================================================
|
||||
samp3 = FSOUND_Sample_Load(FSOUND_UNMANAGED, "../../media/chimes.wav", FSOUND_HW2D, 0, 0);
|
||||
if (!samp3)
|
||||
{
|
||||
printf("samp3: %s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
Close(samp1, samp2, samp3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// ==========================================================================================
|
||||
// DISPLAY HELP
|
||||
// ==========================================================================================
|
||||
|
||||
printf("FSOUND Output Method : ");
|
||||
switch (FSOUND_GetOutput())
|
||||
{
|
||||
case FSOUND_OUTPUT_NOSOUND: printf("FSOUND_OUTPUT_NOSOUND\n"); break;
|
||||
case FSOUND_OUTPUT_WINMM: printf("FSOUND_OUTPUT_WINMM\n"); break;
|
||||
case FSOUND_OUTPUT_DSOUND: printf("FSOUND_OUTPUT_DSOUND\n"); break;
|
||||
case FSOUND_OUTPUT_ASIO: printf("FSOUND_OUTPUT_ASIO\n"); break;
|
||||
case FSOUND_OUTPUT_OSS: printf("FSOUND_OUTPUT_OSS\n"); break;
|
||||
case FSOUND_OUTPUT_ESD: printf("FSOUND_OUTPUT_ESD\n"); break;
|
||||
case FSOUND_OUTPUT_ALSA: printf("FSOUND_OUTPUT_ALSA\n"); break;
|
||||
};
|
||||
|
||||
printf("FSOUND Mixer : ");
|
||||
switch (FSOUND_GetMixer())
|
||||
{
|
||||
case FSOUND_MIXER_BLENDMODE: printf("FSOUND_MIXER_BLENDMODE\n"); break;
|
||||
case FSOUND_MIXER_MMXP5: printf("FSOUND_MIXER_MMXP5\n"); break;
|
||||
case FSOUND_MIXER_MMXP6: printf("FSOUND_MIXER_MMXP6\n"); break;
|
||||
case FSOUND_MIXER_QUALITY_FPU: printf("FSOUND_MIXER_QUALITY_FPU\n"); break;
|
||||
case FSOUND_MIXER_QUALITY_MMXP5: printf("FSOUND_MIXER_QUALITY_MMXP5\n"); break;
|
||||
case FSOUND_MIXER_QUALITY_MMXP6: printf("FSOUND_MIXER_QUALITY_MMXP6\n"); break;
|
||||
};
|
||||
printf("FSOUND Driver : ");
|
||||
printf("%s\n", FSOUND_GetDriverName(FSOUND_GetDriver()));
|
||||
|
||||
int num2d, num3d;
|
||||
|
||||
FSOUND_GetNumHWChannels(&num2d, &num3d, NULL);
|
||||
|
||||
printf("Hardware 2D channels : %d\n", num2d);
|
||||
printf("Hardware 3D channels : %d\n", num3d);
|
||||
|
||||
printf("=========================================================================\n");
|
||||
printf("Press 1 Pause/Unpause 16bit 3D sound at any time\n");
|
||||
printf(" 2 Pause/Unpause 8bit 3D sound at any time\n");
|
||||
printf(" 3 Play 16bit STEREO 2D sound at any time\n");
|
||||
printf(" 4 Change to EAX Reverb mode CONCERTHALL (DirectSound/SBLive only)\n");
|
||||
printf(" 5 Change to EAX Reverb mode SEWERPIPE (DirectSound/SBLive only)\n");
|
||||
printf(" 6 Change to EAX Reverb mode PSYCHOTIC (DirectSound/SBLive only)\n");
|
||||
printf(" < Move listener left (in still mode)\n");
|
||||
printf(" > Move listener right (in still mode)\n");
|
||||
printf(" SPACE Stop/Start listener automatic movement\n");
|
||||
printf(" ESC Quit\n");
|
||||
printf("=========================================================================\n");
|
||||
|
||||
// ==========================================================================================
|
||||
// PLAY 2 LOOPING SOUNDS
|
||||
// ==========================================================================================
|
||||
|
||||
|
||||
{
|
||||
float pos[3] = { -10.0f, -0.0f, 0.0f };
|
||||
float vel[3] = { 0,0,0 };
|
||||
|
||||
channel1 = FSOUND_PlaySoundEx(FSOUND_FREE, samp1, NULL, TRUE);
|
||||
FSOUND_3D_SetAttributes(channel1, pos, vel);
|
||||
if (!FSOUND_SetPaused(channel1, FALSE))
|
||||
{
|
||||
printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
}
|
||||
}
|
||||
{
|
||||
float pos[3] = { 15.0f, -0.0f, -0.0f };
|
||||
float vel[3] = { 0,0,0 };
|
||||
|
||||
channel2 = FSOUND_PlaySoundEx(FSOUND_FREE, samp2, NULL, TRUE);
|
||||
FSOUND_3D_SetAttributes(channel2, pos, vel);
|
||||
FSOUND_SetVolume(channel2, 128);
|
||||
if (!FSOUND_SetPaused(channel2, FALSE))
|
||||
{
|
||||
printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
}
|
||||
}
|
||||
|
||||
// ==========================================================================================
|
||||
// MAIN LOOP
|
||||
// ==========================================================================================
|
||||
|
||||
do
|
||||
{
|
||||
if (kbhit())
|
||||
{
|
||||
key = getch();
|
||||
|
||||
if (key == '1')
|
||||
{
|
||||
FSOUND_SetPaused(channel1, !FSOUND_GetPaused(channel1));
|
||||
}
|
||||
if (key == '2')
|
||||
{
|
||||
FSOUND_SetPaused(channel2, !FSOUND_GetPaused(channel2));
|
||||
}
|
||||
if (key == '3')
|
||||
{
|
||||
FSOUND_PlaySound(FSOUND_FREE, samp3);
|
||||
}
|
||||
if (key == '4')
|
||||
{
|
||||
FSOUND_REVERB_PROPERTIES props = FSOUND_PRESET_CONCERTHALL;
|
||||
FSOUND_Reverb_SetProperties(&props);
|
||||
}
|
||||
if (key == '5')
|
||||
{
|
||||
FSOUND_REVERB_PROPERTIES props = FSOUND_PRESET_SEWERPIPE;
|
||||
FSOUND_Reverb_SetProperties(&props);
|
||||
}
|
||||
if (key == '6')
|
||||
{
|
||||
FSOUND_REVERB_PROPERTIES props = FSOUND_PRESET_PSYCHOTIC;
|
||||
FSOUND_Reverb_SetProperties(&props);
|
||||
}
|
||||
|
||||
if (key == ' ')
|
||||
{
|
||||
listenerflag = !listenerflag;
|
||||
}
|
||||
|
||||
if (!listenerflag)
|
||||
{
|
||||
if (key == '<')
|
||||
{
|
||||
listenerpos[0] -= 1.0f;
|
||||
if (listenerpos[0] < -35)
|
||||
{
|
||||
listenerpos[0] = -35;
|
||||
}
|
||||
}
|
||||
if (key == '>')
|
||||
{
|
||||
listenerpos[0] += 1.0f;
|
||||
if (listenerpos[0] > 30)
|
||||
{
|
||||
listenerpos[0] = 30;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ==========================================================================================
|
||||
// UPDATE THE LISTENER
|
||||
// ==========================================================================================
|
||||
{
|
||||
static float t = 0;
|
||||
static float lastpos[3] = { 0,0,0 };
|
||||
float vel[3];
|
||||
|
||||
if (listenerflag)
|
||||
{
|
||||
listenerpos[0] = ((float)sin(t*0.05f) * 33.0f); // left right pingpong
|
||||
}
|
||||
|
||||
// ********* NOTE ******* READ NEXT COMMENT!!!!!
|
||||
// vel = how far we moved last FRAME (m/f), then time compensate it to SECONDS (m/s).
|
||||
vel[0] = (listenerpos[0]-lastpos[0]) * (1000 / INTERFACE_UPDATETIME);
|
||||
vel[1] = (listenerpos[1]-lastpos[1]) * (1000 / INTERFACE_UPDATETIME);
|
||||
vel[2] = (listenerpos[2]-lastpos[2]) * (1000 / INTERFACE_UPDATETIME);
|
||||
|
||||
// store pos for next time
|
||||
lastpos[0] = listenerpos[0];
|
||||
lastpos[1] = listenerpos[1];
|
||||
lastpos[2] = listenerpos[2];
|
||||
|
||||
FSOUND_3D_Listener_SetAttributes(&listenerpos[0], &vel[0], 0, 0, 1.0f, 0, 1.0f, 0);
|
||||
|
||||
t += (30 * (1.0f / (float)INTERFACE_UPDATETIME)); // t is just a time value .. it increments in 30m/s steps in this example
|
||||
|
||||
// print out a small visual display
|
||||
{
|
||||
char s[80];
|
||||
|
||||
sprintf(s, "|.......................<1>......................<2>....................|");
|
||||
|
||||
s[(int)(listenerpos[0])+35] = 'L';
|
||||
printf("%s\r", s);
|
||||
}
|
||||
}
|
||||
|
||||
FSOUND_Update();
|
||||
|
||||
Sleep(INTERFACE_UPDATETIME-1); // -1 for time taken for printf etc
|
||||
|
||||
} while (key != 27);
|
||||
|
||||
printf("\n");
|
||||
|
||||
// ==========================================================================================
|
||||
// CLEANUP AND SHUTDOWN
|
||||
// ==========================================================================================
|
||||
|
||||
Close(samp1, samp2, samp3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
wpp386 main.cpp
|
||||
wlink system nt name 3d.exe file main.obj library ..\..\api\lib\fmodwc.lib
|
||||
@@ -0,0 +1,258 @@
|
||||
//===============================================================================================
|
||||
// CDDA.EXE
|
||||
// Copyright (c), Firelight Technologies Pty, Ltd, 1999-2004.
|
||||
//
|
||||
// Use FMOD stream API to do digital CD playback. Also demonstrates how to use FMOD to
|
||||
// generate a CDDB query.
|
||||
//===============================================================================================
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__WATCOMC__)
|
||||
#include <windows.h>
|
||||
#include <conio.h>
|
||||
#else
|
||||
#include "../../api/inc/wincompat.h"
|
||||
#include <string.h>
|
||||
#endif
|
||||
|
||||
#include "../../api/inc/fmod.h"
|
||||
#include "../../api/inc/fmod_errors.h" // optional
|
||||
|
||||
|
||||
int cddb_sum(int n)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
while (n > 0)
|
||||
{
|
||||
ret += (n % 10);
|
||||
n /= 10;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned long cddb_discid(FSOUND_TOC_TAG *toc)
|
||||
{
|
||||
int i, t, n = 0;
|
||||
|
||||
for (i = 0; i < toc->numtracks; i++)
|
||||
{
|
||||
n += cddb_sum((toc->min[i] * 60) + toc->sec[i]);
|
||||
}
|
||||
|
||||
t = ((toc->min[toc->numtracks] * 60) + toc->sec[toc->numtracks]) - ((toc->min[0] * 60) + toc->sec[0]);
|
||||
|
||||
return ((n % 0xff) << 24 | t << 8 | toc->numtracks);
|
||||
}
|
||||
|
||||
void dump_cddb_query(FSOUND_TOC_TAG *toc)
|
||||
{
|
||||
int i;
|
||||
|
||||
printf("cddb query %08x %d", cddb_discid(toc), toc->numtracks);
|
||||
|
||||
for (i = 0; i < toc->numtracks; i++)
|
||||
{
|
||||
printf(" %d", (toc->min[i] * (60 * 75)) + (toc->sec[i] * 75) + toc->frame[i]);
|
||||
}
|
||||
|
||||
printf(" %d\n", (toc->min[toc->numtracks] * 60) + toc->sec[toc->numtracks]);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
unsigned char key;
|
||||
FSOUND_STREAM *stream;
|
||||
int channel = -1;
|
||||
int track = 0;
|
||||
char *cd_error;
|
||||
char drive_letter[6] = "d:*?j";
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
printf("Usage: cdda <driveletter>\n");
|
||||
printf("Example: cdda d\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
drive_letter[0] = argv[1][0];
|
||||
if (!((drive_letter[0] >= 'a' && drive_letter[0] <= 'z') || (drive_letter[0] >= 'A' && drive_letter[0] <= 'Z')))
|
||||
{
|
||||
printf("ERROR: Invalid drive letter\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (FSOUND_GetVersion() < FMOD_VERSION)
|
||||
{
|
||||
printf("ERROR: You are using the wrong DLL version! You should be using FMOD %.02f\n", FMOD_VERSION);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!FSOUND_Init(44100, 32, 0))
|
||||
{
|
||||
printf("ERROR: %s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
FSOUND_Stream_SetBufferSize(2000);
|
||||
|
||||
stream = FSOUND_Stream_Open(drive_letter, FSOUND_NORMAL | FSOUND_NONBLOCKING, 0, 0);
|
||||
if (!stream)
|
||||
{
|
||||
printf("ERROR: %s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
FSOUND_Stream_SetSubStream(stream, 0);
|
||||
|
||||
printf("=========================================================================\n");
|
||||
printf("Press f Skip forward 2 seconds\n");
|
||||
printf(" b Skip back 2 seconds\n");
|
||||
printf(" n Next track\n");
|
||||
printf(" SPACE Pause/Unpause\n");
|
||||
printf(" ESC Quit\n");
|
||||
printf("=========================================================================\n");
|
||||
|
||||
key = 0;
|
||||
do
|
||||
{
|
||||
static int last_openstate = -1;
|
||||
|
||||
if (stream && (channel < 0))
|
||||
{
|
||||
int this_openstate = FSOUND_Stream_GetOpenState(stream);
|
||||
|
||||
if (this_openstate == -3)
|
||||
{
|
||||
if (FSOUND_Stream_FindTagField(stream, 0, "CD_ERROR", (void **)&cd_error, 0))
|
||||
{
|
||||
printf("%s\n", cd_error);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("ERROR: Couldn't open CDDA stream\n");
|
||||
}
|
||||
FSOUND_Stream_Close(stream);
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((last_openstate != 0) && (this_openstate == 0))
|
||||
{
|
||||
static int firsttime = TRUE;
|
||||
|
||||
if (firsttime)
|
||||
{
|
||||
char *cd_device_info;
|
||||
FSOUND_TOC_TAG *toc;
|
||||
|
||||
if (FSOUND_Stream_FindTagField(stream, 0, "CD_TOC", (void **)&toc, 0))
|
||||
{
|
||||
dump_cddb_query(toc);
|
||||
}
|
||||
|
||||
if (!FSOUND_Stream_GetTagField(stream, 0, 0, 0, (void **)&cd_device_info, 0))
|
||||
{
|
||||
printf("ERROR: Couldn't get CD_DEVICE_INFO tag\n");
|
||||
FSOUND_Stream_Close(stream);
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
printf(cd_device_info);
|
||||
printf("\n=========================================================================\n");
|
||||
firsttime = FALSE;
|
||||
|
||||
if (FSOUND_Stream_FindTagField(stream, 0, "CD_ERROR", (void **)&cd_error, 0))
|
||||
{
|
||||
printf("%s\n", cd_error);
|
||||
FSOUND_Stream_Close(stream);
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
channel = FSOUND_Stream_PlayEx(FSOUND_FREE, stream, 0, TRUE);
|
||||
FSOUND_SetPaused(channel, FALSE);
|
||||
}
|
||||
|
||||
last_openstate = this_openstate;
|
||||
}
|
||||
|
||||
if (kbhit())
|
||||
{
|
||||
key = getch();
|
||||
|
||||
if (channel != -1)
|
||||
{
|
||||
if (key == ' ')
|
||||
{
|
||||
FSOUND_SetPaused(channel, !FSOUND_GetPaused(channel));
|
||||
}
|
||||
|
||||
if (key == 'f')
|
||||
{
|
||||
FSOUND_Stream_SetTime(stream, FSOUND_Stream_GetTime(stream) + 2000);
|
||||
}
|
||||
|
||||
if (key == 'b')
|
||||
{
|
||||
FSOUND_Stream_SetTime(stream, FSOUND_Stream_GetTime(stream) - 2000);
|
||||
}
|
||||
|
||||
if (key == 'n')
|
||||
{
|
||||
track++;
|
||||
if (track >= FSOUND_Stream_GetNumSubStreams(stream))
|
||||
{
|
||||
track = 0;
|
||||
}
|
||||
FSOUND_Stream_SetSubStream(stream, track);
|
||||
last_openstate = -2;
|
||||
channel = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (FSOUND_Stream_GetOpenState(stream) == 0)
|
||||
{
|
||||
printf("Track %d/%d %02d:%02d/%02d:%02d cpu %5.02f%% \r", track + 1,
|
||||
FSOUND_Stream_GetNumSubStreams(stream),
|
||||
FSOUND_Stream_GetTime(stream) / 1000 / 60,
|
||||
FSOUND_Stream_GetTime(stream) / 1000 % 60,
|
||||
FSOUND_Stream_GetLengthMs(stream) / 1000 / 60,
|
||||
FSOUND_Stream_GetLengthMs(stream) / 1000 % 60,
|
||||
FSOUND_GetCPUUsage());
|
||||
}
|
||||
|
||||
FSOUND_Update();
|
||||
Sleep(10);
|
||||
|
||||
} while (key != 27);
|
||||
|
||||
printf("\n");
|
||||
|
||||
FSOUND_Stream_Close(stream);
|
||||
FSOUND_Close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
# Microsoft Developer Studio Project File - Name="cdda" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=cdda - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "cdda.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "cdda.mak" CFG="cdda - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "cdda - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "cdda - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "cdda - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0xc09 /d "NDEBUG"
|
||||
# ADD RSC /l 0xc09 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ../../api/lib/fmodvc.lib /nologo /subsystem:console /machine:I386 /out:"cdda.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "cdda - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0xc09 /d "_DEBUG"
|
||||
# ADD RSC /l 0xc09 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ../../api/lib/fmodvc.lib /nologo /subsystem:console /debug /machine:I386 /out:"cdda.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "cdda - Win32 Release"
|
||||
# Name "cdda - Win32 Debug"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Main.cpp
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
wpp386 main.cpp
|
||||
wlink system nt name cdda.exe file main.obj library ..\..\api\lib\fmodwc.lib
|
||||
@@ -0,0 +1,235 @@
|
||||
//===============================================================================================
|
||||
// CDDARIP.EXE
|
||||
// Copyright (c), Firelight Technologies Pty, Ltd, 1999-2004.
|
||||
//
|
||||
// Use CDDA streaming to rip a CD track to a wav file
|
||||
//===============================================================================================
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__WATCOMC__)
|
||||
#include <windows.h>
|
||||
#include <conio.h>
|
||||
#define __PACKED /*dummy*/
|
||||
#else
|
||||
#include "../../api/inc/wincompat.h"
|
||||
#include <string.h>
|
||||
#define __PACKED __attribute__((packed)) /* gcc packed */
|
||||
#endif
|
||||
|
||||
#include "../../api/inc/fmod.h"
|
||||
#include "../../api/inc/fmod_errors.h" // optional
|
||||
|
||||
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__WATCOMC__) || defined(_WIN32) || defined(__WIN32__)
|
||||
#pragma pack(1)
|
||||
#endif
|
||||
|
||||
/*
|
||||
WAV Structures
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
signed char id[4];
|
||||
int size;
|
||||
} RiffChunk;
|
||||
|
||||
struct
|
||||
{
|
||||
RiffChunk chunk __PACKED;
|
||||
unsigned short wFormatTag __PACKED; /* format type */
|
||||
unsigned short nChannels __PACKED; /* number of channels (i.e. mono, stereo...) */
|
||||
unsigned int nSamplesPerSec __PACKED; /* sample rate */
|
||||
unsigned int nAvgBytesPerSec __PACKED; /* for buffer estimation */
|
||||
unsigned short nBlockAlign __PACKED; /* block size of data */
|
||||
unsigned short wBitsPerSample __PACKED; /* number of bits per sample of mono data */
|
||||
} FmtChunk = { {{'f','m','t',' '}, sizeof(FmtChunk) - sizeof(RiffChunk) }, 1, 2, 44100, 44100 * 2 * 16 / 8, 1 * 2 * 16 / 8, 16 } __PACKED;
|
||||
|
||||
struct
|
||||
{
|
||||
RiffChunk chunk;
|
||||
} DataChunk = { {{'d','a','t','a'}, 0 } };
|
||||
|
||||
struct
|
||||
{
|
||||
RiffChunk chunk;
|
||||
signed char rifftype[4];
|
||||
} WavHeader = { {{'R','I','F','F'}, 0 }, {'W','A','V','E'} };
|
||||
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__WATCOMC__) || defined(_WIN32) || defined(__WIN32__)
|
||||
#pragma pack()
|
||||
#endif
|
||||
|
||||
|
||||
const char bar[56] = "==================================================";
|
||||
const char nobar[56] = " ";
|
||||
|
||||
FILE *fp;
|
||||
signed char stream_ended = FALSE;
|
||||
unsigned int byteswritten = 0;
|
||||
|
||||
|
||||
signed char F_CALLBACKAPI endcallback(FSOUND_STREAM *stream, void *buff, int len, void *param)
|
||||
{
|
||||
stream_ended = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void * F_CALLBACKAPI DSP_RawWriteCallback(void *originalbuffer, void *newbuffer, int length, void *param)
|
||||
{
|
||||
if (fp && !stream_ended)
|
||||
{
|
||||
fwrite(newbuffer, 1, length << 2, fp);
|
||||
byteswritten += (length << 2);
|
||||
}
|
||||
|
||||
return newbuffer;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
char s[256];
|
||||
unsigned char key;
|
||||
char drive_letter[5] = "d:*j";
|
||||
int track_num, read_percent;
|
||||
unsigned int start_time, elapsed_time;
|
||||
FSOUND_STREAM *stream;
|
||||
FSOUND_DSPUNIT *rawwrite_dsp;
|
||||
|
||||
start_time = timeGetTime();
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
printf("Usage: cddarip <driveletter> <tracknumber starting from 1>\n");
|
||||
printf("Example: cddarip d 2\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
drive_letter[0] = argv[1][0];
|
||||
if (!((drive_letter[0] >= 'a' && drive_letter[0] <= 'z') || (drive_letter[0] >= 'A' && drive_letter[0] <= 'Z')))
|
||||
{
|
||||
printf("ERROR: Invalid drive letter\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (FSOUND_GetVersion() < FMOD_VERSION)
|
||||
{
|
||||
printf("Error : You are using the wrong DLL version! You should be using FMOD %.02f\n", FMOD_VERSION);
|
||||
return 1;
|
||||
}
|
||||
|
||||
FSOUND_SetOutput(FSOUND_OUTPUT_NOSOUND_NONREALTIME);
|
||||
|
||||
if (!FSOUND_Init(44100, 32, 0))
|
||||
{
|
||||
printf("Error!\n");
|
||||
printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
fp = fopen("dump.wav", "wb");
|
||||
if (!fp)
|
||||
{
|
||||
printf("ERROR: Couldn't open dump.wav for writing\n");
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
Before we've even written the headers for the wav out, seek to the offset the raw data will start from.
|
||||
*/
|
||||
fseek(fp, sizeof(WavHeader) + sizeof(FmtChunk) + sizeof(DataChunk), SEEK_SET);
|
||||
|
||||
/*
|
||||
Create a DSP callback which will capture the mixed data and write it to disk
|
||||
*/
|
||||
rawwrite_dsp = FSOUND_DSP_Create(&DSP_RawWriteCallback, FSOUND_DSP_DEFAULTPRIORITY_USER, 0);
|
||||
FSOUND_DSP_SetActive(rawwrite_dsp, TRUE);
|
||||
|
||||
FSOUND_Stream_SetBufferSize(2000);
|
||||
|
||||
stream = FSOUND_Stream_Open(drive_letter, FSOUND_NORMAL, 0, 0);
|
||||
if (!stream)
|
||||
{
|
||||
printf("ERROR: Couldn't create CDDA stream\n");
|
||||
FSOUND_DSP_SetActive(rawwrite_dsp, FALSE);
|
||||
FSOUND_DSP_Free(rawwrite_dsp);
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
track_num = atoi(argv[2]);
|
||||
if ((track_num < 1) || ((track_num - 1) >= FSOUND_Stream_GetNumSubStreams(stream)))
|
||||
{
|
||||
printf("ERROR: Invalid track number\n");
|
||||
FSOUND_Stream_Close(stream);
|
||||
FSOUND_DSP_SetActive(rawwrite_dsp, FALSE);
|
||||
FSOUND_DSP_Free(rawwrite_dsp);
|
||||
FSOUND_Close();
|
||||
return 1;
|
||||
}
|
||||
|
||||
FSOUND_Stream_SetEndCallback(stream, endcallback, 0);
|
||||
FSOUND_Stream_SetSubStream(stream, track_num - 1);
|
||||
FSOUND_Stream_Play(FSOUND_FREE, stream);
|
||||
|
||||
printf("Ripping %s track %d (%02d:%02d)\n", drive_letter, track_num, FSOUND_Stream_GetLengthMs(stream) / 1000 / 60, FSOUND_Stream_GetLengthMs(stream) / 1000 % 60);
|
||||
|
||||
key = 0;
|
||||
do
|
||||
{
|
||||
if (kbhit())
|
||||
{
|
||||
key = getch();
|
||||
}
|
||||
|
||||
read_percent = (int)(((float)FSOUND_Stream_GetTime(stream) / (float)FSOUND_Stream_GetLengthMs(stream)) * 100.0f);
|
||||
s[0] = 0;
|
||||
strncat(s, bar, (read_percent >> 1) + (read_percent & 1));
|
||||
strncat(s, nobar, (100 - read_percent) >> 1);
|
||||
printf("|%s| %d%% \r", s, read_percent);
|
||||
|
||||
FSOUND_Update();
|
||||
|
||||
} while ((key != 27) && !stream_ended);
|
||||
|
||||
FSOUND_Stream_Close(stream);
|
||||
FSOUND_DSP_SetActive(rawwrite_dsp, FALSE);
|
||||
FSOUND_DSP_Free(rawwrite_dsp);
|
||||
|
||||
/*
|
||||
Now finalize the wav file by seeking to the start and putting in the headers.
|
||||
*/
|
||||
WavHeader.chunk.size = sizeof(FmtChunk) + sizeof(RiffChunk) + byteswritten;
|
||||
DataChunk.chunk.size = byteswritten;
|
||||
|
||||
fseek(fp, 0, SEEK_SET);
|
||||
fwrite(&WavHeader, sizeof(WavHeader), 1, fp);
|
||||
fwrite(&FmtChunk, sizeof(FmtChunk), 1, fp);
|
||||
fwrite(&DataChunk, sizeof(DataChunk), 1, fp);
|
||||
fclose(fp);
|
||||
|
||||
FSOUND_Close();
|
||||
|
||||
elapsed_time = timeGetTime() - start_time;
|
||||
printf("\nElapsed time: %02d:%02d\n", elapsed_time / 1000 / 60, elapsed_time / 1000 % 60);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
# Microsoft Developer Studio Project File - Name="cddarip" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=cddarip - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "cddarip.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "cddarip.mak" CFG="cddarip - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "cddarip - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "cddarip - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "cddarip - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0xc09 /d "NDEBUG"
|
||||
# ADD RSC /l 0xc09 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ../../api/lib/fmodvc.lib winmm.lib /nologo /subsystem:console /machine:I386 /out:"cddarip.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "cddarip - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0xc09 /d "_DEBUG"
|
||||
# ADD RSC /l 0xc09 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ../../api/lib/fmodvc.lib winmm.lib /nologo /subsystem:console /debug /machine:I386 /out:"cddarip.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "cddarip - Win32 Release"
|
||||
# Name "cddarip - Win32 Debug"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Main.cpp
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
wpp386 main.cpp
|
||||
wlink system nt name cddarip.exe file main.obj library ..\..\api\lib\fmodwc.lib
|
||||
@@ -0,0 +1,532 @@
|
||||
/*===========================================================================================
|
||||
DSP.EXE
|
||||
Copyright (c), Firelight Technologies Pty, Ltd, 1999-2004.
|
||||
|
||||
This example demonstrates advanced DSP usage.
|
||||
You can now attach sounds to dsp units. The dsp units to be attached to must have a NULL
|
||||
callback. It is simply a holder for sounds to attach to, and have a specific position in
|
||||
the DSP chain.. see the diagram below for a visual representation of the DSP chain.
|
||||
It also demonstrates the use of hardware DirectX 8 FX.
|
||||
===========================================================================================*/
|
||||
|
||||
|
||||
/*
|
||||
Priority : 0 100 320-332 400 1000
|
||||
Name : [CLEAR]-->[samp1-WET]-->[REVERB]-->[samp1-DRY]-->[CLIPCOPY]-->[SOUNDCARD]
|
||||
|
||||
Note the above priority values correspond to the values in FMOD.H
|
||||
|
||||
FSOUND_DSP_DEFAULTPRIORITY_CLEARUNIT 0
|
||||
FSOUND_DSP_DEFAULTPRIORITY_SFXUNIT 100
|
||||
FSOUND_DSP_DEFAULTPRIORITY_MUSICUNIT 200
|
||||
FSOUND_DSP_DEFAULTPRIORITY_USER 300
|
||||
FSOUND_DSP_DEFAULTPRIORITY_FFTUNIT 900
|
||||
FSOUND_DSP_DEFAULTPRIORITY_CLIPANDCOPYUNIT 1000
|
||||
|
||||
Notice how 'SFX' unit is wet (has reverb). This is because it is the default destination
|
||||
For sound effects if NULL is passed to PlaySoundEx or PlaySound is used.
|
||||
Also the Reverb DSP has itself positioned AFTER the 'SFX' unit so then we will hear reverb.
|
||||
Now if a sound is attached to the 'Dry' DSP unit located at priority 400, then it will not
|
||||
be affected by reverb!
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
INCLUDES
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#if defined(WIN32) || defined(_WIN64) || defined(__WATCOMC__)
|
||||
#include <conio.h>
|
||||
#include <windows.h>
|
||||
#elif defined(__linux__)
|
||||
#include "../../api/inc/wincompat.h"
|
||||
#endif
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../../api/inc/fmod.h"
|
||||
#include "../../api/inc/fmod_errors.h" /* optional */
|
||||
|
||||
/*
|
||||
GLOBALS AND DEFINIITIONS
|
||||
*/
|
||||
|
||||
/*
|
||||
Here's our simple reverb again
|
||||
*/
|
||||
|
||||
#define REVERB_NUMTAPS 7
|
||||
typedef struct
|
||||
{
|
||||
FSOUND_DSPUNIT *Unit;
|
||||
char *historybuff; /* storage space for tap history */
|
||||
char *workarea; /* a place to hold 1 buffer worth of data (for preverb) */
|
||||
int delayms; /* delay of p/reverb tab in milliseconds */
|
||||
int volume; /* volume of p/reverb tab */
|
||||
int pan; /* pan of p/reverb tab */
|
||||
int historyoffset; /* running offset into history buffer */
|
||||
int historylen; /* size of history buffer in SAMPLES */
|
||||
} REVERBTAP;
|
||||
|
||||
/*
|
||||
Reverb stuff
|
||||
*/
|
||||
REVERBTAP DSP_ReverbTap[REVERB_NUMTAPS];
|
||||
|
||||
/*
|
||||
Dry sfx unit
|
||||
*/
|
||||
FSOUND_DSPUNIT *DrySFXUnit = NULL;
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
Callback to mix in one reverb tap. It copies the buffer into its own history buffer also.
|
||||
|
||||
[PARAMETERS]
|
||||
'originalbuffer' Pointer to the original mixbuffer, not any buffers passed down
|
||||
through the dsp chain. They are in newbuffer.
|
||||
'newbuffer' Pointer to buffer passed from previous DSP unit.
|
||||
'length' Length in SAMPLES of buffer being passed.
|
||||
'userdata' User parameter. In this case it is a pointer to DSP_LowPassBuffer.
|
||||
|
||||
[RETURN_VALUE]
|
||||
a pointer to the buffer that was passed in, with a tap mixed into it.
|
||||
|
||||
[REMARKS]
|
||||
]
|
||||
*/
|
||||
void * F_CALLBACKAPI DSP_ReverbCallback(void *originalbuffer, void *newbuffer, int length, void *userdata)
|
||||
{
|
||||
int mixertype = FSOUND_GetMixer();
|
||||
int count;
|
||||
int bytesperoutputsample;
|
||||
REVERBTAP *tap = (REVERBTAP *)userdata;
|
||||
union sample
|
||||
{
|
||||
void *vptr;
|
||||
signed int *dptr;
|
||||
signed short *wptr;
|
||||
float *fptr;
|
||||
};
|
||||
|
||||
if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
bytesperoutputsample = 4; // 16bit stereo
|
||||
}
|
||||
else
|
||||
{
|
||||
bytesperoutputsample = 8; // 32bit stereo
|
||||
}
|
||||
|
||||
// reverb history buffer is a ringbuffer. If the length makes the copy wrap, then split the copy
|
||||
// into end part, and start part..
|
||||
if (tap->historyoffset + length > tap->historylen)
|
||||
{
|
||||
int taillen = tap->historylen - tap->historyoffset;
|
||||
int startlen = length - taillen;
|
||||
|
||||
// mix a scaled version of history buffer into output
|
||||
FSOUND_DSP_MixBuffers(newbuffer, tap->historybuff + (tap->historyoffset << 2), taillen, 44100, tap->volume, tap->pan, FSOUND_STEREO | FSOUND_16BITS);
|
||||
FSOUND_DSP_MixBuffers((char *)newbuffer+(taillen * bytesperoutputsample), tap->historybuff, startlen, 44100, tap->volume, tap->pan, FSOUND_STEREO | FSOUND_16BITS);
|
||||
|
||||
// now copy input into reverb/history buffer
|
||||
{
|
||||
signed short *dest;
|
||||
union sample src;
|
||||
|
||||
dest = (signed short *)(tap->historybuff + (tap->historyoffset << 2));
|
||||
src.vptr = newbuffer;
|
||||
|
||||
for (count=0; count < taillen * 2; count++)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (mixertype == FSOUND_MIXER_QUALITY_FPU)
|
||||
{
|
||||
val = (int)src.fptr[count];
|
||||
}
|
||||
else if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
val = (int)src.wptr[count];
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)src.dptr[count];
|
||||
}
|
||||
|
||||
val = (val > 32767 ? 32767 : val < -32768 ? -32768 : val);
|
||||
dest[count] = val;
|
||||
}
|
||||
}
|
||||
{
|
||||
signed short *dest;
|
||||
union sample src;
|
||||
|
||||
dest = (signed short *)tap->historybuff; // always 16bit
|
||||
src.vptr = (char *)newbuffer + (taillen * bytesperoutputsample);
|
||||
|
||||
for (count=0; count < startlen * 2; count++)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (mixertype == FSOUND_MIXER_QUALITY_FPU)
|
||||
{
|
||||
val = (int)src.fptr[count];
|
||||
}
|
||||
else if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
val = (int)src.wptr[count];
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)src.dptr[count];
|
||||
}
|
||||
|
||||
val = (val > 32767 ? 32767 : val < -32768 ? -32768 : val);
|
||||
dest[count] = val;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// no wrapping reverb buffer, just write dest
|
||||
else
|
||||
{
|
||||
// mix a scaled version of history buffer into output
|
||||
FSOUND_DSP_MixBuffers(newbuffer, tap->historybuff + (tap->historyoffset << 2), length, 44100, tap->volume, tap->pan, FSOUND_STEREO | FSOUND_16BITS);
|
||||
|
||||
// now copy input into reverb/history buffer
|
||||
{
|
||||
signed short *dest;
|
||||
union sample src = { newbuffer };
|
||||
|
||||
dest = (signed short *)(tap->historybuff + (tap->historyoffset << 2));
|
||||
|
||||
for (count=0; count < length * 2; count++)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (mixertype == FSOUND_MIXER_QUALITY_FPU)
|
||||
{
|
||||
val = (int)src.fptr[count];
|
||||
}
|
||||
else if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
val = (int)src.wptr[count];
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)src.dptr[count];
|
||||
}
|
||||
val = (val > 32767 ? 32767 : val < -32768 ? -32768 : val);
|
||||
dest[count] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tap->historyoffset += length;
|
||||
if (tap->historyoffset >= tap->historylen)
|
||||
{
|
||||
tap->historyoffset -= tap->historylen;
|
||||
}
|
||||
|
||||
// reverb history has been mixed into new buffer, so return it.
|
||||
return newbuffer;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
void SetupReverb()
|
||||
{
|
||||
/*
|
||||
REVERB SETUP
|
||||
*/
|
||||
/* something to fiddle with. */
|
||||
int delay[REVERB_NUMTAPS] = { 131, 149, 173, 211, 281, 401, 457}; /* prime numbers make it sound cool! */
|
||||
int volume[REVERB_NUMTAPS] = { 120, 100, 95, 90, 80, 60, 50};
|
||||
int pan[REVERB_NUMTAPS] = { 100, 128, 128, 152, 128, 100, 152};
|
||||
int count;
|
||||
|
||||
for (count=0; count< REVERB_NUMTAPS; count++)
|
||||
{
|
||||
DSP_ReverbTap[count].delayms = delay[count];
|
||||
DSP_ReverbTap[count].volume = volume[count];
|
||||
DSP_ReverbTap[count].pan = pan[count];
|
||||
DSP_ReverbTap[count].historyoffset = 0;
|
||||
DSP_ReverbTap[count].historylen = (DSP_ReverbTap[count].delayms * 44100 / 1000);
|
||||
if (DSP_ReverbTap[count].historylen < FSOUND_DSP_GetBufferLength())
|
||||
{
|
||||
DSP_ReverbTap[count].historylen = FSOUND_DSP_GetBufferLength(); /* just in case our calc is not the same. */
|
||||
}
|
||||
|
||||
DSP_ReverbTap[count].historybuff = (char *)calloc(DSP_ReverbTap[count].historylen, 4); /* * 4 is for 16bit stereo (mmx only) */
|
||||
DSP_ReverbTap[count].workarea = NULL;
|
||||
DSP_ReverbTap[count].Unit = FSOUND_DSP_Create(&DSP_ReverbCallback, FSOUND_DSP_DEFAULTPRIORITY_USER+20+(count*2), &DSP_ReverbTap[count]);
|
||||
|
||||
FSOUND_DSP_SetActive(DSP_ReverbTap[count].Unit, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
void CloseReverb()
|
||||
{
|
||||
int count;
|
||||
|
||||
for (count=0; count<REVERB_NUMTAPS; count++)
|
||||
{
|
||||
FSOUND_DSP_Free(DSP_ReverbTap[count].Unit);
|
||||
DSP_ReverbTap[count].Unit = NULL;
|
||||
|
||||
free(DSP_ReverbTap[count].historybuff);
|
||||
DSP_ReverbTap[count].historybuff = NULL;
|
||||
|
||||
free(DSP_ReverbTap[count].workarea);
|
||||
DSP_ReverbTap[count].workarea = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
int main()
|
||||
{
|
||||
FSOUND_SAMPLE *samp1 = 0, *samp2 = 0;
|
||||
int key;
|
||||
int eqid1,eqid2;
|
||||
|
||||
if (FSOUND_GetVersion() < FMOD_VERSION)
|
||||
{
|
||||
printf("Error : You are using the wrong DLL version! You should be using FMOD %.02f\n", FMOD_VERSION);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
INITIALIZE
|
||||
*/
|
||||
FSOUND_SetBufferSize(100); /* This is nescessary to get FX to work on output buffer */
|
||||
if (!FSOUND_Init(44100, 32, FSOUND_INIT_ENABLESYSTEMCHANNELFX))
|
||||
{
|
||||
printf("Error!\n");
|
||||
printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
LOAD SAMPLES
|
||||
*/
|
||||
|
||||
/* PCM,44,100 Hz, 8 Bit, Mono */
|
||||
samp1 = FSOUND_Sample_Load(FSOUND_FREE, "../../media/drumloop.wav", FSOUND_2D, 0, 0);
|
||||
if (!samp1)
|
||||
{
|
||||
printf("Error!\n");
|
||||
printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
return 1;
|
||||
}
|
||||
FSOUND_Sample_SetMode(samp1, FSOUND_LOOP_OFF);
|
||||
|
||||
/* PCM,44,100 Hz, 16 Bit, Stereo */
|
||||
samp2 = FSOUND_Sample_Load(FSOUND_FREE, "../../media/jules.mp3", FSOUND_HW2D | FSOUND_ENABLEFX, 0, 0);
|
||||
if (!samp2)
|
||||
{
|
||||
printf("Error!\n");
|
||||
printf("%s\n", FMOD_ErrorString(FSOUND_GetError()));
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
DISPLAY HELP
|
||||
*/
|
||||
|
||||
printf("FSOUND Output Method : ");
|
||||
switch (FSOUND_GetOutput())
|
||||
{
|
||||
case FSOUND_OUTPUT_NOSOUND: printf("FSOUND_OUTPUT_NOSOUND\n"); break;
|
||||
case FSOUND_OUTPUT_WINMM: printf("FSOUND_OUTPUT_WINMM\n"); break;
|
||||
case FSOUND_OUTPUT_DSOUND: printf("FSOUND_OUTPUT_DSOUND\n"); break;
|
||||
case FSOUND_OUTPUT_ASIO: printf("FSOUND_OUTPUT_ASIO\n"); break;
|
||||
case FSOUND_OUTPUT_OSS: printf("FSOUND_OUTPUT_OSS\n"); break;
|
||||
case FSOUND_OUTPUT_ALSA: printf("FSOUND_OUTPUT_ALSA\n"); break;
|
||||
case FSOUND_OUTPUT_ESD: printf("FSOUND_OUTPUT_ESD\n"); break;
|
||||
};
|
||||
|
||||
printf("FSOUND Mixer : ");
|
||||
switch (FSOUND_GetMixer())
|
||||
{
|
||||
case FSOUND_MIXER_QUALITY_FPU: printf("FSOUND_MIXER_QUALITY_FPU\n"); break;
|
||||
case FSOUND_MIXER_QUALITY_MMXP5: printf("FSOUND_MIXER_QUALITY_MMXP5\n"); break;
|
||||
case FSOUND_MIXER_QUALITY_MMXP6: printf("FSOUND_MIXER_QUALITY_MMXP6\n"); break;
|
||||
};
|
||||
printf("FSOUND Driver : %s\n", FSOUND_GetDriverName(FSOUND_GetDriver()));
|
||||
|
||||
printf("=========================================================================\n");
|
||||
printf("Press 1 Play SOFTWARE sound affected by following reverb dsp unit (wet)\n");
|
||||
printf(" 2 Play SOFTWARE sound unaffected by following reverb dsp unit (dry)\n");
|
||||
if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND)
|
||||
{
|
||||
printf(" 3 Play HARDWARE FX enabled sound using Direct X 8 (echo+flange)\n");
|
||||
printf(" 4 Set EQ on global software output to be affect by DX8 FX\n");
|
||||
printf(" Press 1 or 2 to hear the effect (3 is unaffected)\n");
|
||||
printf(" 5 Turn off EQ on global software output\n");
|
||||
}
|
||||
printf(" ESC Quit\n");
|
||||
printf("=========================================================================\n");
|
||||
|
||||
/*
|
||||
SET UP DSPS!
|
||||
*/
|
||||
|
||||
SetupReverb();
|
||||
|
||||
/*
|
||||
Note if we are using a dsp unit for playing sounds, callback and parameter are ignored!
|
||||
*/
|
||||
DrySFXUnit = FSOUND_DSP_Create(NULL, FSOUND_DSP_DEFAULTPRIORITY_USER+100, 0);
|
||||
FSOUND_DSP_SetActive(DrySFXUnit, TRUE);
|
||||
|
||||
/*
|
||||
You must pause the software output before getting the FX handle on it.
|
||||
*/
|
||||
if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND)
|
||||
{
|
||||
FSOUND_SetPaused(FSOUND_SYSTEMCHANNEL, TRUE);
|
||||
|
||||
eqid1 = FSOUND_FX_Enable(FSOUND_SYSTEMCHANNEL, FSOUND_FX_PARAMEQ);
|
||||
eqid2 = FSOUND_FX_Enable(FSOUND_SYSTEMCHANNEL, FSOUND_FX_PARAMEQ);
|
||||
|
||||
FSOUND_SetPaused(FSOUND_SYSTEMCHANNEL, FALSE);
|
||||
}
|
||||
|
||||
/*
|
||||
START PLAYING!
|
||||
*/
|
||||
|
||||
do
|
||||
{
|
||||
key = 0;
|
||||
printf("channels playing = %d cpu usage = %.02f%%\r", FSOUND_GetChannelsPlaying(), FSOUND_GetCPUUsage());
|
||||
|
||||
if (kbhit())
|
||||
{
|
||||
key = getch();
|
||||
|
||||
|
||||
if (key == '1')
|
||||
{
|
||||
int channel = FSOUND_PlaySound(FSOUND_FREE, samp1);
|
||||
}
|
||||
if (key == '2')
|
||||
{
|
||||
FSOUND_PlaySoundEx(FSOUND_FREE, samp1, DrySFXUnit, FALSE);
|
||||
}
|
||||
if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND)
|
||||
{
|
||||
if (key == '3')
|
||||
{
|
||||
static int fxchannel = FSOUND_FREE;
|
||||
static int echoid = -1, echoid2 = -1,flangeid = -1, firsttime;
|
||||
|
||||
if (fxchannel == FSOUND_FREE)
|
||||
{
|
||||
firsttime = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
firsttime = FALSE;
|
||||
}
|
||||
|
||||
fxchannel = FSOUND_PlaySoundEx(fxchannel, samp2, DrySFXUnit, TRUE);
|
||||
|
||||
/*
|
||||
NOTE! Even though it is for hardware FX, set it to a DrySFXUnit just
|
||||
in case a non hardware output mode has been selected (such as
|
||||
WINMM/Linux etc) and it actually drops back to 100% software
|
||||
*/
|
||||
|
||||
FSOUND_SetVolume(fxchannel, 120); /* turn it down a bit! */
|
||||
|
||||
if (firsttime)
|
||||
{
|
||||
echoid = FSOUND_FX_Enable(fxchannel, FSOUND_FX_ECHO);
|
||||
echoid2 = FSOUND_FX_Enable(fxchannel, FSOUND_FX_ECHO);
|
||||
flangeid = FSOUND_FX_Enable(fxchannel, FSOUND_FX_FLANGER);
|
||||
}
|
||||
|
||||
FSOUND_SetPaused(fxchannel, FALSE);
|
||||
|
||||
FSOUND_FX_SetEcho(echoid, 80.0f, 70.0f, 100.0f, 100.0f, TRUE);
|
||||
FSOUND_FX_SetEcho(echoid2, 100, 70.0f, 10, 10, FALSE);
|
||||
}
|
||||
if (key == '4')
|
||||
{
|
||||
FSOUND_FX_SetParamEQ(eqid1, 8000, 36, -15);
|
||||
FSOUND_FX_SetParamEQ(eqid2, 16000, 36, -15);
|
||||
}
|
||||
if (key == '5')
|
||||
{
|
||||
FSOUND_FX_SetParamEQ(eqid1, 8000, 15, 0);
|
||||
FSOUND_FX_SetParamEQ(eqid2, 8000, 15, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
Sleep(10);
|
||||
|
||||
} while (key != 27);
|
||||
|
||||
printf("\n");
|
||||
|
||||
/*
|
||||
CLEANUP AND SHUTDOWN
|
||||
*/
|
||||
|
||||
FSOUND_DSP_Free(DrySFXUnit);
|
||||
|
||||
CloseReverb();
|
||||
|
||||
FSOUND_Sample_Free(samp1);
|
||||
FSOUND_Sample_Free(samp2);
|
||||
|
||||
FSOUND_Close();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
# Microsoft Developer Studio Project File - Name="dsp" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Console Application" 0x0103
|
||||
|
||||
CFG=dsp - Win32 Debug
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "dsp.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "dsp.mak" CFG="dsp - Win32 Debug"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "dsp - Win32 Release" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE "dsp - Win32 Debug" (based on "Win32 (x86) Console Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "dsp - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0xc09 /d "NDEBUG"
|
||||
# ADD RSC /l 0xc09 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
|
||||
# ADD LINK32 ../../api/lib/fmodvc.lib /nologo /subsystem:console /machine:I386 /out:"dsp.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "dsp - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE RSC /l 0xc09 /d "_DEBUG"
|
||||
# ADD RSC /l 0xc09 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 ../../api/lib/fmodvc.lib /nologo /subsystem:console /debug /machine:I386 /out:"dsp.exe" /pdbtype:sept
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "dsp - Win32 Release"
|
||||
# Name "dsp - Win32 Debug"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Main.cpp
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
Binary file not shown.
@@ -0,0 +1,2 @@
|
||||
wpp386 main.cpp
|
||||
wlink system nt name dsp.exe file main.obj library ..\..\api\lib\fmodwc.lib
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
@@ -0,0 +1,396 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "resource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 2 resource.
|
||||
//
|
||||
#include "afxres.h"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (U.S.) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_INTERFACE DIALOGEX 0, 0, 446, 170
|
||||
STYLE WS_MINIMIZEBOX | WS_CAPTION | WS_SYSMENU
|
||||
EXSTYLE WS_EX_ACCEPTFILES
|
||||
CAPTION "FMOD 3.73"
|
||||
FONT 8, "Arial", 0, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Loaded Files",IDC_STATIC,4,4,191,161
|
||||
LISTBOX IDC_SONGLIST,8,14,183,145,LBS_OWNERDRAWFIXED |
|
||||
LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL |
|
||||
WS_TABSTOP,WS_EX_ACCEPTFILES
|
||||
PUSHBUTTON "Load File",IDC_LOAD,202,9,44,12
|
||||
PUSHBUTTON "Delete",IDC_DELETE,202,54,44,12
|
||||
PUSHBUTTON "Play",IDC_PLAY,202,69,44,12
|
||||
PUSHBUTTON "Options",IDC_CONFIG,202,109,44,12
|
||||
CONTROL "Playlist",IDC_PLAYLIST,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,207,138,36,13
|
||||
GROUPBOX "Current Module File",IDC_STATIC_INFO,252,5,191,117
|
||||
LTEXT "Song Volume",IDC_STATIC,260,98,53,8
|
||||
CONTROL "Progress1",IDC_PROGRESS1,"msctls_progress32",PBS_SMOOTH |
|
||||
WS_BORDER,258,109,181,10
|
||||
GROUPBOX "Effects",IDC_STATIC,252,126,134,39,BS_CENTER
|
||||
CONTROL "LowPass",IDC_LOWPASS,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,259,138,43,13
|
||||
CONTROL "Echo",IDC_ECHO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,
|
||||
259,149,30,13
|
||||
CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_NOTICKS |
|
||||
WS_TABSTOP,340,98,101,10
|
||||
CONTROL "Reverb",IDC_REVERB,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,305,138,37,13
|
||||
CONTROL "Preverb",IDC_PREVERB,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,305,149,37,13
|
||||
CONTROL "Slider2",IDC_ECHOSLIDER,"msctls_trackbar32",TBS_VERT |
|
||||
TBS_TOP | TBS_NOTICKS | WS_TABSTOP,348,135,10,24
|
||||
CONTROL "Slider2",IDC_CUTOFFSLIDER,"msctls_trackbar32",TBS_VERT |
|
||||
TBS_TOP | TBS_NOTICKS | WS_TABSTOP,365,135,10,24
|
||||
CONTROL "Slider2",IDC_RESOSLIDER,"msctls_trackbar32",TBS_VERT |
|
||||
TBS_TOP | TBS_NOTICKS | WS_TABSTOP,374,135,10,24
|
||||
LTEXT "ech cf res",IDC_STATIC,346,156,38,8
|
||||
PUSHBUTTON "Spectrum",IDC_SPECTRUM,202,89,44,12
|
||||
CONTROL "Loop",IDC_PLAYLOOPED,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,207,149,31,13
|
||||
PUSHBUTTON "Load URL",IDC_LOADURL,202,24,44,12
|
||||
LTEXT "Static",IDC_INFOWINDOW,258,15,180,80
|
||||
PUSHBUTTON "Load CD",IDC_LOADCD,202,39,44,12
|
||||
CONTROL "Channels",IDC_STATIC,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_SUNKEN | WS_GROUP,392,126,48,18
|
||||
LTEXT "CPU Usage",IDC_STATIC,392,147,48,18,SS_SUNKEN
|
||||
GROUPBOX "Control",IDC_STATIC,202,126,44,39
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_INTERFACE, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 440
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 165
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
#endif // English (U.S.) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (Australia) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENA)
|
||||
#ifdef _WIN32
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_AUS
|
||||
#pragma code_page(1252)
|
||||
#endif //_WIN32
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_DSENUMBOX DIALOG DISCARDABLE 0, 0, 212, 321
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION |
|
||||
WS_SYSMENU
|
||||
CAPTION "Options"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
COMBOBOX IDC_DSENUM_COMBO3,4,15,204,78,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_DSENUM_COMBO,4,42,204,78,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_DSENUM_COMBO2,4,73,204,96,CBS_DROPDOWNLIST |
|
||||
WS_VSCROLL | WS_TABSTOP
|
||||
CONTROL "8khz",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,10,107,31,
|
||||
10
|
||||
CONTROL "11khz",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,46,107,35,
|
||||
10
|
||||
CONTROL "22khz",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,86,107,35,
|
||||
10
|
||||
CONTROL "44khz",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,126,107,
|
||||
35,10
|
||||
CONTROL "48khz",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON,166,107,
|
||||
35,10
|
||||
EDITTEXT IDC_CONFIG_BUFFERSIZE,11,143,52,14,ES_AUTOHSCROLL |
|
||||
ES_NUMBER
|
||||
EDITTEXT IDC_CONFIG_INITIALPERCENT,11,162,52,14,ES_AUTOHSCROLL |
|
||||
ES_NUMBER
|
||||
EDITTEXT IDC_CONFIG_REBUFFERPERCENT,11,181,52,14,ES_AUTOHSCROLL |
|
||||
ES_NUMBER
|
||||
EDITTEXT IDC_CONFIG_PROXY,10,213,189,14,ES_AUTOHSCROLL
|
||||
COMBOBOX IDC_CONFIG_CD,10,253,54,43,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
CONTROL "Digital Playback",IDC_CONFIG_CDDA,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,74,250,67,10
|
||||
CONTROL "Jitter Correction",IDC_CONFIG_JITTER,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,74,262,65,10
|
||||
CONTROL "Force ASPI",IDC_CONFIG_FORCEASPI,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,74,274,52,10
|
||||
PUSHBUTTON "Device info...",IDC_CONFIG_CDINFO,148,268,54,14
|
||||
PUSHBUTTON "About...",IDC_ABOUT,5,301,50,14
|
||||
DEFPUSHBUTTON "OK",IDOK,97,301,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,156,301,50,14
|
||||
LTEXT "Choose a sound device",IDC_STATIC,4,34,116,8
|
||||
GROUPBOX "Select Output Rate",IDC_STATIC,4,94,203,30
|
||||
LTEXT "Choose a mixing driver",IDC_STATIC,4,62,116,8
|
||||
LTEXT "Choose an output driver",IDC_STATIC,4,7,116,8
|
||||
GROUPBOX "Internet Streaming Settings",IDC_STATIC,4,130,203,105
|
||||
LTEXT "Buffer size (Default: 64000)",IDC_STATIC,72,147,133,8
|
||||
LTEXT "Initial buffer percent (Default: 95)",IDC_STATIC,72,165,
|
||||
133,8
|
||||
LTEXT "Rebuffer percent (Default: 95)",IDC_STATIC,72,184,133,8
|
||||
LTEXT "HTTP Proxy (host:port or user:password@host:port) :",
|
||||
IDC_STATIC,10,201,189,8
|
||||
GROUPBOX "CD Settings",IDC_STATIC,4,240,204,48
|
||||
END
|
||||
|
||||
IDD_STREAMINFODLG DIALOG DISCARDABLE 0, 0, 180, 89
|
||||
STYLE WS_CHILD
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Name",IDC_STREAMINFO_NAME,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,5,4,170,8
|
||||
CONTROL "Pos",IDC_STREAMINFO_POSITION,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,5,16,170,8
|
||||
CONTROL "Time",IDC_STREAMINFO_TIME,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,5,28,170,8
|
||||
PUSHBUTTON "Details...",IDC_NETSTREAMINFO_DETAILS,4,66,50,14
|
||||
END
|
||||
|
||||
IDD_LOADURLDLG DIALOG DISCARDABLE 0, 0, 278, 90
|
||||
STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Load URL"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "OK",IDOK,221,69,50,14
|
||||
PUSHBUTTON "Cancel",IDCANCEL,161,69,50,14
|
||||
COMBOBOX IDC_URLCOMBO,7,29,264,127,CBS_DROPDOWN | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT "Enter the URL of an Icecast2, SHOUTcast or HTTP stream or file here:\nFor example: http://www.fmod.org/file.mp3",
|
||||
IDC_STATIC,7,7,264,18
|
||||
LTEXT "Supported formats:\nIcecast2\tOgg Vorbis, MP3\nHTTP\t\tOgg Vorbis, MP3\nSHOUTcast\tMP3",
|
||||
IDC_STATIC,7,49,114,34
|
||||
END
|
||||
|
||||
IDD_STREAMDETAILSDLG DIALOGEX 0, 0, 214, 217
|
||||
STYLE DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CAPTION "Stream Details"
|
||||
FONT 8, "MS Sans Serif", 0, 0, 0x1
|
||||
BEGIN
|
||||
EDITTEXT IDC_STREAMDETAILSEDIT,4,2,209,213,ES_MULTILINE |
|
||||
ES_AUTOHSCROLL | ES_READONLY,WS_EX_STATICEDGE
|
||||
END
|
||||
|
||||
IDD_MODINFODLG DIALOG DISCARDABLE 0, 0, 180, 89
|
||||
STYLE WS_CHILD
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Order",IDC_MODINFO_ORDER,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,6,44,170,8
|
||||
CONTROL "Name",IDC_MODINFO_NAME,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,6,4,170,8
|
||||
CONTROL "Type",IDC_MODINFO_TYPE,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,6,14,170,8
|
||||
CONTROL "BPM",IDC_MODINFO_BPM,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,6,34,170,8
|
||||
CONTROL "Speed",IDC_MODINFO_SPEED,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,6,24,170,8
|
||||
CONTROL "Pattern",IDC_MODINFO_PATTERN,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,6,54,170,8
|
||||
CONTROL "Row",IDC_MODINFO_ROW,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,6,64,170,8
|
||||
END
|
||||
|
||||
IDD_NETSTREAMINFODLG DIALOG DISCARDABLE 0, 0, 180, 89
|
||||
STYLE WS_CHILD
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Status",IDC_NETSTREAMINFO_STATUS,"Static",
|
||||
SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_GROUP,5,48,170,8
|
||||
CONTROL "Stream",IDC_NETSTREAMINFO_STREAM,"Static",
|
||||
SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_GROUP,5,4,170,8
|
||||
CONTROL "Track",IDC_NETSTREAMINFO_TRACK,"Static",
|
||||
SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_GROUP,5,15,170,8
|
||||
CONTROL "Format",IDC_NETSTREAMINFO_FORMAT,"Static",
|
||||
SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_GROUP,5,37,170,8
|
||||
CONTROL "Proto",IDC_NETSTREAMINFO_PROTOCOL,"Static",
|
||||
SS_LEFTNOWORDWRAP | SS_NOPREFIX | WS_GROUP,5,26,170,8
|
||||
PUSHBUTTON "Details...",IDC_NETSTREAMINFO_DETAILS,4,66,50,14
|
||||
END
|
||||
|
||||
IDD_CDINFODLG DIALOG DISCARDABLE 0, 0, 180, 89
|
||||
STYLE WS_CHILD
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Name",IDC_CDINFO_NAME,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,5,4,170,8
|
||||
CONTROL "Time",IDC_CDINFO_TIME,"Static",SS_LEFTNOWORDWRAP |
|
||||
SS_NOPREFIX | WS_GROUP,5,16,170,8
|
||||
END
|
||||
|
||||
IDD_DIALOGWAIT DIALOG DISCARDABLE 0, 0, 104, 29
|
||||
STYLE DS_MODALFRAME | DS_SETFOREGROUND | DS_CENTER | WS_POPUP | WS_VISIBLE
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
LTEXT "Please wait.. Scanning...",IDC_STATIC,16,11,73,8
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO DISCARDABLE
|
||||
BEGIN
|
||||
IDD_DSENUMBOX, DIALOG
|
||||
BEGIN
|
||||
BOTTOMMARGIN, 315
|
||||
END
|
||||
|
||||
IDD_STREAMINFODLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 173
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 82
|
||||
END
|
||||
|
||||
IDD_LOADURLDLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 271
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 83
|
||||
END
|
||||
|
||||
IDD_STREAMDETAILSDLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 207
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 210
|
||||
END
|
||||
|
||||
IDD_MODINFODLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 173
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 82
|
||||
END
|
||||
|
||||
IDD_NETSTREAMINFODLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 173
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 82
|
||||
END
|
||||
|
||||
IDD_CDINFODLG, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 173
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 82
|
||||
END
|
||||
|
||||
IDD_DIALOGWAIT, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 93
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 22
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// TEXTINCLUDE
|
||||
//
|
||||
|
||||
1 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"resource.h\0"
|
||||
END
|
||||
|
||||
2 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"#include ""afxres.h""\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
3 TEXTINCLUDE DISCARDABLE
|
||||
BEGIN
|
||||
"\r\n"
|
||||
"\0"
|
||||
END
|
||||
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_ICON1 ICON DISCARDABLE "fmod.ico"
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog Info
|
||||
//
|
||||
|
||||
IDD_DSENUMBOX DLGINIT
|
||||
BEGIN
|
||||
IDC_DSENUM_COMBO3, 0x403, 1, 0
|
||||
"\000"
|
||||
0
|
||||
END
|
||||
|
||||
#endif // English (Australia) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#ifndef APSTUDIO_INVOKED
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Generated from the TEXTINCLUDE 3 resource.
|
||||
//
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#endif // not APSTUDIO_INVOKED
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
# Microsoft Developer Studio Project File - Name="fmodsample" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Application" 0x0101
|
||||
|
||||
CFG=fmodsample - Win32 Debug64
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "fmodsample.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "fmodsample.mak" CFG="fmodsample - Win32 Debug64"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "fmodsample - Win32 Release" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "fmodsample - Win32 Debug" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "fmodsample - Win32 Debug64" (based on "Win32 (x86) Application")
|
||||
!MESSAGE "fmodsample - Win32 Release64" (based on "Win32 (x86) Application")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
CPP=cl.exe
|
||||
MTL=midl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "fmodsample - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "Release"
|
||||
# PROP BASE Intermediate_Dir "Release"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release"
|
||||
# PROP Intermediate_Dir "Release"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 comctl32.lib shell32.lib gdi32.lib user32.lib comdlg32.lib winmm.lib advapi32.lib ..\..\api\lib\fmodvc.lib /nologo /subsystem:windows /machine:I386 /out:"fmod.exe"
|
||||
|
||||
!ELSEIF "$(CFG)" == "fmodsample - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "Debug"
|
||||
# PROP BASE Intermediate_Dir "Debug"
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug"
|
||||
# PROP Intermediate_Dir "Debug"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 comctl32.lib shell32.lib gdi32.lib user32.lib comdlg32.lib winmm.lib advapi32.lib ..\..\api\lib\fmodvc.lib /nologo /subsystem:windows /debug /machine:I386 /out:"fmod.exe" /pdbtype:sept
|
||||
|
||||
!ELSEIF "$(CFG)" == "fmodsample - Win32 Debug64"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir "fmodsample___Win32_Debug64"
|
||||
# PROP BASE Intermediate_Dir "fmodsample___Win32_Debug64"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "Debug64"
|
||||
# PROP Intermediate_Dir "Debug64"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MDd /W3 /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /MD /W3 /GX /Zi /Od /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_WIN64" /FD /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 comctl32.lib shell32.lib gdi32.lib user32.lib comdlg32.lib winmm.lib advapi32.lib ..\..\api\lib\fmodvc.lib /nologo /subsystem:windows /debug /machine:I386 /out:"fmod.exe" /pdbtype:sept
|
||||
# ADD LINK32 comctl32.lib shell32.lib gdi32.lib user32.lib comdlg32.lib winmm.lib advapi32.lib ..\..\api\lib\fmod64vc.lib /nologo /subsystem:windows /incremental:no /debug /machine:IX86 /out:"fmod64.exe" /machine:AMD64
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ELSEIF "$(CFG)" == "fmodsample - Win32 Release64"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 0
|
||||
# PROP BASE Output_Dir "fmodsample___Win32_Release64"
|
||||
# PROP BASE Intermediate_Dir "fmodsample___Win32_Release64"
|
||||
# PROP BASE Ignore_Export_Lib 0
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 0
|
||||
# PROP Output_Dir "Release64"
|
||||
# PROP Intermediate_Dir "Release64"
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MD /W3 /GX /O1 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /MD /W3 /GX /O1 /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_WIN64" /FD /c
|
||||
# SUBTRACT CPP /YX
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
# ADD RSC /l 0x409 /d "NDEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 comctl32.lib shell32.lib gdi32.lib user32.lib comdlg32.lib winmm.lib advapi32.lib ..\..\api\lib\fmodvc.lib /nologo /subsystem:windows /machine:I386 /out:"fmod.exe"
|
||||
# ADD LINK32 comctl32.lib shell32.lib gdi32.lib user32.lib comdlg32.lib winmm.lib advapi32.lib ..\..\api\lib\fmod64vc.lib /nologo /subsystem:windows /machine:IX86 /out:"fmod64.exe" /machine:AMD64
|
||||
# SUBTRACT LINK32 /pdb:none
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "fmodsample - Win32 Release"
|
||||
# Name "fmodsample - Win32 Debug"
|
||||
# Name "fmodsample - Win32 Debug64"
|
||||
# Name "fmodsample - Win32 Release64"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\fmod.ico
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\fmod.rc
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lowpass.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\lowpass.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Main.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\resource.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\reverb.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\reverb.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sdriver.c
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sdriver.h
|
||||
# End Source File
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -0,0 +1,371 @@
|
||||
/*
|
||||
Resonant low pass filter source code.
|
||||
By baltrax@hotmail.com (Zxform)
|
||||
|
||||
- little changes and optimizations by Brett Paterson for FMOD example.
|
||||
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "lowpass.h"
|
||||
|
||||
/**************************************************************************
|
||||
|
||||
FILTER.C - Source code for filter functions
|
||||
|
||||
iir_filter IIR filter floats sample by sample (real time)
|
||||
|
||||
*************************************************************************/
|
||||
|
||||
FILTER iir;
|
||||
|
||||
/*
|
||||
* --------------------------------------------------------------------
|
||||
*
|
||||
* iir_filter - Perform IIR filtering sample by sample on floats
|
||||
*
|
||||
* Implements cascaded direct form II second order sections.
|
||||
* Requires FILTER structure for history and coefficients.
|
||||
* The length in the filter structure specifies the number of sections.
|
||||
* The size of the history array is 2*iir.length.
|
||||
* The size of the coefficient array is 4*iir.length + 1 because
|
||||
* the first coefficient is the overall scale factor for the filter.
|
||||
* Returns one output sample for each input sample. Allocates history
|
||||
* array if not previously allocated.
|
||||
*
|
||||
* float iir_filter(float input,FILTER *iir)
|
||||
*
|
||||
* float input new float input sample
|
||||
* FILTER *iir pointer to FILTER structure
|
||||
*
|
||||
* Returns float value giving the current output.
|
||||
*
|
||||
* Allocation errors cause an error message and a call to exit.
|
||||
* --------------------------------------------------------------------
|
||||
*/
|
||||
float LowPass_Filter(float input)
|
||||
{
|
||||
unsigned int i;
|
||||
float *hist1_ptr,*hist2_ptr,*coef_ptr;
|
||||
float output,new_hist,history1,history2;
|
||||
static float dc = (float)1E-25;
|
||||
input += dc;
|
||||
dc = -dc;
|
||||
|
||||
/* allocate history array if different size than last call */
|
||||
|
||||
coef_ptr = iir.coef; /* coefficient pointer */
|
||||
|
||||
hist1_ptr = iir.history; /* first history */
|
||||
hist2_ptr = hist1_ptr + 1; /* next history */
|
||||
|
||||
/* 1st number of coefficients array is overall input scale factor,
|
||||
* or filter gain */
|
||||
output = input * (*coef_ptr++);
|
||||
|
||||
for (i = 0 ; i < iir.length; i++)
|
||||
{
|
||||
history1 = *hist1_ptr; /* history values */
|
||||
history2 = *hist2_ptr;
|
||||
|
||||
output = output - history1 * coef_ptr[0];
|
||||
new_hist = output - history2 * coef_ptr[1]; /* poles */
|
||||
|
||||
output = new_hist + history1 * coef_ptr[2];
|
||||
output = output + history2 * coef_ptr[3]; /* zeros */
|
||||
|
||||
coef_ptr += 4;
|
||||
*hist2_ptr++ = *hist1_ptr;
|
||||
*hist1_ptr++ = new_hist;
|
||||
hist1_ptr++;
|
||||
hist2_ptr++;
|
||||
}
|
||||
|
||||
return(output);
|
||||
}
|
||||
|
||||
|
||||
void LowPass_Update(float resonance, float cutoff, int samplerate)
|
||||
{
|
||||
unsigned nInd;
|
||||
double a0, a1, a2, b0, b1, b2;
|
||||
double fs; /* Sampling frequency, cutoff frequency */
|
||||
double k; /* overall gain factor */
|
||||
float *coef;
|
||||
|
||||
k = 1.0; /* Set overall filter gain */
|
||||
coef = iir.coef + 1; /* Skip k, or gain */
|
||||
fs = (double)samplerate; /* Sampling frequency (Hz) */
|
||||
|
||||
/*
|
||||
* Compute z-domain coefficients for each biquad section
|
||||
* for new Cutoff Frequency and Resonance
|
||||
*/
|
||||
for (nInd = 0; nInd < iir.length; nInd++)
|
||||
{
|
||||
a0 = ProtoCoef[nInd].a0;
|
||||
a1 = ProtoCoef[nInd].a1;
|
||||
a2 = ProtoCoef[nInd].a2;
|
||||
|
||||
b0 = ProtoCoef[nInd].b0;
|
||||
b1 = ProtoCoef[nInd].b1 / resonance; /* Divide by resonance or Q */
|
||||
b2 = ProtoCoef[nInd].b2;
|
||||
szxform(&a0, &a1, &a2, &b0, &b1, &b2, cutoff, fs, &k, coef);
|
||||
coef += 4; /* Point to next filter section */
|
||||
}
|
||||
|
||||
/* Update overall filter gain in coef array */
|
||||
iir.coef[0] = (float)k;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* --------------------------------------------------------------------
|
||||
*
|
||||
* initn()
|
||||
*
|
||||
* Example main function to show how to update filter coefficients.
|
||||
* We create a 4th order filter (24 db/oct roloff), consisting
|
||||
* of two second order sections.
|
||||
* --------------------------------------------------------------------
|
||||
*/
|
||||
signed char LowPass_Init()
|
||||
{
|
||||
|
||||
/*
|
||||
* Setup filter s-domain coefficients
|
||||
*/
|
||||
/* Section 1 */
|
||||
ProtoCoef[0].a0 = 1.0;
|
||||
ProtoCoef[0].a1 = 0;
|
||||
ProtoCoef[0].a2 = 0;
|
||||
ProtoCoef[0].b0 = 1.0;
|
||||
ProtoCoef[0].b1 = 0.765367;
|
||||
ProtoCoef[0].b2 = 1.0;
|
||||
|
||||
/* Section 2 */
|
||||
ProtoCoef[1].a0 = 1.0;
|
||||
ProtoCoef[1].a1 = 0;
|
||||
ProtoCoef[1].a2 = 0;
|
||||
ProtoCoef[1].b0 = 1.0;
|
||||
ProtoCoef[1].b1 = 1.847759;
|
||||
ProtoCoef[1].b2 = 1.0;
|
||||
|
||||
iir.length = FILTER_SECTIONS; /* Number of filter sections */
|
||||
|
||||
/*
|
||||
* Allocate array of z-domain coefficients for each filter section
|
||||
* plus filter gain variable
|
||||
*/
|
||||
iir.coef = (float *) calloc(4 * iir.length + 1, sizeof(float));
|
||||
if (!iir.coef)
|
||||
{
|
||||
// printf("Unable to allocate coef array, exiting\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
LowPass_Update(1.0, 5000.0, 44100);
|
||||
|
||||
/* Display filter coefficients */
|
||||
// for (nInd = 0; nInd < (iir.length * 4 + 1); nInd++)
|
||||
// printf("C[%d] = %15.10f\n", nInd, iir.coef[nInd]);
|
||||
/*
|
||||
* To process audio samples, call function iir_filter()
|
||||
* for each audio sample
|
||||
*/
|
||||
return 1;
|
||||
}
|
||||
|
||||
void LowPass_Close()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------
|
||||
* bilinear.c
|
||||
*
|
||||
* Perform bilinear transformation on s-domain coefficients
|
||||
* of 2nd order biquad section.
|
||||
* First design an analog filter and use s-domain coefficients
|
||||
* as input to szxform() to convert them to z-domain.
|
||||
*
|
||||
* Here's the butterworth polinomials for 2nd, 4th and 6th order sections.
|
||||
* When we construct a 24 db/oct filter, we take to 2nd order
|
||||
* sections and compute the coefficients separately for each section.
|
||||
*
|
||||
* n Polinomials
|
||||
* --------------------------------------------------------------------
|
||||
* 2 s^2 + 1.4142s +1
|
||||
* 4 (s^2 + 0.765367s + 1) (s^2 + 1.847759s + 1)
|
||||
* 6 (s^2 + 0.5176387s + 1) (s^2 + 1.414214 + 1) (s^2 + 1.931852s + 1)
|
||||
*
|
||||
* Where n is a filter order.
|
||||
* For n=4, or two second order sections, we have following equasions for each
|
||||
* 2nd order stage:
|
||||
*
|
||||
* (1 / (s^2 + (1/Q) * 0.765367s + 1)) * (1 / (s^2 + (1/Q) * 1.847759s + 1))
|
||||
*
|
||||
* Where Q is filter quality factor in the range of
|
||||
* 1 to 1000. The overall filter Q is a product of all
|
||||
* 2nd order stages. For example, the 6th order filter
|
||||
* (3 stages, or biquads) with individual Q of 2 will
|
||||
* have filter Q = 2 * 2 * 2 = 8.
|
||||
*
|
||||
* The nominator part is just 1.
|
||||
* The denominator coefficients for stage 1 of filter are:
|
||||
* b2 = 1; b1 = 0.765367; b0 = 1;
|
||||
* numerator is
|
||||
* a2 = 0; a1 = 0; a0 = 1;
|
||||
*
|
||||
* The denominator coefficients for stage 1 of filter are:
|
||||
* b2 = 1; b1 = 1.847759; b0 = 1;
|
||||
* numerator is
|
||||
* a2 = 0; a1 = 0; a0 = 1;
|
||||
*
|
||||
* These coefficients are used directly by the szxform()
|
||||
* and bilinear() functions. For all stages the numerator
|
||||
* is the same and the only thing that is different between
|
||||
* different stages is 1st order coefficient. The rest of
|
||||
* coefficients are the same for any stage and equal to 1.
|
||||
*
|
||||
* Any filter could be constructed using this approach.
|
||||
*
|
||||
* References:
|
||||
* Van Valkenburg, "Analog Filter Design"
|
||||
* Oxford University Press 1982
|
||||
* ISBN 0-19-510734-9
|
||||
*
|
||||
* C Language Algorithms for Digital Signal Processing
|
||||
* Paul Embree, Bruce Kimble
|
||||
* Prentice Hall, 1991
|
||||
* ISBN 0-13-133406-9
|
||||
*
|
||||
* Digital Filter Designer's Handbook
|
||||
* With C++ Algorithms
|
||||
* Britton Rorabaugh
|
||||
* McGraw Hill, 1997
|
||||
* ISBN 0-07-053806-9
|
||||
* ----------------------------------------------------------
|
||||
*/
|
||||
|
||||
void prewarp(double *a0, double *a1, double *a2, double fc, double fs);
|
||||
void bilinear(
|
||||
double a0, double a1, double a2, /* numerator coefficients */
|
||||
double b0, double b1, double b2, /* denominator coefficients */
|
||||
double *k, /* overall gain factor */
|
||||
double fs, /* sampling rate */
|
||||
float *coef); /* pointer to 4 iir coefficients */
|
||||
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------
|
||||
* Pre-warp the coefficients of a numerator or denominator.
|
||||
* Note that a0 is assumed to be 1, so there is no wrapping
|
||||
* of it.
|
||||
* ----------------------------------------------------------
|
||||
*/
|
||||
void prewarp(
|
||||
double *a0, double *a1, double *a2,
|
||||
double fc, double fs)
|
||||
{
|
||||
double wp, pi;
|
||||
|
||||
pi = 4.0 * atan(1.0);
|
||||
wp = 2.0 * fs * tan(pi * fc / fs);
|
||||
|
||||
*a2 = (*a2) / (wp * wp);
|
||||
*a1 = (*a1) / wp;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------
|
||||
* bilinear()
|
||||
*
|
||||
* Transform the numerator and denominator coefficients
|
||||
* of s-domain biquad section into corresponding
|
||||
* z-domain coefficients.
|
||||
*
|
||||
* Store the 4 IIR coefficients in array pointed by coef
|
||||
* in following order:
|
||||
* beta1, beta2 (denominator)
|
||||
* alpha1, alpha2 (numerator)
|
||||
*
|
||||
* Arguments:
|
||||
* a0-a2 - s-domain numerator coefficients
|
||||
* b0-b2 - s-domain denominator coefficients
|
||||
* k - filter gain factor. initially set to 1
|
||||
* and modified by each biquad section in such
|
||||
* a way, as to make it the coefficient by
|
||||
* which to multiply the overall filter gain
|
||||
* in order to achieve a desired overall filter gain,
|
||||
* specified in initial value of k.
|
||||
* fs - sampling rate (Hz)
|
||||
* coef - array of z-domain coefficients to be filled in.
|
||||
*
|
||||
* Return:
|
||||
* On return, set coef z-domain coefficients
|
||||
* ----------------------------------------------------------
|
||||
*/
|
||||
void bilinear(
|
||||
double a0, double a1, double a2, /* numerator coefficients */
|
||||
double b0, double b1, double b2, /* denominator coefficients */
|
||||
double *k, /* overall gain factor */
|
||||
double fs, /* sampling rate */
|
||||
float *coef /* pointer to 4 iir coefficients */
|
||||
)
|
||||
{
|
||||
double ad, bd;
|
||||
|
||||
/* alpha (Numerator in s-domain) */
|
||||
ad = 4. * a2 * fs * fs + 2. * a1 * fs + a0;
|
||||
/* beta (Denominator in s-domain) */
|
||||
bd = 4. * b2 * fs * fs + 2. * b1* fs + b0;
|
||||
|
||||
/* update gain constant for this section */
|
||||
*k *= ad/bd;
|
||||
|
||||
/* Denominator */
|
||||
*coef++ = (float)((2. * b0 - 8. * b2 * fs * fs) / bd); /* beta1 */
|
||||
*coef++ = (float)((4. * b2 * fs * fs - 2. * b1 * fs + b0) / bd); /* beta2 */
|
||||
|
||||
/* Nominator */
|
||||
*coef++ = (float)((2. * a0 - 8. * a2 * fs * fs) / ad); /* alpha1 */
|
||||
*coef = (float)((4. * a2 * fs * fs - 2. * a1 * fs + a0) / ad); /* alpha2 */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* ----------------------------------------------------------
|
||||
* Transform from s to z domain using bilinear transform
|
||||
* with prewarp.
|
||||
*
|
||||
* Arguments:
|
||||
* For argument description look at bilinear()
|
||||
*
|
||||
* coef - pointer to array of floating point coefficients,
|
||||
* corresponding to output of bilinear transofrm
|
||||
* (z domain).
|
||||
*
|
||||
* Note: frequencies are in Hz.
|
||||
* ----------------------------------------------------------
|
||||
*/
|
||||
void szxform(
|
||||
double *a0, double *a1, double *a2, /* numerator coefficients */
|
||||
double *b0, double *b1, double *b2, /* denominator coefficients */
|
||||
double fc, /* Filter cutoff frequency */
|
||||
double fs, /* sampling rate */
|
||||
double *k, /* overall gain factor */
|
||||
float *coef) /* pointer to 4 iir coefficients */
|
||||
{
|
||||
/* Calculate a1 and a2 and overwrite the original values */
|
||||
prewarp(a0, a1, a2, fc, fs);
|
||||
prewarp(b0, b1, b2, fc, fs);
|
||||
bilinear(*a0, *a1, *a2, *b0, *b1, *b2, k, fs, coef);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,46 @@
|
||||
#ifndef _LOWPASS_H
|
||||
#define _LOWPASS_H
|
||||
|
||||
|
||||
/* FILTER INFORMATION STRUCTURE FOR FILTER ROUTINES */
|
||||
|
||||
#define FILTER_SECTIONS 2 /* 2 filter sections for 24 db/oct filter */
|
||||
|
||||
typedef struct {
|
||||
unsigned int length; /* size of filter */
|
||||
float history[2 * FILTER_SECTIONS]; /* history in filter */
|
||||
float *coef; /* pointer to coefficients of filter */
|
||||
} FILTER;
|
||||
|
||||
typedef struct {
|
||||
double a0, a1, a2; /* numerator coefficients */
|
||||
double b0, b1, b2; /* denominator coefficients */
|
||||
} BIQUAD;
|
||||
|
||||
BIQUAD ProtoCoef[FILTER_SECTIONS]; /* Filter prototype coefficients,
|
||||
1 for each filter section */
|
||||
|
||||
void szxform(
|
||||
double *a0, double *a1, double *a2, /* numerator coefficients */
|
||||
double *b0, double *b1, double *b2, /* denominator coefficients */
|
||||
double fc, /* Filter cutoff frequency */
|
||||
double fs, /* sampling rate */
|
||||
double *k, /* overall gain factor */
|
||||
float *coef); /* pointer to 4 iir coefficients */
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
signed char LowPass_Init();
|
||||
void LowPass_Close();
|
||||
float LowPass_Filter(float input);
|
||||
void LowPass_Update(float resonance, float cutoff, int samplerate);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,168 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Developer Studio generated include file.
|
||||
// Used by fmod.rc
|
||||
//
|
||||
#define IDS_APPNAME 1
|
||||
#define IDS_NOVIDEODRIVERFOUND 2
|
||||
#define IDD_DIALOG1 102
|
||||
#define IDR_MENU1 103
|
||||
#define IDD_INTERFACE 104
|
||||
#define IDI_ICON1 105
|
||||
#define IDD_DSENUMBOX 109
|
||||
#define IDD_CDINTERFACE 111
|
||||
#define IDR_MODULE1 113
|
||||
#define IDD_STREAMINFODLG 117
|
||||
#define IDD_LOADURLDLG 118
|
||||
#define IDD_STREAMDETAILSDLG 120
|
||||
#define IDD_MODINFODLG 121
|
||||
#define IDD_NETSTREAMINFODLG 122
|
||||
#define IDD_ABOUTDLG 123
|
||||
#define IDD_CDINFODLG 123
|
||||
#define IDB_BITMAP1 125
|
||||
#define IDD_DIALOGWAIT 127
|
||||
#define IDC_RADIO1 1000
|
||||
#define IDC_DRIVERNAME 1001
|
||||
#define IDC_RADIO2 1001
|
||||
#define IDC_FULLSCREEN 1002
|
||||
#define IDC_RADIO3 1002
|
||||
#define IDC_ZBUFFER 1003
|
||||
#define IDC_RADIO4 1003
|
||||
#define IDC_PERSCORRECT 1004
|
||||
#define IDC_VIDEOMODE 1005
|
||||
#define IDC_RADIO5 1005
|
||||
#define IDC_TRIPLEBUFFER 1006
|
||||
#define IDC_SONGLIST 1006
|
||||
#define IDC_BILINEARFILTER 1007
|
||||
#define IDC_BUTTON1 1007
|
||||
#define IDC_LOAD 1007
|
||||
#define IDC_CONFIG_CDINFO 1007
|
||||
#define IDC_ZBUFFER2 1008
|
||||
#define IDC_BUTTON2 1008
|
||||
#define IDC_DELETE 1008
|
||||
#define IDC_DEVICES 1009
|
||||
#define IDC_LOADURL 1009
|
||||
#define IDC_DSENUM_COMBO 1010
|
||||
#define IDC_PROGRESS1 1010
|
||||
#define IDC_DSENUM_COMBO2 1011
|
||||
#define IDC_BUTTON3 1011
|
||||
#define IDC_PLAY 1011
|
||||
#define IDC_BUTTON4 1012
|
||||
#define IDC_DSENUM_COMBO3 1012
|
||||
#define IDC_STOP 1012
|
||||
#define IDC_CHECK1 1013
|
||||
#define IDC_PLAYLIST 1013
|
||||
#define IDC_CONFIG_CDDA 1013
|
||||
#define IDC_CHECK2 1014
|
||||
#define IDC_ECHO 1014
|
||||
#define IDC_CONFIG_JITTER 1014
|
||||
#define IDC_CHECK3 1015
|
||||
#define IDC_LOWPASS 1015
|
||||
#define IDC_CONFIG_FORCEASPI 1015
|
||||
#define IDC_CHECK4 1016
|
||||
#define IDC_FLANGE 1016
|
||||
#define IDC_CDLOOPCHECK 1016
|
||||
#define IDC_EQUALIZER 1016
|
||||
#define IDC_SPECTRUM 1016
|
||||
#define IDC_CHECK5 1017
|
||||
#define IDC_PLAYLOOPED 1017
|
||||
#define IDC_CHECK6 1018
|
||||
#define IDC_RESONANCE 1018
|
||||
#define IDC_LOADCD 1018
|
||||
#define IDC_BUTTON5 1019
|
||||
#define IDC_DEBUG 1019
|
||||
#define IDC_CDPLAY 1019
|
||||
#define IDC_BUTTON6 1020
|
||||
#define IDC_EXIT 1020
|
||||
#define IDC_BUTTON7 1021
|
||||
#define IDC_ABOUT 1021
|
||||
#define IDC_BUTTON8 1022
|
||||
#define IDC_ORDER_DEC 1022
|
||||
#define IDC_BUTTON9 1023
|
||||
#define IDC_ORDER_INC 1023
|
||||
#define IDC_LAG 1023
|
||||
#define IDC_BUTTON10 1024
|
||||
#define IDC_CDSTOP 1024
|
||||
#define IDC_BUTTON11 1025
|
||||
#define IDC_CDPAUSE 1025
|
||||
#define IDC_CHECK7 1026
|
||||
#define IDC_BASSBOOST 1026
|
||||
#define IDC_NR 1026
|
||||
#define IDC_REVERB 1026
|
||||
#define IDC_CHECK8 1027
|
||||
#define IDC_PREVERB 1027
|
||||
#define IDC_CHECK9 1028
|
||||
#define IDC_CDBACK 1028
|
||||
#define IDC_CONFIG 1029
|
||||
#define IDC_SLIDER1 1030
|
||||
#define IDC_CDFORWARD 1032
|
||||
#define IDC_CDEJECT 1033
|
||||
#define IDC_RADIOCONTINUOUS 1039
|
||||
#define IDC_RADIORANDOM 1040
|
||||
#define IDC_RADIOLOOPED 1042
|
||||
#define IDC_CDMAXIMIZE 1043
|
||||
#define IDC_CDMINIMIZE 1044
|
||||
#define IDC_SLIDER2 1045
|
||||
#define IDC_ECHOSLIDER 1045
|
||||
#define IDC_CUTOFFSLIDER 1046
|
||||
#define IDC_CDVOLUME 1047
|
||||
#define IDC_RESOSLIDER 1048
|
||||
#define IDC_STATIC_NAME 1049
|
||||
#define IDC_STATIC_TYPE 1050
|
||||
#define IDC_STATIC_SPEED 1051
|
||||
#define IDC_STATIC_BPM 1052
|
||||
#define IDC_STATIC_ORDER 1053
|
||||
#define IDC_STATIC_PATTERN 1054
|
||||
#define IDC_STATIC_ROW 1055
|
||||
#define IDC_STATIC_INFO 1056
|
||||
#define IDC_CDTIME 1058
|
||||
#define IDC_INFOWINDOW 1062
|
||||
#define IDC_URLCOMBO 1063
|
||||
#define IDC_STREAMINFO_NAME 1065
|
||||
#define IDC_STREAMINFO_POSITION 1066
|
||||
#define IDC_STREAMINFO_TIME 1067
|
||||
#define IDC_STREAMDETAILSEDIT 1069
|
||||
#define IDC_MODINFO_NAME 1070
|
||||
#define IDC_MODINFO_TYPE 1071
|
||||
#define IDC_MODINFO_SPEED 1072
|
||||
#define IDC_MODINFO_BPM 1073
|
||||
#define IDC_MODINFO_ORDER 1074
|
||||
#define IDC_MODINFO_PATTERN 1075
|
||||
#define IDC_NETSTREAMINFO_STREAM 1075
|
||||
#define IDC_MODINFO_ROW 1076
|
||||
#define IDC_NETSTREAMINFO_TRACK 1076
|
||||
#define IDC_NETSTREAMINFO_PROTOCOL 1077
|
||||
#define IDC_NETSTREAMINFO_FORMAT 1078
|
||||
#define IDC_NETSTREAMINFO_STATUS 1079
|
||||
#define IDC_NETSTREAMINFO_DETAILS 1080
|
||||
#define IDC_ABOUT_OUTPUT 1081
|
||||
#define IDC_ABOUT_MIXER 1082
|
||||
#define IDC_ABOUT_DRIVER 1083
|
||||
#define IDC_ABOUT_CHANNELS 1084
|
||||
#define IDC_CONFIG_BUFFERSIZE 1085
|
||||
#define IDC_CONFIG_INITIALPERCENT 1086
|
||||
#define IDC_CONFIG_REBUFFERPERCENT 1087
|
||||
#define IDC_CONFIG_PROXY 1088
|
||||
#define IDC_CONFIG_CD 1089
|
||||
#define IDC_CDINFO_NAME 1092
|
||||
#define IDC_CDINFO_TIME 1094
|
||||
#define IDC_CDINFO_JITTER 1095
|
||||
#define MENU_ABOUT 40001
|
||||
#define MENU_OPEN 40002
|
||||
#define MENU_EXIT 40003
|
||||
#define MENU_PLAYSOUND 40004
|
||||
#define MENU_STOPSOUND 40005
|
||||
#define MENU_ADDCHANNELS 40006
|
||||
#define MENU_REMOVECHANNELS 40007
|
||||
#define MENU_INFO 40009
|
||||
#define MENU_STEPTHROUGH 40011
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 128
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1096
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
@@ -0,0 +1,419 @@
|
||||
#include "reverb.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*
|
||||
Pre-verb stuff
|
||||
*/
|
||||
REVERBTAP PreverbTap[PREVERB_NUMTAPS];
|
||||
|
||||
/*
|
||||
Reverb stuff
|
||||
*/
|
||||
REVERBTAP ReverbTap[REVERB_NUMTAPS];
|
||||
|
||||
extern int outputfreq;
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
Callback to mix in one reverb tap. It copies the buffer into its own history buffer also.
|
||||
|
||||
[PARAMETERS]
|
||||
'originalbuffer' Pointer to the original mixbuffer, not any buffers passed down
|
||||
through the dsp chain. They are in newbuffer.
|
||||
'newbuffer' Pointer to buffer passed from previous DSP unit.
|
||||
'length' Length in SAMPLES of buffer being passed.
|
||||
'param' User parameter. In this case it is a pointer to LowPassBuffer.
|
||||
|
||||
[RETURN_VALUE]
|
||||
a pointer to the buffer that was passed in, with a tap mixed into it.
|
||||
|
||||
[REMARKS]
|
||||
]
|
||||
*/
|
||||
void * F_CALLBACKAPI ReverbCallback(void *originalbuffer, void *newbuffer, int length, void *userdata)
|
||||
{
|
||||
int mixertype = FSOUND_GetMixer();
|
||||
int count;
|
||||
int bytesperoutputsample;
|
||||
REVERBTAP *tap = (REVERBTAP *)userdata;
|
||||
union sample
|
||||
{
|
||||
void *vptr;
|
||||
signed int *dptr;
|
||||
signed short *wptr;
|
||||
float *fptr;
|
||||
};
|
||||
|
||||
if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
bytesperoutputsample = 4; // 16bit stereo
|
||||
}
|
||||
else
|
||||
{
|
||||
bytesperoutputsample = 8; // 32bit stereo
|
||||
}
|
||||
|
||||
// reverb history buffer is a ringbuffer. If the length makes the copy wrap, then split the copy
|
||||
// into end part, and start part..
|
||||
if (tap->historyoffset + length > tap->historylen)
|
||||
{
|
||||
int taillen = tap->historylen - tap->historyoffset;
|
||||
int startlen = length - taillen;
|
||||
|
||||
// mix a scaled version of history buffer into output
|
||||
FSOUND_DSP_MixBuffers(newbuffer, tap->historybuff + (tap->historyoffset << 2), taillen, outputfreq, tap->volume, tap->pan, FSOUND_STEREO | FSOUND_16BITS);
|
||||
FSOUND_DSP_MixBuffers((char *)newbuffer+(taillen * bytesperoutputsample), tap->historybuff, startlen, outputfreq, tap->volume, tap->pan, FSOUND_STEREO | FSOUND_16BITS);
|
||||
|
||||
// now copy input into reverb/history buffer
|
||||
{
|
||||
signed short *dest;
|
||||
union sample src;
|
||||
|
||||
dest = (signed short *)(tap->historybuff + (tap->historyoffset << 2));
|
||||
src.vptr = newbuffer;
|
||||
|
||||
for (count=0; count < taillen * 2; count++)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (mixertype == FSOUND_MIXER_QUALITY_FPU)
|
||||
{
|
||||
val = (int)src.fptr[count];
|
||||
}
|
||||
else if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
val = (int)src.wptr[count];
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)src.dptr[count];
|
||||
}
|
||||
|
||||
val = (val > 32767 ? 32767 : val < -32768 ? -32768 : val);
|
||||
dest[count] = val;
|
||||
}
|
||||
}
|
||||
{
|
||||
signed short *dest;
|
||||
union sample src;
|
||||
|
||||
dest = (signed short *)tap->historybuff; // always 16bit
|
||||
src.vptr = (char *)newbuffer + (taillen * bytesperoutputsample);
|
||||
|
||||
for (count=0; count < startlen * 2; count++)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (mixertype == FSOUND_MIXER_QUALITY_FPU)
|
||||
{
|
||||
val = (int)src.fptr[count];
|
||||
}
|
||||
else if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
val = (int)src.wptr[count];
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)src.dptr[count];
|
||||
}
|
||||
|
||||
val = (val > 32767 ? 32767 : val < -32768 ? -32768 : val);
|
||||
dest[count] = val;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// no wrapping reverb buffer, just write dest
|
||||
else
|
||||
{
|
||||
// mix a scaled version of history buffer into output
|
||||
FSOUND_DSP_MixBuffers(newbuffer, tap->historybuff + (tap->historyoffset << 2), length, outputfreq, tap->volume, tap->pan, FSOUND_STEREO | FSOUND_16BITS);
|
||||
|
||||
// now copy input into reverb/history buffer
|
||||
{
|
||||
signed short *dest;
|
||||
union sample src = { newbuffer };
|
||||
|
||||
dest = (signed short *)(tap->historybuff + (tap->historyoffset << 2));
|
||||
|
||||
for (count=0; count < length * 2; count++)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (mixertype == FSOUND_MIXER_QUALITY_FPU)
|
||||
{
|
||||
val = (int)src.fptr[count];
|
||||
}
|
||||
else if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
val = (int)src.wptr[count];
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)src.dptr[count];
|
||||
}
|
||||
val = (val > 32767 ? 32767 : val < -32768 ? -32768 : val);
|
||||
dest[count] = val;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tap->historyoffset += length;
|
||||
if (tap->historyoffset >= tap->historylen)
|
||||
{
|
||||
tap->historyoffset -= tap->historylen;
|
||||
}
|
||||
|
||||
// reverb history has been mixed into new buffer, so return it.
|
||||
return newbuffer;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
Similair to a reverb tap except the history copy and the tap mix are done back to front.
|
||||
|
||||
[PARAMETERS]
|
||||
'originalbuffer' Pointer to the original mixbuffer, not any buffers passed down
|
||||
through the dsp chain. They are in newbuffer.
|
||||
'newbuffer' Pointer to buffer passed from previous DSP unit.
|
||||
'length' Length in SAMPLES of buffer being passed.
|
||||
'param' User parameter. In this case it is a pointer to a REVERBTAP structure
|
||||
|
||||
[RETURN_VALUE]
|
||||
A pointer to the new modified buffer.
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[SEE_ALSO]
|
||||
LowPassCallback
|
||||
]
|
||||
*/
|
||||
void * F_CALLBACKAPI PreverbCallback(void *originalbuffer, void *newbuffer, int length, void *userdata)
|
||||
{
|
||||
int mixertype = FSOUND_GetMixer();
|
||||
int count;
|
||||
REVERBTAP *tap = (REVERBTAP *)userdata;
|
||||
int bytesperoutputsample;
|
||||
union sample
|
||||
{
|
||||
void *vptr;
|
||||
signed int *dptr;
|
||||
signed short *wptr;
|
||||
float *fptr;
|
||||
};
|
||||
|
||||
if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
bytesperoutputsample = 4; // 16bit stereo
|
||||
}
|
||||
else
|
||||
{
|
||||
bytesperoutputsample = 8; // 32bit stereo
|
||||
}
|
||||
|
||||
// preverbbuff is a ringbuffer. If the length makes the copy wrap, then split the copy
|
||||
// into end part, and start part
|
||||
if (tap->historyoffset + length > tap->historylen)
|
||||
{
|
||||
int taillen = tap->historylen - tap->historyoffset;
|
||||
int startlen = length - taillen; // whatever is left
|
||||
|
||||
// get a clean version of the preverb buffer (should be an unscaled history of the mixbuffer)
|
||||
memcpy(tap->workarea, tap->historybuff + (tap->historyoffset * bytesperoutputsample), taillen * bytesperoutputsample);
|
||||
memcpy(tap->workarea + (taillen * bytesperoutputsample), tap->historybuff, (length - taillen) * bytesperoutputsample);
|
||||
|
||||
// now copy input into preverb/history buffer
|
||||
memcpy(tap->historybuff + (tap->historyoffset * bytesperoutputsample), newbuffer, taillen * bytesperoutputsample);
|
||||
memcpy(tap->historybuff, (signed char *)newbuffer + (taillen * bytesperoutputsample), (length - taillen) * bytesperoutputsample);
|
||||
}
|
||||
// no wrapping preverb buffer, just write dest
|
||||
else
|
||||
{
|
||||
// get a clean version of the preverb buffer (should be an unscaled history of the mixbuffer)
|
||||
memcpy(tap->workarea, tap->historybuff + (tap->historyoffset * bytesperoutputsample), length * bytesperoutputsample);
|
||||
|
||||
// now copy input into preverb/history buffer
|
||||
memcpy(tap->historybuff + (tap->historyoffset * bytesperoutputsample), newbuffer, length * bytesperoutputsample);
|
||||
}
|
||||
|
||||
/*
|
||||
Now we mix a copy of the NEW input into our preverbed buffer
|
||||
*/
|
||||
{
|
||||
union sample src = { newbuffer };
|
||||
signed short *dest = (signed short *)tap->workarea2;
|
||||
|
||||
for (count=0; count < length * 2; count++)
|
||||
{
|
||||
int val;
|
||||
|
||||
if (mixertype == FSOUND_MIXER_QUALITY_FPU)
|
||||
{
|
||||
val = (int)src.fptr[count];
|
||||
}
|
||||
else if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
val = (int)src.wptr[count];
|
||||
}
|
||||
else
|
||||
{
|
||||
val = (int)src.dptr[count];
|
||||
}
|
||||
val = (val > 32767 ? 32767 : val < -32768 ? -32768 : val);
|
||||
dest[count] = val;
|
||||
}
|
||||
}
|
||||
|
||||
// now mix a scaled input into this
|
||||
FSOUND_DSP_MixBuffers(tap->workarea, tap->workarea2, length, outputfreq, tap->volume, tap->pan, FSOUND_STEREO | FSOUND_16BITS);
|
||||
|
||||
tap->historyoffset += length;
|
||||
if (tap->historyoffset >= tap->historylen)
|
||||
{
|
||||
tap->historyoffset -= tap->historylen;
|
||||
}
|
||||
|
||||
// preverb history has been mixed into new buffer, so return it.
|
||||
return tap->workarea;
|
||||
}
|
||||
|
||||
|
||||
void Reverb_Init()
|
||||
{
|
||||
int bytesperoutputsample;
|
||||
int mixertype = FSOUND_GetMixer();
|
||||
|
||||
if (mixertype == FSOUND_MIXER_MMXP5 || mixertype == FSOUND_MIXER_MMXP6 || mixertype == FSOUND_MIXER_QUALITY_MMXP5 || mixertype == FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
bytesperoutputsample = 4; // 16bit stereo
|
||||
}
|
||||
else
|
||||
{
|
||||
bytesperoutputsample = 8; // 32bit stereo
|
||||
}
|
||||
|
||||
// ====================================================================================================================
|
||||
// PREVERB SETUP
|
||||
// ====================================================================================================================
|
||||
{
|
||||
int delay[PREVERB_NUMTAPS] = { 57, 97, 163 }; // // prime numbers! dont go lower than 20! it will be smaller than the DSP bufferlen!! (a check is done below for this)
|
||||
int volume[PREVERB_NUMTAPS] = { 128, 78, 46 };
|
||||
int pan[PREVERB_NUMTAPS] = { 128-24, 128+24, 128 };
|
||||
int count;
|
||||
|
||||
for (count=0; count< PREVERB_NUMTAPS; count++)
|
||||
{
|
||||
PreverbTap[count].delayms = delay[count];
|
||||
PreverbTap[count].volume = volume[count];
|
||||
PreverbTap[count].pan = pan[count];
|
||||
PreverbTap[count].historyoffset = 0;
|
||||
PreverbTap[count].historylen = (PreverbTap[count].delayms * outputfreq / 1000);
|
||||
|
||||
if (PreverbTap[count].historylen < FSOUND_DSP_GetBufferLength())
|
||||
{
|
||||
PreverbTap[count].historylen = FSOUND_DSP_GetBufferLength(); // just in case our calc is not the same.
|
||||
}
|
||||
|
||||
PreverbTap[count].historybuff = calloc(PreverbTap[count].historylen + 2048, bytesperoutputsample);
|
||||
PreverbTap[count].workarea = calloc(FSOUND_DSP_GetBufferLength(), bytesperoutputsample);
|
||||
PreverbTap[count].workarea2 = calloc(FSOUND_DSP_GetBufferLength(), 4);
|
||||
PreverbTap[count].Unit = FSOUND_DSP_Create(&PreverbCallback, FSOUND_DSP_DEFAULTPRIORITY_USER+count, &PreverbTap[count]);
|
||||
}
|
||||
}
|
||||
|
||||
// ====================================================================================================================
|
||||
// REVERB SETUP
|
||||
// ====================================================================================================================
|
||||
{
|
||||
// something to fiddle with..
|
||||
int delay[REVERB_NUMTAPS] = { 131, 149, 173, 211, 281, 401, 457}; // prime numbers!
|
||||
int volume[REVERB_NUMTAPS] = { 120, 100, 95, 90, 80, 60, 50};
|
||||
int pan[REVERB_NUMTAPS] = { 100, 128, 128, 152, 128, 100, 152};
|
||||
int count;
|
||||
|
||||
for (count=0; count< REVERB_NUMTAPS; count++)
|
||||
{
|
||||
ReverbTap[count].delayms = delay[count];
|
||||
ReverbTap[count].volume = volume[count];
|
||||
ReverbTap[count].pan = pan[count];
|
||||
ReverbTap[count].historyoffset = 0;
|
||||
ReverbTap[count].historylen = (ReverbTap[count].delayms * outputfreq / 1000);
|
||||
if (ReverbTap[count].historylen < FSOUND_DSP_GetBufferLength())
|
||||
{
|
||||
ReverbTap[count].historylen = FSOUND_DSP_GetBufferLength(); // just in case our calc is not the same.
|
||||
}
|
||||
|
||||
ReverbTap[count].historybuff = calloc(ReverbTap[count].historylen, 4); // * 4 is for 16bit stereo buffer
|
||||
ReverbTap[count].workarea = NULL;
|
||||
ReverbTap[count].workarea2 = NULL;
|
||||
ReverbTap[count].Unit = FSOUND_DSP_Create(&ReverbCallback, FSOUND_DSP_DEFAULTPRIORITY_USER+20+(count*2), &ReverbTap[count]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Reverb_Close()
|
||||
{
|
||||
int count;
|
||||
|
||||
for (count=0; count<PREVERB_NUMTAPS; count++)
|
||||
{
|
||||
if (PreverbTap[count].Unit)
|
||||
{
|
||||
FSOUND_DSP_Free(PreverbTap[count].Unit);
|
||||
}
|
||||
PreverbTap[count].Unit = NULL;
|
||||
|
||||
if (PreverbTap[count].historybuff)
|
||||
{
|
||||
free(PreverbTap[count].historybuff);
|
||||
}
|
||||
PreverbTap[count].historybuff = NULL;
|
||||
|
||||
if (PreverbTap[count].workarea)
|
||||
{
|
||||
free(PreverbTap[count].workarea);
|
||||
}
|
||||
PreverbTap[count].workarea = NULL;
|
||||
|
||||
if (PreverbTap[count].workarea2)
|
||||
{
|
||||
free(PreverbTap[count].workarea2);
|
||||
}
|
||||
PreverbTap[count].workarea2 = NULL;
|
||||
}
|
||||
|
||||
for (count=0; count<REVERB_NUMTAPS; count++)
|
||||
{
|
||||
if (ReverbTap[count].Unit)
|
||||
{
|
||||
FSOUND_DSP_Free(ReverbTap[count].Unit);
|
||||
}
|
||||
ReverbTap[count].Unit = NULL;
|
||||
|
||||
if (ReverbTap[count].historybuff)
|
||||
{
|
||||
free(ReverbTap[count].historybuff);
|
||||
}
|
||||
ReverbTap[count].historybuff = NULL;
|
||||
|
||||
if (ReverbTap[count].workarea)
|
||||
{
|
||||
free(ReverbTap[count].workarea);
|
||||
}
|
||||
ReverbTap[count].workarea = NULL;
|
||||
|
||||
if (ReverbTap[count].workarea2)
|
||||
{
|
||||
free(ReverbTap[count].workarea2);
|
||||
}
|
||||
ReverbTap[count].workarea2 = NULL;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
#ifndef _REVERB_H
|
||||
#define _REVERB_H
|
||||
|
||||
#define PREVERB_NUMTAPS 3
|
||||
#define REVERB_NUMTAPS 7
|
||||
|
||||
#include "../../api/inc/fmod.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
FSOUND_DSPUNIT *Unit;
|
||||
char *historybuff; /* storage space for tap history */
|
||||
char *workarea; /* a place to hold 1 buffer worth of data (for preverb) */
|
||||
char *workarea2; /* a temporary 16bit stereo place to convert from the mixer format to 16bit stereo for mixing */
|
||||
int delayms; /* delay of p/reverb tab in milliseconds */
|
||||
int volume; /* volume of p/reverb tab */
|
||||
int pan; /* pan of p/reverb tab */
|
||||
int historyoffset; /* running offset into history buffer */
|
||||
int historylen; /* size of history buffer in SAMPLES */
|
||||
} REVERBTAP;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
Preverb stuff
|
||||
*/
|
||||
extern REVERBTAP PreverbTap[];
|
||||
|
||||
/*
|
||||
Reverb stuff
|
||||
*/
|
||||
extern REVERBTAP ReverbTap[];
|
||||
|
||||
void Reverb_Init();
|
||||
void Reverb_Close();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,446 @@
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <process.h>
|
||||
|
||||
#include "../../api/inc/fmod.h"
|
||||
|
||||
#include "sdriver.h"
|
||||
#include "resource.h"
|
||||
|
||||
#ifdef _WIN64
|
||||
INT_PTR CALLBACK SoundDriverDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
#else
|
||||
BOOL CALLBACK SoundDriverDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
#endif
|
||||
|
||||
WNDPROC oldcomboproc;
|
||||
HWND DeviceComboHwnd;
|
||||
|
||||
extern int setting_buffersize;
|
||||
extern int setting_prebuffer_percent;
|
||||
extern int setting_rebuffer_percent;
|
||||
extern char setting_http_proxy[2048];
|
||||
extern char setting_cdletter[4];
|
||||
extern signed char setting_cdda;
|
||||
extern signed char setting_jitter;
|
||||
extern signed char setting_forceaspi;
|
||||
extern char cddevice;
|
||||
|
||||
|
||||
/*
|
||||
Function to call to create dialog box
|
||||
*/
|
||||
char SoundDriver_Init(long *freq)
|
||||
{
|
||||
HWND hwnd = GetForegroundWindow();
|
||||
#ifdef _WIN64
|
||||
HINSTANCE hinst = (HINSTANCE)GetWindowLong(hwnd,GWLP_HINSTANCE);
|
||||
#else
|
||||
HINSTANCE hinst = (HINSTANCE)GetWindowLong(hwnd,GWL_HINSTANCE);
|
||||
#endif
|
||||
|
||||
return (char)DialogBoxParam(hinst,MAKEINTRESOURCE(IDD_DSENUMBOX), hwnd, SoundDriverDlgProc, (LPARAM)freq);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
SubClassed windowproc for the 'select output' combobox
|
||||
*/
|
||||
long CALLBACK ComboWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_COMMAND:
|
||||
{
|
||||
int count;
|
||||
|
||||
if (ComboBox_GetCurSel(hwnd) == 0)
|
||||
FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
|
||||
else if (ComboBox_GetCurSel(hwnd) == 1)
|
||||
FSOUND_SetOutput(FSOUND_OUTPUT_WINMM);
|
||||
else
|
||||
FSOUND_SetOutput(FSOUND_OUTPUT_ASIO);
|
||||
|
||||
SendMessage(DeviceComboHwnd, CB_RESETCONTENT, 0, 0);
|
||||
|
||||
for (count=0; count < FSOUND_GetNumDrivers(); count++)
|
||||
ComboBox_AddString(DeviceComboHwnd, FSOUND_GetDriverName(count));
|
||||
|
||||
ComboBox_SetCurSel(DeviceComboHwnd,0);
|
||||
UpdateWindow(DeviceComboHwnd);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
return (long)oldcomboproc(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Window proc for dialog box
|
||||
*/
|
||||
#ifdef _WIN64
|
||||
INT_PTR CALLBACK SoundDriverDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
#else
|
||||
BOOL CALLBACK SoundDriverDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
#endif
|
||||
{
|
||||
static HWND hCombo, hRadio, hCheckbox;
|
||||
static long *freq;
|
||||
static long lastoutput=0, lastdriver=0, lastmixer=0, lastoutputrate=44100;
|
||||
char str[1024];
|
||||
|
||||
switch (msg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
char str[1024];
|
||||
int count, buffersize, prebuffer_percent, rebuffer_percent, thisitem, cur;
|
||||
|
||||
/*
|
||||
Remember what came in last
|
||||
*/
|
||||
lastoutput = FSOUND_GetOutput();
|
||||
lastdriver = FSOUND_GetDriver();
|
||||
lastmixer = FSOUND_GetMixer();
|
||||
lastoutputrate = FSOUND_GetOutputRate();
|
||||
|
||||
#ifdef _WIN64
|
||||
if (lastmixer != FSOUND_MIXER_AUTODETECT &&
|
||||
lastmixer != FSOUND_MIXER_QUALITY_AUTODETECT &&
|
||||
lastmixer != FSOUND_MIXER_MONO &&
|
||||
lastmixer != FSOUND_MIXER_QUALITY_MONO)
|
||||
{
|
||||
lastmixer = FSOUND_MIXER_QUALITY_AUTODETECT;
|
||||
}
|
||||
#else
|
||||
if (lastmixer > FSOUND_MIXER_QUALITY_MMXP6)
|
||||
{
|
||||
lastmixer = FSOUND_MIXER_QUALITY_MMXP6;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (lastoutput < FSOUND_OUTPUT_WINMM || lastoutput > FSOUND_OUTPUT_ASIO)
|
||||
{
|
||||
lastoutput = FSOUND_OUTPUT_DSOUND; /* somehow lastoutput got corrupted */
|
||||
}
|
||||
if (lastdriver < 0)
|
||||
{
|
||||
lastdriver = 0; /* somehow lastdriver got corrupted */
|
||||
}
|
||||
|
||||
FSOUND_SetOutput(lastoutput);
|
||||
|
||||
/*
|
||||
SET UP OUTPUT COMBO BOX
|
||||
*/
|
||||
hCombo = GetDlgItem(hwnd,IDC_DSENUM_COMBO3);
|
||||
ComboBox_AddString(hCombo,"Direct Sound");
|
||||
ComboBox_AddString(hCombo,"Windows Multimedia WaveOut");
|
||||
ComboBox_AddString(hCombo,"ASIO Low latency");
|
||||
|
||||
if (lastoutput == FSOUND_OUTPUT_DSOUND)
|
||||
{
|
||||
ComboBox_SetCurSel(hCombo,0);
|
||||
}
|
||||
if (lastoutput == FSOUND_OUTPUT_WINMM)
|
||||
{
|
||||
ComboBox_SetCurSel(hCombo,1);
|
||||
}
|
||||
if (lastoutput == FSOUND_OUTPUT_ASIO)
|
||||
{
|
||||
ComboBox_SetCurSel(hCombo,2);
|
||||
}
|
||||
|
||||
/*
|
||||
Subclass this combo box
|
||||
*/
|
||||
#ifdef _WIN64
|
||||
oldcomboproc = (WNDPROC)GetWindowLong(hCombo, GWLP_WNDPROC);
|
||||
SetWindowLong(hCombo, GWLP_WNDPROC, (LONG)ComboWindowProc);
|
||||
#else
|
||||
oldcomboproc = (WNDPROC)GetWindowLong(hCombo, GWL_WNDPROC);
|
||||
SetWindowLong(hCombo, GWL_WNDPROC, (LONG)ComboWindowProc);
|
||||
#endif
|
||||
|
||||
/*
|
||||
SET UP MIXER COMBO BOX
|
||||
*/
|
||||
hCombo = GetDlgItem(hwnd,IDC_DSENUM_COMBO2);
|
||||
ComboBox_AddString(hCombo,"Autodetect");
|
||||
#ifndef _WIN64
|
||||
ComboBox_AddString(hCombo,"Interpolation/Volume Ramping - FPU ");
|
||||
ComboBox_AddString(hCombo,"Interpolation/Volume Ramping - Pentium MMX");
|
||||
ComboBox_AddString(hCombo,"Interpolation/Volume Ramping - P6/P2/P3+ MMX");
|
||||
#endif
|
||||
|
||||
if (lastmixer == FSOUND_MIXER_QUALITY_AUTODETECT) ComboBox_SetCurSel(hCombo,0);
|
||||
#ifndef _WIN64
|
||||
if (lastmixer == FSOUND_MIXER_QUALITY_FPU) ComboBox_SetCurSel(hCombo,1);
|
||||
if (lastmixer == FSOUND_MIXER_QUALITY_MMXP5) ComboBox_SetCurSel(hCombo,2);
|
||||
if (lastmixer == FSOUND_MIXER_QUALITY_MMXP6) ComboBox_SetCurSel(hCombo,3);
|
||||
#endif
|
||||
|
||||
/*
|
||||
SET UP DRIVER COMBO BOX
|
||||
*/
|
||||
hCombo = GetDlgItem(hwnd,IDC_DSENUM_COMBO);
|
||||
DeviceComboHwnd = hCombo;
|
||||
for (count=0; count < FSOUND_GetNumDrivers(); count++)
|
||||
{
|
||||
ComboBox_AddString(hCombo,FSOUND_GetDriverName(count));
|
||||
}
|
||||
|
||||
if (ComboBox_GetCount(hCombo))
|
||||
{
|
||||
ComboBox_SetCurSel(hCombo, lastdriver);
|
||||
}
|
||||
|
||||
/*
|
||||
SET UP FREQUENCY RADIO BUTTON
|
||||
*/
|
||||
if (lastoutputrate == 48000) hRadio = GetDlgItem(hwnd,IDC_RADIO5);
|
||||
else if (lastoutputrate == 44100) hRadio = GetDlgItem(hwnd,IDC_RADIO1);
|
||||
else if (lastoutputrate == 22050) hRadio = GetDlgItem(hwnd,IDC_RADIO2);
|
||||
else if (lastoutputrate == 11025) hRadio = GetDlgItem(hwnd,IDC_RADIO3);
|
||||
else if (lastoutputrate == 8000) hRadio = GetDlgItem(hwnd,IDC_RADIO4);
|
||||
else hRadio = GetDlgItem(hwnd,IDC_RADIO1);
|
||||
|
||||
freq = (long *)lParam;
|
||||
Button_SetCheck(hRadio, TRUE);
|
||||
|
||||
/*
|
||||
SET UP INTERNET STREAMING VALUES
|
||||
*/
|
||||
FSOUND_Stream_Net_GetBufferProperties(&buffersize, &prebuffer_percent, &rebuffer_percent);
|
||||
sprintf(str, "%d", buffersize);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_CONFIG_BUFFERSIZE), str);
|
||||
sprintf(str, "%d", prebuffer_percent);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_CONFIG_INITIALPERCENT), str);
|
||||
sprintf(str, "%d", rebuffer_percent);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_CONFIG_REBUFFERPERCENT), str);
|
||||
SetWindowText(GetDlgItem(hwnd, IDC_CONFIG_PROXY), setting_http_proxy);
|
||||
|
||||
/*
|
||||
SET UP CD SETTINGS
|
||||
*/
|
||||
thisitem = 0;
|
||||
hCombo = GetDlgItem(hwnd, IDC_CONFIG_CD);
|
||||
for (count=2;count < 26;count++)
|
||||
{
|
||||
sprintf(str, "%c:\\", (char)('A' + count));
|
||||
if (GetDriveType(str) == DRIVE_CDROM)
|
||||
{
|
||||
str[2] = 0;
|
||||
ComboBox_AddString(hCombo, str);
|
||||
if (!strcmp(str, setting_cdletter))
|
||||
{
|
||||
cur = thisitem;
|
||||
}
|
||||
thisitem++;
|
||||
}
|
||||
}
|
||||
ComboBox_SetCurSel(hCombo, cur);
|
||||
|
||||
hCheckbox = GetDlgItem(hwnd, IDC_CONFIG_CDDA);
|
||||
Button_SetCheck(hCheckbox, setting_cdda);
|
||||
|
||||
hCheckbox = GetDlgItem(hwnd, IDC_CONFIG_JITTER);
|
||||
Button_SetCheck(hCheckbox, setting_jitter);
|
||||
|
||||
hCheckbox = GetDlgItem(hwnd, IDC_CONFIG_FORCEASPI);
|
||||
Button_SetCheck(hCheckbox, setting_forceaspi);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDOK :
|
||||
{
|
||||
int buffersize, prebuffer_percent, rebuffer_percent;
|
||||
|
||||
hCombo = GetDlgItem(hwnd,IDC_DSENUM_COMBO);
|
||||
|
||||
FSOUND_SetDriver((char)ComboBox_GetCurSel(hCombo));
|
||||
|
||||
if (Button_GetCheck(GetDlgItem(hwnd,IDC_RADIO5))) *freq = 48000;
|
||||
else if (Button_GetCheck(GetDlgItem(hwnd,IDC_RADIO1))) *freq = 44100;
|
||||
else if (Button_GetCheck(GetDlgItem(hwnd,IDC_RADIO2))) *freq = 22050;
|
||||
else if (Button_GetCheck(GetDlgItem(hwnd,IDC_RADIO3))) *freq = 11025;
|
||||
else if (Button_GetCheck(GetDlgItem(hwnd,IDC_RADIO4))) *freq = 8000;
|
||||
|
||||
hCombo = GetDlgItem(hwnd,IDC_DSENUM_COMBO2);
|
||||
switch (ComboBox_GetCurSel(hCombo))
|
||||
{
|
||||
case 0:
|
||||
FSOUND_SetMixer(FSOUND_MIXER_QUALITY_AUTODETECT);
|
||||
break;
|
||||
case 1:
|
||||
FSOUND_SetMixer(FSOUND_MIXER_QUALITY_FPU);
|
||||
break;
|
||||
case 2:
|
||||
FSOUND_SetMixer(FSOUND_MIXER_QUALITY_MMXP5);
|
||||
break;
|
||||
case 3:
|
||||
FSOUND_SetMixer(FSOUND_MIXER_QUALITY_MMXP6);
|
||||
break;
|
||||
}
|
||||
|
||||
GetWindowText(GetDlgItem(hwnd, IDC_CONFIG_BUFFERSIZE), str, 1023);
|
||||
buffersize = atoi(str);
|
||||
GetWindowText(GetDlgItem(hwnd, IDC_CONFIG_INITIALPERCENT), str, 1023);
|
||||
prebuffer_percent = atoi(str);
|
||||
GetWindowText(GetDlgItem(hwnd, IDC_CONFIG_REBUFFERPERCENT), str, 1023);
|
||||
rebuffer_percent = atoi(str);
|
||||
|
||||
if (buffersize < 8192)
|
||||
{
|
||||
MessageBox(hwnd, "Buffer size too small!", "Warning", MB_OK | MB_ICONWARNING);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((prebuffer_percent <= 0) || (prebuffer_percent > 99))
|
||||
{
|
||||
MessageBox(hwnd, "Initial buffer percent must be between 1 - 99", "Warning", MB_OK | MB_ICONWARNING);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ((rebuffer_percent <= 0) || (rebuffer_percent > 99))
|
||||
{
|
||||
MessageBox(hwnd, "Rebuffer percent must be between 1 - 99", "Warning", MB_OK | MB_ICONWARNING);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
setting_buffersize = buffersize;
|
||||
setting_prebuffer_percent = prebuffer_percent;
|
||||
setting_rebuffer_percent = rebuffer_percent;
|
||||
FSOUND_Stream_Net_SetBufferProperties(setting_buffersize, setting_prebuffer_percent, setting_rebuffer_percent);
|
||||
|
||||
GetWindowText(GetDlgItem(hwnd, IDC_CONFIG_PROXY), setting_http_proxy, 2047);
|
||||
FSOUND_Stream_Net_SetProxy(setting_http_proxy);
|
||||
|
||||
hCombo = GetDlgItem(hwnd, IDC_CONFIG_CD);
|
||||
ComboBox_GetLBText(hCombo, ComboBox_GetCurSel(hCombo), str);
|
||||
strncpy(setting_cdletter, str, 2);
|
||||
cddevice = str[0];
|
||||
|
||||
hCheckbox = GetDlgItem(hwnd, IDC_CONFIG_CDDA);
|
||||
setting_cdda = Button_GetCheck(hCheckbox);
|
||||
|
||||
hCheckbox = GetDlgItem(hwnd, IDC_CONFIG_JITTER);
|
||||
setting_jitter = Button_GetCheck(hCheckbox);
|
||||
|
||||
hCheckbox = GetDlgItem(hwnd, IDC_CONFIG_FORCEASPI);
|
||||
setting_forceaspi = Button_GetCheck(hCheckbox);
|
||||
|
||||
EndDialog(hwnd,TRUE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
case IDCANCEL:
|
||||
FSOUND_SetOutput(lastoutput);
|
||||
FSOUND_SetDriver(lastdriver);
|
||||
FSOUND_SetMixer(lastmixer);
|
||||
|
||||
EndDialog(hwnd, FALSE);
|
||||
return TRUE;
|
||||
|
||||
case IDC_CONFIG_CDINFO :
|
||||
{
|
||||
FILE *fp;
|
||||
char cdstring[5];
|
||||
char *cd_device_info;
|
||||
FSOUND_STREAM *stream;
|
||||
STARTUPINFO startup_info;
|
||||
PROCESS_INFORMATION process_info;
|
||||
|
||||
if (!FSOUND_Init(44100, 4, 0))
|
||||
{
|
||||
MessageBox(hwnd, "ERROR: CD/DVD device info not available", "Error", MB_ICONERROR | MB_OK);
|
||||
break;
|
||||
}
|
||||
|
||||
hCombo = GetDlgItem(hwnd, IDC_CONFIG_CD);
|
||||
ComboBox_GetLBText(hCombo, ComboBox_GetCurSel(hCombo), str);
|
||||
sprintf(cdstring, "%s*?", str);
|
||||
|
||||
stream = FSOUND_Stream_Open(cdstring, 0, 0, 0);
|
||||
if (!stream)
|
||||
{
|
||||
MessageBox(hwnd, "ERROR: CD/DVD device info not available", "Error", MB_ICONERROR | MB_OK);
|
||||
FSOUND_Close();
|
||||
break;
|
||||
}
|
||||
|
||||
if (FSOUND_Stream_FindTagField(stream, FSOUND_TAGFIELD_ASF + 1, "CD_DEVICE_INFO", (void **)&cd_device_info, 0))
|
||||
{
|
||||
fp = fopen("cd_device_info.txt", "wb");
|
||||
fwrite(cd_device_info, 1, strlen(cd_device_info), fp);
|
||||
fclose(fp);
|
||||
|
||||
memset(&startup_info, 0, sizeof(STARTUPINFO));
|
||||
startup_info.cb = sizeof(STARTUPINFO);
|
||||
|
||||
if (CreateProcess(0,
|
||||
"notepad cd_device_info.txt",
|
||||
0,
|
||||
0,
|
||||
TRUE,
|
||||
NORMAL_PRIORITY_CLASS,
|
||||
0,
|
||||
0,
|
||||
&startup_info,
|
||||
&process_info))
|
||||
{
|
||||
CloseHandle(process_info.hProcess);
|
||||
CloseHandle(process_info.hThread);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox(hwnd, "ERROR: CD/DVD device info not available", "Error", MB_ICONERROR | MB_OK);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FSOUND_Stream_FindTagField(stream, FSOUND_TAGFIELD_ASF + 1, "CD_ERROR", (void **)&cd_device_info, 0))
|
||||
{
|
||||
MessageBox(hwnd, cd_device_info, "Error", MB_ICONHAND|MB_OK|MB_SYSTEMMODAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox(hwnd, "ERROR: CD/DVD device info not available", "Error", MB_ICONERROR | MB_OK);
|
||||
}
|
||||
}
|
||||
|
||||
FSOUND_Stream_Close(stream);
|
||||
FSOUND_Close();
|
||||
break;
|
||||
}
|
||||
|
||||
case IDC_ABOUT :
|
||||
{
|
||||
char tmp[128];
|
||||
sprintf(tmp, "FMOD %.2f Media Player Copyright (c), Firelight Technologies Pty, Ltd, 1999-2004", FMOD_VERSION);
|
||||
MessageBox(hwnd, tmp, "About", MB_OK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user