Started to extract common parts of the two gfx plugins into a new library (VS2008 users, sorry :)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@22 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
fa6bd5d2e2
commit
711b1e0016
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="8,00"
|
Version="8.00"
|
||||||
Name="wxBase28"
|
Name="wxBase28"
|
||||||
ProjectGUID="{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}"
|
ProjectGUID="{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}"
|
||||||
RootNamespace="wxBase28"
|
RootNamespace="wxBase28"
|
||||||
|
@ -292,7 +292,6 @@
|
||||||
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
||||||
WarningLevel="4"
|
WarningLevel="4"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -5730,10 +5729,6 @@
|
||||||
<Filter
|
<Filter
|
||||||
Name="Setup Headers"
|
Name="Setup Headers"
|
||||||
>
|
>
|
||||||
<File
|
|
||||||
RelativePath="..\..\include\wx\univ\setup.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\wx\msw\setup.h"
|
RelativePath="..\..\include\wx\msw\setup.h"
|
||||||
>
|
>
|
||||||
|
@ -5798,6 +5793,10 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\include\wx\univ\setup.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="MSW Headers"
|
Name="MSW Headers"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="8,00"
|
Version="8.00"
|
||||||
Name="wxCore28"
|
Name="wxCore28"
|
||||||
ProjectGUID="{0318BA30-EF48-441A-9E10-DC85EFAE39F0}"
|
ProjectGUID="{0318BA30-EF48-441A-9E10-DC85EFAE39F0}"
|
||||||
RootNamespace="wxCore"
|
RootNamespace="wxCore"
|
||||||
|
@ -59,6 +59,7 @@
|
||||||
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
||||||
WarningLevel="4"
|
WarningLevel="4"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -137,7 +138,7 @@
|
||||||
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
||||||
WarningLevel="4"
|
WarningLevel="4"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
Detect64BitPortabilityProblems="true"
|
Detect64BitPortabilityProblems="false"
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -216,6 +217,7 @@
|
||||||
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
||||||
WarningLevel="4"
|
WarningLevel="4"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -294,6 +296,7 @@
|
||||||
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
||||||
WarningLevel="4"
|
WarningLevel="4"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -371,6 +374,7 @@
|
||||||
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
||||||
WarningLevel="4"
|
WarningLevel="4"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -449,6 +453,7 @@
|
||||||
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
ProgramDataBaseFileName="$(IntDir)\vc80.pdb"
|
||||||
WarningLevel="4"
|
WarningLevel="4"
|
||||||
SuppressStartupBanner="true"
|
SuppressStartupBanner="true"
|
||||||
|
Detect64BitPortabilityProblems="false"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCManagedResourceCompilerTool"
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
@ -16948,6 +16953,10 @@
|
||||||
<Filter
|
<Filter
|
||||||
Name="Setup Headers"
|
Name="Setup Headers"
|
||||||
>
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\..\include\wx\univ\setup.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\include\wx\msw\setup.h"
|
RelativePath="..\..\include\wx\msw\setup.h"
|
||||||
>
|
>
|
||||||
|
@ -17012,10 +17021,6 @@
|
||||||
/>
|
/>
|
||||||
</FileConfiguration>
|
</FileConfiguration>
|
||||||
</File>
|
</File>
|
||||||
<File
|
|
||||||
RelativePath="..\..\include\wx\univ\setup.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
</Filter>
|
||||||
<Filter
|
<Filter
|
||||||
Name="MSW Headers"
|
Name="MSW Headers"
|
||||||
|
|
|
@ -50,7 +50,6 @@
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -114,7 +113,6 @@
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -178,7 +176,6 @@
|
||||||
FloatingPointModel="2"
|
FloatingPointModel="2"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -243,7 +240,6 @@
|
||||||
FloatingPointModel="2"
|
FloatingPointModel="2"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -307,7 +303,6 @@
|
||||||
FloatingPointModel="2"
|
FloatingPointModel="2"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -372,7 +367,6 @@
|
||||||
FloatingPointModel="2"
|
FloatingPointModel="2"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
|
|
@ -53,7 +53,6 @@
|
||||||
PrecompiledHeaderThrough="stdafx.h"
|
PrecompiledHeaderThrough="stdafx.h"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="false"
|
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -125,7 +124,6 @@
|
||||||
PrecompiledHeaderThrough="stdafx.h"
|
PrecompiledHeaderThrough="stdafx.h"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -198,7 +196,6 @@
|
||||||
PrecompiledHeaderThrough="stdafx.h"
|
PrecompiledHeaderThrough="stdafx.h"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="false"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -272,7 +269,6 @@
|
||||||
PrecompiledHeaderThrough="stdafx.h"
|
PrecompiledHeaderThrough="stdafx.h"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -340,7 +336,6 @@
|
||||||
PrecompiledHeaderThrough="stdafx.h"
|
PrecompiledHeaderThrough="stdafx.h"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -409,7 +404,6 @@
|
||||||
PrecompiledHeaderThrough="stdafx.h"
|
PrecompiledHeaderThrough="stdafx.h"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -53,7 +53,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="false"
|
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -122,7 +121,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -195,7 +193,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="false"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -271,7 +268,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="false"
|
|
||||||
DebugInformationFormat="0"
|
DebugInformationFormat="0"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -342,7 +338,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="false"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -414,7 +409,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="false"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -66,7 +66,6 @@ void CEXIMemoryCard::Flush()
|
||||||
{
|
{
|
||||||
FILE* pFile = NULL;
|
FILE* pFile = NULL;
|
||||||
pFile = fopen(m_strFilename.c_str(), "wb");
|
pFile = fopen(m_strFilename.c_str(), "wb");
|
||||||
|
|
||||||
if (pFile)
|
if (pFile)
|
||||||
{
|
{
|
||||||
fwrite(memory_card_content, memory_card_size, 1, pFile);
|
fwrite(memory_card_content, memory_card_size, 1, pFile);
|
||||||
|
@ -74,7 +73,8 @@ void CEXIMemoryCard::Flush()
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PanicAlert("ERROR - could not write memory card file %s", m_strFilename.c_str());
|
PanicAlert("Could not write memory card file %s.\n\n"
|
||||||
|
"Are you running Dolphin from a CD/DVD, or is the save file maybe write protected?", m_strFilename.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="8,00"
|
Version="8.00"
|
||||||
Name="DebuggerWX"
|
Name="DebuggerWX"
|
||||||
ProjectGUID="{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}"
|
ProjectGUID="{4D3CD4C5-412B-4B49-9B1B-A68A2A129C77}"
|
||||||
RootNamespace="DebuggerWX"
|
RootNamespace="DebuggerWX"
|
||||||
|
@ -52,7 +52,6 @@
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -119,7 +118,6 @@
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -182,7 +180,6 @@
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -247,7 +244,6 @@
|
||||||
BufferSecurityCheck="false"
|
BufferSecurityCheck="false"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -313,7 +309,6 @@
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
@ -380,7 +375,6 @@
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="0"
|
UsePrecompiledHeader="0"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
|
|
|
@ -51,7 +51,6 @@
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
ForcedIncludeFiles=""
|
ForcedIncludeFiles=""
|
||||||
/>
|
/>
|
||||||
|
@ -117,7 +116,6 @@
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles=""
|
ForcedIncludeFiles=""
|
||||||
/>
|
/>
|
||||||
|
@ -179,7 +177,6 @@
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles=""
|
ForcedIncludeFiles=""
|
||||||
/>
|
/>
|
||||||
|
@ -243,7 +240,6 @@
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles=""
|
ForcedIncludeFiles=""
|
||||||
/>
|
/>
|
||||||
|
@ -305,7 +301,6 @@
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles=""
|
ForcedIncludeFiles=""
|
||||||
/>
|
/>
|
||||||
|
@ -368,7 +363,6 @@
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles=""
|
ForcedIncludeFiles=""
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
#include "Common.h"
|
||||||
|
|
||||||
|
#include "BPMemory.h"
|
||||||
|
|
||||||
|
//BP state
|
||||||
|
BPMemory bpmem;
|
||||||
|
|
|
@ -0,0 +1,793 @@
|
||||||
|
#ifndef _BPMEMORY_H
|
||||||
|
#define _BPMEMORY_H
|
||||||
|
|
||||||
|
#include "Common.h"
|
||||||
|
|
||||||
|
#pragma pack(4)
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// Tev/combiner things
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#define TEVOP_ADD 0
|
||||||
|
#define TEVOP_SUB 1
|
||||||
|
#define TEVCMP_R8_GT 8
|
||||||
|
#define TEVCMP_R8_EQ 9
|
||||||
|
#define TEVCMP_GR16_GT 10
|
||||||
|
#define TEVCMP_GR16_EQ 11
|
||||||
|
#define TEVCMP_BGR24_GT 12
|
||||||
|
#define TEVCMP_BGR24_EQ 13
|
||||||
|
#define TEVCMP_RGB8_GT 14
|
||||||
|
#define TEVCMP_RGB8_EQ 15
|
||||||
|
#define TEVCMP_A8_GT 14
|
||||||
|
#define TEVCMP_A8_EQ 15
|
||||||
|
|
||||||
|
#define TEVCOLORARG_CPREV 0
|
||||||
|
#define TEVCOLORARG_APREV 1
|
||||||
|
#define TEVCOLORARG_C0 2
|
||||||
|
#define TEVCOLORARG_A0 3
|
||||||
|
#define TEVCOLORARG_C1 4
|
||||||
|
#define TEVCOLORARG_A1 5
|
||||||
|
#define TEVCOLORARG_C2 6
|
||||||
|
#define TEVCOLORARG_A2 7
|
||||||
|
#define TEVCOLORARG_TEXC 8
|
||||||
|
#define TEVCOLORARG_TEXA 9
|
||||||
|
#define TEVCOLORARG_RASC 10
|
||||||
|
#define TEVCOLORARG_RASA 11
|
||||||
|
#define TEVCOLORARG_ONE 12
|
||||||
|
#define TEVCOLORARG_HALF 13
|
||||||
|
#define TEVCOLORARG_KONST 14
|
||||||
|
#define TEVCOLORARG_ZERO 15
|
||||||
|
|
||||||
|
#define TEVALPHAARG_APREV 0
|
||||||
|
#define TEVALPHAARG_A0 1
|
||||||
|
#define TEVALPHAARG_A1 2
|
||||||
|
#define TEVALPHAARG_A2 3
|
||||||
|
#define TEVALPHAARG_TEXA 4
|
||||||
|
#define TEVALPHAARG_RASA 5
|
||||||
|
#define TEVALPHAARG_KONST 6
|
||||||
|
#define TEVALPHAARG_ZERO 7
|
||||||
|
|
||||||
|
#define ALPHACMP_NEVER 0
|
||||||
|
#define ALPHACMP_LESS 1
|
||||||
|
#define ALPHACMP_EQUAL 2
|
||||||
|
#define ALPHACMP_LEQUAL 3
|
||||||
|
#define ALPHACMP_GREATER 4
|
||||||
|
#define ALPHACMP_NEQUAL 5
|
||||||
|
#define ALPHACMP_GEQUAL 6
|
||||||
|
#define ALPHACMP_ALWAYS 7
|
||||||
|
|
||||||
|
enum Compare
|
||||||
|
{
|
||||||
|
COMPARE_NEVER = 0,
|
||||||
|
COMPARE_LESS,
|
||||||
|
COMPARE_EQUAL,
|
||||||
|
COMPARE_LEQUAL,
|
||||||
|
COMPARE_GREATER,
|
||||||
|
COMPARE_NEQUAL,
|
||||||
|
COMPARE_GEQUAL,
|
||||||
|
COMPARE_ALWAYS
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ZTEXTURE_DISABLE 0
|
||||||
|
#define ZTEXTURE_ADD 1
|
||||||
|
#define ZTEXTURE_REPLACE 2
|
||||||
|
|
||||||
|
enum TevBias
|
||||||
|
{
|
||||||
|
TB_ZERO = 0,
|
||||||
|
TB_ADDHALF = 1,
|
||||||
|
TB_SUBHALF = 2,
|
||||||
|
TB_COMPARE = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum AlphaOp
|
||||||
|
{
|
||||||
|
ALPHAOP_AND = 0,
|
||||||
|
ALPHAOP_OR,
|
||||||
|
ALPHAOP_XOR,
|
||||||
|
ALPHAOP_XNOR,
|
||||||
|
};
|
||||||
|
|
||||||
|
union IND_MTXA
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
signed ma : 11;
|
||||||
|
signed mb : 11;
|
||||||
|
unsigned s0 : 2; // bits 0-1 of scale factor
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union IND_MTXB
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
signed mc : 11;
|
||||||
|
signed md : 11;
|
||||||
|
unsigned s1 : 2; // bits 2-3 of scale factor
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union IND_MTXC
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
signed me : 11;
|
||||||
|
signed mf : 11;
|
||||||
|
unsigned s2 : 2; // bits 4-5 of scale factor
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct IND_MTX
|
||||||
|
{
|
||||||
|
IND_MTXA col0;
|
||||||
|
IND_MTXB col1;
|
||||||
|
IND_MTXC col2;
|
||||||
|
};
|
||||||
|
|
||||||
|
union IND_IMASK
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned mask : 24;
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define TEVSELCC_CPREV 0
|
||||||
|
#define TEVSELCC_APREV 1
|
||||||
|
#define TEVSELCC_C0 2
|
||||||
|
#define TEVSELCC_A0 3
|
||||||
|
#define TEVSELCC_C1 4
|
||||||
|
#define TEVSELCC_A1 5
|
||||||
|
#define TEVSELCC_C2 6
|
||||||
|
#define TEVSELCC_A2 7
|
||||||
|
#define TEVSELCC_TEXC 8
|
||||||
|
#define TEVSELCC_TEXA 9
|
||||||
|
#define TEVSELCC_RASC 10
|
||||||
|
#define TEVSELCC_RASA 11
|
||||||
|
#define TEVSELCC_ONE 12
|
||||||
|
#define TEVSELCC_HALF 13
|
||||||
|
#define TEVSELCC_KONST 14
|
||||||
|
#define TEVSELCC_ZERO 15
|
||||||
|
|
||||||
|
#define TEVSELCA_APREV 0
|
||||||
|
#define TEVSELCA_A0 1
|
||||||
|
#define TEVSELCA_A1 2
|
||||||
|
#define TEVSELCA_A2 3
|
||||||
|
#define TEVSELCA_TEXA 4
|
||||||
|
#define TEVSELCA_RASA 5
|
||||||
|
#define TEVSELCA_KONST 6
|
||||||
|
#define TEVSELCA_ZERO 7
|
||||||
|
|
||||||
|
struct TevStageCombiner
|
||||||
|
{
|
||||||
|
union ColorCombiner
|
||||||
|
{
|
||||||
|
struct //abc=8bit,d=10bit
|
||||||
|
{
|
||||||
|
unsigned d : 4; // TEVSELCC_X
|
||||||
|
unsigned c : 4; // TEVSELCC_X
|
||||||
|
unsigned b : 4; // TEVSELCC_X
|
||||||
|
unsigned a : 4; // TEVSELCC_X
|
||||||
|
|
||||||
|
unsigned bias : 2;
|
||||||
|
unsigned op : 1;
|
||||||
|
unsigned clamp : 1;
|
||||||
|
|
||||||
|
unsigned shift : 2;
|
||||||
|
unsigned dest : 2; //1,2,3
|
||||||
|
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
union AlphaCombiner
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned rswap : 2;
|
||||||
|
unsigned tswap : 2;
|
||||||
|
unsigned d : 3; // TEVSELCA_
|
||||||
|
unsigned c : 3; // TEVSELCA_
|
||||||
|
unsigned b : 3; // TEVSELCA_
|
||||||
|
unsigned a : 3; // TEVSELCA_
|
||||||
|
|
||||||
|
unsigned bias : 2; //GXTevBias
|
||||||
|
unsigned op : 1;
|
||||||
|
unsigned clamp : 1;
|
||||||
|
|
||||||
|
unsigned shift : 2;
|
||||||
|
unsigned dest : 2; //1,2,3
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
ColorCombiner colorC;
|
||||||
|
AlphaCombiner alphaC;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define ITF_8 0
|
||||||
|
#define ITF_5 1
|
||||||
|
#define ITF_4 2
|
||||||
|
#define ITF_3 3
|
||||||
|
|
||||||
|
#define ITB_NONE 0
|
||||||
|
#define ITB_S 1
|
||||||
|
#define ITB_T 2
|
||||||
|
#define ITB_ST 3
|
||||||
|
#define ITB_U 4
|
||||||
|
#define ITB_SU 5
|
||||||
|
#define ITB_TU 6
|
||||||
|
#define ITB_STU 7
|
||||||
|
|
||||||
|
#define ITBA_OFF 0
|
||||||
|
#define ITBA_S 1
|
||||||
|
#define ITBA_T 2
|
||||||
|
#define ITBA_U 3
|
||||||
|
|
||||||
|
#define ITW_OFF 0
|
||||||
|
#define ITW_256 1
|
||||||
|
#define ITW_128 2
|
||||||
|
#define ITW_64 3
|
||||||
|
#define ITW_32 4
|
||||||
|
#define ITW_16 5
|
||||||
|
#define ITW_0 6
|
||||||
|
|
||||||
|
// several discoveries:
|
||||||
|
// GXSetTevIndBumpST(tevstage, indstage, matrixind)
|
||||||
|
// if( matrix == 2 ) realmat = 6; // 10
|
||||||
|
// else if( matrix == 3 ) realmat = 7; // 11
|
||||||
|
// else if( matrix == 1 ) realmat = 5; // 9
|
||||||
|
// GXSetTevIndirect(tevstage, indstage, 0, 3, realmat, 6, 6, 0, 0, 0)
|
||||||
|
// GXSetTevIndirect(tevstage+1, indstage, 0, 3, realmat+4, 6, 6, 1, 0, 0)
|
||||||
|
// GXSetTevIndirect(tevstage+2, indstage, 0, 0, 0, 0, 0, 1, 0, 0)
|
||||||
|
|
||||||
|
union TevStageIndirect
|
||||||
|
{
|
||||||
|
// if mid, sw, tw, and addprev are 0, then no indirect stage is used, mask = 0x17fe00
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned bt : 2; // indirect tex stage ID
|
||||||
|
unsigned fmt : 2; // format: ITF_X
|
||||||
|
unsigned bias : 3; // ITB_X
|
||||||
|
unsigned bs : 2; // ITBA_X, indicates which coordinate will become the 'bump alpha'
|
||||||
|
unsigned mid : 4; // matrix id to multiply offsets with
|
||||||
|
unsigned sw : 3; // ITW_X, wrapping factor for S of regular coord
|
||||||
|
unsigned tw : 3; // ITW_X, wrapping factor for T of regular coord
|
||||||
|
unsigned lb_utclod : 1; // use modified or unmodified texture coordinates for LOD computation
|
||||||
|
unsigned fb_addprev : 1; // 1 if the texture coordinate results from the previous TEV stage should be added
|
||||||
|
unsigned pad0 : 3;
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
u32 hex : 21;
|
||||||
|
u32 unused : 11;
|
||||||
|
};
|
||||||
|
|
||||||
|
bool IsActive() { return (hex&0x17fe00)!=0; }
|
||||||
|
};
|
||||||
|
|
||||||
|
union TwoTevStageOrders
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned texmap0 : 3; // indirect tex stage texmap
|
||||||
|
unsigned texcoord0 : 3;
|
||||||
|
unsigned enable0 : 1; // 1 if should read from texture
|
||||||
|
unsigned colorchan0 : 3; // RAS1_CC_X
|
||||||
|
|
||||||
|
unsigned pad0 : 2;
|
||||||
|
|
||||||
|
unsigned texmap1 : 3;
|
||||||
|
unsigned texcoord1 : 3;
|
||||||
|
unsigned enable1 : 1; // 1 if should read from texture
|
||||||
|
unsigned colorchan1 : 3; // RAS1_CC_X
|
||||||
|
|
||||||
|
unsigned pad1 : 2;
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
int getTexMap(int i){return i?texmap1:texmap0;}
|
||||||
|
int getTexCoord(int i){return i?texcoord1:texcoord0;}
|
||||||
|
int getEnable(int i){return i?enable1:enable0;}
|
||||||
|
int getColorChan(int i){return i?colorchan1:colorchan0;}
|
||||||
|
};
|
||||||
|
|
||||||
|
union TEXSCALE
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned ss0 : 4; // indirect tex stage 0, 2^(-ss0)
|
||||||
|
unsigned ts0 : 4; // indirect tex stage 0
|
||||||
|
unsigned ss1 : 4; // indirect tex stage 1
|
||||||
|
unsigned ts1 : 4; // indirect tex stage 1
|
||||||
|
unsigned pad : 8;
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
|
||||||
|
float getScaleS(int i){return 1.0f/(float)(1<<(i?ss1:ss0));}
|
||||||
|
float getScaleT(int i){return 1.0f/(float)(1<<(i?ts1:ts0));}
|
||||||
|
};
|
||||||
|
|
||||||
|
union RAS1_IREF
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned bi0 : 3; // indirect tex stage 0 ntexmap
|
||||||
|
unsigned bc0 : 3; // indirect tex stage 0 ntexcoord
|
||||||
|
unsigned bi1 : 3;
|
||||||
|
unsigned bc1 : 3;
|
||||||
|
unsigned bi2 : 3;
|
||||||
|
unsigned bc3 : 3;
|
||||||
|
unsigned bi4 : 3;
|
||||||
|
unsigned bc4 : 3;
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
|
||||||
|
u32 getTexCoord(int i) { return (hex>>(6*i+3))&3; }
|
||||||
|
u32 getTexMap(int i) { return (hex>>(6*i))&3; }
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// Texture structs
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
union TexMode0
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned wrap_s : 2;
|
||||||
|
unsigned wrap_t : 2;
|
||||||
|
unsigned mag_filter : 1;
|
||||||
|
unsigned min_filter : 3;
|
||||||
|
unsigned diag_lod : 1;
|
||||||
|
signed lod_bias : 10;
|
||||||
|
unsigned max_aniso : 2;
|
||||||
|
unsigned lod_clamp : 1;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
union TexMode1
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned min_lod : 8;
|
||||||
|
unsigned max_lod : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
union TexImage0
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned width : 10; //actually w-1
|
||||||
|
unsigned height : 10; //actually h-1
|
||||||
|
unsigned format : 4;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
union TexImage1
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned tmem_offset : 15; // we ignore texture caching for now, we do it ourselves
|
||||||
|
unsigned cache_width : 3;
|
||||||
|
unsigned cache_height : 3;
|
||||||
|
unsigned image_type : 1;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union TexImage2
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned tmem_offset : 15; // we ignore texture caching for now, we do it ourselves
|
||||||
|
unsigned cache_width : 3;
|
||||||
|
unsigned cache_height : 3;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union TexImage3
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned image_base: 24; //address in memory >> 5 (was 20 for GC)
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
union TexTLUT
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned tmem_offset : 10;
|
||||||
|
unsigned tlut_format : 2;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union ZTex1
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned bias : 24;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union ZTex2
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned type : 2; // TEV_Z_TYPE_X
|
||||||
|
unsigned op : 2; // GXZTexOp
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Z-texture types (formats)
|
||||||
|
#define TEV_ZTEX_TYPE_U8 0
|
||||||
|
#define TEV_ZTEX_TYPE_U16 1
|
||||||
|
#define TEV_ZTEX_TYPE_U24 2
|
||||||
|
|
||||||
|
#define TEV_ZTEX_DISABLE 0
|
||||||
|
#define TEV_ZTEX_ADD 1
|
||||||
|
#define TEV_ZTEX_REPLACE 2
|
||||||
|
|
||||||
|
|
||||||
|
struct FourTexUnits
|
||||||
|
{
|
||||||
|
TexMode0 texMode0[4];
|
||||||
|
TexMode1 texMode1[4];
|
||||||
|
TexImage0 texImage0[4];
|
||||||
|
TexImage1 texImage1[4];
|
||||||
|
TexImage2 texImage2[4];
|
||||||
|
TexImage3 texImage3[4];
|
||||||
|
TexTLUT texTlut[4];
|
||||||
|
u32 unknown[4];
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// Geometry/other structs
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
union GenMode
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned numtexgens : 4; // 0xF
|
||||||
|
unsigned numcolchans : 5; // 0x1E0
|
||||||
|
unsigned ms_en : 1; // 0x200
|
||||||
|
unsigned numtevstages : 4; // 0x3C00
|
||||||
|
unsigned cullmode : 2; // 0xC000
|
||||||
|
unsigned numindstages : 3; // 0x30000
|
||||||
|
unsigned zfreeze : 5; //0x3C0000
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union LPSize
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned linesize : 8; // in 1/6th pixels
|
||||||
|
unsigned pointsize : 8; // in 1/6th pixels
|
||||||
|
unsigned lineoff : 3;
|
||||||
|
unsigned pointoff : 3;
|
||||||
|
unsigned lineaspect : 1;
|
||||||
|
unsigned padding : 1;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
union X12Y12
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned y : 12;
|
||||||
|
unsigned x : 12;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
union X10Y10
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned x : 10;
|
||||||
|
unsigned y : 10;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// Framebuffer/pixel stuff (incl fog)
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
union BlendMode
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned blendenable : 1;
|
||||||
|
unsigned logicopenable : 1;
|
||||||
|
unsigned dither : 1;
|
||||||
|
unsigned colorupdate : 1;
|
||||||
|
unsigned alphaupdate : 1;
|
||||||
|
unsigned dstfactor : 3; //BLEND_ONE, BLEND_INV_SRc etc
|
||||||
|
unsigned srcfactor : 3;
|
||||||
|
unsigned subtract : 1;
|
||||||
|
unsigned logicmode : 4;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
union FogParam0
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned mantissa : 11;
|
||||||
|
unsigned exponent : 8;
|
||||||
|
unsigned sign : 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
float GetA() {
|
||||||
|
union { u32 i; float f; } dummy;
|
||||||
|
dummy.i = ((u32)sign<<31)|((u32)exponent<<23)|((u32)mantissa<<12);
|
||||||
|
return dummy.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union FogParam3
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned c_mant : 11;
|
||||||
|
unsigned c_exp : 8;
|
||||||
|
unsigned c_sign : 1;
|
||||||
|
unsigned proj : 1; // 0 - perspective, 1 - orthographic
|
||||||
|
unsigned fsel : 3; // 0 - off, 2 - linear, 4 - exp, 5 - exp2, 6 - backward exp, 7 - backward exp2
|
||||||
|
};
|
||||||
|
|
||||||
|
// amount to subtract from eyespacez after range adjustment
|
||||||
|
float GetC() {
|
||||||
|
union { u32 i; float f; } dummy;
|
||||||
|
dummy.i = ((u32)c_sign << 31) | ((u32)c_exp << 23) | ((u32)c_mant << 12);
|
||||||
|
return dummy.f;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
// final eq: ze = A/(B_MAG - (Zs>>B_SHF));
|
||||||
|
struct FogParams
|
||||||
|
{
|
||||||
|
FogParam0 a;
|
||||||
|
u32 b_magnitude;
|
||||||
|
u32 b_shift; // b's exp + 1?
|
||||||
|
FogParam3 c_proj_fsel;
|
||||||
|
u32 color; //0:b 8:g 16:r - nice!
|
||||||
|
};
|
||||||
|
|
||||||
|
union ZMode
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned testenable : 1;
|
||||||
|
unsigned func : 3;
|
||||||
|
unsigned updateenable : 1; //size?
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union ConstantAlpha
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned alpha : 8;
|
||||||
|
unsigned enable : 1;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define PIXELFMT_RGB8_Z24 0
|
||||||
|
#define PIXELFMT_RGBA6_Z24 1
|
||||||
|
#define PIXELFMT_RGB565_Z16 2
|
||||||
|
#define PIXELFMT_Z24 3
|
||||||
|
#define PIXELFMT_Y8 4
|
||||||
|
#define PIXELFMT_U8 5
|
||||||
|
#define PIXELFMT_V8 6
|
||||||
|
#define PIXELFMT_YUV420 7
|
||||||
|
|
||||||
|
union PE_CONTROL
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned pixel_format : 3; // PIXELFMT_X
|
||||||
|
unsigned zformat : 3; // 0 - linear, 1 - near, 2 - mid, 3 - far
|
||||||
|
unsigned zcomploc : 1; // 1: before tex stage
|
||||||
|
unsigned unused : 17;
|
||||||
|
unsigned rid : 8;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// Texture coordinate stuff
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
union TCInfo
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned scale_minus_1 : 16;
|
||||||
|
unsigned range_bias : 1;
|
||||||
|
unsigned cylindric_wrap : 1;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
struct TCoordInfo
|
||||||
|
{
|
||||||
|
TCInfo s;
|
||||||
|
TCInfo t;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
union ColReg
|
||||||
|
{
|
||||||
|
u32 hex;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
signed a : 11;
|
||||||
|
unsigned : 1;
|
||||||
|
signed b : 11;
|
||||||
|
unsigned type : 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TevReg
|
||||||
|
{
|
||||||
|
ColReg low;
|
||||||
|
ColReg high;
|
||||||
|
};
|
||||||
|
|
||||||
|
union TevKSel
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
unsigned swap1 : 2;
|
||||||
|
unsigned swap2 : 2;
|
||||||
|
unsigned kcsel0 : 5;
|
||||||
|
unsigned kasel0 : 5;
|
||||||
|
unsigned kcsel1 : 5;
|
||||||
|
unsigned kasel1 : 5;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
|
||||||
|
int getKC(int i) {return i?kcsel1:kcsel0;}
|
||||||
|
int getKA(int i) {return i?kasel1:kasel0;}
|
||||||
|
};
|
||||||
|
|
||||||
|
union AlphaFunc
|
||||||
|
{
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned ref0 : 8;
|
||||||
|
unsigned ref1 : 8;
|
||||||
|
unsigned comp0 : 3;
|
||||||
|
unsigned comp1 : 3;
|
||||||
|
unsigned logic : 2;
|
||||||
|
};
|
||||||
|
u32 hex;
|
||||||
|
};
|
||||||
|
|
||||||
|
union UPE_Copy
|
||||||
|
{
|
||||||
|
u32 Hex;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
unsigned clamp0 : 1;
|
||||||
|
unsigned clamp1 : 1;
|
||||||
|
unsigned : 1;
|
||||||
|
unsigned target_pixel_format : 4; // realformat is (fmt/2)+((fmt&1)*8).... for some reason the msb is the lsb
|
||||||
|
unsigned gamma : 2;
|
||||||
|
unsigned half_scale : 1; // real size should be 2x smaller (run a gauss filter?)
|
||||||
|
unsigned scale_something : 1;
|
||||||
|
unsigned clear : 1;
|
||||||
|
unsigned frame_to_field : 2;
|
||||||
|
unsigned copy_to_xfb : 1;
|
||||||
|
unsigned intensity_fmt : 1; // if set, is an intensity format (I4,I8,IA4,IA8)
|
||||||
|
unsigned : 16; // seems to set everything to 1s when target pixel format is invalid
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
// All of BP memory
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
struct BPMemory
|
||||||
|
{
|
||||||
|
GenMode genMode;
|
||||||
|
u32 display_copy_filter[4]; //01-04
|
||||||
|
u32 unknown; //05
|
||||||
|
// indirect matrices (set by GXSetIndTexMtx, selected by TevStageIndirect::mid)
|
||||||
|
// abc form a 2x3 offset matrix, there's 3 such matrices
|
||||||
|
// the 3 offset matrices can either be indirect type, S-type, or T-type
|
||||||
|
// 6bit scale factor s is distributed across IND_MTXA/B/C.
|
||||||
|
// before using matrices scale by 2^-(s-17)
|
||||||
|
IND_MTX indmtx[3];//06-0e GXSetIndTexMtx, 2x3 matrices
|
||||||
|
IND_IMASK imask;//0f
|
||||||
|
TevStageIndirect tevind[16];//10 GXSetTevIndirect
|
||||||
|
X12Y12 scissorTL; //20
|
||||||
|
X12Y12 scissorBR; //21
|
||||||
|
LPSize lineptwidth; //22 line and point width
|
||||||
|
u32 sucounter; //23
|
||||||
|
u32 rascounter; //24
|
||||||
|
TEXSCALE texscale[2]; //25-26 GXSetIndTexCoordScale
|
||||||
|
RAS1_IREF tevindref; //27 GXSetIndTexOrder
|
||||||
|
TwoTevStageOrders tevorders[8]; //28-2F
|
||||||
|
TCoordInfo texcoords[8]; //0x30 s,t,s,t,s,t,s,t...
|
||||||
|
ZMode zmode; //40
|
||||||
|
BlendMode blendmode; //41
|
||||||
|
ConstantAlpha dstalpha; //42
|
||||||
|
PE_CONTROL zcontrol; //43 GXSetZCompLoc, GXPixModeSync
|
||||||
|
u32 fieldmask; //44
|
||||||
|
u32 drawdone; //45, bit1=1 if end of list
|
||||||
|
u32 unknown5; //46 clock?
|
||||||
|
u32 petoken; //47
|
||||||
|
u32 petokenint; //48
|
||||||
|
X10Y10 copyTexSrcXY; //49
|
||||||
|
X10Y10 copyTexSrcWH; //4a
|
||||||
|
u32 copyTexDest; //4b// 4b == CopyAddress (GXDispCopy and GXTexCopy use it)
|
||||||
|
u32 unknown6; //4c
|
||||||
|
u32 copyMipMapStrideChannels; // 4d usually set to 4 when dest is single channel, 8 when dest is 2 channel, 16 when dest is RGBA
|
||||||
|
// also, doubles whenever mipmap box filter option is set (excent on RGBA). Probably to do with number of bytes to look at when smoothing
|
||||||
|
u32 dispcopyyscale; //4e
|
||||||
|
u32 clearcolorAR; //4f
|
||||||
|
u32 clearcolorGB; //50
|
||||||
|
u32 clearZValue; //51
|
||||||
|
u32 triggerEFBCopy; //52
|
||||||
|
u32 copyfilter[2]; //53,54
|
||||||
|
u32 boundbox0;//55
|
||||||
|
u32 boundbox1;//56
|
||||||
|
u32 unknown7[2];//57,58
|
||||||
|
X10Y10 scissorOffset; //59
|
||||||
|
u32 unknown8[10]; //5a,5b,5c,5d, 5e,5f,60,61, 62, 63 (GXTexModeSync), 0x60-0x63 have to do with preloaded textures?
|
||||||
|
u32 tlutXferSrc; //64
|
||||||
|
u32 tlutXferDest; //65
|
||||||
|
u32 texinvalidate;//66
|
||||||
|
u32 metric; //67
|
||||||
|
u32 fieldmode;//68
|
||||||
|
u32 unknown10[7];//69-6F
|
||||||
|
u32 unknown11[16];//70-7F
|
||||||
|
FourTexUnits tex[2]; //80-bf
|
||||||
|
TevStageCombiner combiners[16]; //0xC0-0xDF
|
||||||
|
TevReg tevregs[4]; //0xE0
|
||||||
|
u32 fogRangeAdj; //0xE8
|
||||||
|
u32 unknown15[3]; //0xe9,0xea,0xeb - fog related
|
||||||
|
u32 tev_range_adj_c; //0xec - screenx center for range adjustment, range adjustment enable
|
||||||
|
u32 tev_range_adj_k; //0xed - specifies range adjustment function = sqrt(x*x+k*k)/k
|
||||||
|
FogParams fog; //0xEE,0xEF,0xF0,0xF1,0xF2
|
||||||
|
AlphaFunc alphaFunc; //0xF3
|
||||||
|
ZTex1 ztex1; //0xf4,0xf5
|
||||||
|
ZTex2 ztex2;
|
||||||
|
TevKSel tevksel[8];//0xf6,0xf7,f8,f9,fa,fb,fc,fd
|
||||||
|
u32 bpMask; //0xFE
|
||||||
|
u32 unknown18; //ff
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
extern BPMemory bpmem;
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,7 @@
|
||||||
|
#include "Common.h"
|
||||||
|
#include "CPMemory.h"
|
||||||
|
|
||||||
|
// CP state
|
||||||
|
u32 arraybases[16];
|
||||||
|
u32 arraystrides[16];
|
||||||
|
|
|
@ -0,0 +1,191 @@
|
||||||
|
#ifndef _CPMEMORY_H
|
||||||
|
#define _CPMEMORY_H
|
||||||
|
|
||||||
|
#include "Common.h"
|
||||||
|
|
||||||
|
// Vertex array numbers
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
ARRAY_POSITION = 0,
|
||||||
|
ARRAY_NORMAL = 1,
|
||||||
|
ARRAY_COLOR = 2,
|
||||||
|
ARRAY_COLOR2 = 3,
|
||||||
|
ARRAY_TEXCOORD0 = 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Vertex components
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
NOT_PRESENT = 0,
|
||||||
|
DIRECT = 1,
|
||||||
|
INDEX8 = 2,
|
||||||
|
INDEX16 = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
FORMAT_UBYTE = 0, // 2 Cmp
|
||||||
|
FORMAT_BYTE = 1, // 3 Cmp
|
||||||
|
FORMAT_USHORT = 2,
|
||||||
|
FORMAT_SHORT = 3,
|
||||||
|
FORMAT_FLOAT = 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
FORMAT_16B_565 = 0, // NA
|
||||||
|
FORMAT_24B_888 = 1,
|
||||||
|
FORMAT_32B_888x = 2,
|
||||||
|
FORMAT_16B_4444 = 3,
|
||||||
|
FORMAT_24B_6666 = 4,
|
||||||
|
FORMAT_32B_8888 = 5,
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack(4)
|
||||||
|
union TVtxDesc
|
||||||
|
{
|
||||||
|
u64 Hex;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
// 0: not present
|
||||||
|
// 1: present
|
||||||
|
unsigned PosMatIdx : 1;
|
||||||
|
unsigned Tex0MatIdx : 1;
|
||||||
|
unsigned Tex1MatIdx : 1;
|
||||||
|
unsigned Tex2MatIdx : 1;
|
||||||
|
unsigned Tex3MatIdx : 1;
|
||||||
|
unsigned Tex4MatIdx : 1;
|
||||||
|
unsigned Tex5MatIdx : 1;
|
||||||
|
unsigned Tex6MatIdx : 1;
|
||||||
|
unsigned Tex7MatIdx : 1;
|
||||||
|
|
||||||
|
// 00: not present
|
||||||
|
// 01: direct
|
||||||
|
// 10: 8 bit index
|
||||||
|
// 11: 16 bit index
|
||||||
|
unsigned Position : 2;
|
||||||
|
unsigned Normal : 2;
|
||||||
|
unsigned Color0 : 2;
|
||||||
|
unsigned Color1 : 2;
|
||||||
|
unsigned Tex0Coord : 2;
|
||||||
|
unsigned Tex1Coord : 2;
|
||||||
|
unsigned Tex2Coord : 2;
|
||||||
|
unsigned Tex3Coord : 2;
|
||||||
|
unsigned Tex4Coord : 2;
|
||||||
|
unsigned Tex5Coord : 2;
|
||||||
|
unsigned Tex6Coord : 2;
|
||||||
|
unsigned Tex7Coord : 2;
|
||||||
|
unsigned :31;
|
||||||
|
};
|
||||||
|
struct {
|
||||||
|
u32 Hex0, Hex1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
union UVAT_group0
|
||||||
|
{
|
||||||
|
u32 Hex;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
// 0:8
|
||||||
|
unsigned PosElements : 1;
|
||||||
|
unsigned PosFormat : 3;
|
||||||
|
unsigned PosFrac : 5;
|
||||||
|
// 9:12
|
||||||
|
unsigned NormalElements : 1;
|
||||||
|
unsigned NormalFormat : 3;
|
||||||
|
// 13:16
|
||||||
|
unsigned Color0Elements : 1;
|
||||||
|
unsigned Color0Comp : 3;
|
||||||
|
// 17:20
|
||||||
|
unsigned Color1Elements : 1;
|
||||||
|
unsigned Color1Comp : 3;
|
||||||
|
// 21:29
|
||||||
|
unsigned Tex0CoordElements : 1;
|
||||||
|
unsigned Tex0CoordFormat : 3;
|
||||||
|
unsigned Tex0Frac : 5;
|
||||||
|
// 30:31
|
||||||
|
unsigned ByteDequant: 1;
|
||||||
|
unsigned NormalIndex3: 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
union UVAT_group1
|
||||||
|
{
|
||||||
|
u32 Hex;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
// 0:8
|
||||||
|
unsigned Tex1CoordElements : 1;
|
||||||
|
unsigned Tex1CoordFormat : 3;
|
||||||
|
unsigned Tex1Frac : 5;
|
||||||
|
// 9:17
|
||||||
|
unsigned Tex2CoordElements : 1;
|
||||||
|
unsigned Tex2CoordFormat : 3;
|
||||||
|
unsigned Tex2Frac : 5;
|
||||||
|
// 18:26
|
||||||
|
unsigned Tex3CoordElements : 1;
|
||||||
|
unsigned Tex3CoordFormat : 3;
|
||||||
|
unsigned Tex3Frac : 5;
|
||||||
|
// 27:30
|
||||||
|
unsigned Tex4CoordElements : 1;
|
||||||
|
unsigned Tex4CoordFormat : 3;
|
||||||
|
//
|
||||||
|
unsigned : 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
union UVAT_group2
|
||||||
|
{
|
||||||
|
u32 Hex;
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
// 0:4
|
||||||
|
unsigned Tex4Frac : 5;
|
||||||
|
// 5:13
|
||||||
|
unsigned Tex5CoordElements : 1;
|
||||||
|
unsigned Tex5CoordFormat : 3;
|
||||||
|
unsigned Tex5Frac : 5;
|
||||||
|
// 14:22
|
||||||
|
unsigned Tex6CoordElements : 1;
|
||||||
|
unsigned Tex6CoordFormat : 3;
|
||||||
|
unsigned Tex6Frac : 5;
|
||||||
|
// 23:31
|
||||||
|
unsigned Tex7CoordElements : 1;
|
||||||
|
unsigned Tex7CoordFormat : 3;
|
||||||
|
unsigned Tex7Frac : 5;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ColorAttr
|
||||||
|
{
|
||||||
|
u8 Elements;
|
||||||
|
u8 Comp;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TexAttr
|
||||||
|
{
|
||||||
|
u8 Elements;
|
||||||
|
u8 Format;
|
||||||
|
u8 Frac;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TVtxAttr
|
||||||
|
{
|
||||||
|
u8 PosElements;
|
||||||
|
u8 PosFormat;
|
||||||
|
u8 PosFrac;
|
||||||
|
u8 NormalElements;
|
||||||
|
u8 NormalFormat;
|
||||||
|
ColorAttr color[2];
|
||||||
|
TexAttr texCoord[8];
|
||||||
|
u8 ByteDequant;
|
||||||
|
u8 NormalIndex3;
|
||||||
|
};
|
||||||
|
|
||||||
|
#pragma pack()
|
||||||
|
|
||||||
|
extern u32 arraybases[16];
|
||||||
|
extern u32 arraystrides[16];
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,411 @@
|
||||||
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="VideoCommon"
|
||||||
|
ProjectGUID="{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}"
|
||||||
|
RootNamespace="VideoCommon"
|
||||||
|
Keyword="Win32Proj"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
<Platform
|
||||||
|
Name="x64"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
ConfigurationType="4"
|
||||||
|
CharacterSet="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="../../Core/Common/Src;"
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|x64"
|
||||||
|
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
ConfigurationType="4"
|
||||||
|
CharacterSet="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
TargetEnvironment="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="../../Core/Common/Src;"
|
||||||
|
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
ConfigurationType="4"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="../../Core/Common/Src;"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|x64"
|
||||||
|
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
ConfigurationType="4"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
TargetEnvironment="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="../../Core/Common/Src;"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="DebugFast|Win32"
|
||||||
|
OutputDirectory="$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(ConfigurationName)"
|
||||||
|
ConfigurationType="4"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="../../Core/Common/Src;"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="DebugFast|x64"
|
||||||
|
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
|
||||||
|
ConfigurationType="4"
|
||||||
|
CharacterSet="1"
|
||||||
|
WholeProgramOptimization="1"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
TargetEnvironment="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
AdditionalIncludeDirectories="../../Core/Common/Src;"
|
||||||
|
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
UsePrecompiledHeader="0"
|
||||||
|
WarningLevel="3"
|
||||||
|
DebugInformationFormat="3"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLibrarianTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\BPMemory.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\BPMemory.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\CPMemory.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath=".\Src\CPMemory.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
|
@ -9,8 +9,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "Core\Core\Core.vcpr
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_VideoDX9", "Plugins\Plugin_VideoDX9\Plugin_VideoDX9.vcproj", "{636FAD5F-02D1-4E9A-BE67-FB8EA99B9A18}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_VideoDX9", "Plugins\Plugin_VideoDX9\Plugin_VideoDX9.vcproj", "{636FAD5F-02D1-4E9A-BE67-FB8EA99B9A18}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63}
|
|
||||||
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
|
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA} = {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}
|
||||||
|
{3E03C179-8251-46E4-81F4-466F114BAC63} = {3E03C179-8251-46E4-81F4-466F114BAC63}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_PadSimple", "Plugins\Plugin_PadSimple\Plugin_PadSimple.vcproj", "{9A183B48-ECC2-4121-876A-9B3793686073}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_PadSimple", "Plugins\Plugin_PadSimple\Plugin_PadSimple.vcproj", "{9A183B48-ECC2-4121-876A-9B3793686073}"
|
||||||
|
@ -32,6 +33,7 @@ EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_VideoOGL", "Plugins\Plugin_VideoOGL\Plugin_VideoOGL.vcproj", "{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_VideoOGL", "Plugins\Plugin_VideoOGL\Plugin_VideoOGL.vcproj", "{CFDCEE0E-FA45-4F72-9FCC-0B88F5A75160}"
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
|
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA} = {E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Core\Common\Common.vcproj", "{C573CAF7-EE6A-458E-8049-16C0BF34C2E9}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Common", "Core\Common\Common.vcproj", "{C573CAF7-EE6A-458E-8049-16C0BF34C2E9}"
|
||||||
|
@ -71,6 +73,11 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_DSP_NULL", "Plugins\
|
||||||
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
|
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
|
||||||
EndProjectSection
|
EndProjectSection
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoCommon", "Core\VideoCommon\VideoCommon.vcproj", "{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}"
|
||||||
|
ProjectSection(ProjectDependencies) = postProject
|
||||||
|
{C573CAF7-EE6A-458E-8049-16C0BF34C2E9} = {C573CAF7-EE6A-458E-8049-16C0BF34C2E9}
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_PadDX9", "Plugins\Plugin_PadDX9\Plugin_PadDX9.vcproj", "{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_PadDX9", "Plugins\Plugin_PadDX9\Plugin_PadDX9.vcproj", "{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
|
@ -251,6 +258,18 @@ Global
|
||||||
{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}.Release|Win32.Build.0 = Release|Win32
|
{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}.Release|Win32.Build.0 = Release|Win32
|
||||||
{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}.Release|x64.ActiveCfg = Release|x64
|
{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}.Release|x64.ActiveCfg = Release|x64
|
||||||
{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}.Release|x64.Build.0 = Release|x64
|
{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}.Release|x64.Build.0 = Release|x64
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.DebugFast|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.DebugFast|Win32.Build.0 = Debug|Win32
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.DebugFast|x64.ActiveCfg = DebugFast|x64
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.DebugFast|x64.Build.0 = DebugFast|x64
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{E5D1F0C0-AA07-4841-A4EB-4CF4DAA6B0FA}.Release|x64.Build.0 = Release|x64
|
||||||
{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}.Debug|Win32.ActiveCfg = Debug|Win32
|
{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}.Debug|Win32.Build.0 = Debug|Win32
|
{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}.Debug|x64.ActiveCfg = Debug|x64
|
{805B34AA-82A5-4875-8DC7-3C85BDC0BCEE}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="8,00"
|
Version="8.00"
|
||||||
Name="Plugin_DSP_LLE"
|
Name="Plugin_DSP_LLE"
|
||||||
ProjectGUID="{C60D0E7A-ED05-4C67-9EE7-3A6C0D7801C8}"
|
ProjectGUID="{C60D0E7A-ED05-4C67-9EE7-3A6C0D7801C8}"
|
||||||
RootNamespace="Plugin_DSP_LLE"
|
RootNamespace="Plugin_DSP_LLE"
|
||||||
|
@ -52,7 +52,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -138,7 +137,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -225,7 +223,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -315,7 +312,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -403,7 +399,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -493,7 +488,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
<?xml version="1.0" encoding="Windows-1252"?>
|
||||||
<VisualStudioProject
|
<VisualStudioProject
|
||||||
ProjectType="Visual C++"
|
ProjectType="Visual C++"
|
||||||
Version="8,00"
|
Version="8.00"
|
||||||
Name="Plugin_DSP_NULL"
|
Name="Plugin_DSP_NULL"
|
||||||
ProjectGUID="{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}"
|
ProjectGUID="{9AC65CBE-7854-4A86-AA10-D73FF9E5D61F}"
|
||||||
RootNamespace="Plugin_DSP_NULL"
|
RootNamespace="Plugin_DSP_NULL"
|
||||||
|
@ -52,7 +52,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
DebugInformationFormat="4"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -137,7 +136,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -225,7 +223,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -316,7 +313,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -406,7 +402,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
@ -497,7 +492,6 @@
|
||||||
UsePrecompiledHeader="2"
|
UsePrecompiledHeader="2"
|
||||||
AssemblerListingLocation="$(IntDir)\"
|
AssemblerListingLocation="$(IntDir)\"
|
||||||
WarningLevel="3"
|
WarningLevel="3"
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
DebugInformationFormat="3"
|
||||||
ForcedIncludeFiles="stdafx.h"
|
ForcedIncludeFiles="stdafx.h"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -57,7 +57,7 @@
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="false"
|
OmitFramePointers="false"
|
||||||
WholeProgramOptimization="true"
|
WholeProgramOptimization="true"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;"
|
||||||
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="false"
|
OmitFramePointers="false"
|
||||||
WholeProgramOptimization="true"
|
WholeProgramOptimization="true"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
ExceptionHandling="1"
|
ExceptionHandling="1"
|
||||||
|
@ -266,7 +266,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;"
|
||||||
PreprocessorDefinitions="_WIN32;WIN32;_DEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="_WIN32;WIN32;_DEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
|
@ -365,7 +365,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
|
@ -469,7 +469,7 @@
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="false"
|
OmitFramePointers="false"
|
||||||
WholeProgramOptimization="true"
|
WholeProgramOptimization="true"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;"
|
||||||
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;DEBUGFAST"
|
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;DEBUGFAST"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
@ -575,7 +575,7 @@
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="false"
|
OmitFramePointers="false"
|
||||||
WholeProgramOptimization="true"
|
WholeProgramOptimization="true"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;;DEBUGFAST"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;VIDEO_DIRECTX9_EXPORTS;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;;DEBUGFAST"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
ExceptionHandling="1"
|
ExceptionHandling="1"
|
||||||
|
|
|
@ -239,7 +239,7 @@ void BPWritten(int addr, int changes, int newval)
|
||||||
CVertexHandler::Flush();
|
CVertexHandler::Flush();
|
||||||
((u32*)&bpmem)[addr] = newval;
|
((u32*)&bpmem)[addr] = newval;
|
||||||
if (changes & 1) dev->SetRenderState(D3DRS_ALPHABLENDENABLE,bpmem.blendmode.blendenable);
|
if (changes & 1) dev->SetRenderState(D3DRS_ALPHABLENDENABLE,bpmem.blendmode.blendenable);
|
||||||
if (changes & 2) ; // Logic op blending. D3D can't do this but can fake some modes.
|
if (changes & 2) {} // Logic op blending. D3D can't do this but can fake some modes.
|
||||||
if (changes & 4) {
|
if (changes & 4) {
|
||||||
// Dithering is pointless. Will make things uglier and will be different from GC.
|
// Dithering is pointless. Will make things uglier and will be different from GC.
|
||||||
// dev->SetRenderState(D3DRS_DITHERENABLE,bpmem.blendmode.dither);
|
// dev->SetRenderState(D3DRS_DITHERENABLE,bpmem.blendmode.dither);
|
||||||
|
|
|
@ -3,731 +3,7 @@
|
||||||
|
|
||||||
#pragma pack(4)
|
#pragma pack(4)
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
#include "BPMemory.h"
|
||||||
// Tev/combiner things
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
enum TevBias
|
|
||||||
{
|
|
||||||
TB_ZERO = 0,
|
|
||||||
TB_ADDHALF = 1,
|
|
||||||
TB_SUBHALF = 2,
|
|
||||||
TB_COMPARE = 3,
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
enum AlphaOp
|
|
||||||
{
|
|
||||||
ALPHAOP_AND = 0,
|
|
||||||
ALPHAOP_OR,
|
|
||||||
ALPHAOP_XOR,
|
|
||||||
ALPHAOP_XNOR,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum Compare
|
|
||||||
{
|
|
||||||
COMPARE_NEVER,
|
|
||||||
COMPARE_LESS,
|
|
||||||
COMPARE_EQUAL,
|
|
||||||
COMPARE_LEQUAL,
|
|
||||||
COMPARE_GREATER,
|
|
||||||
COMPARE_NEQUAL,
|
|
||||||
COMPARE_GEQUAL,
|
|
||||||
COMPARE_ALWAYS
|
|
||||||
};
|
|
||||||
|
|
||||||
#define TEVCMP_R8_GT 8
|
|
||||||
#define TEVCMP_R8_EQ 9
|
|
||||||
#define TEVCMP_GR16_GT 10
|
|
||||||
#define TEVCMP_GR16_EQ 11
|
|
||||||
#define TEVCMP_BGR24_GT 12
|
|
||||||
#define TEVCMP_BGR24_EQ 13
|
|
||||||
#define TEVCMP_RGB8_GT 14
|
|
||||||
#define TEVCMP_RGB8_EQ 15
|
|
||||||
#define TEVCMP_A8_GT 14
|
|
||||||
#define TEVCMP_A8_EQ 15
|
|
||||||
|
|
||||||
//color chan above:
|
|
||||||
// rasterized color selections
|
|
||||||
#define RAS1_CC_0 0x00000000 /* color channel 0 */
|
|
||||||
#define RAS1_CC_1 0x00000001 /* color channel 1 */
|
|
||||||
#define RAS1_CC_B 0x00000005 /* indirect texture bump alpha */
|
|
||||||
#define RAS1_CC_BN 0x00000006 /* ind tex bump alpha, normalized 0-255 */
|
|
||||||
#define RAS1_CC_Z 0x00000007 /* set color value to zero */
|
|
||||||
|
|
||||||
// Z-texture types (formats)
|
|
||||||
#define TEV_Z_TYPE_U8 0x00000000
|
|
||||||
#define TEV_Z_TYPE_U16 0x00000001
|
|
||||||
#define TEV_Z_TYPE_U24 0x00000002
|
|
||||||
|
|
||||||
#define ZTEXTURE_DISABLE 0
|
|
||||||
#define ZTEXTURE_ADD 1
|
|
||||||
#define ZTEXTURE_REPLACE 2
|
|
||||||
|
|
||||||
|
|
||||||
union IND_MTXA
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed ma : 11;
|
|
||||||
signed mb : 11;
|
|
||||||
unsigned s0 : 2; // bits 0-1 of scale factor
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union IND_MTXB
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed mc : 11;
|
|
||||||
signed md : 11;
|
|
||||||
unsigned s1 : 2; // bits 2-3 of scale factor
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union IND_MTXC
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed me : 11;
|
|
||||||
signed mf : 11;
|
|
||||||
unsigned s2 : 2; // bits 4-5 of scale factor
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct IND_MTX
|
|
||||||
{
|
|
||||||
IND_MTXA col0;
|
|
||||||
IND_MTXB col1;
|
|
||||||
IND_MTXC col2;
|
|
||||||
};
|
|
||||||
|
|
||||||
union IND_IMASK
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned mask : 24;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TevStageCombiner
|
|
||||||
{
|
|
||||||
union ColorCombiner
|
|
||||||
{
|
|
||||||
struct //abc=8bit,d=10bit
|
|
||||||
{
|
|
||||||
unsigned d : 4;
|
|
||||||
unsigned c : 4;
|
|
||||||
unsigned b : 4;
|
|
||||||
unsigned a : 4;
|
|
||||||
|
|
||||||
unsigned bias : 2;
|
|
||||||
unsigned op : 1;
|
|
||||||
unsigned clamp : 1;
|
|
||||||
|
|
||||||
unsigned shift : 2;
|
|
||||||
unsigned outreg : 2; //1,2,3
|
|
||||||
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union AlphaCombiner
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned rswap : 2;
|
|
||||||
unsigned tswap : 2;
|
|
||||||
unsigned d : 3;
|
|
||||||
unsigned c : 3;
|
|
||||||
unsigned b : 3;
|
|
||||||
unsigned a : 3;
|
|
||||||
|
|
||||||
unsigned bias : 2;
|
|
||||||
unsigned op : 1;
|
|
||||||
unsigned clamp : 1;
|
|
||||||
|
|
||||||
unsigned shift : 2;
|
|
||||||
unsigned outreg : 2; //1,2,3
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
ColorCombiner colorC;
|
|
||||||
AlphaCombiner alphaC;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ITF_8 0
|
|
||||||
#define ITF_5 1
|
|
||||||
#define ITF_4 2
|
|
||||||
#define ITF_3 3
|
|
||||||
|
|
||||||
#define ITB_NONE 0
|
|
||||||
#define ITB_S 1
|
|
||||||
#define ITB_T 2
|
|
||||||
#define ITB_ST 3
|
|
||||||
#define ITB_U 4
|
|
||||||
#define ITB_SU 5
|
|
||||||
#define ITB_TU 6
|
|
||||||
#define ITB_STU 7
|
|
||||||
|
|
||||||
#define ITBA_OFF 0
|
|
||||||
#define ITBA_S 1
|
|
||||||
#define ITBA_T 2
|
|
||||||
#define ITBA_U 3
|
|
||||||
|
|
||||||
#define ITW_OFF 0
|
|
||||||
#define ITW_256 1
|
|
||||||
#define ITW_128 2
|
|
||||||
#define ITW_64 3
|
|
||||||
#define ITW_32 4
|
|
||||||
#define ITW_16 5
|
|
||||||
#define ITW_0 6
|
|
||||||
|
|
||||||
// several discoveries:
|
|
||||||
// GXSetTevIndBumpST(tevstage, indstage, matrixind)
|
|
||||||
// if( matrix == 2 ) realmat = 6; // 10
|
|
||||||
// else if( matrix == 3 ) realmat = 7; // 11
|
|
||||||
// else if( matrix == 1 ) realmat = 5; // 9
|
|
||||||
// GXSetTevIndirect(tevstage, indstage, 0, 3, realmat, 6, 6, 0, 0, 0)
|
|
||||||
// GXSetTevIndirect(tevstage+1, indstage, 0, 3, realmat+4, 6, 6, 1, 0, 0)
|
|
||||||
// GXSetTevIndirect(tevstage+2, indstage, 0, 0, 0, 0, 0, 1, 0, 0)
|
|
||||||
|
|
||||||
union TevStageIndirect
|
|
||||||
{
|
|
||||||
// if mid, sw, tw, and addprev are 0, then no indirect stage is used, mask = 0x17fe00
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bt : 2; // indirect tex stage ID
|
|
||||||
unsigned fmt : 2; // format: ITF_X
|
|
||||||
unsigned bias : 3; // ITB_X
|
|
||||||
unsigned bs : 2; // ITBA_X, indicates which coordinate will become the 'bump alpha'
|
|
||||||
unsigned mid : 4; // matrix id to multiply offsets with
|
|
||||||
unsigned sw : 3; // ITW_X, wrapping factor for S of regular coord
|
|
||||||
unsigned tw : 3; // ITW_X, wrapping factor for T of regular coord
|
|
||||||
unsigned lb_utclod : 1; // use modified or unmodified texture coordinates for LOD computation
|
|
||||||
unsigned fb_addprev : 1; // 1 if the texture coordinate results from the previous TEV stage should be added
|
|
||||||
unsigned pad0 : 3;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
u32 hex : 21;
|
|
||||||
u32 unused : 11;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool IsActive() { return (hex&0x17fe00)!=0; }
|
|
||||||
};
|
|
||||||
|
|
||||||
union TwoTevStageOrders
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned texmap0 : 3;
|
|
||||||
unsigned texcoord0 : 3;
|
|
||||||
unsigned enable0 : 1;
|
|
||||||
unsigned colorchan0 : 3;
|
|
||||||
|
|
||||||
unsigned pad0 : 2;
|
|
||||||
|
|
||||||
unsigned texmap1 : 3;
|
|
||||||
unsigned texcoord1 : 3;
|
|
||||||
unsigned enable1 : 1;
|
|
||||||
unsigned colorchan1 : 3;
|
|
||||||
|
|
||||||
unsigned pad1 : 2;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
int getTexMap(int i){return i?texmap1:texmap0;}
|
|
||||||
int getTexCoord(int i){return i?texcoord1:texcoord0;}
|
|
||||||
int getEnable(int i){return i?enable1:enable0;}
|
|
||||||
int getColorChan(int i){return i?colorchan1:colorchan0;}
|
|
||||||
};
|
|
||||||
|
|
||||||
union TEXSCALE
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned ss0 : 4; // indirect tex stage 0, 2^(-ss0)
|
|
||||||
unsigned ts0 : 4; // indirect tex stage 0
|
|
||||||
unsigned ss1 : 4; // indirect tex stage 1
|
|
||||||
unsigned ts1 : 4; // indirect tex stage 1
|
|
||||||
unsigned pad : 8;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
|
|
||||||
float getScaleS(int i){return 1.0f/(float)(1<<(i?ss1:ss0));}
|
|
||||||
float getScaleT(int i){return 1.0f/(float)(1<<(i?ts1:ts0));}
|
|
||||||
};
|
|
||||||
|
|
||||||
union RAS1_IREF
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bi0 : 3; // indirect tex stage 0 ntexmap
|
|
||||||
unsigned bc0 : 3; // indirect tex stage 0 ntexcoord
|
|
||||||
unsigned bi1 : 3;
|
|
||||||
unsigned bc1 : 3;
|
|
||||||
unsigned bi2 : 3;
|
|
||||||
unsigned bc3 : 3;
|
|
||||||
unsigned bi4 : 3;
|
|
||||||
unsigned bc4 : 3;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
|
|
||||||
u32 getTexCoord(int i) { return (hex>>(6*i+3))&3; }
|
|
||||||
u32 getTexMap(int i) { return (hex>>(6*i))&3; }
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Texture structs
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union TexMode0
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned wrap_s : 2;
|
|
||||||
unsigned wrap_t : 2;
|
|
||||||
unsigned mag_filter : 1;
|
|
||||||
unsigned min_filter : 3;
|
|
||||||
unsigned diag_lod : 1;
|
|
||||||
signed lod_bias : 8;
|
|
||||||
unsigned max_aniso : 2;
|
|
||||||
unsigned lod_clamp : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexMode1
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned min_lod : 8;
|
|
||||||
unsigned max_lod : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexImage0
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned width : 10; //actually w-1
|
|
||||||
unsigned height : 10; //actually h-1
|
|
||||||
unsigned format : 4;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexImage1
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned tmem_offset : 15; // we ignore texture caching for now, we do it ourselves
|
|
||||||
unsigned cache_width : 3;
|
|
||||||
unsigned cache_height : 3;
|
|
||||||
unsigned image_type : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union TexImage2
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned tmem_offset : 15; // we ignore texture caching for now, we do it ourselves
|
|
||||||
unsigned cache_width : 3;
|
|
||||||
unsigned cache_height : 3;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union TexImage3
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned image_base: 24; //address in memory >> 5
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexTLUT
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned tmem_offset : 10;
|
|
||||||
unsigned tlut_format : 2;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union ZTex1
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bias : 24;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union ZTex2
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned type : 2;
|
|
||||||
unsigned op : 2;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Z-texture types (formats)
|
|
||||||
#define TEV_ZTEX_TYPE_U8 0x00000000
|
|
||||||
#define TEV_ZTEX_TYPE_U16 0x00000001
|
|
||||||
#define TEV_ZTEX_TYPE_U24 0x00000002
|
|
||||||
|
|
||||||
#define TEV_ZTEX_DISABLE 0
|
|
||||||
#define TEV_ZTEX_ADD 1
|
|
||||||
#define TEV_ZTEX_REPLACE 2
|
|
||||||
|
|
||||||
|
|
||||||
struct FourTexUnits
|
|
||||||
{
|
|
||||||
TexMode0 texMode0[4];
|
|
||||||
TexMode1 texMode1[4];
|
|
||||||
TexImage0 texImage0[4];
|
|
||||||
TexImage1 texImage1[4];
|
|
||||||
TexImage2 texImage2[4];
|
|
||||||
TexImage3 texImage3[4];
|
|
||||||
TexTLUT texTlut[4];
|
|
||||||
u32 unknown[4];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Geometry/other structs
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union GenMode
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned numtexgens : 4; // 0xF
|
|
||||||
unsigned numcolchans : 5; // 0x1E0
|
|
||||||
unsigned ms_en : 1; // 0x200
|
|
||||||
unsigned numtevstages : 4; // 0x3C00
|
|
||||||
unsigned cullmode : 2; // 0xC000
|
|
||||||
unsigned numindstages : 3; // 0x30000
|
|
||||||
unsigned zfreeze : 5; //0x3C0000
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union LPSize
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned linesize : 8;
|
|
||||||
unsigned pointsize : 8;
|
|
||||||
unsigned lineoff : 3;
|
|
||||||
unsigned pointoff : 3;
|
|
||||||
unsigned lineaspect : 1;
|
|
||||||
unsigned padding : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
union X12Y12
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned y : 12;
|
|
||||||
unsigned x : 12;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union X10Y10
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned x : 10;
|
|
||||||
unsigned y : 10;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Framebuffer/pixel stuff (incl fog)
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union BlendMode
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned blendenable : 1;
|
|
||||||
unsigned logicopenable : 1;
|
|
||||||
unsigned dither : 1;
|
|
||||||
unsigned colorupdate : 1;
|
|
||||||
unsigned alphaupdate : 1;
|
|
||||||
unsigned dstfactor : 3; //BLEND_ONE, BLEND_INV_SRc etc
|
|
||||||
unsigned srcfactor : 3;
|
|
||||||
unsigned subtract : 1;
|
|
||||||
unsigned logicmode : 4;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
union FogParam0
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned mantissa : 11;
|
|
||||||
unsigned exponent : 8;
|
|
||||||
unsigned sign : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union FogParam3
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned c_mant : 11;
|
|
||||||
unsigned c_exp : 8;
|
|
||||||
unsigned c_sign : 1;
|
|
||||||
unsigned proj : 1; // 0 - perspective, 1 - orthographic
|
|
||||||
unsigned fsel : 3; // 0 - off, 2 - linear, 4 - exp, 5 - exp2, 6 - backward exp, 7 - backward exp2
|
|
||||||
};
|
|
||||||
|
|
||||||
// amount to subtract from eyespacez after range adjustment
|
|
||||||
float GetC() {
|
|
||||||
union { u32 i; float f; } dummy;
|
|
||||||
dummy.i = ((u32)c_sign << 31) | ((u32)c_exp << 23) | ((u32)c_mant << 12);
|
|
||||||
return dummy.f;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
struct FogParams
|
|
||||||
{
|
|
||||||
FogParam0 a;
|
|
||||||
u32 b_magnitude;
|
|
||||||
u32 b_exponent;
|
|
||||||
FogParam3 c_proj_fsel;
|
|
||||||
u32 color; //0:b 8:g 16:r - nice!
|
|
||||||
};
|
|
||||||
|
|
||||||
union ZMode
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned testenable : 1;
|
|
||||||
unsigned func : 3;
|
|
||||||
unsigned updateenable : 1; //size?
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union ConstantAlpha
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned alpha : 8;
|
|
||||||
unsigned enable : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define PIXELFMT_RGB8_Z24 0
|
|
||||||
#define PIXELFMT_RGBA6_Z24 1
|
|
||||||
#define PIXELFMT_RGB565_Z16 2
|
|
||||||
#define PIXELFMT_Z24 3
|
|
||||||
#define PIXELFMT_Y8 4
|
|
||||||
#define PIXELFMT_U8 5
|
|
||||||
#define PIXELFMT_V8 6
|
|
||||||
#define PIXELFMT_YUV420 7
|
|
||||||
|
|
||||||
union PE_CONTROL
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned pixel_format : 3; // PIXELFMT_X
|
|
||||||
unsigned zformat : 3; // 0 - linear, 1 - near, 2 - mid, 3 - far
|
|
||||||
unsigned zcomploc : 1; // 1: before tex stage
|
|
||||||
unsigned unused : 17;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Texture coordinate stuff
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union TCInfo
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned scale_minus_1 : 16;
|
|
||||||
unsigned range_bias : 1;
|
|
||||||
unsigned cylindric_wrap : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
struct TCoordInfo
|
|
||||||
{
|
|
||||||
TCInfo s;
|
|
||||||
TCInfo t;
|
|
||||||
};
|
|
||||||
|
|
||||||
union ColReg
|
|
||||||
{
|
|
||||||
u32 hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed a : 11;
|
|
||||||
unsigned : 1;
|
|
||||||
signed b : 11;
|
|
||||||
unsigned type : 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TevReg
|
|
||||||
{
|
|
||||||
ColReg low;
|
|
||||||
ColReg high;
|
|
||||||
};
|
|
||||||
|
|
||||||
union TevKSel
|
|
||||||
{
|
|
||||||
struct {
|
|
||||||
unsigned swap1 : 2;
|
|
||||||
unsigned swap2 : 2;
|
|
||||||
unsigned kcsel0 : 5;
|
|
||||||
unsigned kasel0 : 5;
|
|
||||||
unsigned kcsel1 : 5;
|
|
||||||
unsigned kasel1 : 5;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
|
|
||||||
int getKC(int i) {return i?kcsel1:kcsel0;}
|
|
||||||
int getKA(int i) {return i?kasel1:kasel0;}
|
|
||||||
};
|
|
||||||
|
|
||||||
union AlphaFunc
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned ref0 : 8;
|
|
||||||
unsigned ref1 : 8;
|
|
||||||
unsigned comp0 : 3;
|
|
||||||
unsigned comp1 : 3;
|
|
||||||
unsigned logic : 2;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union UPE_Copy
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned clamp0 : 1;
|
|
||||||
unsigned clamp1 : 1;
|
|
||||||
unsigned target_pixel_format : 3;
|
|
||||||
unsigned : 2;
|
|
||||||
unsigned gamma : 2;
|
|
||||||
unsigned : 1;
|
|
||||||
unsigned scale_something : 1;
|
|
||||||
unsigned clear : 1;
|
|
||||||
unsigned frame_to_field : 2;
|
|
||||||
unsigned copy_to_xfb : 1;
|
|
||||||
unsigned : 17;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
#define EFBCOPY_EFBTOTEXTURE 0x10000
|
|
||||||
#define EFBCOPY_CLEAR 0x800
|
|
||||||
#define EFBCOPY_GENERATEMIPS 0x200
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// All of BP memory
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
struct BPMemory
|
|
||||||
{
|
|
||||||
GenMode genMode;
|
|
||||||
u32 display_copy_filter[4]; //01-04
|
|
||||||
u32 unknown; //05
|
|
||||||
// indirect matrices (set by GXSetIndTexMtx, selected by TevStageIndirect::mid)
|
|
||||||
// abc form a 2x3 offset matrix, there's 3 such matrices
|
|
||||||
// the 3 offset matrices can either be indirect type, S-type, or T-type
|
|
||||||
// 6bit scale factor s is distributed across IND_MTXA/B/C.
|
|
||||||
// before using matrices scale by 2^-(s-17)
|
|
||||||
IND_MTX indmtx[3];//06-0e GXSetIndTexMtx, 2x3 matrices
|
|
||||||
IND_IMASK imask;//0f
|
|
||||||
TevStageIndirect tevind[16];//10 GXSetTevIndirect
|
|
||||||
X12Y12 scissorTL; //20
|
|
||||||
X12Y12 scissorBR; //21
|
|
||||||
LPSize lineptwidth; //22 line and point width
|
|
||||||
u32 sucounter; //23
|
|
||||||
u32 rascounter; //24
|
|
||||||
TEXSCALE texscale[2]; //25-26 GXSetIndTexCoordScale
|
|
||||||
RAS1_IREF tevindref; //27 GXSetIndTexOrder
|
|
||||||
TwoTevStageOrders tevorders[8]; //28-2F
|
|
||||||
TCoordInfo texcoords[8]; //0x30 s,t,s,t,s,t,s,t...
|
|
||||||
ZMode zmode; //40
|
|
||||||
BlendMode blendmode; //41
|
|
||||||
ConstantAlpha dstalpha; //42
|
|
||||||
PE_CONTROL zcontrol; //43 GXSetZCompLoc, GXPixModeSync
|
|
||||||
u32 fieldmask; //44
|
|
||||||
u32 drawdone; //45, bit1=1 if end of list
|
|
||||||
u32 unknown5; //46 clock?
|
|
||||||
u32 petoken; //47
|
|
||||||
u32 petokenint; //48
|
|
||||||
X10Y10 copyTexSrcXY; //49
|
|
||||||
X10Y10 copyTexSrcWH; //4a
|
|
||||||
u32 copyTexDest; //4b// 4b == CopyAddress (GXDispCopy and GXTexCopy use it)
|
|
||||||
u32 unknown6; //4c, 4d
|
|
||||||
u32 copyMipMapStrideChannels; // 4d usually set to 4 when dest is single channel, 8 when dest is 2 channel, 16 when dest is RGBA
|
|
||||||
// also, doubles whenever mipmap box filter option is set (excent on RGBA). Probably to do with number of bytes to look at when smoothing
|
|
||||||
u32 dispcopyyscale; //4e
|
|
||||||
u32 clearcolorAR; //4f
|
|
||||||
u32 clearcolorGB; //50
|
|
||||||
u32 clearZValue; //51
|
|
||||||
u32 triggerEFBCopy; //52
|
|
||||||
u32 copyfilter[2]; //53,54
|
|
||||||
u32 boundbox0;//55
|
|
||||||
u32 boundbox1;//56
|
|
||||||
u32 unknown7[2];//57,58
|
|
||||||
X10Y10 scissorOffset; //59
|
|
||||||
u32 unknown8[10]; //5a,5b,5c,5d, 5e,5f,60,61, 62, 63 (GXTexModeSync),
|
|
||||||
u32 tlutXferSrc; //64
|
|
||||||
u32 tlutXferDest; //65
|
|
||||||
u32 texinvalidate;//66
|
|
||||||
u32 unknown9; //67
|
|
||||||
u32 fieldmode; //68
|
|
||||||
u32 unknown10[7];//69-6F
|
|
||||||
u32 unknown11[16];//70-7F
|
|
||||||
FourTexUnits tex[2]; //80-bf
|
|
||||||
TevStageCombiner combiners[16]; //0xC0-0xDF
|
|
||||||
TevReg tevregs[4]; //0xE0
|
|
||||||
u32 fogRangeAdj; //0xE8
|
|
||||||
u32 unknown15[3]; //0xe9,0xea,0xeb,0xec,0xed
|
|
||||||
u32 tev_range_adj_c; //0xec - screenx center for range adjustment, range adjustment enable
|
|
||||||
u32 tev_range_adj_k; //0xed - specifies range adjustment function = sqrt(x*x+k*k)/k
|
|
||||||
FogParams fog; //0xEE,0xEF,0xF0,0xF1,0xF2
|
|
||||||
AlphaFunc alphaFunc; //0xF3
|
|
||||||
ZTex1 ztex1; //0xf4,0xf5
|
|
||||||
ZTex2 ztex2;
|
|
||||||
TevKSel tevksel[8];//0xf6,0xf7,f8,f9,fa,fb,fc,fd
|
|
||||||
u32 bpMask; //0xFE
|
|
||||||
u32 unknown18; //ff
|
|
||||||
};
|
|
||||||
|
|
||||||
void BPInit();
|
void BPInit();
|
||||||
size_t BPSaveLoadState(char *ptr, BOOL save);
|
size_t BPSaveLoadState(char *ptr, BOOL save);
|
||||||
|
@ -736,8 +12,4 @@ void LoadBPReg(u32 value0);
|
||||||
|
|
||||||
void ActivateTextures();
|
void ActivateTextures();
|
||||||
|
|
||||||
extern BPMemory bpmem;
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -6,10 +6,6 @@
|
||||||
#include "VertexHandler.h"
|
#include "VertexHandler.h"
|
||||||
#include "VertexLoader.h"
|
#include "VertexLoader.h"
|
||||||
|
|
||||||
// CP state
|
|
||||||
u32 arraybases[16];
|
|
||||||
u32 arraystrides[16];
|
|
||||||
|
|
||||||
TMatrixIndexA MatrixIndexA;
|
TMatrixIndexA MatrixIndexA;
|
||||||
TMatrixIndexB MatrixIndexB;
|
TMatrixIndexB MatrixIndexB;
|
||||||
|
|
||||||
|
|
|
@ -2,187 +2,10 @@
|
||||||
#define _CPSTRUCTS_H
|
#define _CPSTRUCTS_H
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
|
#include "CPMemory.h"
|
||||||
// Vertex array numbers
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ARRAY_POSITION = 0,
|
|
||||||
ARRAY_NORMAL = 1,
|
|
||||||
ARRAY_COLOR = 2,
|
|
||||||
ARRAY_COLOR2 = 3,
|
|
||||||
ARRAY_TEXCOORD0 = 4
|
|
||||||
};
|
|
||||||
|
|
||||||
// Vertex components
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
NOT_PRESENT = 0,
|
|
||||||
DIRECT = 1,
|
|
||||||
INDEX8 = 2,
|
|
||||||
INDEX16 = 3,
|
|
||||||
};
|
|
||||||
|
|
||||||
#pragma pack(4)
|
#pragma pack(4)
|
||||||
|
|
||||||
union TVtxDesc
|
|
||||||
{
|
|
||||||
u64 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0: not present
|
|
||||||
// 1: present
|
|
||||||
unsigned PosMatIdx : 1;
|
|
||||||
unsigned Tex0MatIdx : 1;
|
|
||||||
unsigned Tex1MatIdx : 1;
|
|
||||||
unsigned Tex2MatIdx : 1;
|
|
||||||
unsigned Tex3MatIdx : 1;
|
|
||||||
unsigned Tex4MatIdx : 1;
|
|
||||||
unsigned Tex5MatIdx : 1;
|
|
||||||
unsigned Tex6MatIdx : 1;
|
|
||||||
unsigned Tex7MatIdx : 1;
|
|
||||||
|
|
||||||
// 00: not present
|
|
||||||
// 01: direct
|
|
||||||
// 10: 8 bit index
|
|
||||||
// 11: 16 bit index
|
|
||||||
unsigned Position : 2;
|
|
||||||
unsigned Normal : 2;
|
|
||||||
unsigned Color0 : 2;
|
|
||||||
unsigned Color1 : 2;
|
|
||||||
unsigned Tex0Coord : 2;
|
|
||||||
unsigned Tex1Coord : 2;
|
|
||||||
unsigned Tex2Coord : 2;
|
|
||||||
unsigned Tex3Coord : 2;
|
|
||||||
unsigned Tex4Coord : 2;
|
|
||||||
unsigned Tex5Coord : 2;
|
|
||||||
unsigned Tex6Coord : 2;
|
|
||||||
unsigned Tex7Coord : 2;
|
|
||||||
unsigned :31;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
FORMAT_UBYTE = 0, // 2 Cmp
|
|
||||||
FORMAT_BYTE = 1, // 3 Cmp
|
|
||||||
FORMAT_USHORT = 2,
|
|
||||||
FORMAT_SHORT = 3,
|
|
||||||
FORMAT_FLOAT = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
FORMAT_16B_565 = 0, // NA
|
|
||||||
FORMAT_24B_888 = 1,
|
|
||||||
FORMAT_32B_888x = 2,
|
|
||||||
FORMAT_16B_4444 = 3,
|
|
||||||
FORMAT_24B_6666 = 4,
|
|
||||||
FORMAT_32B_8888 = 5,
|
|
||||||
};
|
|
||||||
|
|
||||||
union UVAT_group0
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0:8
|
|
||||||
unsigned PosElements : 1;
|
|
||||||
unsigned PosFormat : 3;
|
|
||||||
unsigned PosFrac : 5;
|
|
||||||
// 9:12
|
|
||||||
unsigned NormalElements : 1;
|
|
||||||
unsigned NormalFormat : 3;
|
|
||||||
// 13:16
|
|
||||||
unsigned Color0Elements : 1;
|
|
||||||
unsigned Color0Comp : 3;
|
|
||||||
// 17:20
|
|
||||||
unsigned Color1Elements : 1;
|
|
||||||
unsigned Color1Comp : 3;
|
|
||||||
// 21:29
|
|
||||||
unsigned Tex0CoordElements : 1;
|
|
||||||
unsigned Tex0CoordFormat : 3;
|
|
||||||
unsigned Tex0Frac : 5;
|
|
||||||
// 30:31
|
|
||||||
unsigned ByteDequant: 1;
|
|
||||||
unsigned NormalIndex3: 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
union UVAT_group1
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0:8
|
|
||||||
unsigned Tex1CoordElements : 1;
|
|
||||||
unsigned Tex1CoordFormat : 3;
|
|
||||||
unsigned Tex1Frac : 5;
|
|
||||||
// 9:17
|
|
||||||
unsigned Tex2CoordElements : 1;
|
|
||||||
unsigned Tex2CoordFormat : 3;
|
|
||||||
unsigned Tex2Frac : 5;
|
|
||||||
// 18:26
|
|
||||||
unsigned Tex3CoordElements : 1;
|
|
||||||
unsigned Tex3CoordFormat : 3;
|
|
||||||
unsigned Tex3Frac : 5;
|
|
||||||
// 27:30
|
|
||||||
unsigned Tex4CoordElements : 1;
|
|
||||||
unsigned Tex4CoordFormat : 3;
|
|
||||||
//
|
|
||||||
unsigned : 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
union UVAT_group2
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0:4
|
|
||||||
unsigned Tex4Frac : 5;
|
|
||||||
// 5:13
|
|
||||||
unsigned Tex5CoordElements : 1;
|
|
||||||
unsigned Tex5CoordFormat : 3;
|
|
||||||
unsigned Tex5Frac : 5;
|
|
||||||
// 14:22
|
|
||||||
unsigned Tex6CoordElements : 1;
|
|
||||||
unsigned Tex6CoordFormat : 3;
|
|
||||||
unsigned Tex6Frac : 5;
|
|
||||||
// 23:31
|
|
||||||
unsigned Tex7CoordElements : 1;
|
|
||||||
unsigned Tex7CoordFormat : 3;
|
|
||||||
unsigned Tex7Frac : 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ColorAttr
|
|
||||||
{
|
|
||||||
u8 Elements;
|
|
||||||
u8 Comp;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TexAttr
|
|
||||||
{
|
|
||||||
u8 Elements;
|
|
||||||
u8 Format;
|
|
||||||
u8 Frac;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TVtxAttr
|
|
||||||
{
|
|
||||||
u8 PosElements;
|
|
||||||
u8 PosFormat;
|
|
||||||
u8 PosFrac;
|
|
||||||
u8 NormalElements;
|
|
||||||
u8 NormalFormat;
|
|
||||||
ColorAttr color[2];
|
|
||||||
TexAttr texCoord[8];
|
|
||||||
u8 ByteDequant;
|
|
||||||
u8 NormalIndex3;
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Matrix indices
|
// Matrix indices
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -388,7 +388,7 @@ void WriteStage(char *&p, int n)
|
||||||
TevStageCombiner::ColorCombiner &cc = bpmem.combiners[n].colorC;
|
TevStageCombiner::ColorCombiner &cc = bpmem.combiners[n].colorC;
|
||||||
TevStageCombiner::AlphaCombiner &ac = bpmem.combiners[n].alphaC;
|
TevStageCombiner::AlphaCombiner &ac = bpmem.combiners[n].alphaC;
|
||||||
|
|
||||||
WRITE(p,"float4(%s,%s)=", tevCOutputTable[cc.outreg], tevAOutputTable[ac.outreg]);
|
WRITE(p,"float4(%s,%s)=", tevCOutputTable[cc.dest], tevAOutputTable[ac.dest]);
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
//start of color
|
//start of color
|
||||||
|
@ -469,7 +469,7 @@ void WriteStage(char *&p, int n)
|
||||||
}
|
}
|
||||||
WRITE(p, ");");
|
WRITE(p, ");");
|
||||||
if (ac.clamp)
|
if (ac.clamp)
|
||||||
WRITE(p, "%s = clamp(%s, 0.0f, 1.0f);\n", tevAOutputTable[ac.outreg], tevAOutputTable[ac.outreg]);
|
WRITE(p, "%s = clamp(%s, 0.0f, 1.0f);\n", tevAOutputTable[ac.dest], tevAOutputTable[ac.dest]);
|
||||||
WRITE(p, "\n");
|
WRITE(p, "\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,14 +477,14 @@ void WriteAlphaCompare(char *&p, int num, int comp)
|
||||||
{
|
{
|
||||||
WRITE(p," res%i = ",num);
|
WRITE(p," res%i = ",num);
|
||||||
switch(comp) {
|
switch(comp) {
|
||||||
case COMPARE_ALWAYS: WRITE(p,"0;\n"); break;
|
case ALPHACMP_ALWAYS: WRITE(p,"0;\n"); break;
|
||||||
case COMPARE_NEVER: WRITE(p,"1;\n"); break;
|
case ALPHACMP_NEVER: WRITE(p,"1;\n"); break;
|
||||||
case COMPARE_LEQUAL: WRITE(p,"prev.a - %s.x;\n",alphaRef[num]); break;
|
case ALPHACMP_LEQUAL: WRITE(p,"prev.a - %s.x;\n",alphaRef[num]); break;
|
||||||
case COMPARE_LESS: WRITE(p,"prev.a - %s.x + %f;\n",alphaRef[num],epsilon*2);break;
|
case ALPHACMP_LESS: WRITE(p,"prev.a - %s.x + %f;\n",alphaRef[num],epsilon*2);break;
|
||||||
case COMPARE_GEQUAL: WRITE(p,"%s - prev.a;\n",alphaRef[num]); break;
|
case ALPHACMP_GEQUAL: WRITE(p,"%s - prev.a;\n",alphaRef[num]); break;
|
||||||
case COMPARE_GREATER: WRITE(p,"%s - prev.a + %f;\n",alphaRef[num],epsilon*2);break;
|
case ALPHACMP_GREATER: WRITE(p,"%s - prev.a + %f;\n",alphaRef[num],epsilon*2);break;
|
||||||
case COMPARE_EQUAL: WRITE(p,"abs(%s-prev.a)-%f;\n",alphaRef[num],epsilon*2); break;
|
case ALPHACMP_EQUAL: WRITE(p,"abs(%s-prev.a)-%f;\n",alphaRef[num],epsilon*2); break;
|
||||||
case COMPARE_NEQUAL: WRITE(p,"%f-abs(%s-prev.a);\n",epsilon*2,alphaRef[num]); break;
|
case ALPHACMP_NEQUAL: WRITE(p,"%f-abs(%s-prev.a);\n",epsilon*2,alphaRef[num]); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,31 +1,25 @@
|
||||||
#ifndef _XFSTRUCTS_H
|
#ifndef _XFSTRUCTS_H
|
||||||
#define _XFSTRUCTS_H
|
#define _XFSTRUCTS_H
|
||||||
|
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "Vec3.h"
|
#include "Vec3.h"
|
||||||
|
|
||||||
|
|
||||||
#pragma pack(4)
|
#pragma pack(4)
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// Lighting
|
// Lighting
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
// xf_tex_projection_f enum
|
|
||||||
#define XF_TEX_ST 0x00000000
|
#define XF_TEX_ST 0x00000000
|
||||||
#define XF_TEX_STQ 0x00000001
|
#define XF_TEX_STQ 0x00000001
|
||||||
|
|
||||||
// xf_tex_input_form_f enum
|
|
||||||
#define XF_TEX_AB11 0x00000000
|
#define XF_TEX_AB11 0x00000000
|
||||||
#define XF_TEX_ABC1 0x00000001
|
#define XF_TEX_ABC1 0x00000001
|
||||||
|
|
||||||
// xf_tex_texgen_type_f enum
|
|
||||||
#define XF_TEXGEN_REGULAR 0x00000000
|
#define XF_TEXGEN_REGULAR 0x00000000
|
||||||
#define XF_TEXGEN_EMBOSS_MAP 0x00000001
|
#define XF_TEXGEN_EMBOSS_MAP 0x00000001
|
||||||
#define XF_TEXGEN_COLOR_STRGBC0 0x00000002
|
#define XF_TEXGEN_COLOR_STRGBC0 0x00000002
|
||||||
#define XF_TEXGEN_COLOR_STRGBC1 0x00000003
|
#define XF_TEXGEN_COLOR_STRGBC1 0x00000003
|
||||||
|
|
||||||
// xf_tex_source_row_f enum
|
|
||||||
#define XF_GEOM_INROW 0x00000000
|
#define XF_GEOM_INROW 0x00000000
|
||||||
#define XF_NORMAL_INROW 0x00000001
|
#define XF_NORMAL_INROW 0x00000001
|
||||||
#define XF_COLORS_INROW 0x00000002
|
#define XF_COLORS_INROW 0x00000002
|
||||||
|
@ -40,7 +34,6 @@
|
||||||
#define XF_TEX6_INROW 0x0000000b
|
#define XF_TEX6_INROW 0x0000000b
|
||||||
#define XF_TEX7_INROW 0x0000000c
|
#define XF_TEX7_INROW 0x0000000c
|
||||||
|
|
||||||
|
|
||||||
struct Light
|
struct Light
|
||||||
{
|
{
|
||||||
u32 useless[3];
|
u32 useless[3];
|
||||||
|
@ -68,8 +61,6 @@ struct Light
|
||||||
#define GX_SRC_REG 0
|
#define GX_SRC_REG 0
|
||||||
#define GX_SRC_VTX 1
|
#define GX_SRC_VTX 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
union LitChannel
|
union LitChannel
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
|
@ -88,6 +79,7 @@ union LitChannel
|
||||||
return lightMask0_3 | (lightMask4_7 << 4);
|
return lightMask0_3 | (lightMask4_7 << 4);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ColorChannel
|
struct ColorChannel
|
||||||
{
|
{
|
||||||
u32 ambColor;
|
u32 ambColor;
|
||||||
|
@ -95,10 +87,12 @@ struct ColorChannel
|
||||||
LitChannel color;
|
LitChannel color;
|
||||||
LitChannel alpha;
|
LitChannel alpha;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct MiscXF
|
struct MiscXF
|
||||||
{
|
{
|
||||||
int numTexGens;
|
int numTexGens;
|
||||||
};
|
};
|
||||||
|
|
||||||
union TexMtxInfo
|
union TexMtxInfo
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
|
@ -113,6 +107,7 @@ union TexMtxInfo
|
||||||
};
|
};
|
||||||
u32 hex;
|
u32 hex;
|
||||||
};
|
};
|
||||||
|
|
||||||
union PostMtxInfo
|
union PostMtxInfo
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
|
@ -122,6 +117,7 @@ union PostMtxInfo
|
||||||
};
|
};
|
||||||
u32 hex;
|
u32 hex;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TexCoordInfo
|
struct TexCoordInfo
|
||||||
{
|
{
|
||||||
TexMtxInfo texmtxinfo;
|
TexMtxInfo texmtxinfo;
|
||||||
|
@ -138,14 +134,15 @@ struct Viewport
|
||||||
float farZ;
|
float farZ;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#define XFMEM_SIZE 0x8000
|
#define XFMEM_SIZE 0x8000
|
||||||
|
|
||||||
|
|
||||||
#define XFMEM_POSMATRICES 0x000
|
#define XFMEM_POSMATRICES 0x000
|
||||||
|
#define XFMEM_POSMATRICES_END 0x100
|
||||||
#define XFMEM_NORMALMATRICES 0x400
|
#define XFMEM_NORMALMATRICES 0x400
|
||||||
|
#define XFMEM_NORMALMATRICES_END 0x460
|
||||||
#define XFMEM_POSTMATRICES 0x500
|
#define XFMEM_POSTMATRICES 0x500
|
||||||
|
#define XFMEM_POSTMATRICES_END 0x600
|
||||||
#define XFMEM_LIGHTS 0x600
|
#define XFMEM_LIGHTS 0x600
|
||||||
|
#define XFMEM_LIGHTS_END 0x680
|
||||||
|
|
||||||
|
|
||||||
extern TexCoordInfo texcoords[8];
|
extern TexCoordInfo texcoords[8];
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
EnableIntrinsicFunctions="true"
|
EnableIntrinsicFunctions="true"
|
||||||
OmitFramePointers="true"
|
OmitFramePointers="true"
|
||||||
WholeProgramOptimization="true"
|
WholeProgramOptimization="true"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
||||||
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
@ -163,7 +163,7 @@
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="false"
|
OmitFramePointers="false"
|
||||||
WholeProgramOptimization="true"
|
WholeProgramOptimization="true"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
ExceptionHandling="1"
|
ExceptionHandling="1"
|
||||||
|
@ -268,7 +268,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
||||||
PreprocessorDefinitions="_WIN32;WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="_WIN32;WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
|
@ -367,7 +367,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="1"
|
RuntimeLibrary="1"
|
||||||
|
@ -472,7 +472,7 @@
|
||||||
EnableIntrinsicFunctions="true"
|
EnableIntrinsicFunctions="true"
|
||||||
OmitFramePointers="true"
|
OmitFramePointers="true"
|
||||||
WholeProgramOptimization="false"
|
WholeProgramOptimization="false"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
||||||
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;DEBUGFAST"
|
PreprocessorDefinitions="_WIN32;WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;DEBUGFAST"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
RuntimeLibrary="0"
|
RuntimeLibrary="0"
|
||||||
|
@ -580,7 +580,7 @@
|
||||||
FavorSizeOrSpeed="1"
|
FavorSizeOrSpeed="1"
|
||||||
OmitFramePointers="false"
|
OmitFramePointers="false"
|
||||||
WholeProgramOptimization="false"
|
WholeProgramOptimization="false"
|
||||||
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
AdditionalIncludeDirectories="../../PluginSpecs;../../Core/Common/Src;../../Core/VideoCommon/Src;./Src;./Src/Windows;../../../Externals;./Src/Windows/libjpeg"
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;DEBUGFAST"
|
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;_CRT_SECURE_NO_DEPRECATE;_SECURE_SCL=0;DEBUGFAST"
|
||||||
StringPooling="true"
|
StringPooling="true"
|
||||||
ExceptionHandling="1"
|
ExceptionHandling="1"
|
||||||
|
|
|
@ -26,9 +26,6 @@
|
||||||
#include "VertexShader.h"
|
#include "VertexShader.h"
|
||||||
#include "PixelShader.h"
|
#include "PixelShader.h"
|
||||||
|
|
||||||
//BP state
|
|
||||||
BPMemory bpmem;
|
|
||||||
|
|
||||||
#define BPMEM_GENMODE 0x00
|
#define BPMEM_GENMODE 0x00
|
||||||
#define BPMEM_IND_MTX 0x06
|
#define BPMEM_IND_MTX 0x06
|
||||||
#define BPMEM_RAS1_SS0 0x25 // ind tex coord scale 0
|
#define BPMEM_RAS1_SS0 0x25 // ind tex coord scale 0
|
||||||
|
|
|
@ -18,759 +18,7 @@
|
||||||
#ifndef _BPSTRUCTS_H
|
#ifndef _BPSTRUCTS_H
|
||||||
#define _BPSTRUCTS_H
|
#define _BPSTRUCTS_H
|
||||||
|
|
||||||
#pragma pack(4)
|
#include "BPMemory.h"
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Tev/combiner things
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
#define TEVOP_ADD 0
|
|
||||||
#define TEVOP_SUB 1
|
|
||||||
#define TEVCMP_R8_GT 8
|
|
||||||
#define TEVCMP_R8_EQ 9
|
|
||||||
#define TEVCMP_GR16_GT 10
|
|
||||||
#define TEVCMP_GR16_EQ 11
|
|
||||||
#define TEVCMP_BGR24_GT 12
|
|
||||||
#define TEVCMP_BGR24_EQ 13
|
|
||||||
#define TEVCMP_RGB8_GT 14
|
|
||||||
#define TEVCMP_RGB8_EQ 15
|
|
||||||
#define TEVCMP_A8_GT 14
|
|
||||||
#define TEVCMP_A8_EQ 15
|
|
||||||
|
|
||||||
#define TEVCOLORARG_CPREV 0
|
|
||||||
#define TEVCOLORARG_APREV 1
|
|
||||||
#define TEVCOLORARG_C0 2
|
|
||||||
#define TEVCOLORARG_A0 3
|
|
||||||
#define TEVCOLORARG_C1 4
|
|
||||||
#define TEVCOLORARG_A1 5
|
|
||||||
#define TEVCOLORARG_C2 6
|
|
||||||
#define TEVCOLORARG_A2 7
|
|
||||||
#define TEVCOLORARG_TEXC 8
|
|
||||||
#define TEVCOLORARG_TEXA 9
|
|
||||||
#define TEVCOLORARG_RASC 10
|
|
||||||
#define TEVCOLORARG_RASA 11
|
|
||||||
#define TEVCOLORARG_ONE 12
|
|
||||||
#define TEVCOLORARG_HALF 13
|
|
||||||
#define TEVCOLORARG_KONST 14
|
|
||||||
#define TEVCOLORARG_ZERO 15
|
|
||||||
|
|
||||||
#define TEVALPHAARG_APREV 0
|
|
||||||
#define TEVALPHAARG_A0 1
|
|
||||||
#define TEVALPHAARG_A1 2
|
|
||||||
#define TEVALPHAARG_A2 3
|
|
||||||
#define TEVALPHAARG_TEXA 4
|
|
||||||
#define TEVALPHAARG_RASA 5
|
|
||||||
#define TEVALPHAARG_KONST 6
|
|
||||||
#define TEVALPHAARG_ZERO 7
|
|
||||||
|
|
||||||
#define ALPHACMP_NEVER 0
|
|
||||||
#define ALPHACMP_LESS 1
|
|
||||||
#define ALPHACMP_EQUAL 2
|
|
||||||
#define ALPHACMP_LEQUAL 3
|
|
||||||
#define ALPHACMP_GREATER 4
|
|
||||||
#define ALPHACMP_NEQUAL 5
|
|
||||||
#define ALPHACMP_GEQUAL 6
|
|
||||||
#define ALPHACMP_ALWAYS 7
|
|
||||||
|
|
||||||
#define ZTEXTURE_DISABLE 0
|
|
||||||
#define ZTEXTURE_ADD 1
|
|
||||||
#define ZTEXTURE_REPLACE 2
|
|
||||||
|
|
||||||
union IND_MTXA
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed ma : 11;
|
|
||||||
signed mb : 11;
|
|
||||||
unsigned s0 : 2; // bits 0-1 of scale factor
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union IND_MTXB
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed mc : 11;
|
|
||||||
signed md : 11;
|
|
||||||
unsigned s1 : 2; // bits 2-3 of scale factor
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union IND_MTXC
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed me : 11;
|
|
||||||
signed mf : 11;
|
|
||||||
unsigned s2 : 2; // bits 4-5 of scale factor
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct IND_MTX
|
|
||||||
{
|
|
||||||
IND_MTXA col0;
|
|
||||||
IND_MTXB col1;
|
|
||||||
IND_MTXC col2;
|
|
||||||
};
|
|
||||||
|
|
||||||
union IND_IMASK
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned mask : 24;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define TEVSELCC_CPREV 0
|
|
||||||
#define TEVSELCC_APREV 1
|
|
||||||
#define TEVSELCC_C0 2
|
|
||||||
#define TEVSELCC_A0 3
|
|
||||||
#define TEVSELCC_C1 4
|
|
||||||
#define TEVSELCC_A1 5
|
|
||||||
#define TEVSELCC_C2 6
|
|
||||||
#define TEVSELCC_A2 7
|
|
||||||
#define TEVSELCC_TEXC 8
|
|
||||||
#define TEVSELCC_TEXA 9
|
|
||||||
#define TEVSELCC_RASC 10
|
|
||||||
#define TEVSELCC_RASA 11
|
|
||||||
#define TEVSELCC_ONE 12
|
|
||||||
#define TEVSELCC_HALF 13
|
|
||||||
#define TEVSELCC_KONST 14
|
|
||||||
#define TEVSELCC_ZERO 15
|
|
||||||
|
|
||||||
#define TEVSELCA_APREV 0
|
|
||||||
#define TEVSELCA_A0 1
|
|
||||||
#define TEVSELCA_A1 2
|
|
||||||
#define TEVSELCA_A2 3
|
|
||||||
#define TEVSELCA_TEXA 4
|
|
||||||
#define TEVSELCA_RASA 5
|
|
||||||
#define TEVSELCA_KONST 6
|
|
||||||
#define TEVSELCA_ZERO 7
|
|
||||||
|
|
||||||
struct TevStageCombiner
|
|
||||||
{
|
|
||||||
union ColorCombiner
|
|
||||||
{
|
|
||||||
struct //abc=8bit,d=10bit
|
|
||||||
{
|
|
||||||
unsigned d : 4; // TEVSELCC_X
|
|
||||||
unsigned c : 4; // TEVSELCC_X
|
|
||||||
unsigned b : 4; // TEVSELCC_X
|
|
||||||
unsigned a : 4; // TEVSELCC_X
|
|
||||||
|
|
||||||
unsigned bias : 2;
|
|
||||||
unsigned op : 1;
|
|
||||||
unsigned clamp : 1;
|
|
||||||
|
|
||||||
unsigned shift : 2;
|
|
||||||
unsigned dest : 2; //1,2,3
|
|
||||||
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union AlphaCombiner
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned rswap : 2;
|
|
||||||
unsigned tswap : 2;
|
|
||||||
unsigned d : 3; // TEVSELCA_
|
|
||||||
unsigned c : 3; // TEVSELCA_
|
|
||||||
unsigned b : 3; // TEVSELCA_
|
|
||||||
unsigned a : 3; // TEVSELCA_
|
|
||||||
|
|
||||||
unsigned bias : 2; //GXTevBias
|
|
||||||
unsigned op : 1;
|
|
||||||
unsigned clamp : 1;
|
|
||||||
|
|
||||||
unsigned shift : 2;
|
|
||||||
unsigned dest : 2; //1,2,3
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
ColorCombiner colorC;
|
|
||||||
AlphaCombiner alphaC;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define ITF_8 0
|
|
||||||
#define ITF_5 1
|
|
||||||
#define ITF_4 2
|
|
||||||
#define ITF_3 3
|
|
||||||
|
|
||||||
#define ITB_NONE 0
|
|
||||||
#define ITB_S 1
|
|
||||||
#define ITB_T 2
|
|
||||||
#define ITB_ST 3
|
|
||||||
#define ITB_U 4
|
|
||||||
#define ITB_SU 5
|
|
||||||
#define ITB_TU 6
|
|
||||||
#define ITB_STU 7
|
|
||||||
|
|
||||||
#define ITBA_OFF 0
|
|
||||||
#define ITBA_S 1
|
|
||||||
#define ITBA_T 2
|
|
||||||
#define ITBA_U 3
|
|
||||||
|
|
||||||
#define ITW_OFF 0
|
|
||||||
#define ITW_256 1
|
|
||||||
#define ITW_128 2
|
|
||||||
#define ITW_64 3
|
|
||||||
#define ITW_32 4
|
|
||||||
#define ITW_16 5
|
|
||||||
#define ITW_0 6
|
|
||||||
|
|
||||||
// several discoveries:
|
|
||||||
// GXSetTevIndBumpST(tevstage, indstage, matrixind)
|
|
||||||
// if( matrix == 2 ) realmat = 6; // 10
|
|
||||||
// else if( matrix == 3 ) realmat = 7; // 11
|
|
||||||
// else if( matrix == 1 ) realmat = 5; // 9
|
|
||||||
// GXSetTevIndirect(tevstage, indstage, 0, 3, realmat, 6, 6, 0, 0, 0)
|
|
||||||
// GXSetTevIndirect(tevstage+1, indstage, 0, 3, realmat+4, 6, 6, 1, 0, 0)
|
|
||||||
// GXSetTevIndirect(tevstage+2, indstage, 0, 0, 0, 0, 0, 1, 0, 0)
|
|
||||||
|
|
||||||
union TevStageIndirect
|
|
||||||
{
|
|
||||||
// if mid, sw, tw, and addprev are 0, then no indirect stage is used, mask = 0x17fe00
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bt : 2; // indirect tex stage ID
|
|
||||||
unsigned fmt : 2; // format: ITF_X
|
|
||||||
unsigned bias : 3; // ITB_X
|
|
||||||
unsigned bs : 2; // ITBA_X, indicates which coordinate will become the 'bump alpha'
|
|
||||||
unsigned mid : 4; // matrix id to multiply offsets with
|
|
||||||
unsigned sw : 3; // ITW_X, wrapping factor for S of regular coord
|
|
||||||
unsigned tw : 3; // ITW_X, wrapping factor for T of regular coord
|
|
||||||
unsigned lb_utclod : 1; // use modified or unmodified texture coordinates for LOD computation
|
|
||||||
unsigned fb_addprev : 1; // 1 if the texture coordinate results from the previous TEV stage should be added
|
|
||||||
unsigned pad0 : 3;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
u32 hex : 21;
|
|
||||||
u32 unused : 11;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool IsActive() { return (hex&0x17fe00)!=0; }
|
|
||||||
};
|
|
||||||
|
|
||||||
union TwoTevStageOrders
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned texmap0 : 3; // indirect tex stage texmap
|
|
||||||
unsigned texcoord0 : 3;
|
|
||||||
unsigned enable0 : 1; // 1 if should read from texture
|
|
||||||
unsigned colorchan0 : 3; // RAS1_CC_X
|
|
||||||
|
|
||||||
unsigned pad0 : 2;
|
|
||||||
|
|
||||||
unsigned texmap1 : 3;
|
|
||||||
unsigned texcoord1 : 3;
|
|
||||||
unsigned enable1 : 1; // 1 if should read from texture
|
|
||||||
unsigned colorchan1 : 3; // RAS1_CC_X
|
|
||||||
|
|
||||||
unsigned pad1 : 2;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
int getTexMap(int i){return i?texmap1:texmap0;}
|
|
||||||
int getTexCoord(int i){return i?texcoord1:texcoord0;}
|
|
||||||
int getEnable(int i){return i?enable1:enable0;}
|
|
||||||
int getColorChan(int i){return i?colorchan1:colorchan0;}
|
|
||||||
};
|
|
||||||
|
|
||||||
union TEXSCALE
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned ss0 : 4; // indirect tex stage 0, 2^(-ss0)
|
|
||||||
unsigned ts0 : 4; // indirect tex stage 0
|
|
||||||
unsigned ss1 : 4; // indirect tex stage 1
|
|
||||||
unsigned ts1 : 4; // indirect tex stage 1
|
|
||||||
unsigned pad : 8;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
|
|
||||||
float getScaleS(int i){return 1.0f/(float)(1<<(i?ss1:ss0));}
|
|
||||||
float getScaleT(int i){return 1.0f/(float)(1<<(i?ts1:ts0));}
|
|
||||||
};
|
|
||||||
|
|
||||||
union RAS1_IREF
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bi0 : 3; // indirect tex stage 0 ntexmap
|
|
||||||
unsigned bc0 : 3; // indirect tex stage 0 ntexcoord
|
|
||||||
unsigned bi1 : 3;
|
|
||||||
unsigned bc1 : 3;
|
|
||||||
unsigned bi2 : 3;
|
|
||||||
unsigned bc3 : 3;
|
|
||||||
unsigned bi4 : 3;
|
|
||||||
unsigned bc4 : 3;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
|
|
||||||
u32 getTexCoord(int i) { return (hex>>(6*i+3))&3; }
|
|
||||||
u32 getTexMap(int i) { return (hex>>(6*i))&3; }
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Texture structs
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union TexMode0
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned wrap_s : 2;
|
|
||||||
unsigned wrap_t : 2;
|
|
||||||
unsigned mag_filter : 1;
|
|
||||||
unsigned min_filter : 3;
|
|
||||||
unsigned diag_lod : 1;
|
|
||||||
signed lod_bias : 10;
|
|
||||||
unsigned max_aniso : 2;
|
|
||||||
unsigned lod_clamp : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexMode1
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned min_lod : 8;
|
|
||||||
unsigned max_lod : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexImage0
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned width : 10; //actually w-1
|
|
||||||
unsigned height : 10; //actually h-1
|
|
||||||
unsigned format : 4;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexImage1
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned tmem_offset : 15; // we ignore texture caching for now, we do it ourselves
|
|
||||||
unsigned cache_width : 3;
|
|
||||||
unsigned cache_height : 3;
|
|
||||||
unsigned image_type : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union TexImage2
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned tmem_offset : 15; // we ignore texture caching for now, we do it ourselves
|
|
||||||
unsigned cache_width : 3;
|
|
||||||
unsigned cache_height : 3;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union TexImage3
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned image_base: 24; //address in memory >> 5 (was 20 for GC)
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union TexTLUT
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned tmem_offset : 10;
|
|
||||||
unsigned tlut_format : 2;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union ZTex1
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned bias : 24;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union ZTex2
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned type : 2; // TEV_Z_TYPE_X
|
|
||||||
unsigned op : 2; // GXZTexOp
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Z-texture types (formats)
|
|
||||||
#define TEV_ZTEX_TYPE_U8 0
|
|
||||||
#define TEV_ZTEX_TYPE_U16 1
|
|
||||||
#define TEV_ZTEX_TYPE_U24 2
|
|
||||||
|
|
||||||
#define TEV_ZTEX_DISABLE 0
|
|
||||||
#define TEV_ZTEX_ADD 1
|
|
||||||
#define TEV_ZTEX_REPLACE 2
|
|
||||||
|
|
||||||
|
|
||||||
struct FourTexUnits
|
|
||||||
{
|
|
||||||
TexMode0 texMode0[4];
|
|
||||||
TexMode1 texMode1[4];
|
|
||||||
TexImage0 texImage0[4];
|
|
||||||
TexImage1 texImage1[4];
|
|
||||||
TexImage2 texImage2[4];
|
|
||||||
TexImage3 texImage3[4];
|
|
||||||
TexTLUT texTlut[4];
|
|
||||||
u32 unknown[4];
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Geometry/other structs
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union GenMode
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned numtexgens : 4; // 0xF
|
|
||||||
unsigned numcolchans : 5; // 0x1E0
|
|
||||||
unsigned ms_en : 1; // 0x200
|
|
||||||
unsigned numtevstages : 4; // 0x3C00
|
|
||||||
unsigned cullmode : 2; // 0xC000
|
|
||||||
unsigned numindstages : 3; // 0x30000
|
|
||||||
unsigned zfreeze : 5; //0x3C0000
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union LPSize
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned linesize : 8; // in 1/6th pixels
|
|
||||||
unsigned pointsize : 8; // in 1/6th pixels
|
|
||||||
unsigned lineoff : 3;
|
|
||||||
unsigned pointoff : 3;
|
|
||||||
unsigned lineaspect : 1;
|
|
||||||
unsigned padding : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
union X12Y12
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned y : 12;
|
|
||||||
unsigned x : 12;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
union X10Y10
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned x : 10;
|
|
||||||
unsigned y : 10;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Framebuffer/pixel stuff (incl fog)
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union BlendMode
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned blendenable : 1;
|
|
||||||
unsigned logicopenable : 1;
|
|
||||||
unsigned dither : 1;
|
|
||||||
unsigned colorupdate : 1;
|
|
||||||
unsigned alphaupdate : 1;
|
|
||||||
unsigned dstfactor : 3; //BLEND_ONE, BLEND_INV_SRc etc
|
|
||||||
unsigned srcfactor : 3;
|
|
||||||
unsigned subtract : 1;
|
|
||||||
unsigned logicmode : 4;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
union FogParam0
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned mantissa : 11;
|
|
||||||
unsigned exponent : 8;
|
|
||||||
unsigned sign : 1;
|
|
||||||
};
|
|
||||||
|
|
||||||
float GetA() {
|
|
||||||
union { u32 i; float f; } dummy;
|
|
||||||
dummy.i = ((u32)sign<<31)|((u32)exponent<<23)|((u32)mantissa<<12);
|
|
||||||
return dummy.f;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union FogParam3
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned c_mant : 11;
|
|
||||||
unsigned c_exp : 8;
|
|
||||||
unsigned c_sign : 1;
|
|
||||||
unsigned proj : 1; // 0 - perspective, 1 - orthographic
|
|
||||||
unsigned fsel : 3; // 0 - off, 2 - linear, 4 - exp, 5 - exp2, 6 - backward exp, 7 - backward exp2
|
|
||||||
};
|
|
||||||
|
|
||||||
// amount to subtract from eyespacez after range adjustment
|
|
||||||
float GetC() {
|
|
||||||
union { u32 i; float f; } dummy;
|
|
||||||
dummy.i = ((u32)c_sign << 31) | ((u32)c_exp << 23) | ((u32)c_mant << 12);
|
|
||||||
return dummy.f;
|
|
||||||
}
|
|
||||||
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
// final eq: ze = A/(B_MAG - (Zs>>B_SHF));
|
|
||||||
struct FogParams
|
|
||||||
{
|
|
||||||
FogParam0 a;
|
|
||||||
u32 b_magnitude;
|
|
||||||
u32 b_shift; // b's exp + 1?
|
|
||||||
FogParam3 c_proj_fsel;
|
|
||||||
u32 color; //0:b 8:g 16:r - nice!
|
|
||||||
};
|
|
||||||
|
|
||||||
union ZMode
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned testenable : 1;
|
|
||||||
unsigned func : 3;
|
|
||||||
unsigned updateenable : 1; //size?
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union ConstantAlpha
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned alpha : 8;
|
|
||||||
unsigned enable : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
#define PIXELFMT_RGB8_Z24 0
|
|
||||||
#define PIXELFMT_RGBA6_Z24 1
|
|
||||||
#define PIXELFMT_RGB565_Z16 2
|
|
||||||
#define PIXELFMT_Z24 3
|
|
||||||
#define PIXELFMT_Y8 4
|
|
||||||
#define PIXELFMT_U8 5
|
|
||||||
#define PIXELFMT_V8 6
|
|
||||||
#define PIXELFMT_YUV420 7
|
|
||||||
|
|
||||||
union PE_CONTROL
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned pixel_format : 3; // PIXELFMT_X
|
|
||||||
unsigned zformat : 3; // 0 - linear, 1 - near, 2 - mid, 3 - far
|
|
||||||
unsigned zcomploc : 1; // 1: before tex stage
|
|
||||||
unsigned unused : 17;
|
|
||||||
unsigned rid : 8;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// Texture coordinate stuff
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
union TCInfo
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned scale_minus_1 : 16;
|
|
||||||
unsigned range_bias : 1;
|
|
||||||
unsigned cylindric_wrap : 1;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
struct TCoordInfo
|
|
||||||
{
|
|
||||||
TCInfo s;
|
|
||||||
TCInfo t;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
union ColReg
|
|
||||||
{
|
|
||||||
u32 hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
signed a : 11;
|
|
||||||
unsigned : 1;
|
|
||||||
signed b : 11;
|
|
||||||
unsigned type : 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TevReg
|
|
||||||
{
|
|
||||||
ColReg low;
|
|
||||||
ColReg high;
|
|
||||||
};
|
|
||||||
|
|
||||||
union TevKSel
|
|
||||||
{
|
|
||||||
struct {
|
|
||||||
unsigned swap1 : 2;
|
|
||||||
unsigned swap2 : 2;
|
|
||||||
unsigned kcsel0 : 5;
|
|
||||||
unsigned kasel0 : 5;
|
|
||||||
unsigned kcsel1 : 5;
|
|
||||||
unsigned kasel1 : 5;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
|
|
||||||
int getKC(int i) {return i?kcsel1:kcsel0;}
|
|
||||||
int getKA(int i) {return i?kasel1:kasel0;}
|
|
||||||
};
|
|
||||||
|
|
||||||
union AlphaFunc
|
|
||||||
{
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned ref0 : 8;
|
|
||||||
unsigned ref1 : 8;
|
|
||||||
unsigned comp0 : 3;
|
|
||||||
unsigned comp1 : 3;
|
|
||||||
unsigned logic : 2;
|
|
||||||
};
|
|
||||||
u32 hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
union UPE_Copy
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
unsigned clamp0 : 1;
|
|
||||||
unsigned clamp1 : 1;
|
|
||||||
unsigned : 1;
|
|
||||||
unsigned target_pixel_format : 4; // realformat is (fmt/2)+((fmt&1)*8).... for some reason the msb is the lsb
|
|
||||||
unsigned gamma : 2;
|
|
||||||
unsigned half_scale : 1; // real size should be 2x smaller (run a gauss filter?)
|
|
||||||
unsigned scale_something : 1;
|
|
||||||
unsigned clear : 1;
|
|
||||||
unsigned frame_to_field : 2;
|
|
||||||
unsigned copy_to_xfb : 1;
|
|
||||||
unsigned intensity_fmt : 1; // if set, is an intensity format (I4,I8,IA4,IA8)
|
|
||||||
unsigned : 16; // seems to set everything to 1s when target pixel format is invalid
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
// All of BP memory
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
struct BPMemory
|
|
||||||
{
|
|
||||||
GenMode genMode;
|
|
||||||
u32 display_copy_filter[4]; //01-04
|
|
||||||
u32 unknown; //05
|
|
||||||
// indirect matrices (set by GXSetIndTexMtx, selected by TevStageIndirect::mid)
|
|
||||||
// abc form a 2x3 offset matrix, there's 3 such matrices
|
|
||||||
// the 3 offset matrices can either be indirect type, S-type, or T-type
|
|
||||||
// 6bit scale factor s is distributed across IND_MTXA/B/C.
|
|
||||||
// before using matrices scale by 2^-(s-17)
|
|
||||||
IND_MTX indmtx[3];//06-0e GXSetIndTexMtx, 2x3 matrices
|
|
||||||
IND_IMASK imask;//0f
|
|
||||||
TevStageIndirect tevind[16];//10 GXSetTevIndirect
|
|
||||||
X12Y12 scissorTL; //20
|
|
||||||
X12Y12 scissorBR; //21
|
|
||||||
LPSize lineptwidth; //22 line and point width
|
|
||||||
u32 sucounter; //23
|
|
||||||
u32 rascounter; //24
|
|
||||||
TEXSCALE texscale[2]; //25-26 GXSetIndTexCoordScale
|
|
||||||
RAS1_IREF tevindref; //27 GXSetIndTexOrder
|
|
||||||
TwoTevStageOrders tevorders[8]; //28-2F
|
|
||||||
TCoordInfo texcoords[8]; //0x30 s,t,s,t,s,t,s,t...
|
|
||||||
ZMode zmode; //40
|
|
||||||
BlendMode blendmode; //41
|
|
||||||
ConstantAlpha dstalpha; //42
|
|
||||||
PE_CONTROL zcontrol; //43 GXSetZCompLoc, GXPixModeSync
|
|
||||||
u32 fieldmask; //44
|
|
||||||
u32 drawdone; //45, bit1=1 if end of list
|
|
||||||
u32 unknown5; //46 clock?
|
|
||||||
u32 petoken; //47
|
|
||||||
u32 petokenint; //48
|
|
||||||
X10Y10 copyTexSrcXY; //49
|
|
||||||
X10Y10 copyTexSrcWH; //4a
|
|
||||||
u32 copyTexDest; //4b// 4b == CopyAddress (GXDispCopy and GXTexCopy use it)
|
|
||||||
u32 unknown6; //4c
|
|
||||||
u32 copyMipMapStrideChannels; // 4d usually set to 4 when dest is single channel, 8 when dest is 2 channel, 16 when dest is RGBA
|
|
||||||
// also, doubles whenever mipmap box filter option is set (excent on RGBA). Probably to do with number of bytes to look at when smoothing
|
|
||||||
u32 dispcopyyscale; //4e
|
|
||||||
u32 clearcolorAR; //4f
|
|
||||||
u32 clearcolorGB; //50
|
|
||||||
u32 clearZValue; //51
|
|
||||||
u32 triggerEFBCopy; //52
|
|
||||||
u32 copyfilter[2]; //53,54
|
|
||||||
u32 boundbox0;//55
|
|
||||||
u32 boundbox1;//56
|
|
||||||
u32 unknown7[2];//57,58
|
|
||||||
X10Y10 scissorOffset; //59
|
|
||||||
u32 unknown8[10]; //5a,5b,5c,5d, 5e,5f,60,61, 62, 63 (GXTexModeSync), 0x60-0x63 have to do with preloaded textures?
|
|
||||||
u32 tlutXferSrc; //64
|
|
||||||
u32 tlutXferDest; //65
|
|
||||||
u32 texinvalidate;//66
|
|
||||||
u32 metric; //67
|
|
||||||
u32 fieldmode;//68
|
|
||||||
u32 unknown10[7];//69-6F
|
|
||||||
u32 unknown11[16];//70-7F
|
|
||||||
FourTexUnits tex[2]; //80-bf
|
|
||||||
TevStageCombiner combiners[16]; //0xC0-0xDF
|
|
||||||
TevReg tevregs[4]; //0xE0
|
|
||||||
u32 fogRangeAdj; //0xE8
|
|
||||||
u32 unknown15[3]; //0xe9,0xea,0xeb - fog related
|
|
||||||
u32 tev_range_adj_c; //0xec - screenx center for range adjustment, range adjustment enable
|
|
||||||
u32 tev_range_adj_k; //0xed - specifies range adjustment function = sqrt(x*x+k*k)/k
|
|
||||||
FogParams fog; //0xEE,0xEF,0xF0,0xF1,0xF2
|
|
||||||
AlphaFunc alphaFunc; //0xF3
|
|
||||||
ZTex1 ztex1; //0xf4,0xf5
|
|
||||||
ZTex2 ztex2;
|
|
||||||
TevKSel tevksel[8];//0xf6,0xf7,f8,f9,fa,fb,fc,fd
|
|
||||||
u32 bpMask; //0xFE
|
|
||||||
u32 unknown18; //ff
|
|
||||||
};
|
|
||||||
|
|
||||||
void BPInit();
|
void BPInit();
|
||||||
size_t BPSaveLoadState(char *ptr, BOOL save);
|
size_t BPSaveLoadState(char *ptr, BOOL save);
|
||||||
|
@ -780,8 +28,4 @@ void LoadBPReg(u32 value0);
|
||||||
void SetColorMask();
|
void SetColorMask();
|
||||||
bool SetScissorRect();
|
bool SetScissorRect();
|
||||||
|
|
||||||
extern BPMemory bpmem;
|
|
||||||
|
|
||||||
#pragma pack()
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -48,7 +48,7 @@ class PixelShaderMngr
|
||||||
values[i] = r.values[i];
|
values[i] = r.values[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator<(const PIXELSHADERUID& _Right) const
|
bool operator <(const PIXELSHADERUID& _Right) const
|
||||||
{
|
{
|
||||||
if( values[0] < _Right.values[0] )
|
if( values[0] < _Right.values[0] )
|
||||||
return true;
|
return true;
|
||||||
|
@ -75,7 +75,7 @@ class PixelShaderMngr
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(const PIXELSHADERUID& _Right) const
|
bool operator ==(const PIXELSHADERUID& _Right) const
|
||||||
{
|
{
|
||||||
if( values[0] != _Right.values[0] )
|
if( values[0] != _Right.values[0] )
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -16,12 +16,10 @@
|
||||||
// http://code.google.com/p/dolphin-emu/
|
// http://code.google.com/p/dolphin-emu/
|
||||||
|
|
||||||
#include "Globals.h"
|
#include "Globals.h"
|
||||||
|
#include "Common.h"
|
||||||
|
|
||||||
#include "BPStructs.h"
|
|
||||||
#include "TextureDecoder.h"
|
#include "TextureDecoder.h"
|
||||||
|
|
||||||
#include "OpcodeDecoding.h"
|
|
||||||
|
|
||||||
// TRAM
|
// TRAM
|
||||||
u8 texMem[TMEM_SIZE];
|
u8 texMem[TMEM_SIZE];
|
||||||
|
|
||||||
|
@ -48,6 +46,7 @@ int TexDecoder_GetTexelSizeInNibbles(int format)
|
||||||
default: return 1;
|
default: return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int TexDecoder_GetBlockWidthInTexels(int format)
|
int TexDecoder_GetBlockWidthInTexels(int format)
|
||||||
{
|
{
|
||||||
switch(format) {
|
switch(format) {
|
||||||
|
@ -62,7 +61,7 @@ int TexDecoder_GetBlockWidthInTexels(int format)
|
||||||
case GX_TF_C8: return 8;
|
case GX_TF_C8: return 8;
|
||||||
case GX_TF_C14X2: return 4;
|
case GX_TF_C14X2: return 4;
|
||||||
case GX_TF_CMPR: return 8;
|
case GX_TF_CMPR: return 8;
|
||||||
default:return 8;
|
default: return 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,9 +35,6 @@
|
||||||
|
|
||||||
#define MAX_BUFFER_SIZE 0x4000
|
#define MAX_BUFFER_SIZE 0x4000
|
||||||
|
|
||||||
// CP state
|
|
||||||
u32 arraybases[16];
|
|
||||||
u32 arraystrides[16];
|
|
||||||
|
|
||||||
// internal state for loading vertices
|
// internal state for loading vertices
|
||||||
static u32 s_prevvbstride, s_prevcomponents; // previous state set
|
static u32 s_prevvbstride, s_prevcomponents; // previous state set
|
||||||
|
|
|
@ -26,194 +26,7 @@
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
////////////////
|
#include "CPMemory.h"
|
||||||
// CP Structs //
|
|
||||||
////////////////
|
|
||||||
|
|
||||||
// Vertex array numbers
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ARRAY_POSITION = 0,
|
|
||||||
ARRAY_NORMAL = 1,
|
|
||||||
ARRAY_COLOR = 2,
|
|
||||||
ARRAY_COLOR2 = 3,
|
|
||||||
ARRAY_TEXCOORD0 = 4
|
|
||||||
};
|
|
||||||
|
|
||||||
// Vertex components
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
NOT_PRESENT = 0,
|
|
||||||
DIRECT = 1,
|
|
||||||
INDEX8 = 2,
|
|
||||||
INDEX16 = 3,
|
|
||||||
};
|
|
||||||
|
|
||||||
#pragma pack(4)
|
|
||||||
|
|
||||||
union TVtxDesc
|
|
||||||
{
|
|
||||||
u64 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0: not present
|
|
||||||
// 1: present
|
|
||||||
unsigned PosMatIdx : 1;
|
|
||||||
unsigned Tex0MatIdx : 1;
|
|
||||||
unsigned Tex1MatIdx : 1;
|
|
||||||
unsigned Tex2MatIdx : 1;
|
|
||||||
unsigned Tex3MatIdx : 1;
|
|
||||||
unsigned Tex4MatIdx : 1;
|
|
||||||
unsigned Tex5MatIdx : 1;
|
|
||||||
unsigned Tex6MatIdx : 1;
|
|
||||||
unsigned Tex7MatIdx : 1;
|
|
||||||
|
|
||||||
// 00: not present
|
|
||||||
// 01: direct
|
|
||||||
// 10: 8 bit index
|
|
||||||
// 11: 16 bit index
|
|
||||||
unsigned Position : 2;
|
|
||||||
unsigned Normal : 2;
|
|
||||||
unsigned Color0 : 2;
|
|
||||||
unsigned Color1 : 2;
|
|
||||||
unsigned Tex0Coord : 2;
|
|
||||||
unsigned Tex1Coord : 2;
|
|
||||||
unsigned Tex2Coord : 2;
|
|
||||||
unsigned Tex3Coord : 2;
|
|
||||||
unsigned Tex4Coord : 2;
|
|
||||||
unsigned Tex5Coord : 2;
|
|
||||||
unsigned Tex6Coord : 2;
|
|
||||||
unsigned Tex7Coord : 2;
|
|
||||||
unsigned :31;
|
|
||||||
};
|
|
||||||
struct {
|
|
||||||
u32 Hex0, Hex1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
FORMAT_UBYTE = 0, // 2 Cmp
|
|
||||||
FORMAT_BYTE = 1, // 3 Cmp
|
|
||||||
FORMAT_USHORT = 2,
|
|
||||||
FORMAT_SHORT = 3,
|
|
||||||
FORMAT_FLOAT = 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
FORMAT_16B_565 = 0, // NA
|
|
||||||
FORMAT_24B_888 = 1,
|
|
||||||
FORMAT_32B_888x = 2,
|
|
||||||
FORMAT_16B_4444 = 3,
|
|
||||||
FORMAT_24B_6666 = 4,
|
|
||||||
FORMAT_32B_8888 = 5,
|
|
||||||
};
|
|
||||||
|
|
||||||
union UVAT_group0
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0:8
|
|
||||||
unsigned PosElements : 1;
|
|
||||||
unsigned PosFormat : 3;
|
|
||||||
unsigned PosFrac : 5;
|
|
||||||
// 9:12
|
|
||||||
unsigned NormalElements : 1;
|
|
||||||
unsigned NormalFormat : 3;
|
|
||||||
// 13:16
|
|
||||||
unsigned Color0Elements : 1;
|
|
||||||
unsigned Color0Comp : 3;
|
|
||||||
// 17:20
|
|
||||||
unsigned Color1Elements : 1;
|
|
||||||
unsigned Color1Comp : 3;
|
|
||||||
// 21:29
|
|
||||||
unsigned Tex0CoordElements : 1;
|
|
||||||
unsigned Tex0CoordFormat : 3;
|
|
||||||
unsigned Tex0Frac : 5;
|
|
||||||
// 30:31
|
|
||||||
unsigned ByteDequant: 1;
|
|
||||||
unsigned NormalIndex3: 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
union UVAT_group1
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0:8
|
|
||||||
unsigned Tex1CoordElements : 1;
|
|
||||||
unsigned Tex1CoordFormat : 3;
|
|
||||||
unsigned Tex1Frac : 5;
|
|
||||||
// 9:17
|
|
||||||
unsigned Tex2CoordElements : 1;
|
|
||||||
unsigned Tex2CoordFormat : 3;
|
|
||||||
unsigned Tex2Frac : 5;
|
|
||||||
// 18:26
|
|
||||||
unsigned Tex3CoordElements : 1;
|
|
||||||
unsigned Tex3CoordFormat : 3;
|
|
||||||
unsigned Tex3Frac : 5;
|
|
||||||
// 27:30
|
|
||||||
unsigned Tex4CoordElements : 1;
|
|
||||||
unsigned Tex4CoordFormat : 3;
|
|
||||||
//
|
|
||||||
unsigned : 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
union UVAT_group2
|
|
||||||
{
|
|
||||||
u32 Hex;
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
// 0:4
|
|
||||||
unsigned Tex4Frac : 5;
|
|
||||||
// 5:13
|
|
||||||
unsigned Tex5CoordElements : 1;
|
|
||||||
unsigned Tex5CoordFormat : 3;
|
|
||||||
unsigned Tex5Frac : 5;
|
|
||||||
// 14:22
|
|
||||||
unsigned Tex6CoordElements : 1;
|
|
||||||
unsigned Tex6CoordFormat : 3;
|
|
||||||
unsigned Tex6Frac : 5;
|
|
||||||
// 23:31
|
|
||||||
unsigned Tex7CoordElements : 1;
|
|
||||||
unsigned Tex7CoordFormat : 3;
|
|
||||||
unsigned Tex7Frac : 5;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ColorAttr
|
|
||||||
{
|
|
||||||
u8 Elements;
|
|
||||||
u8 Comp;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TexAttr
|
|
||||||
{
|
|
||||||
u8 Elements;
|
|
||||||
u8 Format;
|
|
||||||
u8 Frac;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TVtxAttr
|
|
||||||
{
|
|
||||||
u8 PosElements;
|
|
||||||
u8 PosFormat;
|
|
||||||
u8 PosFrac;
|
|
||||||
u8 NormalElements;
|
|
||||||
u8 NormalFormat;
|
|
||||||
ColorAttr color[2];
|
|
||||||
TexAttr texCoord[8];
|
|
||||||
u8 ByteDequant;
|
|
||||||
u8 NormalIndex3;
|
|
||||||
};
|
|
||||||
|
|
||||||
#pragma pack ()
|
|
||||||
|
|
||||||
#define LOADERDECL __cdecl
|
#define LOADERDECL __cdecl
|
||||||
typedef void (LOADERDECL *TPipelineFunction)(void*);
|
typedef void (LOADERDECL *TPipelineFunction)(void*);
|
||||||
|
@ -407,8 +220,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
extern VertexLoader g_VertexLoaders[8];
|
extern VertexLoader g_VertexLoaders[8];
|
||||||
extern u32 arraybases[16];
|
|
||||||
extern u32 arraystrides[16];
|
|
||||||
u8 ReadBuffer8();
|
u8 ReadBuffer8();
|
||||||
u16 ReadBuffer16();
|
u16 ReadBuffer16();
|
||||||
u32 ReadBuffer32();
|
u32 ReadBuffer32();
|
||||||
|
|
Loading…
Reference in New Issue