<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Emulation on AI VOID</title><link>https://ai-blog.noorshomelab.dev/categories/emulation/</link><description>Recent content in Emulation on AI VOID</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 05 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ai-blog.noorshomelab.dev/categories/emulation/index.xml" rel="self" type="application/rss+xml"/><item><title>The CPU Core: Registers, Flags, and Basic Instructions</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/cpu-core-registers-flags-basic-instructions/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/cpu-core-registers-flags-basic-instructions/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Welcome to the foundational stage of our Game Boy emulator! In this chapter, we&amp;rsquo;re going to construct the very brain of our system: the Central Processing Unit (CPU). The Game Boy uses a custom 8-bit CPU, often referred to as the &amp;ldquo;SM83,&amp;rdquo; which is a hybrid between a Zilog Z80 and Intel 8080. Understanding and accurately emulating its behavior is paramount to running any Game Boy software.&lt;/p&gt;
&lt;p&gt;This milestone is critical because every single action within a Game Boy game—from moving a character to calculating damage—is ultimately a sequence of CPU instructions. Building the CPU core correctly is non-negotiable for a functional emulator. By the end of this chapter, you will have a functional, albeit minimal, CPU core capable of storing its state (registers and flags) and executing a few fundamental instructions. This forms the bedrock upon which we&amp;rsquo;ll build memory access, graphics, and more complex logic.&lt;/p&gt;</description></item><item><title>Memory Management Unit (MMU) and Basic Memory Access</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/mmu-basic-memory-access/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/mmu-basic-memory-access/</guid><description>&lt;p&gt;The CPU you started building in the last chapter is blind without memory. It can execute instructions, but it can&amp;rsquo;t load programs, store data, or interact with any of the Game Boy&amp;rsquo;s peripherals like the screen or sound chip. This is where the Memory Management Unit (MMU) comes in.&lt;/p&gt;
&lt;p&gt;This chapter guides you through creating the Game Boy&amp;rsquo;s core memory system, the &lt;strong&gt;Memory Management Unit (MMU)&lt;/strong&gt;. You&amp;rsquo;ll learn about the Game Boy&amp;rsquo;s memory map, how to model different memory regions, and implement the fundamental &lt;code&gt;readByte&lt;/code&gt; and &lt;code&gt;writeByte&lt;/code&gt; operations crucial for any emulator. By the end, your emulator will be able to load a Game Boy ROM into its virtual memory, a significant step towards running actual games.&lt;/p&gt;</description></item><item><title>Advanced MMU: Memory Bank Controllers (MBCs)</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/advanced-mmu-mbcs/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/advanced-mmu-mbcs/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;So far, our Game Boy emulator has a basic Memory Management Unit (MMU) that can handle the fixed 64KB memory map. This is sufficient for very small ROMs, but most commercial Game Boy games exceed this limit, often by megabytes. How did the original hardware manage this? Through a clever piece of hardware called a &lt;strong&gt;Memory Bank Controller (MBC)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In this chapter, we&amp;rsquo;ll extend our MMU to support MBCs. This is a critical milestone because it unlocks the ability to load and run a vast majority of Game Boy ROMs. We&amp;rsquo;ll focus on implementing the &lt;strong&gt;MBC1&lt;/strong&gt; type, which is one of the most common and fundamental MBCs. By the end of this chapter, your emulator will be able to dynamically switch between different ROM and external RAM banks, allowing it to access much larger cartridge data.&lt;/p&gt;</description></item><item><title>Audio Processing Unit (APU) Basics: Square Wave Channels</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/apu-basics-square-waves/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/apu-basics-square-waves/</guid><description>&lt;p&gt;In this chapter, we&amp;rsquo;re diving into the fascinating world of sound emulation for our Game Boy project. While often overlooked, a truly accurate emulator needs to replicate the distinct chiptune sounds that define the Game Boy experience. We&amp;rsquo;ll start by tackling the foundational elements of the Audio Processing Unit (APU), specifically focusing on its two square wave channels.&lt;/p&gt;
&lt;p&gt;This milestone is critical because it brings our emulator to life in a new dimension. Hearing the familiar bleeps and boops of a Game Boy game validates our CPU and MMU work in a very tangible way. By the end of this chapter, you&amp;rsquo;ll have a basic APU implementation capable of generating square wave sounds, hooked into your emulator&amp;rsquo;s main loop, and outputting audio via SDL2&amp;rsquo;s direct audio queuing API.&lt;/p&gt;</description></item><item><title>Build a Game Boy Emulator with F#</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/</guid><description>&lt;p&gt;This comprehensive guide walks developers through the intricate process of creating a Game Boy emulator from the ground up using F#. Explore fundamental concepts like CPU emulation, memory mapping, graphics rendering, input handling, and sound synthesis. Delve into low-level system design and practical F# implementation details to truly understand retro console architecture.&lt;/p&gt;</description></item></channel></rss>