2013-11-04 01:39:19 +00:00
|
|
|
|
using BizHawk.Emulation.Common;
|
|
|
|
|
|
2013-11-13 23:36:21 +00:00
|
|
|
|
namespace BizHawk.Emulation.Cores.Sega.MasterSystem
|
2011-01-11 02:55:51 +00:00
|
|
|
|
{
|
2011-06-27 00:15:47 +00:00
|
|
|
|
public partial class SMS
|
|
|
|
|
{
|
|
|
|
|
public static readonly ControllerDefinition SmsController = new ControllerDefinition
|
|
|
|
|
{
|
|
|
|
|
Name = "SMS Controller",
|
|
|
|
|
BoolButtons =
|
|
|
|
|
{
|
|
|
|
|
"Reset", "Pause",
|
|
|
|
|
"P1 Up", "P1 Down", "P1 Left", "P1 Right", "P1 B1", "P1 B2",
|
|
|
|
|
"P2 Up", "P2 Down", "P2 Left", "P2 Right", "P2 B1", "P2 B2"
|
|
|
|
|
}
|
|
|
|
|
};
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2014-06-27 02:09:17 +00:00
|
|
|
|
public static readonly ControllerDefinition GGController = new ControllerDefinition
|
|
|
|
|
{
|
|
|
|
|
Name = "GG Controller",
|
|
|
|
|
BoolButtons =
|
|
|
|
|
{
|
|
|
|
|
"Reset",
|
|
|
|
|
"P1 Up", "P1 Down", "P1 Left", "P1 Right", "P1 B1", "P1 B2", "P1 Start"
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
2016-02-28 17:01:12 +00:00
|
|
|
|
private byte ReadControls1()
|
2011-06-27 00:15:47 +00:00
|
|
|
|
{
|
2014-12-04 00:43:12 +00:00
|
|
|
|
InputCallbacks.Call();
|
2016-02-28 17:01:12 +00:00
|
|
|
|
_lagged = false;
|
2011-06-27 00:15:47 +00:00
|
|
|
|
byte value = 0xFF;
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
if (Controller["P1 Up"]) value &= 0xFE;
|
|
|
|
|
if (Controller["P1 Down"]) value &= 0xFD;
|
|
|
|
|
if (Controller["P1 Left"]) value &= 0xFB;
|
|
|
|
|
if (Controller["P1 Right"]) value &= 0xF7;
|
|
|
|
|
if (Controller["P1 B1"]) value &= 0xEF;
|
|
|
|
|
if (Controller["P1 B2"]) value &= 0xDF;
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
if (Controller["P2 Up"]) value &= 0xBF;
|
|
|
|
|
if (Controller["P2 Down"]) value &= 0x7F;
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
return value;
|
|
|
|
|
}
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2016-02-28 17:01:12 +00:00
|
|
|
|
private byte ReadControls2()
|
2011-06-27 00:15:47 +00:00
|
|
|
|
{
|
2014-12-04 00:43:12 +00:00
|
|
|
|
InputCallbacks.Call();
|
2016-02-28 17:01:12 +00:00
|
|
|
|
_lagged = false;
|
2011-06-27 00:15:47 +00:00
|
|
|
|
byte value = 0xFF;
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
if (Controller["P2 Left"]) value &= 0xFE;
|
|
|
|
|
if (Controller["P2 Right"]) value &= 0xFD;
|
|
|
|
|
if (Controller["P2 B1"]) value &= 0xFB;
|
|
|
|
|
if (Controller["P2 B2"]) value &= 0xF7;
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
if (Controller["Reset"]) value &= 0xEF;
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
if ((Port3F & 0x0F) == 5)
|
|
|
|
|
{
|
2016-02-28 17:01:12 +00:00
|
|
|
|
if (_region == "Japan")
|
2011-06-27 00:15:47 +00:00
|
|
|
|
{
|
|
|
|
|
value &= 0x3F;
|
|
|
|
|
}
|
|
|
|
|
else // US / Europe
|
|
|
|
|
{
|
|
|
|
|
if (Port3F >> 4 == 0x0F)
|
|
|
|
|
value |= 0xC0;
|
|
|
|
|
else
|
|
|
|
|
value &= 0x3F;
|
|
|
|
|
}
|
|
|
|
|
}
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
return value;
|
|
|
|
|
}
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-09-05 17:45:01 +00:00
|
|
|
|
byte ReadPort0()
|
2011-06-27 00:15:47 +00:00
|
|
|
|
{
|
|
|
|
|
if (IsGameGear == false)
|
2014-06-27 02:09:17 +00:00
|
|
|
|
{
|
2011-06-27 00:15:47 +00:00
|
|
|
|
return 0xFF;
|
2014-06-27 02:09:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
byte value = 0xFF;
|
2014-06-27 02:09:17 +00:00
|
|
|
|
if ((Controller["Pause"] && !IsGameGear) ||
|
2014-06-27 02:24:18 +00:00
|
|
|
|
(Controller["P1 Start"] && IsGameGear))
|
2014-06-27 02:09:17 +00:00
|
|
|
|
{
|
2011-06-27 00:15:47 +00:00
|
|
|
|
value ^= 0x80;
|
2014-06-27 02:09:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
2015-08-06 00:12:09 +00:00
|
|
|
|
if (RegionStr == "Japan")
|
2014-06-27 02:09:17 +00:00
|
|
|
|
{
|
2011-06-27 00:15:47 +00:00
|
|
|
|
value ^= 0x40;
|
2014-06-27 02:09:17 +00:00
|
|
|
|
}
|
|
|
|
|
|
2011-06-27 00:15:47 +00:00
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
}
|
2011-01-11 02:55:51 +00:00
|
|
|
|
}
|