<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>MMU on AI VOID</title><link>https://ai-blog.noorshomelab.dev/tags/mmu/</link><description>Recent content in MMU 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/tags/mmu/index.xml" rel="self" type="application/rss+xml"/><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>Building a Game Boy Emulator with F#</title><link>https://ai-blog.noorshomelab.dev/projects-v2/game-boy-emulator-fsharp-guide/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/projects-v2/game-boy-emulator-fsharp-guide/</guid><description>&lt;p&gt;Building a Game Boy emulator from the ground up is a deeply rewarding project that takes you into the heart of computer architecture and low-level system design. This guide will walk you through constructing a functional Game Boy emulator using F#, focusing on a modular, functional approach to replicate the original hardware&amp;rsquo;s behavior.&lt;/p&gt;
&lt;h2 id="why-build-an-emulator"&gt;Why Build an Emulator?&lt;/h2&gt;
&lt;p&gt;Emulators are more than just software; they are digital time capsules that preserve computing history and provide a unique window into how hardware and software truly interact. By building one, you&amp;rsquo;ll gain an unparalleled understanding of:&lt;/p&gt;</description></item></channel></rss>