2017-07-18 16:05:11 +00:00
|
|
|
|
namespace BizHawk.Emulation.Cores.PCEngine
|
2011-01-11 02:55:51 +00:00
|
|
|
|
{
|
2011-12-27 00:15:48 +00:00
|
|
|
|
public partial class PCEngine
|
|
|
|
|
{
|
2017-04-25 17:57:42 +00:00
|
|
|
|
private int SelectedController;
|
|
|
|
|
private byte InputByte;
|
2011-09-05 17:45:01 +00:00
|
|
|
|
|
2017-04-25 17:57:42 +00:00
|
|
|
|
public bool SEL => (InputByte & 1) != 0;
|
|
|
|
|
public bool CLR => (InputByte & 2) != 0;
|
2011-03-15 03:36:02 +00:00
|
|
|
|
|
2017-04-25 17:57:42 +00:00
|
|
|
|
private void WriteInput(byte value)
|
2011-12-27 00:15:48 +00:00
|
|
|
|
{
|
|
|
|
|
bool prevSEL = SEL;
|
|
|
|
|
InputByte = value;
|
2011-03-15 03:36:02 +00:00
|
|
|
|
|
2011-12-27 00:15:48 +00:00
|
|
|
|
if (SEL && CLR)
|
2017-04-25 17:57:42 +00:00
|
|
|
|
{
|
2011-12-27 00:15:48 +00:00
|
|
|
|
SelectedController = 0;
|
2017-04-25 17:57:42 +00:00
|
|
|
|
}
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2011-12-27 00:15:48 +00:00
|
|
|
|
if (CLR == false && prevSEL == false && SEL == true)
|
2017-04-25 17:57:42 +00:00
|
|
|
|
{
|
2011-12-27 00:15:48 +00:00
|
|
|
|
SelectedController = (SelectedController + 1);
|
2017-04-25 17:57:42 +00:00
|
|
|
|
}
|
2011-12-27 00:15:48 +00:00
|
|
|
|
}
|
2011-01-11 02:55:51 +00:00
|
|
|
|
|
2017-07-18 15:37:17 +00:00
|
|
|
|
private readonly PceControllerDeck _controllerDeck;
|
|
|
|
|
|
2017-04-25 17:57:42 +00:00
|
|
|
|
private byte ReadInput()
|
2011-12-27 00:15:48 +00:00
|
|
|
|
{
|
2014-12-04 00:43:12 +00:00
|
|
|
|
InputCallbacks.Call();
|
2011-12-27 00:15:48 +00:00
|
|
|
|
byte value = 0x3F;
|
2011-03-14 06:12:40 +00:00
|
|
|
|
|
2011-12-27 00:15:48 +00:00
|
|
|
|
int player = SelectedController + 1;
|
|
|
|
|
if (player < 6)
|
|
|
|
|
{
|
2016-12-12 16:23:07 +00:00
|
|
|
|
_lagged = false;
|
2017-07-18 15:37:17 +00:00
|
|
|
|
value &= _controllerDeck.Read(player, _controller, SEL);
|
2011-12-27 00:15:48 +00:00
|
|
|
|
}
|
|
|
|
|
|
2017-04-25 17:57:42 +00:00
|
|
|
|
if (Region == "Japan")
|
|
|
|
|
{
|
|
|
|
|
value |= 0x40;
|
|
|
|
|
}
|
2011-12-27 00:15:48 +00:00
|
|
|
|
|
|
|
|
|
if (Type != NecSystemType.TurboCD && BramEnabled == false)
|
2017-04-25 17:57:42 +00:00
|
|
|
|
{
|
2011-12-27 00:15:48 +00:00
|
|
|
|
value |= 0x80;
|
2017-04-25 17:57:42 +00:00
|
|
|
|
}
|
2011-12-27 00:15:48 +00:00
|
|
|
|
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
}
|
2011-01-11 02:55:51 +00:00
|
|
|
|
}
|