2013-11-04 01:39:19 +00:00
|
|
|
|
using BizHawk.Emulation.Common;
|
2017-02-12 00:40:57 +00:00
|
|
|
|
using System;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
|
2013-11-13 03:32:25 +00:00
|
|
|
|
namespace BizHawk.Emulation.Cores.ColecoVision
|
2012-11-17 17:39:33 +00:00
|
|
|
|
{
|
2013-11-04 01:39:19 +00:00
|
|
|
|
public partial class ColecoVision
|
|
|
|
|
{
|
|
|
|
|
public static readonly ControllerDefinition ColecoVisionControllerDefinition = new ControllerDefinition
|
|
|
|
|
{
|
|
|
|
|
Name = "ColecoVision Basic Controller",
|
|
|
|
|
BoolButtons =
|
2012-11-17 17:39:33 +00:00
|
|
|
|
{
|
|
|
|
|
"P1 Up", "P1 Down", "P1 Left", "P1 Right",
|
2012-11-18 02:32:07 +00:00
|
|
|
|
"P1 L", "P1 R",
|
2014-06-29 12:32:36 +00:00
|
|
|
|
"P1 Key 0", "P1 Key 1", "P1 Key 2", "P1 Key 3", "P1 Key 4", "P1 Key 5",
|
|
|
|
|
"P1 Key 6", "P1 Key 7", "P1 Key 8", "P1 Key 9", "P1 Star", "P1 Pound",
|
2012-11-17 17:39:33 +00:00
|
|
|
|
|
2012-11-17 21:38:21 +00:00
|
|
|
|
"P2 Up", "P2 Down", "P2 Left", "P2 Right",
|
2012-11-18 02:32:07 +00:00
|
|
|
|
"P2 L", "P2 R",
|
2014-06-29 12:32:36 +00:00
|
|
|
|
"P2 Key 0", "P2 Key 1", "P2 Key 2", "P2 Key 3", "P2 Key 4", "P2 Key 5",
|
|
|
|
|
"P2 Key 6", "P2 Key 7", "P2 Key 8", "P2 Key 9", "P2 Star", "P2 Pound"
|
2012-11-17 17:39:33 +00:00
|
|
|
|
}
|
2013-11-04 01:39:19 +00:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
public ControllerDefinition ControllerDefinition { get { return ColecoVisionControllerDefinition; } }
|
|
|
|
|
public IController Controller { get; set; }
|
|
|
|
|
|
|
|
|
|
enum InputPortMode { Left, Right }
|
|
|
|
|
InputPortMode InputPortSelection;
|
|
|
|
|
|
|
|
|
|
byte ReadController1()
|
|
|
|
|
{
|
2014-12-05 03:16:08 +00:00
|
|
|
|
_isLag = false;
|
2017-02-12 00:40:57 +00:00
|
|
|
|
|
2013-11-04 01:39:19 +00:00
|
|
|
|
if (InputPortSelection == InputPortMode.Left)
|
|
|
|
|
{
|
|
|
|
|
byte retval = 0x7F;
|
2016-12-14 18:42:15 +00:00
|
|
|
|
if (Controller.IsPressed("P1 Up")) retval &= 0xFE;
|
|
|
|
|
if (Controller.IsPressed("P1 Right")) retval &= 0xFD;
|
|
|
|
|
if (Controller.IsPressed("P1 Down")) retval &= 0xFB;
|
|
|
|
|
if (Controller.IsPressed("P1 Left")) retval &= 0xF7;
|
|
|
|
|
if (Controller.IsPressed("P1 L")) retval &= 0x3F;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
return retval;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (InputPortSelection == InputPortMode.Right)
|
|
|
|
|
{
|
2016-12-28 20:37:27 +00:00
|
|
|
|
byte retval = 0xF;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
// 0x00;
|
2016-12-14 18:42:15 +00:00
|
|
|
|
if (Controller.IsPressed("P1 Key 8")) retval = 0x01;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 4")) retval = 0x02;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 5")) retval = 0x03;
|
|
|
|
|
// 0x04;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 7")) retval = 0x05;
|
|
|
|
|
if (Controller.IsPressed("P1 Pound")) retval = 0x06;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 2")) retval = 0x07;
|
|
|
|
|
// 0x08;
|
|
|
|
|
if (Controller.IsPressed("P1 Star")) retval = 0x09;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 0")) retval = 0x0A;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 9")) retval = 0x0B;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 3")) retval = 0x0C;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 1")) retval = 0x0D;
|
|
|
|
|
if (Controller.IsPressed("P1 Key 6")) retval = 0x0E;
|
|
|
|
|
|
|
|
|
|
if (Controller.IsPressed("P1 R") == false) retval |= 0x40;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
retval |= 0x30; // always set these bits
|
|
|
|
|
return retval;
|
|
|
|
|
}
|
2017-02-12 00:40:57 +00:00
|
|
|
|
|
2013-11-04 01:39:19 +00:00
|
|
|
|
|
|
|
|
|
return 0x7F;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
byte ReadController2()
|
|
|
|
|
{
|
2014-12-05 03:16:08 +00:00
|
|
|
|
_isLag = false;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
|
|
|
|
|
if (InputPortSelection == InputPortMode.Left)
|
|
|
|
|
{
|
|
|
|
|
byte retval = 0x7F;
|
2016-12-14 18:42:15 +00:00
|
|
|
|
if (Controller.IsPressed("P2 Up")) retval &= 0xFE;
|
|
|
|
|
if (Controller.IsPressed("P2 Right")) retval &= 0xFD;
|
|
|
|
|
if (Controller.IsPressed("P2 Down")) retval &= 0xFB;
|
|
|
|
|
if (Controller.IsPressed("P2 Left")) retval &= 0xF7;
|
|
|
|
|
if (Controller.IsPressed("P2 L")) retval &= 0x3F;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
return retval;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (InputPortSelection == InputPortMode.Right)
|
|
|
|
|
{
|
2016-12-28 20:37:27 +00:00
|
|
|
|
byte retval = 0xF;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
// 0x00;
|
2017-02-12 00:40:57 +00:00
|
|
|
|
if (Controller.IsPressed("P2 Key 8")) retval = 0x01;
|
|
|
|
|
if (Controller.IsPressed("P2 Key 4")) retval = 0x02;
|
|
|
|
|
if (Controller.IsPressed("P2 Key 5")) retval = 0x03;
|
2016-12-14 18:42:15 +00:00
|
|
|
|
// 0x04;
|
2017-02-12 00:40:57 +00:00
|
|
|
|
if (Controller.IsPressed("P2 Key 7")) retval = 0x05;
|
2016-12-14 18:42:15 +00:00
|
|
|
|
if (Controller.IsPressed("P2 Pound")) retval = 0x06;
|
2017-02-12 00:40:57 +00:00
|
|
|
|
if (Controller.IsPressed("P2 Key 2")) retval = 0x07;
|
2016-12-14 18:42:15 +00:00
|
|
|
|
// 0x08;
|
|
|
|
|
if (Controller.IsPressed("P2 Star")) retval = 0x09;
|
2017-02-12 00:40:57 +00:00
|
|
|
|
if (Controller.IsPressed("P2 Key 0")) retval = 0x0A;
|
|
|
|
|
if (Controller.IsPressed("P2 Key 9")) retval = 0x0B;
|
|
|
|
|
if (Controller.IsPressed("P2 Key 3")) retval = 0x0C;
|
|
|
|
|
if (Controller.IsPressed("P2 Key 1")) retval = 0x0D;
|
|
|
|
|
if (Controller.IsPressed("P2 Key 6")) retval = 0x0E;
|
2016-12-14 18:42:15 +00:00
|
|
|
|
|
|
|
|
|
if (Controller.IsPressed("P2 R") == false) retval |= 0x40;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
retval |= 0x30; // always set these bits
|
|
|
|
|
return retval;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0x7F;
|
|
|
|
|
}
|
|
|
|
|
|
2014-03-22 04:46:01 +00:00
|
|
|
|
public int Frame { get { return frame; } set { frame = value; } }
|
|
|
|
|
int frame;
|
2013-11-04 01:39:19 +00:00
|
|
|
|
}
|
2012-11-17 17:39:33 +00:00
|
|
|
|
}
|