Fix GSnull under Win32; plus minor fixes to the console logger.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@2095 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
Jake.Stine 2009-10-30 17:26:53 +00:00
parent 6d5690c772
commit eabfe8bf4f
10 changed files with 528 additions and 439 deletions

View File

@ -27,7 +27,7 @@ namespace HostSys
{
u8 *Mem;
Mem = (u8*)mmap((uptr*)base, size, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
if (Mem == MAP_FAILED) Console.Notice("Mmap Failed!");
if (Mem == MAP_FAILED) Console.Warning("Mmap Failed!");
return Mem;
}

View File

@ -42,12 +42,12 @@ namespace MMXRegisters
{
if (!g_EEFreezeRegs) return;
//DevCon.Notice("MMXRegisters::Freeze: depth[%d]\n", stack_depth);
//DevCon.Warning("MMXRegisters::Freeze: depth[%d]\n", stack_depth);
stack_depth++;
if (stack_depth > 1)
{
//DevCon.Notice("MMX Already Saved!\n");
//DevCon.Warning("MMX Already Saved!\n");
return;
}
@ -85,11 +85,11 @@ namespace MMXRegisters
{
if (!g_EEFreezeRegs) return;
//DevCon.Notice("MMXRegisters::Thaw: depth[%d]\n", stack_depth);
//DevCon.Warning("MMXRegisters::Thaw: depth[%d]\n", stack_depth);
if (!Saved())
{
//DevCon.Notice("MMX Not Saved!\n");
//DevCon.Warning("MMX Not Saved!\n");
return;
}
stack_depth--;
@ -145,13 +145,13 @@ namespace XMMRegisters
{
if (!g_EEFreezeRegs) return;
//DevCon.Notice("XMMRegisters::Freeze: depth[%d]\n", Depth());
//DevCon.Warning("XMMRegisters::Freeze: depth[%d]\n", Depth());
stack_depth++;
if (stack_depth > 1)
{
//DevCon.Notice("XMM Already saved\n");
//DevCon.Warning("XMM Already saved\n");
return;
}
@ -187,11 +187,11 @@ namespace XMMRegisters
{
if (!g_EEFreezeRegs) return;
//DevCon.Notice("XMMRegisters::Thaw: depth[%d]\n", Depth());
//DevCon.Warning("XMMRegisters::Thaw: depth[%d]\n", Depth());
if (!Saved())
{
//DevCon.Notice("XMM Regs not saved!\n");
//DevCon.Warning("XMM Regs not saved!\n");
return;
}

View File

@ -25,6 +25,7 @@
#ifdef __WXMSW__
# include <wx/msw/wrapwin.h> // needed for OutputDebugStirng
# include <richedit.h>
#endif
BEGIN_DECLARE_EVENT_TYPES()
@ -256,6 +257,13 @@ ConsoleLogFrame::ConsoleLogFrame( MainEmuFrame *parent, const wxString& title, A
m_TextCtrl.SetBackgroundColour( wxColor( 230, 235, 242 ) );
m_TextCtrl.SetDefaultStyle( m_ColorTable[DefaultConsoleColor] );
#ifdef __WXMSW__
// This improves Asian text display behavior on Windows. The IMF_DUALFONT flag helps
// the rich edit box reset back to the default font after displaying japanese characters.
// Other editing and messages have been disabled since our console is read-only anyway.
SendMessage( (HWND)m_TextCtrl.GetHWND(), EM_SETLANGOPTIONS, 0, IMF_AUTOFONT | IMF_DUALFONT );
#endif
// create Log menu (contains most options)
wxMenuBar *pMenuBar = new wxMenuBar();
wxMenu& menuLog = *new wxMenu();

View File

@ -140,6 +140,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "w32pthreads_lib", "3rdparty
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cdvdGigaherz", "plugins\cdvdGigaherz\src\Windows\cdvdGigaherz2008.vcproj", "{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "GSnull", "plugins\GSnull\Windows\GSnull_vc2008.vcproj", "{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
@ -152,6 +154,8 @@ Global
Release SSE4|x64 = Release SSE4|x64
Release SSSE3|Win32 = Release SSSE3|Win32
Release SSSE3|x64 = Release SSSE3|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Debug|Win32.ActiveCfg = Debug|Win32
@ -169,6 +173,9 @@ Global
{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|Win32.Build.0 = Release|Win32
{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release SSSE3|x64.ActiveCfg = Release|Win32
{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.ActiveCfg = Release|Win32
{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|Win32.Build.0 = Release|Win32
{1CEFD830-2B76-4596-A4EE-BCD7280A60BD}.Release|x64.ActiveCfg = Release|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Debug|Win32.ActiveCfg = Debug|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Debug|Win32.Build.0 = Debug|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Debug|x64.ActiveCfg = Debug|Win32
@ -184,6 +191,9 @@ Global
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Release SSSE3|Win32.Build.0 = Release|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Release SSSE3|x64.ActiveCfg = Release|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Release|Win32.ActiveCfg = Release|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Release|Win32.Build.0 = Release|Win32
{5C6B7D28-E73D-4F71-8FC0-17ADA640EBD8}.Release|x64.ActiveCfg = Release|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Debug|Win32.ActiveCfg = Debug|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Debug|Win32.Build.0 = Debug|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Debug|x64.ActiveCfg = Debug|Win32
@ -199,6 +209,9 @@ Global
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Release SSSE3|Win32.Build.0 = Release|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Release SSSE3|x64.ActiveCfg = Release|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Release|Win32.ActiveCfg = Release|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Release|Win32.Build.0 = Release|Win32
{5F78E90B-BD22-47B1-9CA5-7A80F4DF5EF3}.Release|x64.ActiveCfg = Release|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.ActiveCfg = Debug|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|Win32.Build.0 = Debug|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Debug|x64.ActiveCfg = Debug|Win32
@ -214,6 +227,9 @@ Global
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|Win32.Build.0 = Release|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release SSSE3|x64.ActiveCfg = Release|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.ActiveCfg = Release|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|Win32.Build.0 = Release|Win32
{5307BBB7-EBB9-4AA4-8CB6-A94EC473C8C4}.Release|x64.ActiveCfg = Release|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.ActiveCfg = Debug SSE2|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|Win32.Build.0 = Debug SSE2|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Debug|x64.ActiveCfg = Debug|Win32
@ -229,6 +245,9 @@ Global
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.ActiveCfg = Release SSSE3|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|Win32.Build.0 = Release SSSE3|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release SSSE3|x64.ActiveCfg = Release SSSE3|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.ActiveCfg = Release|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|Win32.Build.0 = Release|Win32
{18E42F6F-3A62-41EE-B42F-79366C4F1E95}.Release|x64.ActiveCfg = Release|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.ActiveCfg = Debug|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|Win32.Build.0 = Debug|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Debug|x64.ActiveCfg = Debug|Win32
@ -244,6 +263,9 @@ Global
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|Win32.Build.0 = Release|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release SSSE3|x64.ActiveCfg = Release|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.ActiveCfg = Release|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|Win32.Build.0 = Release|Win32
{E9B51944-7E6D-4BCD-83F2-7BBD5A46182D}.Release|x64.ActiveCfg = Release|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.ActiveCfg = Debug|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|Win32.Build.0 = Debug|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Debug|x64.ActiveCfg = Debug|Win32
@ -259,6 +281,9 @@ Global
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|Win32.Build.0 = Release|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release SSSE3|x64.ActiveCfg = Release|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.ActiveCfg = Release|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|Win32.Build.0 = Release|Win32
{2F6C0388-20CB-4242-9F6C-A6EBB6A83F47}.Release|x64.ActiveCfg = Release|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Debug|Win32.ActiveCfg = Debug|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Debug|Win32.Build.0 = Debug|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Debug|x64.ActiveCfg = Debug|Win32
@ -274,6 +299,9 @@ Global
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Release SSSE3|Win32.Build.0 = Release|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Release SSSE3|x64.ActiveCfg = Release|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Release|Win32.ActiveCfg = Release|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Release|Win32.Build.0 = Release|Win32
{F4EB4AB2-C595-4B05-8BC0-059024BC796C}.Release|x64.ActiveCfg = Release|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.ActiveCfg = Debug|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|Win32.Build.0 = Debug|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Debug|x64.ActiveCfg = Debug|Win32
@ -289,6 +317,9 @@ Global
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|Win32.Build.0 = Release|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Release SSSE3|x64.ActiveCfg = Release|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.ActiveCfg = Release|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|Win32.Build.0 = Release|Win32
{E4081455-398C-4610-A87C-90A8A7D72DC3}.Release|x64.ActiveCfg = Release|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.ActiveCfg = Debug|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Debug|Win32.Build.0 = Debug|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Debug|x64.ActiveCfg = Debug|Win32
@ -304,6 +335,9 @@ Global
{26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|Win32.Build.0 = Release|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Release SSSE3|x64.ActiveCfg = Release|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.ActiveCfg = Release|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Release|Win32.Build.0 = Release|Win32
{26511268-2902-4997-8421-ECD7055F9E28}.Release|x64.ActiveCfg = Release|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Debug|Win32.ActiveCfg = Debug|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Debug|Win32.Build.0 = Debug|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Debug|x64.ActiveCfg = Debug|Win32
@ -319,6 +353,9 @@ Global
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Release SSSE3|Win32.Build.0 = Release|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Release SSSE3|x64.ActiveCfg = Release|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Release|Win32.ActiveCfg = Release|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Release|Win32.Build.0 = Release|Win32
{7F059854-568D-4E08-9D00-1E78E203E4DC}.Release|x64.ActiveCfg = Release|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.ActiveCfg = Debug|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|Win32.Build.0 = Debug|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Debug|x64.ActiveCfg = Debug|Win32
@ -334,6 +371,9 @@ Global
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|Win32.Build.0 = Release|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release SSSE3|x64.ActiveCfg = Release SSSE3|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|Win32.ActiveCfg = Release|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|Win32.Build.0 = Release|Win32
{6F3C4136-5801-4EBC-AC6E-37DF6FAB150A}.Release|x64.ActiveCfg = Release|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Debug|Win32.ActiveCfg = Debug|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Debug|Win32.Build.0 = Debug|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Debug|x64.ActiveCfg = Debug|Win32
@ -349,6 +389,9 @@ Global
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Release SSSE3|Win32.Build.0 = Release|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Release SSSE3|x64.ActiveCfg = Release SSSE3|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Release|Win32.ActiveCfg = Release|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Release|Win32.Build.0 = Release|Win32
{FCDF5AE2-EA47-4CC6-9F20-23A0517FEBCB}.Release|x64.ActiveCfg = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.ActiveCfg = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|Win32.Build.0 = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Debug|x64.ActiveCfg = Release|Win32
@ -364,6 +407,9 @@ Global
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|Win32.Build.0 = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release SSSE3|x64.ActiveCfg = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|Win32.ActiveCfg = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|Win32.Build.0 = Release|Win32
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0}.Release|x64.ActiveCfg = Release|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.ActiveCfg = Debug|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|Win32.Build.0 = Debug|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Debug|x64.ActiveCfg = Debug|Win32
@ -379,6 +425,9 @@ Global
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|Win32.Build.0 = Release|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release SSSE3|x64.ActiveCfg = Release|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|Win32.ActiveCfg = Release|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|Win32.Build.0 = Release|Win32
{BF7B81A5-E348-4F7C-A69F-F74C8EEEAD70}.Release|x64.ActiveCfg = Release|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.ActiveCfg = Debug|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|Win32.Build.0 = Debug|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Debug|x64.ActiveCfg = Debug|Win32
@ -394,6 +443,9 @@ Global
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|Win32.Build.0 = Release|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release SSSE3|x64.ActiveCfg = Release|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.ActiveCfg = Release|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|Win32.Build.0 = Release|Win32
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}.Release|x64.ActiveCfg = Release|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.ActiveCfg = Debug|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|Win32.Build.0 = Debug|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Debug|x64.ActiveCfg = Debug|Win32
@ -409,6 +461,9 @@ Global
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|Win32.Build.0 = Release|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release SSSE3|x64.ActiveCfg = Release|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|Win32.ActiveCfg = Release|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|Win32.Build.0 = Release|Win32
{04439C5F-05FB-4A9C-AAD1-5388C25377DB}.Release|x64.ActiveCfg = Release|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Debug|Win32.ActiveCfg = Debug|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Debug|Win32.Build.0 = Debug|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Debug|x64.ActiveCfg = Debug|Win32
@ -424,6 +479,9 @@ Global
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Release SSSE3|Win32.Build.0 = Release|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Release SSSE3|x64.ActiveCfg = Release|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Release|Win32.ActiveCfg = Release|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Release|Win32.Build.0 = Release|Win32
{48AD7E0A-25B1-4974-A1E3-03F8C438D34F}.Release|x64.ActiveCfg = Release|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Debug|Win32.ActiveCfg = Debug|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Debug|Win32.Build.0 = Debug|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Debug|x64.ActiveCfg = Debug|Win32
@ -439,6 +497,9 @@ Global
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Release SSSE3|Win32.Build.0 = Release|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Release SSSE3|x64.ActiveCfg = Release|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Release|Win32.ActiveCfg = Release|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Release|Win32.Build.0 = Release|Win32
{0318BA30-EF48-441A-9E10-DC85EFAE39F0}.Release|x64.ActiveCfg = Release|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Debug|Win32.ActiveCfg = Debug|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Debug|Win32.Build.0 = Debug|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Debug|x64.ActiveCfg = Debug|Win32
@ -454,6 +515,9 @@ Global
{C34487AF-228A-4D11-8E50-27803DF76873}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Release SSSE3|Win32.Build.0 = Release|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Release SSSE3|x64.ActiveCfg = Release|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Release|Win32.ActiveCfg = Release|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Release|Win32.Build.0 = Release|Win32
{C34487AF-228A-4D11-8E50-27803DF76873}.Release|x64.ActiveCfg = Release|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.ActiveCfg = Debug|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|Win32.Build.0 = Debug|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Debug|x64.ActiveCfg = Debug|Win32
@ -469,6 +533,9 @@ Global
{A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|Win32.Build.0 = Release|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Release SSSE3|x64.ActiveCfg = Release|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.ActiveCfg = Release|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Release|Win32.Build.0 = Release|Win32
{A51123F5-9505-4EAE-85E7-D320290A272C}.Release|x64.ActiveCfg = Release|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.ActiveCfg = Debug|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Debug|Win32.Build.0 = Debug|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Debug|x64.ActiveCfg = Debug|Win32
@ -484,6 +551,9 @@ Global
{4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|Win32.Build.0 = Release|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Release SSSE3|x64.ActiveCfg = Release|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.ActiveCfg = Release|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Release|Win32.Build.0 = Release|Win32
{4639972E-424E-4E13-8B07-CA403C481346}.Release|x64.ActiveCfg = Release|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Debug|Win32.ActiveCfg = Debug|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Debug|Win32.Build.0 = Debug|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Debug|x64.ActiveCfg = Debug|Win32
@ -499,6 +569,9 @@ Global
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Release SSSE3|Win32.Build.0 = Release|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Release SSSE3|x64.ActiveCfg = Release|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Release|Win32.ActiveCfg = Release|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Release|Win32.Build.0 = Release|Win32
{0E231FB1-F3C9-4724-ACCB-DE8BCB3C089E}.Release|x64.ActiveCfg = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.ActiveCfg = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|Win32.Build.0 = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Debug|x64.ActiveCfg = Debug|Win32
@ -514,6 +587,9 @@ Global
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|Win32.Build.0 = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release SSSE3|x64.ActiveCfg = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.ActiveCfg = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|Win32.Build.0 = Release|Win32
{677B7D11-D5E1-40B3-88B1-9A4DF83D2213}.Release|x64.ActiveCfg = Release|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.ActiveCfg = Debug|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|Win32.Build.0 = Debug|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Debug|x64.ActiveCfg = Debug|Win32
@ -529,6 +605,9 @@ Global
{BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|Win32.Build.0 = Release|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Release SSSE3|x64.ActiveCfg = Release|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.ActiveCfg = Release|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Release|Win32.Build.0 = Release|Win32
{BC236261-77E8-4567-8D09-45CD02965EB6}.Release|x64.ActiveCfg = Release|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Debug|Win32.ActiveCfg = Debug|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Debug|Win32.Build.0 = Debug|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Debug|x64.ActiveCfg = Debug|Win32
@ -544,6 +623,9 @@ Global
{067D7863-393B-494F-B296-4A8853EB3D1D}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Release SSSE3|Win32.Build.0 = Release|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Release SSSE3|x64.ActiveCfg = Release|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Release|Win32.ActiveCfg = Release|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Release|Win32.Build.0 = Release|Win32
{067D7863-393B-494F-B296-4A8853EB3D1D}.Release|x64.ActiveCfg = Release|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.ActiveCfg = Debug|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|Win32.Build.0 = Debug|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Debug|x64.ActiveCfg = Debug|Win32
@ -559,6 +641,9 @@ Global
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|Win32.Build.0 = Release|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release SSSE3|x64.ActiveCfg = Release|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.ActiveCfg = Release|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|Win32.Build.0 = Release|Win32
{7E9B2BE7-CEC3-4F14-847B-0AB8D562FB86}.Release|x64.ActiveCfg = Release|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.ActiveCfg = Debug|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|Win32.Build.0 = Debug|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Debug|x64.ActiveCfg = Debug|Win32
@ -574,6 +659,27 @@ Global
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|Win32.Build.0 = Release|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release SSSE3|x64.ActiveCfg = Release|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.ActiveCfg = Release|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|Win32.Build.0 = Release|Win32
{5CF88D5F-64DD-4EDC-9F1A-436BD502940A}.Release|x64.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.ActiveCfg = Debug|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|Win32.Build.0 = Debug|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Debug|x64.ActiveCfg = Debug|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.ActiveCfg = Debug|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|Win32.Build.0 = Debug|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Devel|x64.ActiveCfg = Debug|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|Win32.Build.0 = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE2|x64.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|Win32.Build.0 = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSE4|x64.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|Win32.Build.0 = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release SSSE3|x64.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.ActiveCfg = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|Win32.Build.0 = Release|Win32
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -604,6 +710,7 @@ Global
{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E}
{04439C5F-05FB-4A9C-AAD1-5388C25377DB} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E}
{F38D9DF0-F68D-49D9-B3A0-932E74FB74A0} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E}
{5FCBD521-5A0B-4D97-A823-A97E6BAB9101} = {E1828E40-2FBB-48FE-AE7F-5587755DCE0E}
{0FADC26C-0E9D-4DD7-84B1-BF4F7754E90C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053}
{A51123F5-9505-4EAE-85E7-D320290A272C} = {88F517F9-CE1C-4005-9BDF-4481FEB55053}
{4639972E-424E-4E13-8B07-CA403C481346} = {88F517F9-CE1C-4005-9BDF-4481FEB55053}

View File

@ -1,78 +1,73 @@
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __GS_H__
#define __GS_H__
#include <stdio.h>
#ifdef _WIN32
#include "Windows/GSwin.h"
#endif
#include "Registers.h"
#ifdef __cplusplus
extern "C"
{
#endif
#define GSdefs
#include "PS2Edefs.h"
#ifdef __cplusplus
}
#endif
#ifdef __LINUX__
#include "Linux/GSLinux.h"
#endif
#include "null/GSnull.h"
/*#ifdef _MSC_VER
#define EXPORT_C_(type) extern "C" __declspec(dllexport) type CALLBACK
#else
#define EXPORT_C_(type) extern "C" type
#endif*/
#ifdef _MSC_VER
#define EXPORT_C_(type) extern "C" type CALLBACK
#else
#define EXPORT_C_(type) extern "C" type
#endif
#define GS_LOG __Log
typedef struct
{
int Log;
} Config;
extern Config conf;
extern FILE *gsLog;
extern u32 GSKeyEvent;
extern bool GSShift, GSAlt;
extern void (*GSirq)();
extern void __Log(char *fmt, ...);
extern void SysMessage(char *fmt, ...);
extern void SysPrintf(const char *fmt, ...);
extern void SaveConfig();
extern void LoadConfig();
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __GS_H__
#define __GS_H__
struct _keyEvent;
typedef struct _keyEvent keyEvent;
#include <stdio.h>
#ifdef _WIN32
# include "Windows/GSwin.h"
#endif
#ifdef __LINUX__
# include "Linux/GSLinux.h"
#endif
#define GSdefs
#include "PS2Edefs.h"
#include "Registers.h"
#include "null/GSnull.h"
/*#ifdef _MSC_VER
#define EXPORT_C_(type) extern "C" __declspec(dllexport) type CALLBACK
#else
#define EXPORT_C_(type) extern "C" type
#endif*/
#ifdef _MSC_VER
#define EXPORT_C_(type) extern "C" type CALLBACK
#else
#define EXPORT_C_(type) extern "C" type
#endif
#define GS_LOG __Log
typedef struct
{
int Log;
} Config;
extern Config conf;
extern FILE *gsLog;
extern u32 GSKeyEvent;
extern bool GSShift, GSAlt;
extern void (*GSirq)();
extern void __Log(char *fmt, ...);
extern void SysMessage(char *fmt, ...);
extern void SysPrintf(const char *fmt, ...);
extern void SaveConfig();
extern void LoadConfig();
#endif

View File

@ -1,261 +1,259 @@
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Processes a GIFtag & packet, and throws out some gsIRQs as needed.
// Used to keep interrupts in sync with the EE, while the GS itself
// runs potentially several frames behind.
// size - size of the packet in simd128's
#include "GS.h"
#include "GifTransfer.h"
using namespace std;
u32 CSRw;
GIFPath m_path[3];
bool Path3transfer;
PCSX2_ALIGNED16( u8 g_RealGSMem[0x2000] );
#define GSCSRr *((u64*)(g_RealGSMem+0x1000))
#define GSIMR *((u32*)(g_RealGSMem+0x1010))
#define GSSIGLBLID ((GSRegSIGBLID*)(g_RealGSMem+0x1080))
static void RegHandlerSIGNAL(const u32* data)
{
GSSIGLBLID->SIGID = (GSSIGLBLID->SIGID&~data[1])|(data[0]&data[1]);
if ((CSRw & 0x1)) GSCSRr |= 1; // signal
if (!(GSIMR & 0x100) ) GSirq();
}
static void RegHandlerFINISH(const u32* data)
{
if ((CSRw & 0x2)) GSCSRr |= 2; // finish
if (!(GSIMR & 0x200) ) GSirq();
}
static void RegHandlerLABEL(const u32* data)
{
GSSIGLBLID->LBLID = (GSSIGLBLID->LBLID&~data[1])|(data[0]&data[1]);
}
typedef void (*GIFRegHandler)(const u32* data);
static GIFRegHandler s_GSHandlers[3] =
{
RegHandlerSIGNAL, RegHandlerFINISH, RegHandlerLABEL
};
__forceinline void GIFPath::PrepRegs()
{
if( tag.nreg == 0 )
{
u32 tempreg = tag.regs[0];
for(u32 i=0; i<16; ++i, tempreg >>= 4)
{
if( i == 8 ) tempreg = tag.regs[1];
assert( (tempreg&0xf) < 0x64 );
regs[i] = tempreg & 0xf;
}
}
else
{
u32 tempreg = tag.regs[0];
for(u32 i=0; i<tag.nreg; ++i, tempreg >>= 4)
{
assert( (tempreg&0xf) < 0x64 );
regs[i] = tempreg & 0xf;
}
}
}
void GIFPath::SetTag(const void* mem)
{
tag = *((GIFTAG*)mem);
curreg = 0;
PrepRegs();
}
u32 GIFPath::GetReg()
{
return regs[curreg];
}
bool GIFPath::StepReg()
{
if ((++curreg & 0xf) == tag.nreg)
{
curreg = 0;
if(--tag.nloop == 0)
{
return false;
}
}
}
__forceinline u32 _gifTransfer( GIF_PATH pathidx, const u8* pMem, u32 size )
{ GIFPath& path = m_path[pathidx];
while(size > 0)
{
if(path.tag.nloop == 0)
{
path.SetTag( pMem );
pMem += sizeof(GIFTAG);
--size;
if(pathidx == 2 && path.tag.eop)
{
Path3transfer = FALSE;
}
if( pathidx == 0 )
{
// hack: if too much data for VU1, just ignore.
// The GIF is evil : if nreg is 0, it's really 16. Otherwise it's the value in nreg.
const int numregs = ((path.tag.nreg-1)&15)+1;
if((path.tag.nloop * numregs) > (size * ((path.tag.flg == 1) ? 2 : 1)))
{
path.tag.nloop = 0;
return ++size;
}
}
}
else
{
// NOTE: size > 0 => do {} while(size > 0); should be faster than while(size > 0) {}
switch(path.tag.flg)
{
case GIF_FLG_PACKED:
do
{
if( path.GetReg() == 0xe )
{
const int handler = pMem[8];
if(handler >= 0x60 && handler < 0x63)
s_GSHandlers[handler&0x3]((const u32*)pMem);
}
size--;
pMem += 16; // 128 bits! //sizeof(GIFPackedReg);
}
while(path.StepReg() && size > 0);
break;
case GIF_FLG_REGLIST:
size *= 2;
do
{
const int handler = path.GetReg();
if(handler >= 0x60 && handler < 0x63)
s_GSHandlers[handler&0x3]((const u32*)pMem);
size--;
pMem += 8; //sizeof(GIFReg); -- 64 bits!
}
while(path.StepReg() && size > 0);
if(size & 1) pMem += 8; //sizeof(GIFReg);
size /= 2;
break;
case GIF_FLG_IMAGE2: // hmmm
assert(0);
path.tag.nloop = 0;
break;
case GIF_FLG_IMAGE:
{
int len = (int)min(size, path.tag.nloop);
pMem += len * 16;
path.tag.nloop -= len;
size -= len;
}
break;
jNO_DEFAULT;
}
}
if(pathidx == 0)
{
if(path.tag.eop && path.tag.nloop == 0)
{
break;
}
}
}
if(pathidx == 0)
{
if(size == 0 && path.tag.nloop > 0)
{
path.tag.nloop = 0;
SysPrintf( "path1 hack! \n" );
// This means that the giftag data got screwly somewhere
// along the way (often means curreg was in a bad state or something)
}
}
return size;
}
// This currently segfaults in the beginning of KH1 if defined.
//#define DO_GIF_TRANSFERS
void _GSgifTransfer1(u32 *pMem, u32 addr)
{
#ifdef DO_GIF_TRANSFERS
/* This needs looking at, since I quickly grabbed it from ZeroGS. */
addr &= 0x3fff;
_gifTransfer( GIF_PATH_1, ((u8*)pMem+(u8)addr), (0x4000-addr)/16);
#endif
}
void _GSgifTransfer2(u32 *pMem, u32 size)
{
#ifdef DO_GIF_TRANSFERS
_gifTransfer( GIF_PATH_2, (u8*)pMem, size);
#endif
}
void _GSgifTransfer3(u32 *pMem, u32 size)
{
#ifdef DO_GIF_TRANSFERS
_gifTransfer( GIF_PATH_3, (u8*)pMem, size);
#endif
}
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
// Processes a GIFtag & packet, and throws out some gsIRQs as needed.
// Used to keep interrupts in sync with the EE, while the GS itself
// runs potentially several frames behind.
// size - size of the packet in simd128's
#include "GS.h"
#include "GifTransfer.h"
using namespace std;
u32 CSRw;
GIFPath m_path[3];
bool Path3transfer;
PCSX2_ALIGNED16( u8 g_RealGSMem[0x2000] );
#define GSCSRr *((u64*)(g_RealGSMem+0x1000))
#define GSIMR *((u32*)(g_RealGSMem+0x1010))
#define GSSIGLBLID ((GSRegSIGBLID*)(g_RealGSMem+0x1080))
static void RegHandlerSIGNAL(const u32* data)
{
GSSIGLBLID->SIGID = (GSSIGLBLID->SIGID&~data[1])|(data[0]&data[1]);
if ((CSRw & 0x1)) GSCSRr |= 1; // signal
if (!(GSIMR & 0x100) ) GSirq();
}
static void RegHandlerFINISH(const u32* data)
{
if ((CSRw & 0x2)) GSCSRr |= 2; // finish
if (!(GSIMR & 0x200) ) GSirq();
}
static void RegHandlerLABEL(const u32* data)
{
GSSIGLBLID->LBLID = (GSSIGLBLID->LBLID&~data[1])|(data[0]&data[1]);
}
typedef void (*GIFRegHandler)(const u32* data);
static GIFRegHandler s_GSHandlers[3] =
{
RegHandlerSIGNAL, RegHandlerFINISH, RegHandlerLABEL
};
__forceinline void GIFPath::PrepRegs()
{
if( tag.nreg == 0 )
{
u32 tempreg = tag.regs[0];
for(u32 i=0; i<16; ++i, tempreg >>= 4)
{
if( i == 8 ) tempreg = tag.regs[1];
assert( (tempreg&0xf) < 0x64 );
regs[i] = tempreg & 0xf;
}
}
else
{
u32 tempreg = tag.regs[0];
for(u32 i=0; i<tag.nreg; ++i, tempreg >>= 4)
{
assert( (tempreg&0xf) < 0x64 );
regs[i] = tempreg & 0xf;
}
}
}
void GIFPath::SetTag(const void* mem)
{
tag = *((GIFTAG*)mem);
curreg = 0;
PrepRegs();
}
u32 GIFPath::GetReg()
{
return regs[curreg];
}
bool GIFPath::StepReg()
{
if ((++curreg & 0xf) == tag.nreg) {
curreg = 0;
if (--tag.nloop == 0) {
return false;
}
}
return true;
}
__forceinline u32 _gifTransfer( GIF_PATH pathidx, const u8* pMem, u32 size )
{ GIFPath& path = m_path[pathidx];
while(size > 0)
{
if(path.tag.nloop == 0)
{
path.SetTag( pMem );
pMem += sizeof(GIFTAG);
--size;
if(pathidx == 2 && path.tag.eop)
{
Path3transfer = FALSE;
}
if( pathidx == 0 )
{
// hack: if too much data for VU1, just ignore.
// The GIF is evil : if nreg is 0, it's really 16. Otherwise it's the value in nreg.
const int numregs = ((path.tag.nreg-1)&15)+1;
if((path.tag.nloop * numregs) > (size * ((path.tag.flg == 1) ? 2 : 1)))
{
path.tag.nloop = 0;
return ++size;
}
}
}
else
{
// NOTE: size > 0 => do {} while(size > 0); should be faster than while(size > 0) {}
switch(path.tag.flg)
{
case GIF_FLG_PACKED:
do
{
if( path.GetReg() == 0xe )
{
const int handler = pMem[8];
if(handler >= 0x60 && handler < 0x63)
s_GSHandlers[handler&0x3]((const u32*)pMem);
}
size--;
pMem += 16; // 128 bits! //sizeof(GIFPackedReg);
}
while(path.StepReg() && size > 0);
break;
case GIF_FLG_REGLIST:
size *= 2;
do
{
const int handler = path.GetReg();
if(handler >= 0x60 && handler < 0x63)
s_GSHandlers[handler&0x3]((const u32*)pMem);
size--;
pMem += 8; //sizeof(GIFReg); -- 64 bits!
}
while(path.StepReg() && size > 0);
if(size & 1) pMem += 8; //sizeof(GIFReg);
size /= 2;
break;
case GIF_FLG_IMAGE2: // hmmm
assert(0);
path.tag.nloop = 0;
break;
case GIF_FLG_IMAGE:
{
int len = (int)min(size, path.tag.nloop);
pMem += len * 16;
path.tag.nloop -= len;
size -= len;
}
break;
jNO_DEFAULT;
}
}
if(pathidx == 0)
{
if(path.tag.eop && path.tag.nloop == 0)
{
break;
}
}
}
if(pathidx == 0)
{
if(size == 0 && path.tag.nloop > 0)
{
path.tag.nloop = 0;
SysPrintf( "path1 hack! \n" );
// This means that the giftag data got screwly somewhere
// along the way (often means curreg was in a bad state or something)
}
}
return size;
}
// This currently segfaults in the beginning of KH1 if defined.
//#define DO_GIF_TRANSFERS
void _GSgifTransfer1(u32 *pMem, u32 addr)
{
#ifdef DO_GIF_TRANSFERS
/* This needs looking at, since I quickly grabbed it from ZeroGS. */
addr &= 0x3fff;
_gifTransfer( GIF_PATH_1, ((u8*)pMem+(u8)addr), (0x4000-addr)/16);
#endif
}
void _GSgifTransfer2(u32 *pMem, u32 size)
{
#ifdef DO_GIF_TRANSFERS
_gifTransfer( GIF_PATH_2, (u8*)pMem, size);
#endif
}
void _GSgifTransfer3(u32 *pMem, u32 size)
{
#ifdef DO_GIF_TRANSFERS
_gifTransfer( GIF_PATH_3, (u8*)pMem, size);
#endif
}

View File

@ -1,33 +1,31 @@
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __GSLINUX_H__
#define __GSLINUX_H__
#include <gtk/gtk.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
#include "GS.h"
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __GSLINUX_H__
#define __GSLINUX_H__
#include <gtk/gtk.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
extern int GSOpenWindow(void *pDsp, char *Title);
extern void GSCloseWindow();
extern void GSProcessMessages();
extern void HandleKeyEvent(keyEvent *ev);
#endif
extern void HandleKeyEvent(keyEvent *ev);
#endif

View File

@ -3,7 +3,7 @@
ProjectType="Visual C++"
Version="9.00"
Name="GSnull"
ProjectGUID="{3D0EB14D-32F3-4D82-9C6D-B806ADBB859C}"
ProjectGUID="{5FCBD521-5A0B-4D97-A823-A97E6BAB9101}"
RootNamespace="GSnull"
Keyword="Win32Proj"
TargetFrameworkVersion="131072"
@ -39,9 +39,6 @@
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
/>
<Tool
@ -56,7 +53,6 @@
<Tool
Name="VCLinkerTool"
ModuleDefinitionFile="GS.def"
RandomizedBaseAddress="1"
TargetMachine="1"
/>
<Tool
@ -105,10 +101,6 @@
/>
<Tool
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
OmitFramePointers="true"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
/>
<Tool
@ -123,7 +115,6 @@
<Tool
Name="VCLinkerTool"
ModuleDefinitionFile="GS.def"
RandomizedBaseAddress="1"
TargetMachine="1"
/>
<Tool

View File

@ -1,22 +1,22 @@
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "GSwin.h"
#include "../GS.h"
HINSTANCE HInst;
HWND GShwnd;

View File

@ -1,36 +1,28 @@
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <windows.h>
#include <windowsx.h>
#include "../GS.h"
#ifdef __cplusplus
extern "C"
{
#endif
#define GSdefs
#include "PS2Edefs.h"
#ifdef __cplusplus
}
#endif
/* GSnull
* Copyright (C) 2004-2009 PCSX2 Team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#pragma once
#include <windows.h>
#include <windowsx.h>
extern int GSOpenWindow(void *pDsp, char *Title);
extern void GSCloseWindow();
extern void GSProcessMessages();
extern void HandleKeyEvent(keyEvent *ev);
int GSOpenWindow(void *pDsp, char *Title);
void GSCloseWindow();
void GSProcessMessages();
void HandleKeyEvent(keyEvent *ev);