private LibSameboy.Buttons GetButtons(IController c) { LibSameboy.Buttons b = 0; for (int i = _sgb ? 4 : 1; i > 0; i--) { if (c.IsPressed($"P{i} Up")) { b |= LibSameboy.Buttons.UP; } if (c.IsPressed($"P{i} Down")) { b |= LibSameboy.Buttons.DOWN; } if (c.IsPressed($"P{i} Left")) { b |= LibSameboy.Buttons.LEFT; } if (c.IsPressed($"P{i} Right")) { b |= LibSameboy.Buttons.RIGHT; } if (c.IsPressed($"P{i} A")) { b |= LibSameboy.Buttons.A; } if (c.IsPressed($"P{i} B")) { b |= LibSameboy.Buttons.B; } if (c.IsPressed($"P{i} Select")) { b |= LibSameboy.Buttons.SELECT; } if (c.IsPressed($"P{i} Start")) { b |= LibSameboy.Buttons.START; } if (_sgb) { // The SGB SNES side code enforces U+D/L+R prohibitions if (((uint)b & 0x30) == 0x30) { b &= unchecked ((LibSameboy.Buttons) ~0x30); } if (((uint)b & 0xc0) == 0xc0) { b &= unchecked ((LibSameboy.Buttons) ~0xc0); } } if (i != 1) { b = (LibSameboy.Buttons)((uint)b << 8); } } return(b); }
private LibSameboy.Buttons GetButtons(IController c) { LibSameboy.Buttons b = 0; for (int i = _sgb ? 4 : 1; i > 0; i--) { if (c.IsPressed($"P{i} Up")) { b |= LibSameboy.Buttons.UP; } if (c.IsPressed($"P{i} Down")) { b |= LibSameboy.Buttons.DOWN; } if (c.IsPressed($"P{i} Left")) { b |= LibSameboy.Buttons.LEFT; } if (c.IsPressed($"P{i} Right")) { b |= LibSameboy.Buttons.RIGHT; } if (c.IsPressed($"P{i} A")) { b |= LibSameboy.Buttons.A; } if (c.IsPressed($"P{i} B")) { b |= LibSameboy.Buttons.B; } if (c.IsPressed($"P{i} Select")) { b |= LibSameboy.Buttons.SELECT; } if (c.IsPressed($"P{i} Start")) { b |= LibSameboy.Buttons.START; } if (i != 1) { b = (LibSameboy.Buttons)((uint)b << 8); } } return(b); }