diff --git a/BizHawk.Emulation/BizHawk.Emulation.csproj b/BizHawk.Emulation/BizHawk.Emulation.csproj
index df39d03cde..9d21383aa5 100644
--- a/BizHawk.Emulation/BizHawk.Emulation.csproj
+++ b/BizHawk.Emulation/BizHawk.Emulation.csproj
@@ -114,6 +114,7 @@
+
@@ -237,6 +238,8 @@
+
+
diff --git a/BizHawk.Emulation/Consoles/Intellivision/Intellivision.cs b/BizHawk.Emulation/Consoles/Intellivision/Intellivision.cs
new file mode 100644
index 0000000000..89ac8e2970
--- /dev/null
+++ b/BizHawk.Emulation/Consoles/Intellivision/Intellivision.cs
@@ -0,0 +1,130 @@
+using System;
+using System.IO;
+using System.Collections.Generic;
+using BizHawk.Emulation.CPUs.CP1610;
+
+namespace BizHawk.Emulation.Consoles.Mattel
+{
+ public sealed partial class Intellivision : IEmulator
+ {
+ byte[] Rom;
+ GameInfo Game;
+
+ CP1610 Cpu ;
+
+ public Intellivision(GameInfo game, byte[] rom)
+ {
+ Rom = rom;
+ Game = game;
+
+ Cpu = new CP1610();
+ Cpu.ReadMemory = ReadMemory;
+ Cpu.WriteMemory = WriteMemory;
+
+ CoreOutputComm = new CoreOutputComm();
+ }
+
+ public byte ReadMemory(ushort addr)
+ {
+ return 0xFF; // TODO you need to implement a memory mapper.
+ }
+
+ public void WriteMemory(ushort addr, byte value)
+ {
+ // TODO
+ }
+
+ public void FrameAdvance(bool render)
+ {
+ Cpu.Execute(999); // execute some cycles. this will do nothing useful until a memory mapper is created.
+ }
+
+
+
+ // This is all crap to worry about later.
+
+ public IVideoProvider VideoProvider { get { return new NullEmulator(); } }
+ public ISoundProvider SoundProvider { get { return NullSound.SilenceProvider; } }
+
+ public ControllerDefinition ControllerDefinition
+ {
+ get { return null; }
+ }
+
+ public IController Controller { get; set; }
+
+
+ public int Frame
+ {
+ get { return 0; }
+ }
+
+ public int LagCount
+ {
+ get { return 0; }
+ set { }
+ }
+
+ public bool IsLagFrame { get { return false; } }
+ public string SystemId
+ {
+ get { return "INTV"; }
+ }
+
+ public bool DeterministicEmulation { get; set; }
+
+ public byte[] SaveRam { get { return null; } }
+
+ public bool SaveRamModified
+ {
+ get { return false; }
+ set { }
+ }
+
+ public void ResetFrameCounter()
+ {
+ }
+
+ public void SaveStateText(TextWriter writer)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void LoadStateText(TextReader reader)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void SaveStateBinary(BinaryWriter writer)
+ {
+ throw new NotImplementedException();
+ }
+
+ public void LoadStateBinary(BinaryReader reader)
+ {
+ throw new NotImplementedException();
+ }
+
+ public byte[] SaveStateBinary()
+ {
+ return new byte[0];
+ }
+
+ public CoreInputComm CoreInputComm { get; set; }
+ public CoreOutputComm CoreOutputComm { get; private set; }
+
+ public IList MemoryDomains
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public MemoryDomain MainMemory
+ {
+ get { throw new NotImplementedException(); }
+ }
+
+ public void Dispose()
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/BizHawk.Emulation/Database/Database.cs b/BizHawk.Emulation/Database/Database.cs
index 0650353a3e..303d815293 100644
--- a/BizHawk.Emulation/Database/Database.cs
+++ b/BizHawk.Emulation/Database/Database.cs
@@ -139,6 +139,7 @@ namespace BizHawk
case ".NES": Game.System = "NES"; break;
case ".A26": Game.System = "A26"; break;
case ".COL": Game.System = "COLV"; break;
+ case ".INT": Game.System = "INTV"; break;
}
Game.Name = Path.GetFileNameWithoutExtension(fileName).Replace('_', ' ');
diff --git a/BizHawk.MultiClient/MainForm.cs b/BizHawk.MultiClient/MainForm.cs
index 8fd20e1716..b5172e29e2 100644
--- a/BizHawk.MultiClient/MainForm.cs
+++ b/BizHawk.MultiClient/MainForm.cs
@@ -15,6 +15,7 @@ using BizHawk.Emulation.Consoles.Nintendo;
using BizHawk.Emulation.Consoles.Coleco;
using BizHawk.MultiClient.tools;
using System.Collections.Generic;
+using BizHawk.Emulation.Consoles.Mattel;
namespace BizHawk.MultiClient
{
@@ -1109,7 +1110,7 @@ namespace BizHawk.MultiClient
if (path == null) return false;
using (var file = new HawkFile())
{
- string[] romExtensions = new string[] { "SMS", "PCE", "SGX", "GG", "SG", "BIN", "GEN", "SMD", "GB", "NES", "ROM" };
+ string[] romExtensions = new string[] { "SMS", "PCE", "SGX", "GG", "SG", "BIN", "GEN", "SMD", "GB", "NES", "ROM", "INT" };
//lets not use this unless we need to
//file.NonArchiveExtensions = romExtensions;
@@ -1284,6 +1285,10 @@ namespace BizHawk.MultiClient
SMS c = new SMS(game, rom.RomData);//new ColecoVision(game, rom.FileData);
nextEmulator = c;
break;
+ case "INTV":
+ Intellivision intv = new Intellivision(game, rom.RomData);
+ nextEmulator = intv;
+ break;
}
}
@@ -2488,6 +2493,7 @@ namespace BizHawk.MultiClient
"Genesis (experimental)", "*.gen;*.smd;*.bin;*.cue;%ARCH%",
"Gameboy (experimental)", "*.gb;%ARCH%",
"Colecovision (very experimental)", "*.col;%ARCH%",
+ "Intellivision (very experimental)", "*.int;%ARCH%",
"PSX Executables (experimental)", "*.exe",
"All Files", "*.*");
}