From 778f03b55c973e7cb670ae0e190d16285fff2819 Mon Sep 17 00:00:00 2001 From: Marc Parsons Date: Fri, 8 May 2026 22:51:30 +0100 Subject: [PATCH] Added Golden Axe Warrior. Added Debugger. --- Core/Core.csproj | 1 - Core/Cpu/Z80.cs | 4 +- Core/Interfaces/IIoBus.cs | 4 +- Core/Io/SmsIoBus.cs | 62 ++ Core/SmsMachine.cs | 61 ++ Desktop/DebuggerForm.Designer.cs | 414 ++++++++ Desktop/DebuggerForm.cs | 1346 +++++++++++++++++++++++++++ Desktop/DebuggerForm.resx | 123 +++ Desktop/Desktop.csproj | 14 +- Desktop/Form1.Designer.cs | 29 +- Desktop/Form1.cs | 40 + Desktop/Form1.resx | 54 +- Desktop/ROMS/Golden Axe Warrior.sms | Bin 0 -> 262144 bytes 13 files changed, 2114 insertions(+), 38 deletions(-) create mode 100644 Core/Io/SmsIoBus.cs create mode 100644 Core/SmsMachine.cs create mode 100644 Desktop/DebuggerForm.Designer.cs create mode 100644 Desktop/DebuggerForm.cs create mode 100644 Desktop/DebuggerForm.resx create mode 100644 Desktop/ROMS/Golden Axe Warrior.sms diff --git a/Core/Core.csproj b/Core/Core.csproj index 6886036..5ca139d 100644 --- a/Core/Core.csproj +++ b/Core/Core.csproj @@ -9,7 +9,6 @@ - diff --git a/Core/Cpu/Z80.cs b/Core/Cpu/Z80.cs index 8ff61be..9c20215 100644 --- a/Core/Cpu/Z80.cs +++ b/Core/Cpu/Z80.cs @@ -53,12 +53,12 @@ namespace Core.Cpu // The Memory Bus private readonly IMemory _memory; - private readonly IO_Bus _simpleIoBus; + private readonly IIoBus _simpleIoBus; //External Timing interface public Func? WaitStateCallback { get; set; } - public Z80(IMemory memory, IO_Bus ioBus) + public Z80(IMemory memory, IIoBus ioBus) { _memory = memory; _simpleIoBus = ioBus; diff --git a/Core/Interfaces/IIoBus.cs b/Core/Interfaces/IIoBus.cs index c28821e..ebf3894 100644 --- a/Core/Interfaces/IIoBus.cs +++ b/Core/Interfaces/IIoBus.cs @@ -2,7 +2,7 @@ { public interface IIoBus { - byte Read(ushort port); - void Write(ushort port, byte value); + byte ReadPort(ushort port); + void WritePort(ushort port, byte value); } } diff --git a/Core/Io/SmsIoBus.cs b/Core/Io/SmsIoBus.cs new file mode 100644 index 0000000..8a88fcc --- /dev/null +++ b/Core/Io/SmsIoBus.cs @@ -0,0 +1,62 @@ +using Core.Interfaces; + +namespace Core.Io +{ + public class SmsIoBus : IIoBus + { + // We will wire these up in the next phases! + // public Vdp VideoProcessor { get; set; } + // public Psg AudioProcessor { get; set; } + + // Joypad State (0xFF means no buttons pressed - the SMS uses Active-Low logic!) + public byte Joypad1State { get; set; } = 0xFF; + public byte Joypad2State { get; set; } = 0xFF; + + public byte ReadPort(ushort port) + { + // The Z80 can output 16-bit port addresses, but the Master System + // hardware only physically wires up the bottom 8 bits. + byte lowerPort = (byte)(port & 0xFF); + + if (lowerPort >= 0x80 && lowerPort <= 0xBF) + { + // VDP Read (Usually 0xBE for VRAM Data, 0xBF for Status Flags) + // return VideoProcessor.ReadPort(lowerPort); + return 0x00; + } + if (lowerPort == 0xDC) + { + // Port 0xDC: Player 1 (Up, Down, Left, Right, 1, 2) + Player 2 (Up, Down) + return Joypad1State; + } + if (lowerPort == 0xDD) + { + // Port 0xDD: Player 2 (Left, Right, 1, 2) + Reset Button + return Joypad2State; + } + + return 0xFF; // Floating bus + } + + public void WritePort(ushort port, byte value) + { + byte lowerPort = (byte)(port & 0xFF); + + if (lowerPort >= 0x40 && lowerPort <= 0x7F) + { + // PSG Audio Write (Usually written exactly to 0x7F) + // AudioProcessor.WriteData(value); + } + else if (lowerPort >= 0x80 && lowerPort <= 0xBF) + { + // VDP Write (Usually 0xBE for VRAM Data, 0xBF for Control Registers) + // VideoProcessor.WritePort(lowerPort, value); + } + else if (lowerPort <= 0x3F) + { + // Port 0x3E is used by the BIOS to enable/disable the cartridge slot + // We can usually ignore this if we are just directly booting game ROMs! + } + } + } +} \ No newline at end of file diff --git a/Core/SmsMachine.cs b/Core/SmsMachine.cs new file mode 100644 index 0000000..f4b56bb --- /dev/null +++ b/Core/SmsMachine.cs @@ -0,0 +1,61 @@ +using Core.Cpu; +using Core.Io; +using Core.Memory; + +namespace Core +{ + public class SmsMachine + { + public Z80 Cpu { get; private set; } + public SmsMemoryBus MemoryBus { get; private set; } + public SmsIoBus IoBus { get; private set; } + public ushort? Breakpoint { get; set; } = null; + + // NTSC SMS T-States per frame + public const int TStatesPerFrame = 59736; + public long TotalFrameCount { get; private set; } = 0; + public double FramesPerSecond { get; private set; } = 0; + public double FrameTime { get; private set; } = 0; + + public SmsMachine() + { + MemoryBus = new SmsMemoryBus(); + IoBus = new SmsIoBus(); + Cpu = new Z80(MemoryBus, IoBus); + } + + public void LoadCartridge(byte[] romData) + { + MemoryBus.LoadCartridge(romData); + Reset(); + } + + public void Reset() + { + MemoryBus.CleanRAMData(); + Cpu.Reset(); + + // We will reset the VDP and PSG here later! + } + + public void RunFrame() + { + long currentFrameTStates = 0; + + while (currentFrameTStates < TStatesPerFrame) + { + int tStates = Cpu.Step(); + currentFrameTStates += tStates; + + // --- FUTURE EXPANSION --- + // VideoProcessor.Update(tStates); + // AudioProcessor.Update(tStates); + + // if (VideoProcessor.IsVBlanking && VideoProcessor.InterruptsEnabled) + // { + // Cpu.RequestInterrupt(); + // } + } + } + } +} \ No newline at end of file diff --git a/Desktop/DebuggerForm.Designer.cs b/Desktop/DebuggerForm.Designer.cs new file mode 100644 index 0000000..1a8b7d6 --- /dev/null +++ b/Desktop/DebuggerForm.Designer.cs @@ -0,0 +1,414 @@ +namespace Desktop +{ + partial class DebuggerForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + lblAF = new Label(); + lblBC = new Label(); + lblDE = new Label(); + lblHL = new Label(); + lblPC = new Label(); + lblSP = new Label(); + lblFlags = new Label(); + lblTStates = new Label(); + txtMemoryStart = new TextBox(); + btnRefreshMemory = new Button(); + txtMemoryView = new RichTextBox(); + lstDisassembly = new ListBox(); + lstStack = new ListBox(); + label1 = new Label(); + txtBreakpoint = new TextBox(); + label2 = new Label(); + lblIX = new Label(); + lblIY = new Label(); + lblIff1 = new Label(); + lblIff2 = new Label(); + lblIE = new Label(); + btnReset = new Button(); + uiUpdateTimer = new System.Windows.Forms.Timer(components); + lblFrames = new Label(); + lblFPS = new Label(); + lblFrameTime = new Label(); + richTextBox1 = new RichTextBox(); + button1 = new Button(); + button2 = new Button(); + SuspendLayout(); + // + // lblAF + // + lblAF.AutoSize = true; + lblAF.Location = new Point(10, 7); + lblAF.Margin = new Padding(2, 0, 2, 0); + lblAF.Name = "lblAF"; + lblAF.Size = new Size(26, 20); + lblAF.TabIndex = 0; + lblAF.Text = "AF"; + // + // lblBC + // + lblBC.AutoSize = true; + lblBC.Location = new Point(9, 48); + lblBC.Margin = new Padding(2, 0, 2, 0); + lblBC.Name = "lblBC"; + lblBC.Size = new Size(27, 20); + lblBC.TabIndex = 1; + lblBC.Text = "BC"; + // + // lblDE + // + lblDE.AutoSize = true; + lblDE.Location = new Point(10, 100); + lblDE.Margin = new Padding(2, 0, 2, 0); + lblDE.Name = "lblDE"; + lblDE.Size = new Size(28, 20); + lblDE.TabIndex = 2; + lblDE.Text = "DE"; + // + // lblHL + // + lblHL.AutoSize = true; + lblHL.Location = new Point(10, 150); + lblHL.Margin = new Padding(2, 0, 2, 0); + lblHL.Name = "lblHL"; + lblHL.Size = new Size(27, 20); + lblHL.TabIndex = 3; + lblHL.Text = "HL"; + // + // lblPC + // + lblPC.AutoSize = true; + lblPC.Location = new Point(9, 200); + lblPC.Margin = new Padding(2, 0, 2, 0); + lblPC.Name = "lblPC"; + lblPC.Size = new Size(26, 20); + lblPC.TabIndex = 4; + lblPC.Text = "PC"; + // + // lblSP + // + lblSP.AutoSize = true; + lblSP.Location = new Point(9, 252); + lblSP.Margin = new Padding(2, 0, 2, 0); + lblSP.Name = "lblSP"; + lblSP.Size = new Size(25, 20); + lblSP.TabIndex = 6; + lblSP.Text = "SP"; + // + // lblFlags + // + lblFlags.AutoSize = true; + lblFlags.Location = new Point(88, 52); + lblFlags.Margin = new Padding(2, 0, 2, 0); + lblFlags.Name = "lblFlags"; + lblFlags.Size = new Size(43, 20); + lblFlags.TabIndex = 7; + lblFlags.Text = "Flags"; + // + // lblTStates + // + lblTStates.AutoSize = true; + lblTStates.Location = new Point(88, 7); + lblTStates.Margin = new Padding(2, 0, 2, 0); + lblTStates.Name = "lblTStates"; + lblTStates.Size = new Size(63, 20); + lblTStates.TabIndex = 8; + lblTStates.Text = "T-States"; + // + // txtMemoryStart + // + txtMemoryStart.Location = new Point(300, 21); + txtMemoryStart.Margin = new Padding(2); + txtMemoryStart.Name = "txtMemoryStart"; + txtMemoryStart.Size = new Size(121, 27); + txtMemoryStart.TabIndex = 9; + txtMemoryStart.Text = "Memory Start"; + txtMemoryStart.TextAlign = HorizontalAlignment.Center; + txtMemoryStart.TextChanged += btnRefreshMemory_Click; + // + // btnRefreshMemory + // + btnRefreshMemory.Location = new Point(425, 21); + btnRefreshMemory.Margin = new Padding(2); + btnRefreshMemory.Name = "btnRefreshMemory"; + btnRefreshMemory.Size = new Size(90, 27); + btnRefreshMemory.TabIndex = 14; + btnRefreshMemory.Text = "Refresh Memory"; + btnRefreshMemory.UseVisualStyleBackColor = true; + btnRefreshMemory.Click += btnRefreshMemory_Click; + // + // txtMemoryView + // + txtMemoryView.Location = new Point(88, 80); + txtMemoryView.Margin = new Padding(2); + txtMemoryView.Name = "txtMemoryView"; + txtMemoryView.Size = new Size(443, 895); + txtMemoryView.TabIndex = 15; + txtMemoryView.Text = "Memory View Window"; + // + // lstDisassembly + // + lstDisassembly.FormattingEnabled = true; + lstDisassembly.Location = new Point(567, 8); + lstDisassembly.Margin = new Padding(2); + lstDisassembly.Name = "lstDisassembly"; + lstDisassembly.Size = new Size(252, 264); + lstDisassembly.TabIndex = 16; + // + // lstStack + // + lstStack.FormattingEnabled = true; + lstStack.Location = new Point(823, 8); + lstStack.Margin = new Padding(2); + lstStack.Name = "lstStack"; + lstStack.Size = new Size(130, 264); + lstStack.TabIndex = 17; + // + // label1 + // + label1.AutoSize = true; + label1.Location = new Point(568, 298); + label1.Name = "label1"; + label1.Size = new Size(81, 20); + label1.TabIndex = 19; + label1.Text = "Breakpoint"; + // + // txtBreakpoint + // + txtBreakpoint.Location = new Point(655, 295); + txtBreakpoint.Name = "txtBreakpoint"; + txtBreakpoint.Size = new Size(125, 27); + txtBreakpoint.TabIndex = 20; + // + // label2 + // + label2.AutoSize = true; + label2.Location = new Point(233, 21); + label2.Name = "label2"; + label2.Size = new Size(62, 20); + label2.TabIndex = 21; + label2.Text = "Address"; + // + // lblIX + // + lblIX.AutoSize = true; + lblIX.Location = new Point(9, 298); + lblIX.Margin = new Padding(2, 0, 2, 0); + lblIX.Name = "lblIX"; + lblIX.Size = new Size(22, 20); + lblIX.TabIndex = 22; + lblIX.Text = "IX"; + // + // lblIY + // + lblIY.AutoSize = true; + lblIY.Location = new Point(10, 344); + lblIY.Margin = new Padding(2, 0, 2, 0); + lblIY.Name = "lblIY"; + lblIY.Size = new Size(21, 20); + lblIY.TabIndex = 23; + lblIY.Text = "IY"; + // + // lblIff1 + // + lblIff1.AutoSize = true; + lblIff1.Location = new Point(567, 411); + lblIff1.Name = "lblIff1"; + lblIff1.Size = new Size(35, 20); + lblIff1.TabIndex = 24; + lblIff1.Text = "IFF1"; + // + // lblIff2 + // + lblIff2.AutoSize = true; + lblIff2.Location = new Point(567, 458); + lblIff2.Name = "lblIff2"; + lblIff2.Size = new Size(35, 20); + lblIff2.TabIndex = 25; + lblIff2.Text = "IFF2"; + // + // lblIE + // + lblIE.AutoSize = true; + lblIE.Location = new Point(568, 370); + lblIE.Name = "lblIE"; + lblIE.Size = new Size(109, 20); + lblIE.TabIndex = 26; + lblIE.Text = "Interrupt Mode"; + // + // btnReset + // + btnReset.Location = new Point(651, 327); + btnReset.Margin = new Padding(2); + btnReset.Name = "btnReset"; + btnReset.Size = new Size(132, 27); + btnReset.TabIndex = 27; + btnReset.Text = "Set Breakpoint"; + btnReset.UseVisualStyleBackColor = true; + btnReset.Click += btnSetBreakpoint_Click; + // + // uiUpdateTimer + // + uiUpdateTimer.Enabled = true; + uiUpdateTimer.Interval = 1; + uiUpdateTimer.Tick += uiUpdateTimer_Tick; + // + // lblFrames + // + lblFrames.AutoSize = true; + lblFrames.Location = new Point(567, 682); + lblFrames.Margin = new Padding(2, 0, 2, 0); + lblFrames.Name = "lblFrames"; + lblFrames.Size = new Size(124, 20); + lblFrames.TabIndex = 28; + lblFrames.Text = "Frames Rendered"; + // + // lblFPS + // + lblFPS.AutoSize = true; + lblFPS.Location = new Point(659, 759); + lblFPS.Margin = new Padding(2, 0, 2, 0); + lblFPS.Name = "lblFPS"; + lblFPS.Size = new Size(32, 20); + lblFPS.TabIndex = 29; + lblFPS.Text = "FPS"; + // + // lblFrameTime + // + lblFrameTime.AutoSize = true; + lblFrameTime.Location = new Point(604, 718); + lblFrameTime.Margin = new Padding(2, 0, 2, 0); + lblFrameTime.Name = "lblFrameTime"; + lblFrameTime.Size = new Size(87, 20); + lblFrameTime.TabIndex = 30; + lblFrameTime.Text = "Frame Time"; + // + // richTextBox1 + // + richTextBox1.Enabled = false; + richTextBox1.Location = new Point(567, 509); + richTextBox1.Name = "richTextBox1"; + richTextBox1.ReadOnly = true; + richTextBox1.Size = new Size(304, 128); + richTextBox1.TabIndex = 32; + richTextBox1.Text = "Sega Master System Memory Map:\n0x0000 - 0x3FFF: ROM Slot 0 (16KB)\n0x4000 - 0x7FFF: ROM Slot 1 (16KB)\n0x8000 - 0xBFFF: ROM Slot 2 (16KB)\n0xC000 - 0xDFFF: System RAM (8KB)\n0xE000 - 0xFFFF: RAM Mirror"; + // + // button1 + // + button1.Location = new Point(555, 824); + button1.Name = "button1"; + button1.Size = new Size(94, 29); + button1.TabIndex = 33; + button1.Text = "CPU Step"; + button1.UseVisualStyleBackColor = true; + button1.Click += btnStep_Click; + // + // button2 + // + button2.Location = new Point(555, 883); + button2.Name = "button2"; + button2.Size = new Size(94, 29); + button2.TabIndex = 34; + button2.Text = "CPU Run"; + button2.UseVisualStyleBackColor = true; + button2.Click += btnStep_Click; + // + // DebuggerForm + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(965, 990); + Controls.Add(button2); + Controls.Add(button1); + Controls.Add(richTextBox1); + Controls.Add(lblFrameTime); + Controls.Add(lblFPS); + Controls.Add(lblFrames); + Controls.Add(btnReset); + Controls.Add(lblIE); + Controls.Add(lblIff2); + Controls.Add(lblIff1); + Controls.Add(lblIY); + Controls.Add(lblIX); + Controls.Add(label2); + Controls.Add(txtBreakpoint); + Controls.Add(label1); + Controls.Add(lstStack); + Controls.Add(lstDisassembly); + Controls.Add(txtMemoryView); + Controls.Add(btnRefreshMemory); + Controls.Add(txtMemoryStart); + Controls.Add(lblTStates); + Controls.Add(lblFlags); + Controls.Add(lblSP); + Controls.Add(lblPC); + Controls.Add(lblHL); + Controls.Add(lblDE); + Controls.Add(lblBC); + Controls.Add(lblAF); + Margin = new Padding(2); + Name = "DebuggerForm"; + Text = "Debugger"; + ResumeLayout(false); + PerformLayout(); + } + + #endregion + + private Label lblAF; + private Label lblBC; + private Label lblDE; + private Label lblHL; + private Label lblPC; + private Label lblSP; + private Label lblFlags; + private Label lblTStates; + private TextBox txtMemoryStart; + private Button btnRefreshMemory; + private RichTextBox txtMemoryView; + private ListBox lstStack; + public ListBox lstDisassembly; + private Label label1; + private TextBox txtBreakpoint; + private Label label2; + private Label lblIX; + private Label lblIY; + private Label lblIff1; + private Label lblIff2; + private Label lblIE; + private Button btnReset; + private System.Windows.Forms.Timer uiUpdateTimer; + private Label lblFrames; + private Label lblFPS; + private Label lblFrameTime; + private RichTextBox richTextBox1; + private Button button1; + private Button button2; + //private TextBox textBox4; + } +} \ No newline at end of file diff --git a/Desktop/DebuggerForm.cs b/Desktop/DebuggerForm.cs new file mode 100644 index 0000000..76a0482 --- /dev/null +++ b/Desktop/DebuggerForm.cs @@ -0,0 +1,1346 @@ +using System; +using System.Text; +using System.Windows.Forms; +using Core.Cpu; +using Core.Memory; + +namespace Desktop +{ + public partial class DebuggerForm : Form + { + private readonly Z80 _cpu; + private readonly SmsMemoryBus _memoryBus; + private readonly Form1 _mainForm; + + public DebuggerForm(Z80 cpu, SmsMemoryBus memoryBus, Form1 mainForm) + { + InitializeComponent(); + _cpu = cpu; + _memoryBus = memoryBus; + _mainForm = mainForm; + + // Set default memory view address + txtMemoryStart.Text = "0000"; + UpdateDisplay(); + UpdateStackView(); + UpdateDisassemblyView(); + _mainForm = mainForm; + } + + private void btnStep_Click(object sender, EventArgs e) + { + try + { + _cpu.Step(); + UpdateDisplay(); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "CPU Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void btnSetBreakpoint_Click(object sender, EventArgs e) // Hook this to a button or text changed event + { + if (ushort.TryParse(txtBreakpoint.Text, System.Globalization.NumberStyles.HexNumber, null, out ushort parsedBp)) + { + _mainForm.Breakpoint = parsedBp; + } + else + { + _mainForm.Breakpoint = null; + } + } + + private void btnRefreshMemory_Click(object sender, EventArgs e) + { + UpdateDisplay(); + } + + private void uiUpdateTimer_Tick(object sender, EventArgs e) + { + UpdateDisplay(); + } + + // Current Emulator State + private void UpdateDisplay() + { + lblAF.Text = $"AF: {_cpu.AF.Word:X4}"; + lblBC.Text = $"BC: {_cpu.BC.Word:X4}"; + lblDE.Text = $"DE: {_cpu.DE.Word:X4}"; + lblHL.Text = $"HL: {_cpu.HL.Word:X4}"; + lblPC.Text = $"PC: {_cpu.PC:X4}"; + lblSP.Text = $"SP: {_cpu.SP:X4}"; + lblIX.Text = $"IX: {_cpu.IX.Word:X4}"; + lblIY.Text = $"IY: {_cpu.IY.Word:X4}"; + lblIff1.Text = $"IFF1: {_cpu.IFF1}"; + lblIff2.Text = $"IFF2: {_cpu.IFF2}"; + lblIE.Text = $"Interrupt Mode: {_cpu.InterruptMode}"; + lblFlags.Text = $"Flags: {_cpu.GetFlagsString()}"; + lblTStates.Text = $"T-States: {_cpu.TotalTStates}"; + //lblFrames.Text = $"Frames Rendered: {_mainForm.TotalFrameCount}"; + //lblFrameTime.Text = $"Frame Time: {((float)_mainForm.FrameTime):F1}ms"; + //lblFPS.Text = $"FPS: {_mainForm.FramesPerSecond:F2}"; + UpdateMemoryView(); + UpdateStackView(); + UpdateDisassemblyView(); + } + + private void UpdateMemoryView() + { + int count = 40; + // Try to parse the hex string the user typed in + if (!ushort.TryParse(txtMemoryStart.Text, System.Globalization.NumberStyles.HexNumber, null, out ushort startAddress)) + { + txtMemoryView.Text = "Invalid Hex Address!"; + return; + } + + StringBuilder sb = new StringBuilder(); + + // Read 100 bytes (or roughly 6 lines of 16 bytes) + for (int line = 0; line < count; line++) + { + ushort currentAddr = (ushort)(startAddress + (line * 16)); + + // Print the address header for this line (e.g., "0000: ") + sb.Append($"{currentAddr:X4}: "); + + // Print 16 bytes across + for (int i = 0; i < 16; i++) + { + // Careful not to overflow the 64k address space! + if (currentAddr + i <= 0xFFFF) + { + byte b = _memoryBus.Read((ushort)(currentAddr + i)); + sb.Append($"{b:X2} "); + } + } + sb.AppendLine(); + } + + txtMemoryView.Text = sb.ToString(); + } + + private void UpdateStackView() + { + lstStack.Items.Clear(); + int itemsToShow = 5; + ushort currentSp = _cpu.SP; + + for (int i = 0; i < itemsToShow; i++) + { + // Prevent reading past 0xFFFF + if (currentSp >= 0xFFFE) + { + lstStack.Items.Add($"{currentSp:X4}: [End of Mem]"); + break; + } + + // Read the 16-bit value (Little-Endian: Low byte first, then High byte) + byte low = _memoryBus.Read(currentSp); + byte high = _memoryBus.Read((ushort)(currentSp + 1)); + ushort value = (ushort)((high << 8) | low); + + lstStack.Items.Add($"{currentSp:X4}: {value:X4}"); + + // Move to the next 16-bit word on the stack + currentSp += 2; + } + } + + private void UpdateDisassemblyView() + { + lstDisassembly.Items.Clear(); + + ushort currentPc = _cpu.PC; + + int instructionsToShow = 8; + + for (int i = 0; i < instructionsToShow; i++) + { + byte opcode = _memoryBus.Read(currentPc); + string mnemonic; + int instructionLength = 1; // Default to 1 + byte cbOp = 0; + int opGroup = 0; + int targetBit = 0; + int regIdx = 0; + string[] regNames = { "B", "C", "D", "E", "H", "L", "(HL)", "A" }; + string targetReg = ""; + + switch (opcode) + { + case 0x00: mnemonic = "NOP"; break; + case 0x01: + ushort bcVal = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + mnemonic = $"LD BC, 0x{bcVal:X4}"; + instructionLength = 3; + break; + case 0x02: mnemonic = "LD (BC), A"; break; + // --- 16-Bit Increments --- + case 0x03: mnemonic = "INC BC"; break; + case 0x08: + mnemonic = "EX AF, AF'"; + break; + case 0x0A: mnemonic = "LD A, (BC)"; break; + case 0x12: mnemonic = "LD (DE), A"; break; + case 0x13: mnemonic = "INC DE"; break; + case 0x33: mnemonic = "INC SP"; break; + + // --- 16-Bit Decrements --- + case 0x0B: mnemonic = "DEC BC"; break; + case 0x3B: mnemonic = "DEC SP"; break; + // --- 8-Bit Increments --- + case 0x04: mnemonic = "INC B"; break; + case 0x0C: mnemonic = "INC C"; break; + case 0x14: mnemonic = "INC D"; break; + case 0x1C: mnemonic = "INC E"; break; + case 0x24: mnemonic = "INC H"; break; + case 0x2C: mnemonic = "INC L"; break; + case 0x34: mnemonic = "INC (HL)"; break; + case 0x3C: mnemonic = "INC A"; break; + + // --- 8-Bit Decrements --- + case 0x05: mnemonic = "DEC B"; break; + case 0x0D: mnemonic = "DEC C"; break; + case 0x15: mnemonic = "DEC D"; break; + case 0x1D: mnemonic = "DEC E"; break; + case 0x25: mnemonic = "DEC H"; break; + case 0x2D: mnemonic = "DEC L"; break; + case 0x35: mnemonic = "DEC (HL)"; break; + case 0x3D: mnemonic = "DEC A"; break; + case 0x06: + byte bImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"LD B, 0x{bImm:X2}"; + instructionLength = 2; + break; + // --- ADD HL, rr --- + case 0x09: mnemonic = "ADD HL, BC"; break; + case 0x19: mnemonic = "ADD HL, DE"; break; + case 0x29: mnemonic = "ADD HL, HL"; break; + case 0x39: mnemonic = "ADD HL, SP"; break; + case 0x0E: + byte cImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"LD C, 0x{cImm:X2}"; + instructionLength = 2; + break; + case 0x0F: + mnemonic = "RRCA"; + break; + case 0x10: + sbyte djnzOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1)); + ushort djnzDest = (ushort)(currentPc + 2 + djnzOffset); + mnemonic = $"DJNZ 0x{djnzDest:X4}"; + instructionLength = 2; + break; + case 0x11: + // LD DE, nn + byte deLow = _memoryBus.Read((ushort)(currentPc + 1)); + byte deHigh = _memoryBus.Read((ushort)(currentPc + 2)); + mnemonic = $"LD DE, 0x{deHigh:X2}{deLow:X2}"; + instructionLength = 3; + break; + case 0x16: + byte dImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"LD D, 0x{dImm:X2}"; + instructionLength = 2; + break; + case 0x17: // RLA + mnemonic = "RLA"; + instructionLength = 1; + break; + case 0x18: + sbyte dUnconditional = (sbyte)_memoryBus.Read((ushort)(currentPc + 1)); + ushort targetAddressUnconditional = (ushort)(currentPc + 2 + dUnconditional); + mnemonic = $"JR 0x{targetAddressUnconditional:X4}"; + instructionLength = 2; + break; + case 0x1A: + mnemonic = "LD A, (DE)"; + break; + case 0x1B: + mnemonic = "DEC DE"; + break; + case 0x1E: + byte val1E = _memoryBus.Read((ushort)(currentPc + 1)); + 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); + mnemonic = $"JR NZ, 0x{destination:X4}"; + instructionLength = 2; + break; + case 0x21: + { + ushort hlImm = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + mnemonic = $"LD HL, 0x{hlImm:X4}"; + instructionLength = 3; + break; + } + case 0x22: + ushort hlAddr = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + mnemonic = $"LD (0x{hlAddr:X4}), HL"; + instructionLength = 3; + break; + case 0x23: + mnemonic = "INC HL"; + break; + case 0x26: + byte hImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"LD H, 0x{hImm:X2}"; + instructionLength = 2; + break; + case 0x27: // DAA + mnemonic = "DAA"; + instructionLength = 1; + break; + case 0x28: + sbyte jrZOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1)); + ushort jrZDest = (ushort)(currentPc + 2 + jrZOffset); + mnemonic = $"JR Z, 0x{jrZDest:X4}"; + instructionLength = 2; + break; + case 0x2A: + { + ushort addr2A = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + mnemonic = $"LD HL, (0x{addr2A:X4})"; + instructionLength = 3; + break; + } + case 0x2B: + mnemonic = "DEC HL"; + break; + case 0x2E: + byte lImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"LD L, 0x{lImm:X2}"; + instructionLength = 2; + break; + case 0x2F: + mnemonic = "CPL"; + break; + case 0x30: + sbyte jrNcOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1)); + ushort dest = (ushort)(currentPc + 2 + jrNcOffset); + mnemonic = $"JR NC, 0x{dest:X4}"; + instructionLength = 2; + break; + case 0x31: + mnemonic = "LD SP, nn"; + instructionLength = 3; + break; + case 0x32: + { + ushort addr32 = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + mnemonic = $"LD (0x{addr32:X4}), A"; + instructionLength = 3; + break; + } + case 0x36: + byte memValue = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"LD (HL), 0x{memValue:X2}"; + instructionLength = 2; + break; + case 0x37: + mnemonic = "SCF"; + break; + case 0x38: + sbyte dC = (sbyte)_memoryBus.Read((ushort)(currentPc + 1)); + ushort targetC = (ushort)(currentPc + 2 + dC); + + mnemonic = $"JR C, 0x{targetC:X4}"; + instructionLength = 2; + break; + case 0x3A: + ushort addr3A = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + mnemonic = $"LD A, (0x{addr3A:X4})"; + instructionLength = 3; + break; + case 0x3E: + mnemonic = $"LD A, 0x{_memoryBus.Read((ushort)(currentPc + 1)):X2}"; + instructionLength = 2; + break; + case 0x3F: + mnemonic = "CCF"; + break; + // --- LD B, r --- + case 0x40: mnemonic = "LD B, B"; break; + case 0x41: mnemonic = "LD B, C"; break; + case 0x42: mnemonic = "LD B, D"; break; + case 0x43: mnemonic = "LD B, E"; break; + case 0x44: mnemonic = "LD B, H"; break; + case 0x45: mnemonic = "LD B, L"; break; + case 0x46: mnemonic = "LD B, (HL)"; break; + case 0x47: mnemonic = "LD B, A"; break; + + // --- LD C, r --- + case 0x48: mnemonic = "LD C, B"; break; + case 0x49: mnemonic = "LD C, C"; break; + case 0x4A: mnemonic = "LD C, D"; break; + case 0x4B: mnemonic = "LD C, E"; break; + case 0x4C: mnemonic = "LD C, H"; break; + case 0x4D: mnemonic = "LD C, L"; break; + case 0x4E: mnemonic = "LD C, (HL)"; break; + case 0x4F: mnemonic = "LD C, A"; break; + + // --- LD D, r --- + case 0x50: mnemonic = "LD D, B"; break; + case 0x51: mnemonic = "LD D, C"; break; + case 0x52: mnemonic = "LD D, D"; break; + case 0x53: mnemonic = "LD D, E"; break; + case 0x54: mnemonic = "LD D, H"; break; + case 0x55: mnemonic = "LD D, L"; break; + case 0x56: mnemonic = "LD D, (HL)"; break; + case 0x57: mnemonic = "LD D, A"; break; + + // --- LD E, r --- + case 0x58: mnemonic = "LD E, B"; break; + case 0x59: mnemonic = "LD E, C"; break; + case 0x5A: mnemonic = "LD E, D"; break; + case 0x5B: mnemonic = "LD E, E"; break; + case 0x5C: mnemonic = "LD E, H"; break; + case 0x5D: mnemonic = "LD E, L"; break; + case 0x5E: mnemonic = "LD E, (HL)"; break; + case 0x5F: mnemonic = "LD E, A"; break; + + // --- LD H, r --- + case 0x60: mnemonic = "LD H, B"; break; + case 0x61: mnemonic = "LD H, C"; break; + case 0x62: mnemonic = "LD H, D"; break; + case 0x63: mnemonic = "LD H, E"; break; + case 0x64: mnemonic = "LD H, H"; break; + case 0x65: mnemonic = "LD H, L"; break; + case 0x66: mnemonic = "LD H, (HL)"; break; + case 0x67: mnemonic = "LD H, A"; break; + + // --- LD L, r --- + case 0x68: mnemonic = "LD L, B"; break; + case 0x69: mnemonic = "LD L, C"; break; + case 0x6A: mnemonic = "LD L, D"; break; + case 0x6B: mnemonic = "LD L, E"; break; + case 0x6C: mnemonic = "LD L, H"; break; + case 0x6D: mnemonic = "LD L, L"; break; + case 0x6E: mnemonic = "LD L, (HL)"; break; + case 0x6F: mnemonic = "LD L, A"; break; + + // --- LD (HL), r --- (Note: 0x76 is HALT, so it is skipped) + case 0x70: mnemonic = "LD (HL), B"; break; + case 0x71: mnemonic = "LD (HL), C"; break; + case 0x72: mnemonic = "LD (HL), D"; break; + case 0x73: mnemonic = "LD (HL), E"; break; + case 0x74: mnemonic = "LD (HL), H"; break; + case 0x75: mnemonic = "LD (HL), L"; break; + case 0x77: mnemonic = "LD (HL), A"; break; + + // --- LD A, r --- + case 0x78: mnemonic = "LD A, B"; break; + case 0x79: mnemonic = "LD A, C"; break; + case 0x7A: mnemonic = "LD A, D"; break; + case 0x7B: mnemonic = "LD A, E"; break; + case 0x7C: mnemonic = "LD A, H"; break; + case 0x7D: mnemonic = "LD A, L"; break; + case 0x7E: mnemonic = "LD A, (HL)"; break; + case 0x7F: mnemonic = "LD A, A"; break; + + // --- ADD A, r --- + case 0x80: mnemonic = "ADD A, B"; break; + case 0x81: mnemonic = "ADD A, C"; break; + case 0x82: mnemonic = "ADD A, D"; break; + case 0x83: mnemonic = "ADD A, E"; break; + case 0x84: mnemonic = "ADD A, H"; break; + case 0x85: mnemonic = "ADD A, L"; break; + case 0x86: mnemonic = "ADD A, (HL)"; break; + case 0x87: mnemonic = "ADD A, A"; break; + case 0x88: + case 0x89: + case 0x8A: + case 0x8B: + case 0x8C: + case 0x8D: + case 0x8E: + case 0x8F: + string[] registers = { "B", "C", "D", "E", "H", "L", "(HL)", "A" }; + mnemonic = $"ADC A, {registers[opcode - 0x88]}"; + instructionLength = 1; + break; + // --- SUB r --- + case 0x90: mnemonic = "SUB B"; break; + case 0x91: mnemonic = "SUB C"; break; + case 0x92: mnemonic = "SUB D"; break; + case 0x93: mnemonic = "SUB E"; break; + case 0x94: mnemonic = "SUB H"; break; + case 0x95: mnemonic = "SUB L"; break; + case 0x96: mnemonic = "SUB (HL)"; break; + case 0x97: mnemonic = "SUB A"; break; + + // --- SBC A, r --- + case 0x98: mnemonic = "SBC A, B"; break; + case 0x99: mnemonic = "SBC A, C"; break; + case 0x9A: mnemonic = "SBC A, D"; break; + case 0x9B: mnemonic = "SBC A, E"; break; + case 0x9C: mnemonic = "SBC A, H"; break; + case 0x9D: mnemonic = "SBC A, L"; break; + case 0x9E: mnemonic = "SBC A, (HL)"; break; + case 0x9F: mnemonic = "SBC A, A"; break; + + // --- AND r --- + case 0xA0: mnemonic = "AND B"; break; + case 0xA1: mnemonic = "AND C"; break; + case 0xA2: mnemonic = "AND D"; break; + case 0xA3: mnemonic = "AND E"; break; + case 0xA4: mnemonic = "AND H"; break; + case 0xA5: mnemonic = "AND L"; break; + case 0xA6: mnemonic = "AND (HL)"; break; + case 0xA7: mnemonic = "AND A"; break; + + // --- XOR r --- + case 0xA8: mnemonic = "XOR B"; break; + case 0xA9: mnemonic = "XOR C"; break; + case 0xAA: mnemonic = "XOR D"; break; + case 0xAB: mnemonic = "XOR E"; break; + case 0xAC: mnemonic = "XOR H"; break; + case 0xAD: mnemonic = "XOR L"; break; + case 0xAE: mnemonic = "XOR (HL)"; break; + case 0xAF: mnemonic = "XOR A"; break; + + // --- OR r --- + case 0xB0: mnemonic = "OR B"; break; + case 0xB1: mnemonic = "OR C"; break; + case 0xB2: mnemonic = "OR D"; break; + case 0xB3: mnemonic = "OR E"; break; + case 0xB4: mnemonic = "OR H"; break; + case 0xB5: mnemonic = "OR L"; break; + case 0xB6: mnemonic = "OR (HL)"; break; + case 0xB7: mnemonic = "OR A"; break; + + // --- CP r --- + case 0xB8: mnemonic = "CP B"; break; + case 0xB9: mnemonic = "CP C"; break; + case 0xBA: mnemonic = "CP D"; break; + case 0xBB: mnemonic = "CP E"; break; + case 0xBC: mnemonic = "CP H"; break; + case 0xBD: mnemonic = "CP L"; break; + case 0xBE: mnemonic = "CP (HL)"; break; + case 0xBF: mnemonic = "CP A"; break; + case 0xC1: mnemonic = "POP BC"; break; + case 0xC2: + case 0xCA: + case 0xD2: + case 0xDA: + case 0xE2: + case 0xEA: + case 0xF2: + case 0xFA: + { + // Read the 16-bit target address + ushort jumpAddr = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + string condition = ""; + + switch (opcode) + { + case 0xC2: condition = "NZ"; break; + case 0xCA: condition = "Z"; break; + case 0xD2: condition = "NC"; break; + case 0xDA: condition = "C"; break; + case 0xE2: condition = "PO"; break; + case 0xEA: condition = "PE"; break; + case 0xF2: condition = "P"; break; + case 0xFA: condition = "M"; break; + } + + mnemonic = $"JP {condition}, 0x{jumpAddr:X4}"; + instructionLength = 3; + break; + } + // --- Conditional Returns --- + case 0xC0: mnemonic = "RET NZ"; break; + case 0xE0: mnemonic = "RET PO"; break; + case 0xE8: mnemonic = "RET PE"; break; + case 0xF0: mnemonic = "RET P"; break; + case 0xF8: mnemonic = "RET M"; break; + case 0xC3: + // JP nn + byte jpLow = _memoryBus.Read((ushort)(currentPc + 1)); + byte jpHigh = _memoryBus.Read((ushort)(currentPc + 2)); + mnemonic = $"JP 0x{jpHigh:X2}{jpLow:X2}"; + instructionLength = 3; + break; + case 0xC4: + case 0xCC: + case 0xD4: + case 0xDC: + case 0xE4: + case 0xEC: + case 0xF4: + case 0xFC: + { + // Read the 16-bit target address + ushort callAddr = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + string condition = ""; + + switch (opcode) + { + case 0xC4: condition = "NZ"; break; + case 0xCC: condition = "Z"; break; + case 0xD4: condition = "NC"; break; + case 0xDC: condition = "C"; break; + case 0xE4: condition = "PO"; break; + case 0xEC: condition = "PE"; break; + case 0xF4: condition = "P"; break; + case 0xFC: condition = "M"; break; + } + + mnemonic = $"CALL {condition}, 0x{callAddr:X4}"; + instructionLength = 3; + break; + } + case 0xc5: + mnemonic = "PUSH BC"; + break; + case 0xC6: + { + byte addImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"ADD A, 0x{addImm:X2}"; + instructionLength = 2; + break; + } + // --- RST Instructions --- + case 0xC7: mnemonic = "RST 00h"; break; + case 0xCF: mnemonic = "RST 08h"; break; + case 0xD7: mnemonic = "RST 10h"; break; + case 0xDF: mnemonic = "RST 18h"; break; + case 0xE7: mnemonic = "RST 20h"; break; + case 0xEF: mnemonic = "RST 28h"; break; + case 0xF7: mnemonic = "RST 30h"; break; + case 0xFF: mnemonic = "RST 38h"; break; + case 0xC8: + mnemonic = "RET Z"; + break; + case 0xC9: + mnemonic = "RET"; + break; + case 0xCB: + cbOp = _memoryBus.Read((ushort)(currentPc + 1)); + + opGroup = cbOp >> 6; // 00 = Shift, 01 = BIT, 10 = RES, 11 = SET + targetBit = (cbOp >> 3) & 0x07; // Extracts a number 0-7 + regIdx = cbOp & 0x07; // Extracts register index 0-7 + + // Map the 0-7 index directly to the Z80 register names + targetReg = regNames[regIdx]; + + if (opGroup == 0) // Shift/Rotate Group (0x00 to 0x3F) + { + string[] shiftNames = { "RLC", "RRC", "RL", "RR", "SLA", "SRA", "SLL", "SRL" }; + string shiftOp = shiftNames[(cbOp >> 3) & 0x07]; + mnemonic = $"{shiftOp} {targetReg}"; + } + else if (opGroup == 1) // BIT Group (0x40 to 0x7F) + { + mnemonic = $"BIT {targetBit}, {targetReg}"; + } + else if (opGroup == 2) // RES Group (0x80 to 0xBF) + { + mnemonic = $"RES {targetBit}, {targetReg}"; + } + else if (opGroup == 3) // SET Group (0xC0 to 0xFF) + { + mnemonic = $"SET {targetBit}, {targetReg}"; + } + else + { + mnemonic = $"CB UNKNOWN (CB {cbOp:X2})"; + } + instructionLength = 2; + break; + case 0xCD: + ushort callDest = (ushort)(_memoryBus.Read((ushort)(currentPc + 1)) | (_memoryBus.Read((ushort)(currentPc + 2)) << 8)); + mnemonic = $"CALL 0x{callDest:X4}"; + instructionLength = 3; + break; + case 0xCE: // ADC A, n + byte n = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"ADC A, 0x{n:X2}"; + instructionLength = 2; + break; + case 0xD0: + mnemonic = "RET NC"; + break; + case 0xD1: mnemonic = "POP DE"; break; + case 0xD3: + byte outPort = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"OUT (0x{outPort:X2}), A"; + instructionLength = 2; + break; + case 0xD9: + mnemonic = "EXX"; + break; + case 0xd5: + mnemonic = "PUSH DE"; + break; + case 0xD6: + byte subImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"SUB 0x{subImm:X2}"; + instructionLength = 2; + break; + case 0xD8: + mnemonic = "RET C"; + break; + case 0xDB: // IN A, (n) + n = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"IN A, (0x{n:X2})"; + instructionLength = 2; + break; + case 0xDD: + { + byte ddOpcode = _memoryBus.Read((ushort)(currentPc + 1)); + if (ddOpcode == 0x09) { mnemonic = "ADD IX, BC"; instructionLength = 2; } + else if (ddOpcode == 0x19) { mnemonic = "ADD IX, DE"; instructionLength = 2; } + else if (ddOpcode == 0x29) { mnemonic = "ADD IX, IX"; instructionLength = 2; } + else if (ddOpcode == 0x39) { mnemonic = "ADD IX, SP"; instructionLength = 2; } + else if (ddOpcode == 0x21) // LD IX, nn + { + ushort ixVal = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD IX, 0x{ixVal:X4}"; + instructionLength = 4; + } + else if (ddOpcode == 0x22) // LD (nn), IX + { + ushort nn = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD (0x{nn:X4}), IX"; + instructionLength = 4; + } + else if (ddOpcode == 0x23) // INC IX + { + mnemonic = "INC IX"; + instructionLength = 2; + } + else if (ddOpcode == 0x24) // INC IXH + { + mnemonic = "INC IXH"; + instructionLength = 2; + } + else if (ddOpcode == 0x25) // DEC IXH + { + mnemonic = "DEC IXH"; + instructionLength = 2; + } + else if (ddOpcode == 0x26) // LD IXH, n + { + byte nValue = _memoryBus.Read((ushort)(currentPc + 2)); + mnemonic = $"LD IXH, 0x{nValue:X2}"; + instructionLength = 3; + } + else if (ddOpcode == 0x2A) // LD IX, (nn) + { + ushort nn = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD IX, (0x{nn:X4})"; + instructionLength = 4; + } + else if (ddOpcode == 0x2B) // DEC IX + { + mnemonic = "DEC IX"; + instructionLength = 2; + } + else if (ddOpcode == 0x2D) // DEC IXL + { + mnemonic = "DEC IXL"; + instructionLength = 2; + } + else if (ddOpcode == 0x2E) // LD IXL, n + { + byte nValue = _memoryBus.Read((ushort)(currentPc + 2)); + mnemonic = $"LD IXL, 0x{nValue:X2}"; + instructionLength = 3; + } + else if (ddOpcode == 0x34) // INC (IX+d) + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"INC (IX{sign}{offset})"; + instructionLength = 3; + } + else if (ddOpcode == 0x35) // DEC (IX+d) + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"DEC (IX{sign}{offset})"; + instructionLength = 3; + } + else if (ddOpcode == 0x36) // LD (IX+d), n + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + n = _memoryBus.Read((ushort)(currentPc + 3)); + + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{d}), 0x{n:X2}"; + instructionLength = 4; + } + else if (ddOpcode == 0x46) // LD B, (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD B, (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0x4E) // LD C, (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD C, (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0x56) // LD D, (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD D, (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0x5E) // LD E, (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD E, (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0x66) // LD H, (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD H, (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0x67) // LD IXH, A + { + mnemonic = "LD IXH, A"; + instructionLength = 2; + } + else if (ddOpcode == 0x68) // LD IXL, B + { + mnemonic = "LD IXL, B"; + instructionLength = 2; + } + else if (ddOpcode == 0x69) // LD IXL, C + { + mnemonic = "LD IXL, C"; + instructionLength = 2; + } + else if (ddOpcode == 0x6A) // LD IXL, D + { + mnemonic = "LD IXL, D"; + instructionLength = 2; + } + else if (ddOpcode == 0x6E) // LD L, (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD L, (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0x6F) // LD IXL, A + { + mnemonic = $"LD IXL, A)"; + instructionLength = 2; + } + else if (ddOpcode == 0x71) // LD (IX+d), B + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{offset}), B"; + instructionLength = 3; + } + else if (ddOpcode == 0x71) // LD (IX+d), C + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{offset}), C"; + instructionLength = 3; + } + else if (ddOpcode == 0x72) // LD (IX+d), D + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{offset}), D"; + instructionLength = 3; + } + else if (ddOpcode == 0x73) // LD (IX+d), E + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{offset}), E"; + instructionLength = 3; + } + else if (ddOpcode == 0x74) // LD (IX+d), H + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{d}), H"; + instructionLength = 3; + } + else if (ddOpcode == 0x75) // LD (IX+d), L + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{d}), L"; + instructionLength = 3; + } + else if (ddOpcode == 0x77) // LD (IX+d), A + { + // Read the 3rd byte (the displacement) + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + + // Format nicely with a + or - sign + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"LD (IX{sign}{offset}), A"; + + instructionLength = 3; + } + else if (ddOpcode == 0x7C) // LD A, IXH + { + mnemonic = "LD A, IXH"; + instructionLength = 2; + } + else if (ddOpcode == 0x7E) // LD A, (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD A, (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0x86) + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"ADD A, (IX{sign}{offset})"; + instructionLength = 3; + } + else if (ddOpcode == 0x96) + { + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = offset >= 0 ? "+" : ""; + mnemonic = $"SUB (IX{sign}{offset})"; + instructionLength = 3; + } + else if (ddOpcode == 0xCB) + { + // DD CB instructions are 4 bytes long! + sbyte offset = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + cbOp = _memoryBus.Read((ushort)(currentPc + 3)); + + int operation = cbOp >> 6; + int bitIndex = (cbOp >> 3) & 0x07; + string sign = offset >= 0 ? "+" : ""; + + if (operation == 1) mnemonic = $"BIT {bitIndex}, (IX{sign}{offset})"; + else mnemonic = $"DD CB (IX{sign}{offset}) {cbOp:X2}"; // Fallback + + instructionLength = 4; + } + else if (ddOpcode == 0xBE) // CP (IX+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"CP (IX{sign}{d})"; + instructionLength = 3; + } + else if (ddOpcode == 0xE1) // POP IX + { + mnemonic = "POP IX"; + instructionLength = 2; + } + else if (ddOpcode == 0xE5) // PUSH IX + { + mnemonic = "PUSH IX"; + instructionLength = 2; + } + else if (ddOpcode == 0xE9) // JP (IX) + { + mnemonic = "JP (IX)"; + instructionLength = 2; + } + else + { + mnemonic = $"DD PREFIX UNKNOWN (0x{ddOpcode:X2})"; + instructionLength = 2; // Fallback to prevent UI freezing + } + break; + } + case 0xDE: + byte sbcValue = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"SBC A, 0x{sbcValue:X2}"; + instructionLength = 2; + break; + case 0xE1: mnemonic = "POP HL"; break; + case 0xE3: + mnemonic = "EX (SP), HL"; + break; + case 0xE5: + mnemonic = "PUSH HL"; + break; + case 0xE6: + byte andImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"AND 0x{andImm:X2}"; + instructionLength = 2; + break; + case 0xE9: + mnemonic = "JP (HL)"; + break; + case 0xEB: + mnemonic = "EX DE, HL"; + break; + case 0xED: + byte extendedOp = _memoryBus.Read((ushort)(currentPc + 1)); + + switch (extendedOp) + { + case 0x42: mnemonic = "SBC HL, BC"; instructionLength = 2; break; + case 0x43: + ushort bcAddr = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD (0x{bcAddr:X4}), BC"; + instructionLength = 4; + break; + case 0x44: // NEG + mnemonic = "NEG"; + instructionLength = 2; + break; + case 0x47: + mnemonic = "LD I, A"; + instructionLength = 2; // 0xED + 0x47 + break; + // Inside your ED prefix switch statement in the debugger: + case 0x4A: mnemonic = "ADC HL, BC"; instructionLength = 2; break; + case 0x4B: + ushort addr4B = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD BC, (0x{addr4B:X4})"; + instructionLength = 4; + break; + case 0x4D: + mnemonic = "RETI"; + instructionLength = 2; + break; + case 0x52: + mnemonic = "SBC HL, DE"; + instructionLength = 2; // ED 52 + break; + case 0x53: + ushort deAddr = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD (0x{deAddr:X4}), DE"; + instructionLength = 4; + break; + case 0x56: + mnemonic = "IM 1"; + instructionLength = 2; + break; + case 0x58: + mnemonic = "IN E, (C)"; + instructionLength = 2; + break; + case 0x5A: mnemonic = "ADC HL, DE"; instructionLength = 2; break; + case 0x5B: + ushort addr5B = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD DE, (0x{addr5B:X4})"; + instructionLength = 4; + break; + case 0x5E: mnemonic = "IM 2"; instructionLength = 2; break; + case 0x5F: mnemonic = "LD A, R"; instructionLength = 2; break; + case 0x6A: mnemonic = "ADC HL, HL"; instructionLength = 2; break; + case 0x62: mnemonic = "SBC HL, HL"; instructionLength = 2; break; + case 0x73: + ushort addr73 = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD (0x{addr73:X4}), SP"; + instructionLength = 4; + break; + case 0x72: // SBC HL, SP + mnemonic = "SBC HL, SP"; + instructionLength = 2; + break; + case 0x78: + mnemonic = "IN A, (C)"; + instructionLength = 2; + break; + case 0x7A: mnemonic = "ADC HL, SP"; instructionLength = 2; break; + case 0x7B: // LD SP, (nn) + ushort nn = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD SP, (0x{nn:X4})"; + instructionLength = 4; + break; + case 0xA0: mnemonic = "LDI"; instructionLength = 2; break; + case 0xB0: + mnemonic = "LDIR"; + instructionLength = 2; + break; + case 0xB1: + mnemonic = "CPIR"; + instructionLength = 2; + break; + case 0xB8: + mnemonic = "LDDR"; + instructionLength = 2; + break; + + default: + mnemonic = $"EXT UNKNOWN (ED {extendedOp:X2})"; + instructionLength = 2; // Most ED instructions are 2 bytes, but some have operands! + break; + } + break; + case 0xEE: + byte xorVal = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"XOR 0x{xorVal:X2}"; + instructionLength = 2; + break; + case 0xF1: mnemonic = "POP AF"; break; + case 0xF3: + mnemonic = "DI"; + break; + case 0xf5: + mnemonic = "PUSH AF"; + break; + case 0xF6: + byte orImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"OR 0x{orImm:X2}"; + instructionLength = 2; + break; + case 0xF9: + mnemonic = "LD SP, HL"; + break; + case 0xFB: + mnemonic = "EI"; + break; + case 0xFD: + { + byte fdOpcode = _memoryBus.Read((ushort)(currentPc + 1)); + if (fdOpcode == 0x09) // ADD IY, BC + { + mnemonic = $"ADD IY, BC"; + instructionLength = 2; + } + else if (fdOpcode == 0x19) // ADD IY, DE + { + mnemonic = $"ADD IY, DE"; + instructionLength = 2; + } + else if (fdOpcode == 0x21) // LD IY, nn + { + ushort iyVal = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8)); + mnemonic = $"LD IY, 0x{iyVal:X4}"; + instructionLength = 4; + } + else if (fdOpcode == 0x29) //Add IY, IY + { + mnemonic = $"ADD IY, IY"; + instructionLength = 2; + } + else if (fdOpcode == 0x34) // INC IY + { + //sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + //string sign = d >= 0 ? "+" : ""; + mnemonic = $"INC IY"; + instructionLength = 2; + } + else if (fdOpcode == 0x34) // INC (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"INC (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0x35) // DEC (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; // Gives us a clean + or - + mnemonic = $"DEC (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0x36) // LD (IY+d), n + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + n = _memoryBus.Read((ushort)(currentPc + 3)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IY{sign}{d}), 0x{n:X2}"; + instructionLength = 4; + } + else if (fdOpcode == 0x46) // LD B, (IY+d) + { + sbyte dB = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string signB = dB >= 0 ? "+" : ""; + + mnemonic = $"LD B, (IY{signB}{dB})"; + instructionLength = 3; + } + else if (fdOpcode == 0x4E) // LD C, (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD C, (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0x56) // LD D, (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD D, (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0x5E) // LD E, (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD E, (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0x66) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD H, (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0x6E) + { + sbyte offsetL = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string signL = offsetL >= 0 ? "+" : ""; + + mnemonic = $"LD L, (IY{signL}{offsetL})"; + instructionLength = 3; + } + else if (fdOpcode == 0x72) // LD (IY+d), D + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IY{sign}{d}), D"; + instructionLength = 3; + } + else if (fdOpcode == 0x73) // LD (IY+d), E + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IY{sign}{d}), E"; + instructionLength = 3; + } + else if (fdOpcode == 0x74) // LD (IY+d), H + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IY{sign}{d}), H"; + instructionLength = 3; + } + else if (fdOpcode == 0x77) // LD (IY+d), A + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IY{sign}{d}), A"; + instructionLength = 3; + } + else if (fdOpcode == 0x7E) // LD A, (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD A, (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0x84) // ADD A, IYH + { + + mnemonic = $"ADD A, IYH"; + instructionLength = 2; + } + else if (fdOpcode == 0x85) // ADD A, IYL + { + mnemonic = $"ADD A, IYL"; + instructionLength = 2; + } + else if (fdOpcode == 0x86) // ADD A, (IY+d) + { + sbyte dAdd = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string signAdd = dAdd >= 0 ? "+" : ""; + + mnemonic = $"ADD A, (IY{signAdd}{dAdd})"; + instructionLength = 3; + } + else if (fdOpcode == 0x96) // SUB (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"SUB (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0xA6) //AND (IY+d) + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"AND (IY{sign}{d})"; + instructionLength = 3; + } + else if (fdOpcode == 0xCB) // FD CB prefix + { + cbOp = _memoryBus.Read((ushort)(currentPc + 1)); + + opGroup = cbOp >> 6; + targetBit = (cbOp >> 3) & 0x07; + regIdx = cbOp & 0x07; + + targetReg = regNames[regIdx]; + + if (opGroup == 1) mnemonic = $"BIT {targetBit}, {targetReg}"; + else if (opGroup == 2) mnemonic = $"RES {targetBit}, {targetReg}"; + else if (opGroup == 3) mnemonic = $"SET {targetBit}, {targetReg}"; + else mnemonic = $"CB SHIFT/ROTATE (0x{cbOp:X2})"; + + instructionLength = 2; + } + else if (fdOpcode == 0x71) // LD (IY+d), C + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IY{sign}{d}), C"; + instructionLength = 3; + } + else if (fdOpcode == 0x75) // LD (IY+d), L + { + sbyte d = (sbyte)_memoryBus.Read((ushort)(currentPc + 2)); + string sign = d >= 0 ? "+" : ""; + mnemonic = $"LD (IY{sign}{d}), L"; + instructionLength = 3; + } + else if (fdOpcode == 0xE1) + { + mnemonic = "POP IY"; + instructionLength = 2; + } + else if (fdOpcode == 0xE5) + { + mnemonic = "PUSH IY"; + instructionLength = 2; + } + else + { + mnemonic = $"FD PREFIX UNKNOWN (0x{fdOpcode:X2})"; + instructionLength = 2; // Fallback so we don't freeze the UI + } + break; + } + case 0xFE: + byte cpImm = _memoryBus.Read((ushort)(currentPc + 1)); + mnemonic = $"CP 0x{cpImm:X2}"; + instructionLength = 2; + break; + default: + mnemonic = $"UNKNOWN (0x{opcode:X2})"; + break; + } + + lstDisassembly.Items.Add($"{currentPc:X4}: {mnemonic}"); + + // Advance the fake PC just for drawing the next line in the UI + currentPc += (ushort)instructionLength; + } + } + } +} \ No newline at end of file diff --git a/Desktop/DebuggerForm.resx b/Desktop/DebuggerForm.resx new file mode 100644 index 0000000..7ac8c1e --- /dev/null +++ b/Desktop/DebuggerForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Desktop/Desktop.csproj b/Desktop/Desktop.csproj index 1d41958..878ff67 100644 --- a/Desktop/Desktop.csproj +++ b/Desktop/Desktop.csproj @@ -9,11 +9,21 @@ - + - + + Always + + + + + + + + + \ No newline at end of file diff --git a/Desktop/Form1.Designer.cs b/Desktop/Form1.Designer.cs index 7cf6955..885ec6a 100644 --- a/Desktop/Form1.Designer.cs +++ b/Desktop/Form1.Designer.cs @@ -28,12 +28,33 @@ /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; + button1 = new Button(); + SuspendLayout(); + // + // button1 + // + button1.Location = new Point(304, 268); + button1.Name = "button1"; + button1.Size = new Size(94, 29); + button1.TabIndex = 0; + button1.Text = "button1"; + button1.UseVisualStyleBackColor = true; + button1.Click += button1_Click; + // + // Form1 + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(button1); + Name = "Form1"; + Text = "Form1"; + Click += button1_Click; + ResumeLayout(false); } #endregion + + private Button button1; } } diff --git a/Desktop/Form1.cs b/Desktop/Form1.cs index 3612dfe..41e458f 100644 --- a/Desktop/Form1.cs +++ b/Desktop/Form1.cs @@ -1,10 +1,50 @@ +using System.Reflection; +using System.Reflection.PortableExecutable; +using Core; namespace Desktop { public partial class Form1 : Form { + private SmsMachine _machine = null!; + private DebuggerForm _debugger; + + public ushort? Breakpoint + { + get => _machine?.Breakpoint; + set { if (_machine != null) _machine.Breakpoint = value; } + } + public Form1() { InitializeComponent(); + _machine = new SmsMachine(); + } + + private void button1_Click(object sender, EventArgs e) + { + // 1. Load a commercial Master System ROM! + + byte[] rom = File.ReadAllBytes(@"C:\Parsons\Local Code Projects\ParsonsMasterSystem2026\Desktop\ROMS\Golden Axe Warrior.sms"); + + + try + { + + // 2. Jam it into the Sega Mapper + _machine.LoadCartridge(rom); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + } + + // 3. Open the Debugger to look around + if (_debugger == null || _debugger.IsDisposed) + { + _debugger = new DebuggerForm(_machine.Cpu, _machine.MemoryBus, this); + _debugger.Show(); + } + } } } diff --git a/Desktop/Form1.resx b/Desktop/Form1.resx index 1af7de1..8b2ff64 100644 --- a/Desktop/Form1.resx +++ b/Desktop/Form1.resx @@ -1,17 +1,17 @@  - diff --git a/Desktop/ROMS/Golden Axe Warrior.sms b/Desktop/ROMS/Golden Axe Warrior.sms new file mode 100644 index 0000000000000000000000000000000000000000..0f253deeaf6e32824aed679478ecc583ad9bf37b GIT binary patch literal 262144 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%0D-cfm3a_?`lryoF0!;JEwl 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%0DJcv;kgcaJy~C}^f1 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

#w<}7NKaC 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

TmYnmI`^{X43YZjVx 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