Can somewhat load from audio
This commit is contained in:
@@ -266,6 +266,8 @@ namespace Desktop
|
||||
mnemonic = $"LD E, 0x{val1E:X2}";
|
||||
instructionLength = 2;
|
||||
break;
|
||||
case 0x1F: mnemonic = $"RRA";
|
||||
break;
|
||||
case 0x20:
|
||||
sbyte jrOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1));
|
||||
ushort destination = (ushort)(currentPc + 2 + jrOffset);
|
||||
|
||||
97
Desktop/Form1.Designer.cs
generated
97
Desktop/Form1.Designer.cs
generated
@@ -36,24 +36,25 @@
|
||||
sNAToolStripMenuItem1 = new ToolStripMenuItem();
|
||||
tAPToolStripMenuItem = new ToolStripMenuItem();
|
||||
sNAToolStripMenuItem = new ToolStripMenuItem();
|
||||
saveSnapshotToolStripMenuItem = new ToolStripMenuItem();
|
||||
exitToolStripMenuItem = new ToolStripMenuItem();
|
||||
viewToolStripMenuItem = new ToolStripMenuItem();
|
||||
debuggerToolStripMenuItem = new ToolStripMenuItem();
|
||||
machineToolStripMenuItem = new ToolStripMenuItem();
|
||||
runToolStripMenuItem = new ToolStripMenuItem();
|
||||
resetToolStripMenuItem = new ToolStripMenuItem();
|
||||
stepToolStripMenuItem = new ToolStripMenuItem();
|
||||
resetToolStripMenuItem1 = new ToolStripMenuItem();
|
||||
viewToolStripMenuItem = new ToolStripMenuItem();
|
||||
debuggerToolStripMenuItem = new ToolStripMenuItem();
|
||||
optionsToolStripMenuItem = new ToolStripMenuItem();
|
||||
HighSpeedToolStripMenuItem = new ToolStripMenuItem();
|
||||
saveSnapshotToolStripMenuItem = new ToolStripMenuItem();
|
||||
playTapeToolStripMenuItem = new ToolStripMenuItem();
|
||||
menuStrip1.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// menuStrip1
|
||||
//
|
||||
menuStrip1.ImageScalingSize = new Size(24, 24);
|
||||
menuStrip1.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem, machineToolStripMenuItem, viewToolStripMenuItem, optionsToolStripMenuItem });
|
||||
menuStrip1.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem, machineToolStripMenuItem, viewToolStripMenuItem, optionsToolStripMenuItem, playTapeToolStripMenuItem });
|
||||
menuStrip1.Location = new Point(0, 0);
|
||||
menuStrip1.Name = "menuStrip1";
|
||||
menuStrip1.Padding = new Padding(5, 2, 0, 2);
|
||||
@@ -108,6 +109,13 @@
|
||||
sNAToolStripMenuItem.Text = "SNA";
|
||||
sNAToolStripMenuItem.Click += openSNAToolStripMenuItem_Click;
|
||||
//
|
||||
// saveSnapshotToolStripMenuItem
|
||||
//
|
||||
saveSnapshotToolStripMenuItem.Name = "saveSnapshotToolStripMenuItem";
|
||||
saveSnapshotToolStripMenuItem.Size = new Size(224, 26);
|
||||
saveSnapshotToolStripMenuItem.Text = "Save Snapshot";
|
||||
saveSnapshotToolStripMenuItem.Click += SaveSNAMenuItem_Click;
|
||||
//
|
||||
// exitToolStripMenuItem
|
||||
//
|
||||
exitToolStripMenuItem.Name = "exitToolStripMenuItem";
|
||||
@@ -115,6 +123,41 @@
|
||||
exitToolStripMenuItem.Text = "Exit";
|
||||
exitToolStripMenuItem.Click += btnExit_Click;
|
||||
//
|
||||
// machineToolStripMenuItem
|
||||
//
|
||||
machineToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { runToolStripMenuItem, resetToolStripMenuItem, stepToolStripMenuItem, resetToolStripMenuItem1 });
|
||||
machineToolStripMenuItem.Name = "machineToolStripMenuItem";
|
||||
machineToolStripMenuItem.Size = new Size(79, 24);
|
||||
machineToolStripMenuItem.Text = "Machine";
|
||||
//
|
||||
// runToolStripMenuItem
|
||||
//
|
||||
runToolStripMenuItem.Name = "runToolStripMenuItem";
|
||||
runToolStripMenuItem.Size = new Size(129, 26);
|
||||
runToolStripMenuItem.Text = "Run";
|
||||
runToolStripMenuItem.Click += btnRun_Click;
|
||||
//
|
||||
// resetToolStripMenuItem
|
||||
//
|
||||
resetToolStripMenuItem.Name = "resetToolStripMenuItem";
|
||||
resetToolStripMenuItem.Size = new Size(129, 26);
|
||||
resetToolStripMenuItem.Text = "Pause";
|
||||
resetToolStripMenuItem.Click += btnPause_Click;
|
||||
//
|
||||
// stepToolStripMenuItem
|
||||
//
|
||||
stepToolStripMenuItem.Name = "stepToolStripMenuItem";
|
||||
stepToolStripMenuItem.Size = new Size(129, 26);
|
||||
stepToolStripMenuItem.Text = "Step";
|
||||
stepToolStripMenuItem.Click += btnStep_Click;
|
||||
//
|
||||
// resetToolStripMenuItem1
|
||||
//
|
||||
resetToolStripMenuItem1.Name = "resetToolStripMenuItem1";
|
||||
resetToolStripMenuItem1.Size = new Size(129, 26);
|
||||
resetToolStripMenuItem1.Text = "Reset";
|
||||
resetToolStripMenuItem1.Click += btnReset_Click;
|
||||
//
|
||||
// viewToolStripMenuItem
|
||||
//
|
||||
viewToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { debuggerToolStripMenuItem });
|
||||
@@ -129,41 +172,6 @@
|
||||
debuggerToolStripMenuItem.Text = "Debugger";
|
||||
debuggerToolStripMenuItem.Click += openDebuggerToolStripMenuItem_Click;
|
||||
//
|
||||
// machineToolStripMenuItem
|
||||
//
|
||||
machineToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { runToolStripMenuItem, resetToolStripMenuItem, stepToolStripMenuItem, resetToolStripMenuItem1 });
|
||||
machineToolStripMenuItem.Name = "machineToolStripMenuItem";
|
||||
machineToolStripMenuItem.Size = new Size(79, 24);
|
||||
machineToolStripMenuItem.Text = "Machine";
|
||||
//
|
||||
// runToolStripMenuItem
|
||||
//
|
||||
runToolStripMenuItem.Name = "runToolStripMenuItem";
|
||||
runToolStripMenuItem.Size = new Size(224, 26);
|
||||
runToolStripMenuItem.Text = "Run";
|
||||
runToolStripMenuItem.Click += btnRun_Click;
|
||||
//
|
||||
// resetToolStripMenuItem
|
||||
//
|
||||
resetToolStripMenuItem.Name = "resetToolStripMenuItem";
|
||||
resetToolStripMenuItem.Size = new Size(224, 26);
|
||||
resetToolStripMenuItem.Text = "Pause";
|
||||
resetToolStripMenuItem.Click += btnPause_Click;
|
||||
//
|
||||
// stepToolStripMenuItem
|
||||
//
|
||||
stepToolStripMenuItem.Name = "stepToolStripMenuItem";
|
||||
stepToolStripMenuItem.Size = new Size(224, 26);
|
||||
stepToolStripMenuItem.Text = "Step";
|
||||
stepToolStripMenuItem.Click += btnStep_Click;
|
||||
//
|
||||
// resetToolStripMenuItem1
|
||||
//
|
||||
resetToolStripMenuItem1.Name = "resetToolStripMenuItem1";
|
||||
resetToolStripMenuItem1.Size = new Size(224, 26);
|
||||
resetToolStripMenuItem1.Text = "Reset";
|
||||
resetToolStripMenuItem1.Click += btnReset_Click;
|
||||
//
|
||||
// optionsToolStripMenuItem
|
||||
//
|
||||
optionsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { HighSpeedToolStripMenuItem });
|
||||
@@ -178,12 +186,12 @@
|
||||
HighSpeedToolStripMenuItem.Text = "High Speed";
|
||||
HighSpeedToolStripMenuItem.Click += btnHighSpeedToggle_Click;
|
||||
//
|
||||
// saveSnapshotToolStripMenuItem
|
||||
// playTapeToolStripMenuItem
|
||||
//
|
||||
saveSnapshotToolStripMenuItem.Name = "saveSnapshotToolStripMenuItem";
|
||||
saveSnapshotToolStripMenuItem.Size = new Size(224, 26);
|
||||
saveSnapshotToolStripMenuItem.Text = "Save Snapshot";
|
||||
saveSnapshotToolStripMenuItem.Click += SaveSNAMenuItem_Click;
|
||||
playTapeToolStripMenuItem.Name = "playTapeToolStripMenuItem";
|
||||
playTapeToolStripMenuItem.Size = new Size(85, 24);
|
||||
playTapeToolStripMenuItem.Text = "Play Tape";
|
||||
playTapeToolStripMenuItem.Click += playTapeToolStripMenuItem_Click;
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
@@ -221,5 +229,6 @@
|
||||
private ToolStripMenuItem tAPToolStripMenuItem1;
|
||||
private ToolStripMenuItem sNAToolStripMenuItem1;
|
||||
private ToolStripMenuItem saveSnapshotToolStripMenuItem;
|
||||
private ToolStripMenuItem playTapeToolStripMenuItem;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,10 +118,10 @@ namespace Desktop
|
||||
long tStatesBefore = _cpu.TotalTStates;
|
||||
|
||||
// --- HARDWARE INTERCEPTS ---
|
||||
if (_cpu.PC == 0x0556 && _tapManager.HasBlocks)
|
||||
if ((_cpu.PC == 0x0556 || _cpu.PC == 0x0558) && _tapManager.HasBlocks)
|
||||
{
|
||||
HandleInstantTapeLoad();
|
||||
_cpu.TotalTStates += 100; // Charge some arbitrary time for the fast load
|
||||
HandleInstantTapeLoad();
|
||||
_cpu.TotalTStates += 100; // Charge some arbitrary time for the fast load
|
||||
}
|
||||
|
||||
// --- Execute Instruction ---
|
||||
@@ -130,7 +130,7 @@ namespace Desktop
|
||||
int elapsedTStates = (int)(_cpu.TotalTStates - tStatesBefore);
|
||||
_tapManager.Update(elapsedTStates);
|
||||
|
||||
if(highSpeed)
|
||||
if (highSpeed)
|
||||
{
|
||||
wasHighSpeed = true;
|
||||
}
|
||||
@@ -186,7 +186,7 @@ namespace Desktop
|
||||
this.Text = $"{_baseTitle} - FPS: {FramesPerSecond:F1} - Tape Loaded: {tapeLoaded.ToString()}";
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -219,7 +219,7 @@ namespace Desktop
|
||||
FrameTime = TotalFrameTime / 50.0;
|
||||
TotalFrameTime = 0;
|
||||
}
|
||||
|
||||
|
||||
fpsStopwatch.Restart();
|
||||
}
|
||||
}
|
||||
@@ -231,7 +231,7 @@ namespace Desktop
|
||||
this.Invoke((System.Windows.Forms.MethodInvoker)delegate
|
||||
{
|
||||
MessageBox.Show(ex.Message, "CPU Crash", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -357,6 +357,7 @@ namespace Desktop
|
||||
// Feed it directly to your existing TapManager!
|
||||
_tapManager.LoadTapData(tapBytes);
|
||||
tapeLoaded = true;
|
||||
_tapManager.Play();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -487,12 +488,13 @@ namespace Desktop
|
||||
byte[] tapBytes = File.ReadAllBytes(ofd.FileName);
|
||||
_tapManager.LoadTapData(tapBytes);
|
||||
tapeLoaded = true;
|
||||
_tapManager.Play();
|
||||
}
|
||||
}
|
||||
_isPaused = false;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void openSNAToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
_isPaused = true;
|
||||
@@ -544,7 +546,7 @@ namespace Desktop
|
||||
_debugger.BringToFront();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void UpdateMatrix(int row, int col, bool isPressed)
|
||||
{
|
||||
if (isPressed)
|
||||
@@ -559,14 +561,14 @@ namespace Desktop
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void OnKeyDown(KeyEventArgs e)
|
||||
{
|
||||
HandleKey(e.KeyCode, true);
|
||||
base.OnKeyDown(e);
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected override void OnKeyUp(KeyEventArgs e)
|
||||
{
|
||||
HandleKey(e.KeyCode, false);
|
||||
@@ -634,5 +636,20 @@ namespace Desktop
|
||||
case Keys.B: UpdateMatrix(7, 4, isPressed); break;
|
||||
}
|
||||
}
|
||||
|
||||
private void playTapeToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (playTapeToolStripMenuItem.Text == "Play Tape")
|
||||
{
|
||||
playTapeToolStripMenuItem.Text = "Stop Tape";
|
||||
_tapManager.Play();
|
||||
}
|
||||
else
|
||||
{
|
||||
playTapeToolStripMenuItem.Text = "Play Tape";
|
||||
_tapManager.Stop();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
Desktop/ROMS/Snapshot/Dizzy - Trasure Island.sna
Normal file
BIN
Desktop/ROMS/Snapshot/Dizzy - Trasure Island.sna
Normal file
Binary file not shown.
Reference in New Issue
Block a user