From fb665254b23a50937f5066464198a4a5d4631909 Mon Sep 17 00:00:00 2001 From: alyosha-tas Date: Tue, 29 Aug 2017 09:34:52 -0400 Subject: [PATCH] Delete InputState.cs --- EMU7800/Core/InputState.cs | 398 ------------------------------------- 1 file changed, 398 deletions(-) delete mode 100644 EMU7800/Core/InputState.cs diff --git a/EMU7800/Core/InputState.cs b/EMU7800/Core/InputState.cs deleted file mode 100644 index 95950a9eb9..0000000000 --- a/EMU7800/Core/InputState.cs +++ /dev/null @@ -1,398 +0,0 @@ -/* - * InputState.cs - * - * Class containing the input state of the console and its controllers, - * mapping emulator input devices to external input. - * - * Copyright © 2003-2010 Mike Murphy - * - */ -using System; - -namespace EMU7800.Core -{ - public class InputState - { - #region Fields - - const int - PaddleOhmMin = 100000, - PaddleOhmMax = 800000; - - const int - LeftControllerJackIndex = 0, - RightControllerJackIndex = 1, - ConsoleSwitchIndex = 2, - ControllerActionStateIndex = 3, - OhmsIndex = ControllerActionStateIndex + 4, - LightgunPositionIndex = ControllerActionStateIndex + 4, - InputStateSize = ControllerActionStateIndex + 8 + 1; - - // For driving controllers - readonly byte[] _rotGrayCodes = new byte[] { 0x0f, 0x0d, 0x0c, 0x0e }; - readonly int[] _rotState = new int[2]; - - readonly int[] _nextInputState = new int[InputStateSize]; - readonly int[] _inputState = new int[InputStateSize]; - - bool _lagged = true; - - #endregion - - #region Public Members - - /// - /// Enables the incoming input state buffer to be populated prior to the start of the frame. - /// Useful for input playback senarios. - /// - /// Return value is ignored. - public Func InputAdvancing { get; set; } - - /// - /// Enables access to the input state buffer. - /// Useful for input recording senarios. - /// - /// Return value is ignored. - public Func InputAdvanced { get; set; } - - public void CaptureInputState() - { - if (InputAdvancing != null) - InputAdvancing(_nextInputState); - Buffer.BlockCopy(_nextInputState, 0, _inputState, 0, InputStateSize * sizeof(int)); - if (InputAdvanced != null) - InputAdvanced(_inputState); - _lagged = true; - } - - public Controller LeftControllerJack - { - get { return (Controller)_nextInputState[LeftControllerJackIndex]; } - set { _nextInputState[LeftControllerJackIndex] = (int)value; } - } - - public Controller RightControllerJack - { - get { return (Controller)_nextInputState[RightControllerJackIndex]; } - set { _nextInputState[RightControllerJackIndex] = (int)value; } - } - - public bool IsGameBWConsoleSwitchSet - { - get { return (_nextInputState[ConsoleSwitchIndex] & (1 << (int) ConsoleSwitch.GameBW)) != 0; } - } - - public bool IsLeftDifficultyAConsoleSwitchSet - { - get { return (_nextInputState[ConsoleSwitchIndex] & (1 << (int)ConsoleSwitch.LeftDifficultyA)) != 0; } - } - - public bool IsRightDifficultyAConsoleSwitchSet - { - get { return (_nextInputState[ConsoleSwitchIndex] & (1 << (int)ConsoleSwitch.RightDifficultyA)) != 0; } - } - - public bool Lagged - { - get { return _lagged; } - } - - public Action InputPollCallback { get; set; } - - public void RaiseInput(int playerNo, MachineInput input, bool down) - { - if (InputPollCallback != null) - { - InputPollCallback(); - } - switch (input) - { - case MachineInput.Fire: - SetControllerActionState(playerNo, ControllerAction.Trigger, down); - break; - case MachineInput.Fire2: - SetControllerActionState(playerNo, ControllerAction.Trigger2, down); - break; - case MachineInput.Left: - SetControllerActionState(playerNo, ControllerAction.Left, down); - if (down) SetControllerActionState(playerNo, ControllerAction.Right, false); - break; - case MachineInput.Up: - SetControllerActionState(playerNo, ControllerAction.Up, down); - if (down) SetControllerActionState(playerNo, ControllerAction.Down, false); - break; - case MachineInput.Right: - SetControllerActionState(playerNo, ControllerAction.Right, down); - if (down) SetControllerActionState(playerNo, ControllerAction.Left, false); - break; - case MachineInput.Down: - SetControllerActionState(playerNo, ControllerAction.Down, down); - if (down) SetControllerActionState(playerNo, ControllerAction.Up, false); - break; - case MachineInput.NumPad7: - SetControllerActionState(playerNo, ControllerAction.Keypad7, down); - break; - case MachineInput.NumPad8: - SetControllerActionState(playerNo, ControllerAction.Keypad8, down); - break; - case MachineInput.NumPad9: - SetControllerActionState(playerNo, ControllerAction.Keypad9, down); - break; - case MachineInput.NumPad4: - SetControllerActionState(playerNo, ControllerAction.Keypad4, down); - break; - case MachineInput.NumPad5: - SetControllerActionState(playerNo, ControllerAction.Keypad5, down); - break; - case MachineInput.NumPad6: - SetControllerActionState(playerNo, ControllerAction.Keypad6, down); - break; - case MachineInput.NumPad1: - SetControllerActionState(playerNo, ControllerAction.Keypad1, down); - break; - case MachineInput.NumPad2: - SetControllerActionState(playerNo, ControllerAction.Keypad2, down); - break; - case MachineInput.NumPad3: - SetControllerActionState(playerNo, ControllerAction.Keypad3, down); - break; - case MachineInput.NumPadMult: - SetControllerActionState(playerNo, ControllerAction.KeypadA, down); - break; - case MachineInput.NumPad0: - SetControllerActionState(playerNo, ControllerAction.Keypad0, down); - break; - case MachineInput.NumPadHash: - SetControllerActionState(playerNo, ControllerAction.KeypadP, down); - break; - case MachineInput.Driving0: - SetControllerActionState(playerNo, ControllerAction.Driving0, true); - SetControllerActionState(playerNo, ControllerAction.Driving1, false); - SetControllerActionState(playerNo, ControllerAction.Driving2, false); - SetControllerActionState(playerNo, ControllerAction.Driving3, false); - break; - case MachineInput.Driving1: - SetControllerActionState(playerNo, ControllerAction.Driving0, false); - SetControllerActionState(playerNo, ControllerAction.Driving1, true); - SetControllerActionState(playerNo, ControllerAction.Driving2, false); - SetControllerActionState(playerNo, ControllerAction.Driving3, false); - break; - case MachineInput.Driving2: - SetControllerActionState(playerNo, ControllerAction.Driving0, false); - SetControllerActionState(playerNo, ControllerAction.Driving1, false); - SetControllerActionState(playerNo, ControllerAction.Driving2, true); - SetControllerActionState(playerNo, ControllerAction.Driving3, false); - break; - case MachineInput.Driving3: - SetControllerActionState(playerNo, ControllerAction.Driving0, false); - SetControllerActionState(playerNo, ControllerAction.Driving1, false); - SetControllerActionState(playerNo, ControllerAction.Driving2, false); - SetControllerActionState(playerNo, ControllerAction.Driving3, true); - break; - case MachineInput.Reset: - SetConsoleSwitchState(ConsoleSwitch.GameReset, down); - break; - case MachineInput.Select: - SetConsoleSwitchState(ConsoleSwitch.GameSelect, down); - break; - case MachineInput.Color: - if (down) ToggleConsoleSwitchState(ConsoleSwitch.GameBW); - break; - case MachineInput.LeftDifficulty: - if (down) ToggleConsoleSwitchState(ConsoleSwitch.LeftDifficultyA); - break; - case MachineInput.RightDifficulty: - if (down) ToggleConsoleSwitchState(ConsoleSwitch.RightDifficultyA); - break; - } - } - - public void RaisePaddleInput(int playerNo, int valMax, int val) - { - var ohms = PaddleOhmMax - (PaddleOhmMax - PaddleOhmMin) / valMax * val; - _nextInputState[OhmsIndex + (playerNo & 3)] = ohms; - } - - public void RaiseLightgunPos(int playerNo, int scanline, int hpos) - { - var i = LightgunPositionIndex + ((playerNo & 1) << 1); - _nextInputState[i++] = scanline; - _nextInputState[i] = hpos; - } - - public void ClearAllInput() - { - _nextInputState[ConsoleSwitchIndex] = 0; - ClearLeftJackInput(); - ClearRightJackInput(); - } - - // For Bizhawk - // Emu7800's client does not call Clear input every frame so console switches behave like switches - // Bizhawk needs to call a clear input function every frame, if we put switches in there, they would behave like buttons - public void ClearControllerInput() - { - ClearLeftJackInput(); - ClearRightJackInput(); - } - - public void ClearInputByPlayer(int playerNo) - { - _nextInputState[OhmsIndex + (playerNo & 3)] = 0; - _nextInputState[ControllerActionStateIndex + (playerNo & 3)] = 0; - _nextInputState[LightgunPositionIndex + ((playerNo & 1) << 1)] = _nextInputState[LightgunPositionIndex + ((playerNo & 1) << 1) + 1] = 0; - } - - public void ClearLeftJackInput() - { - _nextInputState[OhmsIndex] = _nextInputState[OhmsIndex + 1] = 0; - _nextInputState[ControllerActionStateIndex] = 0; - switch (LeftControllerJack) - { - case Controller.Paddles: - _nextInputState[ControllerActionStateIndex] = _nextInputState[ControllerActionStateIndex + 1] = 0; - break; - default: - _nextInputState[ControllerActionStateIndex] = 0; - break; - } - _nextInputState[LightgunPositionIndex] = _nextInputState[LightgunPositionIndex + 1] = 0; - } - - public void ClearRightJackInput() - { - _nextInputState[OhmsIndex + 2] = _nextInputState[OhmsIndex + 3] = 0; - switch (RightControllerJack) - { - case Controller.Paddles: - _nextInputState[ControllerActionStateIndex + 2] = _nextInputState[ControllerActionStateIndex + 3] = 0; - break; - default: - _nextInputState[ControllerActionStateIndex + 1] = 0; - break; - } - _nextInputState[LightgunPositionIndex + 2] = _nextInputState[LightgunPositionIndex + 3] = 0; - } - - #endregion - - #region Serialization Members - - public InputState() - { - } - - public InputState(DeserializationContext input) - { - if (input == null) - throw new ArgumentNullException("input"); - - input.CheckVersion(2); - _rotState = input.ReadIntegers(2); - _nextInputState = input.ReadIntegers(InputStateSize); - _inputState = input.ReadIntegers(InputStateSize); - _lagged = input.ReadBoolean(); - } - - public void GetObjectData(SerializationContext output) - { - if (output == null) - throw new ArgumentNullException("output"); - - output.WriteVersion(2); - output.Write(_rotState); - output.Write(_nextInputState); - output.Write(_inputState); - output.Write(_lagged); - } - - #endregion - - #region Internal Members - - internal bool SampleCapturedConsoleSwitchState(ConsoleSwitch consoleSwitch) - { - _lagged = false; - return (_inputState[ConsoleSwitchIndex] & (1 << (int)consoleSwitch)) != 0; - } - - internal bool SampleCapturedControllerActionState(int playerno, ControllerAction action) - { - _lagged = false; - return (_inputState[ControllerActionStateIndex + (playerno & 3)] & (1 << (int)action)) != 0; - } - - internal int SampleCapturedOhmState(int playerNo) - { - _lagged = false; - return _inputState[OhmsIndex + (playerNo & 3)]; - } - - internal void SampleCapturedLightGunPosition(int playerNo, out int scanline, out int hpos) - { - _lagged = false; - var i = LightgunPositionIndex + ((playerNo & 1) << 1); - scanline = _inputState[i++]; - hpos = _inputState[i]; - } - - internal byte SampleCapturedDrivingState(int playerNo) - { - _lagged = false; - if (SampleCapturedControllerActionState(playerNo, ControllerAction.Driving0)) - _rotState[playerNo] = 0; - else if (SampleCapturedControllerActionState(playerNo, ControllerAction.Driving1)) - _rotState[playerNo] = 1; - else if (SampleCapturedControllerActionState(playerNo, ControllerAction.Driving2)) - _rotState[playerNo] = 2; - else if (SampleCapturedControllerActionState(playerNo, ControllerAction.Driving3)) - _rotState[playerNo] = 3; - return _rotGrayCodes[_rotState[playerNo]]; - } - - #endregion - - #region Object Overrides - - public override string ToString() - { - return GetType().Name; - } - - #endregion - - #region Helpers - - void SetControllerActionState(int playerNo, ControllerAction action, bool value) - { - if (value) - { - _nextInputState[ControllerActionStateIndex + (playerNo & 3)] |= (1 << (int)action); - } - else - { - _nextInputState[ControllerActionStateIndex + (playerNo & 3)] &= ~(1 << (int)action); - } - } - - void SetConsoleSwitchState(ConsoleSwitch consoleSwitch, bool value) - { - if (value) - { - _nextInputState[ConsoleSwitchIndex] |= (byte)(1 << (byte)consoleSwitch); - } - else - { - _nextInputState[ConsoleSwitchIndex] &= (byte)~(1 << (byte)consoleSwitch); - } - } - - void ToggleConsoleSwitchState(ConsoleSwitch consoleSwitch) - { - var consoleSwitchState = (_nextInputState[ConsoleSwitchIndex] & (1 << (int) consoleSwitch)) != 0; - SetConsoleSwitchState(consoleSwitch, !consoleSwitchState); - } - - #endregion - } -} \ No newline at end of file