void Trace( struct TDebug *obj ) { char Instr[2] = {0, 0}; int Sel; long Offset; if( obj->CurrentThread ) { Sel = obj->CurrentThread->Cs; Offset = obj->CurrentThread->Eip; ReadMem( obj->CurrentThread, Sel, Offset, Instr, 2 ); if ( Instr[0] == 0xF && Instr[1] == 0xB ) { Offset += 7; AddBreak( obj, Sel, Offset ); Go( obj ); ClearBreak( obj, Sel, Offset ); } else { RdosResetSignal( obj->UserSignal ); SetupTrace( obj->CurrentThread ); RdosContinueDebugEvent( obj->FHandle, obj->CurrentThread->ThreadID); RdosWaitForever( obj->UserWait ); } } }
bool AppInit(CNotification * Notify, const char * BaseDirectory, int argc, char **argv) { try { g_Notify = Notify; InitializeLog(); WriteTrace(TraceAppInit, TraceDebug, "Starting (BaseDirectory: %s)", BaseDirectory ? BaseDirectory : "null"); if (Notify == NULL) { WriteTrace(TraceAppInit, TraceError, "No Notification class passed"); return false; } WriteTrace(TraceAppInit, TraceDebug, "Settings up settings"); g_Settings = new CSettings; g_Settings->Initialize(BaseDirectory, AppName()); WriteTrace(TraceAppInit, TraceDebug, "Parse Commands"); if (!ParseCommand(argc, argv)) { WriteTrace(TraceAppInit, TraceError, "Failed to Parse Commands, exiting now"); return false; } #ifdef _WIN32 if (g_Settings->LoadBool(Setting_CheckEmuRunning) && pjutil::TerminatedExistingExe()) { delete g_Settings; g_Settings = new CSettings; g_Settings->Initialize(BaseDirectory, AppName()); } #endif SetupTrace(); FixDirectories(); #ifdef _WIN32 CMipsMemoryVM::ReserveMemory(); IncreaseThreadPriority(); #endif //Create the plugin container WriteTrace(TraceAppInit, TraceInfo, "Create Plugins"); g_Plugins = new CPlugins(Directory_Plugin); g_Lang = new CLanguage(); g_Lang->LoadCurrentStrings(); g_Notify->AppInitDone(); WriteTrace(TraceAppInit, TraceDebug, "Initialized Successfully"); return true; } catch (...) { g_Notify->DisplayError(stdstr_f("Exception caught\nFile: %s\nLine: %d", __FILE__, __LINE__).c_str()); WriteTrace(TraceAppInit, TraceError, "Exception caught, Init was not successfull"); return false; } }
void PluginInit ( void ) { if (g_PluginInit) { return; } SetupTrace(); SetupAudioSettings(); g_PluginInit = true; }
void DoTrace( struct TDebug *obj ) { if ( ( obj->CurrentThread->Cs & 0x3 ) == 0x3 ) { SetupTrace( obj->CurrentThread ); RdosContinueDebugEvent( obj->FHandle, obj->CurrentThread->ThreadID ); } else { while ( RdosGetDebugThread() != obj->CurrentThread->ThreadID ) RdosDebugNext(); RdosDebugTrace(); } }