From 0d8b9c42ccf795c49de135e9c44cb0b8c0dc629e Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Fri, 6 Oct 2017 10:51:40 -0400 Subject: [PATCH] Add reset button to colecovision Fixes #992 --- .../Consoles/Coleco/ColecoControllerDeck.cs | 4 ++++ .../Consoles/Coleco/ColecoVision.IEmulator.cs | 12 ++++++++++++ .../Consoles/Coleco/ColecoVision.cs | 12 ++++++++++++ 3 files changed, 28 insertions(+) diff --git a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoControllerDeck.cs b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoControllerDeck.cs index 2ad8b5cd5b..97a45d4e9b 100644 --- a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoControllerDeck.cs +++ b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoControllerDeck.cs @@ -30,6 +30,10 @@ namespace BizHawk.Emulation.Cores.ColecoVision Name = "ColecoVision Basic Controller", BoolButtons = Port1.Definition.BoolButtons .Concat(Port2.Definition.BoolButtons) + .Concat(new[] + { + "Power", "Reset" + }) .ToList() }; diff --git a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IEmulator.cs b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IEmulator.cs index 68d8493693..a503350386 100644 --- a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IEmulator.cs +++ b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IEmulator.cs @@ -12,6 +12,18 @@ namespace BizHawk.Emulation.Cores.ColecoVision public void FrameAdvance(IController controller, bool render, bool renderSound) { _controller = controller; + + // NOTE: Need to research differences between reset and power cycle + if (_controller.IsPressed("Power")) + { + HardReset(); + } + + if (_controller.IsPressed("Reset")) + { + SoftReset(); + } + _cpu.Debug = _tracer.Enabled; _frame++; _isLag = true; diff --git a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs index 21f5bb535c..2422f9a36f 100644 --- a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs +++ b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs @@ -223,5 +223,17 @@ namespace BizHawk.Emulation.Cores.ColecoVision ////Console.WriteLine("Unhandled write at {0:X4}:{1:X2}", addr, value); } + + private void HardReset() + { + PSG.Reset(); + _cpu.Reset(); + } + + private void SoftReset() + { + PSG.Reset(); + _cpu.Reset(); + } } } \ No newline at end of file