coleco: fix several games with broken input, support controller 2

This commit is contained in:
beirich 2012-11-23 04:09:01 +00:00
parent ec21c5160f
commit f23a86b20c
1 changed files with 41 additions and 6 deletions

View File

@ -37,13 +37,12 @@
if (Controller["P1 Down"]) retval &= 0xFB; if (Controller["P1 Down"]) retval &= 0xFB;
if (Controller["P1 Left"]) retval &= 0xF7; if (Controller["P1 Left"]) retval &= 0xF7;
if (Controller["P1 L"]) retval &= 0x3F; if (Controller["P1 L"]) retval &= 0x3F;
return retval; return retval;
} }
if (InputPortSelection == InputPortMode.Right) if (InputPortSelection == InputPortMode.Right)
{ {
byte retval = 0x0F; byte retval = 0;
// 0x00; // 0x00;
if (Controller["P1 Key8"]) retval = 0x01; if (Controller["P1 Key8"]) retval = 0x01;
@ -62,20 +61,56 @@
if (Controller["P1 Key6"]) retval = 0x0E; if (Controller["P1 Key6"]) retval = 0x0E;
if (Controller["P1 R"] == false) retval |= 0x40; if (Controller["P1 R"] == false) retval |= 0x40;
retval |= 0x30; // always set these bits
return retval; return retval;
} }
return 0xFF; return 0x7F;
} }
byte ReadController2() byte ReadController2()
{ {
IsLagFrame = false; 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 Frame { get; set; }
public int LagCount { get { return _lagcount; } set { _lagcount = value; } } public int LagCount { get { return _lagcount; } set { _lagcount = value; } }