<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Computer Architecture on AI VOID</title><link>https://ai-blog.noorshomelab.dev/categories/computer-architecture/</link><description>Recent content in Computer Architecture 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/computer-architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>CPU Control Flow: Jumps, Calls, and Conditional Logic</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/cpu-control-flow-jumps-calls/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/cpu-control-flow-jumps-calls/</guid><description>&lt;p&gt;In this chapter, we&amp;rsquo;re going to give our Game Boy CPU the ability to make decisions and reuse code. We&amp;rsquo;ll implement the crucial control flow instructions: &lt;code&gt;JP&lt;/code&gt; (Jump), &lt;code&gt;JR&lt;/code&gt; (Jump Relative), &lt;code&gt;CALL&lt;/code&gt;, and &lt;code&gt;RET&lt;/code&gt; (Return), along with their conditional variants. These instructions are fundamental to how programs execute, allowing them to branch, loop, and call subroutines.&lt;/p&gt;
&lt;p&gt;By the end of this milestone, your emulator will be able to follow more complex program paths, enabling it to execute actual Game Boy program logic beyond simple linear instruction sequences. This is a significant step towards running real Game Boy ROMs, as it unlocks the ability for programs to react to different states and organize their code efficiently.&lt;/p&gt;</description></item><item><title>Picture Processing Unit (PPU) Part 1: VRAM and Background Rendering</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/ppu-part1-vram-background/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/ppu-part1-vram-background/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;So far, our Game Boy emulator can execute CPU instructions and manage memory, but it&amp;rsquo;s a silent, black box. This chapter changes that. We&amp;rsquo;re about to bring the Game Boy to life by tackling the Picture Processing Unit (PPU) – the hardware responsible for all the visuals. This is a significant milestone, as seeing actual graphics from a ROM is incredibly rewarding and validates much of our prior work.&lt;/p&gt;</description></item><item><title>Picture Processing Unit (PPU) Part 2: Sprites, Scrolling, and LCD Control</title><link>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/ppu-part2-sprites-scrolling/</link><pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate><guid>https://ai-blog.noorshomelab.dev/game-boy-emulator-fsharp/ppu-part2-sprites-scrolling/</guid><description>&lt;p&gt;This chapter builds upon our foundational Picture Processing Unit (PPU) work, where we established background tile rendering. Now, we&amp;rsquo;ll introduce the dynamic elements that bring games to life: sprites (movable objects), background scrolling, and the crucial LCD Control Register, which dictates how the display operates. By the end of this milestone, your emulator will be able to render basic sprites, scroll the background, and respond to fundamental display settings, making it capable of running more visually complex Game Boy ROMs.&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>