snes9x - support snes obj toggle hotkeys

This commit is contained in:
adelikat 2017-06-14 17:28:02 -05:00
parent e3d2681d99
commit 796f9ddaa7
2 changed files with 53 additions and 51 deletions

View File

@ -611,28 +611,28 @@ namespace BizHawk.Client.EmuHawk
// SNES // SNES
case "Toggle BG 1": case "Toggle BG 1":
SNES_ToggleBG(1); SNES_ToggleBg(1);
break; break;
case "Toggle BG 2": case "Toggle BG 2":
SNES_ToggleBG(2); SNES_ToggleBg(2);
break; break;
case "Toggle BG 3": case "Toggle BG 3":
SNES_ToggleBG(3); SNES_ToggleBg(3);
break; break;
case "Toggle BG 4": case "Toggle BG 4":
SNES_ToggleBG(4); SNES_ToggleBg(4);
break; break;
case "Toggle OBJ 1": case "Toggle OBJ 1":
SNES_ToggleObj1(); SNES_ToggleObj(1);
break; break;
case "Toggle OBJ 2": case "Toggle OBJ 2":
SNES_ToggleObj2(); SNES_ToggleObj(2);
break; break;
case "Toggle OBJ 3": case "Toggle OBJ 3":
SNES_ToggleOBJ3(); SNES_ToggleObj(3);
break; break;
case "Toggle OBJ 4": case "Toggle OBJ 4":
SNES_ToggleOBJ4(); SNES_ToggleObj(4);
break; break;
// GB // GB

View File

@ -1259,7 +1259,7 @@ namespace BizHawk.Client.EmuHawk
private LibsnesCore AsSNES => Emulator as LibsnesCore; private LibsnesCore AsSNES => Emulator as LibsnesCore;
private void SNES_ToggleBG(int layer) private void SNES_ToggleBg(int layer)
{ {
if (!(Emulator is LibsnesCore) && !(Emulator is Snes9x)) if (!(Emulator is LibsnesCore) && !(Emulator is Snes9x))
{ {
@ -1318,61 +1318,63 @@ namespace BizHawk.Client.EmuHawk
GlobalWin.OSD.AddMessage($"BG {layer} Layer " + (result ? "On" : "Off")); GlobalWin.OSD.AddMessage($"BG {layer} Layer " + (result ? "On" : "Off"));
} }
// TODO: Clean Me! private void SNES_ToggleObj(int layer)
private void SNES_ToggleObj1()
{ {
if (!(Emulator is LibsnesCore)) if (!(Emulator is LibsnesCore) && !(Emulator is Snes9x))
{ {
return; return;
} }
var s = AsSNES.GetSettings(); if (layer < 1 || layer > 4)
s.ShowOBJ_0 ^= true;
AsSNES.PutSettings(s);
GlobalWin.OSD.AddMessage(s.ShowOBJ_0 ? "OBJ 1 Layer On" : "OBJ 1 Layer Off");
}
private void SNES_ToggleObj2()
{
if (!(Emulator is LibsnesCore))
{ {
return; return;
} }
var s = AsSNES.GetSettings(); bool result = false;
s.ShowOBJ_1 ^= true; if (Emulator is LibsnesCore)
AsSNES.PutSettings(s);
GlobalWin.OSD.AddMessage(s.ShowOBJ_1 ? "OBJ 2 Layer On" : "OBJ 2 Layer Off");
}
private void SNES_ToggleOBJ3()
{
if (!(Emulator is LibsnesCore))
{ {
return; var s = ((LibsnesCore)Emulator).GetSettings();
switch (layer)
{
case 1:
result = s.ShowOBJ_0 ^= true;
break;
case 2:
result = s.ShowOBJ_1 ^= true;
break;
case 3:
result = s.ShowOBJ_2 ^= true;
break;
case 4:
result = s.ShowOBJ_3 ^= true;
break;
}
((LibsnesCore)Emulator).PutSettings(s);
GlobalWin.OSD.AddMessage($"Obj {layer} Layer " + (result ? "On" : "Off"));
} }
else if (Emulator is Snes9x)
var s = AsSNES.GetSettings();
s.ShowOBJ_2 ^= true;
AsSNES.PutSettings(s);
GlobalWin.OSD.AddMessage(s.ShowOBJ_2 ? "OBJ 3 Layer On" : "OBJ 3 Layer Off");
}
private void SNES_ToggleOBJ4()
{
if (!(Emulator is LibsnesCore))
{ {
return; var s = ((Snes9x)Emulator).GetSettings();
switch (layer)
{
case 1:
result = s.ShowSprites0 ^= true;
break;
case 2:
result = s.ShowSprites1 ^= true;
break;
case 3:
result = s.ShowSprites2 ^= true;
break;
case 4:
result = s.ShowSprites3 ^= true;
break;
}
((Snes9x)Emulator).PutSettings(s);
GlobalWin.OSD.AddMessage($"Sprite {layer} Layer " + (result ? "On" : "Off"));
} }
var s = AsSNES.GetSettings();
s.ShowOBJ_3 ^= true;
AsSNES.PutSettings(s);
GlobalWin.OSD.AddMessage(s.ShowOBJ_3 ? "OBJ 4 Layer On" : "OBJ 4 Layer Off");
} }
public bool RunLibretroCoreChooser() public bool RunLibretroCoreChooser()