Enable SameBoy in testroms projects
This commit is contained in:
parent
7392df29d9
commit
5d92ca3b4f
File diff suppressed because it is too large
Load Diff
|
@ -101,7 +101,7 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
TestUtils.ShortCircuitKnownFailure(caseStr, KnownFailures, out var knownFail);
|
TestUtils.ShortCircuitKnownFailure(caseStr, KnownFailures, out var knownFail);
|
||||||
var actualUnnormalised = DummyFrontend.RunAndScreenshot(
|
var actualUnnormalised = DummyFrontend.RunAndScreenshot(
|
||||||
InitGBCore(testCase.Setup, $"{testCase.TestName}.gbc", ReflectionCache.EmbeddedResourceStream(testCase.RomEmbedPath).ReadAllBytes()),
|
InitGBCore(testCase.Setup, $"{testCase.TestName}.gbc", ReflectionCache.EmbeddedResourceStream(testCase.RomEmbedPath).ReadAllBytes()),
|
||||||
static fe => fe.FrameAdvanceBy(15));
|
static fe => fe.FrameAdvanceBy(18));
|
||||||
var state = GBScreenshotsEqual(
|
var state = GBScreenshotsEqual(
|
||||||
ReflectionCache.EmbeddedResourceStream(testCase.ExpectEmbedPath),
|
ReflectionCache.EmbeddedResourceStream(testCase.ExpectEmbedPath),
|
||||||
actualUnnormalised,
|
actualUnnormalised,
|
||||||
|
|
|
@ -37,6 +37,8 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
private static readonly IReadOnlyCollection<string> KnownFailures = new[]
|
private static readonly IReadOnlyCollection<string> KnownFailures = new[]
|
||||||
{
|
{
|
||||||
"BullyGB on CGB_C in GBHawk",
|
"BullyGB on CGB_C in GBHawk",
|
||||||
|
"BullyGB on CGB_C in SameBoy (no BIOS)",
|
||||||
|
"BullyGB on DMG in SameBoy (no BIOS)",
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly bool RomIsPresent = ReflectionCache.EmbeddedResourceList().Contains(ROM_EMBED_PATH);
|
private static readonly bool RomIsPresent = ReflectionCache.EmbeddedResourceList().Contains(ROM_EMBED_PATH);
|
||||||
|
@ -61,7 +63,7 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
TestUtils.ShortCircuitKnownFailure(caseStr, KnownFailures, out var knownFail);
|
TestUtils.ShortCircuitKnownFailure(caseStr, KnownFailures, out var knownFail);
|
||||||
var actualUnnormalised = DummyFrontend.RunAndScreenshot(
|
var actualUnnormalised = DummyFrontend.RunAndScreenshot(
|
||||||
InitGBCore(setup, "bully.gbc", ReflectionCache.EmbeddedResourceStream(ROM_EMBED_PATH).ReadAllBytes()),
|
InitGBCore(setup, "bully.gbc", ReflectionCache.EmbeddedResourceStream(ROM_EMBED_PATH).ReadAllBytes()),
|
||||||
static fe => fe.FrameAdvanceBy(18));
|
static fe => fe.FrameAdvanceBy(20));
|
||||||
var state = GBScreenshotsEqual(
|
var state = GBScreenshotsEqual(
|
||||||
ReflectionCache.EmbeddedResourceStream($"res.BullyGB_artifact.expected_{(setup.Variant.IsColour() ? "cgb" : "dmg")}.png"),
|
ReflectionCache.EmbeddedResourceStream($"res.BullyGB_artifact.expected_{(setup.Variant.IsColour() ? "cgb" : "dmg")}.png"),
|
||||||
actualUnnormalised,
|
actualUnnormalised,
|
||||||
|
|
|
@ -7,11 +7,13 @@ using BizHawk.Emulation.Common;
|
||||||
using BizHawk.Emulation.Cores;
|
using BizHawk.Emulation.Cores;
|
||||||
using BizHawk.Emulation.Cores.Nintendo.Gameboy;
|
using BizHawk.Emulation.Cores.Nintendo.Gameboy;
|
||||||
using BizHawk.Emulation.Cores.Nintendo.GBHawk;
|
using BizHawk.Emulation.Cores.Nintendo.GBHawk;
|
||||||
|
using BizHawk.Emulation.Cores.Nintendo.Sameboy;
|
||||||
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
using static BizHawk.Emulation.Cores.Nintendo.Gameboy.Gameboy;
|
using static BizHawk.Emulation.Cores.Nintendo.Gameboy.Gameboy;
|
||||||
using static BizHawk.Emulation.Cores.Nintendo.GBHawk.GBHawk;
|
using static BizHawk.Emulation.Cores.Nintendo.GBHawk.GBHawk;
|
||||||
|
using static BizHawk.Emulation.Cores.Nintendo.Sameboy.Sameboy;
|
||||||
|
|
||||||
namespace BizHawk.Tests.Testroms.GB
|
namespace BizHawk.Tests.Testroms.GB
|
||||||
{
|
{
|
||||||
|
@ -22,7 +24,14 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
public readonly struct CoreSetup
|
public readonly struct CoreSetup
|
||||||
{
|
{
|
||||||
public static IReadOnlyCollection<CoreSetup> ValidSetupsFor(ConsoleVariant variant)
|
public static IReadOnlyCollection<CoreSetup> ValidSetupsFor(ConsoleVariant variant)
|
||||||
=> new CoreSetup[] { new(CoreNames.Gambatte, variant), new(CoreNames.Gambatte, variant, useBios: false), new(CoreNames.GbHawk, variant) };
|
=> new CoreSetup[]
|
||||||
|
{
|
||||||
|
new(CoreNames.Gambatte, variant),
|
||||||
|
new(CoreNames.Gambatte, variant, useBios: false),
|
||||||
|
new(CoreNames.GbHawk, variant),
|
||||||
|
new(CoreNames.Sameboy, variant),
|
||||||
|
new(CoreNames.Sameboy, variant, useBios: false),
|
||||||
|
};
|
||||||
|
|
||||||
public readonly string CoreName;
|
public readonly string CoreName;
|
||||||
|
|
||||||
|
@ -55,6 +64,20 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
|
|
||||||
private static readonly GBSyncSettings GBHawkSyncSettings_GBC = new() { ConsoleMode = GBSyncSettings.ConsoleModeType.GBC };
|
private static readonly GBSyncSettings GBHawkSyncSettings_GBC = new() { ConsoleMode = GBSyncSettings.ConsoleModeType.GBC };
|
||||||
|
|
||||||
|
private static readonly SameboySettings SameBoySettings = new() { ColorCorrection = SameboySettings.ColorCorrectionMode.DISABLED };
|
||||||
|
|
||||||
|
private static readonly SameboySyncSettings SameBoySyncSettings_GB_NOBIOS = new() { ConsoleMode = SameboySyncSettings.GBModel.GB_MODEL_DMG_B, EnableBIOS = false };
|
||||||
|
|
||||||
|
private static readonly SameboySyncSettings SameBoySyncSettings_GB_USEBIOS = new() { ConsoleMode = SameboySyncSettings.GBModel.GB_MODEL_DMG_B, EnableBIOS = true };
|
||||||
|
|
||||||
|
private static readonly SameboySyncSettings SameBoySyncSettings_GBC_C_NOBIOS = new() { ConsoleMode = SameboySyncSettings.GBModel.GB_MODEL_CGB_C, EnableBIOS = false };
|
||||||
|
|
||||||
|
private static readonly SameboySyncSettings SameBoySyncSettings_GBC_C_USEBIOS = new() { ConsoleMode = SameboySyncSettings.GBModel.GB_MODEL_CGB_C, EnableBIOS = true };
|
||||||
|
|
||||||
|
private static readonly SameboySyncSettings SameBoySyncSettings_GBC_D_NOBIOS = new() { ConsoleMode = SameboySyncSettings.GBModel.GB_MODEL_CGB_D, EnableBIOS = false };
|
||||||
|
|
||||||
|
private static readonly SameboySyncSettings SameBoySyncSettings_GBC_D_USEBIOS = new() { ConsoleMode = SameboySyncSettings.GBModel.GB_MODEL_CGB_D, EnableBIOS = true };
|
||||||
|
|
||||||
public static readonly IReadOnlyDictionary<int, int> MattCurriePaletteMap = new Dictionary<int, int>
|
public static readonly IReadOnlyDictionary<int, int> MattCurriePaletteMap = new Dictionary<int, int>
|
||||||
{
|
{
|
||||||
[0x0F3EAA] = 0x0000FF,
|
[0x0F3EAA] = 0x0000FF,
|
||||||
|
@ -126,6 +149,15 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
? GBHawkSyncSettings_GBC
|
? GBHawkSyncSettings_GBC
|
||||||
: GBHawkSyncSettings_GB;
|
: GBHawkSyncSettings_GB;
|
||||||
|
|
||||||
|
public static SameboySyncSettings GetSameBoySyncSettings(ConsoleVariant variant, bool biosAvailable)
|
||||||
|
=> variant switch
|
||||||
|
{
|
||||||
|
ConsoleVariant.CGB_C => biosAvailable ? SameBoySyncSettings_GBC_C_USEBIOS : SameBoySyncSettings_GBC_C_NOBIOS,
|
||||||
|
ConsoleVariant.CGB_D => biosAvailable ? SameBoySyncSettings_GBC_D_USEBIOS : SameBoySyncSettings_GBC_D_NOBIOS,
|
||||||
|
ConsoleVariant.DMG or ConsoleVariant.DMG_B => biosAvailable ? SameBoySyncSettings_GB_USEBIOS : SameBoySyncSettings_GB_NOBIOS,
|
||||||
|
_ => throw new Exception()
|
||||||
|
};
|
||||||
|
|
||||||
public static DummyFrontend.ClassInitCallbackDelegate InitGBCore(CoreSetup setup, string romFilename, byte[] rom)
|
public static DummyFrontend.ClassInitCallbackDelegate InitGBCore(CoreSetup setup, string romFilename, byte[] rom)
|
||||||
=> (efp, _, coreComm) =>
|
=> (efp, _, coreComm) =>
|
||||||
{
|
{
|
||||||
|
@ -135,9 +167,10 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
{
|
{
|
||||||
CoreNames.Gambatte => new Gameboy(coreComm, game, rom, GambatteSettings, GetGambatteSyncSettings(setup.Variant, setup.UseBIOS), deterministic: true),
|
CoreNames.Gambatte => new Gameboy(coreComm, game, rom, GambatteSettings, GetGambatteSyncSettings(setup.Variant, setup.UseBIOS), deterministic: true),
|
||||||
CoreNames.GbHawk => new GBHawk(coreComm, game, rom, new(), GetGBHawkSyncSettings(setup.Variant)),
|
CoreNames.GbHawk => new GBHawk(coreComm, game, rom, new(), GetGBHawkSyncSettings(setup.Variant)),
|
||||||
|
CoreNames.Sameboy => new Sameboy(coreComm, game, rom, SameBoySettings, GetSameBoySyncSettings(setup.Variant, setup.UseBIOS), deterministic: true),
|
||||||
_ => throw new Exception()
|
_ => throw new Exception()
|
||||||
};
|
};
|
||||||
var biosWaitDuration = setup.UseBIOS
|
var biosWaitDuration = setup.UseBIOS || setup.CoreName is CoreNames.Sameboy
|
||||||
? setup.Variant.IsColour()
|
? setup.Variant.IsColour()
|
||||||
? 186
|
? 186
|
||||||
: 334
|
: 334
|
||||||
|
@ -153,6 +186,7 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
=> setup.CoreName switch
|
=> setup.CoreName switch
|
||||||
{
|
{
|
||||||
CoreNames.Gambatte => ImageUtils.PaletteSwap(img, setup.Variant.IsColour() ? UnVividGBCPaletteMap : UnVividGBPaletteMap),
|
CoreNames.Gambatte => ImageUtils.PaletteSwap(img, setup.Variant.IsColour() ? UnVividGBCPaletteMap : UnVividGBPaletteMap),
|
||||||
|
CoreNames.Sameboy => setup.Variant.IsColour() ? ImageUtils.PaletteSwap(img, UnVividGBCPaletteMap) : img,
|
||||||
_ => img
|
_ => img
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ using BizHawk.Common.StringExtensions;
|
||||||
using BizHawk.Emulation.Common;
|
using BizHawk.Emulation.Common;
|
||||||
using BizHawk.Emulation.Cores;
|
using BizHawk.Emulation.Cores;
|
||||||
using BizHawk.Emulation.Cores.Nintendo.GBHawk;
|
using BizHawk.Emulation.Cores.Nintendo.GBHawk;
|
||||||
|
using BizHawk.Emulation.Cores.Nintendo.Sameboy;
|
||||||
|
|
||||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||||
|
|
||||||
|
@ -34,34 +35,56 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
"m3_bgp_change_sprites on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
"m3_bgp_change_sprites on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_bgp_change_sprites on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
"m3_bgp_change_sprites on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_bgp_change_sprites on CGB_C in GBHawk",
|
"m3_bgp_change_sprites on CGB_C in GBHawk",
|
||||||
|
"m3_bgp_change_sprites on CGB_C in SameBoy",
|
||||||
|
"m3_bgp_change_sprites on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_bgp_change_sprites on CGB_D in GBHawk",
|
"m3_bgp_change_sprites on CGB_D in GBHawk",
|
||||||
"m3_bgp_change_sprites on DMG in Gambatte",
|
"m3_bgp_change_sprites on DMG in Gambatte",
|
||||||
"m3_bgp_change_sprites on DMG in Gambatte (no BIOS)",
|
"m3_bgp_change_sprites on DMG in Gambatte (no BIOS)",
|
||||||
"m3_bgp_change_sprites on DMG in GBHawk",
|
"m3_bgp_change_sprites on DMG in GBHawk",
|
||||||
|
"m3_lcdc_bg_en_change on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_bg_en_change on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_bg_en_change on DMG in Gambatte",
|
"m3_lcdc_bg_en_change on DMG in Gambatte",
|
||||||
"m3_lcdc_bg_en_change on DMG in Gambatte (no BIOS)",
|
"m3_lcdc_bg_en_change on DMG in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_bg_en_change on DMG in GBHawk",
|
"m3_lcdc_bg_en_change on DMG in GBHawk",
|
||||||
|
"m3_lcdc_bg_en_change on DMG in SameBoy",
|
||||||
|
"m3_lcdc_bg_en_change on DMG in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_bg_en_change on DMG_B in Gambatte",
|
"m3_lcdc_bg_en_change on DMG_B in Gambatte",
|
||||||
"m3_lcdc_bg_en_change on DMG_B in Gambatte (no BIOS)",
|
"m3_lcdc_bg_en_change on DMG_B in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_bg_en_change on DMG_B in GBHawk",
|
"m3_lcdc_bg_en_change on DMG_B in GBHawk",
|
||||||
|
"m3_lcdc_bg_en_change on DMG_B in SameBoy",
|
||||||
|
"m3_lcdc_bg_en_change on DMG_B in SameBoy (no BIOS)",
|
||||||
|
"m3_lcdc_bg_en_change2 on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_bg_en_change2 on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_bg_map_change on CGB_C in GBHawk",
|
"m3_lcdc_bg_map_change on CGB_C in GBHawk",
|
||||||
"m3_lcdc_bg_map_change on DMG in GBHawk",
|
"m3_lcdc_bg_map_change on DMG in GBHawk",
|
||||||
"m3_lcdc_bg_map_change2 on CGB_C in GBHawk",
|
"m3_lcdc_bg_map_change2 on CGB_C in GBHawk",
|
||||||
|
"m3_lcdc_bg_map_change2 on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_bg_map_change2 on CGB_C in SameBoy (no BIOS)",
|
||||||
|
"m3_lcdc_obj_en_change on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_obj_en_change on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_obj_en_change on DMG in Gambatte",
|
"m3_lcdc_obj_en_change on DMG in Gambatte",
|
||||||
"m3_lcdc_obj_en_change on DMG in Gambatte (no BIOS)",
|
"m3_lcdc_obj_en_change on DMG in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_obj_en_change on DMG in GBHawk",
|
"m3_lcdc_obj_en_change on DMG in GBHawk",
|
||||||
"m3_lcdc_obj_en_change_variant on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
"m3_lcdc_obj_en_change_variant on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_lcdc_obj_en_change_variant on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
"m3_lcdc_obj_en_change_variant on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_lcdc_obj_en_change_variant on CGB_C in GBHawk",
|
"m3_lcdc_obj_en_change_variant on CGB_C in GBHawk",
|
||||||
|
"m3_lcdc_obj_en_change_variant on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_obj_en_change_variant on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_obj_en_change_variant on CGB_D in GBHawk",
|
"m3_lcdc_obj_en_change_variant on CGB_D in GBHawk",
|
||||||
|
"m3_lcdc_obj_en_change_variant on CGB_D in SameBoy",
|
||||||
|
"m3_lcdc_obj_en_change_variant on CGB_D in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_obj_en_change_variant on DMG in Gambatte",
|
"m3_lcdc_obj_en_change_variant on DMG in Gambatte",
|
||||||
"m3_lcdc_obj_en_change_variant on DMG in Gambatte (no BIOS)",
|
"m3_lcdc_obj_en_change_variant on DMG in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_obj_en_change_variant on DMG in GBHawk",
|
"m3_lcdc_obj_en_change_variant on DMG in GBHawk",
|
||||||
|
"m3_lcdc_obj_en_change_variant on DMG in SameBoy", // SameBoy emulates DMG-B, but there's no DMG-B-specific expect image for this test, so it should be the same on all DMG revisions?
|
||||||
|
"m3_lcdc_obj_en_change_variant on DMG in SameBoy (no BIOS)", // SameBoy emulates DMG-B, but there's no DMG-B-specific expect image for this test, so it should be the same on all DMG revisions?
|
||||||
"m3_lcdc_obj_size_change on CGB_C in GBHawk",
|
"m3_lcdc_obj_size_change on CGB_C in GBHawk",
|
||||||
"m3_lcdc_obj_size_change on DMG in Gambatte",
|
"m3_lcdc_obj_size_change on DMG in Gambatte",
|
||||||
"m3_lcdc_obj_size_change on DMG in Gambatte (no BIOS)",
|
"m3_lcdc_obj_size_change on DMG in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_obj_size_change on DMG in GBHawk",
|
"m3_lcdc_obj_size_change on DMG in GBHawk",
|
||||||
"m3_lcdc_obj_size_change_scx on CGB_C in GBHawk",
|
"m3_lcdc_obj_size_change_scx on CGB_C in GBHawk",
|
||||||
|
"m3_lcdc_obj_size_change_scx on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_obj_size_change_scx on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_obj_size_change_scx on DMG in Gambatte",
|
"m3_lcdc_obj_size_change_scx on DMG in Gambatte",
|
||||||
"m3_lcdc_obj_size_change_scx on DMG in Gambatte (no BIOS)",
|
"m3_lcdc_obj_size_change_scx on DMG in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_obj_size_change_scx on DMG in GBHawk",
|
"m3_lcdc_obj_size_change_scx on DMG in GBHawk",
|
||||||
|
@ -75,35 +98,59 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
"m3_lcdc_tile_sel_win_change on CGB_C in Gambatte",
|
"m3_lcdc_tile_sel_win_change on CGB_C in Gambatte",
|
||||||
"m3_lcdc_tile_sel_win_change on CGB_C in Gambatte (no BIOS)",
|
"m3_lcdc_tile_sel_win_change on CGB_C in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_tile_sel_win_change on CGB_C in GBHawk",
|
"m3_lcdc_tile_sel_win_change on CGB_C in GBHawk",
|
||||||
|
"m3_lcdc_tile_sel_win_change on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_tile_sel_win_change on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_tile_sel_win_change on DMG in GBHawk",
|
"m3_lcdc_tile_sel_win_change on DMG in GBHawk",
|
||||||
"m3_lcdc_tile_sel_win_change2 on CGB_C in Gambatte",
|
"m3_lcdc_tile_sel_win_change2 on CGB_C in Gambatte",
|
||||||
"m3_lcdc_tile_sel_win_change2 on CGB_C in Gambatte (no BIOS)",
|
"m3_lcdc_tile_sel_win_change2 on CGB_C in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_tile_sel_win_change2 on CGB_C in GBHawk",
|
"m3_lcdc_tile_sel_win_change2 on CGB_C in GBHawk",
|
||||||
"m3_lcdc_win_en_change_multiple on CGB_C in GBHawk",
|
"m3_lcdc_win_en_change_multiple on CGB_C in GBHawk",
|
||||||
|
"m3_lcdc_win_en_change_multiple on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_win_en_change_multiple on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_win_en_change_multiple on DMG in GBHawk",
|
"m3_lcdc_win_en_change_multiple on DMG in GBHawk",
|
||||||
"m3_lcdc_win_en_change_multiple_wx on DMG in Gambatte",
|
"m3_lcdc_win_en_change_multiple_wx on DMG in Gambatte",
|
||||||
"m3_lcdc_win_en_change_multiple_wx on DMG in Gambatte (no BIOS)",
|
"m3_lcdc_win_en_change_multiple_wx on DMG in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_win_en_change_multiple_wx on DMG in GBHawk",
|
"m3_lcdc_win_en_change_multiple_wx on DMG in GBHawk",
|
||||||
|
"m3_lcdc_win_en_change_multiple_wx on DMG in SameBoy",
|
||||||
|
"m3_lcdc_win_en_change_multiple_wx on DMG in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_win_en_change_multiple_wx on DMG_B in Gambatte",
|
"m3_lcdc_win_en_change_multiple_wx on DMG_B in Gambatte",
|
||||||
"m3_lcdc_win_en_change_multiple_wx on DMG_B in Gambatte (no BIOS)",
|
"m3_lcdc_win_en_change_multiple_wx on DMG_B in Gambatte (no BIOS)",
|
||||||
"m3_lcdc_win_en_change_multiple_wx on DMG_B in GBHawk",
|
"m3_lcdc_win_en_change_multiple_wx on DMG_B in GBHawk",
|
||||||
|
"m3_lcdc_win_en_change_multiple_wx on DMG_B in SameBoy",
|
||||||
|
"m3_lcdc_win_en_change_multiple_wx on DMG_B in SameBoy (no BIOS)",
|
||||||
"m3_lcdc_win_map_change on CGB_C in GBHawk",
|
"m3_lcdc_win_map_change on CGB_C in GBHawk",
|
||||||
"m3_lcdc_win_map_change on DMG in GBHawk",
|
"m3_lcdc_win_map_change on DMG in GBHawk",
|
||||||
"m3_lcdc_win_map_change2 on CGB_C in GBHawk",
|
"m3_lcdc_win_map_change2 on CGB_C in GBHawk",
|
||||||
|
"m3_lcdc_win_map_change2 on CGB_C in SameBoy",
|
||||||
|
"m3_lcdc_win_map_change2 on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_obp0_change on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
"m3_obp0_change on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_obp0_change on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
"m3_obp0_change on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_obp0_change on CGB_C in GBHawk",
|
"m3_obp0_change on CGB_C in GBHawk",
|
||||||
"m3_obp0_change on CGB_D in GBHawk",
|
"m3_obp0_change on CGB_D in GBHawk",
|
||||||
"m3_obp0_change on DMG in GBHawk",
|
"m3_obp0_change on DMG in GBHawk",
|
||||||
"m3_scx_high_5_bits on CGB_C in GBHawk",
|
"m3_scx_high_5_bits on CGB_C in GBHawk",
|
||||||
|
"m3_scx_high_5_bits on CGB_C in SameBoy",
|
||||||
|
"m3_scx_high_5_bits on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_scx_high_5_bits on DMG in GBHawk",
|
"m3_scx_high_5_bits on DMG in GBHawk",
|
||||||
|
"m3_scx_high_5_bits on DMG in SameBoy", // SameBoy emulates DMG-B, but there's no DMG-B-specific expect image for this test, so it should be the same on all DMG revisions?
|
||||||
|
"m3_scx_high_5_bits on DMG in SameBoy (no BIOS)", // SameBoy emulates DMG-B, but there's no DMG-B-specific expect image for this test, so it should be the same on all DMG revisions?
|
||||||
"m3_scx_high_5_bits_change2 on CGB_C in GBHawk",
|
"m3_scx_high_5_bits_change2 on CGB_C in GBHawk",
|
||||||
|
"m3_scx_high_5_bits_change2 on CGB_C in SameBoy",
|
||||||
|
"m3_scx_high_5_bits_change2 on CGB_C in SameBoy (no BIOS)",
|
||||||
|
"m3_scx_low_3_bits on CGB_C in SameBoy",
|
||||||
|
"m3_scx_low_3_bits on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_scy_change on CGB_C in GBHawk",
|
"m3_scy_change on CGB_C in GBHawk",
|
||||||
|
"m3_scy_change on CGB_C in SameBoy",
|
||||||
|
"m3_scy_change on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_scy_change on CGB_D in Gambatte", // Gambatte's GBC emulation matches CGB C variant
|
"m3_scy_change on CGB_D in Gambatte", // Gambatte's GBC emulation matches CGB C variant
|
||||||
"m3_scy_change on CGB_D in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB C variant
|
"m3_scy_change on CGB_D in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB C variant
|
||||||
"m3_scy_change on CGB_D in GBHawk",
|
"m3_scy_change on CGB_D in GBHawk",
|
||||||
|
"m3_scy_change on CGB_D in SameBoy",
|
||||||
|
"m3_scy_change on CGB_D in SameBoy (no BIOS)",
|
||||||
"m3_scy_change on DMG in GBHawk",
|
"m3_scy_change on DMG in GBHawk",
|
||||||
"m3_scy_change2 on CGB_C in GBHawk",
|
"m3_scy_change2 on CGB_C in GBHawk",
|
||||||
|
"m3_scy_change2 on CGB_C in SameBoy",
|
||||||
|
"m3_scy_change2 on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_window_timing on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
"m3_window_timing on CGB_C in Gambatte", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_window_timing on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
"m3_window_timing on CGB_C in Gambatte (no BIOS)", // Gambatte's GBC emulation matches CGB D variant
|
||||||
"m3_window_timing on CGB_C in GBHawk",
|
"m3_window_timing on CGB_C in GBHawk",
|
||||||
|
@ -112,6 +159,8 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
"m3_window_timing_wx_0 on CGB_C in Gambatte",
|
"m3_window_timing_wx_0 on CGB_C in Gambatte",
|
||||||
"m3_window_timing_wx_0 on CGB_C in Gambatte (no BIOS)",
|
"m3_window_timing_wx_0 on CGB_C in Gambatte (no BIOS)",
|
||||||
"m3_window_timing_wx_0 on CGB_C in GBHawk",
|
"m3_window_timing_wx_0 on CGB_C in GBHawk",
|
||||||
|
"m3_window_timing_wx_0 on CGB_C in SameBoy",
|
||||||
|
"m3_window_timing_wx_0 on CGB_C in SameBoy (no BIOS)",
|
||||||
"m3_window_timing_wx_0 on CGB_D in Gambatte",
|
"m3_window_timing_wx_0 on CGB_D in Gambatte",
|
||||||
"m3_window_timing_wx_0 on CGB_D in Gambatte (no BIOS)",
|
"m3_window_timing_wx_0 on CGB_D in Gambatte (no BIOS)",
|
||||||
"m3_window_timing_wx_0 on CGB_D in GBHawk",
|
"m3_window_timing_wx_0 on CGB_D in GBHawk",
|
||||||
|
@ -124,6 +173,8 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
"m3_wx_4_change_sprites on CGB_C in Gambatte",
|
"m3_wx_4_change_sprites on CGB_C in Gambatte",
|
||||||
"m3_wx_4_change_sprites on CGB_C in Gambatte (no BIOS)",
|
"m3_wx_4_change_sprites on CGB_C in Gambatte (no BIOS)",
|
||||||
"m3_wx_4_change_sprites on CGB_C in GBHawk",
|
"m3_wx_4_change_sprites on CGB_C in GBHawk",
|
||||||
|
"m3_wx_4_change_sprites on CGB_C in SameBoy", // don't think this is getting captured properly but it wouldn't pass anyway
|
||||||
|
"m3_wx_4_change_sprites on CGB_C in SameBoy (no BIOS)", // don't think this is getting captured properly but it wouldn't pass anyway
|
||||||
"m3_wx_4_change_sprites on DMG in Gambatte",
|
"m3_wx_4_change_sprites on DMG in Gambatte",
|
||||||
"m3_wx_4_change_sprites on DMG in Gambatte (no BIOS)",
|
"m3_wx_4_change_sprites on DMG in Gambatte (no BIOS)",
|
||||||
"m3_wx_4_change_sprites on DMG in GBHawk",
|
"m3_wx_4_change_sprites on DMG in GBHawk",
|
||||||
|
@ -215,11 +266,14 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
{
|
{
|
||||||
// without this, exec hook triggers too early and I've decided I don't want to know why ¯\_(ツ)_/¯ --yoshi
|
// without this, exec hook triggers too early and I've decided I don't want to know why ¯\_(ツ)_/¯ --yoshi
|
||||||
fe.FrameAdvanceBy(5);
|
fe.FrameAdvanceBy(5);
|
||||||
|
// if (testCase.Setup.CoreName is CoreNames.Sameboy) fe.FrameAdvance();
|
||||||
if (testCase.TestName is "m3_lcdc_win_map_change2") fe.FrameAdvance(); // just happens to be an outlier
|
if (testCase.TestName is "m3_lcdc_win_map_change2") fe.FrameAdvance(); // just happens to be an outlier
|
||||||
}
|
}
|
||||||
Func<long> getPC = fe.Core switch
|
Func<long> getPC = fe.Core switch
|
||||||
{
|
{
|
||||||
GBHawk gbHawk => () => gbHawk.cpu.RegPC,
|
GBHawk gbHawk => () => gbHawk.cpu.RegPC,
|
||||||
|
Sameboy when testCase.Setup is { UseBIOS: false, Variant: ConsoleVariant.DMG or ConsoleVariant.DMG_B }
|
||||||
|
=> () => (long) fe.CoreAsDebuggable!.GetCpuFlagsAndRegisters()["PC"].Value - 1, // something something pre- vs. post-increment
|
||||||
_ => () => (long) fe.CoreAsDebuggable!.GetCpuFlagsAndRegisters()["PC"].Value
|
_ => () => (long) fe.CoreAsDebuggable!.GetCpuFlagsAndRegisters()["PC"].Value
|
||||||
};
|
};
|
||||||
var domain = fe.CoreAsMemDomains!.SystemBus;
|
var domain = fe.CoreAsMemDomains!.SystemBus;
|
||||||
|
@ -235,6 +289,7 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
address: null, // all addresses
|
address: null, // all addresses
|
||||||
mask: null));
|
mask: null));
|
||||||
Assert.IsTrue(fe.FrameAdvanceUntil(() => finished), "timed out waiting for exec hook");
|
Assert.IsTrue(fe.FrameAdvanceUntil(() => finished), "timed out waiting for exec hook");
|
||||||
|
if (testCase.Setup.CoreName is CoreNames.Sameboy) fe.FrameAdvanceBy(7); // ¯\_(ツ)_/¯
|
||||||
}
|
}
|
||||||
var actualUnnormalised = DummyFrontend.RunAndScreenshot(
|
var actualUnnormalised = DummyFrontend.RunAndScreenshot(
|
||||||
InitGBCore(testCase.Setup, $"{testCase.TestName}.gb", ReflectionCache.EmbeddedResourceStream(testCase.RomEmbedPath).ReadAllBytes()),
|
InitGBCore(testCase.Setup, $"{testCase.TestName}.gb", ReflectionCache.EmbeddedResourceStream(testCase.RomEmbedPath).ReadAllBytes()),
|
||||||
|
|
|
@ -41,7 +41,10 @@ namespace BizHawk.Tests.Testroms.GB
|
||||||
|
|
||||||
private static readonly IReadOnlyCollection<string> KnownFailures = new[]
|
private static readonly IReadOnlyCollection<string> KnownFailures = new[]
|
||||||
{
|
{
|
||||||
"",
|
"RTC3Test.basic on CGB_C in SameBoy",
|
||||||
|
"RTC3Test.basic on CGB_C in SameBoy (no BIOS)",
|
||||||
|
"RTC3Test.basic on DMG in SameBoy",
|
||||||
|
"RTC3Test.basic on DMG in SameBoy (no BIOS)",
|
||||||
};
|
};
|
||||||
|
|
||||||
private static readonly bool RomIsPresent = ReflectionCache.EmbeddedResourceList().Contains(ROM_EMBED_PATH);
|
private static readonly bool RomIsPresent = ReflectionCache.EmbeddedResourceList().Contains(ROM_EMBED_PATH);
|
||||||
|
|
|
@ -72,4 +72,4 @@ $Env:BIZHAWKTEST_SAVE_IMAGES = "all"
|
||||||
dotnet test -c Release -l "console;verbosity=detailed"
|
dotnet test -c Release -l "console;verbosity=detailed"
|
||||||
```
|
```
|
||||||
|
|
||||||
Summary of `BIZHAWKTEST_RUN_KNOWN_FAILURES=1 ./run_tests_release.sh` should read 86 passed / 118 skipped / 0 failed.
|
Summary of `BIZHAWKTEST_RUN_KNOWN_FAILURES=1 ./run_tests_release.sh` should read 166 passed / 174 skipped / 0 failed.
|
||||||
|
|
Loading…
Reference in New Issue