git-svn-id: https://localhost/svn/Project64/trunk@50 111125ac-702d-7242-af9c-5ba8ae61c1ef

This commit is contained in:
zilmar 2011-01-02 10:40:00 +00:00
parent 9aec7cb4d9
commit d4c874abca
7 changed files with 33 additions and 69 deletions

View File

@ -113,7 +113,7 @@ BOOL CMipsMemoryVM::Initialize ( void )
m_Rom = _Rom->GetRomAddress();
m_RomSize = _Rom->GetRomSize();
}
memset(m_PifRam,0,sizeof(m_PifRam));
CPifRam::Reset();
m_TLB_ReadMap = (DWORD *)VirtualAlloc(NULL,0xFFFFF * sizeof(DWORD),MEM_RESERVE|MEM_COMMIT,PAGE_READWRITE);
if (m_TLB_ReadMap == NULL)
@ -157,7 +157,7 @@ void CMipsMemoryVM::FreeMemory ( void )
VirtualFree( m_TLB_WriteMap, 0 , MEM_RELEASE);
m_TLB_WriteMap = NULL;
}
memset(m_PifRam,0,sizeof(m_PifRam));
CPifRam::Reset();
}
BYTE * CMipsMemoryVM::Rdram ( void )
@ -1603,17 +1603,14 @@ int CMipsMemoryVM::LW_NonMemory ( DWORD PAddr, DWORD * Value ) {
{
if (m_RomWrittenTo)
{
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
*Value = WroteToRom;
*Value = m_RomWroteValue;
//LogMessage("%X: Read crap from Rom %X from %X",PROGRAM_COUNTER,*Value,PAddr);
WrittenToRom = FALSE;
m_RomWrittenTo = FALSE;
#ifdef ROM_IN_MAPSPACE
{
DWORD OldProtect;
VirtualProtect(ROM,RomFileSize,PAGE_READONLY, &OldProtect);
}
#endif
#endif
return TRUE;
}
@ -2571,11 +2568,8 @@ void CMipsMemoryVM::Compile_LW (void)
}
if (bFastSP() && Opcode.rt == 29)
{
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
ResetX86Protection();
_MMU->ResetMemoryStack(m_Section);
#endif
ResetMemoryStack();
}
}
@ -2788,8 +2782,6 @@ void CMipsMemoryVM::Compile_LWR (void)
void CMipsMemoryVM::Compile_LWU (void)
{
OPCODE & Opcode = CRecompilerOps::m_Opcode;
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
x86Reg TempReg1, TempReg2;
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(Opcode.Hex,m_CompilePC));
@ -2799,7 +2791,7 @@ void CMipsMemoryVM::Compile_LWU (void)
if (IsConst(Opcode.base)) {
DWORD Address = (cMipsRegLo(Opcode.base) + (short)Opcode.offset);
Map_GPR_32bit(Opcode.rt,FALSE,0);
Compile_LW(cMipsRegLo(Opcode.rt),Address);
Compile_LW(cMipsRegMapLo(Opcode.rt),Address);
return;
}
if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); }
@ -2807,7 +2799,7 @@ void CMipsMemoryVM::Compile_LWU (void)
ProtectGPR(Opcode.base);
if (Opcode.offset != 0) {
TempReg1 = Map_TempReg(x86_Any,-1,FALSE);
LeaSourceAndOffset(TempReg1,cMipsRegLo(Opcode.base),(short)Opcode.offset);
LeaSourceAndOffset(TempReg1,cMipsRegMapLo(Opcode.base),(short)Opcode.offset);
} else {
TempReg1 = Map_TempReg(x86_Any,Opcode.base,FALSE);
}
@ -2822,13 +2814,12 @@ void CMipsMemoryVM::Compile_LWU (void)
MoveVariableDispToX86Reg(m_TLB_ReadMap,"m_TLB_ReadMap",TempReg2,TempReg2,4);
CompileReadTLBMiss(TempReg1,TempReg2);
Map_GPR_32bit(Opcode.rt,FALSE,-1);
MoveZxHalfX86regPointerToX86reg(TempReg1, TempReg2,cMipsRegLo(Opcode.rt));
MoveZxHalfX86regPointerToX86reg(TempReg1, TempReg2,cMipsRegMapLo(Opcode.rt));
} else {
AndConstToX86Reg(TempReg1,0x1FFFFFFF);
Map_GPR_32bit(Opcode.rt,TRUE,-1);
MoveZxN64MemToX86regHalf(cMipsRegLo(Opcode.rt), TempReg1);
MoveZxN64MemToX86regHalf(cMipsRegMapLo(Opcode.rt), TempReg1);
}
#endif
}
void CMipsMemoryVM::Compile_LD (void)
@ -2845,13 +2836,10 @@ void CMipsMemoryVM::Compile_LD (void)
Map_GPR_64bit(Opcode.rt,-1);
Compile_LW(cMipsRegMapHi(Opcode.rt),Address);
Compile_LW(cMipsRegMapLo(Opcode.rt),Address + 4);
if (Opcode.rt == 29)
if (bFastSP() && Opcode.rt == 29)
{
_Notify->BreakPoint(__FILE__,__LINE__);
ResetMemoryStack();
}
#ifdef tofix
if (bFastSP() && Opcode.rt == 29) { _MMU->ResetMemoryStack(m_Section); }
#endif
return;
}
if (IsMapped(Opcode.rt)) { ProtectGPR(Opcode.rt); }

View File

@ -13,6 +13,7 @@ CPifRamSettings::CPifRamSettings()
{
_Settings->RegisterChangeCB(Debugger_ShowPifErrors,NULL,RefreshSettings);
_Settings->RegisterChangeCB(Game_RDRamSize,NULL,RefreshSettings);
_Settings->RegisterChangeCB(Game_DelaySI,NULL,RefreshSettings);
RefreshSettings(NULL);
}
}
@ -24,6 +25,7 @@ CPifRamSettings::~CPifRamSettings()
{
_Settings->UnregisterChangeCB(Debugger_ShowPifErrors,NULL,RefreshSettings);
_Settings->UnregisterChangeCB(Game_RDRamSize,NULL,RefreshSettings);
_Settings->UnregisterChangeCB(Game_DelaySI,NULL,RefreshSettings);
}
}
@ -31,18 +33,25 @@ void CPifRamSettings::RefreshSettings(void *)
{
m_bShowPifRamErrors = _Settings->LoadBool(Debugger_ShowPifErrors);
m_RdramSize = _Settings->LoadDword(Game_RDRamSize);
m_DelaySI = _Settings->LoadBool(Game_DelaySI);
}
CPifRam::CPifRam( bool SavesReadOnly ) :
CEeprom(SavesReadOnly)
{
memset(m_PifRam,0,sizeof(m_PifRam));
Reset();
}
CPifRam::~CPifRam( void )
{
}
void CPifRam::Reset ( void )
{
memset(m_PifRam,0,sizeof(m_PifRam));
memset(m_PifRom,0,sizeof(m_PifRom));
}
void CPifRam::PifRamRead (void)
{
if (m_PifRam[0x3F] == 0x2)

View File

@ -28,6 +28,8 @@ public:
CPifRam ( bool SavesReadOnly );
~CPifRam ( void );
void Reset ( void );
void PifRamWrite ( void );
void PifRamRead ( void );

View File

@ -1294,10 +1294,7 @@ void CRecompilerOps::ADDI (void) {
}
if (bFastSP() && m_Opcode.rt == 29 && m_Opcode.rs != 29) {
ResetX86Protection();
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
_MMU->ResetMemoryStack(m_Section);
#endif
_MMU->ResetMemoryStack();
}
}
@ -1536,10 +1533,7 @@ void CRecompilerOps::ORI (void) {
if (bFastSP() && m_Opcode.rt == 29 && m_Opcode.rs != 29) {
ResetX86Protection();
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
_MMU->ResetMemoryStack(m_Section);
#endif
_MMU->ResetMemoryStack();
}
}
@ -1929,8 +1923,8 @@ void CRecompilerOps::SPECIAL_JR (void) {
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
if (IsConst(m_Opcode.rs)) {
m_Section->m_Jump.BranchLabel.Format("0x%08X",cMipsRegLo(m_Opcode.rs));
m_Section->m_Jump.JumpPC = m_CompilePC;
m_Section->m_Jump.TargetPC = cMipsRegLo(m_Opcode.rs);
m_Section->m_Jump.JumpPC = m_Section->m_Jump.TargetPC + 4;
m_Section->m_Jump.FallThrough = TRUE;
m_Section->m_Jump.LinkLocation = NULL;
m_Section->m_Jump.LinkLocation2 = NULL;
@ -3807,7 +3801,7 @@ void CRecompilerOps::SPECIAL_DSRA (void) {
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
if (m_Opcode.rd == 0) { return; }
if (b32BitCore()) { _Notify->BreakPoint(__FILE__,__LINE__); }
if (IsConst(m_Opcode.rt)) {
if (IsMapped(m_Opcode.rd)) { UnMap_GPR(m_Opcode.rd, FALSE); }
@ -4480,8 +4474,6 @@ void CRecompilerOps::COP1_S_TRUNC_L (void) {
}
void CRecompilerOps::COP1_S_CEIL_L (void) { //added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4489,12 +4481,9 @@ void CRecompilerOps::COP1_S_CEIL_L (void) { //added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Float);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Float,CRegInfo::FPU_Qword,CRegInfo::RoundUp);
#endif
}
void CRecompilerOps::COP1_S_FLOOR_L (void) { //added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4502,7 +4491,6 @@ void CRecompilerOps::COP1_S_FLOOR_L (void) { //added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Float);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Float,CRegInfo::FPU_Qword,CRegInfo::RoundDown);
#endif
}
void CRecompilerOps::COP1_S_ROUND_W (void)
@ -4528,7 +4516,6 @@ void CRecompilerOps::COP1_S_TRUNC_W (void) {
void CRecompilerOps::COP1_S_CEIL_W (void) { // added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4536,7 +4523,6 @@ void CRecompilerOps::COP1_S_CEIL_W (void) { // added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Float);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Float,CRegInfo::FPU_Dword,CRegInfo::RoundUp);
#endif
}
void CRecompilerOps::COP1_S_FLOOR_W (void) {
@ -4777,8 +4763,6 @@ void CRecompilerOps::COP1_D_MOV (void) {
}
void CRecompilerOps::COP1_D_TRUNC_L (void) { //added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4789,12 +4773,9 @@ void CRecompilerOps::COP1_D_TRUNC_L (void) { //added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Double);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Double,CRegInfo::FPU_Qword,CRegInfo::RoundTruncate);
#endif
}
void CRecompilerOps::COP1_D_CEIL_L (void) { //added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4805,12 +4786,9 @@ void CRecompilerOps::COP1_D_CEIL_L (void) { //added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Double);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Double,CRegInfo::FPU_Qword,CRegInfo::RoundUp);
#endif
}
void CRecompilerOps::COP1_D_FLOOR_L (void) { //added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4821,12 +4799,9 @@ void CRecompilerOps::COP1_D_FLOOR_L (void) { //added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Double);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Double,CRegInfo::FPU_Qword,CRegInfo::RoundDown);
#endif
}
void CRecompilerOps::COP1_D_ROUND_W (void) {
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4837,7 +4812,6 @@ void CRecompilerOps::COP1_D_ROUND_W (void) {
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Double);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Double,CRegInfo::FPU_Dword,CRegInfo::RoundNearest);
#endif
}
void CRecompilerOps::COP1_D_TRUNC_W (void) {
@ -4854,8 +4828,6 @@ void CRecompilerOps::COP1_D_TRUNC_W (void) {
}
void CRecompilerOps::COP1_D_CEIL_W (void) { // added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4866,12 +4838,9 @@ void CRecompilerOps::COP1_D_CEIL_W (void) { // added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Double);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Double,CRegInfo::FPU_Dword,CRegInfo::RoundUp);
#endif
}
void CRecompilerOps::COP1_D_FLOOR_W (void) { //added by Witten
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4882,7 +4851,6 @@ void CRecompilerOps::COP1_D_FLOOR_W (void) { //added by Witten
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Double);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Double,CRegInfo::FPU_Dword,CRegInfo::RoundDown);
#endif
}
void CRecompilerOps::COP1_D_CVT_S (void) {
@ -4912,8 +4880,6 @@ void CRecompilerOps::COP1_D_CVT_W (void) {
}
void CRecompilerOps::COP1_D_CVT_L (void) {
_Notify->BreakPoint(__FILE__,__LINE__);
#ifdef tofix
CPU_Message(" %X %s",m_CompilePC,R4300iOpcodeName(m_Opcode.Hex,m_CompilePC));
m_Section->CompileCop1Test();
@ -4924,7 +4890,6 @@ void CRecompilerOps::COP1_D_CVT_L (void) {
Load_FPR_ToTop(m_Opcode.fd,m_Opcode.fs,CRegInfo::FPU_Double);
}
ChangeFPURegFormat(m_Opcode.fd,CRegInfo::FPU_Double,CRegInfo::FPU_Qword,CRegInfo::RoundDefault);
#endif
}
void CRecompilerOps::COP1_D_CMP (void) {

View File

@ -88,7 +88,7 @@ void CSettings::AddHowToHandleSetting ()
AddHandler(Setting_DisableScrSaver, new CSettingTypeApplication("","Disable Screen Saver",(DWORD)true));
AddHandler(Setting_AutoSleep, new CSettingTypeApplication("","Auto Sleep", (DWORD)true));
AddHandler(Setting_AutoStart, new CSettingTypeApplication("","Auto Start", (DWORD)true));
AddHandler(Setting_AutoFullscreen, new CSettingTypeApplication("","Auto Full Screen", (DWORD)true));
AddHandler(Setting_AutoFullscreen, new CSettingTypeApplication("","Auto Full Screen", (DWORD)false));
AddHandler(Setting_AutoZipInstantSave,new CSettingTypeApplication("","Auto Zip Saves", (DWORD)true));
AddHandler(Setting_EraseGameDefaults, new CSettingTypeApplication("","Erase on default", (DWORD)true));

View File

@ -925,8 +925,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,7,51,49
PRODUCTVERSION 1,7,51,49
FILEVERSION 1,7,51,50
PRODUCTVERSION 1,7,51,50
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -943,12 +943,12 @@ BEGIN
BEGIN
VALUE "CompanyName", " "
VALUE "FileDescription", "Project64"
VALUE "FileVersion", "1, 7, 51, 49"
VALUE "FileVersion", "1, 7, 51, 50"
VALUE "InternalName", "Project64"
VALUE "LegalCopyright", "Copyright © 2010"
VALUE "OriginalFilename", "Project64.exe"
VALUE "ProductName", " Project64"
VALUE "ProductVersion", "1, 7, 51, 49"
VALUE "ProductVersion", "1, 7, 51, 50"
END
END
BLOCK "VarFileInfo"