add ui to switch to Atari7800Hawk, still not useable by humans, needs gamedb stuff

This commit is contained in:
adelikat 2017-05-27 08:56:25 -05:00
parent 47758a519d
commit 8de4e7bff9
7 changed files with 3508 additions and 3458 deletions

View File

@ -7,6 +7,7 @@ using BizHawk.Common;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores;
using BizHawk.Emulation.Cores.Libretro;
using BizHawk.Emulation.Cores.Atari.A7800Hawk;
using BizHawk.Emulation.Cores.Atari.Atari7800;
using BizHawk.Emulation.Cores.Calculators;
using BizHawk.Emulation.Cores.Computers.AppleII;
@ -835,7 +836,10 @@ namespace BizHawk.Client.Common
break;
case "A78":
var gamedbpath = Path.Combine(PathManager.GetExeDirectoryAbsolute(), "gamedb", "EMU7800.csv");
nextEmulator = new Atari7800(nextComm, game, rom.RomData, gamedbpath);
nextEmulator = Global.Config.A78_UseEmu7800
? nextEmulator = new Atari7800(nextComm, game, rom.RomData, gamedbpath)
: nextEmulator = new A7800Hawk(nextComm, game, rom.RomData, gamedbpath);
break;
case "C64":
var c64 = new C64(nextComm, Enumerable.Repeat(rom.RomData, 1), GetCoreSettings<C64>(), GetCoreSyncSettings<C64>());

View File

@ -537,6 +537,7 @@ namespace BizHawk.Client.Common
public bool NES_InQuickNES = true;
public bool SNES_InSnes9x = false;
public bool GBA_UsemGBA = false;
public bool A78_UseEmu7800 = true;
public bool CoreForcingViaGameDB = true;
public string LibretroCore;
}

View File

@ -7,6 +7,8 @@ using BizHawk.Emulation.Cores.Nintendo.NES;
using BizHawk.Emulation.Cores.Nintendo.SNES9X;
using BizHawk.Emulation.Cores.Nintendo.SNES;
using BizHawk.Emulation.Cores.Nintendo.GBA;
using BizHawk.Emulation.Cores.Atari.A7800Hawk;
using BizHawk.Emulation.Cores.Atari.Atari7800;
namespace BizHawk.Client.Common
{
@ -463,6 +465,7 @@ namespace BizHawk.Client.Common
public bool? PreviousNES_InQuickNES { get; set; }
public bool? PreviousSNES_InSnes9x { get; set; }
public bool? PreviousGBA_UsemGBA { get; set; }
public bool? PreviousA78_UseEmu7800 { get; set; }
public void QueueNewMovie(IMovie movie, bool record, IEmulator emulator)
{
@ -530,6 +533,22 @@ namespace BizHawk.Client.Common
Global.Config.GBA_UsemGBA = false;
}
}
else if (!record && emulator.SystemId == "A78") // meh, copy pasta one more time, last time, I promise
{
var atari7800HawkName = ((CoreAttributes)Attribute.GetCustomAttribute(typeof(A7800Hawk), typeof(CoreAttributes))).CoreName;
var emu7800HawkName = ((CoreAttributes)Attribute.GetCustomAttribute(typeof(Atari7800), typeof(CoreAttributes))).CoreName;
if (movie.Core == atari7800HawkName)
{
PreviousA78_UseEmu7800 = Global.Config.A78_UseEmu7800;
Global.Config.A78_UseEmu7800 = true;
}
else if (movie.Core == emu7800HawkName)
{
PreviousA78_UseEmu7800 = Global.Config.A78_UseEmu7800;
Global.Config.A78_UseEmu7800 = false;
}
}
if (record) // This is a hack really, we need to set the movie to its propert state so that it will be considered active later
{

View File

@ -20,6 +20,7 @@ namespace BizHawk.Client.Common
bool? PreviousNES_InQuickNES { get; set; }
bool? PreviousSNES_InSnes9x { get; set; }
bool? PreviousGBA_UsemGBA { get; set; }
bool? PreviousA78_UseEmu7800 { get; set; }
void HandleMovieOnFrameLoop();
void HandleMovieAfterFrameLoop();

File diff suppressed because it is too large Load Diff

View File

@ -5,9 +5,10 @@ using System.Windows.Forms;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Common.IEmulatorExtensions;
using BizHawk.Emulation.Cores.Atari.A7800Hawk;
using BizHawk.Emulation.Cores.Atari.Atari7800;
using BizHawk.Emulation.Cores.Calculators;
using BizHawk.Emulation.Cores.ColecoVision;
using BizHawk.Emulation.Cores.Nintendo.Gameboy;
using BizHawk.Emulation.Cores.Nintendo.NES;
using BizHawk.Emulation.Cores.Nintendo.N64;
using BizHawk.Emulation.Cores.Nintendo.SNES;
@ -1213,6 +1214,7 @@ namespace BizHawk.Client.EmuHawk
GBInSGBMenuItem.Checked = Global.Config.GB_AsSGB;
NesInQuickNESMenuItem.Checked = Global.Config.NES_InQuickNES;
gBAWithMGBAToolStripMenuItem.Checked = Global.Config.GBA_UsemGBA;
Atari7800WithEmu7800MenuItem.Checked = Global.Config.A78_UseEmu7800;
allowGameDBCoreOverridesToolStripMenuItem.Checked = Global.Config.CoreForcingViaGameDB;
}
@ -1270,6 +1272,15 @@ namespace BizHawk.Client.EmuHawk
}
}
private void Atari7800WithEmu7800MenuItem_Click(object sender, EventArgs e)
{
Global.Config.A78_UseEmu7800 ^= true;
if (Emulator is A7800Hawk || Emulator is Atari7800)
{
FlagNeedsReboot();
}
}
private void AllowGameDBCoreOverridesToolStripMenuItem_Click(object sender, EventArgs e)
{
Global.Config.CoreForcingViaGameDB ^= true;

View File

@ -42,6 +42,10 @@ namespace BizHawk.Emulation.Cores.Atari.A7800Hawk
public A7800Hawk(CoreComm comm, GameInfo game, byte[] rom, string gameDbFn)
{
var ser = new BasicServiceProvider(this);
maria = new Maria();
tia = new TIA();
ser.Register<IVideoProvider>(maria);
ser.Register<ISoundProvider>(tia);
ServiceProvider = ser;