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;
            }
        }
Beispiel #2
0
		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();
                }
            }
        }
Beispiel #4
0
        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);
            }
        }