More fixes for TIC80 mouse input
This commit is contained in:
parent
11e68a2271
commit
be4f6c4148
|
@ -143,5 +143,8 @@ namespace BizHawk.Emulation.Cores.Computers.TIC80
|
|||
|
||||
[BizImport(CC)]
|
||||
public abstract void SetInputs(ref TIC80Inputs inputs);
|
||||
|
||||
[BizImport(CC)]
|
||||
public abstract bool IsMouseRelative();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace BizHawk.Emulation.Cores.Computers.TIC80
|
|||
_core = PreInit<LibTIC80>(new WaterboxOptions
|
||||
{
|
||||
Filename = "tic80.wbx",
|
||||
SbrkHeapSizeKB = 2 * 1024,
|
||||
SbrkHeapSizeKB = 64 * 1024,
|
||||
SealedHeapSizeKB = 4,
|
||||
InvisibleHeapSizeKB = 4,
|
||||
PlainHeapSizeKB = 4,
|
||||
|
@ -111,12 +111,11 @@ namespace BizHawk.Emulation.Cores.Computers.TIC80
|
|||
|
||||
if (inputsActive[4])
|
||||
{
|
||||
ret.AddXYPair("Mouse Position {0}", AxisPairOrientation.RightAndUp, 0.RangeTo(255), 128);
|
||||
ret.AddXYPair("Mouse Position {0}", AxisPairOrientation.RightAndDown, (-128).RangeTo(127), 0);
|
||||
ret.BoolButtons.Add("Mouse Left Click");
|
||||
ret.BoolButtons.Add("Mouse Middle Click");
|
||||
ret.BoolButtons.Add("Mouse Right Click");
|
||||
ret.AddXYPair("Mouse Scroll {0}", AxisPairOrientation.RightAndUp, (-32).RangeTo(31), 0);
|
||||
ret.BoolButtons.Add("Mouse Relative Toggle");
|
||||
|
||||
foreach (var n in ret.BoolButtons)
|
||||
{
|
||||
|
@ -197,11 +196,6 @@ namespace BizHawk.Emulation.Cores.Computers.TIC80
|
|||
var y = (ushort)((sbyte)controller.AxisValue("Mouse Scroll Y") + 32);
|
||||
ret |= (ushort)(y << (3 + 6));
|
||||
|
||||
if (controller.IsPressed("Mouse Relative Toggle"))
|
||||
{
|
||||
ret |= 0x8000;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -231,16 +225,25 @@ namespace BizHawk.Emulation.Cores.Computers.TIC80
|
|||
{
|
||||
var inputs = new LibTIC80.TIC80Inputs
|
||||
{
|
||||
MouseX = (byte)controller.AxisValue("Mouse Position X"),
|
||||
MouseY = (byte)controller.AxisValue("Mouse Position Y"),
|
||||
MouseX = (byte)(sbyte)controller.AxisValue("Mouse Position X"),
|
||||
MouseY = (byte)(sbyte)controller.AxisValue("Mouse Position Y"),
|
||||
MouseButtons = GetMouseButtons(controller),
|
||||
};
|
||||
|
||||
if (controller.IsPressed("Mouse Relative Toggle"))
|
||||
// a reset will unset relative mode, but we won't know that until the reset actually happens
|
||||
if (_core.IsMouseRelative() && !controller.IsPressed("Reset"))
|
||||
{
|
||||
// turn (0, 255) to (-128, 127)
|
||||
inputs.MouseX -= 128;
|
||||
inputs.MouseY -= 128;
|
||||
inputs.MouseButtons |= 0x8000;
|
||||
}
|
||||
else
|
||||
{
|
||||
// convert (-128, 127) to (0, 255)
|
||||
inputs.MouseX += 128;
|
||||
inputs.MouseY += 128;
|
||||
|
||||
// mouse Y is supposed to be contrained to 0-143 (i.e. screen height range)
|
||||
// mouse X has the full range regardless (since screen width is 256)
|
||||
inputs.MouseY = (byte)(inputs.MouseY * 143 / 255);
|
||||
}
|
||||
|
||||
GetGamepads(controller, ref inputs);
|
||||
|
|
Loading…
Reference in New Issue