From f23a86b20c486c09781ec32d89bd43bb5997b9b7 Mon Sep 17 00:00:00 2001 From: beirich Date: Fri, 23 Nov 2012 04:09:01 +0000 Subject: [PATCH] coleco: fix several games with broken input, support controller 2 --- BizHawk.Emulation/Consoles/Coleco/Input.cs | 47 +++++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Coleco/Input.cs b/BizHawk.Emulation/Consoles/Coleco/Input.cs index 5fc4129c50..1141850012 100644 --- a/BizHawk.Emulation/Consoles/Coleco/Input.cs +++ b/BizHawk.Emulation/Consoles/Coleco/Input.cs @@ -37,13 +37,12 @@ if (Controller["P1 Down"]) retval &= 0xFB; if (Controller["P1 Left"]) retval &= 0xF7; if (Controller["P1 L"]) retval &= 0x3F; - return retval; } if (InputPortSelection == InputPortMode.Right) { - byte retval = 0x0F; + byte retval = 0; // 0x00; if (Controller["P1 Key8"]) retval = 0x01; @@ -62,20 +61,56 @@ if (Controller["P1 Key6"]) retval = 0x0E; if (Controller["P1 R"] == false) retval |= 0x40; + retval |= 0x30; // always set these bits return retval; } - return 0xFF; + return 0x7F; } byte ReadController2() { IsLagFrame = false; - // TODO copy/paste from player 1 but.... debugging some things first - return 0xFF; - } + if (InputPortSelection == InputPortMode.Left) + { + byte retval = 0x7F; + if (Controller["P2 Up"]) retval &= 0xFE; + if (Controller["P2 Right"]) retval &= 0xFD; + if (Controller["P2 Down"]) retval &= 0xFB; + if (Controller["P2 Left"]) retval &= 0xF7; + if (Controller["P2 L"]) retval &= 0x3F; + return retval; + } + + if (InputPortSelection == InputPortMode.Right) + { + byte retval = 0; + + // 0x00; + if (Controller["P2 Key8"]) retval = 0x01; + if (Controller["P2 Key4"]) retval = 0x02; + if (Controller["P2 Key5"]) retval = 0x03; + // 0x04; + if (Controller["P2 Key7"]) retval = 0x05; + if (Controller["P2 Pound"]) retval = 0x06; + if (Controller["P2 Key2"]) retval = 0x07; + // 0x08; + if (Controller["P2 Star"]) retval = 0x09; + if (Controller["P2 Key0"]) retval = 0x0A; + if (Controller["P2 Key9"]) retval = 0x0B; + if (Controller["P2 Key3"]) retval = 0x0C; + if (Controller["P2 Key1"]) retval = 0x0D; + if (Controller["P2 Key6"]) retval = 0x0E; + + if (Controller["P2 R"] == false) retval |= 0x40; + retval |= 0x30; // always set these bits + return retval; + } + + return 0x7F; + } public int Frame { get; set; } public int LagCount { get { return _lagcount; } set { _lagcount = value; } }