This commit is contained in:
zilmar 2015-12-04 18:11:39 +11:00
commit 9547e0fd48
5 changed files with 113 additions and 57 deletions

View File

@ -88,7 +88,7 @@
#198# "Emplacement 8" #198# "Emplacement 8"
#199# "Emplacement 9" #199# "Emplacement 9"
#200# "Emplacement 10" #200# "Emplacement 10"
#201# "Sélection de l'Emplacement de Sauvegarde (%ws)" #201# "Sélection de lemplacement de sauvegarde (%ws)"
//Pop up Menu //Pop up Menu
#210# "Lancer le jeu" #210# "Lancer le jeu"
@ -342,8 +342,8 @@
#688# "Aucun jeu lancé" #688# "Aucun jeu lancé"
#689# "Un jeu est lancé" #689# "Un jeu est lancé"
#690# "Un jeu est lancé (Fenêtré)" #690# "Un jeu est lancé (Fenêtré)"
#691# "Un jeu est lancé (Plein Ecran)" #691# "Un jeu est lancé (Plein écran)"
#692# "Détecter la Touche" #692# "Détecter la touche"
// Frame Rate Option // Frame Rate Option
#700# "Interruptions verticales par seconde" #700# "Interruptions verticales par seconde"

View File

@ -276,67 +276,66 @@ void CInterpreterCPU::ExecuteCPU()
{ {
while (!Done) while (!Done)
{ {
if (g_MMU->LW_VAddr(PROGRAM_COUNTER, Opcode.Hex)) if (!g_MMU->LW_VAddr(PROGRAM_COUNTER, Opcode.Hex))
{ {
/*if (PROGRAM_COUNTER > 0x80000300 && PROGRAM_COUNTER< 0x80380000) g_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP, PROGRAM_COUNTER);
{ R4300iOp::m_NextInstruction = NORMAL;
WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s",*_PROGRAM_COUNTER,R4300iOpcodeName(Opcode.Hex,*_PROGRAM_COUNTER)); continue;
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s t9: %08X v1: %08X",*_PROGRAM_COUNTER,R4300iOpcodeName(Opcode.Hex,*_PROGRAM_COUNTER),_GPR[0x19].UW[0],_GPR[0x03].UW[0]); }
//WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %d %d",*_PROGRAM_COUNTER,*g_NextTimer,g_SystemTimer->CurrentType());
}*/
m_R4300i_Opcode[Opcode.op]();
NextTimer -= CountPerOp;
switch (R4300iOp::m_NextInstruction) /* if (PROGRAM_COUNTER > 0x80000300 && PROGRAM_COUNTER < 0x80380000)
{ {
case NORMAL: WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s",*_PROGRAM_COUNTER,R4300iOpcodeName(Opcode.Hex,*_PROGRAM_COUNTER));
PROGRAM_COUNTER += 4; // WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %s t9: %08X v1: %08X",*_PROGRAM_COUNTER,R4300iOpcodeName(Opcode.Hex,*_PROGRAM_COUNTER),_GPR[0x19].UW[0],_GPR[0x03].UW[0]);
break; // WriteTraceF((TraceType)(TraceError | TraceNoHeader),"%X: %d %d",*_PROGRAM_COUNTER,*g_NextTimer,g_SystemTimer->CurrentType());
case DELAY_SLOT: } */
R4300iOp::m_NextInstruction = JUMP; m_R4300i_Opcode[Opcode.op]();
PROGRAM_COUNTER += 4; NextTimer -= CountPerOp;
break;
case PERMLOOP_DO_DELAY: switch (R4300iOp::m_NextInstruction)
R4300iOp::m_NextInstruction = PERMLOOP_DELAY_DONE; {
PROGRAM_COUNTER += 4; case NORMAL:
break; PROGRAM_COUNTER += 4;
case JUMP:
{
bool CheckTimer = (JumpToLocation < PROGRAM_COUNTER || TestTimer);
PROGRAM_COUNTER = JumpToLocation;
R4300iOp::m_NextInstruction = NORMAL;
if (CheckTimer)
{
TestTimer = false;
if (NextTimer < 0)
{
g_SystemTimer->TimerDone();
}
if (bDoSomething)
{
g_SystemEvents->ExecuteEvents();
}
}
}
break; break;
case PERMLOOP_DELAY_DONE: case DELAY_SLOT:
PROGRAM_COUNTER = JumpToLocation; R4300iOp::m_NextInstruction = JUMP;
R4300iOp::m_NextInstruction = NORMAL; PROGRAM_COUNTER += 4;
CInterpreterCPU::InPermLoop(); break;
g_SystemTimer->TimerDone(); case PERMLOOP_DO_DELAY:
R4300iOp::m_NextInstruction = PERMLOOP_DELAY_DONE;
PROGRAM_COUNTER += 4;
break;
case JUMP:
{
bool CheckTimer = (JumpToLocation < PROGRAM_COUNTER || TestTimer);
PROGRAM_COUNTER = JumpToLocation;
R4300iOp::m_NextInstruction = NORMAL;
if (CheckTimer)
{
TestTimer = false;
if (NextTimer < 0)
{
g_SystemTimer->TimerDone();
}
if (bDoSomething) if (bDoSomething)
{ {
g_SystemEvents->ExecuteEvents(); g_SystemEvents->ExecuteEvents();
} }
break;
default:
g_Notify->BreakPoint(__FILEW__, __LINE__);
} }
} }
else break;
{ case PERMLOOP_DELAY_DONE:
g_Reg->DoTLBReadMiss(R4300iOp::m_NextInstruction == JUMP, PROGRAM_COUNTER); PROGRAM_COUNTER = JumpToLocation;
R4300iOp::m_NextInstruction = NORMAL; R4300iOp::m_NextInstruction = NORMAL;
CInterpreterCPU::InPermLoop();
g_SystemTimer->TimerDone();
if (bDoSomething)
{
g_SystemEvents->ExecuteEvents();
}
break;
default:
g_Notify->BreakPoint(__FILEW__, __LINE__);
} }
} }
} }

View File

@ -1546,7 +1546,7 @@ bool CN64System::LoadState(const char * FileName)
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL); OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL);
if (hSaveFile == INVALID_HANDLE_VALUE) if (hSaveFile == INVALID_HANDLE_VALUE)
{ {
g_Notify->DisplayMessage(5, stdstr_f("%s %s", GS(MSG_UNABLED_LOAD_STATE), FileNameStr).ToUTF16().c_str()); g_Notify->DisplayMessage(5, stdwstr_f(L"%ws %ws", GS(MSG_UNABLED_LOAD_STATE), FileNameStr.ToUTF16().c_str()).c_str());
return false; return false;
} }

View File

@ -523,7 +523,7 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
case ID_DEBUGGER_INTERRUPT_PI: g_BaseSystem->ExternalEvent(SysEvent_Interrupt_PI); break; case ID_DEBUGGER_INTERRUPT_PI: g_BaseSystem->ExternalEvent(SysEvent_Interrupt_PI); break;
case ID_DEBUGGER_INTERRUPT_DP: g_BaseSystem->ExternalEvent(SysEvent_Interrupt_DP); break; case ID_DEBUGGER_INTERRUPT_DP: g_BaseSystem->ExternalEvent(SysEvent_Interrupt_DP); break;
case ID_CURRENT_SAVE_DEFAULT: case ID_CURRENT_SAVE_DEFAULT:
g_Notify->DisplayMessage(3, stdwstr_f(GS(MENU_SLOT_SAVE), GetSaveSlotString(MenuID - ID_CURRENT_SAVE_DEFAULT).c_str()).c_str()); g_Notify->DisplayMessage(3, stdwstr_f(GS(MENU_SLOT_SAVE), GetSaveSlotString(MenuID - ID_CURRENT_SAVE_DEFAULT).c_str()).c_str());
g_Settings->SaveDword(Game_CurrentSaveState, (DWORD)(MenuID - ID_CURRENT_SAVE_DEFAULT)); g_Settings->SaveDword(Game_CurrentSaveState, (DWORD)(MenuID - ID_CURRENT_SAVE_DEFAULT));
break; break;
case ID_CURRENT_SAVE_1: case ID_CURRENT_SAVE_1:
@ -536,7 +536,7 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
case ID_CURRENT_SAVE_8: case ID_CURRENT_SAVE_8:
case ID_CURRENT_SAVE_9: case ID_CURRENT_SAVE_9:
case ID_CURRENT_SAVE_10: case ID_CURRENT_SAVE_10:
g_Notify->DisplayMessage(3, stdwstr_f(GS(MENU_SLOT_SAVE), GetSaveSlotString((MenuID - ID_CURRENT_SAVE_1) + 1).c_str()).c_str()); g_Notify->DisplayMessage(3, stdwstr_f(GS(MENU_SLOT_SAVE), GetSaveSlotString((MenuID - ID_CURRENT_SAVE_1) + 1).c_str()).c_str());
g_Settings->SaveDword(Game_CurrentSaveState, (DWORD)((MenuID - ID_CURRENT_SAVE_1) + 1)); g_Settings->SaveDword(Game_CurrentSaveState, (DWORD)((MenuID - ID_CURRENT_SAVE_1) + 1));
break; break;
case ID_HELP_SUPPORTFORUM: ShellExecute(NULL, "open", "http://forum.pj64-emu.com/", NULL, NULL, SW_SHOWMAXIMIZED); break; case ID_HELP_SUPPORTFORUM: ShellExecute(NULL, "open", "http://forum.pj64-emu.com/", NULL, NULL, SW_SHOWMAXIMIZED); break;

57
Source/Script/Unix/common.sh Executable file
View File

@ -0,0 +1,57 @@
src=./../../Common
obj=./Common
mkdir -p $obj
FLAGS_x86="\
-S \
-masm=intel \
-march=native \
-Os"
C_FLAGS=$FLAGS_x86
CC=g++
AS=as
echo Compiling common library sources for Project64...
$CC -o $obj/CriticalSection.asm $src/CriticalSection.cpp $C_FLAGS
$CC -o $obj/FileClass.asm "$src/File Class.cpp" $C_FLAGS
$CC -o $obj/IniFileClass.asm "$src/Ini File Class.cpp" $C_FLAGS
$CC -o $obj/LogClass.asm "$src/Log Class.cpp" $C_FLAGS
$CC -o $obj/md5.asm $src/md5.cpp $C_FLAGS
$CC -o $obj/MemTest.asm $src/MemTest.cpp $C_FLAGS
$CC -o $obj/path.asm $src/path.cpp $C_FLAGS
$CC -o $obj/stdstring.asm "$src/std string.cpp" $C_FLAGS
$CC -o $obj/SyncEvent.asm $src/SyncEvent.cpp $C_FLAGS
$CC -o $obj/Trace.asm $src/Trace.cpp $C_FLAGS
$CC -o $obj/Util.asm $src/Util.cpp $C_FLAGS
echo Assembling common library sources...
$AS -o $obj/CriticalSection.o $obj/CriticalSection.asm
$AS -o $obj/FileClass.o $obj/FileClass.asm
$AS -o $obj/IniFileClass.o $obj/IniFileClass.asm
$AS -o $obj/LogClass.o $obj/LogClass.asm
$AS -o $obj/md5.o $obj/md5.asm
$AS -o $obj/MemTest.o $obj/MemTest.asm
$AS -o $obj/path.o $obj/path.asm
$AS -o $obj/stdstring.o $obj/stdstring.asm
$AS -o $obj/SyncEvent.o $obj/SyncEvent.asm
$AS -o $obj/Trace.o $obj/Trace.asm
$AS -o $obj/Util.o $obj/Util.asm
set OBJ_LIST="\
$obj/Util.o \
$obj/Trace.o \
$obj/SyncEvent.o \
$obj/stdstring.o \
$obj/path.o \
$obj/MemTest.o \
$obj/md5.o \
$obj/LogClass.o \
$obj/IniFileClass.o \
$obj/FileClass.o \
$obj/CriticalSection.o"
echo Linking static library objects for Common...
ar rcs $obj/libcommon.a $OBJ_LIST