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", "*.*"); }