Emulating a Game Boy in .NET 6
summary
Emulates a Game Boy as a .NET 6 C# project by implementing the SM83 CPU, picture and audio units, memory-mapped I/O, boot ROM checks and cartridge bank switching; uses a JSON opcode table, Visual Studio and Windows Forms, and adds a native sound driver. Accurately models timing (CPU tied to slower memory pulses), DMA, interrupts and the PPU scanline modes so games like Tetris and Super Mario Land actually run. Hardware specs included: 4.19 MHz CPU, 8 KB work RAM, 8 KB VRAM, 256‑byte boot ROM, 160×144 screen; project works after timing fixes and several weeks of effort.
AI-written summary · about
chapters (20)
- 0:00Game Boy emulation in .NET 6
- 1:23Speaker background and inspiration
- 2:47Game Boy hardware specs
- 7:32Legal ways to obtain Game Boy ROMs
- 7:54Sharp SM83 CPU
- 10:20SM83 registers and flags
- 12:27Picture Processing Unit and graphics
- 15:59Sprites limitations
- 17:28Audio channels emulation
- 20:46Memory I/O and interrupts
- 22:58Boot ROM verification
- 26:33CPU implementation
- 29:45Debugging CPU output
- 33:19Timing constraints
- 38:33Using existing emulators
- 40:20Debugging Tetris input
- 43:34Future: Game Boy Color
- 45:19Live emulator demo
- 48:37Main loop code walk
- 52:58Q&A
related talks
18mEmulating the Nintendo Game Boy CPU with Elm
35mBuilding a GameBoy emulator with Elixir and Scenic
01h 04mCoding 4 Fun: 8-bit game emulation in .NET
40mBuilding a GameBoy emulator with Elixir and Scenic
29mEmulating With JavaScript
45mEmulating a 6502 System in JavaScript
11mEven more vintage: releasing music on a custom-built Game Boy cartridge!
11mChanging a Single Byte Saves Me Seconds Every Day!
