diff --git a/BizHawk.Emulation.Common/Database/Database.cs b/BizHawk.Emulation.Common/Database/Database.cs
index d2d2bfccee..9364aac02d 100644
--- a/BizHawk.Emulation.Common/Database/Database.cs
+++ b/BizHawk.Emulation.Common/Database/Database.cs
@@ -308,6 +308,7 @@ namespace BizHawk.Emulation.Common
break;
case ".TAP":
+
byte[] head = File.ReadAllBytes(fileName).Take(8).ToArray();
if (System.Text.Encoding.Default.GetString(head).Contains("C64-TAPE"))
game.System = "C64";
diff --git a/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs b/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
index 7755353463..ba32833137 100644
--- a/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
+++ b/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs
@@ -51,10 +51,12 @@ namespace BizHawk.Emulation.Common
FirmwareAndOption("D3B78C3DBAC55F5199F33F3FE0036439811F7FB3", 16384, "C64", "Drive1541II", "drive-1541ii.bin", "1541-II Disk Drive Rom");
// ZX Spectrum
+ /* These are now shipped with bizhawk
FirmwareAndOption("5EA7C2B824672E914525D1D5C419D71B84A426A2", 16384, "ZXSpectrum", "48ROM", "48.ROM", "Spectrum 48K ROM");
FirmwareAndOption("16375D42EA109B47EDDED7A16028DE7FDB3013A1", 32768, "ZXSpectrum", "128ROM", "128.ROM", "Spectrum 128K ROM");
FirmwareAndOption("8CAFB292AF58617907B9E6B9093D3588A75849B8", 32768, "ZXSpectrum", "PLUS2ROM", "PLUS2.ROM", "Spectrum 128K +2 ROM");
FirmwareAndOption("929BF1A5E5687EBD8D7245F9B513A596C0EC21A4", 65536, "ZXSpectrum", "PLUS3ROM", "PLUS3.ROM", "Spectrum 128K +3 ROM");
+ */
// for saturn, we think any bios region can pretty much run any iso
// so, we're going to lay this out carefully so that we choose things in a sensible order, but prefer the correct region
diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj
index 244c3ae233..638bf87f74 100644
--- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj
+++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj
@@ -1399,8 +1399,12 @@
+
+
+
+
diff --git a/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.IEmulator.cs b/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.IEmulator.cs
index 8b10763146..b7a1a07d82 100644
--- a/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.IEmulator.cs
+++ b/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.IEmulator.cs
@@ -29,7 +29,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
public string SystemId => "ZXSpectrum";
- public bool DeterministicEmulation => true;
+ public bool DeterministicEmulation => false;
public void ResetCounters()
{
diff --git a/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.ISettable.cs b/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.ISettable.cs
index f64d476d6d..ba6a944346 100644
--- a/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.ISettable.cs
+++ b/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.ISettable.cs
@@ -116,6 +116,7 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
///
/// The speed at which the tape is loaded
+ /// NOT IN USE YET
///
public enum TapeLoadSpeed
{
diff --git a/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.cs b/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.cs
index 5fff81c5be..75bb2fcca0 100644
--- a/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.cs
+++ b/BizHawk.Emulation.Cores/Computers/SinclairSpectrum/ZXSpectrum.cs
@@ -1,6 +1,8 @@
-using BizHawk.Emulation.Common;
+using BizHawk.Common;
+using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Components;
using BizHawk.Emulation.Cores.Components.Z80A;
+using BizHawk.Emulation.Cores.Properties;
using System;
using System.Collections.Generic;
using System.IO;
@@ -121,6 +123,32 @@ namespace BizHawk.Emulation.Cores.Computers.SinclairSpectrum
return rom;
}
+ // Amstrad licensed ROMs are free to distribute and shipped with BizHawk
+ byte[] embeddedRom = new byte[length];
+ bool embeddedFound = true;
+ switch (names.FirstOrDefault())
+ {
+ case "48ROM":
+ embeddedRom = Util.DecompressGzipFile(new MemoryStream(Resources.ZX_48_ROM));
+ break;
+ case "128ROM":
+ embeddedRom = Util.DecompressGzipFile(new MemoryStream(Resources.ZX_128_ROM));
+ break;
+ case "PLUS2ROM":
+ embeddedRom = Util.DecompressGzipFile(new MemoryStream(Resources.ZX_plus2_rom));
+ break;
+ case "PLUS3ROM":
+ embeddedRom = Util.DecompressGzipFile(new MemoryStream(Resources.ZX_plus3_rom));
+ break;
+ default:
+ embeddedFound = false;
+ break;
+ }
+
+ if (embeddedFound)
+ return embeddedRom;
+
+ // Embedded ROM not found, maybe this is a peripheral ROM?
var result = names.Select(n => CoreComm.CoreFileProvider.GetFirmware("ZXSpectrum", n, false)).FirstOrDefault(b => b != null && b.Length == length);
if (result == null)
{
diff --git a/BizHawk.Emulation.Cores/Properties/Resources.Designer.cs b/BizHawk.Emulation.Cores/Properties/Resources.Designer.cs
index 5a3bbcce9a..312ea05d92 100644
--- a/BizHawk.Emulation.Cores/Properties/Resources.Designer.cs
+++ b/BizHawk.Emulation.Cores/Properties/Resources.Designer.cs
@@ -89,5 +89,45 @@ namespace BizHawk.Emulation.Cores.Properties {
return ((byte[])(obj));
}
}
+
+ ///
+ /// Looks up a localized resource of type System.Byte[].
+ ///
+ internal static byte[] ZX_128_ROM {
+ get {
+ object obj = ResourceManager.GetObject("ZX_128_ROM", resourceCulture);
+ return ((byte[])(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Byte[].
+ ///
+ internal static byte[] ZX_48_ROM {
+ get {
+ object obj = ResourceManager.GetObject("ZX_48_ROM", resourceCulture);
+ return ((byte[])(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Byte[].
+ ///
+ internal static byte[] ZX_plus2_rom {
+ get {
+ object obj = ResourceManager.GetObject("ZX_plus2_rom", resourceCulture);
+ return ((byte[])(obj));
+ }
+ }
+
+ ///
+ /// Looks up a localized resource of type System.Byte[].
+ ///
+ internal static byte[] ZX_plus3_rom {
+ get {
+ object obj = ResourceManager.GetObject("ZX_plus3_rom", resourceCulture);
+ return ((byte[])(obj));
+ }
+ }
}
}
diff --git a/BizHawk.Emulation.Cores/Properties/Resources.resx b/BizHawk.Emulation.Cores/Properties/Resources.resx
index bdb07b9a9f..4699ab819d 100644
--- a/BizHawk.Emulation.Cores/Properties/Resources.resx
+++ b/BizHawk.Emulation.Cores/Properties/Resources.resx
@@ -127,4 +127,16 @@
..\Resources\sgb-cart-present.spc.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\128.ROM.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\Resources\48.ROM.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\Resources\plus2.rom.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ ..\Resources\plus3.rom.gz;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
\ No newline at end of file
diff --git a/BizHawk.Emulation.Cores/Resources/128.ROM.gz b/BizHawk.Emulation.Cores/Resources/128.ROM.gz
new file mode 100644
index 0000000000..697dc6e872
Binary files /dev/null and b/BizHawk.Emulation.Cores/Resources/128.ROM.gz differ
diff --git a/BizHawk.Emulation.Cores/Resources/48.ROM.gz b/BizHawk.Emulation.Cores/Resources/48.ROM.gz
new file mode 100644
index 0000000000..76b8c9d536
Binary files /dev/null and b/BizHawk.Emulation.Cores/Resources/48.ROM.gz differ
diff --git a/BizHawk.Emulation.Cores/Resources/plus2.rom.gz b/BizHawk.Emulation.Cores/Resources/plus2.rom.gz
new file mode 100644
index 0000000000..274507f352
Binary files /dev/null and b/BizHawk.Emulation.Cores/Resources/plus2.rom.gz differ
diff --git a/BizHawk.Emulation.Cores/Resources/plus3.rom.gz b/BizHawk.Emulation.Cores/Resources/plus3.rom.gz
new file mode 100644
index 0000000000..418ea1f1cf
Binary files /dev/null and b/BizHawk.Emulation.Cores/Resources/plus3.rom.gz differ