Global Variable: Rename _Reg to g_Reg

This commit is contained in:
zilmar 2012-11-17 13:18:14 +11:00
parent c219c0ab6a
commit 3a73b759ad
21 changed files with 660 additions and 660 deletions

View File

@ -85,7 +85,7 @@ LRESULT CDumpMemory::OnClicked(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/,
} }
if (SendDlgItemMessage(IDC_USE_ALT_PC,BM_GETSTATE, 0,0) != BST_CHECKED) if (SendDlgItemMessage(IDC_USE_ALT_PC,BM_GETSTATE, 0,0) != BST_CHECKED)
{ {
DumpPC = _Reg->m_PROGRAM_COUNTER; DumpPC = g_Reg->m_PROGRAM_COUNTER;
} }
//disable buttons //disable buttons
::EnableWindow(GetDlgItem(IDC_E_START_ADDR),FALSE); ::EnableWindow(GetDlgItem(IDC_E_START_ADDR),FALSE);

View File

@ -197,10 +197,10 @@ void CInterpreterCPU::InPermLoop (void) {
//if (CPU_Type == CPU_SyncCores) { SyncRegisters.CP0[9] +=5; } //if (CPU_Type == CPU_SyncCores) { SyncRegisters.CP0[9] +=5; }
/* Interrupts enabled */ /* Interrupts enabled */
if (( _Reg->STATUS_REGISTER & STATUS_IE ) == 0 || if (( g_Reg->STATUS_REGISTER & STATUS_IE ) == 0 ||
( _Reg->STATUS_REGISTER & STATUS_EXL ) != 0 || ( g_Reg->STATUS_REGISTER & STATUS_EXL ) != 0 ||
( _Reg->STATUS_REGISTER & STATUS_ERL ) != 0 || ( g_Reg->STATUS_REGISTER & STATUS_ERL ) != 0 ||
( _Reg->STATUS_REGISTER & 0xFF00) == 0) ( g_Reg->STATUS_REGISTER & 0xFF00) == 0)
{ {
if (_Plugins->Gfx()->UpdateScreen != NULL) { _Plugins->Gfx()->UpdateScreen(); } if (_Plugins->Gfx()->UpdateScreen != NULL) { _Plugins->Gfx()->UpdateScreen(); }
//CurrentFrame = 0; //CurrentFrame = 0;
@ -293,7 +293,7 @@ void CInterpreterCPU::ExecuteCPU (void )
g_Notify->BreakPoint(__FILE__,__LINE__); g_Notify->BreakPoint(__FILE__,__LINE__);
} }
} else { } else {
_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP,PROGRAM_COUNTER); g_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP,PROGRAM_COUNTER);
R4300iOp::m_NextInstruction = NORMAL; R4300iOp::m_NextInstruction = NORMAL;
} }
} }
@ -399,7 +399,7 @@ void CInterpreterCPU::ExecuteOps ( int Cycles )
g_Notify->BreakPoint(__FILE__,__LINE__); g_Notify->BreakPoint(__FILE__,__LINE__);
} }
} else { } else {
_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP,PROGRAM_COUNTER); g_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP,PROGRAM_COUNTER);
R4300iOp::m_NextInstruction = NORMAL; R4300iOp::m_NextInstruction = NORMAL;
} }
} }

View File

@ -4,22 +4,22 @@
bool DelaySlotEffectsCompare ( DWORD PC, DWORD Reg1, DWORD Reg2 ); bool DelaySlotEffectsCompare ( DWORD PC, DWORD Reg1, DWORD Reg2 );
#define ADDRESS_ERROR_EXCEPTION(Address,FromRead) \ #define ADDRESS_ERROR_EXCEPTION(Address,FromRead) \
_Reg->DoAddressError(m_NextInstruction == JUMP,Address,FromRead);\ g_Reg->DoAddressError(m_NextInstruction == JUMP,Address,FromRead);\
m_NextInstruction = JUMP;\ m_NextInstruction = JUMP;\
m_JumpToLocation = (*_PROGRAM_COUNTER);\ m_JumpToLocation = (*_PROGRAM_COUNTER);\
return; return;
//#define TEST_COP1_USABLE_EXCEPTION //#define TEST_COP1_USABLE_EXCEPTION
#define TEST_COP1_USABLE_EXCEPTION \ #define TEST_COP1_USABLE_EXCEPTION \
if ((_Reg->STATUS_REGISTER & STATUS_CU1) == 0) {\ if ((g_Reg->STATUS_REGISTER & STATUS_CU1) == 0) {\
_Reg->DoCopUnusableException(m_NextInstruction == JUMP,1);\ g_Reg->DoCopUnusableException(m_NextInstruction == JUMP,1);\
m_NextInstruction = JUMP;\ m_NextInstruction = JUMP;\
m_JumpToLocation = (*_PROGRAM_COUNTER);\ m_JumpToLocation = (*_PROGRAM_COUNTER);\
return;\ return;\
} }
#define TLB_READ_EXCEPTION(Address) \ #define TLB_READ_EXCEPTION(Address) \
_Reg->DoTLBReadMiss(m_NextInstruction == JUMP,Address);\ g_Reg->DoTLBReadMiss(m_NextInstruction == JUMP,Address);\
m_NextInstruction = JUMP;\ m_NextInstruction = JUMP;\
m_JumpToLocation = (*_PROGRAM_COUNTER);\ m_JumpToLocation = (*_PROGRAM_COUNTER);\
return; return;
@ -1199,7 +1199,7 @@ void R4300iOp32::COP0_MT (void) {
_GPR[m_Opcode.rt].UW[0],CRegName::Cop0[m_Opcode.rd], _CP0[m_Opcode.rd]); _GPR[m_Opcode.rt].UW[0],CRegName::Cop0[m_Opcode.rd], _CP0[m_Opcode.rd]);
if (m_Opcode.rd == 11) { //Compare if (m_Opcode.rd == 11) { //Compare
LogMessage("%08X: Cause register changed from %08X to %08X",(*_PROGRAM_COUNTER), LogMessage("%08X: Cause register changed from %08X to %08X",(*_PROGRAM_COUNTER),
_Reg->CAUSE_REGISTER, (_Reg->CAUSE_REGISTER & ~CAUSE_IP7)); g_Reg->CAUSE_REGISTER, (g_Reg->CAUSE_REGISTER & ~CAUSE_IP7));
} }
} }
#endif #endif
@ -1233,13 +1233,13 @@ void R4300iOp32::COP0_MT (void) {
case 11: //Compare case 11: //Compare
_SystemTimer->UpdateTimers(); _SystemTimer->UpdateTimers();
_CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0];
_Reg->FAKE_CAUSE_REGISTER &= ~CAUSE_IP7; g_Reg->FAKE_CAUSE_REGISTER &= ~CAUSE_IP7;
_SystemTimer->UpdateCompareTimer(); _SystemTimer->UpdateCompareTimer();
break; break;
case 12: //Status case 12: //Status
if ((_CP0[m_Opcode.rd] ^ _GPR[m_Opcode.rt].UW[0]) != 0) { if ((_CP0[m_Opcode.rd] ^ _GPR[m_Opcode.rt].UW[0]) != 0) {
_CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0];
_Reg->FixFpuLocations(); g_Reg->FixFpuLocations();
} else { } else {
_CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0];
} }
@ -1248,7 +1248,7 @@ void R4300iOp32::COP0_MT (void) {
g_Notify->DisplayError("Left kernel mode ??"); g_Notify->DisplayError("Left kernel mode ??");
#endif #endif
} }
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
break; break;
case 13: //cause case 13: //cause
_CP0[m_Opcode.rd] &= 0xFFFFCFF; _CP0[m_Opcode.rd] &= 0xFFFFCFF;

View File

@ -57,22 +57,22 @@ const int R4300iOp::LWL_SHIFT[4] = { 0, 8, 16, 24};
const int R4300iOp::LWR_SHIFT[4] = { 24, 16 ,8, 0 }; const int R4300iOp::LWR_SHIFT[4] = { 24, 16 ,8, 0 };
#define ADDRESS_ERROR_EXCEPTION(Address,FromRead) \ #define ADDRESS_ERROR_EXCEPTION(Address,FromRead) \
_Reg->DoAddressError(m_NextInstruction == JUMP,Address,FromRead);\ g_Reg->DoAddressError(m_NextInstruction == JUMP,Address,FromRead);\
m_NextInstruction = JUMP;\ m_NextInstruction = JUMP;\
m_JumpToLocation = (*_PROGRAM_COUNTER);\ m_JumpToLocation = (*_PROGRAM_COUNTER);\
return; return;
//#define TEST_COP1_USABLE_EXCEPTION //#define TEST_COP1_USABLE_EXCEPTION
#define TEST_COP1_USABLE_EXCEPTION \ #define TEST_COP1_USABLE_EXCEPTION \
if ((_Reg->STATUS_REGISTER & STATUS_CU1) == 0) {\ if ((g_Reg->STATUS_REGISTER & STATUS_CU1) == 0) {\
_Reg->DoCopUnusableException(m_NextInstruction == JUMP,1);\ g_Reg->DoCopUnusableException(m_NextInstruction == JUMP,1);\
m_NextInstruction = JUMP;\ m_NextInstruction = JUMP;\
m_JumpToLocation = (*_PROGRAM_COUNTER);\ m_JumpToLocation = (*_PROGRAM_COUNTER);\
return;\ return;\
} }
#define TLB_READ_EXCEPTION(Address) \ #define TLB_READ_EXCEPTION(Address) \
_Reg->DoTLBReadMiss(m_NextInstruction == JUMP,Address);\ g_Reg->DoTLBReadMiss(m_NextInstruction == JUMP,Address);\
m_NextInstruction = JUMP;\ m_NextInstruction = JUMP;\
m_JumpToLocation = (*_PROGRAM_COUNTER);\ m_JumpToLocation = (*_PROGRAM_COUNTER);\
return; return;
@ -1454,13 +1454,13 @@ void R4300iOp::SPECIAL_JALR (void) {
} }
void R4300iOp::SPECIAL_SYSCALL (void) { void R4300iOp::SPECIAL_SYSCALL (void) {
_Reg->DoSysCallException(m_NextInstruction == JUMP); g_Reg->DoSysCallException(m_NextInstruction == JUMP);
m_NextInstruction = JUMP; m_NextInstruction = JUMP;
m_JumpToLocation = (*_PROGRAM_COUNTER); m_JumpToLocation = (*_PROGRAM_COUNTER);
} }
void R4300iOp::SPECIAL_BREAK (void) { void R4300iOp::SPECIAL_BREAK (void) {
_Reg->DoBreakException(m_NextInstruction == JUMP); g_Reg->DoBreakException(m_NextInstruction == JUMP);
m_NextInstruction = JUMP; m_NextInstruction = JUMP;
m_JumpToLocation = (*_PROGRAM_COUNTER); m_JumpToLocation = (*_PROGRAM_COUNTER);
} }
@ -1802,7 +1802,7 @@ void R4300iOp::COP0_MT (void) {
_GPR[m_Opcode.rt].UW[0],CRegName::Cop0[m_Opcode.rd], _CP0[m_Opcode.rd]); _GPR[m_Opcode.rt].UW[0],CRegName::Cop0[m_Opcode.rd], _CP0[m_Opcode.rd]);
if (m_Opcode.rd == 11) { //Compare if (m_Opcode.rd == 11) { //Compare
LogMessage("%08X: Cause register changed from %08X to %08X",(*_PROGRAM_COUNTER), LogMessage("%08X: Cause register changed from %08X to %08X",(*_PROGRAM_COUNTER),
_Reg->CAUSE_REGISTER, (_Reg->CAUSE_REGISTER & ~CAUSE_IP7)); g_Reg->CAUSE_REGISTER, (g_Reg->CAUSE_REGISTER & ~CAUSE_IP7));
} }
} }
#endif #endif
@ -1836,13 +1836,13 @@ void R4300iOp::COP0_MT (void) {
case 11: //Compare case 11: //Compare
_SystemTimer->UpdateTimers(); _SystemTimer->UpdateTimers();
_CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0];
_Reg->FAKE_CAUSE_REGISTER &= ~CAUSE_IP7; g_Reg->FAKE_CAUSE_REGISTER &= ~CAUSE_IP7;
_SystemTimer->UpdateCompareTimer(); _SystemTimer->UpdateCompareTimer();
break; break;
case 12: //Status case 12: //Status
if ((_CP0[m_Opcode.rd] ^ _GPR[m_Opcode.rt].UW[0]) != 0) { if ((_CP0[m_Opcode.rd] ^ _GPR[m_Opcode.rt].UW[0]) != 0) {
_CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0];
_Reg->FixFpuLocations(); g_Reg->FixFpuLocations();
} else { } else {
_CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0]; _CP0[m_Opcode.rd] = _GPR[m_Opcode.rt].UW[0];
} }
@ -1851,7 +1851,7 @@ void R4300iOp::COP0_MT (void) {
g_Notify->DisplayError("Left kernel mode ??"); g_Notify->DisplayError("Left kernel mode ??");
#endif #endif
} }
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
break; break;
case 13: //cause case 13: //cause
_CP0[m_Opcode.rd] &= 0xFFFFCFF; _CP0[m_Opcode.rd] &= 0xFFFFCFF;
@ -1872,12 +1872,12 @@ void R4300iOp::COP0_CO_TLBR (void) {
void R4300iOp::COP0_CO_TLBWI (void) { void R4300iOp::COP0_CO_TLBWI (void) {
if (!bUseTlb()) { return; } if (!bUseTlb()) { return; }
g_TLB->WriteEntry(_Reg->INDEX_REGISTER & 0x1F,FALSE); g_TLB->WriteEntry(g_Reg->INDEX_REGISTER & 0x1F,FALSE);
} }
void R4300iOp::COP0_CO_TLBWR (void) { void R4300iOp::COP0_CO_TLBWR (void) {
if (!bUseTlb()) { return; } if (!bUseTlb()) { return; }
g_TLB->WriteEntry(_Reg->RANDOM_REGISTER & 0x1F,true); g_TLB->WriteEntry(g_Reg->RANDOM_REGISTER & 0x1F,true);
} }
void R4300iOp::COP0_CO_TLBP (void) { void R4300iOp::COP0_CO_TLBP (void) {
@ -1887,15 +1887,15 @@ void R4300iOp::COP0_CO_TLBP (void) {
void R4300iOp::COP0_CO_ERET (void) { void R4300iOp::COP0_CO_ERET (void) {
m_NextInstruction = JUMP; m_NextInstruction = JUMP;
if ((_Reg->STATUS_REGISTER & STATUS_ERL) != 0) { if ((g_Reg->STATUS_REGISTER & STATUS_ERL) != 0) {
m_JumpToLocation = _Reg->ERROREPC_REGISTER; m_JumpToLocation = g_Reg->ERROREPC_REGISTER;
_Reg->STATUS_REGISTER &= ~STATUS_ERL; g_Reg->STATUS_REGISTER &= ~STATUS_ERL;
} else { } else {
m_JumpToLocation = _Reg->EPC_REGISTER; m_JumpToLocation = g_Reg->EPC_REGISTER;
_Reg->STATUS_REGISTER &= ~STATUS_EXL; g_Reg->STATUS_REGISTER &= ~STATUS_EXL;
} }
(*_LLBit) = 0; (*_LLBit) = 0;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
m_TestTimer = TRUE; m_TestTimer = TRUE;
} }

View File

@ -38,12 +38,12 @@ DWORD CAudio::GetStatus ( void )
void CAudio::LenChanged ( void ) void CAudio::LenChanged ( void )
{ {
WriteTraceF(TraceAudio,__FUNCTION__ ": Start (_Reg->AI_LEN_REG = %d)",_Reg->AI_LEN_REG); WriteTraceF(TraceAudio,__FUNCTION__ ": Start (g_Reg->AI_LEN_REG = %d)",g_Reg->AI_LEN_REG);
if (_Reg->AI_LEN_REG != 0) if (g_Reg->AI_LEN_REG != 0)
{ {
if (_Reg->AI_LEN_REG >= 0x20000) if (g_Reg->AI_LEN_REG >= 0x20000)
{ {
WriteTraceF(TraceAudio,__FUNCTION__ ": *** Ignoring Write, To Large (%X)",_Reg->AI_LEN_REG); WriteTraceF(TraceAudio,__FUNCTION__ ": *** Ignoring Write, To Large (%X)",g_Reg->AI_LEN_REG);
} else { } else {
m_Status |= 0x80000000; m_Status |= 0x80000000;
if (_SystemTimer->GetTimer(CSystemTimer::AiTimer) == 0) if (_SystemTimer->GetTimer(CSystemTimer::AiTimer) == 0)
@ -52,11 +52,11 @@ void CAudio::LenChanged ( void )
{ {
g_Notify->BreakPoint(__FILE__,__LINE__); g_Notify->BreakPoint(__FILE__,__LINE__);
} }
WriteTraceF(TraceAudio,__FUNCTION__ ": Set Timer AI_LEN_REG: %d m_CountsPerByte: %d",_Reg->AI_LEN_REG,m_CountsPerByte); WriteTraceF(TraceAudio,__FUNCTION__ ": Set Timer AI_LEN_REG: %d m_CountsPerByte: %d",g_Reg->AI_LEN_REG,m_CountsPerByte);
_SystemTimer->SetTimer(CSystemTimer::AiTimer,_Reg->AI_LEN_REG * m_CountsPerByte,false); _SystemTimer->SetTimer(CSystemTimer::AiTimer,g_Reg->AI_LEN_REG * m_CountsPerByte,false);
} else { } else {
WriteTraceF(TraceAudio,__FUNCTION__ ": Increasing Second Buffer (m_SecondBuff %d Increase: %d)",m_SecondBuff,_Reg->AI_LEN_REG); WriteTraceF(TraceAudio,__FUNCTION__ ": Increasing Second Buffer (m_SecondBuff %d Increase: %d)",m_SecondBuff,g_Reg->AI_LEN_REG);
m_SecondBuff += _Reg->AI_LEN_REG; m_SecondBuff += g_Reg->AI_LEN_REG;
} }
} }
} else { } else {
@ -81,8 +81,8 @@ void CAudio::TimerDone ( void )
_SystemTimer->SetTimer(CSystemTimer::AiTimer,m_SecondBuff * m_CountsPerByte,false); _SystemTimer->SetTimer(CSystemTimer::AiTimer,m_SecondBuff * m_CountsPerByte,false);
m_SecondBuff = 0; m_SecondBuff = 0;
} else { } else {
_Reg->MI_INTR_REG |= MI_INTR_AI; g_Reg->MI_INTR_REG |= MI_INTR_AI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
m_Status &= 0x7FFFFFFF; m_Status &= 0x7FFFFFFF;
} }
WriteTraceF(TraceAudio,__FUNCTION__ ": Done",m_SecondBuff); WriteTraceF(TraceAudio,__FUNCTION__ ": Done",m_SecondBuff);
@ -102,7 +102,7 @@ void CAudio::SetViIntr ( DWORD /*VI_INTR_TIME*/ )
void CAudio::SetFrequency (DWORD Dacrate, DWORD System) void CAudio::SetFrequency (DWORD Dacrate, DWORD System)
{ {
WriteTraceF(TraceAudio,__FUNCTION__ "(Dacrate: %X System: %d): AI_BITRATE_REG = %X",Dacrate,System,_Reg->AI_BITRATE_REG); WriteTraceF(TraceAudio,__FUNCTION__ "(Dacrate: %X System: %d): AI_BITRATE_REG = %X",Dacrate,System,g_Reg->AI_BITRATE_REG);
DWORD Frequency; DWORD Frequency;
switch (System) { switch (System) {

View File

@ -20,97 +20,97 @@ void CDMA::OnFirstDMA (void) {
void CDMA::PI_DMA_READ (void) { void CDMA::PI_DMA_READ (void) {
// PI_STATUS_REG |= PI_STATUS_DMA_BUSY; // PI_STATUS_REG |= PI_STATUS_DMA_BUSY;
if ( _Reg->PI_DRAM_ADDR_REG + _Reg->PI_RD_LEN_REG + 1 > g_MMU->RdramSize()) { if ( g_Reg->PI_DRAM_ADDR_REG + g_Reg->PI_RD_LEN_REG + 1 > g_MMU->RdramSize()) {
#ifndef EXTERNAL_RELEASE #ifndef EXTERNAL_RELEASE
g_Notify->DisplayError("PI_DMA_READ not in Memory"); g_Notify->DisplayError("PI_DMA_READ not in Memory");
#endif #endif
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
return; return;
} }
if ( _Reg->PI_CART_ADDR_REG >= 0x08000000 && _Reg->PI_CART_ADDR_REG <= 0x08010000) { if ( g_Reg->PI_CART_ADDR_REG >= 0x08000000 && g_Reg->PI_CART_ADDR_REG <= 0x08010000) {
if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_Sram; } if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_Sram; }
if (g_System->m_SaveUsing == SaveChip_Sram) { if (g_System->m_SaveUsing == SaveChip_Sram) {
m_Sram.DmaToSram( m_Sram.DmaToSram(
g_MMU->Rdram() + _Reg->PI_DRAM_ADDR_REG, g_MMU->Rdram() + g_Reg->PI_DRAM_ADDR_REG,
_Reg->PI_CART_ADDR_REG - 0x08000000, g_Reg->PI_CART_ADDR_REG - 0x08000000,
_Reg->PI_RD_LEN_REG + 1 g_Reg->PI_RD_LEN_REG + 1
); );
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
return; return;
} }
if (g_System->m_SaveUsing == SaveChip_FlashRam) { if (g_System->m_SaveUsing == SaveChip_FlashRam) {
m_FlashRam.DmaToFlashram( m_FlashRam.DmaToFlashram(
g_MMU->Rdram()+_Reg->PI_DRAM_ADDR_REG, g_MMU->Rdram()+g_Reg->PI_DRAM_ADDR_REG,
_Reg->PI_CART_ADDR_REG - 0x08000000, g_Reg->PI_CART_ADDR_REG - 0x08000000,
_Reg->PI_WR_LEN_REG + 1 g_Reg->PI_WR_LEN_REG + 1
); );
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
return; return;
} }
} }
if (g_System->m_SaveUsing == SaveChip_FlashRam) if (g_System->m_SaveUsing == SaveChip_FlashRam)
{ {
g_Notify->DisplayError("**** FLashRam DMA Read address %X *****",_Reg->PI_CART_ADDR_REG); g_Notify->DisplayError("**** FLashRam DMA Read address %X *****",g_Reg->PI_CART_ADDR_REG);
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
return; return;
} }
#ifndef EXTERNAL_RELEASE #ifndef EXTERNAL_RELEASE
g_Notify->DisplayError("PI_DMA_READ where are you dmaing to ?"); g_Notify->DisplayError("PI_DMA_READ where are you dmaing to ?");
#endif #endif
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
return; return;
} }
void CDMA::PI_DMA_WRITE (void) { void CDMA::PI_DMA_WRITE (void) {
_Reg->PI_STATUS_REG |= PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG |= PI_STATUS_DMA_BUSY;
if ( _Reg->PI_DRAM_ADDR_REG + _Reg->PI_WR_LEN_REG + 1 > g_MMU->RdramSize()) if ( g_Reg->PI_DRAM_ADDR_REG + g_Reg->PI_WR_LEN_REG + 1 > g_MMU->RdramSize())
{ {
if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError("PI_DMA_WRITE not in Memory"); } if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError("PI_DMA_WRITE not in Memory"); }
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
return; return;
} }
if ( _Reg->PI_CART_ADDR_REG >= 0x08000000 && _Reg->PI_CART_ADDR_REG <= 0x08010000) { if ( g_Reg->PI_CART_ADDR_REG >= 0x08000000 && g_Reg->PI_CART_ADDR_REG <= 0x08010000) {
if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_Sram; } if (g_System->m_SaveUsing == SaveChip_Auto) { g_System->m_SaveUsing = SaveChip_Sram; }
if (g_System->m_SaveUsing == SaveChip_Sram) { if (g_System->m_SaveUsing == SaveChip_Sram) {
m_Sram.DmaFromSram( m_Sram.DmaFromSram(
g_MMU->Rdram()+_Reg->PI_DRAM_ADDR_REG, g_MMU->Rdram()+g_Reg->PI_DRAM_ADDR_REG,
_Reg->PI_CART_ADDR_REG - 0x08000000, g_Reg->PI_CART_ADDR_REG - 0x08000000,
_Reg->PI_WR_LEN_REG + 1 g_Reg->PI_WR_LEN_REG + 1
); );
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
return; return;
} }
if (g_System->m_SaveUsing == SaveChip_FlashRam) { if (g_System->m_SaveUsing == SaveChip_FlashRam) {
m_FlashRam.DmaFromFlashram( m_FlashRam.DmaFromFlashram(
g_MMU->Rdram()+_Reg->PI_DRAM_ADDR_REG, g_MMU->Rdram()+g_Reg->PI_DRAM_ADDR_REG,
_Reg->PI_CART_ADDR_REG - 0x08000000, g_Reg->PI_CART_ADDR_REG - 0x08000000,
_Reg->PI_WR_LEN_REG + 1 g_Reg->PI_WR_LEN_REG + 1
); );
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
} }
return; return;
} }
if ( _Reg->PI_CART_ADDR_REG >= 0x10000000 && _Reg->PI_CART_ADDR_REG <= 0x1FBFFFFF) if ( g_Reg->PI_CART_ADDR_REG >= 0x10000000 && g_Reg->PI_CART_ADDR_REG <= 0x1FBFFFFF)
{ {
DWORD i; DWORD i;
#ifdef tofix #ifdef tofix
@ -123,22 +123,22 @@ void CDMA::PI_DMA_WRITE (void) {
#endif #endif
BYTE * ROM = _Rom->GetRomAddress(); BYTE * ROM = _Rom->GetRomAddress();
BYTE * RDRAM = g_MMU->Rdram(); BYTE * RDRAM = g_MMU->Rdram();
_Reg->PI_CART_ADDR_REG -= 0x10000000; g_Reg->PI_CART_ADDR_REG -= 0x10000000;
if (_Reg->PI_CART_ADDR_REG + _Reg->PI_WR_LEN_REG + 1 < _Rom->GetRomSize()) { if (g_Reg->PI_CART_ADDR_REG + g_Reg->PI_WR_LEN_REG + 1 < _Rom->GetRomSize()) {
for (i = 0; i < _Reg->PI_WR_LEN_REG + 1; i ++) { for (i = 0; i < g_Reg->PI_WR_LEN_REG + 1; i ++) {
*(RDRAM+((_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = *(ROM+((_Reg->PI_CART_ADDR_REG + i) ^ 3)); *(RDRAM+((g_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = *(ROM+((g_Reg->PI_CART_ADDR_REG + i) ^ 3));
} }
} else { } else {
DWORD Len; DWORD Len;
Len = _Rom->GetRomSize() - _Reg->PI_CART_ADDR_REG; Len = _Rom->GetRomSize() - g_Reg->PI_CART_ADDR_REG;
for (i = 0; i < Len; i ++) { for (i = 0; i < Len; i ++) {
*(RDRAM+((_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = *(ROM+((_Reg->PI_CART_ADDR_REG + i) ^ 3)); *(RDRAM+((g_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = *(ROM+((g_Reg->PI_CART_ADDR_REG + i) ^ 3));
} }
for (i = Len; i < _Reg->PI_WR_LEN_REG + 1 - Len; i ++) { for (i = Len; i < g_Reg->PI_WR_LEN_REG + 1 - Len; i ++) {
*(RDRAM+((_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = 0; *(RDRAM+((g_Reg->PI_DRAM_ADDR_REG + i) ^ 3)) = 0;
} }
} }
_Reg->PI_CART_ADDR_REG += 0x10000000; g_Reg->PI_CART_ADDR_REG += 0x10000000;
if (!g_System->DmaUsed()) if (!g_System->DmaUsed())
{ {
@ -147,76 +147,76 @@ void CDMA::PI_DMA_WRITE (void) {
} }
if (g_Recompiler && g_Recompiler->bSMM_PIDMA()) if (g_Recompiler && g_Recompiler->bSMM_PIDMA())
{ {
g_Recompiler->ClearRecompCode_Phys(_Reg->PI_DRAM_ADDR_REG, _Reg->PI_WR_LEN_REG,CRecompiler::Remove_DMA); g_Recompiler->ClearRecompCode_Phys(g_Reg->PI_DRAM_ADDR_REG, g_Reg->PI_WR_LEN_REG,CRecompiler::Remove_DMA);
} }
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
//ChangeTimer(PiTimer,(int)(PI_WR_LEN_REG * 8.9) + 50); //ChangeTimer(PiTimer,(int)(PI_WR_LEN_REG * 8.9) + 50);
//ChangeTimer(PiTimer,(int)(PI_WR_LEN_REG * 8.9)); //ChangeTimer(PiTimer,(int)(PI_WR_LEN_REG * 8.9));
return; return;
} }
if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError("PI_DMA_WRITE not in ROM"); } if (g_Settings->LoadBool(Debugger_ShowUnhandledMemory)) { g_Notify->DisplayError("PI_DMA_WRITE not in ROM"); }
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
} }
void CDMA::SP_DMA_READ (void) { void CDMA::SP_DMA_READ (void) {
_Reg->SP_DRAM_ADDR_REG &= 0x1FFFFFFF; g_Reg->SP_DRAM_ADDR_REG &= 0x1FFFFFFF;
if (_Reg->SP_DRAM_ADDR_REG > g_MMU->RdramSize()) { if (g_Reg->SP_DRAM_ADDR_REG > g_MMU->RdramSize()) {
#ifndef EXTERNAL_RELEASE #ifndef EXTERNAL_RELEASE
g_Notify->DisplayError("SP DMA\nSP_DRAM_ADDR_REG not in RDRam space"); g_Notify->DisplayError("SP DMA\nSP_DRAM_ADDR_REG not in RDRam space");
#endif #endif
_Reg->SP_DMA_BUSY_REG = 0; g_Reg->SP_DMA_BUSY_REG = 0;
_Reg->SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY; g_Reg->SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY;
return; return;
} }
if (_Reg->SP_RD_LEN_REG + 1 + (_Reg->SP_MEM_ADDR_REG & 0xFFF) > 0x1000) { if (g_Reg->SP_RD_LEN_REG + 1 + (g_Reg->SP_MEM_ADDR_REG & 0xFFF) > 0x1000) {
#ifndef EXTERNAL_RELEASE #ifndef EXTERNAL_RELEASE
g_Notify->DisplayError("SP DMA\ncould not fit copy in memory segement"); g_Notify->DisplayError("SP DMA\ncould not fit copy in memory segement");
#endif #endif
return; return;
} }
if ((_Reg->SP_MEM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } if ((g_Reg->SP_MEM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); }
if ((_Reg->SP_DRAM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } if ((g_Reg->SP_DRAM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); }
if (((_Reg->SP_RD_LEN_REG + 1) & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } if (((g_Reg->SP_RD_LEN_REG + 1) & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); }
memcpy( g_MMU->Dmem() + (_Reg->SP_MEM_ADDR_REG & 0x1FFF), g_MMU->Rdram() + _Reg->SP_DRAM_ADDR_REG, memcpy( g_MMU->Dmem() + (g_Reg->SP_MEM_ADDR_REG & 0x1FFF), g_MMU->Rdram() + g_Reg->SP_DRAM_ADDR_REG,
_Reg->SP_RD_LEN_REG + 1 ); g_Reg->SP_RD_LEN_REG + 1 );
_Reg->SP_DMA_BUSY_REG = 0; g_Reg->SP_DMA_BUSY_REG = 0;
_Reg->SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY; g_Reg->SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY;
} }
void CDMA::SP_DMA_WRITE (void) { void CDMA::SP_DMA_WRITE (void) {
if (_Reg->SP_DRAM_ADDR_REG > g_MMU->RdramSize()) { if (g_Reg->SP_DRAM_ADDR_REG > g_MMU->RdramSize()) {
#ifndef EXTERNAL_RELEASE #ifndef EXTERNAL_RELEASE
g_Notify->DisplayError("SP DMA WRITE\nSP_DRAM_ADDR_REG not in RDRam space"); g_Notify->DisplayError("SP DMA WRITE\nSP_DRAM_ADDR_REG not in RDRam space");
#endif #endif
return; return;
} }
if (_Reg->SP_WR_LEN_REG + 1 + (_Reg->SP_MEM_ADDR_REG & 0xFFF) > 0x1000) { if (g_Reg->SP_WR_LEN_REG + 1 + (g_Reg->SP_MEM_ADDR_REG & 0xFFF) > 0x1000) {
#ifndef EXTERNAL_RELEASE #ifndef EXTERNAL_RELEASE
g_Notify->DisplayError("SP DMA WRITE\ncould not fit copy in memory segement"); g_Notify->DisplayError("SP DMA WRITE\ncould not fit copy in memory segement");
#endif #endif
return; return;
} }
if ((_Reg->SP_MEM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } if ((g_Reg->SP_MEM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); }
if ((_Reg->SP_DRAM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } if ((g_Reg->SP_DRAM_ADDR_REG & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); }
if (((_Reg->SP_WR_LEN_REG + 1) & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); } if (((g_Reg->SP_WR_LEN_REG + 1) & 3) != 0) { g_Notify->BreakPoint(__FILE__,__LINE__); }
memcpy( g_MMU->Rdram() + _Reg->SP_DRAM_ADDR_REG, g_MMU->Dmem() + (_Reg->SP_MEM_ADDR_REG & 0x1FFF), memcpy( g_MMU->Rdram() + g_Reg->SP_DRAM_ADDR_REG, g_MMU->Dmem() + (g_Reg->SP_MEM_ADDR_REG & 0x1FFF),
_Reg->SP_WR_LEN_REG + 1); g_Reg->SP_WR_LEN_REG + 1);
_Reg->SP_DMA_BUSY_REG = 0; g_Reg->SP_DMA_BUSY_REG = 0;
_Reg->SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY; g_Reg->SP_STATUS_REG &= ~SP_STATUS_DMA_BUSY;
} }

File diff suppressed because it is too large Load Diff

View File

@ -144,9 +144,9 @@ void CPifRam::PifRamWrite (void) {
break; break;
case 0x08: case 0x08:
m_PifRam[0x3F] = 0; m_PifRam[0x3F] = 0;
_Reg->MI_INTR_REG |= MI_INTR_SI; g_Reg->MI_INTR_REG |= MI_INTR_SI;
_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT; g_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
break; break;
case 0x10: case 0x10:
memset(m_PifRom,0,0x7C0); memset(m_PifRom,0,0x7C0);
@ -206,7 +206,7 @@ void CPifRam::SI_DMA_READ (void)
BYTE * PifRamPos = m_PifRam; BYTE * PifRamPos = m_PifRam;
BYTE * RDRAM = g_MMU->Rdram(); BYTE * RDRAM = g_MMU->Rdram();
DWORD & SI_DRAM_ADDR_REG = _Reg->SI_DRAM_ADDR_REG; DWORD & SI_DRAM_ADDR_REG = g_Reg->SI_DRAM_ADDR_REG;
if ((int)SI_DRAM_ADDR_REG > (int)RdramSize()) if ((int)SI_DRAM_ADDR_REG > (int)RdramSize())
{ {
if (bShowPifRamErrors()) if (bShowPifRamErrors())
@ -288,9 +288,9 @@ void CPifRam::SI_DMA_READ (void)
if (bDelaySI()) { if (bDelaySI()) {
_SystemTimer->SetTimer(CSystemTimer::SiTimer,0x900,false); _SystemTimer->SetTimer(CSystemTimer::SiTimer,0x900,false);
} else { } else {
_Reg->MI_INTR_REG |= MI_INTR_SI; g_Reg->MI_INTR_REG |= MI_INTR_SI;
_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT; g_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
} }
} }
@ -298,7 +298,7 @@ void CPifRam::SI_DMA_WRITE (void)
{ {
BYTE * PifRamPos = m_PifRam; BYTE * PifRamPos = m_PifRam;
DWORD & SI_DRAM_ADDR_REG = _Reg->SI_DRAM_ADDR_REG; DWORD & SI_DRAM_ADDR_REG = g_Reg->SI_DRAM_ADDR_REG;
if ((int)SI_DRAM_ADDR_REG > (int)RdramSize()) if ((int)SI_DRAM_ADDR_REG > (int)RdramSize())
{ {
if (bShowPifRamErrors()) if (bShowPifRamErrors())
@ -384,9 +384,9 @@ void CPifRam::SI_DMA_WRITE (void)
if (bDelaySI()) { if (bDelaySI()) {
_SystemTimer->SetTimer(CSystemTimer::SiTimer,0x900,false); _SystemTimer->SetTimer(CSystemTimer::SiTimer,0x900,false);
} else { } else {
_Reg->MI_INTR_REG |= MI_INTR_SI; g_Reg->MI_INTR_REG |= MI_INTR_SI;
_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT; g_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
} }
} }

View File

@ -47,8 +47,8 @@ void CSystemEvents::ExecuteEvents ( void )
case SysEvent_ResetCPU_Soft: case SysEvent_ResetCPU_Soft:
_SystemTimer->SetTimer(CSystemTimer::SoftResetTimer,0x3000000,false); _SystemTimer->SetTimer(CSystemTimer::SoftResetTimer,0x3000000,false);
_Plugins->Gfx()->ShowCFB(); _Plugins->Gfx()->ShowCFB();
_Reg->FAKE_CAUSE_REGISTER |= CAUSE_IP4; g_Reg->FAKE_CAUSE_REGISTER |= CAUSE_IP4;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
_Plugins->Gfx()->SoftReset(); _Plugins->Gfx()->SoftReset();
break; break;
case SysEvent_ResetCPU_SoftDone: case SysEvent_ResetCPU_SoftDone:
@ -65,31 +65,31 @@ void CSystemEvents::ExecuteEvents ( void )
g_System->m_Profile.ResetCounters(); g_System->m_Profile.ResetCounters();
break; break;
case SysEvent_ExecuteInterrupt: case SysEvent_ExecuteInterrupt:
_Reg->DoIntrException(false); g_Reg->DoIntrException(false);
break; break;
case SysEvent_Interrupt_SP: case SysEvent_Interrupt_SP:
_Reg->MI_INTR_REG |= MI_INTR_SP; g_Reg->MI_INTR_REG |= MI_INTR_SP;
_Reg->DoIntrException(false); g_Reg->DoIntrException(false);
break; break;
case SysEvent_Interrupt_SI: case SysEvent_Interrupt_SI:
_Reg->MI_INTR_REG |= MI_INTR_SI; g_Reg->MI_INTR_REG |= MI_INTR_SI;
_Reg->DoIntrException(false); g_Reg->DoIntrException(false);
break; break;
case SysEvent_Interrupt_AI: case SysEvent_Interrupt_AI:
_Reg->MI_INTR_REG |= MI_INTR_AI; g_Reg->MI_INTR_REG |= MI_INTR_AI;
_Reg->DoIntrException(false); g_Reg->DoIntrException(false);
break; break;
case SysEvent_Interrupt_VI: case SysEvent_Interrupt_VI:
_Reg->MI_INTR_REG |= MI_INTR_VI; g_Reg->MI_INTR_REG |= MI_INTR_VI;
_Reg->DoIntrException(false); g_Reg->DoIntrException(false);
break; break;
case SysEvent_Interrupt_PI: case SysEvent_Interrupt_PI:
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->DoIntrException(false); g_Reg->DoIntrException(false);
break; break;
case SysEvent_Interrupt_DP: case SysEvent_Interrupt_DP:
_Reg->MI_INTR_REG |= MI_INTR_DP; g_Reg->MI_INTR_REG |= MI_INTR_DP;
_Reg->DoIntrException(false); g_Reg->DoIntrException(false);
break; break;
case SysEvent_SaveMachineState: case SysEvent_SaveMachineState:
if (!g_System->SaveState()) if (!g_System->SaveState())

View File

@ -144,11 +144,11 @@ void CSystemTimer::UpdateTimers ( void )
if (TimeTaken != 0) if (TimeTaken != 0)
{ {
m_LastUpdate = m_NextTimer; m_LastUpdate = m_NextTimer;
_Reg->COUNT_REGISTER += TimeTaken; g_Reg->COUNT_REGISTER += TimeTaken;
_Reg->RANDOM_REGISTER -= TimeTaken / CountPerOp(); g_Reg->RANDOM_REGISTER -= TimeTaken / CountPerOp();
while ((int)_Reg->RANDOM_REGISTER < (int)_Reg->WIRED_REGISTER) while ((int)g_Reg->RANDOM_REGISTER < (int)g_Reg->WIRED_REGISTER)
{ {
_Reg->RANDOM_REGISTER += 32 - _Reg->WIRED_REGISTER; g_Reg->RANDOM_REGISTER += 32 - g_Reg->WIRED_REGISTER;
} }
} }
} }
@ -169,8 +169,8 @@ void CSystemTimer::TimerDone (void)
*/ */
switch (m_Current) { switch (m_Current) {
case CSystemTimer::CompareTimer: case CSystemTimer::CompareTimer:
_Reg->FAKE_CAUSE_REGISTER |= CAUSE_IP7; g_Reg->FAKE_CAUSE_REGISTER |= CAUSE_IP7;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
UpdateCompareTimer(); UpdateCompareTimer();
break; break;
case CSystemTimer::SoftResetTimer: case CSystemTimer::SoftResetTimer:
@ -179,15 +179,15 @@ void CSystemTimer::TimerDone (void)
break; break;
case CSystemTimer::SiTimer: case CSystemTimer::SiTimer:
_SystemTimer->StopTimer(CSystemTimer::SiTimer); _SystemTimer->StopTimer(CSystemTimer::SiTimer);
_Reg->MI_INTR_REG |= MI_INTR_SI; g_Reg->MI_INTR_REG |= MI_INTR_SI;
_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT; g_Reg->SI_STATUS_REG |= SI_STATUS_INTERRUPT;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
break; break;
case CSystemTimer::PiTimer: case CSystemTimer::PiTimer:
_SystemTimer->StopTimer(CSystemTimer::PiTimer); _SystemTimer->StopTimer(CSystemTimer::PiTimer);
_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY; g_Reg->PI_STATUS_REG &= ~PI_STATUS_DMA_BUSY;
_Reg->MI_INTR_REG |= MI_INTR_PI; g_Reg->MI_INTR_REG |= MI_INTR_PI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
break; break;
case CSystemTimer::ViTimer: case CSystemTimer::ViTimer:
try try
@ -198,8 +198,8 @@ void CSystemTimer::TimerDone (void)
{ {
WriteTraceF(TraceError,"Exception caught in Refresh Screen\nFile: %s\nLine: %d",__FILE__,__LINE__); WriteTraceF(TraceError,"Exception caught in Refresh Screen\nFile: %s\nLine: %d",__FILE__,__LINE__);
} }
_Reg->MI_INTR_REG |= MI_INTR_VI; g_Reg->MI_INTR_REG |= MI_INTR_VI;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
break; break;
case CSystemTimer::RspTimer: case CSystemTimer::RspTimer:
_SystemTimer->StopTimer(CSystemTimer::RspTimer); _SystemTimer->StopTimer(CSystemTimer::RspTimer);
@ -211,8 +211,8 @@ void CSystemTimer::TimerDone (void)
break; break;
case CSystemTimer::RSPTimerDlist: case CSystemTimer::RSPTimerDlist:
_SystemTimer->StopTimer(CSystemTimer::RSPTimerDlist); _SystemTimer->StopTimer(CSystemTimer::RSPTimerDlist);
_Reg->m_GfxIntrReg |= MI_INTR_DP; g_Reg->m_GfxIntrReg |= MI_INTR_DP;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
break; break;
case CSystemTimer::AiTimer: case CSystemTimer::AiTimer:
_SystemTimer->StopTimer(CSystemTimer::AiTimer); _SystemTimer->StopTimer(CSystemTimer::AiTimer);
@ -230,9 +230,9 @@ void CSystemTimer::TimerDone (void)
void CSystemTimer::SetCompareTimer ( void ) void CSystemTimer::SetCompareTimer ( void )
{ {
DWORD NextCompare = 0x7FFFFFFF; DWORD NextCompare = 0x7FFFFFFF;
if (_Reg) if (g_Reg)
{ {
NextCompare = _Reg->COMPARE_REGISTER - _Reg->COUNT_REGISTER; NextCompare = g_Reg->COMPARE_REGISTER - g_Reg->COUNT_REGISTER;
if ((NextCompare & 0x80000000) != 0) if ((NextCompare & 0x80000000) != 0)
{ {
NextCompare = 0x7FFFFFFF; NextCompare = 0x7FFFFFFF;

View File

@ -60,7 +60,7 @@ void CTLB::Probe (void) {
int Counter; int Counter;
WriteTrace(TraceTLB,"TLB Probe"); WriteTrace(TraceTLB,"TLB Probe");
_Reg->INDEX_REGISTER |= 0x80000000; g_Reg->INDEX_REGISTER |= 0x80000000;
for (Counter = 0; Counter < 32; Counter ++) for (Counter = 0; Counter < 32; Counter ++)
{ {
if (!m_tlb[Counter].EntryDefined) if (!m_tlb[Counter].EntryDefined)
@ -71,13 +71,13 @@ void CTLB::Probe (void) {
DWORD & TlbEntryHiValue = m_tlb[Counter].EntryHi.Value; DWORD & TlbEntryHiValue = m_tlb[Counter].EntryHi.Value;
DWORD Mask = ~m_tlb[Counter].PageMask.Mask << 13; DWORD Mask = ~m_tlb[Counter].PageMask.Mask << 13;
DWORD TlbValueMasked = TlbEntryHiValue & Mask; DWORD TlbValueMasked = TlbEntryHiValue & Mask;
DWORD EntryHiMasked = _Reg->ENTRYHI_REGISTER & Mask; DWORD EntryHiMasked = g_Reg->ENTRYHI_REGISTER & Mask;
if (TlbValueMasked == EntryHiMasked) { if (TlbValueMasked == EntryHiMasked) {
if ((TlbEntryHiValue & 0x100) != 0 || //Global if ((TlbEntryHiValue & 0x100) != 0 || //Global
((TlbEntryHiValue & 0xFF) == (_Reg->ENTRYHI_REGISTER & 0xFF))) //SameAsid ((TlbEntryHiValue & 0xFF) == (g_Reg->ENTRYHI_REGISTER & 0xFF))) //SameAsid
{ {
_Reg->INDEX_REGISTER = Counter; g_Reg->INDEX_REGISTER = Counter;
int FastIndx = Counter << 1; int FastIndx = Counter << 1;
m_FastTlb[FastIndx].Probed = true; m_FastTlb[FastIndx].Probed = true;
m_FastTlb[FastIndx + 1].Probed = true; m_FastTlb[FastIndx + 1].Probed = true;
@ -88,18 +88,18 @@ void CTLB::Probe (void) {
} }
void CTLB::ReadEntry (void) { void CTLB::ReadEntry (void) {
DWORD index = _Reg->INDEX_REGISTER & 0x1F; DWORD index = g_Reg->INDEX_REGISTER & 0x1F;
_Reg->PAGE_MASK_REGISTER = m_tlb[index].PageMask.Value ; g_Reg->PAGE_MASK_REGISTER = m_tlb[index].PageMask.Value ;
_Reg->ENTRYHI_REGISTER = (m_tlb[index].EntryHi.Value & ~m_tlb[index].PageMask.Value) ; g_Reg->ENTRYHI_REGISTER = (m_tlb[index].EntryHi.Value & ~m_tlb[index].PageMask.Value) ;
_Reg->ENTRYLO0_REGISTER = m_tlb[index].EntryLo0.Value; g_Reg->ENTRYLO0_REGISTER = m_tlb[index].EntryLo0.Value;
_Reg->ENTRYLO1_REGISTER = m_tlb[index].EntryLo1.Value; g_Reg->ENTRYLO1_REGISTER = m_tlb[index].EntryLo1.Value;
} }
void CTLB::WriteEntry (int index, bool Random) { void CTLB::WriteEntry (int index, bool Random) {
int FastIndx; int FastIndx;
WriteTraceF(TraceTLB,"Write Entry %02d %d %08X %08X %08X %08X ",index,Random,_Reg->PAGE_MASK_REGISTER,_Reg->ENTRYHI_REGISTER,_Reg->ENTRYLO0_REGISTER,_Reg->ENTRYLO1_REGISTER); WriteTraceF(TraceTLB,"Write Entry %02d %d %08X %08X %08X %08X ",index,Random,g_Reg->PAGE_MASK_REGISTER,g_Reg->ENTRYHI_REGISTER,g_Reg->ENTRYLO0_REGISTER,g_Reg->ENTRYLO1_REGISTER);
//Check to see if entry is unmapping it self //Check to see if entry is unmapping it self
if (m_tlb[index].EntryDefined) { if (m_tlb[index].EntryDefined) {
@ -126,13 +126,13 @@ void CTLB::WriteEntry (int index, bool Random) {
for ( FastIndx = index << 1; FastIndx <= (index << 1) + 1; FastIndx++) { for ( FastIndx = index << 1; FastIndx <= (index << 1) + 1; FastIndx++) {
if (!m_FastTlb[FastIndx].ValidEntry) { continue; } if (!m_FastTlb[FastIndx].ValidEntry) { continue; }
if (!m_FastTlb[FastIndx].VALID) { continue; } if (!m_FastTlb[FastIndx].VALID) { continue; }
if (m_tlb[index].PageMask.Value == _Reg->PAGE_MASK_REGISTER && if (m_tlb[index].PageMask.Value == g_Reg->PAGE_MASK_REGISTER &&
m_tlb[index].EntryHi.Value == _Reg->ENTRYHI_REGISTER) m_tlb[index].EntryHi.Value == g_Reg->ENTRYHI_REGISTER)
{ {
if (FastIndx == (index << 1) && m_tlb[index].EntryLo0.Value == _Reg->ENTRYLO0_REGISTER) { if (FastIndx == (index << 1) && m_tlb[index].EntryLo0.Value == g_Reg->ENTRYLO0_REGISTER) {
continue; continue;
} }
if (FastIndx != (index << 1) && m_tlb[index].EntryLo1.Value == _Reg->ENTRYLO1_REGISTER) { if (FastIndx != (index << 1) && m_tlb[index].EntryLo1.Value == g_Reg->ENTRYLO1_REGISTER) {
continue; continue;
} }
} }
@ -141,10 +141,10 @@ void CTLB::WriteEntry (int index, bool Random) {
} }
//fill in m_tlb entry //fill in m_tlb entry
m_tlb[index].PageMask.Value = _Reg->PAGE_MASK_REGISTER; m_tlb[index].PageMask.Value = g_Reg->PAGE_MASK_REGISTER;
m_tlb[index].EntryHi.Value = _Reg->ENTRYHI_REGISTER; m_tlb[index].EntryHi.Value = g_Reg->ENTRYHI_REGISTER;
m_tlb[index].EntryLo0.Value = _Reg->ENTRYLO0_REGISTER; m_tlb[index].EntryLo0.Value = g_Reg->ENTRYLO0_REGISTER;
m_tlb[index].EntryLo1.Value = _Reg->ENTRYLO1_REGISTER; m_tlb[index].EntryLo1.Value = g_Reg->ENTRYLO1_REGISTER;
m_tlb[index].EntryDefined = true; m_tlb[index].EntryDefined = true;
SetupTLB_Entry(index,Random); SetupTLB_Entry(index,Random);
m_CB->TLB_Changed(); m_CB->TLB_Changed();

View File

@ -529,7 +529,7 @@ bool CN64System::SetActiveSystem( bool bActive )
g_Recompiler = m_Recomp; g_Recompiler = m_Recomp;
g_MMU = &m_MMU_VM; g_MMU = &m_MMU_VM;
g_TLB = &m_TLB; g_TLB = &m_TLB;
_Reg = &m_Reg; g_Reg = &m_Reg;
_Audio = &m_Audio; _Audio = &m_Audio;
//_Labels = NULL; //??? //_Labels = NULL; //???
_SystemTimer = &m_SystemTimer; _SystemTimer = &m_SystemTimer;
@ -561,7 +561,7 @@ bool CN64System::SetActiveSystem( bool bActive )
g_Recompiler = NULL; g_Recompiler = NULL;
g_MMU = NULL; g_MMU = NULL;
g_TLB = NULL; g_TLB = NULL;
_Reg = NULL; g_Reg = NULL;
_Audio = NULL; _Audio = NULL;
_Labels = NULL; _Labels = NULL;
_SystemTimer = NULL; _SystemTimer = NULL;
@ -1205,7 +1205,7 @@ bool CN64System::SaveState(void)
DWORD dwWritten, SaveID_0 = 0x23D8A6C8, SaveID_1 = 0x56D2CD23; DWORD dwWritten, SaveID_0 = 0x23D8A6C8, SaveID_1 = 0x56D2CD23;
DWORD RdramSize = g_Settings->LoadDword(Game_RDRamSize); DWORD RdramSize = g_Settings->LoadDword(Game_RDRamSize);
DWORD MiInterReg = _Reg->MI_INTR_REG; DWORD MiInterReg = g_Reg->MI_INTR_REG;
DWORD NextViTimer = m_SystemTimer.GetTimer(CSystemTimer::ViTimer); DWORD NextViTimer = m_SystemTimer.GetTimer(CSystemTimer::ViTimer);
if (g_Settings->LoadDword(Setting_AutoZipInstantSave)) { if (g_Settings->LoadDword(Setting_AutoZipInstantSave)) {
zipFile file; zipFile file;
@ -1597,7 +1597,7 @@ void CN64System::RunRSP ( void ) {
_SystemTimer->SetTimer(CSystemTimer::RspTimer,0x200,false); _SystemTimer->SetTimer(CSystemTimer::RspTimer,0x200,false);
} }
WriteTrace(TraceRSP, "RunRSP: check interrupts"); WriteTrace(TraceRSP, "RunRSP: check interrupts");
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
} }
} }
} }

View File

@ -125,7 +125,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg
if (TargetPC != (DWORD)-1) if (TargetPC != (DWORD)-1)
{ {
MoveConstToVariable(TargetPC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(TargetPC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
UpdateCounters(ExitRegSet,TargetPC <= JumpPC && JumpPC != -1, reason == CExitInfo::Normal); UpdateCounters(ExitRegSet,TargetPC <= JumpPC && JumpPC != -1, reason == CExitInfo::Normal);
} else { } else {
UpdateCounters(ExitRegSet,false,reason == CExitInfo::Normal); UpdateCounters(ExitRegSet,false,reason == CExitInfo::Normal);
@ -255,7 +255,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg
{ {
bool bDelay = m_NextInstruction == JUMP || m_NextInstruction == DELAY_SLOT; bool bDelay = m_NextInstruction == JUMP || m_NextInstruction == DELAY_SLOT;
PushImm32(bDelay ? "true" : "false", bDelay); PushImm32(bDelay ? "true" : "false", bDelay);
MoveConstToX86reg((DWORD)_Reg,x86_ECX); MoveConstToX86reg((DWORD)g_Reg,x86_ECX);
Call_Direct(AddressOf(&CRegisters::DoSysCallException), "CRegisters::DoSysCallException"); Call_Direct(AddressOf(&CRegisters::DoSysCallException), "CRegisters::DoSysCallException");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
@ -269,7 +269,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg
bool bDelay = m_NextInstruction == JUMP || m_NextInstruction == DELAY_SLOT; bool bDelay = m_NextInstruction == JUMP || m_NextInstruction == DELAY_SLOT;
PushImm32("1",1); PushImm32("1",1);
PushImm32(bDelay ? "true" : "false", bDelay); PushImm32(bDelay ? "true" : "false", bDelay);
MoveConstToX86reg((DWORD)_Reg,x86_ECX); MoveConstToX86reg((DWORD)g_Reg,x86_ECX);
Call_Direct(AddressOf(&CRegisters::DoCopUnusableException), "CRegisters::DoCopUnusableException"); Call_Direct(AddressOf(&CRegisters::DoCopUnusableException), "CRegisters::DoCopUnusableException");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
@ -298,7 +298,7 @@ void CCodeSection::CompileExit ( DWORD JumpPC, DWORD TargetPC, CRegInfo &ExitReg
MoveVariableToX86reg(_TLBLoadAddress,"_TLBLoadAddress",x86_EDX); MoveVariableToX86reg(_TLBLoadAddress,"_TLBLoadAddress",x86_EDX);
Push(x86_EDX); Push(x86_EDX);
PushImm32(m_NextInstruction == JUMP || m_NextInstruction == DELAY_SLOT); PushImm32(m_NextInstruction == JUMP || m_NextInstruction == DELAY_SLOT);
MoveConstToX86reg((DWORD)_Reg,x86_ECX); MoveConstToX86reg((DWORD)g_Reg,x86_ECX);
Call_Direct(AddressOf(&CRegisters::DoTLBReadMiss),"CRegisters::DoTLBReadMiss"); Call_Direct(AddressOf(&CRegisters::DoTLBReadMiss),"CRegisters::DoTLBReadMiss");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
@ -844,7 +844,7 @@ void CCodeSection::SetContinueAddress (DWORD JumpPC, DWORD TargetPC)
void CCodeSection::CompileCop1Test (void) { void CCodeSection::CompileCop1Test (void) {
if (m_RegWorkingSet.FpuBeenUsed()) { return; } if (m_RegWorkingSet.FpuBeenUsed()) { return; }
TestVariable(STATUS_CU1,&_Reg->STATUS_REGISTER,"STATUS_REGISTER"); TestVariable(STATUS_CU1,&g_Reg->STATUS_REGISTER,"STATUS_REGISTER");
CompileExit(m_CompilePC,m_CompilePC,m_RegWorkingSet,CExitInfo::COP1_Unuseable,FALSE,JeLabel32); CompileExit(m_CompilePC,m_CompilePC,m_RegWorkingSet,CExitInfo::COP1_Unuseable,FALSE,JeLabel32);
m_RegWorkingSet.FpuBeenUsed() = TRUE; m_RegWorkingSet.FpuBeenUsed() = TRUE;
} }
@ -936,7 +936,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test )
{ {
m_RegWorkingSet.WriteBackRegisters(); m_RegWorkingSet.WriteBackRegisters();
UpdateCounters(m_RegWorkingSet,false,true); UpdateCounters(m_RegWorkingSet,false,true);
MoveConstToVariable(m_CompilePC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(m_CompilePC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem"); Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem");
@ -949,7 +949,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test )
{ {
m_RegWorkingSet.WriteBackRegisters(); m_RegWorkingSet.WriteBackRegisters();
UpdateCounters(m_RegWorkingSet,false,true); UpdateCounters(m_RegWorkingSet,false,true);
MoveConstToVariable(m_CompilePC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(m_CompilePC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem"); Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem");
@ -966,7 +966,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test )
/*if (m_CompilePC >= 0x801C1AF8 && m_CompilePC <= 0x801C1C00 && m_NextInstruction == NORMAL) /*if (m_CompilePC >= 0x801C1AF8 && m_CompilePC <= 0x801C1C00 && m_NextInstruction == NORMAL)
{ {
UpdateCounters(m_RegWorkingSet,false,true); UpdateCounters(m_RegWorkingSet,false,true);
MoveConstToVariable(m_CompilePC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(m_CompilePC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
if (g_SyncSystem) { if (g_SyncSystem) {
BeforeCallDirect(m_RegWorkingSet); BeforeCallDirect(m_RegWorkingSet);
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
@ -984,7 +984,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test )
{ {
m_RegWorkingSet.WriteBackRegisters(); m_RegWorkingSet.WriteBackRegisters();
UpdateCounters(m_RegWorkingSet,false,true); UpdateCounters(m_RegWorkingSet,false,true);
MoveConstToVariable(m_CompilePC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(m_CompilePC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem"); Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem");
@ -999,7 +999,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test )
{ {
m_RegWorkingSet.WriteBackRegisters(); m_RegWorkingSet.WriteBackRegisters();
UpdateCounters(m_RegWorkingSet,false,true); UpdateCounters(m_RegWorkingSet,false,true);
MoveConstToVariable(m_CompilePC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(m_CompilePC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem"); Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem");
@ -1009,7 +1009,7 @@ bool CCodeSection::GenerateX86Code ( DWORD Test )
{ {
m_RegWorkingSet.WriteBackRegisters(); m_RegWorkingSet.WriteBackRegisters();
UpdateCounters(m_RegWorkingSet,false,true); UpdateCounters(m_RegWorkingSet,false,true);
MoveConstToVariable(m_CompilePC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(m_CompilePC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem"); Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem");

View File

@ -2,7 +2,7 @@
CRecompiler::CRecompiler(CProfiling & Profile, bool & EndEmulation ) : CRecompiler::CRecompiler(CProfiling & Profile, bool & EndEmulation ) :
m_Profile(Profile), m_Profile(Profile),
PROGRAM_COUNTER(_Reg->m_PROGRAM_COUNTER), PROGRAM_COUNTER(g_Reg->m_PROGRAM_COUNTER),
m_EndEmulation(EndEmulation) m_EndEmulation(EndEmulation)
{ {
ResetMemoryStackPos(); ResetMemoryStackPos();
@ -85,7 +85,7 @@ void CRecompiler::RecompilerMain_VirtualTable ( void )
{ {
if (!_TransVaddr->ValidVaddr(PC)) if (!_TransVaddr->ValidVaddr(PC))
{ {
_Reg->DoTLBReadMiss(false,PC); g_Reg->DoTLBReadMiss(false,PC);
if (!_TransVaddr->ValidVaddr(PC)) if (!_TransVaddr->ValidVaddr(PC))
{ {
g_Notify->DisplayError("Failed to translate PC to a PAddr: %X\n\nEmulation stopped",PC); g_Notify->DisplayError("Failed to translate PC to a PAddr: %X\n\nEmulation stopped",PC);
@ -504,7 +504,7 @@ void CRecompiler::RecompilerMain_Lookup_TLB( void )
{ {
if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr)) if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr))
{ {
_Reg->DoTLBReadMiss(false,PROGRAM_COUNTER); g_Reg->DoTLBReadMiss(false,PROGRAM_COUNTER);
if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr)) if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr))
{ {
g_Notify->DisplayError("Failed to translate PC to a PAddr: %X\n\nEmulation stopped",PROGRAM_COUNTER); g_Notify->DisplayError("Failed to translate PC to a PAddr: %X\n\nEmulation stopped",PROGRAM_COUNTER);
@ -604,7 +604,7 @@ void CRecompiler::RecompilerMain_Lookup_validate_TLB( void )
{ {
if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr)) if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr))
{ {
_Reg->DoTLBReadMiss(false,PROGRAM_COUNTER); g_Reg->DoTLBReadMiss(false,PROGRAM_COUNTER);
if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr)) if (!_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, PhysicalAddr))
{ {
g_Notify->DisplayError("Failed to translate PC to a PAddr: %X\n\nEmulation stopped",PROGRAM_COUNTER); g_Notify->DisplayError("Failed to translate PC to a PAddr: %X\n\nEmulation stopped",PROGRAM_COUNTER);
@ -974,18 +974,18 @@ void CRecompiler::ClearRecompCode_Virt(DWORD Address, int length,REMOVE_REASON R
void CRecompiler::ResetMemoryStackPos( void ) void CRecompiler::ResetMemoryStackPos( void )
{ {
if (_Reg->m_GPR[29].UW[0] == 0) if (g_Reg->m_GPR[29].UW[0] == 0)
{ {
m_MemoryStack = NULL; m_MemoryStack = NULL;
return; return;
} }
if (g_MMU == NULL || _Reg == NULL) if (g_MMU == NULL || g_Reg == NULL)
{ {
g_Notify->BreakPoint(__FILE__,__LINE__); g_Notify->BreakPoint(__FILE__,__LINE__);
} }
if (_Reg->m_GPR[29].UW[0] < 0x80000000 || _Reg->m_GPR[29].UW[0] >= 0xC0000000) if (g_Reg->m_GPR[29].UW[0] < 0x80000000 || g_Reg->m_GPR[29].UW[0] >= 0xC0000000)
{ {
g_Notify->BreakPoint(__FILE__,__LINE__); g_Notify->BreakPoint(__FILE__,__LINE__);
} }
m_MemoryStack = (DWORD)(g_MMU->Rdram() + (_Reg->m_GPR[29].UW[0] & 0x1FFFFFFF)); m_MemoryStack = (DWORD)(g_MMU->Rdram() + (g_Reg->m_GPR[29].UW[0] & 0x1FFFFFFF));
} }

View File

@ -4053,7 +4053,7 @@ void CRecompilerOps::COP0_MT (void) {
} else { } else {
MoveX86regToVariable(Map_TempReg(x86_Any,m_Opcode.rt,FALSE), &_CP0[m_Opcode.rd], CRegName::Cop0[m_Opcode.rd]); MoveX86regToVariable(Map_TempReg(x86_Any,m_Opcode.rt,FALSE), &_CP0[m_Opcode.rd], CRegName::Cop0[m_Opcode.rd]);
} }
AndConstToVariable((DWORD)~CAUSE_IP7,&_Reg->FAKE_CAUSE_REGISTER,"FAKE_CAUSE_REGISTER"); AndConstToVariable((DWORD)~CAUSE_IP7,&g_Reg->FAKE_CAUSE_REGISTER,"FAKE_CAUSE_REGISTER");
BeforeCallDirect(m_RegWorkingSet); BeforeCallDirect(m_RegWorkingSet);
MoveConstToX86reg((DWORD)_SystemTimer,x86_ECX); MoveConstToX86reg((DWORD)_SystemTimer,x86_ECX);
Call_Direct(AddressOf(&CSystemTimer::UpdateCompareTimer), "CSystemTimer::UpdateCompareTimer"); Call_Direct(AddressOf(&CSystemTimer::UpdateCompareTimer), "CSystemTimer::UpdateCompareTimer");
@ -4095,7 +4095,7 @@ void CRecompilerOps::COP0_MT (void) {
JeLabel8("FpuFlagFine",0); JeLabel8("FpuFlagFine",0);
Jump = m_RecompPos - 1; Jump = m_RecompPos - 1;
BeforeCallDirect(m_RegWorkingSet); BeforeCallDirect(m_RegWorkingSet);
MoveConstToX86reg((DWORD)_Reg,x86_ECX); MoveConstToX86reg((DWORD)g_Reg,x86_ECX);
Call_Direct(AddressOf(&CRegisters::FixFpuLocations),"CRegisters::FixFpuLocations"); Call_Direct(AddressOf(&CRegisters::FixFpuLocations),"CRegisters::FixFpuLocations");
AfterCallDirect(m_RegWorkingSet); AfterCallDirect(m_RegWorkingSet);
@ -4104,7 +4104,7 @@ void CRecompilerOps::COP0_MT (void) {
//TestConstToX86Reg(STATUS_FR,OldStatusReg); //TestConstToX86Reg(STATUS_FR,OldStatusReg);
//BreakPoint(__FILE__,__LINE__); //m_Section->CompileExit(m_CompilePC+4,m_RegWorkingSet,ExitResetRecompCode,FALSE,JneLabel32); //BreakPoint(__FILE__,__LINE__); //m_Section->CompileExit(m_CompilePC+4,m_RegWorkingSet,ExitResetRecompCode,FALSE,JneLabel32);
BeforeCallDirect(m_RegWorkingSet); BeforeCallDirect(m_RegWorkingSet);
MoveConstToX86reg((DWORD)_Reg,x86_ECX); MoveConstToX86reg((DWORD)g_Reg,x86_ECX);
Call_Direct(AddressOf(&CRegisters::CheckInterrupts),"CRegisters::CheckInterrupts"); Call_Direct(AddressOf(&CRegisters::CheckInterrupts),"CRegisters::CheckInterrupts");
AfterCallDirect(m_RegWorkingSet); AfterCallDirect(m_RegWorkingSet);
} }
@ -4135,7 +4135,7 @@ void CRecompilerOps::COP0_MT (void) {
#endif #endif
} }
BeforeCallDirect(m_RegWorkingSet); BeforeCallDirect(m_RegWorkingSet);
MoveConstToX86reg((DWORD)_Reg,x86_ECX); MoveConstToX86reg((DWORD)g_Reg,x86_ECX);
Call_Direct(AddressOf(&CRegisters::CheckInterrupts),"CRegisters::CheckInterrupts"); Call_Direct(AddressOf(&CRegisters::CheckInterrupts),"CRegisters::CheckInterrupts");
AfterCallDirect(m_RegWorkingSet); AfterCallDirect(m_RegWorkingSet);
break; break;
@ -4162,7 +4162,7 @@ void CRecompilerOps::COP0_CO_TLBWI( void) {
if (!bUseTlb()) { return; } if (!bUseTlb()) { return; }
BeforeCallDirect(m_RegWorkingSet); BeforeCallDirect(m_RegWorkingSet);
PushImm32("FALSE",FALSE); PushImm32("FALSE",FALSE);
MoveVariableToX86reg(&_Reg->INDEX_REGISTER,"INDEX_REGISTER",x86_ECX); MoveVariableToX86reg(&g_Reg->INDEX_REGISTER,"INDEX_REGISTER",x86_ECX);
AndConstToX86Reg(x86_ECX,0x1F); AndConstToX86Reg(x86_ECX,0x1F);
Push(x86_ECX); Push(x86_ECX);
MoveConstToX86reg((DWORD)g_TLB,x86_ECX); MoveConstToX86reg((DWORD)g_TLB,x86_ECX);
@ -4182,7 +4182,7 @@ void CRecompilerOps::COP0_CO_TLBWR( void) {
Call_Direct(AddressOf(&CSystemTimer::UpdateTimers), "CSystemTimer::UpdateTimers"); Call_Direct(AddressOf(&CSystemTimer::UpdateTimers), "CSystemTimer::UpdateTimers");
PushImm32("true",true); PushImm32("true",true);
MoveVariableToX86reg(&_Reg->RANDOM_REGISTER,"RANDOM_REGISTER",x86_ECX); MoveVariableToX86reg(&g_Reg->RANDOM_REGISTER,"RANDOM_REGISTER",x86_ECX);
AndConstToX86Reg(x86_ECX,0x1F); AndConstToX86Reg(x86_ECX,0x1F);
Push(x86_ECX); Push(x86_ECX);
MoveConstToX86reg((DWORD)g_TLB,x86_ECX); MoveConstToX86reg((DWORD)g_TLB,x86_ECX);
@ -4201,15 +4201,15 @@ void CRecompilerOps::COP0_CO_TLBP( void) {
} }
void compiler_COP0_CO_ERET (void) { void compiler_COP0_CO_ERET (void) {
if ((_Reg->STATUS_REGISTER & STATUS_ERL) != 0) { if ((g_Reg->STATUS_REGISTER & STATUS_ERL) != 0) {
_Reg->m_PROGRAM_COUNTER = _Reg->ERROREPC_REGISTER; g_Reg->m_PROGRAM_COUNTER = g_Reg->ERROREPC_REGISTER;
_Reg->STATUS_REGISTER &= ~STATUS_ERL; g_Reg->STATUS_REGISTER &= ~STATUS_ERL;
} else { } else {
_Reg->m_PROGRAM_COUNTER = _Reg->EPC_REGISTER; g_Reg->m_PROGRAM_COUNTER = g_Reg->EPC_REGISTER;
_Reg->STATUS_REGISTER &= ~STATUS_EXL; g_Reg->STATUS_REGISTER &= ~STATUS_EXL;
} }
_Reg->m_LLBit = 0; g_Reg->m_LLBit = 0;
_Reg->CheckInterrupts(); g_Reg->CheckInterrupts();
} }
void CRecompilerOps::COP0_CO_ERET( void) { void CRecompilerOps::COP0_CO_ERET( void) {
@ -5057,7 +5057,7 @@ void CRecompilerOps::UnknownOpcode (void) {
m_RegWorkingSet.WriteBackRegisters(); m_RegWorkingSet.WriteBackRegisters();
UpdateCounters(m_RegWorkingSet,false,true); UpdateCounters(m_RegWorkingSet,false,true);
MoveConstToVariable(m_CompilePC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(m_CompilePC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
if (g_SyncSystem) { if (g_SyncSystem) {
MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX); MoveConstToX86reg((DWORD)g_BaseSystem,x86_ECX);
Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem"); Call_Direct(AddressOf(&CN64System::SyncSystem), "CN64System::SyncSystem");
@ -5158,7 +5158,7 @@ void CRecompilerOps::CompileSystemCheck (DWORD TargetPC, const CRegInfo & RegSet
DWORD * Jump = (DWORD *)(m_RecompPos - 4); DWORD * Jump = (DWORD *)(m_RecompPos - 4);
if (TargetPC != (DWORD)-1) if (TargetPC != (DWORD)-1)
{ {
MoveConstToVariable(TargetPC,&_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER"); MoveConstToVariable(TargetPC,&g_Reg->m_PROGRAM_COUNTER,"PROGRAM_COUNTER");
} }
CRegInfo RegSetCopy(RegSet); CRegInfo RegSetCopy(RegSet);

View File

@ -140,7 +140,7 @@ void CRegInfo::FixRoundModel(FPU_ROUND RoundMethod )
if (RoundMethod == RoundDefault) if (RoundMethod == RoundDefault)
{ {
x86Reg RoundReg = Map_TempReg(x86_Any,-1,FALSE); x86Reg RoundReg = Map_TempReg(x86_Any,-1,FALSE);
MoveVariableToX86reg(&_Reg->m_RoundingModel,"m_RoundingModel", RoundReg); MoveVariableToX86reg(&g_Reg->m_RoundingModel,"m_RoundingModel", RoundReg);
ShiftLeftSignImmed(RoundReg,2); ShiftLeftSignImmed(RoundReg,2);
OrX86RegToX86Reg(reg,RoundReg); OrX86RegToX86Reg(reg,RoundReg);
SetX86Protected(RoundReg,false); SetX86Protected(RoundReg,false);
@ -307,22 +307,22 @@ void CRegInfo::Load_FPR_ToTop ( int Reg, int RegToLoad, FPU_STATE Format)
switch (Format) { switch (Format) {
case FPU_Dword: case FPU_Dword:
sprintf(Name,"m_FPR_S[%d]",RegToLoad); sprintf(Name,"m_FPR_S[%d]",RegToLoad);
MoveVariableToX86reg(&_Reg->m_FPR_S[RegToLoad],Name,TempReg); MoveVariableToX86reg(&g_Reg->m_FPR_S[RegToLoad],Name,TempReg);
fpuLoadIntegerDwordFromX86Reg(&StackTopPos(),TempReg); fpuLoadIntegerDwordFromX86Reg(&StackTopPos(),TempReg);
break; break;
case FPU_Qword: case FPU_Qword:
sprintf(Name,"m_FPR_D[%d]",RegToLoad); sprintf(Name,"m_FPR_D[%d]",RegToLoad);
MoveVariableToX86reg(&_Reg->m_FPR_D[RegToLoad],Name,TempReg); MoveVariableToX86reg(&g_Reg->m_FPR_D[RegToLoad],Name,TempReg);
fpuLoadIntegerQwordFromX86Reg(&StackTopPos(),TempReg); fpuLoadIntegerQwordFromX86Reg(&StackTopPos(),TempReg);
break; break;
case FPU_Float: case FPU_Float:
sprintf(Name,"m_FPR_S[%d]",RegToLoad); sprintf(Name,"m_FPR_S[%d]",RegToLoad);
MoveVariableToX86reg(&_Reg->m_FPR_S[RegToLoad],Name,TempReg); MoveVariableToX86reg(&g_Reg->m_FPR_S[RegToLoad],Name,TempReg);
fpuLoadDwordFromX86Reg(&StackTopPos(),TempReg); fpuLoadDwordFromX86Reg(&StackTopPos(),TempReg);
break; break;
case FPU_Double: case FPU_Double:
sprintf(Name,"m_FPR_D[%d]",RegToLoad); sprintf(Name,"m_FPR_D[%d]",RegToLoad);
MoveVariableToX86reg(&_Reg->m_FPR_D[RegToLoad],Name,TempReg); MoveVariableToX86reg(&g_Reg->m_FPR_D[RegToLoad],Name,TempReg);
fpuLoadQwordFromX86Reg(&StackTopPos(),TempReg); fpuLoadQwordFromX86Reg(&StackTopPos(),TempReg);
break; break;
#ifndef EXTERNAL_RELEASE #ifndef EXTERNAL_RELEASE

View File

@ -6,7 +6,7 @@ CN64System * g_SyncSystem = NULL;
CRecompiler * g_Recompiler = NULL; CRecompiler * g_Recompiler = NULL;
CMipsMemory * g_MMU = NULL; //Memory of the n64 CMipsMemory * g_MMU = NULL; //Memory of the n64
CTLB * g_TLB = NULL; //TLB Unit CTLB * g_TLB = NULL; //TLB Unit
CRegisters * _Reg = NULL; //Current Register Set attacted to the g_MMU CRegisters * g_Reg = NULL; //Current Register Set attacted to the g_MMU
CNotification * g_Notify = NULL; CNotification * g_Notify = NULL;
CPlugins * _Plugins = NULL; CPlugins * _Plugins = NULL;
CN64Rom * _Rom = NULL; //The current rom that this system is executing.. it can only execute one file at the time CN64Rom * _Rom = NULL; //The current rom that this system is executing.. it can only execute one file at the time

View File

@ -7,7 +7,7 @@ extern CN64System * g_SyncSystem;
extern CRecompiler * g_Recompiler; extern CRecompiler * g_Recompiler;
extern CMipsMemory * g_MMU; //Memory of the n64 extern CMipsMemory * g_MMU; //Memory of the n64
extern CTLB * g_TLB; //TLB Unit extern CTLB * g_TLB; //TLB Unit
extern CRegisters * _Reg; //Current Register Set attacted to the g_MMU extern CRegisters * g_Reg; //Current Register Set attached to the g_MMU
extern CPlugins * _Plugins; extern CPlugins * _Plugins;
extern CN64Rom * _Rom; //The current rom that this system is executing.. it can only execute one file at the time extern CN64Rom * _Rom; //The current rom that this system is executing.. it can only execute one file at the time
extern CAudio * _Audio; extern CAudio * _Audio;

View File

@ -188,13 +188,13 @@ bool CAudioPlugin::Initiate ( CN64System * System, CMainGui * RenderWindow ) {
Info.RDRAM = g_MMU->Rdram(); Info.RDRAM = g_MMU->Rdram();
Info.DMEM = g_MMU->Dmem(); Info.DMEM = g_MMU->Dmem();
Info.IMEM = g_MMU->Imem(); Info.IMEM = g_MMU->Imem();
Info.MI__INTR_REG = &_Reg->m_AudioIntrReg; Info.MI__INTR_REG = &g_Reg->m_AudioIntrReg;
Info.AI__DRAM_ADDR_REG = &_Reg->AI_DRAM_ADDR_REG; Info.AI__DRAM_ADDR_REG = &g_Reg->AI_DRAM_ADDR_REG;
Info.AI__LEN_REG = &_Reg->AI_LEN_REG; Info.AI__LEN_REG = &g_Reg->AI_LEN_REG;
Info.AI__CONTROL_REG = &_Reg->AI_CONTROL_REG; Info.AI__CONTROL_REG = &g_Reg->AI_CONTROL_REG;
Info.AI__STATUS_REG = &_Reg->AI_STATUS_REG; Info.AI__STATUS_REG = &g_Reg->AI_STATUS_REG;
Info.AI__DACRATE_REG = &_Reg->AI_DACRATE_REG; Info.AI__DACRATE_REG = &g_Reg->AI_DACRATE_REG;
Info.AI__BITRATE_REG = &_Reg->AI_BITRATE_REG; Info.AI__BITRATE_REG = &g_Reg->AI_BITRATE_REG;
Info.CheckInterrupts = DummyCheckInterrupts; Info.CheckInterrupts = DummyCheckInterrupts;
m_Initilized = InitiateAudio(Info) != 0; m_Initilized = InitiateAudio(Info) != 0;
@ -207,7 +207,7 @@ bool CAudioPlugin::Initiate ( CN64System * System, CMainGui * RenderWindow ) {
m_hAudioThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)AudioThread, (LPVOID)this,0, &ThreadID); m_hAudioThread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)AudioThread, (LPVOID)this,0, &ThreadID);
} }
if (_Reg->AI_DACRATE_REG != 0) { if (g_Reg->AI_DACRATE_REG != 0) {
DacrateChanged(SYSTEM_NTSC); DacrateChanged(SYSTEM_NTSC);
} }
return m_Initilized; return m_Initilized;
@ -273,8 +273,8 @@ void CAudioPlugin::DacrateChanged (SystemType Type)
if (!Initilized()) { return; } if (!Initilized()) { return; }
WriteTraceF(TraceAudio,__FUNCTION__ ": SystemType: %s", Type == SYSTEM_NTSC ? "SYSTEM_NTSC" : "SYSTEM_PAL"); WriteTraceF(TraceAudio,__FUNCTION__ ": SystemType: %s", Type == SYSTEM_NTSC ? "SYSTEM_NTSC" : "SYSTEM_PAL");
//DWORD Frequency = _Reg->AI_DACRATE_REG * 30; //DWORD Frequency = g_Reg->AI_DACRATE_REG * 30;
//DWORD CountsPerSecond = (_Reg->VI_V_SYNC_REG != 0 ? (_Reg->VI_V_SYNC_REG + 1) * g_Settings->LoadDword(Game_ViRefreshRate) : 500000) * 60; //DWORD CountsPerSecond = (g_Reg->VI_V_SYNC_REG != 0 ? (g_Reg->VI_V_SYNC_REG + 1) * g_Settings->LoadDword(Game_ViRefreshRate) : 500000) * 60;
m_DacrateChanged(Type); m_DacrateChanged(Type);
} }

View File

@ -254,29 +254,29 @@ bool CGfxPlugin::Initiate ( CN64System * System, CMainGui * RenderWindow ) {
Info.RDRAM = g_MMU->Rdram(); Info.RDRAM = g_MMU->Rdram();
Info.DMEM = g_MMU->Dmem(); Info.DMEM = g_MMU->Dmem();
Info.IMEM = g_MMU->Imem(); Info.IMEM = g_MMU->Imem();
Info.MI__INTR_REG = &_Reg->m_GfxIntrReg; Info.MI__INTR_REG = &g_Reg->m_GfxIntrReg;
Info.DPC__START_REG = &_Reg->DPC_START_REG; Info.DPC__START_REG = &g_Reg->DPC_START_REG;
Info.DPC__END_REG = &_Reg->DPC_END_REG; Info.DPC__END_REG = &g_Reg->DPC_END_REG;
Info.DPC__CURRENT_REG = &_Reg->DPC_CURRENT_REG; Info.DPC__CURRENT_REG = &g_Reg->DPC_CURRENT_REG;
Info.DPC__STATUS_REG = &_Reg->DPC_STATUS_REG; Info.DPC__STATUS_REG = &g_Reg->DPC_STATUS_REG;
Info.DPC__CLOCK_REG = &_Reg->DPC_CLOCK_REG; Info.DPC__CLOCK_REG = &g_Reg->DPC_CLOCK_REG;
Info.DPC__BUFBUSY_REG = &_Reg->DPC_BUFBUSY_REG; Info.DPC__BUFBUSY_REG = &g_Reg->DPC_BUFBUSY_REG;
Info.DPC__PIPEBUSY_REG = &_Reg->DPC_PIPEBUSY_REG; Info.DPC__PIPEBUSY_REG = &g_Reg->DPC_PIPEBUSY_REG;
Info.DPC__TMEM_REG = &_Reg->DPC_TMEM_REG; Info.DPC__TMEM_REG = &g_Reg->DPC_TMEM_REG;
Info.VI__STATUS_REG = &_Reg->VI_STATUS_REG; Info.VI__STATUS_REG = &g_Reg->VI_STATUS_REG;
Info.VI__ORIGIN_REG = &_Reg->VI_ORIGIN_REG; Info.VI__ORIGIN_REG = &g_Reg->VI_ORIGIN_REG;
Info.VI__WIDTH_REG = &_Reg->VI_WIDTH_REG; Info.VI__WIDTH_REG = &g_Reg->VI_WIDTH_REG;
Info.VI__INTR_REG = &_Reg->VI_INTR_REG; Info.VI__INTR_REG = &g_Reg->VI_INTR_REG;
Info.VI__V_CURRENT_LINE_REG = &_Reg->VI_CURRENT_REG; Info.VI__V_CURRENT_LINE_REG = &g_Reg->VI_CURRENT_REG;
Info.VI__TIMING_REG = &_Reg->VI_TIMING_REG; Info.VI__TIMING_REG = &g_Reg->VI_TIMING_REG;
Info.VI__V_SYNC_REG = &_Reg->VI_V_SYNC_REG; Info.VI__V_SYNC_REG = &g_Reg->VI_V_SYNC_REG;
Info.VI__H_SYNC_REG = &_Reg->VI_H_SYNC_REG; Info.VI__H_SYNC_REG = &g_Reg->VI_H_SYNC_REG;
Info.VI__LEAP_REG = &_Reg->VI_LEAP_REG; Info.VI__LEAP_REG = &g_Reg->VI_LEAP_REG;
Info.VI__H_START_REG = &_Reg->VI_H_START_REG; Info.VI__H_START_REG = &g_Reg->VI_H_START_REG;
Info.VI__V_START_REG = &_Reg->VI_V_START_REG; Info.VI__V_START_REG = &g_Reg->VI_V_START_REG;
Info.VI__V_BURST_REG = &_Reg->VI_V_BURST_REG; Info.VI__V_BURST_REG = &g_Reg->VI_V_BURST_REG;
Info.VI__X_SCALE_REG = &_Reg->VI_X_SCALE_REG; Info.VI__X_SCALE_REG = &g_Reg->VI_X_SCALE_REG;
Info.VI__Y_SCALE_REG = &_Reg->VI_Y_SCALE_REG; Info.VI__Y_SCALE_REG = &g_Reg->VI_Y_SCALE_REG;
m_Initilized = InitiateGFX(Info) != 0; m_Initilized = InitiateGFX(Info) != 0;
//jabo had a bug so I call CreateThread so his dllmain gets called again //jabo had a bug so I call CreateThread so his dllmain gets called again

View File

@ -240,26 +240,26 @@ bool CRSP_Plugin::Initiate ( CPlugins * Plugins, CN64System * System )
Info.IMEM = g_MMU->Imem(); Info.IMEM = g_MMU->Imem();
Info.MemoryBswaped = FALSE; Info.MemoryBswaped = FALSE;
Info.MI__INTR_REG = &_Reg->m_RspIntrReg; Info.MI__INTR_REG = &g_Reg->m_RspIntrReg;
Info.SP__MEM_ADDR_REG = &_Reg->SP_MEM_ADDR_REG; Info.SP__MEM_ADDR_REG = &g_Reg->SP_MEM_ADDR_REG;
Info.SP__DRAM_ADDR_REG = &_Reg->SP_DRAM_ADDR_REG; Info.SP__DRAM_ADDR_REG = &g_Reg->SP_DRAM_ADDR_REG;
Info.SP__RD_LEN_REG = &_Reg->SP_RD_LEN_REG; Info.SP__RD_LEN_REG = &g_Reg->SP_RD_LEN_REG;
Info.SP__WR_LEN_REG = &_Reg->SP_WR_LEN_REG; Info.SP__WR_LEN_REG = &g_Reg->SP_WR_LEN_REG;
Info.SP__STATUS_REG = &_Reg->SP_STATUS_REG; Info.SP__STATUS_REG = &g_Reg->SP_STATUS_REG;
Info.SP__DMA_FULL_REG = &_Reg->SP_DMA_FULL_REG; Info.SP__DMA_FULL_REG = &g_Reg->SP_DMA_FULL_REG;
Info.SP__DMA_BUSY_REG = &_Reg->SP_DMA_BUSY_REG; Info.SP__DMA_BUSY_REG = &g_Reg->SP_DMA_BUSY_REG;
Info.SP__PC_REG = &_Reg->SP_PC_REG; Info.SP__PC_REG = &g_Reg->SP_PC_REG;
Info.SP__SEMAPHORE_REG = &_Reg->SP_SEMAPHORE_REG; Info.SP__SEMAPHORE_REG = &g_Reg->SP_SEMAPHORE_REG;
Info.DPC__START_REG = &_Reg->DPC_START_REG; Info.DPC__START_REG = &g_Reg->DPC_START_REG;
Info.DPC__END_REG = &_Reg->DPC_END_REG; Info.DPC__END_REG = &g_Reg->DPC_END_REG;
Info.DPC__CURRENT_REG = &_Reg->DPC_CURRENT_REG; Info.DPC__CURRENT_REG = &g_Reg->DPC_CURRENT_REG;
Info.DPC__STATUS_REG = &_Reg->DPC_STATUS_REG; Info.DPC__STATUS_REG = &g_Reg->DPC_STATUS_REG;
Info.DPC__CLOCK_REG = &_Reg->DPC_CLOCK_REG; Info.DPC__CLOCK_REG = &g_Reg->DPC_CLOCK_REG;
Info.DPC__BUFBUSY_REG = &_Reg->DPC_BUFBUSY_REG; Info.DPC__BUFBUSY_REG = &g_Reg->DPC_BUFBUSY_REG;
Info.DPC__PIPEBUSY_REG = &_Reg->DPC_PIPEBUSY_REG; Info.DPC__PIPEBUSY_REG = &g_Reg->DPC_PIPEBUSY_REG;
Info.DPC__TMEM_REG = &_Reg->DPC_TMEM_REG; Info.DPC__TMEM_REG = &g_Reg->DPC_TMEM_REG;
InitiateRSP(Info,&CycleCount); InitiateRSP(Info,&CycleCount);
m_Initilized = true; m_Initilized = true;