mirror of https://github.com/PCSX2/pcsx2.git
wxGui branch: [linux] Added workspaces and projects for Code::Blocks IDE. Main workspace is currently located in pcsx2/linux/ (will move it to a top level later), and only Pcsx2/zlib projects are tested (and working!). Haven't gotten to any plugins yet.
The CodeBlocks project is tested for Debug builds only, and will generate the executable binary to /yoursvnroot/bin/ [same as the MSVC/Win32 build does]. * Note: The 'regular' build script is currently broken and I haven't a darnedest clue how to fix it, since my knowledge of Automake doesn't extend past the end of this sentence. git-svn-id: http://pcsx2.googlecode.com/svn/branches/wxgui@1079 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
d9f367f03f
commit
01c01e9c34
|
@ -0,0 +1,100 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_project_file>
|
||||
<FileVersion major="1" minor="6" />
|
||||
<Project>
|
||||
<Option title="zlib" />
|
||||
<Option pch_mode="2" />
|
||||
<Option compiler="gcc" />
|
||||
<Build>
|
||||
<Target title="Debug">
|
||||
<Option output="../../deps/zlib-dbg" prefix_auto="0" extension_auto="1" />
|
||||
<Option working_dir="" />
|
||||
<Option object_output="/home/pubuntu/Documents/pcsx2-newgui/3rdparty/zlib/.objs" />
|
||||
<Option type="2" />
|
||||
<Option compiler="gcc" />
|
||||
<Option createDefFile="1" />
|
||||
<Compiler>
|
||||
<Add option="-W" />
|
||||
<Add option="-g" />
|
||||
<Add option="-O0" />
|
||||
</Compiler>
|
||||
</Target>
|
||||
<Target title="Release">
|
||||
<Option output="../../deps/zlib" prefix_auto="0" extension_auto="1" />
|
||||
<Option working_dir="" />
|
||||
<Option object_output="/home/pubuntu/Documents/pcsx2-newgui/3rdparty/zlib/.objs" />
|
||||
<Option type="2" />
|
||||
<Option compiler="gcc" />
|
||||
<Option createDefFile="1" />
|
||||
<Compiler>
|
||||
<Add option="-W" />
|
||||
<Add option="-O2" />
|
||||
</Compiler>
|
||||
</Target>
|
||||
<Target title="Devel">
|
||||
<Option output="../../deps/libzlib-dev" prefix_auto="1" extension_auto="1" />
|
||||
<Option working_dir="" />
|
||||
<Option object_output="/home/pubuntu/Documents/pcsx2-newgui/3rdparty/zlib/.objs" />
|
||||
<Option type="2" />
|
||||
<Option compiler="gcc" />
|
||||
<Option createDefFile="1" />
|
||||
<Compiler>
|
||||
<Add option="-W" />
|
||||
<Add option="-O2" />
|
||||
</Compiler>
|
||||
</Target>
|
||||
</Build>
|
||||
<Unit filename="adler32.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="compress.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="crc32.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="crc32.h" />
|
||||
<Unit filename="deflate.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="deflate.h" />
|
||||
<Unit filename="gzio.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="infback.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="inffast.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="inffast.h" />
|
||||
<Unit filename="inffixed.h" />
|
||||
<Unit filename="inflate.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="inflate.h" />
|
||||
<Unit filename="inftrees.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="inftrees.h" />
|
||||
<Unit filename="trees.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="trees.h" />
|
||||
<Unit filename="uncompr.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="zconf.h" />
|
||||
<Unit filename="zlib.h" />
|
||||
<Unit filename="zutil.c">
|
||||
<Option compilerVar="CC" />
|
||||
</Unit>
|
||||
<Unit filename="zutil.h" />
|
||||
<Extensions>
|
||||
<envvars />
|
||||
<code_completion />
|
||||
<lib_finder disable_auto="1" />
|
||||
<debugger />
|
||||
</Extensions>
|
||||
</Project>
|
||||
</CodeBlocks_project_file>
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -39,11 +39,11 @@ struct ELF_HEADER {
|
|||
u32 e_shoff; //Start of section headers (offset from file start)
|
||||
u32 e_flags; //Processor specific flags = 0x20924001 noreorder, mips
|
||||
u16 e_ehsize; //ELF header size (0x34 = 52 bytes)
|
||||
u16 e_phentsize; //Program headers entry size
|
||||
u16 e_phentsize; //Program headers entry size
|
||||
u16 e_phnum; //Number of program headers
|
||||
u16 e_shentsize; //Section headers entry size
|
||||
u16 e_shnum; //Number of section headers
|
||||
u16 e_shstrndx; //Section header stringtable index
|
||||
u16 e_shstrndx; //Section header stringtable index
|
||||
};
|
||||
|
||||
struct ELF_PHR {
|
||||
|
@ -94,7 +94,7 @@ Type:
|
|||
5=HASH hash table
|
||||
6=DYNAMIC dynamic linking information
|
||||
7=NOTE
|
||||
8=NOBITS
|
||||
8=NOBITS
|
||||
9=REL relocation entries
|
||||
10=SHLIB
|
||||
0x70000000=LOPROC processor specifc
|
||||
|
@ -171,25 +171,25 @@ static uint parseCommandLine( const wxString& filename )
|
|||
p++;
|
||||
else
|
||||
p = filename;
|
||||
|
||||
|
||||
args_ptr -= strlen( p ) + 1;
|
||||
|
||||
|
||||
strcpy( (char*)&PS2MEM_BASE[ args_ptr ], p ); //fill param 0; i.e. name of the program
|
||||
|
||||
for ( i = strlen( p ) + 1 + 256, argc = 0; i > 0; i-- )
|
||||
{
|
||||
while (i && ((PS2MEM_BASE[ args_ptr + i ] == 0) || (PS2MEM_BASE[ args_ptr + i ] == 32)))
|
||||
while (i && ((PS2MEM_BASE[ args_ptr + i ] == 0) || (PS2MEM_BASE[ args_ptr + i ] == 32)))
|
||||
{ i--; }
|
||||
|
||||
|
||||
if ( PS2MEM_BASE[ args_ptr + i + 1 ] == ' ') PS2MEM_BASE[ args_ptr + i + 1 ] = 0;
|
||||
|
||||
|
||||
while (i && (PS2MEM_BASE[ args_ptr + i ] != 0) && (PS2MEM_BASE[ args_ptr + i] != 32))
|
||||
{ i--; }
|
||||
|
||||
|
||||
if ((PS2MEM_BASE[ args_ptr + i ] != 0) && (PS2MEM_BASE[ args_ptr + i ] != 32))
|
||||
{ //i==0
|
||||
argc++;
|
||||
|
||||
|
||||
if ( args_ptr - 4 - 4 - argc * 4 < 0 ) // fixme - Should this be cast to a signed int?
|
||||
return 0;
|
||||
|
||||
|
@ -241,7 +241,7 @@ struct ElfObject
|
|||
|
||||
if( header.e_phnum > 0 )
|
||||
proghead = (ELF_PHR*)&data[header.e_phoff];
|
||||
|
||||
|
||||
if( header.e_shnum > 0 )
|
||||
secthead = (ELF_SHR*)&data[header.e_shoff];
|
||||
|
||||
|
@ -252,9 +252,9 @@ struct ElfObject
|
|||
Console::Error( "ElfLoader Warning > Size of program headers is not standard" );
|
||||
|
||||
ELF_LOG( "type: " );
|
||||
switch( header.e_type )
|
||||
switch( header.e_type )
|
||||
{
|
||||
default:
|
||||
default:
|
||||
ELF_LOG( "unknown %x", header.e_type );
|
||||
break;
|
||||
|
||||
|
@ -266,14 +266,14 @@ struct ElfObject
|
|||
ELF_LOG( "relocatable" );
|
||||
break;
|
||||
|
||||
case 0x2:
|
||||
case 0x2:
|
||||
ELF_LOG( "executable" );
|
||||
break;
|
||||
}
|
||||
}
|
||||
ELF_LOG( "\n" );
|
||||
ELF_LOG( "machine: " );
|
||||
|
||||
switch ( header.e_machine )
|
||||
|
||||
switch ( header.e_machine )
|
||||
{
|
||||
default:
|
||||
ELF_LOG( "unknown" );
|
||||
|
@ -283,7 +283,7 @@ struct ElfObject
|
|||
ELF_LOG( "mips_rs3000" );
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
ELF_LOG("\n");
|
||||
ELF_LOG("version: %d",header.e_version);
|
||||
ELF_LOG("entry: %08x",header.e_entry);
|
||||
|
@ -296,7 +296,7 @@ struct ElfObject
|
|||
ELF_LOG("sh entsiz: %08x",header.e_shentsize);
|
||||
ELF_LOG("sh num: %08x",header.e_shnum);
|
||||
ELF_LOG("sh strndx: %08x",header.e_shstrndx);
|
||||
|
||||
|
||||
ELF_LOG("\n");
|
||||
}
|
||||
|
||||
|
@ -308,9 +308,9 @@ struct ElfObject
|
|||
(strnicmp( work.data(), "cdrom1:", strlen("cdromN:")) == 0))
|
||||
{
|
||||
int fi = CDVDFS_open(work.data() + strlen("cdromN:"), 1);//RDONLY
|
||||
|
||||
|
||||
if (fi < 0) throw Exception::FileNotFound( filename );
|
||||
|
||||
|
||||
CDVDFS_lseek( fi, 0, SEEK_SET );
|
||||
rsize = CDVDFS_read( fi, (char*)data.GetPtr(), data.GetSizeInBytes() );
|
||||
CDVDFS_close( fi );
|
||||
|
@ -321,7 +321,7 @@ struct ElfObject
|
|||
|
||||
f = fopen( work.data(), "rb" );
|
||||
if( f == NULL ) Exception::FileNotFound( filename );
|
||||
|
||||
|
||||
fseek( f, 0, SEEK_SET );
|
||||
rsize = fread( data.GetPtr(), 1, data.GetSizeInBytes(), f );
|
||||
fclose( f );
|
||||
|
@ -349,9 +349,9 @@ struct ElfObject
|
|||
|
||||
for( int i = 0 ; i < header.e_phnum ; i++ )
|
||||
{
|
||||
ELF_LOG( "Elf32 Program Header" );
|
||||
ELF_LOG( "Elf32 Program Header" );
|
||||
ELF_LOG( "type: " );
|
||||
|
||||
|
||||
switch ( proghead[ i ].p_type ) {
|
||||
default:
|
||||
ELF_LOG( "unknown %x", (int)proghead[ i ].p_type );
|
||||
|
@ -385,7 +385,7 @@ struct ElfObject
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
ELF_LOG("\n");
|
||||
ELF_LOG("offset: %08x",(int)proghead[i].p_offset);
|
||||
ELF_LOG("vaddr: %08x",(int)proghead[i].p_vaddr);
|
||||
|
@ -398,13 +398,13 @@ struct ElfObject
|
|||
}
|
||||
}
|
||||
|
||||
void loadSectionHeaders()
|
||||
void loadSectionHeaders()
|
||||
{
|
||||
if( secthead == NULL || header.e_shoff > (u32)data.GetLength() )
|
||||
return;
|
||||
|
||||
const u8* sections_names = data.GetPtr( secthead[ (header.e_shstrndx == 0xffff ? 0 : header.e_shstrndx) ].sh_offset );
|
||||
|
||||
|
||||
int i_st = -1;
|
||||
int i_dt = -1;
|
||||
|
||||
|
@ -415,11 +415,11 @@ struct ElfObject
|
|||
// used by parseCommandLine
|
||||
//if ( secthead[i].sh_flags & 0x2 )
|
||||
// args_ptr = min( args_ptr, secthead[ i ].sh_addr & 0x1ffffff );
|
||||
|
||||
|
||||
#ifdef PCSX2_DEVBULD
|
||||
ELF_LOG("\n");
|
||||
ELF_LOG("type: ");
|
||||
|
||||
|
||||
switch ( secthead[ i ].sh_type )
|
||||
{
|
||||
case 0x0: ELF_LOG("null"); break;
|
||||
|
@ -431,7 +431,7 @@ struct ElfObject
|
|||
case 0x9: ELF_LOG("rel"); break;
|
||||
default: ELF_LOG("unknown %08x",secthead[i].sh_type); break;
|
||||
}
|
||||
|
||||
|
||||
ELF_LOG("\n");
|
||||
ELF_LOG("flags: %08x", secthead[i].sh_flags);
|
||||
ELF_LOG("addr: %08x", secthead[i].sh_addr);
|
||||
|
@ -442,11 +442,11 @@ struct ElfObject
|
|||
ELF_LOG("addralign: %08x", secthead[i].sh_addralign);
|
||||
ELF_LOG("entsize: %08x", secthead[i].sh_entsize);
|
||||
// dump symbol table
|
||||
|
||||
if( secthead[ i ].sh_type == 0x02 )
|
||||
|
||||
if( secthead[ i ].sh_type == 0x02 )
|
||||
{
|
||||
i_st = i;
|
||||
i_dt = secthead[i].sh_link;
|
||||
i_st = i;
|
||||
i_dt = secthead[i].sh_link;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -483,7 +483,7 @@ void ElfApplyPatches()
|
|||
Console::WriteLn( "XML Loader returned an error. Trying to load a pnach..." );
|
||||
inifile_read( filename.ToAscii().data() );
|
||||
}
|
||||
else
|
||||
else
|
||||
Console::WriteLn( "XML Loading success. Will not load from pnach..." );
|
||||
|
||||
applypatch( 0 );
|
||||
|
@ -530,7 +530,7 @@ int loadElfFile(const wxString& filename)
|
|||
if( !filename.StartsWith( L"cdrom0:" ) && !filename.StartsWith( L"cdrom1:" ) )
|
||||
{
|
||||
// Loading from a file (or non-cd image)
|
||||
|
||||
|
||||
elfsize = Path::GetFileSize( filename );
|
||||
}
|
||||
else
|
||||
|
@ -551,8 +551,8 @@ int loadElfFile(const wxString& filename)
|
|||
if( elfobj.proghead == NULL )
|
||||
{
|
||||
throw Exception::CpuStateShutdown(
|
||||
wxsFormat( wxT("Invalid ELF header encountered in file:\n\t%s"), elfobj.filename ),
|
||||
wxsFormat(_("Invalid ELF header, file: %s"), elfobj.filename )
|
||||
wxsFormat( wxT("Invalid ELF header encountered in file:\n\t%s"), elfobj.filename.c_str() ),
|
||||
wxsFormat(_("Invalid ELF header, file: %s"), elfobj.filename.c_str() )
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -561,10 +561,10 @@ int loadElfFile(const wxString& filename)
|
|||
|
||||
elfobj.loadProgramHeaders();
|
||||
elfobj.loadSectionHeaders();
|
||||
|
||||
cpuRegs.pc = elfobj.header.e_entry; //set pc to proper place
|
||||
|
||||
cpuRegs.pc = elfobj.header.e_entry; //set pc to proper place
|
||||
ELF_LOG( "PC set to: %8.8lx", cpuRegs.pc );
|
||||
|
||||
|
||||
cpuRegs.GPR.n.sp.UL[0] = 0x81f00000;
|
||||
cpuRegs.GPR.n.gp.UL[0] = 0x81f80000; // might not be 100% ok
|
||||
//cpuRegs.GPR.n.a0.UL[0] = parseCommandLine( filename ); // see #ifdef'd out parseCommendLine for details.
|
||||
|
@ -592,7 +592,7 @@ extern bool path3hack;
|
|||
int g_VUGameFixes = 0;
|
||||
|
||||
// fixme - this should be moved to patches or eliminated
|
||||
void LoadGameSpecificSettings()
|
||||
void LoadGameSpecificSettings()
|
||||
{
|
||||
// default
|
||||
g_VUGameFixes = 0;
|
||||
|
@ -604,6 +604,6 @@ void LoadGameSpecificSettings()
|
|||
//case 0xa08c4057: //Sprint Cars (SLUS)
|
||||
//case 0x8b0725d5: //Flinstones Bedrock Racing (SLES)
|
||||
//path3hack = TRUE; // We can move this to patch files right now
|
||||
//break;
|
||||
//break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -46,22 +46,23 @@ namespace Exception
|
|||
{
|
||||
// Major hack. After a couple of tries, I'm still not managing to get Linux to catch these exceptions, so that the user actually
|
||||
// gets the messages. Since Console is unavailable at this level, I'm using a simple printf, which of course, means it doesn't get
|
||||
// logged. But at least the user sees it.
|
||||
//
|
||||
// logged. But at least the user sees it.
|
||||
//
|
||||
// I'll rip this out once I get Linux to actually catch these exceptions. Say, in BeginExecution or StartGui, like I would expect.
|
||||
// -- arcum42
|
||||
#ifdef __LINUX__
|
||||
printf(msg.c_str());
|
||||
wxLogError( msg_eng.c_str() );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// given message is assumed to be a translation key, and will be stored in translated
|
||||
// and untranslated forms.
|
||||
BaseException::BaseException( const char* msg_eng ) :
|
||||
BaseException::BaseException( const char* msg_eng ) :
|
||||
m_message_eng( GetEnglish( msg_eng ) ),
|
||||
m_message( GetTranslation( msg_eng ) ),
|
||||
m_stacktrace( wxEmptyString ) // unsupported yet
|
||||
{
|
||||
wxLogError( m_message_eng.c_str() );
|
||||
}
|
||||
|
||||
wxString BaseException::LogMessage() const
|
||||
|
@ -74,7 +75,7 @@ namespace Exception
|
|||
{
|
||||
return wxsFormat(
|
||||
wxT("Stream exception: %s\n\tObject name: %s"),
|
||||
m_message_eng, StreamName.c_str()
|
||||
m_message_eng.c_str(), StreamName.c_str()
|
||||
) + m_stacktrace;
|
||||
}
|
||||
|
||||
|
@ -94,7 +95,7 @@ namespace Exception
|
|||
|
||||
wxString PluginFailure::DisplayMessage() const
|
||||
{
|
||||
return wxsFormat( m_message, plugin_name );
|
||||
return wxsFormat( m_message, plugin_name.c_str() );
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
@ -138,7 +139,7 @@ namespace Exception
|
|||
Crc_Savestate, Crc_Cdvd
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
wxString StateCrcMismatch::DisplayMessage() const
|
||||
{
|
||||
return wxsFormat(
|
||||
|
@ -149,11 +150,11 @@ namespace Exception
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
wxString IndexBoundsFault::LogMessage() const
|
||||
{
|
||||
return wxT("Index out of bounds on SafeArray: ") + ArrayName +
|
||||
return wxT("Index out of bounds on SafeArray: ") + ArrayName +
|
||||
wxsFormat( wxT("(index=%d, size=%d)"), BadIndex, ArrayLength );
|
||||
}
|
||||
|
||||
|
|
96
pcsx2/GS.cpp
96
pcsx2/GS.cpp
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -52,61 +52,61 @@ int g_SaveGSStream = 0; // save GS stream; 1 - prepare, 2 - save
|
|||
int g_nLeftGSFrames = 0; // when saving, number of frames left
|
||||
gzSavingState* g_fGSSave;
|
||||
|
||||
void GSGIFTRANSFER1(u32 *pMem, u32 addr) {
|
||||
if( g_SaveGSStream == 2) {
|
||||
u32 type = GSRUN_TRANS1;
|
||||
void GSGIFTRANSFER1(u32 *pMem, u32 addr) {
|
||||
if( g_SaveGSStream == 2) {
|
||||
u32 type = GSRUN_TRANS1;
|
||||
u32 size = (0x4000-(addr))/16;
|
||||
g_fGSSave->Freeze( type );
|
||||
g_fGSSave->Freeze( size );
|
||||
g_fGSSave->FreezeMem( ((u8*)pMem)+(addr), size*16 );
|
||||
}
|
||||
GSgifTransfer1(pMem, addr);
|
||||
}
|
||||
GSgifTransfer1(pMem, addr);
|
||||
}
|
||||
|
||||
void GSGIFTRANSFER2(u32 *pMem, u32 size) {
|
||||
if( g_SaveGSStream == 2) {
|
||||
u32 type = GSRUN_TRANS2;
|
||||
u32 _size = size;
|
||||
void GSGIFTRANSFER2(u32 *pMem, u32 size) {
|
||||
if( g_SaveGSStream == 2) {
|
||||
u32 type = GSRUN_TRANS2;
|
||||
u32 _size = size;
|
||||
g_fGSSave->Freeze( type );
|
||||
g_fGSSave->Freeze( size );
|
||||
g_fGSSave->FreezeMem( pMem, _size*16 );
|
||||
}
|
||||
GSgifTransfer2(pMem, size);
|
||||
}
|
||||
GSgifTransfer2(pMem, size);
|
||||
}
|
||||
|
||||
void GSGIFTRANSFER3(u32 *pMem, u32 size) {
|
||||
if( g_SaveGSStream == 2 ) {
|
||||
u32 type = GSRUN_TRANS3;
|
||||
u32 _size = size;
|
||||
void GSGIFTRANSFER3(u32 *pMem, u32 size) {
|
||||
if( g_SaveGSStream == 2 ) {
|
||||
u32 type = GSRUN_TRANS3;
|
||||
u32 _size = size;
|
||||
g_fGSSave->Freeze( type );
|
||||
g_fGSSave->Freeze( size );
|
||||
g_fGSSave->FreezeMem( pMem, _size*16 );
|
||||
}
|
||||
GSgifTransfer3(pMem, size);
|
||||
}
|
||||
GSgifTransfer3(pMem, size);
|
||||
}
|
||||
|
||||
__forceinline void GSVSYNC(void) {
|
||||
if( g_SaveGSStream == 2 ) {
|
||||
u32 type = GSRUN_VSYNC;
|
||||
g_fGSSave->Freeze( type );
|
||||
}
|
||||
__forceinline void GSVSYNC(void) {
|
||||
if( g_SaveGSStream == 2 ) {
|
||||
u32 type = GSRUN_VSYNC;
|
||||
g_fGSSave->Freeze( type );
|
||||
}
|
||||
}
|
||||
#else
|
||||
|
||||
__forceinline void GSGIFTRANSFER1(u32 *pMem, u32 addr) {
|
||||
GSgifTransfer1(pMem, addr);
|
||||
__forceinline void GSGIFTRANSFER1(u32 *pMem, u32 addr) {
|
||||
GSgifTransfer1(pMem, addr);
|
||||
}
|
||||
|
||||
__forceinline void GSGIFTRANSFER2(u32 *pMem, u32 size) {
|
||||
GSgifTransfer2(pMem, size);
|
||||
__forceinline void GSGIFTRANSFER2(u32 *pMem, u32 size) {
|
||||
GSgifTransfer2(pMem, size);
|
||||
}
|
||||
|
||||
__forceinline void GSGIFTRANSFER3(u32 *pMem, u32 size) {
|
||||
GSgifTransfer3(pMem, size);
|
||||
__forceinline void GSGIFTRANSFER3(u32 *pMem, u32 size) {
|
||||
GSgifTransfer3(pMem, size);
|
||||
}
|
||||
|
||||
__forceinline void GSVSYNC(void) {
|
||||
}
|
||||
__forceinline void GSVSYNC(void) {
|
||||
}
|
||||
#endif
|
||||
|
||||
void _gs_ChangeTimings( u32 framerate, u32 iTicks )
|
||||
|
@ -196,7 +196,7 @@ s32 gsOpen()
|
|||
GSsetBaseMem( PS2MEM_GS );
|
||||
GSirqCallback( gsIrq );
|
||||
|
||||
m_gsOpened = !GSopen((void *)&pDsp, "PCSX2", 0);
|
||||
m_gsOpened = !GSopen( &pDsp, "PCSX2", 0 );
|
||||
}
|
||||
|
||||
/*if( m_gsOpened )
|
||||
|
@ -244,7 +244,7 @@ void gsReset()
|
|||
|
||||
gsOnModeChanged(
|
||||
(Config.PsxType & 1) ? FRAMERATE_PAL : FRAMERATE_NTSC,
|
||||
UpdateVSyncRate()
|
||||
UpdateVSyncRate()
|
||||
);
|
||||
|
||||
memzero_obj(g_RealGSMem);
|
||||
|
@ -391,7 +391,7 @@ __forceinline void gsWrite16(u32 mem, u16 value)
|
|||
case GS_CSR+2:
|
||||
gsCSRwrite( (CSRw&0xffff) | ((u32)value<<16));
|
||||
return; // do not write to MTGS memory
|
||||
|
||||
|
||||
case GS_IMR:
|
||||
IMRwrite(value);
|
||||
return; // do not write to MTGS memory
|
||||
|
@ -451,7 +451,7 @@ void __fastcall gsWrite64_page_01( u32 mem, const mem64_t* value )
|
|||
IMRwrite((u32)value[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
gsWrite64_generic( mem, value );
|
||||
}
|
||||
|
||||
|
@ -487,7 +487,7 @@ void __fastcall gsWrite128_page_01( u32 mem, const mem128_t* value )
|
|||
IMRwrite((u32)value[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
gsWrite128_generic( mem, value );
|
||||
}
|
||||
|
||||
|
@ -556,7 +556,7 @@ __forceinline u16 gsRead16(u32 mem)
|
|||
return *(u16*)PS2GS_BASE(mem);
|
||||
}
|
||||
|
||||
__forceinline u32 gsRead32(u32 mem)
|
||||
__forceinline u32 gsRead32(u32 mem)
|
||||
{
|
||||
GIF_LOG("GS read 32 from %8.8lx value: %8.8lx", mem, *(u32*)PS2GS_BASE(mem));
|
||||
return *(u32*)PS2GS_BASE(mem);
|
||||
|
@ -604,7 +604,7 @@ void gsSyncLimiterLostTime( s32 deltaTime )
|
|||
|
||||
// This function does not regulate frame limiting, meaning it does no stalling.
|
||||
// Stalling functions are performed by the EE: If the MTGS were throtted and not
|
||||
// the EE, the EE would fill the ringbuffer while the MTGS regulated frames --
|
||||
// the EE, the EE would fill the ringbuffer while the MTGS regulated frames --
|
||||
// fine for most situations but could result in literally dozens of frames queued
|
||||
// up in the ringbuffer durimg some game menu screens; which in turn would result
|
||||
// in a half-second lag of keystroke actions becoming visible to the user (bad!).
|
||||
|
@ -619,7 +619,7 @@ __forceinline void gsFrameSkip( bool forceskip )
|
|||
static u8 FramesToRender = 0;
|
||||
static u8 FramesToSkip = 0;
|
||||
|
||||
if( CHECK_FRAMELIMIT != PCSX2_FRAMELIMIT_SKIP &&
|
||||
if( CHECK_FRAMELIMIT != PCSX2_FRAMELIMIT_SKIP &&
|
||||
CHECK_FRAMELIMIT != PCSX2_FRAMELIMIT_VUSKIP ) return;
|
||||
|
||||
// FrameSkip and VU-Skip Magic!
|
||||
|
@ -627,7 +627,7 @@ __forceinline void gsFrameSkip( bool forceskip )
|
|||
|
||||
// This is the least number of consecutive frames we will render w/o skipping
|
||||
const int noSkipFrames = ((Config.CustomConsecutiveFrames>0) ? Config.CustomConsecutiveFrames : 1);
|
||||
// This is the number of consecutive frames we will skip
|
||||
// This is the number of consecutive frames we will skip
|
||||
const int yesSkipFrames = ((Config.CustomConsecutiveSkip>0) ? Config.CustomConsecutiveSkip : 1);
|
||||
|
||||
const u64 iEnd = GetCPUTicks();
|
||||
|
@ -651,7 +651,7 @@ __forceinline void gsFrameSkip( bool forceskip )
|
|||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
// if we've already given the EE a skipcount assignment then don't do anything more.
|
||||
// Otherwise we could start compounding the issue and skips would be too long.
|
||||
if( g_vu1SkipCount > 0 )
|
||||
|
@ -665,23 +665,23 @@ __forceinline void gsFrameSkip( bool forceskip )
|
|||
// -- Standard operation section --
|
||||
// Means neither skipping frames nor force-rendering consecutive frames.
|
||||
|
||||
if( sSlowDeltaTime > 0 )
|
||||
if( sSlowDeltaTime > 0 )
|
||||
{
|
||||
// The game is running below the minimum framerate.
|
||||
// But don't start skipping yet! That would be too sensitive.
|
||||
// So the skipping code is only engaged if the SlowDeltaTime falls behind by
|
||||
// a full frame, or if we're already skipping (in which case we don't care
|
||||
// to avoid errant skips).
|
||||
|
||||
|
||||
// Note: The MTGS can go out of phase from the EE, which means that the
|
||||
// variance for a "nominal" framerate can range from 0 to m_iSlowTicks.
|
||||
// We also check for that here.
|
||||
|
||||
if( (m_justSkipped && (sSlowDeltaTime > m_iSlowTicks)) ||
|
||||
if( (m_justSkipped && (sSlowDeltaTime > m_iSlowTicks)) ||
|
||||
(sSlowDeltaTime > m_iSlowTicks*2) )
|
||||
{
|
||||
//Console::Status( "Frameskip Initiated! Lateness: %d", params (int)( (sSlowDeltaTime*100) / m_iSlowTicks ) );
|
||||
|
||||
|
||||
if( CHECK_FRAMELIMIT == PCSX2_FRAMELIMIT_VUSKIP )
|
||||
{
|
||||
// For best results we have to wait for the EE to
|
||||
|
@ -755,7 +755,7 @@ void gsPostVsyncEnd( bool updategs )
|
|||
{
|
||||
*(u32*)(PS2MEM_GS+0x1000) ^= 0x2000; // swap the vsync field
|
||||
|
||||
if( mtgsThread != NULL )
|
||||
if( mtgsThread != NULL )
|
||||
mtgsThread->PostVsyncEnd( updategs );
|
||||
else
|
||||
{
|
||||
|
@ -789,7 +789,7 @@ void gsDynamicSkipEnable()
|
|||
if( !m_StrictSkipping ) return;
|
||||
|
||||
mtgsWaitGS();
|
||||
m_iSlowStart = GetCPUTicks();
|
||||
m_iSlowStart = GetCPUTicks();
|
||||
frameLimitReset();
|
||||
}
|
||||
|
||||
|
|
|
@ -25,12 +25,12 @@
|
|||
#include "PrecompiledHeader.h"
|
||||
|
||||
#include "Common.h"
|
||||
#include "IPU.h"
|
||||
#include "IPU/IPU.h"
|
||||
|
||||
#define W1 2841 /* 2048*sqrt (2)*cos (1*pi/16) */
|
||||
#define W2 2676 /* 2048*sqrt (2)*cos (2*pi/16) */
|
||||
#define W3 2408 /* 2048*sqrt (2)*cos (3*pi/16) */
|
||||
#define W5 1609 /* 2048*sqrt (2)*cos (5*pi/16) */
|
||||
#define W5 1609 /* 2048*sqrt (2)*cos (5*pi/16) */
|
||||
#define W6 1108 /* 2048*sqrt (2)*cos (6*pi/16) */
|
||||
#define W7 565 /* 2048*sqrt (2)*cos (7*pi/16) */
|
||||
#define clp(val,res) res = (val < 0) ? 0 : ((val > 255) ? 255 : val);
|
||||
|
@ -265,7 +265,7 @@ void mpeg2_idct_mmx_init (void);
|
|||
void mpeg2_idct_init()
|
||||
{
|
||||
int i, j;
|
||||
|
||||
|
||||
mpeg2_idct_copy = mpeg2_idct_copy_c;
|
||||
mpeg2_idct_add = mpeg2_idct_add_c;
|
||||
for (i = -384; i < 640; i++)
|
||||
|
|
|
@ -29,10 +29,10 @@
|
|||
#include "PrecompiledHeader.h"
|
||||
|
||||
#include "Common.h"
|
||||
#include "IPU.h"
|
||||
#include "IPU/IPU.h"
|
||||
#include "IPU/coroutine.h"
|
||||
#include "Mpeg.h"
|
||||
#include "Vlc.h"
|
||||
#include "coroutine.h"
|
||||
|
||||
int non_linear_quantizer_scale [] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
|
@ -211,8 +211,8 @@ static __forceinline int get_luma_dc_dct_diff (decoder_t * const decoder)
|
|||
DUMPBITS (bit_buf, bits, 3);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
tab = DC_long + (UBITS (bit_buf, 9) - 0x1e0);//0x1e0);
|
||||
size = tab->size;
|
||||
DUMPBITS (bit_buf, bits, tab->len);
|
||||
|
@ -250,7 +250,7 @@ static __forceinline int get_chroma_dc_dct_diff (decoder_t * const decoder)
|
|||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tab = DC_long + (UBITS (bit_buf, 10) - 0x3e0);
|
||||
size = tab->size;
|
||||
DUMPBITS (bit_buf, bits, tab->len + 1);
|
||||
|
@ -631,7 +631,7 @@ static __forceinline void get_mpeg1_intra_block (decoder_t * const decoder)
|
|||
bit_buf = decoder->bitstream_buf;
|
||||
bits = decoder->bitstream_bits;
|
||||
bit_ptr = decoder->bitstream_ptr;
|
||||
|
||||
|
||||
NEEDBITS (bit_buf, bits, bit_ptr);
|
||||
|
||||
while (1) {
|
||||
|
@ -918,7 +918,7 @@ struct TGA_HEADER
|
|||
s16 height; // image height in pixels
|
||||
u8 bits; // image bits per pixel 8,16,24,32
|
||||
u8 descriptor; // image descriptor bits (vh flip bits)
|
||||
|
||||
|
||||
// pixel data follows header
|
||||
#if defined(_MSC_VER)
|
||||
};
|
||||
|
@ -935,7 +935,7 @@ void SaveTGA(const char* filename, int width, int height, void* pdata)
|
|||
return;
|
||||
|
||||
assert( sizeof(TGA_HEADER) == 18 && sizeof(hdr) == 18 );
|
||||
|
||||
|
||||
memzero_obj(hdr);
|
||||
hdr.imagetype = 2;
|
||||
hdr.bits = 32;
|
||||
|
@ -963,7 +963,7 @@ void waitForSCD()
|
|||
while(!getBits8((u8*)&bit8, 0))
|
||||
so_resume();
|
||||
|
||||
if (bit8==0)
|
||||
if (bit8==0)
|
||||
{
|
||||
if (g_BP.BP & 7)
|
||||
g_BP.BP += 8 - (g_BP.BP&7);
|
||||
|
@ -1018,8 +1018,8 @@ void mpeg2sliceIDEC(void* pdone)
|
|||
*(int*)pdone = 0;
|
||||
bitstream_init(decoder);
|
||||
|
||||
decoder->dc_dct_pred[0] =
|
||||
decoder->dc_dct_pred[1] =
|
||||
decoder->dc_dct_pred[0] =
|
||||
decoder->dc_dct_pred[1] =
|
||||
decoder->dc_dct_pred[2] = 128 << decoder->intra_dc_precision;
|
||||
|
||||
decoder->mbc=0;
|
||||
|
@ -1033,11 +1033,11 @@ void mpeg2sliceIDEC(void* pdone)
|
|||
int DCT_offset, DCT_stride;
|
||||
int mba_inc;
|
||||
const MBAtab * mba;
|
||||
|
||||
|
||||
NEEDBITS (decoder->bitstream_buf, decoder->bitstream_bits, decoder->bitstream_ptr);
|
||||
|
||||
|
||||
decoder->macroblock_modes = get_macroblock_modes (decoder);
|
||||
|
||||
|
||||
/* maybe integrate MACROBLOCK_QUANT test into get_macroblock_modes ? */
|
||||
if (decoder->macroblock_modes & MACROBLOCK_QUANT)//only IDEC
|
||||
decoder->quantizer_scale = get_quantizer_scale (decoder);
|
||||
|
@ -1063,7 +1063,7 @@ void mpeg2sliceIDEC(void* pdone)
|
|||
slice_intra_DCT (decoder, 0, (u8*)decoder->mb8->Y + DCT_offset + 8, DCT_stride);
|
||||
slice_intra_DCT (decoder, 1, (u8*)decoder->mb8->Cb, decoder->stride>>1);
|
||||
slice_intra_DCT (decoder, 2, (u8*)decoder->mb8->Cr, decoder->stride>>1);
|
||||
|
||||
|
||||
// Send The MacroBlock via DmaIpuFrom
|
||||
if (decoder->ofm==0){
|
||||
ipu_csc(decoder->mb8, decoder->rgb32, decoder->sgn);
|
||||
|
@ -1127,9 +1127,9 @@ void mpeg2sliceIDEC(void* pdone)
|
|||
{
|
||||
ipuRegs->ctrl.SCD = 0;
|
||||
coded_block_pattern=decoder->coded_block_pattern;
|
||||
|
||||
|
||||
g_BP.BP+=decoder->bitstream_bits-16;
|
||||
|
||||
|
||||
if((int)g_BP.BP < 0) {
|
||||
g_BP.BP = 128 + (int)g_BP.BP;
|
||||
|
||||
|
@ -1137,11 +1137,11 @@ void mpeg2sliceIDEC(void* pdone)
|
|||
// so that reading may continue properly
|
||||
ReorderBitstream();
|
||||
}
|
||||
|
||||
|
||||
FillInternalBuffer(&g_BP.BP,1,0);
|
||||
|
||||
|
||||
waitForSCD();
|
||||
|
||||
|
||||
*(int*)pdone = 1;
|
||||
so_exit();
|
||||
}
|
||||
|
@ -1149,7 +1149,7 @@ void mpeg2sliceIDEC(void* pdone)
|
|||
}
|
||||
DUMPBITS (decoder->bitstream_buf, decoder->bitstream_bits, mba->len);
|
||||
mba_inc += mba->mba;
|
||||
|
||||
|
||||
if (mba_inc) {
|
||||
decoder->dc_dct_pred[0] = decoder->dc_dct_pred[1] =
|
||||
decoder->dc_dct_pred[2] = 128 << decoder->intra_dc_precision;
|
||||
|
@ -1173,9 +1173,9 @@ void mpeg2sliceIDEC(void* pdone)
|
|||
// so that reading may continue properly
|
||||
ReorderBitstream();
|
||||
}
|
||||
|
||||
|
||||
FillInternalBuffer(&g_BP.BP,1,0);
|
||||
|
||||
|
||||
waitForSCD();
|
||||
|
||||
*(int*)pdone = 1;
|
||||
|
@ -1198,7 +1198,7 @@ void mpeg2_slice(void* pdone)
|
|||
memzero_obj(*decoder->mb16);
|
||||
|
||||
bitstream_init (decoder);
|
||||
|
||||
|
||||
if (decoder->dcr)
|
||||
decoder->dc_dct_pred[0] = decoder->dc_dct_pred[1] =
|
||||
decoder->dc_dct_pred[2] = 128 << decoder->intra_dc_precision;
|
||||
|
@ -1229,7 +1229,7 @@ void mpeg2_slice(void* pdone)
|
|||
if (decoder->coded_block_pattern & 0x04) slice_non_intra_DCT (decoder, (s16*)decoder->mb16->Y + DCT_offset + 8, DCT_stride);
|
||||
if (decoder->coded_block_pattern & 0x2) slice_non_intra_DCT (decoder, (s16*)decoder->mb16->Cb, decoder->stride>>1);
|
||||
if (decoder->coded_block_pattern & 0x1) slice_non_intra_DCT (decoder, (s16*)decoder->mb16->Cr, decoder->stride>>1);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#ifndef __VLC_H__
|
||||
#define __VLC_H__
|
||||
|
||||
#include "coroutine.h"
|
||||
#include "IPU/coroutine.h"
|
||||
|
||||
static u8 data[2];
|
||||
static u8 dword[4];
|
||||
|
@ -48,7 +48,7 @@ static __forceinline void bitstream_init (decoder_t * decoder){
|
|||
while( !getBits32(dword, 1) )
|
||||
so_resume();
|
||||
|
||||
decoder->bitstream_buf = (dword[0] << 24) | (dword[1] << 16) |
|
||||
decoder->bitstream_buf = (dword[0] << 24) | (dword[1] << 16) |
|
||||
(dword[2] << 8) |dword[3];
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
/* Pcsx2 - Pc Ps2 Emulator
|
||||
* Copyright (C) 2002-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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "PrecompiledHeader.h"
|
||||
|
||||
#include <sys/mman.h>
|
||||
#include <signal.h>
|
||||
#include "Common.h"
|
||||
//#include "x86/iR5900.h"
|
||||
|
||||
extern void SysPageFaultExceptionFilter( int signal, siginfo_t *info, void * );
|
||||
extern void __fastcall InstallLinuxExceptionHandler();
|
||||
extern void __fastcall ReleaseLinuxExceptionHandler();
|
||||
|
||||
#define PCSX2_MEM_PROTECT_BEGIN() InstallLinuxExceptionHandler()
|
||||
#define PCSX2_MEM_PROTECT_END() ReleaseLinuxExceptionHandler()
|
||||
|
||||
extern void SignalExit(int sig);
|
||||
|
||||
static const uptr m_pagemask = getpagesize()-1;
|
||||
|
||||
void InstallLinuxExceptionHandler()
|
||||
{
|
||||
struct sigaction sa;
|
||||
|
||||
sigemptyset(&sa.sa_mask);
|
||||
sa.sa_flags = SA_SIGINFO;
|
||||
sa.sa_sigaction = &SysPageFaultExceptionFilter;
|
||||
sigaction(SIGSEGV, &sa, NULL);
|
||||
}
|
||||
|
||||
void ReleaseLinuxExceptionHandler()
|
||||
{
|
||||
// Code this later.
|
||||
}
|
||||
|
||||
// Linux implementation of SIGSEGV handler. Bind it using sigaction().
|
||||
void SysPageFaultExceptionFilter( int signal, siginfo_t *info, void * )
|
||||
{
|
||||
// get bad virtual address
|
||||
uptr offset = (u8*)info->si_addr - psM;
|
||||
|
||||
DevCon::Status( "Protected memory cleanup. Offset 0x%x", params offset );
|
||||
|
||||
if (offset>=Ps2MemSize::Base)
|
||||
{
|
||||
// Bad mojo! Completely invalid address.
|
||||
// Instigate a crash or abort emulation or something.
|
||||
assert( false );
|
||||
}
|
||||
|
||||
mmap_ClearCpuBlock( offset & ~m_pagemask );
|
||||
}
|
||||
|
||||
namespace HostSys
|
||||
{
|
||||
void *Mmap(uptr base, u32 size)
|
||||
{
|
||||
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!");
|
||||
|
||||
return Mem;
|
||||
}
|
||||
|
||||
void Munmap(uptr base, u32 size)
|
||||
{
|
||||
munmap((uptr*)base, size);
|
||||
}
|
||||
|
||||
void MemProtect( void* baseaddr, size_t size, PageProtectionMode mode, bool allowExecution )
|
||||
{
|
||||
int lnxmode = 0;
|
||||
|
||||
// make sure size is aligned to the system page size:
|
||||
size = (size + m_pagemask) & ~m_pagemask;
|
||||
|
||||
switch( mode )
|
||||
{
|
||||
case Protect_NoAccess: break;
|
||||
case Protect_ReadOnly: lnxmode = PROT_READ; break;
|
||||
case Protect_ReadWrite: lnxmode = PROT_READ | PROT_WRITE; break;
|
||||
}
|
||||
|
||||
if( allowExecution ) lnxmode |= PROT_EXEC;
|
||||
mprotect( baseaddr, size, lnxmode );
|
||||
}
|
||||
}
|
|
@ -16,8 +16,8 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#include "Linux.h"
|
||||
#include "../x86/ix86/ix86.h"
|
||||
#include "PrecompiledHeader.h"
|
||||
#include "ix86/ix86.h"
|
||||
|
||||
// Note: assuming multicore is safer because it forces the interlocked routines to use
|
||||
// the LOCK prefix. The prefix works on single core CPUs fine (but is slow), but not
|
||||
|
@ -64,7 +64,7 @@ namespace Threading
|
|||
// performance hint and isn't required).
|
||||
__asm__ ( "pause" );
|
||||
}
|
||||
|
||||
|
||||
void* Thread::_internal_callback( void* itsme )
|
||||
{
|
||||
jASSUME( itsme != NULL );
|
||||
|
@ -119,7 +119,7 @@ namespace Threading
|
|||
:"=&a" (result)
|
||||
:"m" (*Target), "r" (Value));
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -166,7 +166,7 @@ namespace Threading
|
|||
:"=a" (result)
|
||||
:"m" (*dest), "r" (value), "a" (comp));
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -184,7 +184,7 @@ namespace Threading
|
|||
__forceinline s64 pcsx2_InterlockedCompareExchange64(volatile s64* dest, s64 exch, s64 comp)
|
||||
{
|
||||
s64 old;
|
||||
__asm__ __volatile__(
|
||||
__asm__ __volatile__(
|
||||
"lock; cmpxchgq %q2, %q1"
|
||||
: "=a" (old)
|
||||
: "r" (exch), "m" (*dest), "a" (comp)
|
||||
|
@ -192,5 +192,5 @@ namespace Threading
|
|||
return old;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_workspace_file>
|
||||
<Workspace title="pcsx2_suite_2008 workspace">
|
||||
<Project filename="../../plugins/zerogs/dx/Windows/zerogs_2008.cbp" />
|
||||
<Project filename="../../plugins/CDVDiso/src/Windows/CDVDiso_vs2008.cbp" />
|
||||
<Project filename="../../plugins/spu2-x/src/Windows/Spu2-X_vs2008.cbp" />
|
||||
<Project filename="../../3rdparty/SoundTouch/SoundTouch.cbp" />
|
||||
<Project filename="../../3rdparty/zlib/zlib.cbp" />
|
||||
<Project filename="../../3rdparty/bzip2/bzip2.cbp" />
|
||||
<Project filename="../../plugins/LilyPad/LilyPad_VC2008.cbp" />
|
||||
<Project filename="../../plugins/zerospu2/Windows/ZeroSPU2_2008.cbp" />
|
||||
<Project filename="../../plugins/xpad/xpad_vs2008.cbp" />
|
||||
<Project filename="../../plugins/CDVDnull/Src/CDVDnull_vs2008.cbp" />
|
||||
<Project filename="../../plugins/USBnull/Windows/USBnull_vc2008.cbp" />
|
||||
<Project filename="../../plugins/FWnull/Windows/FWnull_vc2008.cbp" />
|
||||
<Project filename="../../plugins/dev9null/src/DEV9null_vc2008.cbp" />
|
||||
<Project filename="../../plugins/zeropad/Windows/ZeroPAD_2008.cbp" />
|
||||
<Project filename="pcsx2.cbp" active="1">
|
||||
<Depends filename="../../3rdparty/zlib/zlib.cbp" />
|
||||
</Project>
|
||||
</Workspace>
|
||||
</CodeBlocks_workspace_file>
|
|
@ -0,0 +1,435 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||
<CodeBlocks_project_file>
|
||||
<FileVersion major="1" minor="6" />
|
||||
<Project>
|
||||
<Option title="pcsx2" />
|
||||
<Option platforms="Windows;Unix;" />
|
||||
<Option pch_mode="2" />
|
||||
<Option compiler="gcc" />
|
||||
<Build>
|
||||
<Target title="Debug">
|
||||
<Option platforms="Windows;Unix;" />
|
||||
<Option output="$(SvnRootDir)/bin/pcsx2-dbg" prefix_auto="1" extension_auto="1" />
|
||||
<Option working_dir="$(SvnRootDir)/bin/" />
|
||||
<Option object_output="./.objs/Debug" />
|
||||
<Option type="0" />
|
||||
<Option compiler="gcc" />
|
||||
<Compiler>
|
||||
<Add option="-g" />
|
||||
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --cflags`" />
|
||||
<Add option="-DPCSX2_DEVBUILD" />
|
||||
</Compiler>
|
||||
<ResourceCompiler>
|
||||
<Add directory="$(ProjectRootDir)/NewGUI" />
|
||||
</ResourceCompiler>
|
||||
<Linker>
|
||||
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --libs`" />
|
||||
<Add library="$(SvnRootDir)/deps/zlib-dbg.a" />
|
||||
</Linker>
|
||||
</Target>
|
||||
<Target title="Devel">
|
||||
<Option platforms="Windows;Unix;" />
|
||||
<Option output="$(SvnRootDir)/bin/pcsx2-dev" prefix_auto="1" extension_auto="1" />
|
||||
<Option working_dir="$(SvnRootDir)/bin/" />
|
||||
<Option object_output="./.objs/Devel" />
|
||||
<Option type="0" />
|
||||
<Option compiler="gcc" />
|
||||
<Compiler>
|
||||
<Add option="-O2" />
|
||||
<Add option="-W" />
|
||||
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --cflags`" />
|
||||
<Add option="-DNDEBUG" />
|
||||
<Add option="-DPCSX2_DEVBUILD" />
|
||||
</Compiler>
|
||||
<ResourceCompiler>
|
||||
<Add directory="$(ProjectRootDir)/NewGUI" />
|
||||
</ResourceCompiler>
|
||||
<Linker>
|
||||
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=yes --libs`" />
|
||||
<Add library="$(SvnRootDir)/deps/zlib-dev.a" />
|
||||
</Linker>
|
||||
</Target>
|
||||
<Target title="Release">
|
||||
<Option platforms="Windows;Unix;" />
|
||||
<Option output="$(SvnRootDir)/bin/pcsx2" prefix_auto="1" extension_auto="1" />
|
||||
<Option working_dir="$(SvnRootDir)/bin/" />
|
||||
<Option object_output="./.objs/Release" />
|
||||
<Option type="0" />
|
||||
<Option compiler="gcc" />
|
||||
<Compiler>
|
||||
<Add option="-O2" />
|
||||
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=no --cflags`" />
|
||||
<Add option="-DNDEBUG" />
|
||||
</Compiler>
|
||||
<ResourceCompiler>
|
||||
<Add directory="$(ProjectRootDir)/NewGUI" />
|
||||
</ResourceCompiler>
|
||||
<Linker>
|
||||
<Add option="-s" />
|
||||
<Add option="`wx-config --version=2.8 --static=no --unicode=yes --debug=no --libs`" />
|
||||
<Add library="$(SvnRootDir)/deps/zlib.a" />
|
||||
</Linker>
|
||||
</Target>
|
||||
<Environment>
|
||||
<Variable name="SvnRootDir" value="../../" />
|
||||
<Variable name="ProjectRootDir" value='"$(SvnRootDir)/pcsx2/"' />
|
||||
<Variable name="CommonDir" value='"$(SvnRootDir)/common/"' />
|
||||
</Environment>
|
||||
</Build>
|
||||
<Compiler>
|
||||
<Add option="-march=athlon" />
|
||||
<Add option="-march=pentium4" />
|
||||
<Add option="-fno-guess-branch-probability" />
|
||||
<Add option="-fno-dse -fno-tree-dse" />
|
||||
<Add option="-DWX_PRECOMP" />
|
||||
<Add option="-D_DEBUG" />
|
||||
<Add directory="$(SvnRootDir)/common/include/" />
|
||||
<Add directory="$(SvnRootDir)/3rdparty/" />
|
||||
<Add directory="$(ProjectRootDir)" />
|
||||
<Add directory="$(ProjectRootDir)/NewGUI" />
|
||||
<Add directory="$(ProjectRootDir)/x86" />
|
||||
</Compiler>
|
||||
<Linker>
|
||||
<Add option="-Xlinker -zmuldefs" />
|
||||
</Linker>
|
||||
<Unit filename="../../common/include/Pcsx2Config.h" />
|
||||
<Unit filename="../../common/include/Pcsx2Defs.h" />
|
||||
<Unit filename="../../common/include/Pcsx2Types.h" />
|
||||
<Unit filename="../AlignedMalloc.cpp" />
|
||||
<Unit filename="../CDVD.cpp" />
|
||||
<Unit filename="../CDVD.h" />
|
||||
<Unit filename="../CDVDiso.cpp" />
|
||||
<Unit filename="../CDVDiso.h" />
|
||||
<Unit filename="../CDVDisodrv.cpp" />
|
||||
<Unit filename="../CDVDisodrv.h" />
|
||||
<Unit filename="../COP0.cpp" />
|
||||
<Unit filename="../COP2.cpp" />
|
||||
<Unit filename="../Cache.cpp" />
|
||||
<Unit filename="../Cache.h" />
|
||||
<Unit filename="../CdRom.cpp" />
|
||||
<Unit filename="../CdRom.h" />
|
||||
<Unit filename="../Common.h" />
|
||||
<Unit filename="../Config.h" />
|
||||
<Unit filename="../Console.cpp" />
|
||||
<Unit filename="../Counters.cpp" />
|
||||
<Unit filename="../Counters.h" />
|
||||
<Unit filename="../DebugTools/Debug.h" />
|
||||
<Unit filename="../DebugTools/DisASM.h" />
|
||||
<Unit filename="../DebugTools/DisR3000A.cpp" />
|
||||
<Unit filename="../DebugTools/DisR3000asm.cpp" />
|
||||
<Unit filename="../DebugTools/DisR5900.cpp" />
|
||||
<Unit filename="../DebugTools/DisR5900asm.cpp" />
|
||||
<Unit filename="../DebugTools/DisVU0Micro.cpp" />
|
||||
<Unit filename="../DebugTools/DisVU1Micro.cpp" />
|
||||
<Unit filename="../DebugTools/DisVUmicro.h" />
|
||||
<Unit filename="../DebugTools/DisVUops.h" />
|
||||
<Unit filename="../Docs/ChangeLog.txt" />
|
||||
<Unit filename="../Docs/License.txt" />
|
||||
<Unit filename="../Docs/PS2Edefs.txt" />
|
||||
<Unit filename="../Docs/RemoteDebugging.txt" />
|
||||
<Unit filename="../Docs/devblog.txt" />
|
||||
<Unit filename="../Docs/readme 0.9.4.txt" />
|
||||
<Unit filename="../Docs/readme Playground.txt" />
|
||||
<Unit filename="../Dump.cpp" />
|
||||
<Unit filename="../Dump.h" />
|
||||
<Unit filename="../EEregs.h" />
|
||||
<Unit filename="../Elfheader.cpp" />
|
||||
<Unit filename="../Elfheader.h" />
|
||||
<Unit filename="../Exceptions.cpp" />
|
||||
<Unit filename="../Exceptions.h" />
|
||||
<Unit filename="../FPU.cpp" />
|
||||
<Unit filename="../FiFo.cpp" />
|
||||
<Unit filename="../GS.cpp" />
|
||||
<Unit filename="../GS.h" />
|
||||
<Unit filename="../Gif.cpp" />
|
||||
<Unit filename="../HashMap.h" />
|
||||
<Unit filename="../HostGui.h" />
|
||||
<Unit filename="../Hw.cpp" />
|
||||
<Unit filename="../Hw.h" />
|
||||
<Unit filename="../HwRead.cpp" />
|
||||
<Unit filename="../HwWrite.cpp" />
|
||||
<Unit filename="../IPU/IPU.cpp" />
|
||||
<Unit filename="../IPU/IPU.h" />
|
||||
<Unit filename="../IPU/acoroutine.S" />
|
||||
<Unit filename="../IPU/coroutine.cpp" />
|
||||
<Unit filename="../IPU/coroutine.h" />
|
||||
<Unit filename="../IPU/mpeg2lib/Idct.cpp" />
|
||||
<Unit filename="../IPU/mpeg2lib/Mpeg.cpp" />
|
||||
<Unit filename="../IPU/mpeg2lib/Mpeg.h" />
|
||||
<Unit filename="../IPU/mpeg2lib/Vlc.h" />
|
||||
<Unit filename="../IPU/yuv2rgb.cpp" />
|
||||
<Unit filename="../IPU/yuv2rgb.h" />
|
||||
<Unit filename="../Interpreter.cpp" />
|
||||
<Unit filename="../IopBios.cpp" />
|
||||
<Unit filename="../IopBios.h" />
|
||||
<Unit filename="../IopBios2.h" />
|
||||
<Unit filename="../IopCommon.h" />
|
||||
<Unit filename="../IopCounters.cpp" />
|
||||
<Unit filename="../IopCounters.h" />
|
||||
<Unit filename="../IopDma.cpp" />
|
||||
<Unit filename="../IopDma.h" />
|
||||
<Unit filename="../IopHw.cpp" />
|
||||
<Unit filename="../IopHw.h" />
|
||||
<Unit filename="../IopMem.cpp" />
|
||||
<Unit filename="../IopMem.h" />
|
||||
<Unit filename="../IopSio2.cpp" />
|
||||
<Unit filename="../IopSio2.h" />
|
||||
<Unit filename="../Linux/HostGui.cpp" />
|
||||
<Unit filename="../Linux/LnxMisc.cpp" />
|
||||
<Unit filename="../Linux/LnxThreads.cpp" />
|
||||
<Unit filename="../Linux/memzero.h" />
|
||||
<Unit filename="../MMI.cpp" />
|
||||
<Unit filename="../MTGS.cpp" />
|
||||
<Unit filename="../MemcpyFast.h" />
|
||||
<Unit filename="../Memory.cpp" />
|
||||
<Unit filename="../Memory.h" />
|
||||
<Unit filename="../MemoryCard.cpp" />
|
||||
<Unit filename="../MemoryCard.h" />
|
||||
<Unit filename="../Misc.cpp" />
|
||||
<Unit filename="../Misc.h" />
|
||||
<Unit filename="../NakedAsm.h" />
|
||||
<Unit filename="../NewGUI/AboutBoxDialog.cpp" />
|
||||
<Unit filename="../NewGUI/AboutBoxDialog.h" />
|
||||
<Unit filename="../NewGUI/App.h" />
|
||||
<Unit filename="../NewGUI/AppConfig.cpp" />
|
||||
<Unit filename="../NewGUI/CheckedStaticBox.cpp" />
|
||||
<Unit filename="../NewGUI/CheckedStaticBox.h" />
|
||||
<Unit filename="../NewGUI/ConsoleLogger.cpp" />
|
||||
<Unit filename="../NewGUI/GameFixesDialog.cpp" />
|
||||
<Unit filename="../NewGUI/GameFixesDialog.h" />
|
||||
<Unit filename="../NewGUI/HostGui.cpp" />
|
||||
<Unit filename="../NewGUI/IniInterface.cpp" />
|
||||
<Unit filename="../NewGUI/IniInterface.h" />
|
||||
<Unit filename="../NewGUI/LogOptionsDialog.cpp" />
|
||||
<Unit filename="../NewGUI/LogOptionsDialog.h" />
|
||||
<Unit filename="../NewGUI/MainFrame.cpp" />
|
||||
<Unit filename="../NewGUI/MainFrame.h" />
|
||||
<Unit filename="../NewGUI/main.cpp" />
|
||||
<Unit filename="../NewGUI/wxHelpers.cpp" />
|
||||
<Unit filename="../NewGUI/wxHelpers.h" />
|
||||
<Unit filename="../Patch.cpp" />
|
||||
<Unit filename="../Patch.h" />
|
||||
<Unit filename="../PathUtils.cpp" />
|
||||
<Unit filename="../Paths.h" />
|
||||
<Unit filename="../Plugins.cpp" />
|
||||
<Unit filename="../Plugins.h" />
|
||||
<Unit filename="../PrecompiledHeader.cpp" />
|
||||
<Unit filename="../PrecompiledHeader.h" />
|
||||
<Unit filename="../R3000A.cpp" />
|
||||
<Unit filename="../R3000A.h" />
|
||||
<Unit filename="../R3000AInterpreter.cpp" />
|
||||
<Unit filename="../R3000AOpcodeTables.cpp" />
|
||||
<Unit filename="../R5900.cpp" />
|
||||
<Unit filename="../R5900.h" />
|
||||
<Unit filename="../R5900Exceptions.h" />
|
||||
<Unit filename="../R5900OpcodeImpl.cpp" />
|
||||
<Unit filename="../R5900OpcodeTables.cpp" />
|
||||
<Unit filename="../R5900OpcodeTables.h" />
|
||||
<Unit filename="../RecoverySystem.cpp" />
|
||||
<Unit filename="../RedtapeWindows.h" />
|
||||
<Unit filename="../Resources/AppIcon.h" />
|
||||
<Unit filename="../Resources/BackgroundLogo.h" />
|
||||
<Unit filename="../Resources/EmbeddedImage.h" />
|
||||
<Unit filename="../Resources/ps2_silver.h" />
|
||||
<Unit filename="../SPR.cpp" />
|
||||
<Unit filename="../SPR.h" />
|
||||
<Unit filename="../SafeArray.h" />
|
||||
<Unit filename="../SamplProf.h" />
|
||||
<Unit filename="../SaveState.cpp" />
|
||||
<Unit filename="../SaveState.h" />
|
||||
<Unit filename="../Saveslots.cpp" />
|
||||
<Unit filename="../Sif.cpp" />
|
||||
<Unit filename="../Sif.h" />
|
||||
<Unit filename="../Sifcmd.h" />
|
||||
<Unit filename="../Sio.cpp" />
|
||||
<Unit filename="../Sio.h" />
|
||||
<Unit filename="../SourceLog.cpp" />
|
||||
<Unit filename="../Stats.cpp" />
|
||||
<Unit filename="../Stats.h" />
|
||||
<Unit filename="../StringUtils.cpp" />
|
||||
<Unit filename="../StringUtils.h" />
|
||||
<Unit filename="../System.cpp" />
|
||||
<Unit filename="../System.h" />
|
||||
<Unit filename="../ThreadTools.cpp" />
|
||||
<Unit filename="../Threading.h" />
|
||||
<Unit filename="../Utilities/AsciiFile.h" />
|
||||
<Unit filename="../Utilities/FileUtils.cpp" />
|
||||
<Unit filename="../Utilities/folderdesc.txt" />
|
||||
<Unit filename="../VU.h" />
|
||||
<Unit filename="../VU0.cpp" />
|
||||
<Unit filename="../VU0micro.cpp" />
|
||||
<Unit filename="../VU0microInterp.cpp" />
|
||||
<Unit filename="../VU1micro.cpp" />
|
||||
<Unit filename="../VU1microInterp.cpp" />
|
||||
<Unit filename="../VUflags.cpp" />
|
||||
<Unit filename="../VUflags.h" />
|
||||
<Unit filename="../VUmicro.h" />
|
||||
<Unit filename="../VUmicroMem.cpp" />
|
||||
<Unit filename="../VUops.cpp" />
|
||||
<Unit filename="../VUops.h" />
|
||||
<Unit filename="../Vif.cpp" />
|
||||
<Unit filename="../Vif.h" />
|
||||
<Unit filename="../VifDma.cpp" />
|
||||
<Unit filename="../VifDma.h" />
|
||||
<Unit filename="../pcsxAbout.bmp" />
|
||||
<Unit filename="../rdebug/deci2.cpp">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2.h">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_dbgp.cpp">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_dbgp.h">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_dcmp.cpp">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_dcmp.h">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_drfp.h">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_iloadp.cpp">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_iloadp.h">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_netmp.cpp">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_netmp.h">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_ttyp.cpp">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../rdebug/deci2_ttyp.h">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../tinyxml/tinystr.cpp" />
|
||||
<Unit filename="../tinyxml/tinystr.h" />
|
||||
<Unit filename="../tinyxml/tinyxml.cpp" />
|
||||
<Unit filename="../tinyxml/tinyxml.h" />
|
||||
<Unit filename="../tinyxml/tinyxmlerror.cpp" />
|
||||
<Unit filename="../tinyxml/tinyxmlparser.cpp" />
|
||||
<Unit filename="../vssprintf.cpp" />
|
||||
<Unit filename="../vtlb.cpp" />
|
||||
<Unit filename="../vtlb.h" />
|
||||
<Unit filename="../x86/BaseblockEx.cpp" />
|
||||
<Unit filename="../x86/BaseblockEx.h" />
|
||||
<Unit filename="../x86/aMicroVU.S">
|
||||
<Option target="<{~None~}>" />
|
||||
</Unit>
|
||||
<Unit filename="../x86/aR3000A.S" />
|
||||
<Unit filename="../x86/aVUzerorec.S" />
|
||||
<Unit filename="../x86/aVif.S" />
|
||||
<Unit filename="../x86/fast_routines.S" />
|
||||
<Unit filename="../x86/iCOP0.cpp" />
|
||||
<Unit filename="../x86/iCOP0.h" />
|
||||
<Unit filename="../x86/iCOP2.cpp" />
|
||||
<Unit filename="../x86/iCore.cpp" />
|
||||
<Unit filename="../x86/iCore.h" />
|
||||
<Unit filename="../x86/iFPU.cpp" />
|
||||
<Unit filename="../x86/iFPU.h" />
|
||||
<Unit filename="../x86/iFPUd.cpp" />
|
||||
<Unit filename="../x86/iMMI.cpp" />
|
||||
<Unit filename="../x86/iMMI.h" />
|
||||
<Unit filename="../x86/iR3000A.cpp" />
|
||||
<Unit filename="../x86/iR3000A.h" />
|
||||
<Unit filename="../x86/iR3000Atables.cpp" />
|
||||
<Unit filename="../x86/iR5900.h" />
|
||||
<Unit filename="../x86/iR5900Arit.h" />
|
||||
<Unit filename="../x86/iR5900AritImm.h" />
|
||||
<Unit filename="../x86/iR5900Branch.h" />
|
||||
<Unit filename="../x86/iR5900Jump.h" />
|
||||
<Unit filename="../x86/iR5900LoadStore.h" />
|
||||
<Unit filename="../x86/iR5900Misc.cpp" />
|
||||
<Unit filename="../x86/iR5900Move.h" />
|
||||
<Unit filename="../x86/iR5900MultDiv.h" />
|
||||
<Unit filename="../x86/iR5900Shift.h" />
|
||||
<Unit filename="../x86/iVU0micro.cpp" />
|
||||
<Unit filename="../x86/iVU1micro.cpp" />
|
||||
<Unit filename="../x86/iVUmicro.cpp" />
|
||||
<Unit filename="../x86/iVUmicro.h" />
|
||||
<Unit filename="../x86/iVUmicroLower.cpp" />
|
||||
<Unit filename="../x86/iVUmicroUpper.cpp" />
|
||||
<Unit filename="../x86/iVUops.h" />
|
||||
<Unit filename="../x86/iVUzerorec.cpp" />
|
||||
<Unit filename="../x86/iVUzerorec.h" />
|
||||
<Unit filename="../x86/iVif.cpp" />
|
||||
<Unit filename="../x86/ir5900tables.cpp" />
|
||||
<Unit filename="../x86/ix86-32/aR5900-32.S" />
|
||||
<Unit filename="../x86/ix86-32/iCore-32.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900-32.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900Arit.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900AritImm.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900Branch.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900Jump.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900LoadStore.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900Move.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900MultDiv.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900Shift.cpp" />
|
||||
<Unit filename="../x86/ix86-32/iR5900Templates.cpp" />
|
||||
<Unit filename="../x86/ix86-32/recVTLB.cpp" />
|
||||
<Unit filename="../x86/ix86/implement/dwshift.h" />
|
||||
<Unit filename="../x86/ix86/implement/group1.h" />
|
||||
<Unit filename="../x86/ix86/implement/group2.h" />
|
||||
<Unit filename="../x86/ix86/implement/group3.h" />
|
||||
<Unit filename="../x86/ix86/implement/incdec.h" />
|
||||
<Unit filename="../x86/ix86/implement/jmpcall.h" />
|
||||
<Unit filename="../x86/ix86/implement/movs.h" />
|
||||
<Unit filename="../x86/ix86/implement/test.h" />
|
||||
<Unit filename="../x86/ix86/implement/xchg.h" />
|
||||
<Unit filename="../x86/ix86/implement/xmm/arithmetic.h" />
|
||||
<Unit filename="../x86/ix86/implement/xmm/basehelpers.h" />
|
||||
<Unit filename="../x86/ix86/implement/xmm/comparisons.h" />
|
||||
<Unit filename="../x86/ix86/implement/xmm/moremovs.h" />
|
||||
<Unit filename="../x86/ix86/implement/xmm/shufflepack.h" />
|
||||
<Unit filename="../x86/ix86/ix86.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86.h" />
|
||||
<Unit filename="../x86/ix86/ix86_3dnow.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_cpudetect.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_fpu.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_inlines.inl" />
|
||||
<Unit filename="../x86/ix86/ix86_instructions.h" />
|
||||
<Unit filename="../x86/ix86/ix86_internal.h" />
|
||||
<Unit filename="../x86/ix86/ix86_jmp.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_legacy.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_legacy_instructions.h" />
|
||||
<Unit filename="../x86/ix86/ix86_legacy_internal.h" />
|
||||
<Unit filename="../x86/ix86/ix86_legacy_sse.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_legacy_types.h" />
|
||||
<Unit filename="../x86/ix86/ix86_simd.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_sse_helpers.h" />
|
||||
<Unit filename="../x86/ix86/ix86_tools.cpp" />
|
||||
<Unit filename="../x86/ix86/ix86_types.h" />
|
||||
<Unit filename="../x86/ix86/ix86_writers.inl" />
|
||||
<Unit filename="../x86/microVU.cpp" />
|
||||
<Unit filename="../x86/microVU.h" />
|
||||
<Unit filename="../x86/microVU_Alloc.h" />
|
||||
<Unit filename="../x86/microVU_Alloc.inl" />
|
||||
<Unit filename="../x86/microVU_Analyze.inl" />
|
||||
<Unit filename="../x86/microVU_Compile.inl" />
|
||||
<Unit filename="../x86/microVU_Execute.inl" />
|
||||
<Unit filename="../x86/microVU_Log.inl" />
|
||||
<Unit filename="../x86/microVU_Lower.inl" />
|
||||
<Unit filename="../x86/microVU_Misc.h" />
|
||||
<Unit filename="../x86/microVU_Misc.inl" />
|
||||
<Unit filename="../x86/microVU_Tables.inl" />
|
||||
<Unit filename="../x86/microVU_Upper.inl" />
|
||||
<Unit filename="../xmlpatchloader.cpp" />
|
||||
<Extensions>
|
||||
<envvars />
|
||||
<code_completion>
|
||||
<search_path add="/usr/include/wx-2.8" />
|
||||
</code_completion>
|
||||
<lib_finder disable_auto="1" />
|
||||
<debugger />
|
||||
</Extensions>
|
||||
</Project>
|
||||
</CodeBlocks_project_file>
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -21,10 +21,10 @@
|
|||
RAM
|
||||
---
|
||||
0x00100000-0x01ffffff this is the physical address for the ram.its cached there
|
||||
0x20100000-0x21ffffff uncached
|
||||
0x30100000-0x31ffffff uncached & acceleretade
|
||||
0x20100000-0x21ffffff uncached
|
||||
0x30100000-0x31ffffff uncached & acceleretade
|
||||
0xa0000000-0xa1ffffff MIRROR might...???
|
||||
0x80000000-0x81ffffff MIRROR might... ????
|
||||
0x80000000-0x81ffffff MIRROR might... ????
|
||||
|
||||
scratch pad
|
||||
----------
|
||||
|
@ -93,8 +93,8 @@ void loadBiosRom( const wxChar *ext, u8 *dest, long maxSize )
|
|||
|
||||
// Try first a basic extension concatenation (normally results in something like name.bin.rom1)
|
||||
const wxString Bios( g_Conf.Files.Bios() );
|
||||
Bios1.Printf( wxS("%s.%s"), Bios.c_str(), ext);
|
||||
|
||||
Bios1.Printf( wxT("%s.%s"), Bios.c_str(), ext);
|
||||
|
||||
if( (filesize=Path::GetFileSize( Bios1 ) ) <= 0 )
|
||||
{
|
||||
// Try the name properly extensioned next (name.rom1)
|
||||
|
@ -136,7 +136,7 @@ void MyMemCheck(u32 mem)
|
|||
}
|
||||
|
||||
/////////////////////////////
|
||||
// REGULAR MEM START
|
||||
// REGULAR MEM START
|
||||
/////////////////////////////
|
||||
vtlbHandler tlb_fallback_0;
|
||||
vtlbHandler tlb_fallback_1;
|
||||
|
@ -171,7 +171,7 @@ void memMapPhy()
|
|||
{
|
||||
//Main mem
|
||||
vtlb_MapBlock(psM,0x00000000,Ps2MemSize::Base);//mirrored on first 256 mb ?
|
||||
|
||||
|
||||
//Rom
|
||||
vtlb_MapBlock(psR,0x1fc00000,Ps2MemSize::Rom);//Writable ?
|
||||
//Rom 1
|
||||
|
@ -230,18 +230,18 @@ void memMapKernelMem()
|
|||
}
|
||||
|
||||
//what do do with these ?
|
||||
void memMapSupervisorMem()
|
||||
void memMapSupervisorMem()
|
||||
{
|
||||
}
|
||||
|
||||
void memMapUserMem()
|
||||
void memMapUserMem()
|
||||
{
|
||||
}
|
||||
|
||||
template<int p>
|
||||
mem8_t __fastcall _ext_memRead8 (u32 mem)
|
||||
mem8_t __fastcall _ext_memRead8 (u32 mem)
|
||||
{
|
||||
switch (p)
|
||||
switch (p)
|
||||
{
|
||||
case 1: // hwm
|
||||
return hwRead8(mem);
|
||||
|
@ -297,7 +297,7 @@ mem16_t __fastcall _ext_memRead16(u32 mem)
|
|||
}
|
||||
|
||||
template<int p>
|
||||
mem32_t __fastcall _ext_memRead32(u32 mem)
|
||||
mem32_t __fastcall _ext_memRead32(u32 mem)
|
||||
{
|
||||
switch (p)
|
||||
{
|
||||
|
@ -586,7 +586,7 @@ void __fastcall vuMicroWrite128(u32 addr,const mem128_t* data)
|
|||
}
|
||||
}
|
||||
|
||||
void memSetPageAddr(u32 vaddr, u32 paddr)
|
||||
void memSetPageAddr(u32 vaddr, u32 paddr)
|
||||
{
|
||||
//Console::WriteLn("memSetPageAddr: %8.8x -> %8.8x", params vaddr, paddr);
|
||||
|
||||
|
@ -594,7 +594,7 @@ void memSetPageAddr(u32 vaddr, u32 paddr)
|
|||
|
||||
}
|
||||
|
||||
void memClearPageAddr(u32 vaddr)
|
||||
void memClearPageAddr(u32 vaddr)
|
||||
{
|
||||
//Console::WriteLn("memClearPageAddr: %8.8x", params vaddr);
|
||||
|
||||
|
@ -609,13 +609,13 @@ void memClearPageAddr(u32 vaddr)
|
|||
///////////////////////////////////////////////////////////////////////////
|
||||
// PS2 Memory Init / Reset / Shutdown
|
||||
|
||||
static const uint m_allMemSize =
|
||||
static const uint m_allMemSize =
|
||||
Ps2MemSize::Rom + Ps2MemSize::Rom1 + Ps2MemSize::Rom2 + Ps2MemSize::ERom +
|
||||
Ps2MemSize::Base + Ps2MemSize::Hardware + Ps2MemSize::Scratch;
|
||||
|
||||
static u8* m_psAllMem = NULL;
|
||||
|
||||
void memAlloc()
|
||||
void memAlloc()
|
||||
{
|
||||
if( m_psAllMem == NULL )
|
||||
m_psAllMem = vtlb_malloc( m_allMemSize, 4096, 0x2400000 );
|
||||
|
@ -625,7 +625,7 @@ void memAlloc()
|
|||
|
||||
u8* curpos = m_psAllMem;
|
||||
psM = curpos; curpos += Ps2MemSize::Base;
|
||||
psR = curpos; curpos += Ps2MemSize::Rom;
|
||||
psR = curpos; curpos += Ps2MemSize::Rom;
|
||||
psR1 = curpos; curpos += Ps2MemSize::Rom1;
|
||||
psR2 = curpos; curpos += Ps2MemSize::Rom2;
|
||||
psER = curpos; curpos += Ps2MemSize::ERom;
|
||||
|
@ -633,7 +633,7 @@ void memAlloc()
|
|||
psS = curpos; //curpos += Ps2MemSize::Scratch;
|
||||
}
|
||||
|
||||
void memShutdown()
|
||||
void memShutdown()
|
||||
{
|
||||
vtlb_free( m_psAllMem, m_allMemSize );
|
||||
m_psAllMem = NULL;
|
||||
|
@ -843,7 +843,7 @@ void mmap_ResetBlockTracking()
|
|||
void mmap_ClearCpuBlock( uint offset )
|
||||
{
|
||||
HostSys::MemProtect( &psM[offset], 1, Protect_ReadWrite );
|
||||
|
||||
|
||||
offset>>=12;
|
||||
psMPWC[(offset/32)]|=(1<<(offset&31));
|
||||
|
||||
|
@ -852,4 +852,4 @@ void mmap_ClearCpuBlock( uint offset )
|
|||
Cpu->Clear(psMPWVA[offset][i],0x400);
|
||||
}
|
||||
psMPWVA[offset].clear();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -70,7 +70,7 @@ struct romdir
|
|||
u16 extInfoSize;
|
||||
u32 fileSize;
|
||||
#if defined(_MSC_VER)
|
||||
};
|
||||
};
|
||||
#pragma pack() //+22
|
||||
#else
|
||||
} __attribute__((packed));
|
||||
|
@ -146,12 +146,12 @@ bool IsBIOS(const wxString& filename, wxString& description)
|
|||
if (strcmp(rd.fileName, "ROMVER") == 0) // found romver
|
||||
{
|
||||
char aROMVER[14+1]; // ascii version loaded from disk.
|
||||
|
||||
|
||||
uint filepos = fp.Tell();
|
||||
fp.Seek( fileOffset );
|
||||
if( fp.Read( &aROMVER, 14 ) == 0 ) break;
|
||||
fp.Seek( filepos ); //go back
|
||||
|
||||
|
||||
const char zonefail[2] = { aROMVER[4], '\0' }; // the default "zone" (unknown code)
|
||||
const char* zone = zonefail;
|
||||
|
||||
|
@ -217,13 +217,13 @@ int GetPS2ElfName( wxString& name )
|
|||
Console::Error("Boot Error > SYSTEM.CNF not found");
|
||||
return 0;//could not find; not a PS/PS2 cdvd
|
||||
}
|
||||
|
||||
|
||||
f=CDVDFS_open("SYSTEM.CNF;1", 1);
|
||||
CDVDFS_read(f, buffer, g_MaxPath);
|
||||
CDVDFS_close(f);
|
||||
|
||||
|
||||
buffer[tocEntry.fileSize]='\0';
|
||||
|
||||
|
||||
pos=strstr(buffer, "BOOT2");
|
||||
if (pos==NULL){
|
||||
pos=strstr(buffer, "BOOT");
|
||||
|
@ -234,7 +234,7 @@ int GetPS2ElfName( wxString& name )
|
|||
return 1;
|
||||
}
|
||||
pos+=strlen("BOOT2");
|
||||
while (pos && *pos && pos<&buffer[g_MaxPath]
|
||||
while (pos && *pos && pos<&buffer[g_MaxPath]
|
||||
&& (*pos<'A' || (*pos>'Z' && *pos<'a') || *pos>'z'))
|
||||
pos++;
|
||||
if (!pos || *pos==0)
|
||||
|
@ -283,10 +283,10 @@ void SaveGSState(const wxString& file)
|
|||
if( g_SaveGSStream ) return;
|
||||
|
||||
Console::WriteLn( "Saving GS State..." );
|
||||
Console::WriteLn( "\t%s", params file.mb_str() );
|
||||
Console::WriteLn( wxsFormat( L"\t%s", file.c_str() ) );
|
||||
|
||||
g_fGSSave = new gzSavingState( file );
|
||||
|
||||
|
||||
g_SaveGSStream = 1;
|
||||
g_nLeftGSFrames = 2;
|
||||
|
||||
|
@ -419,7 +419,7 @@ void ProcessFKeys(int fkey, struct KeyModifiers *keymod)
|
|||
{
|
||||
assert(fkey >= 1 && fkey <= 12 );
|
||||
|
||||
switch(fkey)
|
||||
switch(fkey)
|
||||
{
|
||||
case 1:
|
||||
try
|
||||
|
@ -450,7 +450,7 @@ void ProcessFKeys(int fkey, struct KeyModifiers *keymod)
|
|||
GSchangeSaveState(StatesC, SaveState::GetFilename(StatesC).mb_str());
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 3:
|
||||
try
|
||||
{
|
||||
gzLoadingState joe( SaveState::GetFilename( StatesC ) ); // throws exception on version mismatch
|
||||
|
@ -477,7 +477,7 @@ void ProcessFKeys(int fkey, struct KeyModifiers *keymod)
|
|||
throw Exception::CpuStateShutdown(
|
||||
// english log message:
|
||||
wxsFormat( wxT("Error! Could not load from saveslot %d\n"), StatesC ) + ex.LogMessage(),
|
||||
|
||||
|
||||
// translated message:
|
||||
wxsFormat( _("Error loading saveslot %d. Emulator reset."), StatesC )
|
||||
);
|
||||
|
@ -492,9 +492,9 @@ void ProcessFKeys(int fkey, struct KeyModifiers *keymod)
|
|||
case 8:
|
||||
GSmakeSnapshot( g_Conf.Folders.Snapshots.ToAscii().data() );
|
||||
break;
|
||||
|
||||
case 9: //gsdx "on the fly" renderer switching
|
||||
if (!renderswitch)
|
||||
|
||||
case 9: //gsdx "on the fly" renderer switching
|
||||
if (!renderswitch)
|
||||
{
|
||||
StateRecovery::MakeGsOnly();
|
||||
g_EmulationInProgress = false;
|
||||
|
@ -503,7 +503,7 @@ void ProcessFKeys(int fkey, struct KeyModifiers *keymod)
|
|||
StateRecovery::Recover();
|
||||
HostGui::BeginExecution(); //also sets g_EmulationInProgress to true later
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
StateRecovery::MakeGsOnly();
|
||||
g_EmulationInProgress = false;
|
||||
|
@ -519,15 +519,15 @@ void ProcessFKeys(int fkey, struct KeyModifiers *keymod)
|
|||
// I might add turning EE, VU0, and VU1 recs on and off by hotkey at some point, too.
|
||||
// --arcum42
|
||||
enableLogging = !enableLogging;
|
||||
|
||||
|
||||
if (enableLogging)
|
||||
GSprintf(10, "Logging Enabled.");
|
||||
else
|
||||
GSprintf(10,"Logging Disabled.");
|
||||
|
||||
|
||||
break;
|
||||
case 11:
|
||||
if( mtgsThread != NULL )
|
||||
if( mtgsThread != NULL )
|
||||
{
|
||||
Console::Notice( "Cannot make gsstates in MTGS mode" );
|
||||
}
|
||||
|
@ -554,30 +554,30 @@ void ProcessFKeys(int fkey, struct KeyModifiers *keymod)
|
|||
{
|
||||
Text = GetGSStateFilename();
|
||||
}
|
||||
|
||||
|
||||
SaveGSState(Text);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 12:
|
||||
if( keymod->shift )
|
||||
if( keymod->shift )
|
||||
{
|
||||
#ifdef PCSX2_DEVBUILD
|
||||
iDumpRegisters(cpuRegs.pc, 0);
|
||||
Console::Notice("hardware registers dumped EE:%x, IOP:%x\n", params cpuRegs.pc, psxRegs.pc);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
g_Pcsx2Recording ^= 1;
|
||||
|
||||
if( mtgsThread != NULL )
|
||||
|
||||
if( mtgsThread != NULL )
|
||||
mtgsThread->SendSimplePacket(GS_RINGTYPE_RECORD, g_Pcsx2Recording, 0, 0);
|
||||
else if( GSsetupRecording != NULL )
|
||||
else if( GSsetupRecording != NULL )
|
||||
GSsetupRecording(g_Pcsx2Recording, NULL);
|
||||
|
||||
if( SPU2setupRecording != NULL ) SPU2setupRecording(g_Pcsx2Recording, NULL);
|
||||
|
||||
if( SPU2setupRecording != NULL ) SPU2setupRecording(g_Pcsx2Recording, NULL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -5,25 +5,25 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
|
||||
// Externs for various routines that are defined in assembly files on Linux.
|
||||
#ifndef NAKED_ASM_H
|
||||
#define NAKED_ASM_H
|
||||
|
||||
#include "coroutine.h"
|
||||
#include "IPU/coroutine.h"
|
||||
|
||||
// Common to Windows and Linux
|
||||
extern "C"
|
||||
extern "C"
|
||||
{
|
||||
// acoroutine.S
|
||||
void so_call(coroutine_t coro);
|
||||
|
@ -44,18 +44,18 @@ void iopRecRecompile(u32 startpc);
|
|||
PCSX2_ALIGNED16( u8 _xmm_backup[16*2] );
|
||||
PCSX2_ALIGNED16( u8 _mmx_backup[8*4] );
|
||||
|
||||
extern "C"
|
||||
extern "C"
|
||||
{
|
||||
// aVUzerorec.S
|
||||
void* SuperVUGetProgram(u32 startpc, int vuindex);
|
||||
void SuperVUCleanupProgram(u32 startpc, int vuindex);
|
||||
void svudispfn();
|
||||
|
||||
|
||||
// aR3000A.S
|
||||
void iopJITCompile();
|
||||
void iopJITCompileInBlock();
|
||||
void iopDispatcherReg();
|
||||
|
||||
|
||||
// aR5900-32.S
|
||||
void JITCompile();
|
||||
void JITCompileInBlock();
|
||||
|
|
|
@ -7,7 +7,7 @@ bin_PROGRAMS = pcsx2
|
|||
pcsx2_SOURCES = \
|
||||
CheckedStaticBox.cpp ConsoleLogger.cpp MainFrame.cpp wxHelpers.cpp AppConfig.cpp main.cpp \
|
||||
App.h CheckedStaticBox.h MainFrame.h wxHelpers.h \
|
||||
AboutBoxDialog.cpp GameFixesDialog.cpp LogOptionsDialog.cpp \
|
||||
IniInterface.cpp AboutBoxDialog.cpp GameFixesDialog.cpp LogOptionsDialog.cpp \
|
||||
AboutBoxDialog.h GameFixesDialog.h LogOptionsDialog.h
|
||||
|
||||
pcsx2_LDFLAGS =
|
||||
|
@ -18,4 +18,4 @@ pcsx2_DEPENDENCIES += ../DebugTools/libDebugTools.a
|
|||
|
||||
pcsx2_LDADD = ../libpcsx2.a ../IPU/libIPU.a ../IPU/mpeg2lib/libmpeg2IPU.a ../RDebug/libRDebug.a ../tinyxml/libtinyxml.a
|
||||
pcsx2_LDADD += ../x86/libx86recomp.a ../x86/ix86/libix86.a
|
||||
pcsx2_LDADD += ../DebugTools/libDebugTools.a
|
||||
pcsx2_LDADD += ../DebugTools/libDebugTools.a
|
||||
|
|
|
@ -1,9 +1,5 @@
|
|||
#pragma once
|
||||
|
||||
#ifndef _PCSX2_PRECOMPILED_HEADER_
|
||||
#define _PCSX2_PRECOMPILED_HEADER_
|
||||
#endif // pragma once
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Microsoft specific STL extensions for bounds checking and stuff: Enabled in devbuilds,
|
||||
// disabled in release builds. :)
|
||||
|
@ -172,7 +168,7 @@ static __forceinline u32 timeGetTime()
|
|||
#else
|
||||
|
||||
# define DevCon 0&&Console
|
||||
# define DevMsg
|
||||
# define DevMsg
|
||||
static const bool IsDevBuild = false;
|
||||
|
||||
#endif
|
||||
|
|
|
@ -31,7 +31,7 @@ static int Slots[5] = { -1, -1, -1, -1, -1 };
|
|||
|
||||
bool States_isSlotUsed(int num)
|
||||
{
|
||||
if (ElfCRC == 0)
|
||||
if (ElfCRC == 0)
|
||||
return false;
|
||||
else
|
||||
return wxFileExists( SaveState::GetFilename( num ) );
|
||||
|
@ -105,7 +105,7 @@ void States_Load(int num)
|
|||
}
|
||||
catch( Exception::StateLoadError_Recoverable& ex)
|
||||
{
|
||||
Console::Notice( wxsFormat( L"Could not load savestate slot %d.\n\n%s", num, ex.LogMessage() ) );
|
||||
Console::Notice( wxsFormat( L"Could not load savestate slot %d.\n\n%s", num, ex.LogMessage().c_str() ) );
|
||||
|
||||
// At this point the cpu hasn't been reset, so we can return
|
||||
// control to the user safely... (that's why we use a console notice instead of a popup)
|
||||
|
|
|
@ -8,16 +8,16 @@
|
|||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions
|
||||
// are met:
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
//
|
||||
// 1. Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// 2. Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// 3. Neither the name of the project nor the names of its contributors
|
||||
// may be used to endorse or promote products derived from this software
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
|
@ -27,9 +27,9 @@
|
|||
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
// SUCH DAMAGE.
|
||||
//
|
||||
//
|
||||
|
||||
// modified by gigahers and air to write formatted output directly into a std::string container.
|
||||
|
||||
|
@ -84,19 +84,19 @@ static void cvt(char (&buf)[_CVTBUFSIZE], double arg, int preci, int& decpt, int
|
|||
arg = modf(arg, &fi);
|
||||
p1 = &buf[_CVTBUFSIZE];
|
||||
|
||||
if (fi != 0)
|
||||
if (fi != 0)
|
||||
{
|
||||
while (fi != 0)
|
||||
while (fi != 0)
|
||||
{
|
||||
fj = modf(fi / 10, &fi);
|
||||
*--p1 = (int)((fj + .03) * 10) + '0';
|
||||
r2++;
|
||||
}
|
||||
while (p1 < &buf[_CVTBUFSIZE]) *p++ = *p1++;
|
||||
}
|
||||
}
|
||||
else if (arg > 0)
|
||||
{
|
||||
while ((fj = arg * 10) < 1)
|
||||
while ((fj = arg * 10) < 1)
|
||||
{
|
||||
arg = fj;
|
||||
r2--;
|
||||
|
@ -107,7 +107,7 @@ static void cvt(char (&buf)[_CVTBUFSIZE], double arg, int preci, int& decpt, int
|
|||
|
||||
if (eflag == 0) p1 += r2;
|
||||
decpt = r2;
|
||||
if (p1 < &buf[0])
|
||||
if (p1 < &buf[0])
|
||||
{
|
||||
buf[0] = '\0';
|
||||
return;
|
||||
|
@ -118,23 +118,23 @@ static void cvt(char (&buf)[_CVTBUFSIZE], double arg, int preci, int& decpt, int
|
|||
arg = modf(arg, &fj);
|
||||
*p++ = (int) fj + '0';
|
||||
}
|
||||
if (p1 >= &buf[_CVTBUFSIZE])
|
||||
if (p1 >= &buf[_CVTBUFSIZE])
|
||||
{
|
||||
buf[_CVTBUFSIZE - 1] = '\0';
|
||||
return;
|
||||
}
|
||||
p = p1;
|
||||
*p1 += 5;
|
||||
while (*p1 > '9')
|
||||
while (*p1 > '9')
|
||||
{
|
||||
*p1 = '0';
|
||||
if (p1 > buf)
|
||||
++*--p1;
|
||||
else
|
||||
else
|
||||
{
|
||||
*p1 = '1';
|
||||
decpt++;
|
||||
if (eflag == 0)
|
||||
if (eflag == 0)
|
||||
{
|
||||
if (p > buf) *p = '0';
|
||||
p++;
|
||||
|
@ -285,19 +285,19 @@ static void iaddr( std::string& dest, unsigned char *addr, int size, int precisi
|
|||
{
|
||||
if (i != 0) tmp[len++] = '.';
|
||||
n = addr[i];
|
||||
|
||||
|
||||
if (n == 0)
|
||||
tmp[len++] = digits[0];
|
||||
else
|
||||
{
|
||||
if (n >= 100)
|
||||
if (n >= 100)
|
||||
{
|
||||
tmp[len++] = digits[n / 100];
|
||||
n = n % 100;
|
||||
tmp[len++] = digits[n / 10];
|
||||
n = n % 10;
|
||||
}
|
||||
else if (n >= 10)
|
||||
else if (n >= 10)
|
||||
{
|
||||
tmp[len++] = digits[n / 10];
|
||||
n = n % 10;
|
||||
|
@ -434,7 +434,7 @@ static void forcdecpt(char *buffer)
|
|||
if (*buffer)
|
||||
{
|
||||
int n = strlen(buffer);
|
||||
while (n > 0)
|
||||
while (n > 0)
|
||||
{
|
||||
buffer[n + 1] = buffer[n];
|
||||
n--;
|
||||
|
@ -578,7 +578,7 @@ repeat:
|
|||
precision = -1;
|
||||
if (*fmt == '.')
|
||||
{
|
||||
++fmt;
|
||||
++fmt;
|
||||
if (is_digit(*fmt))
|
||||
precision = skip_atoi(&fmt);
|
||||
else if (*fmt == '*')
|
||||
|
@ -748,9 +748,11 @@ repeat:
|
|||
else
|
||||
{
|
||||
s32 num;
|
||||
if (qualifier == 'h')
|
||||
num = va_arg(args, s16);
|
||||
else // 'l' qualifier or no qualifier means 32 bits on all our std target platforms.
|
||||
// Modern 32 bit compilers pass parameters into va_arg by 32 bit scale always,
|
||||
// so no point in using or checking for the 'h' parameter.
|
||||
/*if (qualifier == 'h')
|
||||
num = va_arg(args, int);
|
||||
else*/ // 'l' qualifier or no qualifier means 32 bits on all our std target platforms.
|
||||
num = va_arg(args, s32);
|
||||
|
||||
number(dest, num, base, field_width, precision, flags);
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -69,7 +69,7 @@ vtlbHandler UnmappedPhyHandler1;
|
|||
shr ecx,12;
|
||||
mov ecx,[ecx*4+vmap]; //translate
|
||||
add ecx,eax; //transform
|
||||
|
||||
|
||||
js callfunction; //if <0 its invalid ptr :)
|
||||
|
||||
mov eax,[ecx];
|
||||
|
@ -131,7 +131,7 @@ __forceinline void __fastcall MemOp_r1(u32 addr, DataType* data)
|
|||
data[1]=*reinterpret_cast<DataType*>(ppf+8);
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
//has to: translate, find function, call function
|
||||
u32 hand=(u8)vmv;
|
||||
u32 paddr=ppf-hand+0x80000000;
|
||||
|
@ -158,7 +158,7 @@ __forceinline void __fastcall MemOp_w0(u32 addr, DataType data)
|
|||
*reinterpret_cast<DataType*>(ppf)=data;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
//has to: translate, find function, call function
|
||||
u32 hand=(u8)vmv;
|
||||
u32 paddr=ppf-hand+0x80000000;
|
||||
|
@ -187,7 +187,7 @@ __forceinline void __fastcall MemOp_w1(u32 addr,const DataType* data)
|
|||
*reinterpret_cast<DataType*>(ppf+8)=data[1];
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
//has to: translate, find function, call function
|
||||
u32 hand=(u8)vmv;
|
||||
u32 paddr=ppf-hand+0x80000000;
|
||||
|
@ -246,7 +246,7 @@ void __fastcall vtlb_memWrite128(u32 mem, const mem128_t *value)
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// Error / TLB Miss Handlers
|
||||
//
|
||||
//
|
||||
|
||||
static const char* _getModeStr( u32 mode )
|
||||
{
|
||||
|
@ -330,7 +330,7 @@ void __fastcall vtlbDefaultPhyWrite128(u32 addr,const mem128_t* data) { Console:
|
|||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// VTLB Public API -- Init/Term/RegisterHandler stuff
|
||||
//
|
||||
//
|
||||
|
||||
// Registers a handler into the VTLB's internal handler array. The handler defines specific behavior
|
||||
// for how memory pages bound to the handler are read from / written to. If any of the handler pointers
|
||||
|
@ -345,18 +345,18 @@ vtlbHandler vtlb_RegisterHandler( vtlbMemR8FP* r8,vtlbMemR16FP* r16,vtlbMemR32FP
|
|||
{
|
||||
//write the code :p
|
||||
vtlbHandler rv=vtlbHandlerCount++;
|
||||
|
||||
vtlbdata.RWFT[0][0][rv] = (r8!=0) ? r8:vtlbDefaultPhyRead8;
|
||||
vtlbdata.RWFT[1][0][rv] = (r16!=0) ? r16:vtlbDefaultPhyRead16;
|
||||
vtlbdata.RWFT[2][0][rv] = (r32!=0) ? r32:vtlbDefaultPhyRead32;
|
||||
vtlbdata.RWFT[3][0][rv] = (r64!=0) ? r64:vtlbDefaultPhyRead64;
|
||||
vtlbdata.RWFT[4][0][rv] = (r128!=0) ? r128:vtlbDefaultPhyRead128;
|
||||
|
||||
vtlbdata.RWFT[0][1][rv] = (w8!=0) ? w8:vtlbDefaultPhyWrite8;
|
||||
vtlbdata.RWFT[1][1][rv] = (w16!=0) ? w16:vtlbDefaultPhyWrite16;
|
||||
vtlbdata.RWFT[2][1][rv] = (w32!=0) ? w32:vtlbDefaultPhyWrite32;
|
||||
vtlbdata.RWFT[3][1][rv] = (w64!=0) ? w64:vtlbDefaultPhyWrite64;
|
||||
vtlbdata.RWFT[4][1][rv] = (w128!=0) ? w128:vtlbDefaultPhyWrite128;
|
||||
vtlbdata.RWFT[0][0][rv] = (r8!=0) ? (void*)r8:(void*)vtlbDefaultPhyRead8;
|
||||
vtlbdata.RWFT[1][0][rv] = (r16!=0) ? (void*)r16:(void*)vtlbDefaultPhyRead16;
|
||||
vtlbdata.RWFT[2][0][rv] = (r32!=0) ? (void*)r32:(void*)vtlbDefaultPhyRead32;
|
||||
vtlbdata.RWFT[3][0][rv] = (r64!=0) ? (void*)r64:(void*)vtlbDefaultPhyRead64;
|
||||
vtlbdata.RWFT[4][0][rv] = (r128!=0) ? (void*)r128:(void*)vtlbDefaultPhyRead128;
|
||||
|
||||
vtlbdata.RWFT[0][1][rv] = (void*)((w8!=0) ? w8:vtlbDefaultPhyWrite8);
|
||||
vtlbdata.RWFT[1][1][rv] = (void*)((w16!=0) ? w16:vtlbDefaultPhyWrite16);
|
||||
vtlbdata.RWFT[2][1][rv] = (void*)((w32!=0) ? w32:vtlbDefaultPhyWrite32);
|
||||
vtlbdata.RWFT[3][1][rv] = (void*)((w64!=0) ? w64:vtlbDefaultPhyWrite64);
|
||||
vtlbdata.RWFT[4][1][rv] = (void*)((w128!=0) ? w128:vtlbDefaultPhyWrite128);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
@ -380,7 +380,7 @@ void vtlb_MapHandler(vtlbHandler handler,u32 start,u32 size)
|
|||
|
||||
start+=VTLB_PAGE_SIZE;
|
||||
size-=VTLB_PAGE_SIZE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void vtlb_MapBlock(void* base,u32 start,u32 size,u32 blocksize)
|
||||
|
@ -389,7 +389,7 @@ void vtlb_MapBlock(void* base,u32 start,u32 size,u32 blocksize)
|
|||
|
||||
verify(0==(start&VTLB_PAGE_MASK));
|
||||
verify(0==(size&VTLB_PAGE_MASK) && size>0);
|
||||
if (blocksize==0)
|
||||
if (blocksize==0)
|
||||
blocksize=size;
|
||||
verify(0==(blocksize&VTLB_PAGE_MASK) && blocksize>0);
|
||||
verify(0==(size%blocksize));
|
||||
|
@ -424,7 +424,7 @@ void vtlb_Mirror(u32 new_region,u32 start,u32 size)
|
|||
start+=VTLB_PAGE_SIZE;
|
||||
new_region+=VTLB_PAGE_SIZE;
|
||||
size-=VTLB_PAGE_SIZE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
__forceinline void* vtlb_GetPhyPtr(u32 paddr)
|
||||
|
@ -484,7 +484,7 @@ void vtlb_VMapUnmap(u32 vaddr,u32 sz)
|
|||
{
|
||||
verify(0==(vaddr&VTLB_PAGE_MASK));
|
||||
verify(0==(sz&VTLB_PAGE_MASK) && sz>0);
|
||||
|
||||
|
||||
while(sz>0)
|
||||
{
|
||||
u32 handl=UnmappedVirtHandler0;
|
||||
|
@ -532,8 +532,8 @@ void vtlb_Init()
|
|||
//done !
|
||||
|
||||
//Setup the initial mappings
|
||||
vtlb_MapHandler(DefaultPhyHandler,0,VTLB_PMAP_SZ);
|
||||
|
||||
vtlb_MapHandler(DefaultPhyHandler,0,VTLB_PMAP_SZ);
|
||||
|
||||
//Set the V space as unmapped
|
||||
vtlb_VMapUnmap(0,(VTLB_VMAP_ITEMS-1)*VTLB_PAGE_SIZE);
|
||||
//yeah i know, its stupid .. but this code has to be here for now ;p
|
||||
|
|
|
@ -119,10 +119,8 @@ static void iIopDumpBlock( int startpc, u8 * ptr )
|
|||
Console::WriteLn( "dump1 %x:%x, %x", params startpc, psxpc, psxRegs.cycle );
|
||||
Path::CreateDirectory( L"dumps" );
|
||||
|
||||
AsciiFile f(
|
||||
Path::Combine( g_Conf.Folders.Dumps, wxsFormat( L"psxdump%.8X.txt", startpc ) ),
|
||||
wxFile::write
|
||||
);
|
||||
wxString filename( Path::Combine( g_Conf.Folders.Dumps, wxsFormat( L"psxdump%.8X.txt", startpc ) ) );
|
||||
AsciiFile f( filename, wxFile::write );
|
||||
|
||||
for ( i = startpc; i < s_nEndBlock; i += 4 ) {
|
||||
f.Printf("%s\n", disR3000Fasm( iopMemRead32( i ), i ) );
|
||||
|
@ -155,7 +153,7 @@ static void iIopDumpBlock( int startpc, u8 * ptr )
|
|||
pcur = s_pInstCache+1;
|
||||
for( i = 0; i < (s_nEndBlock-startpc)/4; ++i, ++pcur) {
|
||||
f.Printf("%2d: %2.2x ", i+1, pcur->info);
|
||||
|
||||
|
||||
count = 1;
|
||||
for(j = 0; j < ArraySize(s_pInstCache->regs); j++) {
|
||||
if( used[j] ) {
|
||||
|
@ -168,15 +166,18 @@ static void iIopDumpBlock( int startpc, u8 * ptr )
|
|||
|
||||
#ifdef __LINUX__
|
||||
char command[256];
|
||||
// dump the asm
|
||||
f = fopen( "mydump1", "wb" );
|
||||
fwrite( ptr, 1, (uptr)x86Ptr - (uptr)ptr, f );
|
||||
fclose( f );
|
||||
sprintf( command, "objdump -D --target=binary --architecture=i386 -M intel mydump1 | cat %s - > tempdump", filename );
|
||||
// dump the asm
|
||||
{
|
||||
AsciiFile f2( L"mydump1", wxFile::write );
|
||||
f2.Write( ptr, (uptr)x86Ptr - (uptr)ptr );
|
||||
}
|
||||
wxCharBuffer buf( filename.ToAscii() );
|
||||
const char* filenamea = buf.data();
|
||||
sprintf( command, "objdump -D --target=binary --architecture=i386 -M intel mydump1 | cat %s - > tempdump", filenamea );
|
||||
system( command );
|
||||
sprintf(command, "mv tempdump %s", filename);
|
||||
system(command);
|
||||
f = fopen( filename.c_str(), "a+" );
|
||||
sprintf( command, "mv tempdump %s", filenamea );
|
||||
system( command );
|
||||
//f = fopen( filename.c_str(), "a+" );
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
@ -213,7 +214,7 @@ void _psxFlushAllUnused()
|
|||
continue;
|
||||
|
||||
if( i < 32 && PSX_IS_CONST1(i) ) _psxFlushConstReg(i);
|
||||
else {
|
||||
else {
|
||||
_deleteX86reg(X86TYPE_PSX, i, 1);
|
||||
}
|
||||
}
|
||||
|
@ -258,7 +259,7 @@ void _psxFlushConstRegs()
|
|||
// ignore r0
|
||||
for(i = 1; i < 32; ++i) {
|
||||
if( g_psxHasConstReg & (1<<i) ) {
|
||||
|
||||
|
||||
if( !(g_psxFlushedConstReg&(1<<i)) ) {
|
||||
MOV32ItoM((uptr)&psxRegs.GPR.r[i], g_psxConstRegs[i]);
|
||||
g_psxFlushedConstReg |= 1<<i;
|
||||
|
@ -485,7 +486,7 @@ void psxRecompileCodeConst3(R3000AFNPTR constcode, R3000AFNPTR_INFO constscode,
|
|||
|
||||
static u8* m_recBlockAlloc = NULL;
|
||||
|
||||
static const uint m_recBlockAllocSize =
|
||||
static const uint m_recBlockAllocSize =
|
||||
(((Ps2MemSize::IopRam + Ps2MemSize::Rom + Ps2MemSize::Rom1) / 4) * sizeof(BASEBLOCK));
|
||||
|
||||
static void recAlloc()
|
||||
|
@ -496,7 +497,7 @@ static void recAlloc()
|
|||
|
||||
if( recMem == NULL )
|
||||
recMem = (u8*)SysMmapEx( 0x28000000, RECMEM_SIZE, 0, "recAlloc(R3000a)" );
|
||||
|
||||
|
||||
if( recMem == NULL )
|
||||
throw Exception::OutOfMemory( "R3000a Init > failed to allocate memory for the recompiler." );
|
||||
|
||||
|
@ -542,10 +543,10 @@ void recResetIOP()
|
|||
for (int i = 0; i < 0x10000; i++)
|
||||
recLUT_SetPage(psxRecLUT, 0, 0, 0, i, 0);
|
||||
// IOP knows 64k pages, hence for the 0x10000's
|
||||
|
||||
|
||||
// The bottom 2 bits of PC are always zero, so we <<14 to "compress"
|
||||
// the pc indexer into it's lower common denominator.
|
||||
|
||||
|
||||
// We're only mapping 20 pages here in 4 places.
|
||||
// 0x80 comes from : (Ps2MemSize::IopRam / 0x10000) * 4
|
||||
for (int i=0; i<0x80; i++)
|
||||
|
@ -680,7 +681,7 @@ static __forceinline s32 recExecuteBlock( s32 eeCycles )
|
|||
"push ebp\n"
|
||||
|
||||
"call iopDispatcherReg\n"
|
||||
|
||||
|
||||
"pop ebp\n"
|
||||
"pop edi\n"
|
||||
"pop esi\n"
|
||||
|
@ -717,7 +718,7 @@ static __forceinline u32 psxRecClearMem(u32 pc)
|
|||
lowerextent = min(lowerextent, pexblock->startpc);
|
||||
blockidx--;
|
||||
}
|
||||
|
||||
|
||||
while (pexblock = recBlocks[blockidx]) {
|
||||
if (pexblock->startpc >= upperextent)
|
||||
break;
|
||||
|
@ -756,7 +757,7 @@ void psxSetBranchReg(u32 reg)
|
|||
_psxMoveGPRtoR(ESI, reg);
|
||||
|
||||
psxRecompileNextInstruction(1);
|
||||
|
||||
|
||||
if( x86regs[ESI].inuse ) {
|
||||
assert( x86regs[ESI].type == X86TYPE_PCWRITEBACK );
|
||||
MOV32RtoM((uptr)&psxRegs.pc, ESI);
|
||||
|
@ -767,7 +768,7 @@ void psxSetBranchReg(u32 reg)
|
|||
MOV32RtoM((uptr)&psxRegs.pc, EAX);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
_psxFlushCall(FLUSH_EVERYTHING);
|
||||
iPsxBranchTest(0xffffffff, 1);
|
||||
|
||||
|
@ -972,13 +973,13 @@ void iopRecRecompile(u32 startpc)
|
|||
// if recPtr reached the mem limit reset whole mem
|
||||
if (((uptr)recPtr - (uptr)recMem) >= (RECMEM_SIZE - 0x10000))
|
||||
recResetIOP();
|
||||
|
||||
|
||||
x86SetPtr( recPtr );
|
||||
x86Align(16);
|
||||
recPtr = x86Ptr;
|
||||
|
||||
s_pCurBlock = PSX_GETBLOCK(startpc);
|
||||
|
||||
|
||||
assert(s_pCurBlock->GetFnptr() == (uptr)iopJITCompile
|
||||
|| s_pCurBlock->GetFnptr() == (uptr)iopJITCompileInBlock);
|
||||
|
||||
|
@ -993,7 +994,7 @@ void iopRecRecompile(u32 startpc)
|
|||
s_pCurBlockEx = recBlocks.New(HWADDR(startpc), (uptr)recPtr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
psxbranch = 0;
|
||||
|
||||
s_pCurBlock->SetFnptr( (uptr)x86Ptr );
|
||||
|
@ -1014,7 +1015,7 @@ void iopRecRecompile(u32 startpc)
|
|||
// go until the next branch
|
||||
i = startpc;
|
||||
s_nEndBlock = 0xffffffff;
|
||||
|
||||
|
||||
while(1) {
|
||||
BASEBLOCK* pblock = PSX_GETBLOCK(i);
|
||||
if (i != startpc
|
||||
|
@ -1038,9 +1039,9 @@ void iopRecRecompile(u32 startpc)
|
|||
|
||||
break;
|
||||
case 1: // regimm
|
||||
|
||||
|
||||
if( _Rt_ == 0 || _Rt_ == 1 || _Rt_ == 16 || _Rt_ == 17 ) {
|
||||
|
||||
|
||||
branchTo = _Imm_ * 4 + i + 4;
|
||||
if( branchTo > startpc && branchTo < i ) s_nEndBlock = branchTo;
|
||||
else s_nEndBlock = i+8;
|
||||
|
@ -1056,12 +1057,12 @@ void iopRecRecompile(u32 startpc)
|
|||
goto StartRecomp;
|
||||
|
||||
// branches
|
||||
case 4: case 5: case 6: case 7:
|
||||
case 4: case 5: case 6: case 7:
|
||||
|
||||
branchTo = _Imm_ * 4 + i + 4;
|
||||
if( branchTo > startpc && branchTo < i ) s_nEndBlock = branchTo;
|
||||
else s_nEndBlock = i+8;
|
||||
|
||||
|
||||
goto StartRecomp;
|
||||
}
|
||||
|
||||
|
@ -1104,7 +1105,7 @@ StartRecomp:
|
|||
if( (psxdump & 1) )
|
||||
iIopDumpBlock(startpc, recPtr);
|
||||
#endif
|
||||
|
||||
|
||||
g_pCurInstInfo = s_pInstCache;
|
||||
while (!psxbranch && psxpc < s_nEndBlock) {
|
||||
psxRecompileNextInstruction(0);
|
||||
|
@ -1129,7 +1130,7 @@ StartRecomp:
|
|||
if( psxbranch == 2 ) {
|
||||
_psxFlushCall(FLUSH_EVERYTHING);
|
||||
|
||||
iPsxBranchTest(0xffffffff, 1);
|
||||
iPsxBranchTest(0xffffffff, 1);
|
||||
|
||||
JMP32((uptr)iopDispatcherReg - ( (uptr)x86Ptr + 5 ));
|
||||
}
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -63,12 +63,12 @@ public:
|
|||
// All implementations of Unaligned Movs will, when possible, use aligned movs instead.
|
||||
// This happens when using Mem,Reg or Reg,Mem forms where the address is simple displacement
|
||||
// which can be checked for alignment at runtime.
|
||||
//
|
||||
//
|
||||
template< u8 Prefix, bool isAligned >
|
||||
class SimdImpl_MoveSSE
|
||||
{
|
||||
static const u16 OpcodeA = 0x28; // Aligned [aps] form
|
||||
static const u16 OpcodeU = 0x10; // unaligned [ups] form
|
||||
static const uint OpcodeA = 0x28; // Aligned [aps] form
|
||||
static const uint OpcodeU = 0x10; // unaligned [ups] form
|
||||
|
||||
public:
|
||||
SimdImpl_MoveSSE() {} //GCC.
|
||||
|
@ -78,7 +78,7 @@ public:
|
|||
if( to != from ) xOpWrite0F( Prefix, OpcodeA, to, from );
|
||||
}
|
||||
|
||||
__forceinline void operator()( const xRegisterSSE& to, const void* from ) const
|
||||
__forceinline void operator()( const xRegisterSSE& to, const void* from ) const
|
||||
{
|
||||
xOpWrite0F( Prefix, (isAligned || ((uptr)from & 0x0f) == 0) ? OpcodeA : OpcodeU, to, from );
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ public:
|
|||
if( to != from ) xOpWrite0F( PrefixA, Opcode, to, from );
|
||||
}
|
||||
|
||||
__forceinline void operator()( const xRegisterSSE& to, const void* from ) const
|
||||
__forceinline void operator()( const xRegisterSSE& to, const void* from ) const
|
||||
{
|
||||
xOpWrite0F( (isAligned || ((uptr)from & 0x0f) == 0) ? PrefixA : PrefixU, Opcode, to, from );
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ class SimdImpl_Blend
|
|||
public:
|
||||
// [SSE-4.1] Conditionally copies dword values from src to dest, depending on the
|
||||
// mask bits in the immediate operand (bits [3:0]). Each mask bit corresponds to a
|
||||
// dword element in a 128-bit operand.
|
||||
// dword element in a 128-bit operand.
|
||||
//
|
||||
// If a mask bit is 1, then the corresponding dword in the source operand is copied
|
||||
// to dest, else the dword element in dest is left unchanged.
|
||||
|
@ -177,25 +177,25 @@ public:
|
|||
|
||||
// [SSE-4.1] Conditionally copies quadword values from src to dest, depending on the
|
||||
// mask bits in the immediate operand (bits [1:0]). Each mask bit corresponds to a
|
||||
// quadword element in a 128-bit operand.
|
||||
// quadword element in a 128-bit operand.
|
||||
//
|
||||
// If a mask bit is 1, then the corresponding dword in the source operand is copied
|
||||
// to dest, else the dword element in dest is left unchanged.
|
||||
//
|
||||
SimdImpl_DestRegImmSSE<0x66,0x0d3a> PD;
|
||||
|
||||
|
||||
// [SSE-4.1] Conditionally copies dword values from src to dest, depending on the
|
||||
// mask (bits [3:0]) in XMM0 (yes, the fixed register). Each mask bit corresponds
|
||||
// to a dword element in the 128-bit operand.
|
||||
// to a dword element in the 128-bit operand.
|
||||
//
|
||||
// If a mask bit is 1, then the corresponding dword in the source operand is copied
|
||||
// to dest, else the dword element in dest is left unchanged.
|
||||
//
|
||||
SimdImpl_DestRegSSE<0x66,0x1438> VPS;
|
||||
|
||||
|
||||
// [SSE-4.1] Conditionally copies quadword values from src to dest, depending on the
|
||||
// mask (bits [1:0]) in XMM0 (yes, the fixed register). Each mask bit corresponds
|
||||
// to a quadword element in the 128-bit operand.
|
||||
// to a quadword element in the 128-bit operand.
|
||||
//
|
||||
// If a mask bit is 1, then the corresponding dword in the source operand is copied
|
||||
// to dest, else the dword element in dest is left unchanged.
|
||||
|
@ -223,7 +223,7 @@ public:
|
|||
// [SSE-4.1] Zero/Sign-extend the low byte values in src into qword integers
|
||||
// and store them in dest.
|
||||
SimdImpl_DestRegStrict<0x66,OpcodeBase+0x200,xRegisterSSE,xRegisterSSE,u16> BQ;
|
||||
|
||||
|
||||
// [SSE-4.1] Zero/Sign-extend the low word values in src into dword integers
|
||||
// and store them in dest.
|
||||
SimdImpl_DestRegStrict<0x66,OpcodeBase+0x300,xRegisterSSE,xRegisterSSE,u64> WD;
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -78,7 +78,7 @@ struct microProgram {
|
|||
template<u32 pSize>
|
||||
struct microProgManager {
|
||||
microProgram<pSize> prog[mMaxProg]; // Store MicroPrograms in memory
|
||||
static const int max = mMaxProg - 1;
|
||||
static const int max = mMaxProg - 1;
|
||||
int cur; // Index to Current MicroProgram thats running (-1 = uncached)
|
||||
int total; // Total Number of valid MicroPrograms minus 1
|
||||
int cleared; // Micro Program is Indeterminate so must be searched for (and if no matches are found then recompile a new one)
|
||||
|
@ -93,7 +93,7 @@ struct microVU {
|
|||
static const u32 cacheSize = 0x800000; // VU Cache Size
|
||||
|
||||
microProgManager<0x4000> prog; // Micro Program Data
|
||||
|
||||
|
||||
VURegs* regs; // VU Regs Struct
|
||||
u8* cache; // Dynarec Cache Start (where we will start writing the recompiled code to)
|
||||
u8* startFunct; // Ptr Function to the Start code for recompiled programs
|
||||
|
@ -136,11 +136,7 @@ microVUt(void) mVUcacheProg(microVU* mVU, int progIndex);
|
|||
void* __fastcall mVUexecuteVU0(u32 startPC, u32 cycles);
|
||||
void* __fastcall mVUexecuteVU1(u32 startPC, u32 cycles);
|
||||
|
||||
#ifndef __LINUX__
|
||||
typedef void (__fastcall *mVUrecCall)(u32, u32);
|
||||
#else
|
||||
typedef void (*mVUrecCall)(u32, u32) __attribute__((__fastcall)); // Not sure if this is correct syntax (should be close xD)
|
||||
#endif
|
||||
|
||||
// Include all the *.inl files (Needed because C++ sucks with templates and *.cpp files)
|
||||
#include "microVU_Misc.inl"
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
|
@ -82,12 +82,12 @@ int LoadPatch( const wxString& crc )
|
|||
{
|
||||
//Console::Error("XML Patch Loader: Could not load file '%s'. Error='%s'.", pfile, doc.ErrorDesc() );
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Console::WriteLn("XML Patch Loader: '%s' Found", params pfile);
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
Console::WriteLn("XML Patch Loader: '%s' Found", params pfile.c_str() );
|
||||
}
|
||||
|
||||
TiXmlNode *root = doc.FirstChild("GAME");
|
||||
if(!root)
|
||||
{
|
||||
|
@ -144,12 +144,12 @@ int LoadGroup(TiXmlNode *group,int gParent)
|
|||
}
|
||||
|
||||
string t;
|
||||
|
||||
|
||||
if(gtitle)
|
||||
t.assign(gtitle);
|
||||
else
|
||||
t.clear();
|
||||
|
||||
|
||||
Group gp=Group(gParent,gEnabled,t);
|
||||
groups.push_back(gp);
|
||||
|
||||
|
@ -165,10 +165,10 @@ int LoadGroup(TiXmlNode *group,int gParent)
|
|||
{
|
||||
TiXmlElement *rm=zerogs->ToElement();
|
||||
const char* pid = rm->FirstAttribute()->Value();
|
||||
|
||||
if( pid != NULL )
|
||||
|
||||
if( pid != NULL )
|
||||
sscanf(pid, "%x", &g_ZeroGSOptions);
|
||||
else
|
||||
else
|
||||
Console::WriteLn("zerogs attribute wrong");
|
||||
}
|
||||
|
||||
|
@ -307,7 +307,7 @@ int LoadGroup(TiXmlNode *group,int gParent)
|
|||
patchnumber=0;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if(strcmp(place,"EE")==0)
|
||||
{
|
||||
patch[patchnumber].cpu= CPU_EE;
|
||||
|
@ -355,7 +355,7 @@ int LoadGroup(TiXmlNode *group,int gParent)
|
|||
pt.assign(ptitle);
|
||||
else
|
||||
pt.clear();
|
||||
|
||||
|
||||
Patch p=Patch(patchnumber,gIndex,penabled,pt);
|
||||
patches.push_back(p);
|
||||
|
||||
|
|
Loading…
Reference in New Issue