public static void EMU_OPEN_HEXEDITOR_ADDRESS(MemoryDomainProxy mdp, long address) { try { } catch (Exception ex) { if (VanguardCore.ShowErrorDialog(ex, true) == DialogResult.Abort) { throw new RTCV.NetCore.AbortEverythingException(); } return; } }
public static void BIZHAWK_OPEN_HEXEDITOR_ADDRESS(MemoryDomainProxy mdp, long address) { try { if (mdp?.MD == null) return; GlobalWin.Tools.Load<HexEditor>(); GlobalWin.Tools.HexEditor.SetMemoryDomain(((VanguardImplementation.BizhawkMemoryDomain)(mdp.MD)).MD.ToString()); GlobalWin.Tools.HexEditor.GoToAddress(address); } catch (Exception ex) { if (VanguardCore.ShowErrorDialog(ex, true) == DialogResult.Abort) throw new AbortEverythingException(); return; } }
private static void OnMessageReceived(object sender, NetCoreEventArgs e) { try { // This is where you implement interaction. // Warning: Any error thrown in here will be caught by NetCore and handled by being displayed in the console. var message = e.message; var simpleMessage = message as NetCoreSimpleMessage; var advancedMessage = message as NetCoreAdvancedMessage; ConsoleEx.WriteLine(message.Type); switch (message.Type) //Handle received messages here { case "INFINITELOOP": SyncObjectSingleton.FormExecute((o, ea) => { while (true) { Thread.Sleep(10); } }); break; case REMOTE_ALLSPECSSENT: SyncObjectSingleton.FormExecute((o, ea) => { VanguardCore.LoadDefaultRom(); Program.SpecsSent = true; }); break; case SAVESAVESTATE: SyncObjectSingleton.FormExecute((o, ea) => { e.setReturnValue(VanguardCore.SaveSavestate_NET(advancedMessage.objectValue as string)); }); break; case LOADSAVESTATE: { var cmd = advancedMessage.objectValue as object[]; var path = cmd[0] as string; var location = (StashKeySavestateLocation)cmd[1]; SyncObjectSingleton.FormExecute((o, ea) => { e.setReturnValue(VanguardCore.LoadSavestate_NET(path, location)); }); break; } case REMOTE_LOADROM: { var fileName = advancedMessage.objectValue as String; SyncObjectSingleton.FormExecute((o, ea) => { VanguardCore.LoadRom_NET(fileName); }); } break; case REMOTE_DOMAIN_GETDOMAINS: SyncObjectSingleton.FormExecute((o, ea) => { e.setReturnValue(Hooks.GetInterfaces()); }); break; case REMOTE_KEY_SETSYNCSETTINGS: SyncObjectSingleton.FormExecute((o, ea) => { Hooks.EMU_GETSET_SYNCSETTINGS = (string)advancedMessage.objectValue; }); break; case REMOTE_KEY_SETSYSTEMCORE: { var cmd = advancedMessage.objectValue as object[]; var systemName = (string)cmd[0]; var systemCore = (string)cmd[1]; SyncObjectSingleton.FormExecute((o, ea) => { Hooks.EMU_SET_SYSTEMCORE(systemName, systemCore); }); } break; case EMU_OPEN_HEXEDITOR_ADDRESS: { var temp = advancedMessage.objectValue as object[]; string domain = (string)temp[0]; long address = (long)temp[1]; MemoryDomainProxy mdp = MemoryDomains.GetProxy(domain, address); long realAddress = MemoryDomains.GetRealAddress(domain, address); SyncObjectSingleton.FormExecute((o, ea) => { Hooks.EMU_OPEN_HEXEDITOR_ADDRESS(mdp, realAddress); }); break; } case REMOTE_EVENT_EMU_MAINFORM_CLOSE: SyncObjectSingleton.FormExecute((o, ea) => { Hooks.EMU_MAINFORM_CLOSE(); }); break; case REMOTE_EVENT_SAVEBIZHAWKCONFIG: SyncObjectSingleton.FormExecute((o, ea) => { Hooks.EMU_MAINFORM_SAVECONFIG(); }); break; case REMOTE_IMPORTKEYBINDS: SyncObjectSingleton.FormExecute((o, ea) => { Hooks.EMU_IMPORTCONFIGINI(CorruptCore.bizhawkDir + Path.DirectorySeparatorChar + "import_config.ini", CorruptCore.bizhawkDir + Path.DirectorySeparatorChar + "stockpile_config.ini"); }); break; case REMOTE_MERGECONFIG: SyncObjectSingleton.FormExecute((o, ea) => { Hooks.EMU_MERGECONFIGINI(CorruptCore.bizhawkDir + Path.DirectorySeparatorChar + "backup_config.ini", CorruptCore.bizhawkDir + Path.DirectorySeparatorChar + "stockpile_config.ini"); }); break; case REMOTE_RESTOREBIZHAWKCONFIG: SyncObjectSingleton.FormExecute((o, ea) => { Process.Start(CorruptCore.bizhawkDir + Path.DirectorySeparatorChar + $"RestoreConfigDETACHED.bat"); }); break; case REMOTE_ISNORMALADVANCE: e.setReturnValue(Hooks.isNormalAdvance); break; } } catch (Exception ex) { if (VanguardCore.ShowErrorDialog(ex, true) == DialogResult.Abort) { throw new RTCV.NetCore.AbortEverythingException(); } } }
private static void OnMessageReceived(object sender, NetCoreEventArgs e) { try { // This is where you implement interaction. // Warning: Any error thrown in here will be caught by NetCore and handled by being displayed in the console. var message = e.message; var simpleMessage = message as NetCoreSimpleMessage; var advancedMessage = message as NetCoreAdvancedMessage; ConsoleEx.WriteLine(message.Type); switch (message.Type) //Handle received messages here { case RTCV.NetCore.Commands.Remote.AllSpecSent: { if (VanguardCore.FirstConnect) { SyncObjectSingleton.FormExecute(() => { VanguardCore.LoadDefaultAndShowBizhawkForm(); }); VanguardCore.FirstConnect = false; } } break; case RTCV.NetCore.Commands.Basic.SaveSavestate: SyncObjectSingleton.FormExecute(() => { e.setReturnValue(VanguardCore.SaveSavestate_NET(advancedMessage.objectValue as string)); }); break; case RTCV.NetCore.Commands.Basic.LoadSavestate: { var cmd = advancedMessage.objectValue as object[]; var path = cmd[0] as string; var location = (StashKeySavestateLocation)cmd[1]; SyncObjectSingleton.FormExecute(() => { e.setReturnValue(VanguardCore.LoadSavestate_NET(path, location)); }); break; } case RTCV.NetCore.Commands.Remote.LoadROM: { var fileName = advancedMessage.objectValue as String; SyncObjectSingleton.FormExecute(() => { VanguardCore.LoadRom_NET(fileName); }); } break; case RTCV.NetCore.Commands.Remote.CloseGame: { SyncObjectSingleton.FormExecute(() => { Hooks.CLOSE_GAME(true); }); } break; case RTCV.NetCore.Commands.Remote.DomainGetDomains: SyncObjectSingleton.FormExecute(() => { e.setReturnValue(Hooks.GetInterfaces()); }); break; case RTCV.NetCore.Commands.Remote.KeySetSyncSettings: SyncObjectSingleton.FormExecute(() => { Hooks.BIZHAWK_GETSET_SYNCSETTINGS = (string)advancedMessage.objectValue; }); break; case RTCV.NetCore.Commands.Remote.KeySetSystemCore: { var cmd = advancedMessage.objectValue as object[]; var systemName = (string)cmd[0]; var systemCore = (string)cmd[1]; SyncObjectSingleton.FormExecute(() => { Hooks.BIZHAWK_SET_SYSTEMCORE(systemName, systemCore); }); } break; case RTCV.NetCore.Commands.Remote.OpenHexEditor: SyncObjectSingleton.FormExecute(() => Hooks.BIZHAWK_OPEN_HEXEDITOR()); break; case RTCV.NetCore.Commands.Emulator.GetRealtimeAPI: e.setReturnValue(VanguardCore.RTE_API); break; case RTCV.NetCore.Commands.Emulator.GetScreenshot: e.setReturnValue(Hooks.BIZHAWK_GET_SCREENSHOT()); break; case RTCV.NetCore.Commands.Emulator.OpenHexEditorAddress: { var temp = advancedMessage.objectValue as object[]; string domain = (string)temp[0]; long address = (long)temp[1]; MemoryDomainProxy mdp = MemoryDomains.GetProxy(domain, address); long realAddress = MemoryDomains.GetRealAddress(domain, address); SyncObjectSingleton.FormExecute(() => { Hooks.BIZHAWK_OPEN_HEXEDITOR_ADDRESS(mdp, realAddress); }); break; } case RTCV.NetCore.Commands.Remote.EventEmuMainFormClose: SyncObjectSingleton.FormExecute(() => { Hooks.BIZHAWK_MAINFORM_CLOSE(); }); break; case RTCV.NetCore.Commands.Remote.RenderStart: SyncObjectSingleton.FormExecute(() => { BizhawkRender.StartRender_NET(); }); break; case RTCV.NetCore.Commands.Remote.RenderStop: SyncObjectSingleton.FormExecute(() => { BizhawkRender.StopRender_NET(); }); break; case RTCV.NetCore.Commands.Remote.EventEmuStarted: //if (RTC_StockpileManager.BackupedState == null) //S.GET<RTC_Core_Form>().AutoCorrupt = false; //Todo //RTC_NetcoreImplementation.SendCommandToBizhawk(new RTC_Command("REMOTE_PUSHVMDS) { objectValue = MemoryDomains.VmdPool.Values.Select(it => (it as VirtualMemoryDomain).Proto).ToArray() }, true, true); //Thread.Sleep(100); // if (RTC_StockpileManager.BackupedState != null) // S.GET<RTC_MemoryDomains_Form>().RefreshDomainsAndKeepSelected(RTC_StockpileManager.BackupedState.SelectedDomains.ToArray()); // if (S.GET<RTC_Core_Form>().cbUseGameProtection.Checked) // RTC_GameProtection.Start(); break; case RTCV.NetCore.Commands.Remote.IsNormalAdvance: e.setReturnValue(Hooks.isNormalAdvance); break; case RTCV.NetCore.Commands.Remote.EventCloseEmulator: Environment.Exit(-1); break; } } catch (Exception ex) { VanguardCore.ShowErrorDialog(ex, true); } }