From 18868128e18d38b706e7df14e8e683e1a9739c17 Mon Sep 17 00:00:00 2001 From: Melodi <62381002+Melodi17@users.noreply.github.com> Date: Tue, 17 Mar 2026 20:49:22 +1000 Subject: chore: Initial commit --- Emulator/Program.cs | 98 ----------------------------------------------------- 1 file changed, 98 deletions(-) delete mode 100644 Emulator/Program.cs (limited to 'Emulator/Program.cs') diff --git a/Emulator/Program.cs b/Emulator/Program.cs deleted file mode 100644 index f6fa932..0000000 --- a/Emulator/Program.cs +++ /dev/null @@ -1,98 +0,0 @@ -namespace Q1.Emulator; - -using System; -using System.IO; -using System.Threading; -using Chip; -using CommandLine; -using Microsoft.Xna.Framework; - -public class Program -{ - public static void Main(string[] args) - { - Parser.Default.ParseArguments(args).WithParsed(Program.Main); - } - - public static void Main(EmulatorOptions emulatorOptions) - { - Q1Cpu cpu = new(); - Bus bus = new(u16.MinValue, u16.MaxValue); - RamDevice rom = new(Q1Layout.Rom.start, Q1Layout.Rom.size); - File.ReadAllBytes(emulatorOptions.InputFile).CopyTo(rom.Memory, 0); - - DisplayDevice display = new(Q1Layout.DisplayPaletteSize, Q1Layout.DisplayWidth, Q1Layout.DisplayHeight, Q1Layout.Display.start); - display.SetPalette([ - Color.Red, - Color.Green, - Color.Blue, - Color.Yellow, - Color.Cyan, - Color.Magenta, - Color.White, - Color.Black, - Color.Gray, - Color.Orange, - Color.Purple, - Color.Brown, - Color.LightGray, - Color.DarkGray, - Color.LightBlue, - Color.LightGreen - ]); - - HIDDevice hid = new(Q1Layout.Hid.start); - - RamDevice memory = new(Q1Layout.Memory.start, Q1Layout.Memory.size); - - cpu.Bus = bus; - rom.AttachToBus(bus); - display.AttachToBus(bus); - memory.AttachToBus(bus); - hid.AttachToBus(bus); - - Thread t = new(() => - { - cpu.Reset(); - while (!cpu.AbortRequested) - { - // for (int i = 0; i < 64; i++) - // cpu.Clock(); - // - // Thread.Sleep(1); - // - cpu.Clock(); - } - Console.WriteLine($"Exit code: 0x{cpu.V[0]:X4}"); - MemoryDump(memory, Q1Layout.FreeMemoryStart, (u16) (Q1Layout.Memory.start + Q1Layout.Memory.size - 1)); - }); - t.IsBackground = true; - t.Start(); - - using DisplayEngine game = new(Q1Layout.DisplayWidth, Q1Layout.DisplayHeight, 5, - hid, - tex => - { - display.OutputTexture = tex; - Console.WriteLine("Display surface initialized."); - }, () => display.Clock(), () => cpu.AbortRequested); - game.Run(); - - Console.WriteLine("Display surface closed. Waiting for CPU thread to finish..."); - t.Join(); - } - - private static void MemoryDump(RamDevice memory, u16 start, u16 end) - { - for (u16 addr = start; addr <= end; addr += 16) - { - Console.Write($"0x{addr:X4}: "); - for (u16 offset = 0; offset < 16; offset++) - { - if (addr + offset > end) break; - Console.Write($"{memory.Read((u16) (addr + offset)):X2} "); - } - Console.WriteLine(); - } - } -} \ No newline at end of file -- cgit v1.3.1