From 00fb58bea56d11cae89536ce82793585ec9e957c Mon Sep 17 00:00:00 2001 From: adelikat Date: Sat, 7 Feb 2015 15:02:52 +0000 Subject: [PATCH] more TI83 cleanup, nothing worth looking at here --- BizHawk.Client.EmuHawk/MainForm.Designer.cs | 2 +- BizHawk.Client.EmuHawk/MainForm.Events.cs | 10 +- .../BizHawk.Emulation.Cores.csproj | 7 +- .../Calculator/TI83.IEmulator.cs | 80 ++++++++++ BizHawk.Emulation.Cores/Calculator/TI83.cs | 142 +++++++----------- 5 files changed, 144 insertions(+), 97 deletions(-) create mode 100644 BizHawk.Emulation.Cores/Calculator/TI83.IEmulator.cs diff --git a/BizHawk.Client.EmuHawk/MainForm.Designer.cs b/BizHawk.Client.EmuHawk/MainForm.Designer.cs index 67c1e2d9af..1cea5eed33 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Designer.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Designer.cs @@ -2292,7 +2292,7 @@ this.paletteToolStripMenuItem.Name = "paletteToolStripMenuItem"; this.paletteToolStripMenuItem.Size = new System.Drawing.Size(165, 22); this.paletteToolStripMenuItem.Text = "Palette..."; - this.paletteToolStripMenuItem.Click += new System.EventHandler(this.paletteToolStripMenuItem_Click); + this.paletteToolStripMenuItem.Click += new System.EventHandler(this.TI83PaletteMenuItem_Click); // // AtariSubMenu // diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index 896b81d2d1..9f2870e710 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -1528,13 +1528,13 @@ namespace BizHawk.Client.EmuHawk private void LoadTIFileMenuItem_Click(object sender, EventArgs e) { - var OFD = new OpenFileDialog(); + var ofd = new OpenFileDialog(); - if (OFD.ShowDialog() == DialogResult.OK) + if (ofd.ShowDialog() == DialogResult.OK) { try { - (Global.Emulator as TI83).LinkPort.SendFileToCalc(File.OpenRead(OFD.FileName), true); + (Global.Emulator as TI83).LinkPort.SendFileToCalc(File.OpenRead(ofd.FileName), true); } catch (IOException ex) { @@ -1542,13 +1542,13 @@ namespace BizHawk.Client.EmuHawk if (MessageBox.Show(Message, "Upload Failed", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes) { - (Global.Emulator as TI83).LinkPort.SendFileToCalc(File.OpenRead(OFD.FileName), false); + (Global.Emulator as TI83).LinkPort.SendFileToCalc(File.OpenRead(ofd.FileName), false); } } } } - private void paletteToolStripMenuItem_Click(object sender, EventArgs e) + private void TI83PaletteMenuItem_Click(object sender, EventArgs e) { if (new TI83PaletteConfig().ShowDialog() == DialogResult.OK) { diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index 887133165f..d35bc6d325 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -92,6 +92,9 @@ VersionInfo.cs + + TI83.cs + TI83.cs @@ -108,7 +111,9 @@ TI83.cs - + + TI83.cs + diff --git a/BizHawk.Emulation.Cores/Calculator/TI83.IEmulator.cs b/BizHawk.Emulation.Cores/Calculator/TI83.IEmulator.cs new file mode 100644 index 0000000000..b4e281facf --- /dev/null +++ b/BizHawk.Emulation.Cores/Calculator/TI83.IEmulator.cs @@ -0,0 +1,80 @@ +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Calculators +{ + public partial class TI83 : IEmulator + { + public IEmulatorServiceProvider ServiceProvider { get; private set; } + + public ISoundProvider SoundProvider + { + get { return NullSound.SilenceProvider; } + } + + public ISyncSoundProvider SyncSoundProvider + { + get { return new FakeSyncSound(NullSound.SilenceProvider, 735); } + } + + public bool StartAsyncSound() + { + return true; + } + + public void EndAsyncSound() { } + + public ControllerDefinition ControllerDefinition + { + get { return TI83Controller; } + } + + public IController Controller { get; set; } + + public void FrameAdvance(bool render, bool rendersound) + { + _lagged = true; + + //I eyeballed this speed + for (int i = 0; i < 5; i++) + { + _onPressed = Controller.IsPressed("ON"); + + //and this was derived from other emus + Cpu.ExecuteCycles(10000); + Cpu.Interrupt = true; + } + + Frame++; + + if (_lagged) + { + _lagCount++; + } + + _isLag = _lagged; + } + + public int Frame + { + get { return _frame; } + set { _frame = value; } + } + + public string SystemId { get { return "TI83"; } } + + public bool DeterministicEmulation { get { return true; } } + + public string BoardName { get { return null; } } + + public void ResetCounters() + { + Frame = 0; + _lagCount = 0; + _isLag = false; + } + + public CoreComm CoreComm { get; private set; } + + public void Dispose() { } + } +} diff --git a/BizHawk.Emulation.Cores/Calculator/TI83.cs b/BizHawk.Emulation.Cores/Calculator/TI83.cs index d723662d85..c6686c01ac 100644 --- a/BizHawk.Emulation.Cores/Calculator/TI83.cs +++ b/BizHawk.Emulation.Cores/Calculator/TI83.cs @@ -39,15 +39,17 @@ namespace BizHawk.Emulation.Cores.Calculators Cpu.NMICallback = NMICallback; Cpu.MemoryCallbacks = MemoryCallbacks; - this.Rom = rom; + Rom = rom; LinkPort = new TI83LinkPort(this); - //different calculators (different revisions?) have different initPC. we track this in the game database by rom hash - //if( *(unsigned long *)(m_pRom + 0x6ce) == 0x04D3163E ) m_Regs.PC.W = 0x6ce; //KNOWN - //else if( *(unsigned long *)(m_pRom + 0x6f6) == 0x04D3163E ) m_Regs.PC.W = 0x6f6; //UNKNOWN + // different calculators (different revisions?) have different initPC. we track this in the game database by rom hash + // if( *(unsigned long *)(m_pRom + 0x6ce) == 0x04D3163E ) m_Regs.PC.W = 0x6ce; //KNOWN + // else if( *(unsigned long *)(m_pRom + 0x6f6) == 0x04D3163E ) m_Regs.PC.W = 0x6f6; //UNKNOWN if (game["initPC"]) + { startPC = ushort.Parse(game.OptionValue("initPC"), NumberStyles.HexNumber); + } HardReset(); SetupMemoryDomains(); @@ -55,6 +57,8 @@ namespace BizHawk.Emulation.Cores.Calculators } // hardware + private const ushort RamSizeMask = 0x7FFF; + private readonly Z80A Cpu = new Z80A(); private readonly byte[] Rom; @@ -72,6 +76,12 @@ namespace BizHawk.Emulation.Cores.Calculators private bool _cursorMoved; private int _frame; + // configuration + private ushort startPC; + + // Link Cable + public TI83LinkPort LinkPort { get; set; } + internal bool LinkActive; internal int LinkOutput, LinkInput; @@ -80,34 +90,59 @@ namespace BizHawk.Emulation.Cores.Calculators get { return (LinkOutput | LinkInput) ^ 3; } } - public IEmulatorServiceProvider ServiceProvider { get; private set; } + private static readonly ControllerDefinition TI83Controller = + new ControllerDefinition + { + Name = "TI83 Controller", + BoolButtons = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9","DOT", + "ON","ENTER", + "DOWN","LEFT","UP","RIGHT", + "PLUS","MINUS","MULTIPLY","DIVIDE", + "CLEAR", "EXP", "DASH", "PARACLOSE", "TAN", "VARS", "PARAOPEN", + "COS", "PRGM", "STAT", "COMMA", "SIN", "MATRIX", "X", + "STO", "LN", "LOG", "SQUARED", "NEG1", "MATH", "ALPHA", + "GRAPH", "TRACE", "ZOOM", "WINDOW", "Y", "2ND", "MODE", "DEL" + } + }; - //------- - - public byte ReadMemory(ushort addr) + private byte ReadMemory(ushort addr) { byte ret; int romPage = _romPageLow3Bits | (_romPageHighBit << 3); //Console.WriteLine("read memory: {0:X4}", addr); if (addr < 0x4000) + { ret = Rom[addr]; //ROM zero-page + } else if (addr < 0x8000) + { ret = Rom[romPage * 0x4000 + addr - 0x4000]; //other rom page - else ret = _ram[addr - 0x8000]; + } + else + { + ret = _ram[addr - 0x8000]; + } return ret; } - public void WriteMemory(ushort addr, byte value) + private void WriteMemory(ushort addr, byte value) { if (addr < 0x4000) + { return; //ROM zero-page + } else if (addr < 0x8000) + { return; //other rom page - else _ram[addr - 0x8000] = value; + } + else + { + _ram[addr - 0x8000] = value; + } } - public void WriteHardware(ushort addr, byte value) + private void WriteHardware(ushort addr, byte value) { switch (addr) { @@ -146,7 +181,7 @@ namespace BizHawk.Emulation.Cores.Calculators } } - public byte ReadHardware(ushort addr) + private byte ReadHardware(ushort addr) { switch (addr) { @@ -292,7 +327,7 @@ namespace BizHawk.Emulation.Cores.Calculators ret = (byte)(((_vram[offset] << 8) | _vram[offset + 1]) >> shift); } - doDispMove(); + DoDispMove(); return ret; } @@ -326,10 +361,10 @@ namespace BizHawk.Emulation.Cores.Calculators } } - doDispMove(); + DoDispMove(); } - private void doDispMove() + private void DoDispMove() { switch (_displayMove) { @@ -390,60 +425,7 @@ namespace BizHawk.Emulation.Cores.Calculators Cpu.NonMaskableInterrupt = false; } - public CoreComm CoreComm { get; private set; } - - public ISoundProvider SoundProvider { get { return NullSound.SilenceProvider; } } - public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(NullSound.SilenceProvider, 735); } } - public bool StartAsyncSound() { return true; } - public void EndAsyncSound() { } - - public static readonly ControllerDefinition TI83Controller = - new ControllerDefinition - { - Name = "TI83 Controller", - BoolButtons = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9","DOT", - "ON","ENTER", - "DOWN","LEFT","UP","RIGHT", - "PLUS","MINUS","MULTIPLY","DIVIDE", - "CLEAR", "EXP", "DASH", "PARACLOSE", "TAN", "VARS", "PARAOPEN", - "COS", "PRGM", "STAT", "COMMA", "SIN", "MATRIX", "X", - "STO", "LN", "LOG", "SQUARED", "NEG1", "MATH", "ALPHA", - "GRAPH", "TRACE", "ZOOM", "WINDOW", "Y", "2ND", "MODE", "DEL" - } - }; - - public ControllerDefinition ControllerDefinition { get { return TI83Controller; } } - - public IController Controller { get; set; } - - // configuration - private ushort startPC; - - public void FrameAdvance(bool render, bool rendersound) - { - _lagged = true; - //I eyeballed this speed - for (int i = 0; i < 5; i++) - { - _onPressed = Controller.IsPressed("ON"); - //and this was derived from other emus - Cpu.ExecuteCycles(10000); - Cpu.Interrupt = true; - } - - Frame++; - if (_lagged) - { - _lagCount++; - _isLag = true; - } - else - { - _isLag = false; - } - } - - public void HardReset() + private void HardReset() { Cpu.Reset(); _ram = new byte[0x8000]; @@ -464,25 +446,5 @@ namespace BizHawk.Emulation.Cores.Calculators _displayMove = 0; _displayX = _displayY = 0; } - - public int Frame { get { return _frame; } set { _frame = value; } } - - public void ResetCounters() - { - Frame = 0; - _lagCount = 0; - _isLag = false; - } - - public bool DeterministicEmulation { get { return true; } } - - public string SystemId { get { return "TI83"; } } - public string BoardName { get { return null; } } - - private const ushort RamSizeMask = 0x7FFF; - - public void Dispose() { } - - public TI83LinkPort LinkPort { get; set; } } } \ No newline at end of file