[Project64] Update logging system to use module and severity

This commit is contained in:
zilmar 2015-12-14 21:51:33 +11:00
parent b4a3516654
commit 95a3319735
45 changed files with 834 additions and 760 deletions

View File

@ -61,7 +61,7 @@
<ClInclude Include="stdtypes.h" />
<ClInclude Include="SyncEvent.h" />
<ClInclude Include="Trace.h" />
<ClInclude Include="TraceDefs.h" />
<ClInclude Include="TraceModulesCommon.h" />
<ClInclude Include="Util.h" />
</ItemGroup>
</Project>

View File

@ -88,10 +88,10 @@
<ClInclude Include="Trace.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="TraceDefs.h">
<ClInclude Include="Util.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="Util.h">
<ClInclude Include="TraceModulesCommon.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>

View File

@ -1,7 +1,10 @@
#include "stdafx.h"
#include <TChar.H>
BOOL TraceClosed = FALSE;
typedef std::map<uint32_t, stdstr> ModuleNameMap;
uint32_t * g_ModuleLogLevel = NULL;
static bool g_TraceClosed = false;
static ModuleNameMap g_ModuleNames;
class CTraceLog
{
@ -14,13 +17,65 @@ public:
}
~CTraceLog() { CloseTrace(); }
void TraceMessage(uint32_t module, uint8_t severity, const char * file, int line, const char * function, const char * Message);
CTraceModule * AddTraceModule(CTraceModule * TraceModule);
CTraceModule * RemoveTraceModule(CTraceModule * TraceModule);
void CloseTrace(void);
void WriteTrace(TraceType Type, LPCTSTR Message);
void WriteTraceF(TraceType Type, LPCTSTR strFormat, va_list args);
};
CTraceLog & GetTraceObjet(void)
{
static CTraceLog TraceLog;
return TraceLog;
}
void TraceSetModuleName(uint8_t module, const char * Name)
{
g_ModuleNames.insert(ModuleNameMap::value_type(module, Name));
}
void WriteTraceFull(uint32_t module, uint8_t severity, const char * file, int line, const char * function, const char *format, ...)
{
va_list args;
va_start(args, format);
size_t nlen = _vscprintf(format, args) + 1;
char * Message = (char *)alloca(nlen * sizeof(char));
Message[nlen - 1] = 0;
if (Message != NULL)
{
vsprintf(Message, format, args);
GetTraceObjet().TraceMessage(module, severity, file, line, function, Message);
}
va_end(args);
}
void CloseTrace(void)
{
g_TraceClosed = true;
GetTraceObjet().CloseTrace();
if (g_ModuleLogLevel)
{
delete g_ModuleLogLevel;
g_ModuleLogLevel = NULL;
}
}
void TraceSetMaxModule(uint32_t MaxModule, uint8_t DefaultSeverity)
{
if (g_ModuleLogLevel)
{
delete g_ModuleLogLevel;
g_ModuleLogLevel = NULL;
}
g_ModuleLogLevel = new uint32_t[MaxModule];
for (uint32_t i = 0; i < MaxModule; i++)
{
g_ModuleLogLevel[i] = DefaultSeverity;
}
}
CTraceModule * CTraceLog::AddTraceModule(CTraceModule * TraceModule)
{
CGuard Guard(m_CS);
@ -54,116 +109,22 @@ CTraceModule * CTraceLog::RemoveTraceModule(CTraceModule * TraceModule)
void CTraceLog::CloseTrace(void)
{
CGuard Guard(m_CS);
for (int i = 0; i < (int)m_Modules.size(); i++)
{
if (m_Modules[i])
delete m_Modules[i];
}
m_Modules.clear();
}
void CTraceLog::WriteTraceF(TraceType Type, LPCTSTR strFormat, va_list args)
{
const int nMaxSize = 32 * 1024;
TCHAR pBuffer[nMaxSize];
_vsntprintf(pBuffer, nMaxSize, strFormat, args);
pBuffer[nMaxSize - 1] = 0;
WriteTrace(Type, pBuffer);
}
void CTraceLog::WriteTrace(TraceType Type, LPCTSTR Message)
void CTraceLog::TraceMessage(uint32_t module, uint8_t severity, const char * file, int line, const char * function, const char * Message)
{
CGuard Guard(m_CS);
if (Type != TraceNone)
for (uint32_t i = 0, n = m_Modules.size(); i < n; i++)
{
bool WriteToLog = false;
for (int i = 0; i < (int)m_Modules.size(); i++)
{
if ((m_Modules[i]->GetTraceLevel() & Type) != 0)
{
WriteToLog = true;
break;
}
}
if (!WriteToLog) { return; }
}
if ((Type & TraceNoHeader) == 0)
{
TCHAR pBuffer[300];
int nPos = 0;
SYSTEMTIME sysTime;
::GetLocalTime(&sysTime);
nPos = _stprintf(pBuffer, _T("%04d/%02d/%02d %02d:%02d:%02d.%03d %05d: "), sysTime.wYear,
sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMilliseconds,
::GetCurrentThreadId()
);
// show the debug level
if (Type == TraceNone) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("None : ")); }
else if ((Type & TraceError) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Error : ")); }
else if ((Type & TraceSettings) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Setting: ")); }
else if ((Type & TraceGfxPlugin) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Gfx : ")); }
else if ((Type & TraceDebug) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Debug : ")); }
else if ((Type & TraceRecompiler) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Recomp : ")); }
else if ((Type & TraceRSP) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("RSP : ")); }
else if ((Type & TraceTLB) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("TLB : ")); }
else if ((Type & TraceValidate) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Valid : ")); }
else if ((Type & TraceAudio) != 0) { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Audio : ")); }
else { nPos += _stprintf(pBuffer + nPos, _T("%s"), _T("Unknown: ")); }
for (int i = 0; i < (int)m_Modules.size(); i++)
{
if ((m_Modules[i]->GetTraceLevel() & Type) != 0)
{
m_Modules[i]->Write(pBuffer, false);
}
}
}
for (int i = 0; i < (int)m_Modules.size(); i++)
{
if ((m_Modules[i]->GetTraceLevel() & Type) != 0)
{
m_Modules[i]->Write(Message, true);
}
m_Modules[i]->Write(module, severity, file, line, function, Message);
}
}
CTraceLog & GetTraceObjet(void)
CTraceModule * TraceAddModule(CTraceModule * TraceModule)
{
static CTraceLog TraceLog;
return TraceLog;
}
void WriteTrace(TraceType Type, LPCTSTR Message)
{
if (TraceClosed)
{
return;
}
GetTraceObjet().WriteTrace(Type, Message);
}
void WriteTraceF(TraceType Type, LPCTSTR strFormat, ...)
{
if (TraceClosed)
{
return;
}
va_list args;
va_start(args, strFormat);
GetTraceObjet().WriteTraceF(Type, strFormat, args);
va_end(args);
}
CTraceModule * AddTraceModule(CTraceModule * TraceModule)
{
if (TraceClosed)
if (g_TraceClosed)
{
return NULL;
}
@ -171,27 +132,41 @@ CTraceModule * AddTraceModule(CTraceModule * TraceModule)
return TraceModule;
}
CTraceModule * RemoveTraceModule(CTraceModule * TraceModule)
CTraceModule * TraceRemoveModule(CTraceModule * TraceModule)
{
return GetTraceObjet().RemoveTraceModule(TraceModule);
}
void CloseTrace(void)
const char * TraceSeverity(uint8_t severity)
{
TraceClosed = true;
GetTraceObjet().CloseTrace();
switch (severity)
{
case TraceError: return "Error";
case TraceWarning: return "Warning";
case TraceNotice: return "Notice";
case TraceInfo: return "Info";
case TraceDebug: return "Debug";
case TraceVerbose: return "Verbose";
}
static stdstr Unknown;
Unknown.Format("Unknown (%d)", (int32_t)severity);
return Unknown.c_str();
}
CTraceFileLog::CTraceFileLog(LPCTSTR FileName, bool FlushFile) :
m_FlushFile(FlushFile)
const char * TraceModule(uint32_t module)
{
m_hLogFile.SetFlush(false);
m_hLogFile.SetTruncateFile(true);
m_hLogFile.SetMaxFileSize(5 * MB);
m_hLogFile.Open(FileName, Log_Append);
ModuleNameMap::const_iterator itr = g_ModuleNames.find(module);
if (itr != g_ModuleNames.end())
{
return itr->second.c_str();
}
static stdstr Unknown;
Unknown.Format("Unknown (%d)", module);
return Unknown.c_str();
}
CTraceFileLog::CTraceFileLog(LPCTSTR FileName, bool FlushFile, LOG_OPEN_MODE eMode, size_t dwMaxFileSize) :
CTraceFileLog::CTraceFileLog(const char * FileName, bool FlushFile, LOG_OPEN_MODE eMode, size_t dwMaxFileSize) :
m_FlushFile(FlushFile)
{
enum { MB = 1024 * 1024 };
@ -210,35 +185,32 @@ m_FlushFile(FlushFile)
CTraceFileLog::~CTraceFileLog()
{
TraceClosed = true;
}
void CTraceFileLog::Write(LPCTSTR Message, bool EndOfLine)
void CTraceFileLog::Write(uint32_t module, uint8_t severity, const char * /*file*/, int /*line*/, const char * function, const char * Message)
{
if (!m_hLogFile.IsOpen()) { return; }
CGuard Section(m_CriticalSection);
SYSTEMTIME sysTime;
::GetLocalTime(&sysTime);
stdstr_f timestamp("%04d/%02d/%02d %02d:%02d:%02d.%03d %05d,", sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMilliseconds, GetCurrentThreadId());
m_hLogFile.Log(timestamp.c_str());
m_hLogFile.Log(TraceSeverity(severity));
m_hLogFile.Log(",");
m_hLogFile.Log(TraceModule(module));
m_hLogFile.Log(",");
m_hLogFile.Log(function);
m_hLogFile.Log(",");
m_hLogFile.Log(Message);
if (EndOfLine)
m_hLogFile.Log("\r\n");
if (m_FlushFile)
{
m_hLogFile.Log(_T("\r\n"));
if (m_FlushFile)
{
m_hLogFile.Flush();
}
m_hLogFile.Flush();
}
}
void CTraceFileLog::SetFlushFile(bool bFlushFile)
{
m_FlushFile = bFlushFile;
}
void CDebugTraceLog::Write(const char * Message, bool EndOfLine)
{
OutputDebugString(Message);
if (EndOfLine)
{
OutputDebugString("\n");
}
}

View File

@ -1,43 +1,45 @@
#pragma once
#include "CriticalSection.h"
#include "LogClass.h"
class CTraceModule
enum TraceSeverity
{
TraceLevel m_Type;
TraceError = 0x00000001,
TraceWarning = 0x00000002,
TraceNotice = 0x00000003,
TraceInfo = 0x00000004,
TraceDebug = 0x00000005,
TraceVerbose = 0x00000006,
};
public:
CTraceModule() { m_Type = TrLvError; }
virtual ~CTraceModule() {}
inline void SetTraceLevel(TraceLevel Type) { m_Type = Type; }
inline TraceLevel GetTraceLevel(void) const { return m_Type; }
virtual void Write(const char * Message, bool EndOfLine) = 0;
__interface CTraceModule
{
virtual void Write(uint32_t module, uint8_t severity, const char * file, int line, const char * function, const char * Message) = 0;
};
class CTraceFileLog : public CTraceModule
{
enum { MB = 1024 * 1024 };
CriticalSection m_CriticalSection;
CLog m_hLogFile;
bool m_FlushFile;
public:
CTraceFileLog(const char * FileName, bool FlushFile = true);
CTraceFileLog(const char * FileName, bool FlushFile, LOG_OPEN_MODE eMode, size_t dwMaxFileSize = 5);
virtual ~CTraceFileLog();
void Write(const char * Message, bool EndOfLine);
void SetFlushFile(bool bFlushFile);
void Write(uint32_t module, uint8_t severity, const char * file, int line, const char * function, const char * Message);
private:
CLog m_hLogFile;
bool m_FlushFile;
};
class CDebugTraceLog : public CTraceModule
{
public:
void Write(const char * Message, bool EndOfLine);
};
#define WriteTrace(m, s, format, ...) if(g_ModuleLogLevel[(m)] >= (s)) { WriteTraceFull((m), (s), __FILE__, __LINE__, __FUNCTION__, (format), ## __VA_ARGS__); }
CTraceModule * AddTraceModule(CTraceModule * TraceModule); // Must be created with new
CTraceModule * RemoveTraceModule(CTraceModule * TraceModule); // Is not automaticly deleted
CTraceModule * TraceAddModule(CTraceModule * TraceModule);
CTraceModule * TraceRemoveModule(CTraceModule * TraceModule);
const char * TraceSeverity(uint8_t severity);
const char * TraceModule(uint32_t module);
void TraceSetModuleName(uint8_t module, const char * Name);
void CloseTrace(void);
void WriteTraceFull(uint32_t module, uint8_t severity, const char * file, int line, const char * function, const char *format, ...);
void TraceSetMaxModule(uint32_t MaxModule, uint8_t DefaultSeverity);
extern uint32_t * g_ModuleLogLevel;

View File

@ -1,31 +0,0 @@
#pragma once
enum TraceType
{
TraceNone = 0x00000000,
TraceError = 0x00000001,
TraceSettings = 0x00000002,
TraceGfxPlugin = 0x00000004,
TraceDebug = 0x00000010,
TraceRecompiler = 0x00000020,
TraceRSP = 0x00000040,
TraceTLB = 0x00000080,
TraceValidate = 0x00000100,
TraceAudio = 0x00000200,
TraceProtectedMem = 0x00000400,
TraceNoHeader = 0x80000000,
};
enum TraceLevel
{
//Handle Existing Code
TrLvError = TraceError,
TrLv1 = TraceSettings | TrLvError,
TrLv2 = TrLv1 | TraceDebug,
TrlvGfxPlugin = TraceGfxPlugin,
TrLvAll = ~TraceNoHeader,
};
void WriteTrace(TraceType Type, const char * Message);
void WriteTraceF(TraceType Type, const char * strFormat, ...);
void CloseTrace(void); //Free's all memory associated with trace

View File

@ -0,0 +1,7 @@
#pragma once
enum TraceModuleCommon
{
TraceMD5,
MaxTraceModuleCommon,
};

View File

@ -40,7 +40,6 @@
*/
#include "stdafx.h"
#include <TChar.H>
// MD5 simple initialization method
MD5::MD5()
@ -62,7 +61,7 @@ void MD5::update(const uint1 *input, uint4 input_length)
if (finalized) // so we can't update!
{
WriteTrace(TraceError, _T("MD5::update: Can't update a finalized digest!"));
WriteTrace(TraceMD5, TraceError, "Can't update a finalized digest!");
return;
}
@ -139,7 +138,7 @@ void MD5::finalize()
if (finalized)
{
WriteTrace(TraceError, _T("MD5::finalize: Already finalized this digest!"));
WriteTrace(TraceMD5, TraceError, "Already finalized this digest!");
return;
}
@ -168,7 +167,7 @@ MD5::MD5(CPath File)
init(); // must be called be all constructors
if (File.Exists())
{
FILE * fp = fopen((LPCTSTR)File, _T("rb"));
FILE * fp = fopen((LPCTSTR)File, "rb");
if (fp)
{
update(fp);
@ -202,7 +201,7 @@ const unsigned char *MD5::raw_digest()
{
if (!finalized)
{
WriteTrace(TraceError, _T("MD5::raw_digest: Can't get digest if you haven't finalized the digest!"));
WriteTrace(TraceMD5, TraceError, "Can't get digest if you haven't finalized the digest!");
return ((unsigned char*) "");
}
return digest;
@ -212,7 +211,7 @@ void MD5::get_digest(MD5Digest& extdigest)
{
if (!finalized)
{
WriteTrace(TraceError, _T("MD5::get_digest: Can't get digest if you haven't finalized the digest!"));
WriteTrace(TraceMD5, TraceError, "Can't get digest if you haven't finalized the digest!");
memset(extdigest.digest, 0, sizeof(extdigest.digest));
return;
}
@ -229,7 +228,7 @@ const char *MD5::hex_digest()
if (!finalized)
{
WriteTrace(TraceError, _T("MD5::hex_digest: Can't get digest if you haven't finalized the digest!"));
WriteTrace(TraceMD5, TraceError, "Can't get digest if you haven't finalized the digest!");
return "";
}
char c[33];

View File

@ -13,7 +13,7 @@
#include "IniFileClass.h"
#include "path.h"
#include "LogClass.h"
#include "TraceDefs.h"
#include "TraceModulesCommon.h"
#include "Trace.h"
#include "md5.h"
#include "SmartPointer.h"

View File

@ -10,20 +10,23 @@
void FixDirectories(void);
static void IncreaseThreadPriority(void);
static CTraceFileLog * g_LogFile = NULL;
void LogLevelChanged(CTraceFileLog * LogFile)
{
LogFile->SetTraceLevel((TraceLevel)g_Settings->LoadDword(Debugger_AppLogLevel));
}
void LogFlushChanged(CTraceFileLog * LogFile)
{
LogFile->SetFlushFile(g_Settings->LoadDword(Debugger_AppLogFlush) != 0);
}
void InitializeLog(void)
{
#ifdef _DEBUG
TraceSetMaxModule(MaxTraceModuleProject64, TraceInfo);
#else
TraceSetMaxModule(MaxTraceModuleProject64, TraceError);
#endif
}
void AddLogModule(void)
{
CPath LogFilePath(CPath::MODULE_DIRECTORY);
LogFilePath.AppendDirectory("Logs");
@ -34,15 +37,108 @@ void InitializeLog(void)
LogFilePath.SetNameExtension("Project64.log");
g_LogFile = new CTraceFileLog(LogFilePath, g_Settings->LoadDword(Debugger_AppLogFlush) != 0, Log_New, 500);
#ifdef VALIDATE_DEBUG
g_LogFile->SetTraceLevel((TraceLevel)(g_Settings->LoadDword(Debugger_AppLogLevel) | TraceValidate | TraceDebug));
#else
g_LogFile->SetTraceLevel((TraceLevel)g_Settings->LoadDword(Debugger_AppLogLevel));
#endif
AddTraceModule(g_LogFile);
TraceAddModule(g_LogFile);
}
g_Settings->RegisterChangeCB(Debugger_AppLogLevel, g_LogFile, (CSettings::SettingChangedFunc)LogLevelChanged);
void SetTraceModuleNames(void)
{
TraceSetModuleName(TraceMD5, "MD5");
TraceSetModuleName(TraceSettings, "Settings");
TraceSetModuleName(TraceUnknown, "Unknown");
TraceSetModuleName(TraceAppInit, "App Init");
TraceSetModuleName(TraceAppCleanup, "App Cleanup");
TraceSetModuleName(TraceN64System, "N64 System");
TraceSetModuleName(TracePlugins, "Plugins");
TraceSetModuleName(TraceGFXPlugin, "GFX Plugin");
TraceSetModuleName(TraceAudioPlugin, "Audio Plugin");
TraceSetModuleName(TraceControllerPlugin, "Controller Plugin");
TraceSetModuleName(TraceRSPPlugin, "RSP Plugin");
TraceSetModuleName(TraceRSP, "RSP");
TraceSetModuleName(TraceAudio, "Audio");
TraceSetModuleName(TraceRegisterCache, "Register Cache");
TraceSetModuleName(TraceRecompiler, "Recompiler");
TraceSetModuleName(TraceTLB, "TLB");
TraceSetModuleName(TraceProtectedMem, "Protected Memory");
TraceSetModuleName(TraceUserInterface, "User Interface");
}
void UpdateTraceLevel(void * /*NotUsed*/)
{
g_ModuleLogLevel[TraceMD5] = (uint8_t)g_Settings->LoadDword(Debugger_TraceMD5);
g_ModuleLogLevel[TraceSettings] = (uint8_t)g_Settings->LoadDword(Debugger_TraceSettings);
g_ModuleLogLevel[TraceUnknown] = (uint8_t)g_Settings->LoadDword(Debugger_TraceUnknown);
g_ModuleLogLevel[TraceAppInit] = (uint8_t)g_Settings->LoadDword(Debugger_TraceAppInit);
g_ModuleLogLevel[TraceAppCleanup] = (uint8_t)g_Settings->LoadDword(Debugger_TraceAppCleanup);
g_ModuleLogLevel[TraceN64System] = (uint8_t)g_Settings->LoadDword(Debugger_TraceN64System);
g_ModuleLogLevel[TracePlugins] = (uint8_t)g_Settings->LoadDword(Debugger_TracePlugins);
g_ModuleLogLevel[TraceGFXPlugin] = (uint8_t)g_Settings->LoadDword(Debugger_TraceGFXPlugin);
g_ModuleLogLevel[TraceAudioPlugin] = (uint8_t)g_Settings->LoadDword(Debugger_TraceAudioPlugin);
g_ModuleLogLevel[TraceControllerPlugin] = (uint8_t)g_Settings->LoadDword(Debugger_TraceControllerPlugin);
g_ModuleLogLevel[TraceRSPPlugin] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRSPPlugin);
g_ModuleLogLevel[TraceRSP] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRSP);
g_ModuleLogLevel[TraceAudio] = (uint8_t)g_Settings->LoadDword(Debugger_TraceAudio);
g_ModuleLogLevel[TraceRegisterCache] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRegisterCache);
g_ModuleLogLevel[TraceRecompiler] = (uint8_t)g_Settings->LoadDword(Debugger_TraceRecompiler);
g_ModuleLogLevel[TraceTLB] = (uint8_t)g_Settings->LoadDword(Debugger_TraceTLB);
g_ModuleLogLevel[TraceProtectedMem] = (uint8_t)g_Settings->LoadDword(Debugger_TraceProtectedMEM);
g_ModuleLogLevel[TraceUserInterface] = (uint8_t)g_Settings->LoadDword(Debugger_TraceUserInterface);
}
void SetupTrace(void)
{
SetTraceModuleNames();
AddLogModule();
g_Settings->RegisterChangeCB(Debugger_TraceMD5, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceSettings, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceUnknown, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceAppInit, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceAppCleanup, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceN64System, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TracePlugins, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceGFXPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceAudioPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceControllerPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceRSPPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceRSP, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceAudio, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceRegisterCache, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceRecompiler, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceTLB, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceProtectedMEM, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_TraceUserInterface, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->RegisterChangeCB(Debugger_AppLogFlush, g_LogFile, (CSettings::SettingChangedFunc)LogFlushChanged);
UpdateTraceLevel(NULL);
WriteTrace(TraceAppInit, TraceInfo, "Application Starting %s", VER_FILE_VERSION_STR);
}
void CleanupTrace(void)
{
WriteTrace(TraceAppCleanup, TraceDebug, "Done");
g_Settings->UnregisterChangeCB(Debugger_TraceMD5, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceSettings, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceUnknown, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceAppInit, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceAppCleanup, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceN64System, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TracePlugins, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceGFXPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceAudioPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceControllerPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceRSPPlugin, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceRSP, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceAudio, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceRegisterCache, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceRecompiler, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceTLB, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceProtectedMEM, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_TraceUserInterface, NULL, (CSettings::SettingChangedFunc)UpdateTraceLevel);
g_Settings->UnregisterChangeCB(Debugger_AppLogFlush, g_LogFile, (CSettings::SettingChangedFunc)LogFlushChanged);
CloseTrace();
if (g_LogFile) { delete g_LogFile; g_LogFile = NULL; }
}
void AppInit(CNotification * Notify)
@ -50,8 +146,7 @@ void AppInit(CNotification * Notify)
try
{
g_Notify = Notify;
FixDirectories();
InitializeLog();
stdstr_f AppName("Project64 %s", VER_FILE_VERSION_STR);
IncreaseThreadPriority();
@ -67,13 +162,12 @@ void AppInit(CNotification * Notify)
g_Settings->Initialize(AppName.c_str());
}
InitializeLog();
WriteTrace(TraceDebug, __FUNCTION__ ": Application Starting");
SetupTrace();
CMipsMemoryVM::ReserveMemory();
FixDirectories();
//Create the plugin container
WriteTrace(TraceDebug, __FUNCTION__ ": Create Plugins");
WriteTrace(TraceAppInit, TraceInfo, "Create Plugins");
g_Plugins = new CPlugins(g_Settings->LoadStringVal(Directory_Plugin));
g_Lang = new CLanguage();
@ -88,9 +182,7 @@ void AppInit(CNotification * Notify)
void AppCleanup(void)
{
g_Settings->UnregisterChangeCB(Debugger_AppLogLevel, g_LogFile, (CSettings::SettingChangedFunc)LogLevelChanged);
g_Settings->UnregisterChangeCB(Debugger_AppLogFlush, g_LogFile, (CSettings::SettingChangedFunc)LogFlushChanged);
WriteTrace(TraceDebug, __FUNCTION__ ": cleaning up global objects");
WriteTrace(TraceAppCleanup, TraceDebug, "cleaning up global objects");
if (g_Rom) { delete g_Rom; g_Rom = NULL; }
if (g_Plugins) { delete g_Plugins; g_Plugins = NULL; }
@ -98,9 +190,7 @@ void AppCleanup(void)
if (g_Lang) { delete g_Lang; g_Lang = NULL; }
CMipsMemoryVM::FreeReservedMemory();
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
CloseTrace();
CleanupTrace();
}
void FixDirectories(void)
@ -109,10 +199,6 @@ void FixDirectories(void)
Directory.AppendDirectory("Config");
if (!Directory.DirectoryExists()) Directory.DirectoryCreate();
Directory.UpDirectory();
Directory.AppendDirectory("Logs");
if (!Directory.DirectoryExists()) Directory.DirectoryCreate();
Directory.UpDirectory();
Directory.AppendDirectory("Save");
if (!Directory.DirectoryExists()) Directory.DirectoryCreate();
@ -130,4 +216,4 @@ void FixDirectories(void)
void IncreaseThreadPriority(void)
{
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_ABOVE_NORMAL);
}
}

View File

@ -34,30 +34,30 @@ void CAudio::Reset()
uint32_t CAudio::GetLength()
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Start (m_SecondBuff = %d)", m_SecondBuff);
WriteTrace(TraceAudio, TraceDebug, "Start (m_SecondBuff = %d)", m_SecondBuff);
uint32_t TimeLeft = g_SystemTimer->GetTimer(CSystemTimer::AiTimerInterrupt), Res = 0;
if (TimeLeft > 0)
{
Res = (TimeLeft / m_CountsPerByte);
}
WriteTraceF(TraceAudio, __FUNCTION__ ": Done (res = %d, TimeLeft = %d)", Res, TimeLeft);
WriteTrace(TraceAudio, TraceDebug, "Done (res = %d, TimeLeft = %d)", Res, TimeLeft);
return (Res + 3)&~3;
}
uint32_t CAudio::GetStatus()
{
WriteTraceF(TraceAudio, __FUNCTION__ ": m_Status = %X", m_Status);
WriteTrace(TraceAudio, TraceDebug, "m_Status = %X", m_Status);
return m_Status;
}
void CAudio::LenChanged()
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Start (g_Reg->AI_LEN_REG = %d)", g_Reg->AI_LEN_REG);
WriteTrace(TraceAudio, TraceDebug, "Start (g_Reg->AI_LEN_REG = %d)", g_Reg->AI_LEN_REG);
if (g_Reg->AI_LEN_REG != 0)
{
if (g_Reg->AI_LEN_REG >= 0x40000)
{
WriteTraceF(TraceAudio, __FUNCTION__ ": *** Ignoring Write, To Large (%X)", g_Reg->AI_LEN_REG);
WriteTrace(TraceAudio, TraceDebug, "*** Ignoring Write, To Large (%X)", g_Reg->AI_LEN_REG);
}
else
{
@ -67,12 +67,12 @@ void CAudio::LenChanged()
{
if (AudioLeft == 0)
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Set Timer AI_LEN_REG: %d m_CountsPerByte: %d", g_Reg->AI_LEN_REG, m_CountsPerByte);
WriteTrace(TraceAudio, TraceDebug, "Set Timer AI_LEN_REG: %d m_CountsPerByte: %d", g_Reg->AI_LEN_REG, m_CountsPerByte);
g_SystemTimer->SetTimer(CSystemTimer::AiTimerInterrupt, g_Reg->AI_LEN_REG * m_CountsPerByte, false);
}
else
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Increasing Second Buffer (m_SecondBuff %d Increase: %d)", m_SecondBuff, g_Reg->AI_LEN_REG);
WriteTrace(TraceAudio, TraceDebug, "Increasing Second Buffer (m_SecondBuff %d Increase: %d)", m_SecondBuff, g_Reg->AI_LEN_REG);
m_SecondBuff += g_Reg->AI_LEN_REG;
m_Status |= ai_full;
}
@ -85,7 +85,7 @@ void CAudio::LenChanged()
}
else
{
WriteTraceF(TraceAudio, __FUNCTION__ ": *** Reset Timer to 0");
WriteTrace(TraceAudio, TraceDebug, "*** Reset Timer to 0");
g_SystemTimer->StopTimer(CSystemTimer::AiTimerBusy);
g_SystemTimer->StopTimer(CSystemTimer::AiTimerInterrupt);
m_SecondBuff = 0;
@ -96,12 +96,12 @@ void CAudio::LenChanged()
{
g_Plugins->Audio()->AiLenChanged();
}
WriteTraceF(TraceAudio, __FUNCTION__ ": Done");
WriteTrace(TraceAudio, TraceDebug, "Done");
}
void CAudio::InterruptTimerDone()
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Start (m_SecondBuff = %d)", m_SecondBuff);
WriteTrace(TraceAudio, TraceDebug, "Start (m_SecondBuff = %d)", m_SecondBuff);
m_Status &= ~ai_full;
g_Reg->MI_INTR_REG |= MI_INTR_AI;
g_Reg->CheckInterrupts();
@ -118,12 +118,12 @@ void CAudio::InterruptTimerDone()
{
g_System->SyncToAudio();
}
WriteTrace(TraceAudio, __FUNCTION__ ": Done");
WriteTrace(TraceAudio, TraceDebug, "Done");
}
void CAudio::BusyTimerDone()
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Start (m_SecondBuff = %d)", m_SecondBuff);
WriteTrace(TraceAudio, TraceDebug, "Start (m_SecondBuff = %d)", m_SecondBuff);
g_Notify->BreakPoint(__FILE__, __LINE__);
m_Status &= ~ai_busy;
}
@ -139,7 +139,7 @@ void CAudio::SetViIntr(uint32_t VI_INTR_TIME)
void CAudio::SetFrequency(uint32_t Dacrate, uint32_t System)
{
WriteTraceF(TraceAudio, __FUNCTION__ "(Dacrate: %X System: %d): AI_BITRATE_REG = %X", Dacrate, System, g_Reg->AI_BITRATE_REG);
WriteTrace(TraceAudio, TraceDebug, "(Dacrate: %X System: %d): AI_BITRATE_REG = %X", Dacrate, System, g_Reg->AI_BITRATE_REG);
uint32_t Frequency;
switch (System)

View File

@ -160,7 +160,7 @@ void CEeprom::LoadEeprom()
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL);
if (m_hFile == INVALID_HANDLE_VALUE)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to open (%s), ReadOnly = %d, LastError = %X", (LPCTSTR)FileName, m_ReadOnly, GetLastError());
WriteTrace(TraceN64System, TraceError, "Failed to open (%s), ReadOnly = %d, LastError = %X", (LPCTSTR)FileName, m_ReadOnly, GetLastError());
g_Notify->DisplayError(GS(MSG_FAIL_OPEN_EEPROM));
return;
}

View File

@ -150,7 +150,7 @@ bool CFlashram::LoadFlashram()
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL);
if (m_hFile == INVALID_HANDLE_VALUE)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to open (%s), ReadOnly = %d, LastError = %X", (LPCTSTR)FileName, m_ReadOnly, GetLastError());
WriteTrace(TraceN64System, TraceError, "Failed to open (%s), ReadOnly = %d, LastError = %X", (LPCTSTR)FileName, m_ReadOnly, GetLastError());
g_Notify->DisplayError(GS(MSG_FAIL_OPEN_FLASH));
return false;
}

View File

@ -143,7 +143,7 @@ bool CMipsMemoryVM::Initialize()
}
if (m_RDRAM == NULL)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to Reserve RDRAM (Size: 0x%X)", 0x20000000);
WriteTrace(TraceN64System, TraceError, "Failed to Reserve RDRAM (Size: 0x%X)", 0x20000000);
FreeMemory();
return false;
}
@ -151,14 +151,14 @@ bool CMipsMemoryVM::Initialize()
m_AllocatedRdramSize = g_Settings->LoadDword(Game_RDRamSize);
if (VirtualAlloc(m_RDRAM, m_AllocatedRdramSize, MEM_COMMIT, PAGE_READWRITE) == NULL)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to Allocate RDRAM (Size: 0x%X)", m_AllocatedRdramSize);
WriteTrace(TraceN64System, TraceError, "Failed to Allocate RDRAM (Size: 0x%X)", m_AllocatedRdramSize);
FreeMemory();
return false;
}
if (VirtualAlloc(m_RDRAM + 0x04000000, 0x2000, MEM_COMMIT, PAGE_READWRITE) == NULL)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to Allocate DMEM/IMEM (Size: 0x%X)", 0x2000);
WriteTrace(TraceN64System, TraceError, "Failed to Allocate DMEM/IMEM (Size: 0x%X)", 0x2000);
FreeMemory();
return false;
}
@ -173,7 +173,7 @@ bool CMipsMemoryVM::Initialize()
m_RomSize = g_Rom->GetRomSize();
if (VirtualAlloc(m_Rom, g_Rom->GetRomSize(), MEM_COMMIT, PAGE_READWRITE) == NULL)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to Allocate Rom (Size: 0x%X)", g_Rom->GetRomSize());
WriteTrace(TraceN64System, TraceError, "Failed to Allocate Rom (Size: 0x%X)", g_Rom->GetRomSize());
FreeMemory();
return false;
}
@ -198,7 +198,7 @@ bool CMipsMemoryVM::Initialize()
);
if (m_TLB_ReadMap == NULL)
{
WriteTraceF(TraceError, __FUNCTION__": Failed to Allocate m_TLB_ReadMap (Size: 0x%X)", 0xFFFFF * sizeof(size_t));
WriteTrace(TraceN64System, TraceError, "Failed to Allocate m_TLB_ReadMap (Size: 0x%X)", 0xFFFFF * sizeof(size_t));
FreeMemory();
return false;
}
@ -211,7 +211,7 @@ bool CMipsMemoryVM::Initialize()
);
if (m_TLB_WriteMap == NULL)
{
WriteTraceF(TraceError, __FUNCTION__": Failed to Allocate m_TLB_WriteMap (Size: 0x%X)", 0xFFFFF * sizeof(size_t));
WriteTrace(TraceN64System, TraceError, "Failed to Allocate m_TLB_WriteMap (Size: 0x%X)", 0xFFFFF * sizeof(size_t));
FreeMemory();
return false;
}
@ -3455,7 +3455,7 @@ void CMipsMemoryVM::UpdateFieldSerration(uint32_t interlaced)
void CMipsMemoryVM::ProtectMemory(uint32_t StartVaddr, uint32_t EndVaddr)
{
WriteTraceF(TraceProtectedMem, __FUNCTION__ ": StartVaddr: %08X EndVaddr: %08X", StartVaddr, EndVaddr);
WriteTrace(TraceProtectedMem, TraceDebug, "StartVaddr: %08X EndVaddr: %08X", StartVaddr, EndVaddr);
if (!ValidVaddr(StartVaddr) || !ValidVaddr(EndVaddr))
{
return;
@ -3482,14 +3482,14 @@ void CMipsMemoryVM::ProtectMemory(uint32_t StartVaddr, uint32_t EndVaddr)
//Protect that memory address space
DWORD OldProtect;
uint8_t * MemLoc = Rdram() + StartPAddr;
WriteTraceF(TraceProtectedMem, __FUNCTION__ ": Paddr: %08X Length: %X", StartPAddr, Length);
WriteTrace(TraceProtectedMem, TraceDebug, "Paddr: %08X Length: %X", StartPAddr, Length);
VirtualProtect(MemLoc, Length, PAGE_READONLY, &OldProtect);
}
void CMipsMemoryVM::UnProtectMemory(uint32_t StartVaddr, uint32_t EndVaddr)
{
WriteTraceF(TraceProtectedMem, __FUNCTION__ ": StartVaddr: %08X EndVaddr: %08X", StartVaddr, EndVaddr);
WriteTrace(TraceProtectedMem, TraceDebug, "StartVaddr: %08X EndVaddr: %08X", StartVaddr, EndVaddr);
if (!ValidVaddr(StartVaddr) || !ValidVaddr(EndVaddr)) { return; }
//Get Physical Addresses passed
@ -5432,7 +5432,7 @@ void CMipsMemoryVM::RdramChanged(CMipsMemoryVM * _this)
);
if (result == NULL)
{
WriteTrace(TraceError, __FUNCTION__": failed to allocate extended memory");
WriteTrace(TraceN64System, TraceError, "failed to allocate extended memory");
g_Notify->FatalError(GS(MSG_MEM_ALLOC_ERROR));
}
}

View File

@ -83,7 +83,7 @@ void LoadMempak(int Control)
if (hMempakFile[Control] == INVALID_HANDLE_VALUE)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to open (%s), lastError = %X", (LPCTSTR)FileName, GetLastError());
WriteTrace(TraceN64System, TraceError, "Failed to open (%s), lastError = %X", (LPCTSTR)FileName, GetLastError());
return;
}

View File

@ -45,7 +45,7 @@ bool CSram::LoadSram()
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL);
if (m_hFile == INVALID_HANDLE_VALUE)
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to open (%s), ReadOnly = %d, LastError = %X", (LPCTSTR)FileName, m_ReadOnly, GetLastError());
WriteTrace(TraceN64System, TraceError, "Failed to open (%s), ReadOnly = %d, LastError = %X", (LPCTSTR)FileName, m_ReadOnly, GetLastError());
return false;
}
SetFilePointer(m_hFile, 0, NULL, FILE_BEGIN);

View File

@ -214,7 +214,7 @@ void CSystemTimer::TimerDone()
}
catch (...)
{
WriteTraceF(TraceError, __FUNCTION__ ": Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__);
WriteTrace(TraceN64System, TraceError, "Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__);
}
g_Reg->MI_INTR_REG |= MI_INTR_VI;
g_Reg->CheckInterrupts();

View File

@ -16,17 +16,17 @@
CTLB::CTLB(CTLB_CB * CallBack) :
m_CB(CallBack)
{
WriteTrace(TraceTLB, __FUNCTION__ ": Start");
WriteTrace(TraceTLB, TraceDebug, "Start");
memset(m_tlb, 0, sizeof(m_tlb));
memset(m_FastTlb, 0, sizeof(m_FastTlb));
Reset(true);
WriteTrace(TraceTLB, __FUNCTION__ ": Done");
WriteTrace(TraceTLB, TraceDebug, "Done");
}
CTLB::~CTLB()
{
WriteTrace(TraceTLB, __FUNCTION__ ": Start");
WriteTrace(TraceTLB, __FUNCTION__ ": Done");
WriteTrace(TraceTLB, TraceDebug, "Start");
WriteTrace(TraceTLB, TraceDebug, "Done");
}
void CTLB::Reset(bool InvalidateTLB)
@ -79,7 +79,7 @@ void CTLB::Probe()
{
int Counter;
WriteTrace(TraceTLB, __FUNCTION__ ": Start");
WriteTrace(TraceTLB, TraceDebug, "Start");
g_Reg->INDEX_REGISTER |= 0x80000000;
for (Counter = 0; Counter < 32; Counter++)
{
@ -106,7 +106,7 @@ void CTLB::Probe()
}
}
}
WriteTrace(TraceTLB, __FUNCTION__ ": Done");
WriteTrace(TraceTLB, TraceDebug, "Done");
}
void CTLB::ReadEntry()
@ -123,7 +123,7 @@ void CTLB::WriteEntry(int index, bool Random)
{
int FastIndx;
WriteTraceF(TraceTLB, __FUNCTION__ ": %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);
WriteTrace(TraceTLB, TraceDebug, "%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
if (m_tlb[index].EntryDefined)
@ -133,14 +133,14 @@ void CTLB::WriteEntry(int index, bool Random)
*_PROGRAM_COUNTER < m_FastTlb[FastIndx].VEND &&
m_FastTlb[FastIndx].ValidEntry && m_FastTlb[FastIndx].VALID)
{
WriteTraceF(TraceTLB, __FUNCTION__ ": Ignored PC: %X VAddr Start: %X VEND: %X", *_PROGRAM_COUNTER, m_FastTlb[FastIndx].VSTART, m_FastTlb[FastIndx].VEND);
WriteTrace(TraceTLB, TraceDebug, "Ignored PC: %X VAddr Start: %X VEND: %X", *_PROGRAM_COUNTER, m_FastTlb[FastIndx].VSTART, m_FastTlb[FastIndx].VEND);
return;
}
if (*_PROGRAM_COUNTER >= m_FastTlb[FastIndx + 1].VSTART &&
*_PROGRAM_COUNTER < m_FastTlb[FastIndx + 1].VEND &&
m_FastTlb[FastIndx + 1].ValidEntry && m_FastTlb[FastIndx + 1].VALID)
{
WriteTraceF(TraceTLB, __FUNCTION__ ": Ignored PC: %X VAddr Start: %X VEND: %X", *_PROGRAM_COUNTER, m_FastTlb[FastIndx + 1].VSTART, m_FastTlb[FastIndx + 1].VEND);
WriteTrace(TraceTLB, TraceDebug, "Ignored PC: %X VAddr Start: %X VEND: %X", *_PROGRAM_COUNTER, m_FastTlb[FastIndx + 1].VSTART, m_FastTlb[FastIndx + 1].VEND);
return;
}
}

View File

@ -180,7 +180,7 @@ void CN64System::ExternalEvent(SystemEvent action)
}
break;
default:
WriteTraceF(TraceError, __FUNCTION__ ": Unknown event %d", action);
WriteTrace(TraceN64System, TraceError, "Unknown event %d", action);
g_Notify->BreakPoint(__FILE__, __LINE__);
}
}
@ -194,22 +194,22 @@ bool CN64System::RunFileImage(const char * FileLoc)
}
//Mark the rom as loading
WriteTrace(TraceDebug, __FUNCTION__ ": Mark Rom as loading");
WriteTrace(TraceN64System, TraceDebug, "Mark Rom as loading");
g_Settings->SaveString(Game_File, "");
g_Settings->SaveBool(GameRunning_LoadingInProgress, true);
//Try to load the passed N64 rom
if (g_Rom == NULL)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Allocating global rom object");
WriteTrace(TraceN64System, TraceDebug, "Allocating global rom object");
g_Rom = new CN64Rom();
}
else
{
WriteTrace(TraceDebug, __FUNCTION__ ": Use existing global rom object");
WriteTrace(TraceN64System, TraceDebug, "Use existing global rom object");
}
WriteTraceF(TraceDebug, __FUNCTION__ ": Loading \"%s\"", FileLoc);
WriteTrace(TraceN64System, TraceDebug, "Loading \"%s\"", FileLoc);
if (g_Rom->LoadN64Image(FileLoc))
{
g_System->RefreshGameSettings();
@ -228,7 +228,7 @@ bool CN64System::RunFileImage(const char * FileLoc)
}
else
{
WriteTraceF(TraceError, __FUNCTION__ ": LoadN64Image failed (\"%s\")", FileLoc);
WriteTrace(TraceN64System, TraceError, "LoadN64Image failed (\"%s\")", FileLoc);
g_Notify->DisplayError(g_Rom->GetError());
delete g_Rom;
g_Rom = NULL;
@ -252,18 +252,18 @@ bool CN64System::EmulationStarting(void * hThread, uint32_t ThreadId)
{
bool bRes = true;
WriteTrace(TraceDebug, __FUNCTION__ ": Setting N64 system as active");
WriteTrace(TraceN64System, TraceDebug, "Setting N64 system as active");
if (g_BaseSystem->SetActiveSystem(true))
{
g_BaseSystem->m_CPU_Handle = hThread;
g_BaseSystem->m_CPU_ThreadID = ThreadId;
WriteTrace(TraceDebug, __FUNCTION__ ": Setting up N64 system done");
WriteTrace(TraceN64System, TraceDebug, "Setting up N64 system done");
g_Settings->SaveBool(GameRunning_LoadingInProgress, false);
try
{
WriteTrace(TraceDebug, __FUNCTION__ ": Game set to auto start, starting");
WriteTrace(TraceN64System, TraceDebug, "Game set to auto start, starting");
g_BaseSystem->StartEmulation2(false);
WriteTrace(TraceDebug, __FUNCTION__ ": Game Done");
WriteTrace(TraceN64System, TraceDebug, "Game Done");
}
catch (...)
{
@ -272,7 +272,7 @@ bool CN64System::EmulationStarting(void * hThread, uint32_t ThreadId)
}
else
{
WriteTrace(TraceError, __FUNCTION__ ": SetActiveSystem failed");
WriteTrace(TraceN64System, TraceError, "SetActiveSystem failed");
g_Notify->DisplayError(__FUNCTIONW__ L": Failed to Initialize N64 System");
g_Settings->SaveBool(GameRunning_LoadingInProgress, false);
bRes = false;
@ -284,7 +284,7 @@ void CN64System::StartEmulation2(bool NewThread)
{
if (NewThread)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Starting");
WriteTrace(TraceN64System, TraceDebug, "Starting");
if (bHaveDebugger())
{
StartLog();
@ -552,13 +552,13 @@ bool CN64System::SetActiveSystem(bool bActive)
if (bInitPlugin)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Reseting Plugins");
WriteTrace(TraceN64System, TraceDebug, "Reseting Plugins");
g_Notify->DisplayMessage(5, MSG_PLUGIN_INIT);
m_Plugins->CreatePlugins();
bRes = m_Plugins->Initiate(this);
if (!bRes)
{
WriteTrace(TraceError, __FUNCTION__ ": g_Plugins->Initiate Failed");
WriteTrace(TraceN64System, TraceError, "g_Plugins->Initiate Failed");
}
}
@ -1238,7 +1238,7 @@ void CN64System::DumpSyncErrors(CN64System * SecondCPU)
bool CN64System::SaveState()
{
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TraceN64System, TraceDebug, "Start");
// if (!m_SystemTimer.SaveAllowed()) { return false; }
if ((m_Reg.STATUS_REGISTER & STATUS_EXL) != 0) { return false; }
@ -1393,7 +1393,7 @@ bool CN64System::SaveState()
g_Notify->DisplayMessage(5, stdwstr_f(L"%ws %ws", SaveMessage.c_str(), stdstr(SavedFileName.GetNameExtension()).ToUTF16().c_str()).c_str());
//Notify().RefreshMenu();
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceN64System, TraceDebug, "Done");
return true;
}
@ -1449,7 +1449,7 @@ bool CN64System::LoadState(const char * FileName)
old_width = g_Reg->VI_WIDTH_REG;
old_dacrate = g_Reg->AI_DACRATE_REG;
WriteTraceF((TraceType)(TraceDebug | TraceRecompiler), __FUNCTION__ "(%s): Start", FileName);
WriteTrace(TraceN64System, TraceDebug, "(%s): Start", FileName);
char drive[_MAX_DRIVE], dir[_MAX_DIR], fname[_MAX_FNAME], ext[_MAX_EXT];
_splitpath(FileName, drive, dir, fname, ext);
@ -1646,25 +1646,25 @@ bool CN64System::LoadState(const char * FileName)
m_Reg.RANDOM_REGISTER += 32 - m_Reg.WIRED_REGISTER;
}
//Fix up timer
WriteTrace(TraceDebug, __FUNCTION__ ": 2");
WriteTrace(TraceN64System, TraceDebug, "2");
m_SystemTimer.SetTimer(CSystemTimer::CompareTimer, m_Reg.COMPARE_REGISTER - m_Reg.COUNT_REGISTER, false);
m_SystemTimer.SetTimer(CSystemTimer::ViTimer, NextVITimer, false);
m_Reg.FixFpuLocations();
WriteTrace(TraceDebug, __FUNCTION__ ": 5");
WriteTrace(TraceN64System, TraceDebug, "5");
m_TLB.Reset(false);
WriteTrace(TraceDebug, __FUNCTION__ ": 6");
WriteTrace(TraceN64System, TraceDebug, "6");
m_CPU_Usage.ResetCounters();
WriteTrace(TraceDebug, __FUNCTION__ ": 7");
WriteTrace(TraceN64System, TraceDebug, "7");
m_Profile.ResetCounters();
WriteTrace(TraceDebug, __FUNCTION__ ": 8");
WriteTrace(TraceN64System, TraceDebug, "8");
m_FPS.Reset(true);
WriteTrace(TraceDebug, __FUNCTION__ ": 9");
WriteTrace(TraceN64System, TraceDebug, "9");
if (bLogX86Code())
{
Stop_x86_Log();
Start_x86_Log();
}
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceN64System, TraceDebug, "Done");
#ifdef TEST_SP_TRACKING
m_CurrentSP = GPR[29].UW[0];
@ -1685,10 +1685,10 @@ bool CN64System::LoadState(const char * FileName)
SyncCPU(m_SyncCPU);
}
}
WriteTrace(TraceDebug, __FUNCTION__ ": 13");
WriteTrace(TraceN64System, TraceDebug, "13");
std::wstring LoadMsg = g_Lang->GetString(MSG_LOADED_STATE);
g_Notify->DisplayMessage(5, stdwstr_f(L"%ws %ws", LoadMsg.c_str(), stdstr(CPath(FileNameStr).GetNameExtension()).ToUTF16().c_str()).c_str());
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceN64System, TraceDebug, "Done");
return true;
}
@ -1699,7 +1699,7 @@ void CN64System::DisplayRSPListCount()
void CN64System::RunRSP()
{
WriteTraceF(TraceRSP, __FUNCTION__ ": Start (SP Status %X)", m_Reg.SP_STATUS_REG);
WriteTrace(TraceRSP, TraceDebug, "Start (SP Status %X)", m_Reg.SP_STATUS_REG);
if ((m_Reg.SP_STATUS_REG & SP_STATUS_HALT) == 0)
{
if ((m_Reg.SP_STATUS_REG & SP_STATUS_BROKE) == 0)
@ -1712,23 +1712,23 @@ void CN64System::RunRSP()
g_MMU->LW_VAddr(0xA4000FC0, Task);
if (Task == 1 && (m_Reg.DPC_STATUS_REG & DPC_STATUS_FREEZE) != 0)
{
WriteTrace(TraceRSP, __FUNCTION__ ": Dlist that is frozen");
WriteTrace(TraceRSP, TraceDebug, "Dlist that is frozen");
return;
}
switch (Task)
{
case 1:
WriteTrace(TraceRSP, __FUNCTION__ ": *** Display list ***");
WriteTrace(TraceRSP, TraceDebug, "*** Display list ***");
m_DlistCount += 1;
m_FPS.UpdateDlCounter();
break;
case 2:
WriteTrace(TraceRSP, __FUNCTION__ ": *** Audio list ***");
WriteTrace(TraceRSP, TraceDebug, "*** Audio list ***");
m_AlistCount += 1;
break;
default:
WriteTrace(TraceRSP, __FUNCTION__ ": *** Unknown list ***");
WriteTrace(TraceRSP, TraceDebug, "*** Unknown list ***");
m_UnknownCount += 1;
break;
}
@ -1750,13 +1750,13 @@ void CN64System::RunRSP()
__try
{
WriteTrace(TraceRSP, __FUNCTION__ ": do cycles - starting");
WriteTrace(TraceRSP, TraceDebug, "do cycles - starting");
g_Plugins->RSP()->DoRspCycles(100);
WriteTrace(TraceRSP, __FUNCTION__ ": do cycles - Done");
WriteTrace(TraceRSP, TraceDebug, "do cycles - Done");
}
__except (g_MMU->MemoryFilter(GetExceptionCode(), GetExceptionInformation()))
{
WriteTrace(TraceError, __FUNCTION__ ": exception generated");
WriteTrace(TraceRSP, TraceError, "exception generated");
g_Notify->FatalError(__FUNCTIONW__ L"\nUnknown memory action\n\nEmulation stop");
}
@ -1779,11 +1779,11 @@ void CN64System::RunRSP()
{
m_RspBroke = true;
}
WriteTrace(TraceRSP, __FUNCTION__ ": check interrupts");
WriteTrace(TraceRSP, TraceDebug, "check interrupts");
g_Reg->CheckInterrupts();
}
}
WriteTraceF(TraceRSP, __FUNCTION__ ": Done (SP Status %X)", m_Reg.SP_STATUS_REG);
WriteTrace(TraceRSP, TraceDebug, "Done (SP Status %X)", m_Reg.SP_STATUS_REG);
}
void CN64System::SyncToAudio()
@ -1800,7 +1800,7 @@ void CN64System::SyncToAudio()
{
if (g_Reg->m_AudioIntrReg != 0)
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Audio Interrupt done (%d)", i);
WriteTrace(TraceAudio, TraceDebug, "Audio Interrupt done (%d)", i);
break;
}
pjutil::Sleep(1);
@ -1854,14 +1854,13 @@ void CN64System::RefreshScreen()
__try
{
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "Starting");
g_Plugins->Gfx()->UpdateScreen();
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "Done");
}
__except (g_MMU->MemoryFilter(GetExceptionCode(), GetExceptionInformation()))
{
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Exception caught");
WriteTrace(TraceError, __FUNCTION__ ": Exception caught");
WriteTrace(TraceGFXPlugin, TraceError, "Exception caught");
}
g_MMU->UpdateFieldSerration((m_Reg.VI_STATUS_REG & 0x40) != 0);
@ -1912,7 +1911,7 @@ void CN64System::RefreshScreen()
bool CN64System::WriteToProtectedMemory(uint32_t Address, int length)
{
WriteTraceF(TraceDebug, __FUNCTION__ ": Address: %X Len: %d", Address, length);
WriteTrace(TraceN64System, TraceDebug, "Address: %X Len: %d", Address, length);
if (m_Recomp)
{
g_Notify->BreakPoint(__FILE__, __LINE__);
@ -1943,4 +1942,4 @@ void CN64System::TLB_Changed()
{
g_Debugger->TLBChanged();
}
}
}

View File

@ -377,7 +377,7 @@ void CCodeSection::CompileExit(uint32_t JumpPC, uint32_t TargetPC, CRegInfo &Exi
ExitCodeBlock();
break;
default:
WriteTraceF(TraceError, __FUNCTION__ ": how did you want to exit on reason (%d) ???", reason);
WriteTrace(TraceRecompiler, TraceError, "how did you want to exit on reason (%d) ???", reason);
g_Notify->BreakPoint(__FILE__, __LINE__);
}
}
@ -2145,7 +2145,7 @@ bool CCodeSection::InheritParentInfo()
}
break;
default:
WriteTraceF(TraceError, __FUNCTION__ ": Unhandled Reg state %d\nin InheritParentInfo", GetMipsRegState(i2));
WriteTrace(TraceRecompiler, TraceError, "Unhandled Reg state %d\nin InheritParentInfo", GetMipsRegState(i2));
g_Notify->BreakPoint(__FILE__, __LINE__);
}
}

View File

@ -15,8 +15,8 @@
#include <Windows.h>
CFunctionMap::CFunctionMap() :
m_JumpTable(NULL),
m_FunctionTable(NULL)
m_JumpTable(NULL),
m_FunctionTable(NULL)
{
}
@ -32,7 +32,7 @@ bool CFunctionMap::AllocateMemory()
m_FunctionTable = (PCCompiledFunc_TABLE *)VirtualAlloc(NULL, 0xFFFFF * sizeof(CCompiledFunc *), MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
if (m_FunctionTable == NULL)
{
WriteTrace(TraceError, __FUNCTION__ ": failed to allocate function table");
WriteTrace(TraceRecompiler, TraceError, "failed to allocate function table");
g_Notify->FatalError(MSG_MEM_ALLOC_ERROR);
return false;
}
@ -43,7 +43,7 @@ bool CFunctionMap::AllocateMemory()
m_JumpTable = new PCCompiledFunc[g_MMU->RdramSize() >> 2];
if (m_JumpTable == NULL)
{
WriteTrace(TraceError, __FUNCTION__ ": failed to allocate jump table");
WriteTrace(TraceRecompiler, TraceError, "failed to allocate jump table");
g_Notify->FatalError(MSG_MEM_ALLOC_ERROR);
return false;
}
@ -80,4 +80,4 @@ void CFunctionMap::Reset(bool bAllocate)
{
AllocateMemory();
}
}
}

View File

@ -43,12 +43,12 @@ void CRecompiler::Run()
if (!CRecompMemory::AllocateMemory())
{
WriteTrace(TraceError, __FUNCTION__ ": AllocateMemory failed");
WriteTrace(TraceRecompiler, TraceError, "AllocateMemory failed");
return;
}
if (!CFunctionMap::AllocateMemory())
{
WriteTrace(TraceError, __FUNCTION__ ": AllocateMemory failed");
WriteTrace(TraceRecompiler, TraceError, "AllocateMemory failed");
return;
}
m_EndEmulation = false;
@ -145,13 +145,13 @@ void CRecompiler::RecompilerMain_VirtualTable()
table = new PCCompiledFunc[(0x1000 >> 2)];
if (table == NULL)
{
WriteTrace(TraceError, __FUNCTION__ ": failed to allocate PCCompiledFunc");
WriteTrace(TraceRecompiler, TraceError, "failed to allocate PCCompiledFunc");
g_Notify->FatalError(MSG_MEM_ALLOC_ERROR);
}
memset(table, 0, sizeof(PCCompiledFunc) * (0x1000 >> 2));
if (g_System->bSMM_Protect())
{
WriteTraceF(TraceError, __FUNCTION__ ": Create Table (%X): Index = %d", table, PC >> 0xC);
WriteTrace(TraceRecompiler, TraceError, "Create Table (%X): Index = %d", table, PC >> 0xC);
g_MMU->ProtectMemory(PC & ~0xFFF, PC | 0xFFF);
}
}
@ -905,7 +905,7 @@ CCompiledFunc * CRecompiler::CompilerCode()
uint32_t pAddr = 0;
if (!g_TransVaddr->TranslateVaddr(PROGRAM_COUNTER, pAddr))
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to translate %X", PROGRAM_COUNTER);
WriteTrace(TraceRecompiler, TraceError, "Failed to translate %X", PROGRAM_COUNTER);
return NULL;
}
@ -930,7 +930,7 @@ CCompiledFunc * CRecompiler::CompilerCode()
CheckRecompMem();
//uint32_t StartTime = timeGetTime();
WriteTraceF(TraceRecompiler, __FUNCTION__ ": Compile Block-Start: Program Counter: %X pAddr: %X", PROGRAM_COUNTER, pAddr);
WriteTrace(TraceRecompiler, TraceDebug, ": Compile Block-Start: Program Counter: %X pAddr: %X", PROGRAM_COUNTER, pAddr);
CCodeBlock CodeBlock(PROGRAM_COUNTER, RecompPos());
if (!CodeBlock.Compile())
@ -966,7 +966,7 @@ void CRecompiler::ClearRecompCode_Phys(uint32_t Address, int length, REMOVE_REAS
uint32_t VAddr, Index = 0;
while (g_TLB->PAddrToVAddr(Address, VAddr, Index))
{
WriteTraceF(TraceRecompiler, __FUNCTION__ ": ClearRecompCode Vaddr %X len: %d", VAddr, length);
WriteTrace(TraceRecompiler, TraceDebug, "ClearRecompCode Vaddr %X len: %d", VAddr, length);
ClearRecompCode_Virt(VAddr, length, Reason);
}
}
@ -981,7 +981,7 @@ void CRecompiler::ClearRecompCode_Phys(uint32_t Address, int length, REMOVE_REAS
g_Notify->BreakPoint(__FILE__, __LINE__);
ClearLen = g_System->RdramSize() - Address;
}
WriteTraceF(TraceRecompiler, __FUNCTION__ ": Reseting Jump Table, Addr: %X len: %d", Address, ClearLen);
WriteTrace(TraceRecompiler, TraceDebug, "Reseting Jump Table, Addr: %X len: %d", Address, ClearLen);
memset((uint8_t *)JumpTable() + Address, 0, ClearLen);
if (g_System->bSMM_Protect())
{
@ -990,7 +990,7 @@ void CRecompiler::ClearRecompCode_Phys(uint32_t Address, int length, REMOVE_REAS
}
else
{
WriteTraceF(TraceRecompiler, __FUNCTION__ ": Ignoring reset of Jump Table, Addr: %X len: %d", Address, ((length + 3) & ~3));
WriteTrace(TraceRecompiler, TraceDebug, "Ignoring reset of Jump Table, Addr: %X len: %d", Address, ((length + 3) & ~3));
}
}
}
@ -1012,7 +1012,7 @@ void CRecompiler::ClearRecompCode_Virt(uint32_t Address, int length, REMOVE_REAS
PCCompiledFunc_TABLE & table = FunctionTable()[AddressIndex];
if (table)
{
WriteTraceF(TraceError, __FUNCTION__ ": Delete Table (%X): Index = %d", table, AddressIndex);
WriteTrace(TraceRecompiler, TraceError, "Delete Table (%X): Index = %d", table, AddressIndex);
delete table;
table = NULL;
g_MMU->UnProtectMemory(Address, Address + length);
@ -1058,7 +1058,7 @@ void CRecompiler::ResetMemoryStackPos()
}
else
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to translate SP address (%s)", m_Registers.m_GPR[29].UW[0]);
WriteTrace(TraceRecompiler, TraceError, "Failed to translate SP address (%s)", m_Registers.m_GPR[29].UW[0]);
g_Notify->BreakPoint(__FILE__, __LINE__);
}
}

View File

@ -36,7 +36,7 @@ bool CRecompMemory::AllocateMemory()
uint8_t * RecompCodeBase = (uint8_t *)VirtualAlloc(NULL, MaxCompileBufferSize + 4, MEM_RESERVE | MEM_TOP_DOWN, PAGE_EXECUTE_READWRITE);
if (RecompCodeBase == NULL)
{
WriteTrace(TraceError, __FUNCTION__ ": failed to allocate RecompCodeBase");
WriteTrace(TraceRecompiler, TraceError, "failed to allocate RecompCodeBase");
g_Notify->DisplayError(MSG_MEM_ALLOC_ERROR);
return false;
}
@ -44,7 +44,7 @@ bool CRecompMemory::AllocateMemory()
m_RecompCode = (uint8_t *)VirtualAlloc(RecompCodeBase, InitialCompileBufferSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (m_RecompCode == NULL)
{
WriteTrace(TraceError, __FUNCTION__ ": failed to commit initial buffer");
WriteTrace(TraceRecompiler, TraceError, "failed to commit initial buffer");
VirtualFree(RecompCodeBase, 0, MEM_RELEASE);
g_Notify->DisplayError(MSG_MEM_ALLOC_ERROR);
return false;
@ -70,7 +70,7 @@ void CRecompMemory::CheckRecompMem()
LPVOID MemAddr = VirtualAlloc(m_RecompCode + m_RecompSize, IncreaseCompileBufferSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
if (MemAddr == NULL)
{
WriteTrace(TraceError, __FUNCTION__ ": failed to increase buffer");
WriteTrace(TraceRecompiler, TraceError, "failed to increase buffer");
g_Notify->FatalError(MSG_MEM_ALLOC_ERROR);
}
m_RecompSize += IncreaseCompileBufferSize;

View File

@ -826,7 +826,7 @@ CX86Ops::x86Reg CRegInfo::Map_TempReg(CX86Ops::x86Reg Reg, int32_t MipsReg, bool
Reg = FreeX86Reg();
if (Reg == x86_Unknown)
{
WriteTrace(TraceError, __FUNCTION__ ": Failed to find a free register");
WriteTrace(TraceRegisterCache, TraceError, "Failed to find a free register");
g_Notify->BreakPoint(__FILE__, __LINE__);
return x86_Unknown;
}
@ -844,7 +844,7 @@ CX86Ops::x86Reg CRegInfo::Map_TempReg(CX86Ops::x86Reg Reg, int32_t MipsReg, bool
Reg = Free8BitX86Reg();
if (Reg < 0)
{
WriteTrace(TraceError, __FUNCTION__ ": Failed to find a free 8 bit register");
WriteTrace(TraceRegisterCache, TraceError, "Failed to find a free 8 bit register");
g_Notify->BreakPoint(__FILE__, __LINE__);
return x86_Unknown;
}
@ -854,7 +854,7 @@ CX86Ops::x86Reg CRegInfo::Map_TempReg(CX86Ops::x86Reg Reg, int32_t MipsReg, bool
{
if (GetX86Protected(Reg))
{
WriteTrace(TraceError, __FUNCTION__ ": Register is protected");
WriteTrace(TraceRegisterCache, TraceError, "Register is protected");
g_Notify->BreakPoint(__FILE__, __LINE__);
return x86_Unknown;
}

View File

@ -18,12 +18,12 @@
#include <Windows.h>
CAudioPlugin::CAudioPlugin() :
AiLenChanged(NULL),
AiReadLength(NULL),
ProcessAList(NULL),
m_hAudioThread(NULL),
AiUpdate(NULL),
AiDacrateChanged(NULL)
AiLenChanged(NULL),
AiReadLength(NULL),
ProcessAList(NULL),
m_hAudioThread(NULL),
AiUpdate(NULL),
AiDacrateChanged(NULL)
{
}
@ -148,7 +148,7 @@ bool CAudioPlugin::Initiate(CN64System * System, RenderWindow * Window)
{
if (m_hAudioThread)
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Terminate Audio Thread");
WriteTrace(TraceAudioPlugin, TraceDebug, "Terminate Audio Thread");
TerminateThread(m_hAudioThread, 0);
}
m_hAudioThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)AudioThread, (LPVOID)this, 0, &ThreadID);
@ -166,7 +166,7 @@ void CAudioPlugin::UnloadPluginDetails(void)
{
if (m_hAudioThread)
{
WriteTraceF(TraceAudio, __FUNCTION__ ": Terminate Audio Thread");
WriteTrace(TraceAudioPlugin, TraceDebug, "Terminate Audio Thread");
TerminateThread(m_hAudioThread, 0);
m_hAudioThread = NULL;
}
@ -180,21 +180,22 @@ void CAudioPlugin::UnloadPluginDetails(void)
void CAudioPlugin::DacrateChanged(SYSTEM_TYPE Type)
{
if (!Initialized()) { return; }
WriteTraceF(TraceAudio, __FUNCTION__ ": SystemType: %s", Type == SYSTEM_NTSC ? "SYSTEM_NTSC" : "SYSTEM_PAL");
WriteTrace(TraceAudioPlugin, TraceDebug, "SystemType: %s", Type == SYSTEM_NTSC ? "SYSTEM_NTSC" : "SYSTEM_PAL");
//uint32_t Frequency = g_Reg->AI_DACRATE_REG * 30;
//uint32_t CountsPerSecond = (g_Reg->VI_V_SYNC_REG != 0 ? (g_Reg->VI_V_SYNC_REG + 1) * g_Settings->LoadDword(Game_ViRefreshRate) : 500000) * 60;
AiDacrateChanged(Type);
}
void CAudioPlugin::AudioThread(CAudioPlugin * _this) {
void CAudioPlugin::AudioThread(CAudioPlugin * _this)
{
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
if (g_Settings->LoadBool(Setting_CN64TimeCritical))
{
SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_HIGHEST);
}
for (;;)
if (g_Settings->LoadBool(Setting_CN64TimeCritical))
{
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_HIGHEST);
}
for (;;)
{
_this->AiUpdate(true);
}
}
}

View File

@ -120,13 +120,13 @@ bool CPlugin::Load(const char * FileName)
{
return false;
}
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): Functions loaded", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "Functions loaded");
if (PluginOpened)
{
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): Before Plugin Opened", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "Before Plugin Opened");
PluginOpened();
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): After Plugin Opened", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "After Plugin Opened");
}
return true;
}
@ -134,13 +134,15 @@ bool CPlugin::Load(const char * FileName)
void CPlugin::RomOpened()
{
if (m_RomOpen)
{
return;
}
if (RomOpen != NULL)
{
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): Before Rom Open", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "Before Rom Open");
RomOpen();
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): After Rom Open", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "After Rom Open");
}
m_RomOpen = true;
}
@ -150,10 +152,10 @@ void CPlugin::RomClose()
if (!m_RomOpen)
return;
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): Before Rom Close", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "Before Rom Close");
RomClosed();
m_RomOpen = false;
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): After Rom Close", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "After Rom Close");
}
void CPlugin::GameReset()
@ -170,19 +172,19 @@ void CPlugin::GameReset()
void CPlugin::Close()
{
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): Start", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "(%s): Start", PluginType());
RomClose();
if (m_Initialized)
{
CloseDLL();
m_Initialized = false;
}
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): Done", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "(%s): Done", PluginType());
}
void CPlugin::UnloadPlugin()
{
WriteTraceF(PluginTraceType(), __FUNCTION__ "(%s): unloading", PluginType());
WriteTrace(PluginTraceType(), TraceDebug, "(%s): unloading", PluginType());
memset(&m_PluginInfo, 0, sizeof(m_PluginInfo));
if (m_hDll != NULL)
{
@ -214,16 +216,16 @@ const char * CPlugin::PluginType() const
return "Unknown";
}
TraceType CPlugin::PluginTraceType() const
TraceModuleProject64 CPlugin::PluginTraceType() const
{
switch (m_PluginInfo.Type)
{
case PLUGIN_TYPE_RSP: return TraceRSP;
case PLUGIN_TYPE_GFX: return TraceGfxPlugin;
case PLUGIN_TYPE_AUDIO: return TraceDebug;
case PLUGIN_TYPE_CONTROLLER: return TraceDebug;
case PLUGIN_TYPE_RSP: return TraceRSPPlugin;
case PLUGIN_TYPE_GFX: return TraceGFXPlugin;
case PLUGIN_TYPE_AUDIO: return TraceAudioPlugin;
case PLUGIN_TYPE_CONTROLLER: return TraceControllerPlugin;
}
return TraceDebug;
return TraceUnknown;
}
bool CPlugin::ValidPluginVersion(PLUGIN_INFO & PluginInfo)

View File

@ -11,6 +11,7 @@
#pragma once
#include <Project64-core/Settings/DebugSettings.h>
#include <Project64-core/TraceModulesProject64.h>
#include "PluginClass.h"
class CPlugin :
@ -40,7 +41,7 @@ public:
protected:
void UnloadPlugin();
const char * PluginType() const;
TraceType PluginTraceType() const;
TraceModuleProject64 PluginTraceType() const;
virtual void UnloadPluginDetails() = 0;
virtual PLUGIN_TYPE type() = 0;
virtual bool LoadFunctions(void) = 0;

View File

@ -84,7 +84,7 @@ void CPlugins::PluginChanged(CPlugins * _this)
}
template <typename plugin_type>
static void LoadPlugin(SettingID PluginSettingID, SettingID PluginVerSettingID, plugin_type * & plugin, const char * PluginDir, stdstr & FileName, TraceType TraceLevel, const char * type)
static void LoadPlugin(SettingID PluginSettingID, SettingID PluginVerSettingID, plugin_type * & plugin, const char * PluginDir, stdstr & FileName, TraceModuleProject64 TraceLevel, const char * type)
{
if (plugin != NULL)
{
@ -95,39 +95,39 @@ static void LoadPlugin(SettingID PluginSettingID, SettingID PluginVerSettingID,
plugin = new plugin_type();
if (plugin)
{
WriteTraceF(TraceLevel, __FUNCTION__ ": %s Loading (%s): Starting", type, (const char *)PluginFileName);
WriteTrace(TraceLevel, TraceDebug, "%s Loading (%s): Starting", type, (const char *)PluginFileName);
if (plugin->Load(PluginFileName))
{
WriteTraceF(TraceLevel, __FUNCTION__ ": %s Current Ver: %s", type, plugin->PluginName());
WriteTrace(TraceLevel, TraceDebug, "%s Current Ver: %s", type, plugin->PluginName());
g_Settings->SaveString(PluginVerSettingID, plugin->PluginName());
}
else
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to load %s", (const char *)PluginFileName);
WriteTrace(TraceError, TraceDebug, "Failed to load %s", (const char *)PluginFileName);
delete plugin;
plugin = NULL;
}
WriteTraceF(TraceLevel, __FUNCTION__ ": %s Loading Done", type);
WriteTrace(TraceLevel, TraceDebug, "%s Loading Done", type);
}
else
{
WriteTraceF(TraceError, __FUNCTION__ ": Failed to allocate %s plugin", type);
WriteTrace(TraceError, TraceDebug, "Failed to allocate %s plugin", type);
}
}
void CPlugins::CreatePlugins(void)
{
LoadPlugin(Game_Plugin_Gfx, Plugin_GFX_CurVer, m_Gfx, m_PluginDir.c_str(), m_GfxFile, TraceGfxPlugin, "GFX");
LoadPlugin(Game_Plugin_Audio, Plugin_AUDIO_CurVer, m_Audio, m_PluginDir.c_str(), m_AudioFile, TraceDebug, "Audio");
LoadPlugin(Game_Plugin_RSP, Plugin_RSP_CurVer, m_RSP, m_PluginDir.c_str(), m_RSPFile, TraceRSP, "RSP");
LoadPlugin(Game_Plugin_Controller, Plugin_CONT_CurVer, m_Control, m_PluginDir.c_str(), m_ControlFile, TraceDebug, "Control");
LoadPlugin(Game_Plugin_Gfx, Plugin_GFX_CurVer, m_Gfx, m_PluginDir.c_str(), m_GfxFile, TraceGFXPlugin, "GFX");
LoadPlugin(Game_Plugin_Audio, Plugin_AUDIO_CurVer, m_Audio, m_PluginDir.c_str(), m_AudioFile, TraceAudioPlugin, "Audio");
LoadPlugin(Game_Plugin_RSP, Plugin_RSP_CurVer, m_RSP, m_PluginDir.c_str(), m_RSPFile, TraceRSPPlugin, "RSP");
LoadPlugin(Game_Plugin_Controller, Plugin_CONT_CurVer, m_Control, m_PluginDir.c_str(), m_ControlFile, TraceControllerPlugin, "Control");
//Enable debugger
if (m_RSP != NULL && m_RSP->EnableDebugging)
{
WriteTrace(TraceRSP, __FUNCTION__ ": EnableDebugging starting");
WriteTrace(TraceRSPPlugin, TraceInfo, "EnableDebugging starting");
m_RSP->EnableDebugging(bHaveDebugger());
WriteTrace(TraceRSP, __FUNCTION__ ": EnableDebugging done");
WriteTrace(TraceRSPPlugin, TraceInfo, "EnableDebugging done");
}
}
@ -157,9 +157,9 @@ void CPlugins::DestroyGfxPlugin(void)
{
return;
}
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": before delete m_Gfx");
WriteTrace(TraceGFXPlugin, TraceInfo, "before delete m_Gfx");
delete m_Gfx;
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": after delete m_Gfx");
WriteTrace(TraceGFXPlugin, TraceInfo, "after delete m_Gfx");
m_Gfx = NULL;
// g_Settings->UnknownSetting_GFX = NULL;
DestroyRspPlugin();
@ -171,15 +171,16 @@ void CPlugins::DestroyAudioPlugin(void)
{
return;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 5");
WriteTrace(TraceAudioPlugin, TraceDebug, "before close");
m_Audio->Close();
WriteTrace(TraceDebug, __FUNCTION__ ": 6");
WriteTrace(TraceAudioPlugin, TraceDebug, "before delete");
delete m_Audio;
WriteTrace(TraceDebug, __FUNCTION__ ": 7");
WriteTrace(TraceAudioPlugin, TraceDebug, "after delete");
m_Audio = NULL;
WriteTrace(TraceDebug, __FUNCTION__ ": 8");
WriteTrace(TraceAudioPlugin, TraceDebug, "before DestroyRspPlugin");
// g_Settings->UnknownSetting_AUDIO = NULL;
DestroyRspPlugin();
WriteTrace(TraceAudioPlugin, TraceDebug, "after DestroyRspPlugin");
}
void CPlugins::DestroyRspPlugin(void)
@ -188,13 +189,12 @@ void CPlugins::DestroyRspPlugin(void)
{
return;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 9");
WriteTrace(TraceRSPPlugin, TraceDebug, "before close");
m_RSP->Close();
WriteTrace(TraceDebug, __FUNCTION__ ": 10");
WriteTrace(TraceRSPPlugin, TraceDebug, "before delete");
delete m_RSP;
WriteTrace(TraceDebug, __FUNCTION__ ": 11");
m_RSP = NULL;
WriteTrace(TraceDebug, __FUNCTION__ ": 12");
WriteTrace(TraceRSPPlugin, TraceDebug, "after delete");
// g_Settings->UnknownSetting_RSP = NULL;
}
@ -204,13 +204,12 @@ void CPlugins::DestroyControlPlugin(void)
{
return;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 13");
WriteTrace(TraceControllerPlugin, TraceDebug, "before close");
m_Control->Close();
WriteTrace(TraceDebug, __FUNCTION__ ": 14");
WriteTrace(TraceControllerPlugin, TraceDebug, "before delete");
delete m_Control;
WriteTrace(TraceDebug, __FUNCTION__ ": 15");
m_Control = NULL;
WriteTrace(TraceDebug, __FUNCTION__ ": 16");
WriteTrace(TraceControllerPlugin, TraceDebug, "after delete");
// g_Settings->UnknownSetting_CTRL = NULL;
}
@ -238,26 +237,26 @@ void CPlugins::RomClosed(void)
bool CPlugins::Initiate(CN64System * System)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TracePlugins, TraceDebug, "Start");
//Check to make sure we have the plugin available to be used
if (m_Gfx == NULL) { return false; }
if (m_Audio == NULL) { return false; }
if (m_RSP == NULL) { return false; }
if (m_Control == NULL) { return false; }
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "Gfx Initiate Starting");
if (!m_Gfx->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Done");
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "Gfx Initiate Done");
WriteTrace(TraceAudioPlugin, TraceDebug, "Audio Initiate Starting");
if (!m_Audio->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Done");
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Starting");
WriteTrace(TraceAudioPlugin, TraceDebug, "Audio Initiate Done");
WriteTrace(TraceControllerPlugin, TraceDebug, "Control Initiate Starting");
if (!m_Control->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Done");
WriteTrace(TraceRSP, __FUNCTION__ ": RSP Initiate Starting");
WriteTrace(TraceControllerPlugin, TraceDebug, "Control Initiate Done");
WriteTrace(TraceRSPPlugin, TraceDebug, "RSP Initiate Starting");
if (!m_RSP->Initiate(this, System)) { return false; }
WriteTrace(TraceRSP, __FUNCTION__ ": RSP Initiate Done");
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceRSPPlugin, TraceDebug, "RSP Initiate Done");
WriteTrace(TracePlugins, TraceDebug, "Done");
return true;
}
@ -268,7 +267,7 @@ bool CPlugins::ResetInUiThread(CN64System * System)
bool CPlugins::Reset(CN64System * System)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TracePlugins, TraceDebug, "Start");
bool bGfxChange = _stricmp(m_GfxFile.c_str(), g_Settings->LoadStringVal(Game_Plugin_Gfx).c_str()) != 0;
bool bAudioChange = _stricmp(m_AudioFile.c_str(), g_Settings->LoadStringVal(Game_Plugin_Audio).c_str()) != 0;
@ -288,29 +287,29 @@ bool CPlugins::Reset(CN64System * System)
if (m_Gfx && bGfxChange)
{
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "Gfx Initiate Starting");
if (!m_Gfx->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Gfx Initiate Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "Gfx Initiate Done");
}
if (m_Audio && bAudioChange)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Starting");
WriteTrace(TraceAudioPlugin, TraceDebug, "Audio Initiate Starting");
if (!m_Audio->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Audio Initiate Done");
WriteTrace(TraceAudioPlugin, TraceDebug, "Audio Initiate Done");
}
if (m_Control && bContChange)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Starting");
WriteTrace(TraceControllerPlugin, TraceDebug, "Control Initiate Starting");
if (!m_Control->Initiate(System, m_MainWindow)) { return false; }
WriteTrace(TraceDebug, __FUNCTION__ ": Control Initiate Done");
WriteTrace(TraceControllerPlugin, TraceDebug, "Control Initiate Done");
}
if (m_RSP && bRspChange)
{
WriteTrace(TraceRSP, __FUNCTION__ ": RSP Initiate Starting");
WriteTrace(TraceRSPPlugin, TraceDebug, "RSP Initiate Starting");
if (!m_RSP->Initiate(this, System)) { return false; }
WriteTrace(TraceRSP, __FUNCTION__ ": RSP Initiate Done");
WriteTrace(TraceRSPPlugin, TraceDebug, "RSP Initiate Done");
}
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TracePlugins, TraceDebug, "Done");
return true;
}

View File

@ -200,6 +200,7 @@
<ClInclude Include="Settings\SettingType\SettingsType-TempNumber.h" />
<ClInclude Include="Settings\SettingType\SettingsType-TempString.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="TraceModulesProject64.h" />
<ClInclude Include="Version.h" />
</ItemGroup>
<ItemGroup>

View File

@ -452,9 +452,6 @@
<ClInclude Include="N64System\ProfilingClass.h">
<Filter>Header Files\N64 System</Filter>
</ClInclude>
<ClInclude Include="N64System\Speed LimitorClass.h">
<Filter>Header Files\N64 System</Filter>
</ClInclude>
<ClInclude Include="N64System\SystemGlobals.h">
<Filter>Header Files\N64 System</Filter>
</ClInclude>
@ -563,5 +560,11 @@
<ClInclude Include="Settings\SettingsClass.h">
<Filter>Header Files\Settings</Filter>
</ClInclude>
<ClInclude Include="N64System\SpeedLimitorClass.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="TraceModulesProject64.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>

View File

@ -12,13 +12,13 @@
#include "SettingsType-RomDatabase.h"
#include "SettingsType-RDBYesNo.h"
CSettingTypeRDBYesNo::CSettingTypeRDBYesNo(const char * Name, SettingID DefaultSetting ) :
CSettingTypeRomDatabase(Name,DefaultSetting)
CSettingTypeRDBYesNo::CSettingTypeRDBYesNo(const char * Name, SettingID DefaultSetting) :
CSettingTypeRomDatabase(Name, DefaultSetting)
{
}
CSettingTypeRDBYesNo::CSettingTypeRDBYesNo(const char * Name, int DefaultValue ) :
CSettingTypeRomDatabase(Name,DefaultValue)
CSettingTypeRDBYesNo::CSettingTypeRDBYesNo(const char * Name, int DefaultValue) :
CSettingTypeRomDatabase(Name, DefaultValue)
{
}
@ -26,98 +26,99 @@ CSettingTypeRDBYesNo::~CSettingTypeRDBYesNo()
{
}
bool CSettingTypeRDBYesNo::Load ( int Index, bool & Value ) const
bool CSettingTypeRDBYesNo::Load(int Index, bool & Value) const
{
stdstr strValue;
bool bRes = m_SettingsIniFile->GetString(m_SectionIdent->c_str(),m_KeyName.c_str(),m_DefaultStr,strValue);
bool bRes = m_SettingsIniFile->GetString(m_SectionIdent->c_str(), m_KeyName.c_str(), m_DefaultStr, strValue);
if (!bRes)
{
LoadDefault(Index,Value);
LoadDefault(Index, Value);
return false;
}
const char * String = strValue.c_str();
if (_stricmp(String,"Yes") == 0)
if (_stricmp(String, "Yes") == 0)
{
Value = true;
}
else if (_stricmp(String,"No") == 0)
else if (_stricmp(String, "No") == 0)
{
Value = false;
}
else if (_stricmp(String,"default") == 0)
else if (_stricmp(String, "default") == 0)
{
LoadDefault(Index,Value);
LoadDefault(Index, Value);
return false;
}
else
{
WriteTraceF(TraceError,__FUNCTION__ ": Invalid Yes/No setting value (Section: %s Key: %s Value: %s)",m_SectionIdent->c_str(),String,m_KeyName.c_str(),strValue.c_str());
LoadDefault(Index,Value);
WriteTrace(TraceSettings, TraceError, "Invalid Yes/No setting value (Section: %s Key: %s Value: %s)", m_SectionIdent->c_str(), String, m_KeyName.c_str(), strValue.c_str());
LoadDefault(Index, Value);
return false;
}
return true;
}
bool CSettingTypeRDBYesNo::Load ( int /*Index*/, uint32_t & /*Value*/ ) const
bool CSettingTypeRDBYesNo::Load(int /*Index*/, uint32_t & /*Value*/) const
{
g_Notify->BreakPoint(__FILE__, __LINE__);
return false;
}
bool CSettingTypeRDBYesNo::Load ( int /*Index*/, stdstr & /*Value*/ ) const
bool CSettingTypeRDBYesNo::Load(int /*Index*/, stdstr & /*Value*/) const
{
g_Notify->BreakPoint(__FILE__, __LINE__);
return false;
}
//return the default values
void CSettingTypeRDBYesNo::LoadDefault ( int /*Index*/, bool & Value ) const
void CSettingTypeRDBYesNo::LoadDefault(int /*Index*/, bool & Value) const
{
if (m_DefaultSetting != Default_None)
{
if (m_DefaultSetting == Default_Constant)
{
Value = m_DefaultValue != 0;
} else {
g_Settings->LoadBool(m_DefaultSetting,Value);
}
else {
g_Settings->LoadBool(m_DefaultSetting, Value);
}
}
}
void CSettingTypeRDBYesNo::LoadDefault ( int /*Index*/, uint32_t & /*Value*/ ) const
void CSettingTypeRDBYesNo::LoadDefault(int /*Index*/, uint32_t & /*Value*/) const
{
g_Notify->BreakPoint(__FILE__, __LINE__);
}
void CSettingTypeRDBYesNo::LoadDefault ( int /*Index*/, stdstr & /*Value*/ ) const
void CSettingTypeRDBYesNo::LoadDefault(int /*Index*/, stdstr & /*Value*/) const
{
g_Notify->BreakPoint(__FILE__, __LINE__);
}
//Update the settings
void CSettingTypeRDBYesNo::Save ( int /*Index*/, bool Value )
void CSettingTypeRDBYesNo::Save(int /*Index*/, bool Value)
{
m_SettingsIniFile->SaveString(m_SectionIdent->c_str(),m_KeyName.c_str(),Value? "Yes" : "No");
m_SettingsIniFile->SaveString(m_SectionIdent->c_str(), m_KeyName.c_str(), Value ? "Yes" : "No");
}
void CSettingTypeRDBYesNo::Save ( int /*Index*/, uint32_t Value )
void CSettingTypeRDBYesNo::Save(int /*Index*/, uint32_t Value)
{
m_SettingsIniFile->SaveString(m_SectionIdent->c_str(),m_KeyName.c_str(),Value? "Yes" : "No");
m_SettingsIniFile->SaveString(m_SectionIdent->c_str(), m_KeyName.c_str(), Value ? "Yes" : "No");
}
void CSettingTypeRDBYesNo::Save ( int /*Index*/, const stdstr & /*Value*/ )
void CSettingTypeRDBYesNo::Save(int /*Index*/, const stdstr & /*Value*/)
{
g_Notify->BreakPoint(__FILE__, __LINE__);
}
void CSettingTypeRDBYesNo::Save ( int /*Index*/, const char * /*Value*/ )
void CSettingTypeRDBYesNo::Save(int /*Index*/, const char * /*Value*/)
{
g_Notify->BreakPoint(__FILE__, __LINE__);
}
void CSettingTypeRDBYesNo::Delete( int /*Index*/ )
void CSettingTypeRDBYesNo::Delete(int /*Index*/)
{
m_SettingsIniFile->SaveString(m_SectionIdent->c_str(),m_KeyName.c_str(),NULL);
}
m_SettingsIniFile->SaveString(m_SectionIdent->c_str(), m_KeyName.c_str(), NULL);
}

View File

@ -233,6 +233,26 @@ enum SettingID
Debugger_ShowDListAListCount,
Debugger_ShowRecompMemSize,
//Trace
Debugger_TraceMD5,
Debugger_TraceSettings,
Debugger_TraceUnknown,
Debugger_TraceAppInit,
Debugger_TraceAppCleanup,
Debugger_TraceN64System,
Debugger_TracePlugins,
Debugger_TraceGFXPlugin,
Debugger_TraceAudioPlugin,
Debugger_TraceControllerPlugin,
Debugger_TraceRSPPlugin,
Debugger_TraceRSP,
Debugger_TraceAudio,
Debugger_TraceRegisterCache,
Debugger_TraceRecompiler,
Debugger_TraceTLB,
Debugger_TraceProtectedMEM,
Debugger_TraceUserInterface,
//Plugins
Plugin_RSP_Current,
Plugin_RSP_CurVer,

View File

@ -31,7 +31,7 @@
#include "SettingType/SettingsType-TempBool.h"
#include "SettingsClass.h"
#include "N64System/N64Types.h"
#include <Common/TraceDefs.h>
#include <Common/Trace.h>
CSettings * g_Settings = NULL;
@ -308,10 +308,29 @@ void CSettings::AddHowToHandleSetting()
AddHandler(Debugger_ShowRecompMemSize, new CSettingTypeApplication("Debugger", "Show Recompiler Memory size", false));
AddHandler(Debugger_ShowDivByZero, new CSettingTypeApplication("Debugger", "Show Div by zero", false));
AddHandler(Debugger_ProfileCode, new CSettingTypeApplication("Debugger", "Profile Code", (uint32_t)false));
AddHandler(Debugger_AppLogLevel, new CSettingTypeApplication("Logging", "Log Level", (uint32_t)TraceError));
AddHandler(Debugger_AppLogFlush, new CSettingTypeApplication("Logging", "Log Auto Flush", (uint32_t)false));
AddHandler(Debugger_GenerateLogFiles, new CSettingTypeApplication("Debugger", "Generate Log Files", false));
//Logging
AddHandler(Debugger_TraceMD5, new CSettingTypeApplication("Logging", "MD5", (uint32_t)g_ModuleLogLevel[TraceMD5]));
AddHandler(Debugger_TraceSettings, new CSettingTypeApplication("Logging", "Settings", (uint32_t)g_ModuleLogLevel[TraceSettings]));
AddHandler(Debugger_TraceUnknown, new CSettingTypeApplication("Logging", "Unknown", (uint32_t)g_ModuleLogLevel[TraceUnknown]));
AddHandler(Debugger_TraceAppInit, new CSettingTypeApplication("Logging", "App Init", (uint32_t)g_ModuleLogLevel[TraceAppInit]));
AddHandler(Debugger_TraceAppCleanup, new CSettingTypeApplication("Logging", "App Cleanup", (uint32_t)g_ModuleLogLevel[TraceAppCleanup]));
AddHandler(Debugger_TraceN64System, new CSettingTypeApplication("Logging", "N64 System", (uint32_t)g_ModuleLogLevel[TraceN64System]));
AddHandler(Debugger_TracePlugins, new CSettingTypeApplication("Logging", "Plugins", (uint32_t)g_ModuleLogLevel[TracePlugins]));
AddHandler(Debugger_TraceGFXPlugin, new CSettingTypeApplication("Logging", "GFX Plugin", (uint32_t)g_ModuleLogLevel[TraceGFXPlugin]));
AddHandler(Debugger_TraceAudioPlugin, new CSettingTypeApplication("Logging", "Audio Plugin", (uint32_t)g_ModuleLogLevel[TraceAudioPlugin]));
AddHandler(Debugger_TraceControllerPlugin, new CSettingTypeApplication("Logging", "Controller Plugin", (uint32_t)g_ModuleLogLevel[TraceControllerPlugin]));
AddHandler(Debugger_TraceRSPPlugin, new CSettingTypeApplication("Logging", "RSP Plugin", (uint32_t)g_ModuleLogLevel[TraceRSPPlugin]));
AddHandler(Debugger_TraceRSP, new CSettingTypeApplication("Logging", "RSP", (uint32_t)g_ModuleLogLevel[TraceRSP]));
AddHandler(Debugger_TraceAudio, new CSettingTypeApplication("Logging", "Audio", (uint32_t)g_ModuleLogLevel[TraceAudio]));
AddHandler(Debugger_TraceRegisterCache, new CSettingTypeApplication("Logging", "Register Cache", (uint32_t)g_ModuleLogLevel[TraceRegisterCache]));
AddHandler(Debugger_TraceRecompiler, new CSettingTypeApplication("Logging", "Recompiler", (uint32_t)g_ModuleLogLevel[TraceRecompiler]));
AddHandler(Debugger_TraceTLB, new CSettingTypeApplication("Logging", "TLB", (uint32_t)g_ModuleLogLevel[TraceTLB]));
AddHandler(Debugger_TraceProtectedMEM, new CSettingTypeApplication("Logging", "Protected MEM", (uint32_t)g_ModuleLogLevel[TraceProtectedMem]));
AddHandler(Debugger_TraceUserInterface, new CSettingTypeApplication("Logging", "User Interface", (uint32_t)g_ModuleLogLevel[TraceUserInterface]));
//Plugin
AddHandler(Plugin_RSP_Current, new CSettingTypeApplication("Plugin", "RSP Dll", "RSP\\RSP 1.7.dll"));
AddHandler(Plugin_GFX_Current, new CSettingTypeApplication("Plugin", "Graphics Dll", "GFX\\Jabo_Direct3D8.dll"));

View File

@ -0,0 +1,24 @@
#pragma once
#include <Common/TraceModulesCommon.h>
enum TraceModuleProject64
{
TraceSettings = MaxTraceModuleCommon,
TraceUnknown,
TraceAppInit,
TraceAppCleanup,
TraceN64System,
TracePlugins,
TraceGFXPlugin,
TraceAudioPlugin,
TraceControllerPlugin,
TraceRSPPlugin,
TraceRSP,
TraceAudio,
TraceRegisterCache,
TraceRecompiler,
TraceTLB,
TraceProtectedMem,
TraceUserInterface,
MaxTraceModuleProject64,
};

View File

@ -1,8 +1,9 @@
#include <Common/stdtypes.h>
#include <Common/StdString.h>
#include <Common/TraceDefs.h>
#include <Common/Trace.h>
#include "Multilanguage.h"
#include "Notification.h"
#include "version.h"
#include "Settings/SettingsClass.h"
#include "TraceModulesProject64.h"

View File

@ -47,7 +47,7 @@ public:
{
if (WaitForSingleObject(m_DialogThread, 5000) == WAIT_TIMEOUT)
{
WriteTrace(TraceError, "CDebugDialog - time out on close");
WriteTrace(TraceUserInterface, TraceError, "CDebugDialog - time out on close");
TerminateThread(m_DialogThread, 1);
}
@ -69,7 +69,7 @@ public:
m_DialogThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CreateDebuggerWindow, (LPVOID)this, 0, &ThreadID);
if (WaitForSingleObject(m_CreatedEvent, 20000) == WAIT_TIMEOUT)
{
WriteTrace(TraceError, "Failed to get window create notification");
WriteTrace(TraceUserInterface, TraceError, "Failed to get window create notification");
}
}
}

View File

@ -13,10 +13,10 @@
#include "DebuggerUI.h"
CDebugMemoryView::CDebugMemoryView(CDebuggerUI * debugger) :
CDebugDialog<CDebugMemoryView>(debugger),
m_MemoryList(NULL)
CDebugDialog<CDebugMemoryView>(debugger),
m_MemoryList(NULL)
{
if (m_MemoryList== NULL)
if (m_MemoryList == NULL)
{
m_MemoryList = new CListCtrl;
m_MemoryList->RegisterClass();
@ -209,14 +209,14 @@ LRESULT CDebugMemoryView::OnMemoryModified(LPNMHDR lpNMHDR)
{
if (!g_MMU->SB_VAddr(m_DataStartLoc + Pos, (BYTE)Value))
{
WriteTraceF(TraceError, __FUNCTION__ ": failed to store at %X", m_DataStartLoc + Pos);
WriteTrace(TraceUserInterface, TraceError, "failed to store at %X", m_DataStartLoc + Pos);
}
}
else
{
if (!g_MMU->SB_PAddr(m_DataStartLoc + Pos, (BYTE)Value))
{
WriteTraceF(TraceError, __FUNCTION__ ": failed to store at %X", m_DataStartLoc + Pos);
WriteTrace(TraceUserInterface, TraceError, "failed to store at %X", m_DataStartLoc + Pos);
}
}
Insert_MemoryLineDump(LineNumber);
@ -469,4 +469,4 @@ void CDebugMemoryView::RefreshMemory(bool ResetCompare)
{
Insert_MemoryLineDump(count);
}
}
}

View File

@ -42,10 +42,10 @@ const CPluginList::PLUGIN * CPluginList::GetPluginInfo(int indx) const
bool CPluginList::LoadList()
{
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TraceUserInterface, TraceDebug, "Start");
m_PluginList.clear();
AddPluginFromDir(m_PluginDir);
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceUserInterface, TraceDebug, "Done");
return true;
}
@ -72,14 +72,14 @@ void CPluginList::AddPluginFromDir(CPath Dir)
}
//UINT LastErrorMode = SetErrorMode( SEM_FAILCRITICALERRORS );
WriteTraceF(TraceDebug, __FUNCTION__ ": loading %s", (LPCSTR)Dir);
WriteTrace(TraceUserInterface, TraceDebug, "loading %s", (LPCSTR)Dir);
hLib = LoadLibrary(Dir);
//SetErrorMode(LastErrorMode);
if (hLib == NULL)
{
DWORD LoadError = GetLastError();
WriteTraceF(TraceDebug, __FUNCTION__ ": failed to loadi %s (error: %d)", (LPCSTR)Dir, LoadError);
WriteTrace(TraceUserInterface, TraceDebug, "failed to loadi %s (error: %d)", (LPCSTR)Dir, LoadError);
continue;
}
@ -114,4 +114,4 @@ void CPluginList::AddPluginFromDir(CPath Dir)
hLib = NULL;
}
}
}
}

View File

@ -1,12 +1,10 @@
#include <windows.h>
#include <common/memtest.h>
//#include "Support/CppSeh.h"
#include <common/CriticalSection.h>
#include <common/StdString.h>
#include <common/FileClass.h>
#include <common/LogClass.h>
#include <common/TraceDefs.h>
#include <common/Trace.h>
#include <common/path.h>
#include <common/SmartPointer.h>

View File

@ -62,7 +62,7 @@ m_ResetInfo(NULL)
CMainGui::~CMainGui(void)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TraceUserInterface, TraceDebug, "Start");
if (m_bMainWindow)
{
g_Settings->UnregisterChangeCB(RomBrowser_Enabled, this, (CSettings::SettingChangedFunc)RomBowserEnabledChanged);
@ -77,7 +77,7 @@ CMainGui::~CMainGui(void)
{
DestroyWindow(m_hMainWindow);
}
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceUserInterface, TraceDebug, "Done");
}
bool CMainGui::RegisterWinClass(void)
@ -198,7 +198,7 @@ void CMainGui::GameLoaded(CMainGui * Gui)
stdstr FileLoc = g_Settings->LoadStringVal(Game_File);
if (FileLoc.length() > 0)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Add Recent Rom");
WriteTrace(TraceUserInterface, TraceDebug, "Add Recent Rom");
Gui->AddRecentRom(FileLoc.c_str());
Gui->SetWindowCaption(g_Settings->LoadStringVal(Game_GoodName).ToUTF16().c_str());
Gui->HideRomList();
@ -217,7 +217,7 @@ void CMainGui::GameCpuRunning(CMainGui * Gui)
Gui->MakeWindowOnTop(g_Settings->LoadBool(UserInterface_AlwaysOnTop));
if (g_Settings->LoadBool(Setting_AutoFullscreen))
{
WriteTrace(TraceDebug, __FUNCTION__ " 15");
WriteTrace(TraceUserInterface, TraceDebug, "15");
CIniFile RomIniFile(g_Settings->LoadStringVal(SupportFile_RomDatabase).c_str());
stdstr Status = g_Settings->LoadStringVal(Rdb_Status);
@ -418,7 +418,7 @@ bool CMainGui::ResetPluginsInUiThread(CPlugins * plugins, CN64System * System)
}
else
{
WriteTrace(TraceError, __FUNCTION__ ": Failed to create event");
WriteTrace(TraceUserInterface, TraceError, "Failed to create event");
bRes = false;
}
Notify().RefreshMenu();
@ -749,9 +749,9 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO
{
if (g_Plugins->Gfx() && g_Plugins->Gfx()->MoveScreen)
{
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "Starting");
g_Plugins->Gfx()->MoveScreen((int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam));
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "Done");
}
}
break;
@ -1029,9 +1029,9 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO
{
if (g_Plugins->Gfx())
{
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "Starting");
g_Plugins->Gfx()->ProcessMenuItem(LOWORD(wParam));
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "Done");
}
}
else if (LOWORD(wParam) > 5200 && LOWORD(wParam) <= 5300)
@ -1046,9 +1046,9 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO
Rom.SaveRomSettingID(true);
g_Notify->DisplayMessage(0, L"");
BYTE * RomHeader = Rom.GetRomAddress();
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": OnRomBrowserMenuItem - Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "OnRomBrowserMenuItem - Starting");
g_Plugins->Gfx()->OnRomBrowserMenuItem(LOWORD(wParam), hWnd, RomHeader);
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": OnRomBrowserMenuItem - Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "OnRomBrowserMenuItem - Done");
if (g_Rom)
{
g_Rom->SaveRomSettingID(false);
@ -1079,7 +1079,7 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO
}
break;
case WM_DESTROY:
WriteTrace(TraceDebug, __FUNCTION__ ": WM_DESTROY - start");
WriteTrace(TraceUserInterface, TraceDebug, "WM_DESTROY - start");
{
CMainGui * _this = (CMainGui *)GetProp(hWnd, "Class");
if (_this->m_bMainWindow)
@ -1087,19 +1087,19 @@ LRESULT CALLBACK CMainGui::MainGui_Proc(HWND hWnd, DWORD uMsg, DWORD wParam, DWO
Notify().WindowMode();
}
_this->m_hMainWindow = NULL;
WriteTrace(TraceDebug, __FUNCTION__ ": WM_DESTROY - 1");
WriteTrace(TraceUserInterface, TraceDebug, "WM_DESTROY - 1");
if (_this->m_bMainWindow)
{
_this->SaveRomListColoumnInfo();
WriteTrace(TraceDebug, __FUNCTION__ ": WM_DESTROY - 2");
WriteTrace(TraceUserInterface, TraceDebug, "WM_DESTROY - 2");
_this->SaveWindowLoc();
}
}
WriteTrace(TraceDebug, __FUNCTION__ ": WM_DESTROY - 3");
WriteTrace(TraceUserInterface, TraceDebug, "WM_DESTROY - 3");
RemoveProp(hWnd, "Class");
WriteTrace(TraceDebug, __FUNCTION__ ": WM_DESTROY - 4");
WriteTrace(TraceUserInterface, TraceDebug, "WM_DESTROY - 4");
PostQuitMessage(0);
WriteTrace(TraceDebug, __FUNCTION__ ": WM_DESTROY - Done");
WriteTrace(TraceUserInterface, TraceDebug, "WM_DESTROY - Done");
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);

View File

@ -27,7 +27,24 @@ m_Gui(hMainWindow)
m_ChangeSettingList.push_back(Debugger_ShowDivByZero);
m_ChangeSettingList.push_back(Debugger_GenerateLogFiles);
m_ChangeSettingList.push_back(Debugger_DisableGameFixes);
m_ChangeSettingList.push_back(Debugger_AppLogLevel);
m_ChangeSettingList.push_back(Debugger_TraceMD5);
m_ChangeSettingList.push_back(Debugger_TraceSettings);
m_ChangeSettingList.push_back(Debugger_TraceUnknown);
m_ChangeSettingList.push_back(Debugger_TraceAppInit);
m_ChangeSettingList.push_back(Debugger_TraceAppCleanup);
m_ChangeSettingList.push_back(Debugger_TraceN64System);
m_ChangeSettingList.push_back(Debugger_TracePlugins);
m_ChangeSettingList.push_back(Debugger_TraceGFXPlugin);
m_ChangeSettingList.push_back(Debugger_TraceAudioPlugin);
m_ChangeSettingList.push_back(Debugger_TraceControllerPlugin);
m_ChangeSettingList.push_back(Debugger_TraceRSPPlugin);
m_ChangeSettingList.push_back(Debugger_TraceRSP);
m_ChangeSettingList.push_back(Debugger_TraceAudio);
m_ChangeSettingList.push_back(Debugger_TraceRegisterCache);
m_ChangeSettingList.push_back(Debugger_TraceRecompiler);
m_ChangeSettingList.push_back(Debugger_TraceTLB);
m_ChangeSettingList.push_back(Debugger_TraceProtectedMEM);
m_ChangeSettingList.push_back(Debugger_TraceUserInterface);
m_ChangeSettingList.push_back(Debugger_AppLogFlush);
m_ChangeSettingList.push_back(Game_CurrentSaveState);
m_ChangeSettingList.push_back(Setting_CurrentLanguage);
@ -87,6 +104,12 @@ stdstr CMainMenu::ChooseFileToOpen(HWND hParent)
return stdstr("");
}
void CMainMenu::SetTraceModuleSetttings(SettingID Type)
{
uint32_t value = g_Settings->LoadDword(Type) == TraceVerbose ? g_Settings->LoadDefaultDword(Type) : TraceVerbose;
g_Settings->SaveDword(Type, value);
}
bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuID)
{
switch (MenuID) {
@ -118,48 +141,48 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
g_BaseSystem->StartEmulation(true);
break;
case ID_FILE_ENDEMULATION:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_FILE_ENDEMULATION");
WriteTrace(TraceUserInterface, TraceDebug, "ID_FILE_ENDEMULATION");
CN64System::CloseSystem();
m_Gui->SaveWindowLoc();
break;
case ID_FILE_ROMDIRECTORY:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_FILE_ROMDIRECTORY 1");
WriteTrace(TraceUserInterface, TraceDebug, "ID_FILE_ROMDIRECTORY 1");
m_Gui->SelectRomDir();
WriteTrace(TraceDebug, __FUNCTION__ ": ID_FILE_ROMDIRECTORY 2");
WriteTrace(TraceUserInterface, TraceDebug, "ID_FILE_ROMDIRECTORY 2");
m_Gui->RefreshMenu();
WriteTrace(TraceDebug, __FUNCTION__ ": ID_FILE_ROMDIRECTORY 3");
WriteTrace(TraceUserInterface, TraceDebug, "ID_FILE_ROMDIRECTORY 3");
break;
case ID_FILE_REFRESHROMLIST: m_Gui->RefreshRomBrowser(); break;
case ID_FILE_EXIT: DestroyWindow((HWND)hWnd); break;
case ID_SYSTEM_RESET_SOFT:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_RESET_SOFT");
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_RESET_SOFT");
g_BaseSystem->ExternalEvent(SysEvent_ResetCPU_Soft);
break;
case ID_SYSTEM_RESET_HARD:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_RESET_HARD");
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_RESET_HARD");
g_BaseSystem->ExternalEvent(SysEvent_ResetCPU_Hard);
break;
case ID_SYSTEM_PAUSE:
m_Gui->SaveWindowLoc();
WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_PAUSE");
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_PAUSE");
g_BaseSystem->ExternalEvent(g_Settings->LoadBool(GameRunning_CPU_Paused) ? SysEvent_ResumeCPU_FromMenu : SysEvent_PauseCPU_FromMenu);
WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_PAUSE 1");
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_PAUSE 1");
break;
case ID_SYSTEM_BITMAP:
{
stdstr Dir(g_Settings->LoadStringVal(Directory_SnapShot));
WriteTraceF(TraceGfxPlugin, __FUNCTION__ ": CaptureScreen(%s): Starting", Dir.c_str());
WriteTrace(TraceGFXPlugin, TraceDebug, "CaptureScreen(%s): Starting", Dir.c_str());
g_Plugins->Gfx()->CaptureScreen(Dir.c_str());
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": CaptureScreen: Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "CaptureScreen: Done");
}
break;
case ID_SYSTEM_LIMITFPS:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_LIMITFPS");
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_LIMITFPS");
g_Settings->SaveBool(GameRunning_LimitFPS, !g_Settings->LoadBool(GameRunning_LimitFPS));
WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_LIMITFPS 1");
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_LIMITFPS 1");
break;
case ID_SYSTEM_SAVE:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_SAVE");
WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_SAVE");
g_BaseSystem->ExternalEvent(SysEvent_SaveMachineState);
break;
case ID_SYSTEM_SAVEAS:
@ -204,7 +227,7 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
g_BaseSystem->ExternalEvent(SysEvent_ResumeCPU_SaveGame);
}
break;
case ID_SYSTEM_RESTORE: WriteTrace(TraceDebug, __FUNCTION__ ": ID_SYSTEM_RESTORE"); g_BaseSystem->ExternalEvent(SysEvent_LoadMachineState); break;
case ID_SYSTEM_RESTORE: WriteTrace(TraceUserInterface, TraceDebug, "ID_SYSTEM_RESTORE"); g_BaseSystem->ExternalEvent(SysEvent_LoadMachineState); break;
case ID_SYSTEM_LOAD:
{
char Directory[255], SaveFile[255];
@ -274,12 +297,12 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
case ID_OPTIONS_FULLSCREEN2:
if (g_Settings->LoadBool(UserInterface_InFullScreen))
{
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN a");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN a");
m_Gui->MakeWindowOnTop(false);
Notify().SetGfxPlugin(NULL);
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": ChangeWindow: Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "ChangeWindow: Starting");
g_Plugins->Gfx()->ChangeWindow();
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": ChangeWindow: Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "ChangeWindow: Done");
ShowCursor(true);
m_Gui->ShowStatusBar(true);
m_Gui->MakeWindowOnTop(g_Settings->LoadBool(UserInterface_AlwaysOnTop));
@ -287,33 +310,33 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
}
else
{
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN b");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN b");
ShowCursor(false);
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN b 1");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN b 1");
m_Gui->ShowStatusBar(false);
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN b 2");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN b 2");
try
{
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": ChangeWindow: Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "ChangeWindow: Starting");
g_Plugins->Gfx()->ChangeWindow();
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": ChangeWindow: Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "ChangeWindow: Done");
}
catch (...)
{
WriteTrace(TraceError, __FUNCTION__ ": Exception when going to full screen");
WriteTrace(TraceError, TraceDebug, "Exception when going to full screen");
char Message[600];
sprintf(Message, "Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__);
MessageBox(NULL, Message, "Exception", MB_OK);
}
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN b 4");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN b 4");
m_Gui->MakeWindowOnTop(false);
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN b 5");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN b 5");
Notify().SetGfxPlugin(g_Plugins->Gfx());
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN b 3");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN b 3");
g_Settings->SaveBool(UserInterface_InFullScreen, true);
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN b 6");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN b 6");
}
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_FULLSCREEN 1");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_FULLSCREEN 1");
break;
case ID_OPTIONS_ALWAYSONTOP:
if (g_Settings->LoadDword(UserInterface_AlwaysOnTop))
@ -328,23 +351,23 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
}
break;
case ID_OPTIONS_CONFIG_RSP:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_CONFIG_RSP");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_CONFIG_RSP");
g_Plugins->ConfigPlugin(hWnd, PLUGIN_TYPE_RSP);
break;
case ID_OPTIONS_CONFIG_GFX:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_CONFIG_GFX");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_CONFIG_GFX");
g_Plugins->ConfigPlugin(hWnd, PLUGIN_TYPE_GFX);
break;
case ID_OPTIONS_CONFIG_AUDIO:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_CONFIG_AUDIO");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_CONFIG_AUDIO");
g_Plugins->ConfigPlugin(hWnd, PLUGIN_TYPE_AUDIO);
break;
case ID_OPTIONS_CONFIG_CONT:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_CONFIG_CONT");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_CONFIG_CONT");
g_Plugins->ConfigPlugin(hWnd, PLUGIN_TYPE_CONTROLLER);
break;
case ID_OPTIONS_CPU_USAGE:
WriteTrace(TraceDebug, __FUNCTION__ ": ID_OPTIONS_CPU_USAGE");
WriteTrace(TraceUserInterface, TraceDebug, "ID_OPTIONS_CPU_USAGE");
if (g_Settings->LoadBool(UserInterface_ShowCPUPer))
{
g_Settings->SaveBool(UserInterface_ShowCPUPer, false);
@ -393,118 +416,25 @@ bool CMainMenu::ProcessMessage(HWND hWnd, DWORD /*FromAccelerator*/, DWORD MenuI
case ID_DEBUG_DISABLE_GAMEFIX:
g_Settings->SaveBool(Debugger_DisableGameFixes, !g_Settings->LoadBool(Debugger_DisableGameFixes));
break;
case ID_DEBUGGER_APPLOG_ERRORS:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceError) != 0)
{
LogLevel &= ~TraceError;
}
else
{
LogLevel |= TraceError;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_APPLOG_SETTINGS:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceSettings) != 0)
{
LogLevel &= ~TraceSettings;
}
else
{
LogLevel |= TraceSettings;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_APPLOG_RECOMPILER:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceRecompiler) != 0)
{
LogLevel &= ~TraceRecompiler;
}
else
{
LogLevel |= TraceRecompiler;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_APPLOG_RSP:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceRSP) != 0)
{
LogLevel &= ~TraceRSP;
}
else
{
LogLevel |= TraceRSP;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_APPLOG_TLB:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceTLB) != 0)
{
LogLevel &= ~TraceTLB;
}
else
{
LogLevel |= TraceTLB;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_APPLOG_GFX_PLUGIN:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceGfxPlugin) != 0)
{
LogLevel &= ~TraceGfxPlugin;
}
else
{
LogLevel |= TraceGfxPlugin;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_APPLOG_DEBUG:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceDebug) != 0)
{
LogLevel &= ~TraceDebug;
}
else
{
LogLevel |= TraceDebug;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_APPLOG_AUDIO_EMU:
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
if ((LogLevel & TraceAudio) != 0)
{
LogLevel &= ~TraceAudio;
}
else
{
LogLevel |= TraceAudio;
}
g_Settings->SaveDword(Debugger_AppLogLevel, LogLevel);
}
break;
case ID_DEBUGGER_TRACE_MD5: SetTraceModuleSetttings(Debugger_TraceMD5); break;
case ID_DEBUGGER_TRACE_SETTINGS: SetTraceModuleSetttings(Debugger_TraceSettings); break;
case ID_DEBUGGER_TRACE_UNKNOWN: SetTraceModuleSetttings(Debugger_TraceUnknown); break;
case ID_DEBUGGER_TRACE_APPINIT: SetTraceModuleSetttings(Debugger_TraceAppInit); break;
case ID_DEBUGGER_TRACE_APPCLEANUP: SetTraceModuleSetttings(Debugger_TraceAppCleanup); break;
case ID_DEBUGGER_TRACE_N64SYSTEM: SetTraceModuleSetttings(Debugger_TraceN64System); break;
case ID_DEBUGGER_TRACE_PLUGINS: SetTraceModuleSetttings(Debugger_TracePlugins); break;
case ID_DEBUGGER_TRACE_GFXPLUGIN: SetTraceModuleSetttings(Debugger_TraceGFXPlugin); break;
case ID_DEBUGGER_TRACE_AUDIOPLUGIN: SetTraceModuleSetttings(Debugger_TraceAudioPlugin); break;
case ID_DEBUGGER_TRACE_CONTROLLERPLUGIN: SetTraceModuleSetttings(Debugger_TraceControllerPlugin); break;
case ID_DEBUGGER_TRACE_RSPPLUGIN: SetTraceModuleSetttings(Debugger_TraceRSPPlugin); break;
case ID_DEBUGGER_TRACE_RSP: SetTraceModuleSetttings(Debugger_TraceRSP); break;
case ID_DEBUGGER_TRACE_AUDIO: SetTraceModuleSetttings(Debugger_TraceAudio); break;
case ID_DEBUGGER_TRACE_REGISTERCACHE: SetTraceModuleSetttings(Debugger_TraceRegisterCache); break;
case ID_DEBUGGER_TRACE_RECOMPILER: SetTraceModuleSetttings(Debugger_TraceRecompiler); break;
case ID_DEBUGGER_TRACE_TLB: SetTraceModuleSetttings(Debugger_TraceTLB); break;
case ID_DEBUGGER_TRACE_PROTECTEDMEM: SetTraceModuleSetttings(Debugger_TraceProtectedMEM); break;
case ID_DEBUGGER_TRACE_USERINTERFACE: SetTraceModuleSetttings(Debugger_TraceUserInterface); break;
case ID_DEBUGGER_APPLOG_FLUSH:
g_Settings->SaveBool(Debugger_AppLogFlush, !g_Settings->LoadBool(Debugger_AppLogFlush));
break;
@ -1037,47 +967,83 @@ void CMainMenu::FillOutMenu(HMENU hMenu)
/* Debug - App logging
*******************/
{
DWORD LogLevel = g_Settings->LoadDword(Debugger_AppLogLevel);
Item.Reset(ID_DEBUGGER_TRACE_MD5, EMPTY_STRING, EMPTY_STDSTR, NULL, L"MD5");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceMD5) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_ERRORS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Error Messages");
if ((LogLevel & TraceError) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_SETTINGS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Settings");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceSettings) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_SETTINGS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Settings");
if ((LogLevel & TraceSettings) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_UNKNOWN, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Unknown");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceUnknown) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_RECOMPILER, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Recompiler");
if ((LogLevel & TraceRecompiler) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_APPINIT, EMPTY_STRING, EMPTY_STDSTR, NULL, L"App Init");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceAppInit) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_RSP, EMPTY_STRING, EMPTY_STDSTR, NULL, L"RSP");
if ((LogLevel & TraceRSP) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_APPCLEANUP, EMPTY_STRING, EMPTY_STDSTR, NULL, L"App Cleanup");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceAppCleanup) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_TLB, EMPTY_STRING, EMPTY_STDSTR, NULL, L"TLB");
if ((LogLevel & TraceTLB) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_N64SYSTEM, EMPTY_STRING, EMPTY_STDSTR, NULL, L"N64 System");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceN64System) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_GFX_PLUGIN, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Gfx Plugin");
if ((LogLevel & TraceGfxPlugin) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_PLUGINS, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Plugins");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TracePlugins) == TraceVerbose);;
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_AUDIO_EMU, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Audio Emulation");
if ((LogLevel & TraceAudio) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_GFXPLUGIN, EMPTY_STRING, EMPTY_STDSTR, NULL, L"GFX Plugin");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceGFXPlugin) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_DEBUG, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Debug Messages");
if ((LogLevel & TraceDebug) != 0) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_AUDIOPLUGIN, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Audio Plugin");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceAudioPlugin) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
DebugAppLoggingMenu.push_back(MENU_ITEM(SPLITER));
Item.Reset(ID_DEBUGGER_TRACE_CONTROLLERPLUGIN, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Controller Plugin");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceControllerPlugin) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_APPLOG_FLUSH, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Auto flush file");
if (g_Settings->LoadBool(Debugger_AppLogFlush)) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
}
Item.Reset(ID_DEBUGGER_TRACE_RSPPLUGIN, EMPTY_STRING, EMPTY_STDSTR, NULL, L"RSP Plugin");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceRSPPlugin) == TraceVerbose);;
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_RSP, EMPTY_STRING, EMPTY_STDSTR, NULL, L"RSP");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceRSP) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_AUDIO, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Audio");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceAudio) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_REGISTERCACHE, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Register Cache");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceRegisterCache) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_RECOMPILER, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Recompiler");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceRecompiler) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_TLB, EMPTY_STRING, EMPTY_STDSTR, NULL, L"TLB");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceTLB) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_PROTECTEDMEM, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Protected MEM");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceProtectedMEM) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
Item.Reset(ID_DEBUGGER_TRACE_USERINTERFACE, EMPTY_STRING, EMPTY_STDSTR, NULL, L"User Interface");
Item.SetItemTicked(g_Settings->LoadDword(Debugger_TraceUserInterface) == TraceVerbose);
DebugAppLoggingMenu.push_back(Item);
DebugAppLoggingMenu.push_back(MENU_ITEM(SPLITER));
Item.Reset(ID_DEBUGGER_APPLOG_FLUSH, EMPTY_STRING, EMPTY_STDSTR, NULL, L"Auto flush file");
if (g_Settings->LoadBool(Debugger_AppLogFlush)) { Item.SetItemTicked(true); }
DebugAppLoggingMenu.push_back(Item);
/* Debug - Logging
*******************/
@ -1222,26 +1188,26 @@ void CMainMenu::RebuildAccelerators(void)
CGuard Guard(m_CS);
//Delete the old accel list
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TraceUserInterface, TraceDebug, "Start");
HACCEL m_OldAccelTable = (HACCEL)m_AccelTable;
m_AccelTable = m_ShortCuts.GetAcceleratorTable();
if (m_OldAccelTable) {
DestroyAcceleratorTable(m_OldAccelTable);
}
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceUserInterface, TraceDebug, "Done");
}
void CMainMenu::ResetMenu(void)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TraceUserInterface, TraceDebug, "Start");
if (!g_Settings->LoadBool(UserInterface_InFullScreen))
{
//Create a new window with all the items
WriteTrace(TraceDebug, __FUNCTION__ ": Create Menu");
WriteTrace(TraceUserInterface, TraceDebug, "Create Menu");
HMENU hMenu = CreateMenu();
FillOutMenu(hMenu);
WriteTrace(TraceDebug, __FUNCTION__ ": Create Menu Done");
WriteTrace(TraceUserInterface, TraceDebug, "Create Menu Done");
//save old menu to destroy latter
HMENU OldMenuHandle;
@ -1250,12 +1216,12 @@ void CMainMenu::ResetMenu(void)
OldMenuHandle = m_MenuHandle;
//save handle and re-attach to a window
WriteTrace(TraceDebug, __FUNCTION__ ": Attach Menu");
WriteTrace(TraceUserInterface, TraceDebug, "Attach Menu");
m_MenuHandle = hMenu;
}
m_Gui->SetWindowMenu(this);
WriteTrace(TraceDebug, __FUNCTION__ ": Remove plugin menu");
WriteTrace(TraceUserInterface, TraceDebug, "Remove plugin menu");
if (g_Plugins->Gfx() != NULL && IsMenu((HMENU)g_Plugins->Gfx()->GetDebugMenu()))
{
RemoveMenu((HMENU)OldMenuHandle, (DWORD)g_Plugins->Gfx()->GetDebugMenu(), MF_BYCOMMAND);
@ -1264,7 +1230,7 @@ void CMainMenu::ResetMenu(void)
{
RemoveMenu((HMENU)OldMenuHandle, (DWORD)g_Plugins->RSP()->GetDebugMenu(), MF_BYCOMMAND);
}
WriteTrace(TraceDebug, __FUNCTION__ ": Destroy Old Menu");
WriteTrace(TraceUserInterface, TraceDebug, "Destroy Old Menu");
//Destroy the old menu
DestroyMenu((HMENU)OldMenuHandle);
@ -1272,5 +1238,5 @@ void CMainMenu::ResetMenu(void)
ResetAccelerators();
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
}
WriteTrace(TraceUserInterface, TraceDebug, "Done");
}

View File

@ -41,9 +41,11 @@ enum MainMenuID
ID_DEBUGGER_INTERRUPT_PI, ID_DEBUGGER_INTERRUPT_DP,
// App logging
ID_DEBUGGER_APPLOG_ERRORS, ID_DEBUGGER_APPLOG_SETTINGS, ID_DEBUGGER_APPLOG_GFX_PLUGIN,
ID_DEBUGGER_APPLOG_DEBUG, ID_DEBUGGER_APPLOG_FLUSH, ID_DEBUGGER_APPLOG_RECOMPILER,
ID_DEBUGGER_APPLOG_RSP, ID_DEBUGGER_APPLOG_TLB, ID_DEBUGGER_APPLOG_AUDIO_EMU,
ID_DEBUGGER_APPLOG_FLUSH, ID_DEBUGGER_TRACE_MD5, ID_DEBUGGER_TRACE_SETTINGS, ID_DEBUGGER_TRACE_UNKNOWN, ID_DEBUGGER_TRACE_APPINIT,
ID_DEBUGGER_TRACE_APPCLEANUP, ID_DEBUGGER_TRACE_N64SYSTEM, ID_DEBUGGER_TRACE_PLUGINS, ID_DEBUGGER_TRACE_GFXPLUGIN,
ID_DEBUGGER_TRACE_AUDIOPLUGIN, ID_DEBUGGER_TRACE_CONTROLLERPLUGIN, ID_DEBUGGER_TRACE_RSPPLUGIN, ID_DEBUGGER_TRACE_RSP,
ID_DEBUGGER_TRACE_AUDIO, ID_DEBUGGER_TRACE_REGISTERCACHE, ID_DEBUGGER_TRACE_RECOMPILER, ID_DEBUGGER_TRACE_TLB,
ID_DEBUGGER_TRACE_PROTECTEDMEM, ID_DEBUGGER_TRACE_USERINTERFACE,
//Profile Menu
ID_PROFILE_PROFILE, ID_PROFILE_RESETCOUNTER, ID_PROFILE_GENERATELOG,
@ -75,6 +77,7 @@ private:
stdstr GetFileLastMod(stdstr FileName);
void RebuildAccelerators(void);
stdstr ChooseFileToOpen(HWND hParent);
void SetTraceModuleSetttings(SettingID Type);
static void SettingsChanged(CMainMenu * _this);

View File

@ -496,9 +496,9 @@ HACCEL CShortCuts::GetAcceleratorTable(void)
}
}
WriteTrace(TraceDebug, __FUNCTION__ ": CreateAcceleratorTable");
WriteTrace(TraceUserInterface, TraceDebug, "CreateAcceleratorTable");
HACCEL AccelTable = CreateAcceleratorTable(AccelList, size);
WriteTrace(TraceDebug, __FUNCTION__ ": Delete accel list");
WriteTrace(TraceUserInterface, TraceDebug, "Delete accel list");
delete[] AccelList;
return AccelTable;
}

View File

@ -59,7 +59,7 @@ void CNotificationImp::DisplayError(const wchar_t * Message) const
stdstr TraceMessage;
TraceMessage.FromUTF16(Message);
WriteTrace(TraceError, TraceMessage.c_str());
WriteTrace(TraceUserInterface, TraceError, TraceMessage.c_str());
WindowMode();
HWND Parent = NULL;
@ -100,11 +100,11 @@ void CNotificationImp::DisplayMessage(int DisplayTime, const wchar_t * Message)
{
if (m_gfxPlugin && m_gfxPlugin->DrawStatus)
{
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": DrawStatus - Starting");
WriteTrace(TraceGFXPlugin, TraceDebug, "DrawStatus - Starting");
stdstr PluginMessage;
PluginMessage.FromUTF16(Message);
m_gfxPlugin->DrawStatus(PluginMessage.c_str(), FALSE);
WriteTrace(TraceGfxPlugin, __FUNCTION__ ": DrawStatus - Done");
WriteTrace(TraceGFXPlugin, TraceDebug, "DrawStatus - Done");
}
}
else
@ -124,7 +124,7 @@ bool CNotificationImp::AskYesNoQuestion(const wchar_t * Question) const
{
if (this == NULL) { return false; }
WriteTrace(TraceError, stdstr().FromUTF16(Question).c_str());
WriteTrace(TraceUserInterface, TraceError, stdstr().FromUTF16(Question).c_str());
WindowMode();
HWND Parent = NULL;

View File

@ -576,7 +576,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
CPath SearchPath(BaseDirectory, "*.*");
SearchPath.AppendDirectory(Directory.c_str());
WriteTraceF(TraceDebug, __FUNCTION__ ": 1 %s", (const char *)SearchPath);
WriteTrace(TraceUserInterface, TraceDebug, "1 %s", (const char *)SearchPath);
if (!SearchPath.FindFirst(CPath::_A_ALLFILES))
{
return;
@ -588,7 +588,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
int8_t new_list_entry = 0;
const uint8_t exts = sizeof(ROM_extensions) / sizeof(ROM_extensions[0]);
WriteTraceF(TraceDebug, __FUNCTION__ ": 2 %s m_StopRefresh = %d", (const char *)SearchPath, m_StopRefresh);
WriteTrace(TraceUserInterface, TraceDebug, ": 2 %s m_StopRefresh = %d", (const char *)SearchPath, m_StopRefresh);
if (m_StopRefresh) { break; }
if (SearchPath.IsDirectory())
@ -633,7 +633,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
stdstr_f SectionName("%s-%d", ZipFile.FileName(ZipFileName, sizeof(ZipFileName)), ZipFile.FileSize());
SectionName.ToLower();
WriteTraceF(TraceDebug, __FUNCTION__ ": 4 %s", SectionName.c_str());
WriteTrace(TraceUserInterface, TraceDebug, "4 %s", SectionName.c_str());
for (int32_t i = 0; i < ZipFile.NumFiles(); i++)
{
CSzFileItem * f = ZipFile.FileItem(i);
@ -651,16 +651,16 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
stdstr FileName;
FileName.FromUTF16(FileNameW.c_str());
WriteTrace(TraceDebug, __FUNCTION__ ": 5");
WriteTrace(TraceUserInterface, TraceDebug, "5");
char drive2[_MAX_DRIVE], dir2[_MAX_DIR], FileName2[MAX_PATH], ext2[_MAX_EXT];
_splitpath(FileName.c_str(), drive2, dir2, FileName2, ext2);
WriteTraceF(TraceDebug, __FUNCTION__ ": 6 %s", ext2);
WriteTrace(TraceUserInterface, TraceDebug, ": 6 %s", ext2);
if (_stricmp(ext2, ".bin") == 0)
{
continue;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 7");
WriteTrace(TraceUserInterface, TraceDebug, "7");
memset(&RomInfo, 0, sizeof(ROM_INFO));
stdstr_f zipFileName("%s?%s", (LPCSTR)SearchPath, FileName.c_str());
ZipFile.SetNotificationCallback((C7zip::LP7ZNOTIFICATION)NotificationCB, this);
@ -670,7 +670,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
strcpy(RomInfo.FileName, strstr(RomInfo.szFullFileName, "?") + 1);
RomInfo.FileFormat = Format_7zip;
WriteTrace(TraceDebug, __FUNCTION__ ": 8");
WriteTrace(TraceUserInterface, TraceDebug, "8");
char szHeader[0x90];
if (m_ZipIniFile->GetString(SectionName.c_str(), FileName.c_str(), "", szHeader, sizeof(szHeader)) == 0)
{
@ -679,27 +679,27 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
{
continue;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 9");
WriteTrace(TraceUserInterface, TraceDebug, "9");
if (!CN64Rom::IsValidRomImage(RomData)) { continue; }
WriteTrace(TraceDebug, __FUNCTION__ ": 10");
WriteTrace(TraceUserInterface, TraceDebug, "10");
ByteSwapRomData(RomData, sizeof(RomData));
WriteTrace(TraceDebug, __FUNCTION__ ": 11");
WriteTrace(TraceUserInterface, TraceDebug, "11");
stdstr RomHeader;
for (int32_t x = 0; x < 0x40; x += 4)
{
RomHeader += stdstr_f("%08X", *((uint32_t *)&RomData[x]));
}
WriteTraceF(TraceDebug, __FUNCTION__ ": 11a %s", RomHeader.c_str());
WriteTrace(TraceUserInterface, TraceDebug, "11a %s", RomHeader.c_str());
int32_t CicChip = GetCicChipID(RomData);
//save this info
WriteTrace(TraceDebug, __FUNCTION__ ": 12");
WriteTrace(TraceUserInterface, TraceDebug, "12");
m_ZipIniFile->SaveString(SectionName.c_str(), FileName.c_str(), RomHeader.c_str());
m_ZipIniFile->SaveNumber(SectionName.c_str(), stdstr_f("%s-Cic", FileName.c_str()).c_str(), CicChip);
strcpy(szHeader, RomHeader.c_str());
}
WriteTrace(TraceDebug, __FUNCTION__ ": 13");
WriteTrace(TraceUserInterface, TraceDebug, "13");
uint8_t RomData[0x40];
for (int32_t x = 0; x < 0x40; x += 4)
@ -712,7 +712,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
szHeader[2 * x + delimit_offset] = backup_character;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 14");
WriteTrace(TraceUserInterface, TraceDebug, "14");
{
char InternalName[22];
memcpy(InternalName, (void *)(RomData + 0x20), 20);
@ -730,7 +730,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
}
RomInfo.RomSize = (int32_t)f->Size;
WriteTrace(TraceDebug, __FUNCTION__ ": 15");
WriteTrace(TraceUserInterface, TraceDebug, "15");
RomInfo.CartID[0] = *(RomData + 0x3F);
RomInfo.CartID[1] = *(RomData + 0x3E);
RomInfo.CartID[2] = '\0';
@ -739,7 +739,7 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
RomInfo.CRC1 = *(uint32_t *)(RomData + 0x10);
RomInfo.CRC2 = *(uint32_t *)(RomData + 0x14);
m_ZipIniFile->GetNumber(SectionName.c_str(), stdstr_f("%s-Cic", FileName.c_str()).c_str(), (ULONG)-1, (uint32_t &)RomInfo.CicChip);
WriteTrace(TraceDebug, __FUNCTION__ ": 16");
WriteTrace(TraceUserInterface, TraceDebug, "16");
FillRomExtensionInfo(&RomInfo);
if (RomInfo.SelColor == -1)
@ -750,13 +750,13 @@ void CRomBrowser::FillRomList(strlist & FileList, const CPath & BaseDirectory, c
{
RomInfo.SelColorBrush = (uint32_t)CreateSolidBrush(RomInfo.SelColor);
}
WriteTrace(TraceDebug, __FUNCTION__ ": 17");
WriteTrace(TraceUserInterface, TraceDebug, "17");
AddRomInfoToList(RomInfo, lpLastRom);
}
}
catch (...)
{
WriteTraceF(TraceError, __FUNCTION__ "(): execpetion processing %s", (LPCSTR)SearchPath);
WriteTrace(TraceUserInterface, TraceError, "execpetion processing %s", (LPCSTR)SearchPath);
}
continue;
}
@ -781,8 +781,8 @@ int32_t CRomBrowser::GetCicChipID(uint8_t * RomData)
case 0x000000D6497E414B: return CIC_NUS_6103;
case 0x0000011A49F60E96: return CIC_NUS_6105;
case 0x000000D6D5BE5580: return CIC_NUS_6106;
case 0x000001053BC19870: return CIC_NUS_5167; //64DD CONVERSION CIC
case 0x000000D2E53EF008: return CIC_NUS_8303; //64DD IPL
case 0x000001053BC19870: return CIC_NUS_5167; //64DD CONVERSION CIC
case 0x000000D2E53EF008: return CIC_NUS_8303; //64DD IPL
default:
return CIC_UNKNOWN;
}
@ -930,7 +930,7 @@ void CRomBrowser::ByteSwapRomData(uint8_t * Data, int32_t DataLen)
Data[count + 1] ^= Data[count + 3];
}
break;
case 0x40072780: //64DD IPL
case 0x40072780: //64DD IPL
case 0x40123780:
for (count = 0; count < DataLen; count += 4)
{
@ -1031,10 +1031,10 @@ void CRomBrowser::RefreshRomBrowser(void)
{
return;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 1");
WriteTrace(TraceUserInterface, TraceDebug, "1");
m_StopRefresh = false;
m_RefreshThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)RefreshRomBrowserStatic, (LPVOID)this, 0, &ThreadID);
WriteTrace(TraceDebug, __FUNCTION__ ": 2");
WriteTrace(TraceUserInterface, TraceDebug, "2");
}
void CRomBrowser::RefreshRomBrowserStatic(CRomBrowser * _this)
@ -1048,41 +1048,41 @@ void CRomBrowser::RefreshRomBrowserStatic(CRomBrowser * _this)
DeleteFile(CacheFileName.c_str());
//clear all current items
WriteTrace(TraceDebug, __FUNCTION__ " 1");
WriteTrace(TraceUserInterface, TraceDebug, "1");
ListView_DeleteAllItems((HWND)_this->m_hRomList);
_this->DeallocateBrushs();
_this->m_RomInfo.clear();
WriteTrace(TraceDebug, __FUNCTION__ " 2");
WriteTrace(TraceUserInterface, TraceDebug, "2");
InvalidateRect((HWND)_this->m_hRomList, NULL, TRUE);
Sleep(100);
WriteTrace(TraceDebug, __FUNCTION__ " 3");
WriteTrace(TraceUserInterface, TraceDebug, "3");
if (_this->m_WatchRomDir != g_Settings->LoadStringVal(Directory_Game))
{
WriteTrace(TraceDebug, __FUNCTION__ " 4");
WriteTrace(TraceUserInterface, TraceDebug, "4");
_this->WatchThreadStop();
WriteTrace(TraceDebug, __FUNCTION__ " 5");
WriteTrace(TraceUserInterface, TraceDebug, "5");
_this->WatchThreadStart();
WriteTrace(TraceDebug, __FUNCTION__ " 6");
WriteTrace(TraceUserInterface, TraceDebug, "6");
}
WriteTrace(TraceDebug, __FUNCTION__ " 7");
WriteTrace(TraceUserInterface, TraceDebug, "7");
stdstr RomDir = g_Settings->LoadStringVal(Directory_Game);
stdstr LastRom = g_Settings->LoadStringIndex(File_RecentGameFileIndex, 0);
WriteTrace(TraceDebug, __FUNCTION__ " 8");
WriteTrace(TraceUserInterface, TraceDebug, "8");
strlist FileNames;
_this->FillRomList(FileNames, CPath(RomDir), stdstr(""), LastRom.c_str());
WriteTrace(TraceDebug, __FUNCTION__ " 9");
WriteTrace(TraceUserInterface, TraceDebug, "9");
_this->SaveRomList(FileNames);
WriteTrace(TraceDebug, __FUNCTION__ " 10");
WriteTrace(TraceUserInterface, TraceDebug, "10");
CloseHandle(_this->m_RefreshThread);
_this->m_RefreshThread = NULL;
WriteTrace(TraceDebug, __FUNCTION__ " 11");
WriteTrace(TraceUserInterface, TraceDebug, "11");
}
catch (...)
{
WriteTrace(TraceError, __FUNCTION__ "(): Unhandled Exception ");
WriteTrace(TraceUserInterface, TraceError, "Unhandled Exception ");
}
}
@ -1410,14 +1410,14 @@ void CRomBrowser::RomList_GetDispInfo(uint32_t pnmh)
{
swprintf(lpdi->item.pszText, lpdi->item.cchTextMax / sizeof(wchar_t), L"Unknown CIC Chip");
}
else if (pRomInfo->CicChip == CIC_NUS_8303)
{
swprintf(lpdi->item.pszText, lpdi->item.cchTextMax / sizeof(wchar_t), L"CIC-NUS-8303", pRomInfo->CicChip);
}
else if (pRomInfo->CicChip == CIC_NUS_5167)
else if (pRomInfo->CicChip == CIC_NUS_8303)
{
swprintf(lpdi->item.pszText, lpdi->item.cchTextMax / sizeof(wchar_t), L"CIC-NUS-8303", pRomInfo->CicChip);
}
else if (pRomInfo->CicChip == CIC_NUS_5167)
{
swprintf(lpdi->item.pszText, lpdi->item.cchTextMax / sizeof(wchar_t), L"CIC-NUS-5167", pRomInfo->CicChip);
}
}
else
{
swprintf(lpdi->item.pszText, lpdi->item.cchTextMax / sizeof(wchar_t), L"CIC-NUS-610%d", pRomInfo->CicChip);
@ -1600,7 +1600,7 @@ void CRomBrowser::SaveRomList(strlist & FileList)
void CRomBrowser::SaveRomListColoumnInfo(void)
{
WriteTrace(TraceDebug, __FUNCTION__ ": Start");
WriteTrace(TraceUserInterface, TraceDebug, "Start");
// if (!RomBrowserVisible()) { return; }
if (g_Settings == NULL) { return; }
@ -1629,7 +1629,7 @@ void CRomBrowser::SaveRomListColoumnInfo(void)
}
}
}
WriteTrace(TraceDebug, __FUNCTION__ ": Done");
WriteTrace(TraceUserInterface, TraceDebug, "Done");
}
int32_t CALLBACK CRomBrowser::SelectRomDirCallBack(HWND hwnd, uint32_t uMsg, uint32_t /*lp*/, uint32_t lpData)
@ -1655,7 +1655,7 @@ void CRomBrowser::SelectRomDir(void)
LPITEMIDLIST pidl;
BROWSEINFOW bi;
WriteTrace(TraceDebug, __FUNCTION__ " 1");
WriteTrace(TraceUserInterface, TraceDebug, "1");
stdstr RomDir = g_Settings->LoadStringVal(Directory_Game);
bi.hwndOwner = m_MainWindow;
bi.pidlRoot = NULL;
@ -1664,28 +1664,28 @@ void CRomBrowser::SelectRomDir(void)
bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
bi.lpfn = (BFFCALLBACK)SelectRomDirCallBack;
bi.lParam = (uint32_t)RomDir.c_str();
WriteTrace(TraceDebug, __FUNCTION__ " 2");
WriteTrace(TraceUserInterface, TraceDebug, "2");
if ((pidl = SHBrowseForFolderW(&bi)) != NULL)
{
WriteTrace(TraceDebug, __FUNCTION__ " 3");
WriteTrace(TraceUserInterface, TraceDebug, "3");
char Directory[_MAX_PATH];
if (SHGetPathFromIDList(pidl, Directory))
{
int32_t len = strlen(Directory);
WriteTrace(TraceDebug, __FUNCTION__ " 4");
WriteTrace(TraceUserInterface, TraceDebug, "4");
if (Directory[len - 1] != '\\')
{
strcat(Directory, "\\");
}
WriteTrace(TraceDebug, __FUNCTION__ " 5");
WriteTrace(TraceDebug, __FUNCTION__ " 6");
WriteTrace(TraceUserInterface, TraceDebug, "5");
WriteTrace(TraceUserInterface, TraceDebug, "6");
g_Settings->SaveString(Directory_Game, Directory);
WriteTrace(TraceDebug, __FUNCTION__ " 7");
WriteTrace(TraceUserInterface, TraceDebug, "7");
Notify().AddRecentDir(Directory);
WriteTrace(TraceDebug, __FUNCTION__ " 8");
WriteTrace(TraceUserInterface, TraceDebug, "8");
RefreshRomBrowser();
WriteTrace(TraceDebug, __FUNCTION__ " 9");
WriteTrace(TraceUserInterface, TraceDebug, "9");
}
}
}
@ -1844,7 +1844,7 @@ MD5 CRomBrowser::RomListHash(strlist & FileList)
NewFileNames += ";";
}
MD5 md5Hash((const unsigned char *)NewFileNames.c_str(), NewFileNames.length());
WriteTraceF(TraceDebug, __FUNCTION__ ": %s - %s", md5Hash.hex_digest(), NewFileNames.c_str());
WriteTrace(TraceUserInterface, TraceDebug, "%s - %s", md5Hash.hex_digest(), NewFileNames.c_str());
return md5Hash;
}
@ -1852,58 +1852,58 @@ void CRomBrowser::WatchRomDirChanged(CRomBrowser * _this)
{
try
{
WriteTrace(TraceDebug, __FUNCTION__ ": 1");
WriteTrace(TraceUserInterface, TraceDebug, "1");
_this->m_WatchRomDir = g_Settings->LoadStringVal(Directory_Game);
WriteTrace(TraceDebug, __FUNCTION__ ": 2");
WriteTrace(TraceUserInterface, TraceDebug, "2");
if (_this->RomDirNeedsRefresh())
{
WriteTrace(TraceDebug, __FUNCTION__ ": 2a");
WriteTrace(TraceUserInterface, TraceDebug, "2a");
PostMessage((HWND)_this->m_MainWindow, WM_COMMAND, ID_FILE_REFRESHROMLIST, 0);
}
WriteTrace(TraceDebug, __FUNCTION__ ": 3");
WriteTrace(TraceUserInterface, TraceDebug, "3");
HANDLE hChange[] = {
_this->m_WatchStopEvent,
FindFirstChangeNotification(_this->m_WatchRomDir.c_str(), g_Settings->LoadDword(RomBrowser_Recursive), FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_SIZE),
};
WriteTrace(TraceDebug, __FUNCTION__ ": 4");
WriteTrace(TraceUserInterface, TraceDebug, "4");
for (;;)
{
WriteTrace(TraceDebug, __FUNCTION__ ": 5");
WriteTrace(TraceUserInterface, TraceDebug, "5");
if (WaitForMultipleObjects(sizeof(hChange) / sizeof(hChange[0]), hChange, false, INFINITE) == WAIT_OBJECT_0)
{
WriteTrace(TraceDebug, __FUNCTION__ ": 5a");
WriteTrace(TraceUserInterface, TraceDebug, "5a");
FindCloseChangeNotification(hChange[1]);
return;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 5b");
WriteTrace(TraceUserInterface, TraceDebug, "5b");
if (_this->RomDirNeedsRefresh())
{
PostMessage((HWND)_this->m_MainWindow, WM_COMMAND, ID_FILE_REFRESHROMLIST, 0);
}
WriteTrace(TraceDebug, __FUNCTION__ ": 5c");
WriteTrace(TraceUserInterface, TraceDebug, "5c");
if (!FindNextChangeNotification(hChange[1]))
{
FindCloseChangeNotification(hChange[1]);
return;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 5d");
WriteTrace(TraceUserInterface, TraceDebug, "5d");
}
}
catch (...)
{
WriteTraceF(TraceError, __FUNCTION__ ": Unhandled Exception");
WriteTrace(TraceUserInterface, TraceError, __FUNCTION__ ": Unhandled Exception");
}
}
void CRomBrowser::WatchThreadStart(void)
{
WriteTrace(TraceDebug, __FUNCTION__ ": 1");
WriteTrace(TraceUserInterface, TraceDebug, "1");
WatchThreadStop();
WriteTrace(TraceDebug, __FUNCTION__ ": 2");
WriteTrace(TraceUserInterface, TraceDebug, "2");
m_WatchStopEvent = CreateEvent(NULL, true, false, NULL);
WriteTrace(TraceDebug, __FUNCTION__ ": 3");
WriteTrace(TraceUserInterface, TraceDebug, "3");
m_WatchThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)WatchRomDirChanged, this, 0, &m_WatchThreadID);
WriteTrace(TraceDebug, __FUNCTION__ ": 4");
WriteTrace(TraceUserInterface, TraceDebug, "4");
}
void CRomBrowser::WatchThreadStop(void)
@ -1912,12 +1912,12 @@ void CRomBrowser::WatchThreadStop(void)
{
return;
}
WriteTrace(TraceDebug, __FUNCTION__ ": 1");
WriteTrace(TraceUserInterface, TraceDebug, "1");
SetEvent(m_WatchStopEvent);
DWORD ExitCode = 0;
for (int32_t count = 0; count < 20; count++)
{
WriteTrace(TraceDebug, __FUNCTION__ ": 2");
WriteTrace(TraceUserInterface, TraceDebug, "2");
GetExitCodeThread(m_WatchThread, &ExitCode);
if (ExitCode != STILL_ACTIVE)
{
@ -1925,18 +1925,18 @@ void CRomBrowser::WatchThreadStop(void)
}
Sleep(200);
}
WriteTrace(TraceDebug, __FUNCTION__ ": 3");
WriteTrace(TraceUserInterface, TraceDebug, "3");
if (ExitCode == STILL_ACTIVE)
{
WriteTrace(TraceDebug, __FUNCTION__ ": 3a");
WriteTrace(TraceUserInterface, TraceDebug, "3a");
TerminateThread(m_WatchThread, 0);
}
WriteTrace(TraceDebug, __FUNCTION__ ": 4");
WriteTrace(TraceUserInterface, TraceDebug, "4");
CloseHandle(m_WatchThread);
CloseHandle(m_WatchStopEvent);
m_WatchStopEvent = NULL;
m_WatchThread = NULL;
m_WatchThreadID = 0;
WriteTrace(TraceDebug, __FUNCTION__ ": 5");
}
WriteTrace(TraceUserInterface, TraceDebug, "5");
}

View File

@ -14,7 +14,7 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR /
}
//Create the main window with Menu
WriteTrace(TraceDebug, __FUNCTION__ ": Create Main Window");
WriteTrace(TraceUserInterface, TraceDebug, "Create Main Window");
CMainGui MainWindow(true, stdstr_f("Project64 %s", VER_FILE_VERSION_STR).c_str()), HiddenWindow(false);
CMainMenu MainMenu(&MainWindow);
g_Plugins->SetRenderWindows(&MainWindow, &HiddenWindow);
@ -22,7 +22,7 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR /
if (__argc > 1)
{
WriteTraceF(TraceDebug, __FUNCTION__ ": Cmd line found \"%s\"", __argv[1]);
WriteTrace(TraceUserInterface, TraceDebug, "Cmd line found \"%s\"", __argv[1]);
MainWindow.Show(true); //Show the main window
CN64System::RunFileImage(__argv[1]);
}
@ -30,22 +30,23 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR /
{
if (g_Settings->LoadDword(RomBrowser_Enabled))
{
WriteTrace(TraceDebug, __FUNCTION__ ": Show Rom Browser");
WriteTrace(TraceUserInterface, TraceDebug, "Show Rom Browser");
//Display the rom browser
MainWindow.ShowRomList();
MainWindow.Show(true); //Show the main window
MainWindow.HighLightLastRom();
}
else {
WriteTrace(TraceDebug, __FUNCTION__ ": Show Main Window");
else
{
WriteTrace(TraceUserInterface, TraceDebug, "Show Main Window");
MainWindow.Show(true); //Show the main window
}
}
//Process Messages till program is closed
WriteTrace(TraceDebug, __FUNCTION__ ": Entering Message Loop");
WriteTrace(TraceUserInterface, TraceDebug, "Entering Message Loop");
MainWindow.ProcessAllMessages();
WriteTrace(TraceDebug, __FUNCTION__ ": Message Loop Finished");
WriteTrace(TraceUserInterface, TraceDebug, "Message Loop Finished");
if (g_BaseSystem)
{
@ -53,11 +54,11 @@ int WINAPI WinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPSTR /
delete g_BaseSystem;
g_BaseSystem = NULL;
}
WriteTrace(TraceDebug, __FUNCTION__ ": System Closed");
WriteTrace(TraceUserInterface, TraceDebug, "System Closed");
}
catch (...)
{
WriteTraceF(TraceError, __FUNCTION__ ": Exception caught (File: \"%s\" Line: %d)", __FILE__, __LINE__);
WriteTrace(TraceUserInterface, TraceError, "Exception caught (File: \"%s\" Line: %d)", __FILE__, __LINE__);
MessageBox(NULL, stdstr_f("Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__).c_str(), "Exception", MB_OK);
}
AppCleanup();