clean DSi handling up a bit, add entries in movie header to indicate DSi/DSiWare
This commit is contained in:
parent
cff2b04dcc
commit
625a77cc14
|
@ -5,6 +5,7 @@ using System.Linq;
|
||||||
using BizHawk.Common;
|
using BizHawk.Common;
|
||||||
using BizHawk.Emulation.Common;
|
using BizHawk.Emulation.Common;
|
||||||
using BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy;
|
using BizHawk.Emulation.Cores.Consoles.Nintendo.Gameboy;
|
||||||
|
using BizHawk.Emulation.Cores.Consoles.Nintendo.NDS;
|
||||||
using BizHawk.Emulation.Cores.Consoles.Sega.gpgx;
|
using BizHawk.Emulation.Cores.Consoles.Sega.gpgx;
|
||||||
using BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive;
|
using BizHawk.Emulation.Cores.Consoles.Sega.PicoDrive;
|
||||||
using BizHawk.Emulation.Cores.Nintendo.NES;
|
using BizHawk.Emulation.Cores.Nintendo.NES;
|
||||||
|
@ -234,6 +235,16 @@ namespace BizHawk.Client.Common
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (emulator is NDS nds && nds.IsDSi)
|
||||||
|
{
|
||||||
|
movie.HeaderEntries.Add("IsDSi", "1");
|
||||||
|
|
||||||
|
if (nds.IsDSiWare)
|
||||||
|
{
|
||||||
|
movie.HeaderEntries.Add("IsDSiWare", "1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((emulator is NES nes && nes.IsVS)
|
if ((emulator is NES nes && nes.IsVS)
|
||||||
|| (emulator is SubNESHawk subnes && subnes.IsVs))
|
|| (emulator is SubNESHawk subnes && subnes.IsVs))
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,9 +36,12 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
|
||||||
_syncSettings = lp.SyncSettings ?? new NDSSyncSettings();
|
_syncSettings = lp.SyncSettings ?? new NDSSyncSettings();
|
||||||
_settings = lp.Settings ?? new NDSSettings();
|
_settings = lp.Settings ?? new NDSSettings();
|
||||||
|
|
||||||
|
IsDSi = _syncSettings.UseDSi;
|
||||||
|
IsDSiWare = _syncSettings.LoadDSiWare;
|
||||||
|
|
||||||
var roms = lp.Roms.Select(r => r.RomData).ToList();
|
var roms = lp.Roms.Select(r => r.RomData).ToList();
|
||||||
|
|
||||||
if (roms.Count > (_syncSettings.UseDSi ? 1 : 3))
|
if (roms.Count > (IsDSi ? 1 : 3))
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("Wrong number of ROMs!");
|
throw new InvalidOperationException("Wrong number of ROMs!");
|
||||||
}
|
}
|
||||||
|
@ -60,31 +63,31 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
|
||||||
SkipMemoryConsistencyCheck = CoreComm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxMemoryConsistencyCheck),
|
SkipMemoryConsistencyCheck = CoreComm.CorePreferences.HasFlag(CoreComm.CorePreferencesFlags.WaterboxMemoryConsistencyCheck),
|
||||||
}, new Delegate[] { _tracecb });
|
}, new Delegate[] { _tracecb });
|
||||||
|
|
||||||
var bios7 = _syncSettings.UseDSi || _syncSettings.UseRealBIOS
|
var bios7 = IsDSi || _syncSettings.UseRealBIOS
|
||||||
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios7"))
|
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios7"))
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
var bios9 = _syncSettings.UseDSi || _syncSettings.UseRealBIOS
|
var bios9 = IsDSi || _syncSettings.UseRealBIOS
|
||||||
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios9"))
|
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios9"))
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
var bios7i = _syncSettings.UseDSi
|
var bios7i = IsDSi
|
||||||
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios7i"))
|
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios7i"))
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
var bios9i = _syncSettings.UseDSi
|
var bios9i = IsDSi
|
||||||
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios9i"))
|
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "bios9i"))
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
var nand = _syncSettings.UseDSi
|
var nand = IsDSi
|
||||||
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "nand"))
|
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "nand"))
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
var fw = _syncSettings.UseDSi
|
var fw = IsDSi
|
||||||
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "firmwarei"))
|
? CoreComm.CoreFileProvider.GetFirmwareOrThrow(new("NDS", "firmwarei"))
|
||||||
: CoreComm.CoreFileProvider.GetFirmware(new("NDS", "firmware"));
|
: CoreComm.CoreFileProvider.GetFirmware(new("NDS", "firmware"));
|
||||||
|
|
||||||
var tmd = _syncSettings.UseDSi && _syncSettings.LoadDSiWare
|
var tmd = IsDSi && IsDSiWare
|
||||||
? GetTMDData(roms[0])
|
? GetTMDData(roms[0])
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
|
@ -92,19 +95,19 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
|
||||||
|
|
||||||
LibMelonDS.LoadFlags flags = LibMelonDS.LoadFlags.NONE;
|
LibMelonDS.LoadFlags flags = LibMelonDS.LoadFlags.NONE;
|
||||||
|
|
||||||
if (_syncSettings.UseRealBIOS || _syncSettings.UseDSi)
|
if (_syncSettings.UseRealBIOS || IsDSi)
|
||||||
flags |= LibMelonDS.LoadFlags.USE_REAL_BIOS;
|
flags |= LibMelonDS.LoadFlags.USE_REAL_BIOS;
|
||||||
if (skipfw && !_syncSettings.UseDSi)
|
if (skipfw && !IsDSi)
|
||||||
flags |= LibMelonDS.LoadFlags.SKIP_FIRMWARE;
|
flags |= LibMelonDS.LoadFlags.SKIP_FIRMWARE;
|
||||||
if (gbacartpresent)
|
if (gbacartpresent)
|
||||||
flags |= LibMelonDS.LoadFlags.GBA_CART_PRESENT;
|
flags |= LibMelonDS.LoadFlags.GBA_CART_PRESENT;
|
||||||
if (_settings.AccurateAudioBitrate)
|
if (_settings.AccurateAudioBitrate && !IsDSi) // todo: let users have DS audio bitrate on DSi?
|
||||||
flags |= LibMelonDS.LoadFlags.ACCURATE_AUDIO_BITRATE;
|
flags |= LibMelonDS.LoadFlags.ACCURATE_AUDIO_BITRATE;
|
||||||
if (_syncSettings.FirmwareOverride || lp.DeterministicEmulationRequested)
|
if (_syncSettings.FirmwareOverride || lp.DeterministicEmulationRequested)
|
||||||
flags |= LibMelonDS.LoadFlags.FIRMWARE_OVERRIDE;
|
flags |= LibMelonDS.LoadFlags.FIRMWARE_OVERRIDE;
|
||||||
if (_syncSettings.UseDSi)
|
if (IsDSi)
|
||||||
flags |= LibMelonDS.LoadFlags.IS_DSI;
|
flags |= LibMelonDS.LoadFlags.IS_DSI;
|
||||||
if (_syncSettings.UseDSi && _syncSettings.LoadDSiWare)
|
if (IsDSi && IsDSiWare)
|
||||||
flags |= LibMelonDS.LoadFlags.LOAD_DSIWARE;
|
flags |= LibMelonDS.LoadFlags.LOAD_DSIWARE;
|
||||||
|
|
||||||
var fwSettings = new LibMelonDS.FirmwareSettings();
|
var fwSettings = new LibMelonDS.FirmwareSettings();
|
||||||
|
@ -125,30 +128,30 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
|
||||||
GbaRamLength = gbasrampresent ? roms[2].Length : 0,
|
GbaRamLength = gbasrampresent ? roms[2].Length : 0,
|
||||||
NandLength = nand?.Length ?? 0,
|
NandLength = nand?.Length ?? 0,
|
||||||
};
|
};
|
||||||
if (_syncSettings.UseRealBIOS || _syncSettings.UseDSi)
|
if (_syncSettings.UseRealBIOS || IsDSi)
|
||||||
{
|
{
|
||||||
_exe.AddReadonlyFile(bios7, "bios7.rom");
|
_exe.AddReadonlyFile(bios7, "bios7.rom");
|
||||||
_exe.AddReadonlyFile(bios9, "bios9.rom");
|
_exe.AddReadonlyFile(bios9, "bios9.rom");
|
||||||
}
|
}
|
||||||
if (_syncSettings.UseDSi)
|
if (IsDSi)
|
||||||
{
|
{
|
||||||
_exe.AddReadonlyFile(bios7i, "bios7i.rom");
|
_exe.AddReadonlyFile(bios7i, "bios7i.rom");
|
||||||
_exe.AddReadonlyFile(bios9i, "bios9i.rom");
|
_exe.AddReadonlyFile(bios9i, "bios9i.rom");
|
||||||
if (_syncSettings.LoadDSiWare)
|
if (IsDSiWare)
|
||||||
{
|
{
|
||||||
_exe.AddReadonlyFile(roms[0], "dsiware.rom");
|
_exe.AddReadonlyFile(roms[0], "dsiware.rom");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fw != null)
|
if (fw != null)
|
||||||
{
|
{
|
||||||
if (_syncSettings.UseDSi || NDSFirmware.MaybeWarnIfBadFw(fw, CoreComm))
|
if (IsDSi || NDSFirmware.MaybeWarnIfBadFw(fw, CoreComm)) // fw checks dont work on dsi firmware, don't bother
|
||||||
{
|
{
|
||||||
if (_syncSettings.FirmwareOverride || lp.DeterministicEmulationRequested)
|
if (_syncSettings.FirmwareOverride || lp.DeterministicEmulationRequested)
|
||||||
{
|
{
|
||||||
NDSFirmware.SanitizeFw(fw);
|
NDSFirmware.SanitizeFw(fw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_exe.AddReadonlyFile(fw, _syncSettings.UseDSi ? "firmwarei.bin" : "firmware.bin");
|
_exe.AddReadonlyFile(fw, IsDSi ? "firmwarei.bin" : "firmware.bin");
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe
|
unsafe
|
||||||
|
@ -178,10 +181,10 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
|
||||||
|
|
||||||
if (fw != null)
|
if (fw != null)
|
||||||
{
|
{
|
||||||
_exe.RemoveReadonlyFile(_syncSettings.UseDSi ? "firmwarei.bin" : "firmware.bin");
|
_exe.RemoveReadonlyFile(IsDSi ? "firmwarei.bin" : "firmware.bin");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_syncSettings.UseDSi && _syncSettings.LoadDSiWare)
|
if (IsDSi && IsDSiWares)
|
||||||
{
|
{
|
||||||
_exe.RemoveReadonlyFile("dsiware.rom");
|
_exe.RemoveReadonlyFile("dsiware.rom");
|
||||||
}
|
}
|
||||||
|
@ -229,6 +232,10 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool IsDSi { get; }
|
||||||
|
|
||||||
|
public bool IsDSiWare { get; }
|
||||||
|
|
||||||
public override ControllerDefinition ControllerDefinition => NDSController;
|
public override ControllerDefinition ControllerDefinition => NDSController;
|
||||||
|
|
||||||
public static readonly ControllerDefinition NDSController = new ControllerDefinition("NDS Controller")
|
public static readonly ControllerDefinition NDSController = new ControllerDefinition("NDS Controller")
|
||||||
|
|
Loading…
Reference in New Issue