From 8a4b5733e25b634dd03712d372139568d843337d Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 17:17:30 +0100 Subject: [PATCH 01/13] Moved N64 rom editing page which was too short into the main N64 page and fixed a few images --- _data/valid-tags.json | 1 - _includes/header.html | 4 +-- categories/consoles/Atari2600.md | 7 ++-- categories/consoles/AtariJaguar.md | 6 ++-- categories/consoles/N64.md | 30 ++++++++++++++---- categories/consoles/PokemonMini.md | 2 +- .../Mystical-Ninja-N64-Memory-Rom-Editing.md | 30 ------------------ .../pokemonMini/OfficialPokeMiniSDK.md | 8 ++--- public/consoles/GameEngine.png | Bin 0 -> 93007 bytes public/css/homepage.css | 20 ++++++++---- public/generated/placeholders/atari2600.jpg | Bin 130412 -> 128288 bytes public/generated/placeholders/gamecom.jpg | Bin 79715 -> 109402 bytes .../{atarijaguar.jpg => jaguar.jpg} | Bin 123261 -> 120579 bytes public/generated/placeholders/n64.jpg | Bin 120783 -> 115865 bytes public/generated/placeholders/sdks.jpg | Bin 142041 -> 153970 bytes 15 files changed, 52 insertions(+), 56 deletions(-) delete mode 100644 pages/consoles/n64/Mystical-Ninja-N64-Memory-Rom-Editing.md create mode 100644 public/consoles/GameEngine.png rename public/generated/placeholders/{atarijaguar.jpg => jaguar.jpg} (94%) diff --git a/_data/valid-tags.json b/_data/valid-tags.json index e9d21677..82730806 100644 --- a/_data/valid-tags.json +++ b/_data/valid-tags.json @@ -261,7 +261,6 @@ "psp" ], "categories/consoles/PokemonMini.md": [ - "pokemonmini", "pokemonmini" ], "categories/consoles/SG1000.md": [ diff --git a/_includes/header.html b/_includes/header.html index b29e3d29..cac15443 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -128,7 +128,7 @@

Super Mario World

Gamecube Wii WiiU - Pokemon Mini + Pokemon Mini
@@ -152,7 +152,7 @@

Super Mario World

Microsoft Xbox - Xbox 360 + Xbox 360 PC MSX MS-DOS diff --git a/categories/consoles/Atari2600.md b/categories/consoles/Atari2600.md index 61381300..263b5be8 100644 --- a/categories/consoles/Atari2600.md +++ b/categories/consoles/Atari2600.md @@ -1,11 +1,8 @@ --- permalink: /atari2600 layout: post -category: atari2600 +category: atari title: Atari 2600 VCS Reverse Engineering -consoleimage: /public/consoles/Atari 2600.png -image_: /public/images/nes/Atari 2600.jpg -twitterimage_: https://www.retroreversing.com/public/images/atari/Atari 2600.jpg excerpt: Awesome list of Atari Game Development and Reverse Engineering information breadcrumbs: - name: Home @@ -19,6 +16,8 @@ recommend: recommendTitle: All Atari 2600 Posts editlink: ../categories/consoles/Atari2600.md updatedAt_: '2022-12-08' +redirect_from: + - /atari tags: - atari --- diff --git a/categories/consoles/AtariJaguar.md b/categories/consoles/AtariJaguar.md index 630b1183..76a0a22e 100644 --- a/categories/consoles/AtariJaguar.md +++ b/categories/consoles/AtariJaguar.md @@ -1,7 +1,7 @@ --- -permalink: /atarijaguar +permalink: /jaguar layout: post -category: atarijaguar +category: jaguar title: Atari Jaguar Reverse Engineering consoleimage: /public/consoles/Atari Jaguar.png image_: /public/images/nes/Atari Jaguar.jpg @@ -20,6 +20,8 @@ recommend: recommendTitle: All Atari Jaguar Posts editlink: ../categories/consoles/AtariJaguar.md updatedAt_: '2024-05-03' +redirect_from: + - /atarijaguar tags: - atari - jaguar diff --git a/categories/consoles/N64.md b/categories/consoles/N64.md index e330680d..71872aac 100644 --- a/categories/consoles/N64.md +++ b/categories/consoles/N64.md @@ -1,12 +1,8 @@ --- permalink: /n64 -redirect_from: - - /n64/ layout: post category: n64 -title: 'Nintendo 64 (Project Reality)' -consoleimage: /public/consoles/Nintendo 64.png -recommend: n64 +title: 'Nintendo 64 (Project Reality) Reversing' recommendTitle: All N64 Posts editlink: ../categories/consoles/N64.md excerpt: 'Interested in learning more about the the N64? Excellent! This section will guide you through the basics, starting from basic MIPS assembly language all the way to an introduction to reverse engineering your first game!' @@ -19,6 +15,10 @@ breadcrumbs: url: # tags: - n64 + - introduction +redirect_from: + - /n64/ + - /mystical-ninja-n64-memory-rom-editing/ --- # Introduction to Hacking the Nintendo 64 @@ -135,7 +135,25 @@ Nintendo 64 games can look a bit dated due to their low resolution textures, but ## N64 Cheats, Secrets & Glitches Whether you just want to get further in your favourite game, unlock hidden content or even completely corrupt/glitch the game, you can use a cheat cartridge such as Action Replay or emulator memory editing to change games in real-time. {% include_cached link-to-other-post.html post="/emulator-game-memory-corruption" description="For details about corrupting ROMs and memory at runtime to create check out this post." %} - + +### Mystical Ninja N64 Memory ROM Editing +[60namrruC](https://www.youtube.com/watch?v=HCOhOoajBFY) has a video covering Mystical Ninja N64 Memory ROM Editing utilizing **CheatEngine** alongside the **Mupen64** emulator. The author goes over the progress made in reverse engineering and understanding the memory layout of the *Mystical Ninja Starring Goemon* ROM file, showcasing findings that are documented in text files and a collaborative CheatEngine table. + + + +Mupen64 allocates a specific block of host PC memory to simulate the N64's physical RDRAM. + +Rather than statically decompiling the ROM binary block by block, he attaches CheatEngine directly to the running MuPen64 executable. This hooks into the emulator's memory space, allowing the user to view, freeze, or write over raw hexadecimal values in real-time as the N64 game executes instructions. + +#### State Isolation and Sub-Searching +To identify unknown memory addresses governing specific game mechanics (such as Goemon's health, Ryo currency, or X/Y/Z coordinates), the researcher uses an iterative scanning technique known as sub-searching. +* First, an initial broad scan is made for a known integer or float value (e.g., current health). +* The researcher then intentionally alters that state in the emulator (e.g., taking damage). +* A secondary "sub-search" is executed exclusively within the previous subset of results for the new value. This rapidly filters out dynamic background data, narrowing thousands of addresses down to the exact hex offset governing the targeted mechanic. + +#### Documenting the ROM Structure +Once dynamic RAM addresses are confirmed, the technical hurdle is understanding how these align with the data structures loaded from the game cartridge. The progress showcased involves taking these isolated addresses and compiling them into a collaborative CheatEngine table (`.CT` file) and documented text maps. This shared structural blueprint allows multiple reverse engineers to manipulate game logic and aids in broader N64 decompilation efforts. + --- # N64 Anti-piracy The main Nintendo 64 anti-piracy measure was the enhanced `CIC` chip based on the Super Nintendos CIC chip design but far more secure. diff --git a/categories/consoles/PokemonMini.md b/categories/consoles/PokemonMini.md index a7217373..bf273d0e 100644 --- a/categories/consoles/PokemonMini.md +++ b/categories/consoles/PokemonMini.md @@ -3,7 +3,7 @@ permalink: /PokemonMini redirect_from: - /PokemonMini/ layout: post -category: PokemonMini +category: pokemonmini title: 'Pokemon Mini' consoleimage: /public/consoles/PokemonMini.png image: https://www.retroreversing.com/public/images/PokemonMini/Pokemon Mini Introduction.jpg diff --git a/pages/consoles/n64/Mystical-Ninja-N64-Memory-Rom-Editing.md b/pages/consoles/n64/Mystical-Ninja-N64-Memory-Rom-Editing.md deleted file mode 100644 index 2aacba33..00000000 --- a/pages/consoles/n64/Mystical-Ninja-N64-Memory-Rom-Editing.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -layout: post -tags: -- n64 -- memory -title: Mystical Ninja N64 Memory Rom Editing -category: n64 -youtube: "HCOhOoajBFY" -image: /public/zPL1VU0wRtcGNpCC99q46g_img_0.png -permalink: /mystical-ninja-n64-memory-rom-editing -redirect_from: - - /mystical-ninja-n64-memory-rom-editing/ -breadcrumbs: - - name: Home - url: / - - name: Nintendo 64 - url: /n64 - - name: Mystical Ninja N64 Memory Rom Editing - url: # -recommend: n64 -editlink: /consoles/n64/Mystical-Ninja-N64-Memory-Rom-Editing.md ---- - -# Mystical Ninja N64 Memory Rom Editing with CheatEngine and MuPen64 -![image alt text]({{ site.url }}/public/zPL1VU0wRtcGNpCC99q46g_img_0.png) - -In this video the author goes over some progress he has made trying to understand the layout of the Goemon rom file. He seems to have made great progress and it is documented in a number of text files and even has a collaboration CheatEngine file! - -The video is available here: [https://gaming.youtube.com/watch?v=HCOhOoajBFY](https://gaming.youtube.com/watch?v=HCOhOoajBFY) - diff --git a/pages/consoles/pokemonMini/OfficialPokeMiniSDK.md b/pages/consoles/pokemonMini/OfficialPokeMiniSDK.md index 25b8ec0c..6c30f548 100644 --- a/pages/consoles/pokemonMini/OfficialPokeMiniSDK.md +++ b/pages/consoles/pokemonMini/OfficialPokeMiniSDK.md @@ -1,10 +1,10 @@ --- layout: post tags: -- PokemonMini +- pokemonmini - sdk title: Pokemon Mini Official Software Development Kit (Toolchain) -category: PokemonMini +category: pokemonmini permalink: /official-pokemon-mini-sdk breadcrumbs: - name: Home @@ -12,11 +12,11 @@ breadcrumbs: - name: SDKs url: /sdks - name: Pokemon Mini - url: /PokemonMini/ + url: /PokemonMini - name: Pokemon Mini Official Software Development Kit (Toolchain) url: # recommend: -- PokemonMini +- pokemonmini - sdk editlink: /consoles/pokemonMini/OfficialPokeMiniSDK.md --- diff --git a/public/consoles/GameEngine.png b/public/consoles/GameEngine.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c479c0de6fe13515c55dbdf6f8c744e7a5a5e8 GIT binary patch literal 93007 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 _gEXL{aD|) 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 literal 0 HcmV?d00001 diff --git a/public/css/homepage.css b/public/css/homepage.css index fc2b07dc..a7559647 100644 --- a/public/css/homepage.css +++ b/public/css/homepage.css @@ -120,14 +120,22 @@ div.rr-post-playlist-row:not(:has(> :nth-child(5))) { } .console-post-numbers { - border-radius: 15px; - padding: 5px; + display: inline-flex; + align-items: center; + justify-content: center; + width: 32px; + height: 32px; + min-width: 32px; + margin-top: 2px; margin-left: 20px; - font-size: small; - height: 30px; - min-width: 30px; + border-radius: 50%; + background: rgba(255, 255, 255, 0.12); + border: 1px solid rgba(255, 255, 255, 0.08); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06); + color: rgba(255, 255, 255, 0.92); + font-size: 0.85rem; + line-height: 1; text-align: center; - margin-top: 5px; } /* End of Homepage Console selector section */ diff --git a/public/generated/placeholders/atari2600.jpg b/public/generated/placeholders/atari2600.jpg index 457c7a7f9e0a81229080dadcde175f16db55bbcb..ba6f4643d8d85a9803456587aee7c6238bd5a22c 100644 GIT binary patch delta 473 zcmaF!i+#Z>_6;Z4>W}%Bdrfw_u5aQQ<8iI{BxB-%WNA^A+QN`oxl6Q7QUhH@U0Ou~ z9aw3E>uF^$k><+a^qKtsi<9?n(cAoo^E`|Fhvgsn|GEDy{&z^+{+H?M-)sIeG-v;3 zcq;pS{x|bi^}qZx;}6Y0V*gYA>-patG5;A}Tw9y?@x;s;jmIw*b-gl}EXe$2a_16* z&59xs%sM^&vN6&3D(*+_-ZC+@EBbZ2yOU&ORG31Og+iaB=&6e#i_`8G6z$po4Eu$X i_r2AheD=G delta 2414 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 diff --git a/public/generated/placeholders/gamecom.jpg b/public/generated/placeholders/gamecom.jpg index b8ed12536038902ef931504c3372c98c067b44e1..d33acebddd5a7017bb3c72b6d70d74ceb7ec2a94 100644 GIT binary patch delta 38475 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 BYfu0H delta 5378 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 diff --git a/public/generated/placeholders/atarijaguar.jpg b/public/generated/placeholders/jaguar.jpg similarity index 94% rename from public/generated/placeholders/atarijaguar.jpg rename to public/generated/placeholders/jaguar.jpg index f10b020f779052dd0cb82a5e2d0762eae1e2f583..d9ab0ad9ea3bc6c91cac18e54d322e494e6dd19c 100644 GIT binary patch delta 3965 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 diff --git a/public/generated/placeholders/n64.jpg b/public/generated/placeholders/n64.jpg index ec220825e4efdf601e08a4f1110a27eb606ebb7c..db3aefeb73e13c2b7167130952847a4031e5cf8b 100644 GIT binary patch literal 115865 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

GCc};TB55(>y!fV=gmBvzb7#Z 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 TFHb&$SwVIt-self{uufn=cmz) literal 120783 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 BYbO8z diff --git a/public/generated/placeholders/sdks.jpg b/public/generated/placeholders/sdks.jpg index fa46401fb5932338f7e6d7493093bd6bfb47b368..5b0b5901e829603eff852f8076779f65ea22c4d8 100644 GIT binary patch delta 73506 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 delta 61534 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 Ef0@wZ{r~^~ From e93dadcf39fb52bce8c8ab75e28ace20e9995f75 Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 19:08:48 +0100 Subject: [PATCH 02/13] Updated formatting rules to remove newlines between list items --- _config.yml | 3 + categories/misc/Conferences.md | 5 - categories/tools/Disassemblers.md | 8 - pages/consoles/n64/Maestro64.md | 2 - pages/consoles/n64/N64MipsAssembly.md | 431 +++++++++++++++++- pages/consoles/nes/Super-Mario-Bros.md | 2 - pages/consoles/ps1/psx-exe.md | 189 +++++++- ...Systems-Network-Development-Kit-for-PS2.md | 8 - pages/leaks/Nintendo/GigaleakNEWS05.md | 20 - pages/tools/GameMaker.md | 27 -- scripts/format-docs.js | 49 +- 11 files changed, 651 insertions(+), 93 deletions(-) diff --git a/_config.yml b/_config.yml index 8d9ea248..315b0d52 100644 --- a/_config.yml +++ b/_config.yml @@ -197,6 +197,9 @@ category: "jaguar": title: Atari Jaguar image: /public/consoles/Atari Jaguar.png + "atari": + title: Atari + image: /public/consoles/Atari 2600.png "leak": title: Leak image: /public/consoles/Leaks.png diff --git a/categories/misc/Conferences.md b/categories/misc/Conferences.md index cae5eccf..8a4fa96e 100644 --- a/categories/misc/Conferences.md +++ b/categories/misc/Conferences.md @@ -246,25 +246,20 @@ The key points from Keynote are as are as follows: * **Evaluation of Doom 3 Engine Decisions:** * He reflects on decisions made for the Doom 3 renderer over four years ago. * Acknowledges some flaws, such as seams on character heads due to mirroring repeat in texturing. - * **Specularity and Lighting Improvements:** * Talks about limitations in skin tone realism due to a single level of specularity. * Introduces new technology for specular maps, allowing control over the breadth of specular highlights. * Addresses issues with specularity on broad surfaces and introduces reflection vector calculation for more accurate highlights. * Discusses the use of cubic environment maps and normalization for better quality highlights. - * **Anti-Aliasing Challenges:** * Highlights the aliasing challenges in surfaces with normal maps and specular highlights. * Mentions ongoing work to combat aliasing, considering the analysis of surface normals and specularity factors. - * **Multi-Channel Texture Considerations:** * Discusses the complexity introduced when combining multiple maps (normal, diffuse, specular, etc.) and the need for coordinated adjustments. * Notes potential challenges in scaling and rotating independent maps. - * **Quality Improvement through Renormalization:** * Describes the benefits of renormalization of normal maps before lighting calculations for improved surface quality. * Addresses the issue of denormalization in cases where normal vectors deviate significantly. - * **General Improvements and Considerations:** * Mentions the need for reevaluation and development of a new rendering engine based on current hardware capabilities. * Indicates ongoing efforts to enhance the Doom 3 graphics engine, considering issues like aliasing, specularity, and normal map quality. diff --git a/categories/tools/Disassemblers.md b/categories/tools/Disassemblers.md index 30938394..df193ef6 100644 --- a/categories/tools/Disassemblers.md +++ b/categories/tools/Disassemblers.md @@ -339,9 +339,7 @@ However, it requires running the program, which might be risky if the program is Dynamic disassemblers function by instrumenting the program as it runs. This can be done in several ways: * **Binary Instrumentation**: The disassembler inserts additional code (probes) into the binary to monitor the execution of instructions. This method allows the disassembler to collect data such as which instructions are executed, how often they are run, and how they interact with memory and registers. - * **Emulation**: In some cases, dynamic disassemblers use emulation to simulate the execution of the program in a controlled environment. The disassembler steps through the instructions as they would execute on the actual hardware, allowing for detailed observation of the program's behavior. - * **Debugging Interface**: Some dynamic disassemblers leverage the debugging APIs provided by operating systems. By attaching to a running process or launching a program in a debug mode, the disassembler can intercept and analyze instructions as they are executed. --- @@ -356,9 +354,7 @@ Dynamic Disassemblers have the following advantages: ## Challenges of Dynamic Disassemblers Dynamic Disassemblers have the following challenges: * **Performance Overhead**: Because dynamic disassembly involves running the program and monitoring its behavior, it often incurs significant performance overhead. The process can be much slower than static analysis, especially if instrumentation or emulation is used. - * **Partial Coverage**: Dynamic disassembly is dependent on the execution paths taken during analysis. If certain parts of the code are not triggered during the monitored execution, they will not be disassembled. This makes it crucial to ensure comprehensive coverage during analysis, which can be challenging. - * **Complex Setup**: Setting up a dynamic disassembler can be more complex than using a static disassembler. It often requires a controlled environment, such as a sandbox, and careful management of the execution context to avoid unwanted side effects. --- @@ -388,19 +384,15 @@ An interactive disassembler is a software tool that converts machine code (binar ### Interactive Code Exploration * **Control Flow Graphs (CFGs)**: Interactive disassemblers often generate visual representations of a program's control flow, showing how different functions and loops interact. Users can click on different nodes and edges to explore these paths more thoroughly. - * **Jump and Call References**: Users can easily see where functions are called from or where jump instructions lead, making it easier to trace the flow of execution. ### Manual Adjustments * **Marking Code and Data**: Users can manually specify whether a section of the binary is code or data, which is particularly useful in binaries where the boundaries between code and data are not clear. - * **Renaming and Commenting**: Functions, variables, and memory locations can be renamed to more meaningful names, and users can add comments to help document the disassembly. - * **Defining Data Structures**: Users can define and apply custom data structures to areas of memory, improving the clarity of complex data segments. ### Scripting and Automation * **Scripting Support**: Many interactive disassemblers support scripting languages like Python or JavaScript, allowing users to automate repetitive tasks, write custom analyses, or extend the functionality of the disassembler. - * **Macros and Plugins**: Users can create or import plugins and macros to add new features, such as custom decoders for specific binary formats or automated analysis routines. ### Cross-Referencing diff --git a/pages/consoles/n64/Maestro64.md b/pages/consoles/n64/Maestro64.md index 3f402983..142dbfbd 100644 --- a/pages/consoles/n64/Maestro64.md +++ b/pages/consoles/n64/Maestro64.md @@ -47,8 +47,6 @@ The back shows the port where you connect to the PC. ## References * [http://devkits.handheldmuseum.com/SN64.htm](http://devkits.handheldmuseum.com/SN64.htm) - * Official Website archive - [https://web.archive.org/web/19980523231505/http://www.snsys.com:80/snsys/page.asp?c=maestro64](https://web.archive.org/web/19980523231505/http://www.snsys.com:80/snsys/page.asp?c=maestro64) - * Images from [http://www.retrogames.co.uk/040010/Nintendo/N64-Maestro-Development-Kit](http://www.retrogames.co.uk/040010/Nintendo/N64-Maestro-Development-Kit) diff --git a/pages/consoles/n64/N64MipsAssembly.md b/pages/consoles/n64/N64MipsAssembly.md index 6ec2a7a3..ba4e362d 100644 --- a/pages/consoles/n64/N64MipsAssembly.md +++ b/pages/consoles/n64/N64MipsAssembly.md @@ -23,13 +23,436 @@ recommend: editlink: /consoles/n64/N64MipsAssembly.md --- -# Subscribe to Fraser N64! +# Introduction +[Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) has created a series of YouTube videos where he teaches N64 MIPS programming from the ground up. This page is designed to act as "notes" as you follow along with the tutorials. + First of all in order to help support the creation of more excellent N64 MIPS tutorials, consider subscribing to Fraser here: [Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) -# Watch live on twitch -If you are lucky you can catch the stream live here: [fraserN64 - Twitch](https://www.twitch.tv/frasern64/) +Also if you are lucky you can catch the stream live here: [fraserN64 - Twitch](https://www.twitch.tv/frasern64/) -# Source Code and Resources +## Source Code and Resources You can access all the source code and resources referenced in the videos here: [fraser125/N64_ASM_Videos: The files complementing my video series N64 MIPS Assembly](https://github.com/fraser125/N64_ASM_Videos) +## Glossary of Key Terms +If you are new to MIPS or N64 development, these terms are fundamental to the workflow: + +* **MIPS** - Microprocessor without Interlocked Pipelined Stages; the RISC architecture used by the N64. +* **bass** - A versatile, multi-architecture assembler created by near, used extensively for N64 projects. +* **n64chain** - A pre-built GCC toolchain specifically configured for creating Nintendo 64 programs. +* **MAME** - Multiple Arcade Machine Emulator; used here for its built-in debugger which is superior for inspecting N64 CPU state. + +--- +# Lesson 001 - Dev Environment Setup +This section is based on the technical walkthrough by [Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) and covers the initial setup of a Windows-based development environment. + + + +## Essential Development Tooling +Here is the essential software stack: + +* **bass Assembler** - The primary tool for converting assembly source into N64 ROM data. The ARM9 github fork is the standard version used for these tutorials. +* **GCC for Windows** - Used for creating Windows-side tools or if integrating C code into the pipeline. +* **n64chain** - Essential for projects requiring the standard C library or more complex compilation. +* **Notepad++** - A recommended text editor for its speed, simplicity, and customization options. +* **Legacy Windows Calculator** - The Windows 7 version is preferred over the Windows 10 app for its much more intuitive binary bit-view, which is crucial for manually verifying register values and bitwise operations. +* **GitHub Desktop** - Recommended for users who prefer a GUI for version control and cloning test repositories, such as Peter Lemon's N64 tests. + +## Emulator and Debugger Configuration +To run N64 software in MAME, you must have the N64 BIOS files. The file `n64.zip` must be placed inside the `roms/` directory of your MAME installation. It is recommended to leave this file zipped to ensure MAME recognizes it correctly. + +### Launching the Debugger +This view provides direct access to the MIPS architecture internals: + +* **GPRs** - General Purpose Registers. MIPS contains 32 of these (ranging from `zero` to `ra`), though roughly 30 are practically usable since a few (like the `zero` register) are hard-wired by the architecture. +* **HI / LO Registers** - Special-purpose registers used specifically to hold the 64-bit results of integer multiplication and division. +* **Floating Point Registers** - The Coprocessor 1 (CP1/FPU) register set natively used for floating-point mathematical operations on the N64. + +--- +## Workflow Automation + +### Persistent Command Prompts +Standard batch files close their terminal window immediately upon completion, which wipes out your compilation errors and build history. + +By creating a Windows shortcut to your batch file and modifying the target, you can force the environment to stay open: +```bat +%COMSPEC% /k "C:\path\to\your\script.bat" +``` + +The `/k` parameter tells the command processor to carry out the command specified by the string but remain open, leaving you at a command prompt precisely where you need to be to run repeated `bass` assembly commands. You can pin these shortcuts directly to your taskbar for quick access. + +### MAME Launch Scripts +Because developers do not use a frontend, typing the full MAME executable path and N64 launch parameters repeatedly becomes tedious. A common pattern is to create batch files that capture your ROM file and route it into MAME automatically. + +Here is the standard logic for a `run.bat` script that manages directory switching and parameter passing: +```bat +@echo off +set ROM_PATH=%~f1 +set OLD_DIR=%CD% +cd /d "C:\mame" +mame64 n64 -window -cart "%ROM_PATH%" +cd /d "%OLD_DIR%" +``` + +The `%~f1` syntax is a critical Windows batch trick; it takes the first parameter passed to the script (the ROM filename) and expands it into a fully qualified absolute path name. Since MAME requires absolute paths when invoked from outside its root directory, this automatically handles the path translation. + +You can also duplicate this script into a `debug.bat` file to automatically attach the debugger and verbose logging flags: +```bat +@echo off +set ROM_PATH=%~f1 +set OLD_DIR=%CD% +cd /d "C:\mame" +mame64 -debug -log -verbose n64 -window -cart "%ROM_PATH%" +cd /d "%OLD_DIR%" +``` + +--- +# Lesson 002 - bass Assembler Keywords +This section covers the fundamental keywords and directives used by the `bass` assembler to structure a Nintendo 64 ROM. + + + +## Core bass Directives +The main directives required for an N64 project include: +* **arch** - Defines the target architecture. For the primary N64 CPU, use `arch n64.cpu`. The assembler also supports `n64.rsp` for the Reality Signal Processor and `n64.rdp` for the Reality Display Processor. +* **endian** - Defines the byte order. The N64 uses Big-Endian, so this must be set to `endian msb` (Most Significant Bit). +* **output** - Specifies the filename of the generated ROM. Using `output "name.n64", create` tells the assembler to generate a completely new ROM from scratch. +* **origin** - Sets the current positional cursor within the output ROM file, which dictates exactly where the following bytes of code will be physically placed. +* **fill** - Used to write zero-padding into the ROM. + +Here is an example of what the top of your main assembly file will look like: +``` +arch n64.cpu +endian msb +output "lesson2.n64", create +fill 1052672 +``` + +### The Purpose of Fill +When the N64 boots, it automatically copies the first 1 Megabyte of the game cartridge into the console's RAM. +To prevent the console from copying garbage memory if the game is smaller than 1MB, developers pad the ROM with zeros. + +The value `1052672` is derived from adding the size of the 4KB header (`4096` bytes) to exactly 1 Megabyte (`1048576` bytes). + +## File Modularization Directives +It is crucial to understand the difference between these two keywords: +* **include** - Works like `#include` in C. It parses the external file as source code. If the file contains macros or constants, they are loaded into memory but no bytes are written to the ROM unless those macros are explicitly invoked. +* **insert** - Treats the target file as raw binary data. It grabs the file byte-by-byte and writes it directly to the output ROM at the exact physical location of the `insert` command. + +Example usage: +``` +include "lib/n64.inc" // Loads constants and macros, writes nothing yet. +insert "n64_bootcode.bin" // Physically dumps 4KB of raw binary boot code here. +``` + +--- +## The N64 Header + +### Data Width Keywords +When manually constructing the header or laying out data, you use specific keywords to tell `bass` how many bytes to allocate for the literal value: + +* **db** - Data Byte (1 byte / 8-bit) +* **dw** - Data Word (4 bytes / 32-bit). Note: A "word" on the MIPS architecture is strictly 32 bits. +* **dd** - Data Double (8 bytes / 64-bit) + +Strings can be placed easily using `db`. The N64 header allows for a 27-character string name: +``` +db "MY FIRST N64 GAME " // Pads the remaining space with spaces +``` + +### CRC Calculation +The header also contains two placeholder words for the CRC (Cyclic Redundancy Check) checksums. The N64 boot process calculates the checksum of the first megabyte and compares it to these header values. If they do not match, the game will not boot on hardware. + +Because the CRC requires the final compiled ROM, the assembler leaves placeholder `dw` values. You must run a secondary tool-such as `sum64` or `chksum64`-as a post-assembly step in your build script to calculate the true CRC and inject it back into the header. + +--- +## Debugging in MAME +In the MAME debugger command line, use the `bp` (breakpoint) command: +``` +bp 80000400 +``` + +Address `0x80000400` is conventionally where control is handed over to the user's game loop. From there, you can press `F10` (Step Over) or `F11` (Step Into) to walk through the instructions line by line while inspecting the MIPS registers. + +--- +# Lesson 003 - Registers and First 6 Instructions +This section covers the MIPS architecture fundamentals, register layout, and foundational instructions. + + +## Memory Hierarchy +The MIPS architecture is referred to as a register architecture because all data must be loaded into a register, operated upon, and then written back out to memory. + +The typical flow follows this speed hierarchy (fastest to slowest): +* **Registers** - Located physically at the center of the CPU, these operate with zero latency. +* **Cache** - The N64 MIPS CPU has separate Data and Instruction caches. +* **Console RAM** - Fast, dynamically allocated memory. +* **Cartridge ROM** - The slowest medium of the immediate hierarchy. + +## MIPS Register Architecture +While you can technically use any register for anything (except register `0`), developers adhere to strict conventions to ensure code compatibility: + +* **zero (r0)** - Hardwired to the value `0`. Any attempt to write to it fails silently. +* **at (r1)** - Assembler Temporary. Reserved for assembler pseudo-instructions. +* **v0-v1 (r2-r3)** - Used exclusively for function return values. +* **a0-a3 (r4-r7)** - Used to pass arguments into functions. +* **t0-t9 (r8-r15, r24-r25)** - Temporaries. Function-local variables that do not need to be saved to the stack before calling another function. +* **s0-s8 (r16-r23, r30)** - Saved registers. Global variables; if a function modifies these, it must back up the original value to the stack and restore it before returning. +* **k0-k1 (r26-r27)** - Kernel variables. Strictly reserved for system exception handling. +* **sp (r29)** - Stack Pointer. Used to save context during function calls. +* **ra (r31)** - Return Address. Populated by Jump-and-Link instructions so the CPU knows where to return after a function call completes. + +--- +## Assembly Syntax and Formatting +* **Whitespace is ignored** - Tabs or spaces are purely for human readability. +* **Instruction format** - The line begins with the instruction mnemonic, followed by 1 to 4 parameters separated by commas. +* **Right-to-Left evaluation** - For most instructions, the destination register is listed first on the left, but conceptually the operation evaluates the right-hand elements and places the result into the left. +* **Exception: sw** - The Store Word instruction works left-to-right (take the data on the left, store it to the address on the right). + +--- +## Foundational MIPS Instructions + +### Loading Immediate Data +An immediate instruction incorporates literal data directly inside the instruction's opcode itself, rather than reading it from RAM. + +* **lui (Load Upper Immediate)** - Takes a 16-bit constant and loads it into the upper 16 bits of the 32-bit space of a register, padding the lower 16 bits with zeros. +* **addi (Add Immediate)** - Adds a literal constant to the value of a source register and stores the result. + +--- +### Memory Storage +* **sw (Store Word)** - Grabs a 32-bit word from a register and writes it into memory. It takes a destination address and an offset value. MIPS also has variants like `sb` (Store Byte), `sh` (Store Halfword), and `sd` (Store Double/64-bit). + +### Control Flow +* **j (Jump)** - Unconditionally shifts execution to a specific label/address. An infinite loop can simply be `j loop_label`. +* **nop (No Operation)** - Instructs the CPU to do absolutely nothing for one cycle. + +### Delay Slots +MIPS architecture relies heavily on Delay Slots-a quirk where the instruction placed immediately after a branch or jump is executed before the jump actually takes effect. This happens because the CPU pipeline has already fetched the next instruction while calculating the jump destination. During early development, it is common practice to simply place a `nop` in the delay slot to prevent execution errors. + +## Sign Extension +When loading 32-bit values into the N64's 64-bit registers, the CPU performs Sign Extension. + +If the highest bit (the sign bit) of the 32-bit value is `1` (indicating a negative value in a signed integer), the CPU extends that `1` across the entire upper 32 bits of the 64-bit register. This is why memory addresses frequently appear in the debugger padded with `F`s (e.g., `FFFFFFFFBFC00000`). While initially confusing, the N64 memory management unit largely ignores the upper 32 bits when addressing 32-bit software space. + +--- +# Lesson 004 - Memory Mapped Hardware and Video Init +This section details the Nintendo 64 memory mapping, hardware interfaces, and the assembly required to initialize the video subsystem. + + +## The Flat Memory Map +When the console boots, the BIOS places the MIPS processor into a 32-bit kernel mode. This provides a 4 Gigabyte (`0x00000000` to `0xFFFFFFFF`) address space. Even though 64-bit mathematics are available, memory addressing remains firmly in 32-bit. + +This flat structure makes assembly programming relatively straightforward because all internal systems-such as the Video Interface (VI), Audio Interface (AI), Peripheral Interface (PI), and Serial Interface (SI)-are mapped directly to specific addresses. You do not need complex port configurations; you interact with the console's hardware simply by reading and writing to standard memory addresses. + +### Cached vs. Uncached Memory +These address ranges actually point to the exact same physical memory on the motherboard: + +* **0x80000000 (Cached)** - Operations hit the CPU caches first. While reads from the cache take just 1 CPU cycle, writes stay in the cache until manually flushed to physical RAM. +* **0xA0000000 (Uncached)** - Bypasses the internal CPU cache entirely and interacts directly with physical RAM. + +For example, `0x80000400` and `0xA0000400` access the identical location in memory. When updating hardware subsystems like the Video Interface, you must either write to the `0xA` uncached range or write to the `0x8` cached range and remember to trigger a cache flush command so the hardware actually receives the data. + +## Initializing the Video Interface (VI) +When writing values to configure the Video Interface, two technical boundaries exist: + +* **Resolution Limits** - The hardware only outputs at `320x240` or `640x480`. Attempting to render non-standard internal resolutions will just draw them inside the standard 320x240 canvas surrounded by physical black borders. +* **Color Depth** - The standard format is 16 Bits-Per-Pixel (BPP). The n64 structures this as an RGBA 5-5-5-1 layout (5 bits Red, 5 bits Green, 5 bits Blue, and 1 bit Alpha transparency). + +A fun trick during early development: Setting the frame buffer origin address to point to the start of your game code memory (e.g., `0xA0001000`) will force the VI to render your compiled assembly instructions to the television screen as blobs of static color data. + +## Assembly Quality of Life Tricks +Here are techniques commonly used in MIPS projects: +* **Pseudo-instructions** - The `li` (Load Immediate) command doesn't actually exist in the MIPS CPU. It is a pseudo-instruction that the assembler automatically splits into two real instructions at compile time: `lui` (Load Upper Immediate) and `ori` (Or Immediate). This keeps your source code highly readable without sacrificing exact register control. +* **Hexadecimal Ticks** - Reading long memory addresses is error-prone. The `bass` assembler allows inserting a single quote tick `'` anywhere inside a hexadecimal number as a visual separator (e.g. `0x8000'0000`). It compiles the same but is far easier to read. +* **Compile-time Math** - Mathematical functions can be placed directly in the source file, such as configuring resolutions via `320 * 240`. The assembler evaluates this calculation before generating the ROM, costing zero CPU cycles during gameplay. +* **NOP Padding** - Using three consecutive `nop` (No Operation) instructions creates an obvious blank block inside the MAME memory debugger. This is an excellent tactic for placing visual boundaries between distinct functions or initialization loops. + +--- +# Lesson 005 - Draw Line & Branching Delay Slot +This section covers the fifth technical walkthrough by Fraser MIPS, focusing on drawing basic lines to the screen and understanding the nuances of the MIPS pipeline and delay slots. + + +## Frame Buffer Memory Positioning +A standard practice is to place the frame buffer exactly at the 1 Megabyte mark (`0x00100000`). + +To set this up cleanly using the assembler: +* Convert 1 Megabyte to bytes: `1024 * 1024 = 1,048,576 bytes`. +* Convert to hexadecimal: `0x100000`. +* Assign this as your VI Origin (Video Interface Origin) pointer. + +--- +## Pixel Coordinate Math +The formula for finding the offset of a single pixel is: + +((Y_Position * Screen_Width) + X_Position) * Bytes_Per_Pixel +For example, to start a line 15 rows down and 110 columns in on a 16-bit (2 bytes per pixel) display: +`((15 * 320) + 110) * 2` + +This yields the literal memory offset that should be added to your frame buffer's base address to locate the exact destination for your pixel color data. + +--- +## Writing 32-bit Colors +You achieve this by loading the same 16-bit color constant into both the upper and lower halves of a temporary register: + +* **lui** - Loads the 16-bit color into the upper half of the register. +* **ori** - Loads the identical 16-bit color into the lower half of the register. + +Now, a single `sw` (Store Word) command writes two adjacent pixels to the frame buffer simultaneously. + +## Loop Construction +MIPS favors a do-while loop structure. The typical flow is: +* Calculate the starting pixel address (`t1`). +* Calculate the ending pixel address (`t2`). +* Store the pixel color into the address at `t1`. +* Increment the pointer `t1` by 4 bytes (`addi t1, t1, 4`). +* Compare `t1` and `t2`. If they are not equal, branch back to Step 3 (`bne t1, t2, loop_label`). + +## The MIPS Pipeline and Delay Slots +The **Branch Delay Slot** is the single instruction located *immediately after* a branch or jump command. Because of how the pipeline fetches instructions, this slot is executed *before* the jump actually takes effect. + +### Pipeline Rules and Performance +* **Register-to-Register (e.g., `addi`)**: These take 5 pipeline cycles. Placing one in a branch delay slot is the most efficient use of CPU time, essentially granting you a "free" instruction calculation while the branch evaluates. +* **Load and Store (e.g., `sw`)**: These are blocking operations. If placed in a delay slot, they halt the pipeline, taking 11 pipeline cycles (wasting roughly 3 clock cycles). Do not place them in delay slots. +* **Branch inside a Branch**: Placing a jump or branch inside the delay slot of another jump causes completely unpredictable execution behavior and should be strictly avoided. +* **Pseudo-instructions**: Never place pseudo-instructions (like `la` or `li`) inside a delay slot. They can secretly expand to multiple literal instructions during assembly, meaning only half of the intended operation will fit into the single delay slot, breaking your code. + + +**Best Practice:** If you cannot find a suitable register-to-register calculation to place in a delay slot, always use a `nop` (No Operation) to keep the pipeline stable. + +--- +# Lesson 006 - Draw Vertical Line & Delay Slot Optimization +This section covers the sixth technical walkthrough by Fraser MIPS, detailing the structural changes needed to draw vertically and how to implement a practical delay slot optimization. + + +## Vertical Line Logic and Coordinate Math +Instead of an end address, a vertical line loop relies on a specific **counter register** (e.g., `t2`) that decrements on each pass, terminating when it hits zero. This is easily checked using the MIPS `zero` register (`r0`). + +### The Screen Pitch Trap +When moving horizontally, memory is perfectly linear. When moving vertically, you must jump down an entire row in memory. + +A common bug when calculating this jump is forgetting about the pixel data size. If the screen is `320` pixels wide, you do not simply add `320` to the pointer to move down one row. You must multiply the width by the **Bytes-Per-Pixel (BPP)**. + +For a 16-bit display (2 bytes per pixel), the mathematical stride (or "pitch") is: +`320 * 2 = 640 bytes`. + +If you incorrectly add just `320`, the N64 will write halfway across the screen horizontally rather than directly below, resulting in strange graphical glitches like drawing multiple half-height lines diagonally. + +## Practical Delay Slot Optimization +A typical vertical line loop might evaluate like this: + +* `addi t2, t2, -1` (Subtract 1 from the counter) +* `addi t1, t1, 640` (Move memory pointer down one screen row) +* `bne t2, zero, loop_label` (Branch back if counter is not zero) +* `nop` (Delay slot buffer) + +To optimize this and save execution time, you can pull the counter subtraction out of the main loop body and place it directly into the branch delay slot: +* `addi t1, t1, 640` +* `bne t2, zero, loop_label` +* `addi t2, t2, -1` (Executes "for free" while the branch resolves) + +Because the CPU always evaluates the delay slot before taking the jump, the counter is safely decremented on every pass, speeding up the geometry rendering loop. + +# Lesson 007 - bass Macros and Debugger Scripts +This section covers the seventh technical walkthrough by Fraser MIPS, focusing on code restructuring using `bass` assembler macros and automating the MAME debugger. + + +## Restructuring with Compile-Time Macros +It is crucial to understand that `bass` macros evaluate strictly at **compile-time**. When the assembler encounters a macro call, it literally copies and pastes the underlying instruction block into the compiled ROM at that exact location. It does not perform a function jump (`jal`). If you invoke a large macro 20 times, the code is duplicated 20 times, heavily inflating the ROM size. + +### Macro Syntax Rules +When declaring a macro in `bass`, you must follow strict syntax constraints: + +* The macro must be declared *above* where it is used in the source file. +* The opening curly brace `{` **must** reside on the exact same line as the macro declaration. +* The closing curly brace `}` can be on its own line. + +Example of wrapping the Video Interface setup: +```c +macro init_video() { +lui t0, 0xA440 +sw zero, 0x0010(t0) +// ... extra instructions ... +} +``` + +### Handling Macro Parameters +Because macros are compile-time text replacements, the passed arguments do not automatically land in CPU registers. You must explicitly load the parameter placeholder into a register inside the macro using pseudo-instructions like `la` (Load Address) or `li` (Load Immediate). +```c +macro screen_setup(width, height, origin) { +la t0, {origin} +li t1, {width} +// Now t0 and t1 contain the passed parameters +} +``` + +## Automating the MAME Debugger +To automate breakpoints, create a simple text file (e.g., `n64_debug.txt`) in your working directory and populate it with standard MAME debugger commands: +```c +bp 80000400 +wp 80000400, 4, rw +``` + +### Advanced Watchpoints +The `wp` command in the script above sets a **Watchpoint**. Unlike a standard breakpoint that halts execution when the Program Counter reaches a line of code, a watchpoint halts execution whenever a specific memory address is accessed. + +The parameters `80000400, 4, rw` instruct MAME to halt if the 4-byte range starting at `0x80000400` is either read (`r`) or written to (`w`). This is an incredibly powerful tool for tracking down exactly which function is modifying a variable. + +--- +### Loading the Debug Script +To use the script, you append the `-debugscript` parameter to your `debug.bat` launch file: +```bash +mame64 -debug -log -verbose n64 -window -cart "%ROM_PATH%" -debugscript "n64_debug.txt" +``` + +When MAME launches, it will execute the commands in the text file and halt at the system reset vector. Simply press `F5` to resume execution, and MAME will instantly warp to your custom `80000400` breakpoint. + +--- +# Lesson 008 - Fonts Part 1: Macros and 1-Bit Expansion +This section covers the eighth technical walkthrough by Fraser MIPS, introducing custom fonts and how to manipulate 1-bit per pixel assets for the N64's 16-bit display. + + +## 1-Bit Fonts on the N64 +The standard ASCII table contains 32 non-printable control characters at the beginning. If your font starts at the first printable character (the Space character), you can easily find the correct graphic by subtracting `32` from the character's standard ASCII decimal value. + +Because of the 1bpp density, an entire 8x8 ASCII font set requires extremely little memory-roughly 760 bytes. However, the N64 hardware only draws in 16-bit or 32-bit color depths. Therefore, before the font can be drawn to the screen, a routine must parse the 1bpp data and expand it into full 16-bit colors in RAM. + +## Data Inclusion and Alignment +Always `insert` external binary assets at the very end of your source file, far away from your program loops. + +### Byte Alignment +When inserting binary files, it is highly recommended to enforce byte alignment. You can use the `align` macro in `bass` to force the assembler to pad the file with zeros until the data sits on a clean boundary. +```c +align 8 +insert "font.bin" +``` +Aligning data to an 8-byte boundary is a defensive programming habit that prevents critical crashes when reading blocks of memory into hardware systems like the DMA (Direct Memory Access) controller later on. + +--- +## File Structure Conventions +* **.inc files**: Used exclusively for macros and constants. Including these at the top of your main file will not write any arbitrary bytes to the ROM. +* **.s files**: Used exclusively for pure assembly routines. These should be included carefully, typically at the bottom of your main file, so the routines do not execute accidentally during standard program flow. + +## Jump and Link (JAL) +Instead, the macro should only prepare the arguments and immediately call a single, shared assembly routine using **Jump and Link (`jal`)**: +```c +macro init_font(dest, fg_color, bg_color) { +li a0, {dest} +li a1, {fg_color} +li a2, {bg_color} +jal expand_font_routine +nop // Delay slot +} +``` + +The `jal` instruction serves two purposes: +* It jumps to the target label (`expand_font_routine`). +* It automatically saves the address of the *next* instruction into the **Return Address (`ra`)** register. + +Once the `expand_font_routine` finishes its work, it terminates with a **Jump Register (`jr ra`)** instruction, sending the CPU straight back to where the macro was initially called. + +--- +## The Delay Slot Pseudo-Instruction Trap +**Never place an `li` (Load Immediate) into a branch delay slot.** + +`li` is a pseudo-instruction. The assembler automatically breaks it down into *two* separate hardware instructions (`lui` and `ori`). The branch delay slot is strictly hardware-enforced to hold only *one* single instruction. If you place an `li` there, only the `lui` half will execute before the jump takes effect, resulting in a corrupted parameter and a broken font initialization. + +If you must optimize a parameter load into a delay slot, explicitly write the exact single hardware instruction (like `ori` or `addi`) yourself. \ No newline at end of file diff --git a/pages/consoles/nes/Super-Mario-Bros.md b/pages/consoles/nes/Super-Mario-Bros.md index 80f36625..6613ff14 100644 --- a/pages/consoles/nes/Super-Mario-Bros.md +++ b/pages/consoles/nes/Super-Mario-Bros.md @@ -388,9 +388,7 @@ By setting bit 4 to 1 (0x10) (with `| 0x10`), the code configures the PPU to use By clearing the lower nibble (with `& 0xF0`), the code is explicitly resetting bits 0–3 to 0. This ensures that specific settings for nametable selection, VRAM increment, and pattern table addresses are cleared. This can be important if the code needs a clean slate, especially if these bits were previously set to something that could conflict with the desired behavior. * **Reset Specific Settings** - By clearing the lower nibble (`& 0xF0`), the code is explicitly resetting bits 0–3 to `0`. This ensures that specific settings for nametable selection, VRAM increment, and pattern table addresses are cleared. This can be important if the code needs a clean slate, especially if these bits were previously set to something that could conflict with the desired behavior. - * **Avoid Unintended Behavior** - If the lower nibble were not cleared, any leftover settings in bits 0–3 could cause unintended changes in how the PPU handles background rendering or sprite patterns. For example, if bit 3 were set to `1` instead of `0`, the background would use the first 4 KB of the pattern table instead of the second 4 KB, which could result in incorrect graphics being displayed. - * **Explicit Control** - Clearing the lower nibble provides explicit control over which bits are set in the `PPUCTRL` register. This is especially important in NES development, where fine control over the PPU is crucial for correct rendering. #### What are the Lower nibble bytes doing? diff --git a/pages/consoles/ps1/psx-exe.md b/pages/consoles/ps1/psx-exe.md index afa9c363..4cf1825c 100644 --- a/pages/consoles/ps1/psx-exe.md +++ b/pages/consoles/ps1/psx-exe.md @@ -5,6 +5,7 @@ tags: - sdk - fileformats title: PSX-EXE Format +category: ps1 image: /public/psx-exe.png permalink: /ps1-exe breadcrumbs: @@ -18,32 +19,188 @@ recommend: - ps1 - fileformats editlink: /consoles/ps1/psx-exe.md +updatedAt: '2026-04-11' --- -The PSX-EXE executable file format is a format similar to the standard UNIX ELF format. -It is used on the Sony PlayStation 1 and it is a MIPS 32-bit executable. It contains both code and data. +The PS-X EXE format is the PlayStation 1's main "load this into RAM and jump to it" executable format. +It is used for both retail discs and homebrew. -In order to use tools like the RetDec decompiler we need to convert the exe format into elf, and in order to run on the PlayStation we need to convert compiled elf files into exe files. +Despite the name, it is not really similar to ELF. +A PS-X EXE is a fixed-size header followed by a flat binary blob. +The blob is copied to a specific RAM address and executed. -This document will contain my findings with regards to the PSX-EXE format. +In practice you normally build an ELF first (because toolchains and linkers understand ELF well). +Then you convert ELF to PS-X EXE for running on console or in emulators. +For reverse engineering you often do the inverse: treat a PS-X EXE as a raw binary and re-wrap it as an ELF (or import it as "raw" with a base address). -Some Information about the format: -* Sony's CD player can't read executables file that aren't multiple of 2048 bytes [^1] +Some quick facts about the format: +* **Header size** - The header is `0x800` bytes (2048 bytes), i.e. exactly one CD-ROM sector [^2] [^5] [^6] +* **Payload location** - The actual program data begins at file offset `0x800` [^2] [^5] [^6] +* **CD alignment** - The total file size is usually padded up to a multiple of 2048 bytes [^1] [^5] [^6] +--- +## Glossary of Key Terms +If you are new to PS1 executable terminology, this quick glossary should help: + +* **ELF** - A standard executable format used by many Unix-like toolchains. +* **PC** - Program Counter, the address the CPU will jump to when starting the program. +* **GP** - The MIPS `$gp` global pointer register, used for "small data" accesses. +* **SP** - The MIPS `$sp` stack pointer register. +* **BSS** - Uninitialized globals that should start as zero. +* **objcopy** - GNU binutils tool used to transform object/executable formats (for example, ELF to raw binary). + +--- # Useful Sources -* ELF2EXE source code - https://github.com/cetygamer/psxsdk/blob/master/tools/elf2exe.c +These links are worth keeping open while reading the header tables below: +* **PSXSDK elf2exe** - A minimal ELF to PS-X EXE converter (`tools/elf2exe.c`) that shows which header fields are required in practice [^3] +* **PS-X EXE header notes** - A readable breakdown of the common header fields and offsets [^2] +* **Net Yaroze User Guide** - An official document that describes PS-X EXE layout and the key fields expected by the loader (entrypoint, GP, and the "data without initial values" region) [^5] +* **BIOS Exec behaviour** - Useful when you want to know which fields the BIOS `Exec` function actually reads (PC, GP, stack, memfill) [^4] + +--- +# High-Level File Layout +A PS-X EXE is a 2048-byte header followed by the payload. +This is the layout you will see in most files: + +```text +0x0000..0x07FF Header (0x800 bytes) +0x0800.. Payload (flat binary to copy into RAM) +... Optional padding up to a 2048-byte boundary +``` + +--- +# Header Fields +The table below lists the fields you will most commonly care about when reversing or generating PS-X EXEs. +All multi-byte integers are little-endian. + +Offset | Size | Name | Description +--- | --- | --- | --- +0x00 | 8 | Magic | ASCII `PS-X EXE` +0x08 | 8 | Reserved | Usually zero +0x10 | 4 | Initial PC | Initial PC value (entrypoint) +0x14 | 4 | Initial GP | Initial GP value +0x18 | 4 | Destination address | RAM address where the payload (from `0x800`) will be copied [^6] +0x1C | 4 | Payload size | Bytes to load from the file body (excluding the `0x800` byte header). The kernel expects this to be a multiple of `0x800`. [^6] +0x20 | 4 | Data address | Optional "data section" address. Usually zero in most executables. [^6] [^7] +0x24 | 4 | Data size | Optional "data section" size in bytes. Usually zero in most executables. [^6] [^7] +0x28 | 4 | BSS start | Uninitialized data (BSS) start address. Also used as the BIOS "memfill" start. [^6] [^4] +0x2C | 4 | BSS size | Uninitialized data size in bytes. Also used as the BIOS "memfill" size. [^6] [^4] +0x30 | 4 | Stack base | If non-zero, BIOS `Exec` sets SP and FP to `stack_base + stack_offset`. [^6] [^4] +0x34 | 4 | Stack offset | Added to stack base by BIOS `Exec`. [^6] [^4] +0x38 | 0x14 | Exec reserved | Must be zero in the file. Used by BIOS `Exec` to save caller registers when chaining executables. [^6] [^4] +0x4C | 0x7B4 | Marker and reserved | A region string often set to something like "Sony Computer Entertainment Inc. for North America area" followed by zero padding. The BIOS does not verify it. [^6] +0x800 | ... | Payload start | Program data begins here (copied to the load address) + +When using the BIOS `LoadTest/Load` functions, the BIOS copies header bytes `0x10..0x4B` into a separate `headerbuf` structure. +In PsyQ documentation this `headerbuf` layout is the `EXEC` structure (PC, GP, text/data/BSS addresses and sizes, and stack fields). [^7] +The BIOS `Exec` function then reads the PC/GP/stack/memfill values from that buffer and starts the program [^4] +This means the ASCII marker at `0x4C` is not part of the data structure that `Exec` reads [^4] + +--- +# BIOS Load and Exec Semantics +The key thing to know is that the BIOS/kernel does not execute the file "in place". +It reads the header, copies the payload to RAM, optionally clears a memory range, and then jumps to the entrypoint [^6] [^4] + +The standard sequence is: +* Call `LoadTest` to parse the PS-X EXE header into an in-memory `headerbuf` (`0x10..0x4B` from the file header) [^4] +* Call `Load` to additionally copy the payload to the destination address (and flush caches) [^4] +* Call `Exec(headerbuf, param1, param2)` to clear the BSS/memfill range, set up registers, and jump to the entrypoint [^4] + +Some details that affect real programs and reverse engineering: +* **Memfill is word-based and slow** - The BIOS memfill runs word-by-word, so the BSS address and size must be multiples of 4. It also runs in slow ROM, so large memfills are expensive. [^6] +* **The Exec reserved region is live state** - `Exec` saves the caller's `RA`, `SP`, `R30`, `R28`, `R16` into the reserved region (`0x38..0x4B`) in the `headerbuf` structure, not onto the stack. [^6] [^4] +* **Stack fields are context dependent** - If the stack base is zero, `Exec` leaves the caller's stack unchanged. Boot executables often end up using the `SYSTEM.CNF` stack instead of the EXE header values. [^6] [^4] +* **Two parameters are passed to the entrypoint** - `param1` and `param2` are passed in `R4` and `R5`. Many boot flows end up passing `R4=1` and `R5=0`. [^6] [^4] +* **Return-to-caller is possible (sometimes)** - A non-boot executable can return to the caller by jumping to the incoming `RA` (and by preserving stack/register conventions). If the boot executable returns to the BIOS, the BIOS typically locks up. [^6] + +--- +# Boot Executable and SYSTEM.CNF Notes +On CD-ROM, the first executable is normally selected via `SYSTEM.CNF` [^6] -# EXE Header -The table below lists the relevant entries. +A typical `SYSTEM.CNF` includes: +* **BOOT line** - Path to the boot executable, plus an optional argument string +* **STACK** - The stack top used by the boot process +* **TCB/EVENT** - Kernel configuration for threads and events -Name | Length | Description ---- | --- | --- -PSX Magic Number | 8 | Spells out 'PS-X EXE' -Unknown | 16 | ??? -Initial Program Counter | 4 | e.g 0x80010000 (stored opposite way around due to little endian) -Global Pointer | 4 | e.g 0x0009B000 +The kernel can copy the optional `BOOT` argument string to RAM at `0x00000180`, where the executable can read it if it wants to implement a command line. [^6] +--- +# Deep Dive Into PSXSDK elf2exe +The PSXSDK `elf2exe.c` tool is intentionally small. +It does not parse ELF program headers or sections. +Instead, it shells out to objcopy to turn the ELF into a flat binary. +Then it writes a PS-X EXE header with a few hard-coded defaults, and appends the binary blob. + +This is the rough flow of the tool: +* **Write header skeleton** - Write the magic at `0x00`, then `fseek` around to fill a handful of fields [^3] +* **Hard-code entrypoint and destination address** - It writes `0x80010000` into both Initial PC (`0x10`) and Destination address (`0x18`) [^3] +* **Optionally set GP** - It writes the Initial GP (`0x14`) from `-gp=`, defaulting to `0` [^3] +* **Hard-code stack** - It writes `0x801FFFF0` at `0x30` (and leaves the stack offset at `0`) [^3] +* **Write an ASCII marker** - It writes a region string at `0x4C` selected by `-mark_jpn`, `-mark_eur`, or `-mark=` [^3] +* **Run objcopy** - It calls `objcopy -O binary input.elf input.elf.bin` [^3] +* **Append payload at 0x800** - It copies `input.elf.bin` into the output file starting at `0x800` [^3] +* **Pad to 2048 bytes** - It extends the output file to a multiple of 2048 bytes [^3] +* **Backpatch the payload size** - It writes `(final_file_size - 0x800)` into the Payload size field at `0x1C` [^3] + +--- +## Header Values Written by elf2exe +If you are sanity-checking an output file in a hex editor, these are the key offsets and values written by `elf2exe.c` [^3] + +Offset | Field | Value written by PSXSDK elf2exe | Notes +--- | --- | --- | --- +0x00 | Magic | `PS-X EXE` | Always written +0x10 | Initial PC | `0x80010000` | Hard-coded +0x14 | Initial GP | `-gp=` (default `0x00000000`) | Supported but not listed in the `usage:` help text +0x18 | Destination address | `0x80010000` | Hard-coded +0x1C | Payload size | `(aligned_output_size - 0x800)` | Backpatched after padding +0x30 | Stack base | `0x801FFFF0` | Hard-coded +0x34 | Stack offset | `0x00000000` | Left untouched (the file is sparse/zero-filled here) +0x4C | Marker | Region string | `-mark_jpn`, `-mark_eur`, or `-mark=` (default: USA string) + +--- +## Toolchain Assumptions +The converter relies on `objcopy` to flatten the ELF into a raw blob. +In `elf2exe.c` the command is built using the `OBJCOPY_PATH` macro, which must be defined when compiling the tool (or patched into the source) [^3] + +It also writes the intermediate file by simply appending `.bin` to the input filename. +So an input named `main.elf` will produce an intermediate `main.elf.bin` before it is copied into the PS-X EXE and deleted again [^3] + +Two details matter a lot if you try to use this tool as-is: +* **It assumes a fixed link address** - Because it forces the destination address and PC to `0x80010000`, your ELF must be linked to run from `0x80010000`. + If your code is linked for a different address, the BIOS will copy it to the wrong place and jump to the wrong place. +* **It only fills a subset of the header** - Fields like Memfill start/size are left as zero, so the BIOS won't clear a BSS region for you. +There is also a small implementation gotcha in the file copy loop. +It uses `while(!feof(f)) { fgetc(); fputc(); }`, which typically writes one extra byte (`0xFF`) after the real payload. +If you depend on exact payload size, you should fix the loop (or be aware that the PS-X EXE may contain a single trailing junk byte before padding). +--- +# Reversing Notes +If you are importing a PS-X EXE into a disassembler, the easiest approach is usually to treat it as raw binary plus metadata from the header: +* **Base address** - Use Destination address (`0x18`) as the base address for the payload +* **Entrypoint** - Use Initial PC (`0x10`) as the entrypoint +* **Skip header** - Skip the first `0x800` bytes when importing, because that is the header + +For example, you can extract just the payload like this: + +```bash +dd if=GAME.EXE of=payload.bin bs=2048 skip=1 +``` + +Then import `payload.bin` as a raw MIPS little-endian binary at the destination address you read from the header. + +--- +# Related Formats +If you are dealing with PS1 discs or dev builds, you may also run into formats that are not plain PS-X EXE: +* **PsyQ .CPE** - A chunked "debug executable" format used by PsyQ toolchains. It can contain many small load chunks and explicit register settings for the entrypoint. [^6] +* **Custom relocatable executables** - Rarely, a disc can contain executables with magic like `PS-X EXR` that are not supported by the standard PSX kernel loader. [^6] + +--- # References -[^1]: https://www.linux-mips.org/wiki/PS1 +[^1]: [linux-mips PS1](https://www.linux-mips.org/wiki/PS1) +[^2]: [Zanneth PS-X EXE file format](https://zanneth.com/2020/04/06/psx-exe-file-format/) +[^3]: [PSXSDK elf2exe.c](https://github.com/cetygamer/psxsdk/blob/master/tools/elf2exe.c) +[^4]: [psx-spx BIOS kernel `Exec`](https://psx-spx.consoledev.net/kernelbios/#exec) +[^5]: [Net Yaroze Official Startup Guide (PDF)](https://www.psxdev.net/downloads/Net%20Yaroze%20Official%20-%20Startup%20Guide.pdf) +[^6]: [psx-spx CDROM File Formats (PS-X EXE and SYSTEM.CNF)](https://psx-spx.consoledev.net/cdromfileformats/) +[^7]: [PsyQ Run-Time Library Reference (EXEC structure)](https://psx.arthus.net/sdk/Psy-Q/DOCS/Devrefs/Libref.pdf) diff --git a/pages/consoles/ps2/SN-Systems-Network-Development-Kit-for-PS2.md b/pages/consoles/ps2/SN-Systems-Network-Development-Kit-for-PS2.md index 136fee08..c75c878a 100644 --- a/pages/consoles/ps2/SN-Systems-Network-Development-Kit-for-PS2.md +++ b/pages/consoles/ps2/SN-Systems-Network-Development-Kit-for-PS2.md @@ -67,21 +67,13 @@ One big bonus feature of the SN Systems NDK is that it actually supports not jus According to the official specifications of the NDK it claims to support more than just TCP/IP [4]: * TCP/IP - Transport Control Protocol / Internet Protocol - * UDP - User Datagram Protocol - * PPP - Point-to-Point Protocol (PPP is always built into the Stack irx file but will only be used when a modem driver is used) - * PPPoE - PPP over Ethernet - * ARP - Address Resolution Protocol (ARP will only be used when an Ethernet or DECI2 driver is loaded) - * ICMP - Internet Control Message Protocol - * DHCP - Dynamic Host Configuration Protocol - * CHAP - Challenge-Handshake Authentication Protocol - * PAP - Password Authentication Protocol ## NDK Analyzer diff --git a/pages/leaks/Nintendo/GigaleakNEWS05.md b/pages/leaks/Nintendo/GigaleakNEWS05.md index 971efcf8..c182535a 100644 --- a/pages/leaks/Nintendo/GigaleakNEWS05.md +++ b/pages/leaks/Nintendo/GigaleakNEWS05.md @@ -57,35 +57,20 @@ The archive preserves two distinct working environments: If you are new to SNES 3D development and Nintendo's internal tool ecosystem, this glossary will help: * **CAD** - Computer-Aided Design. Here, a proprietary 3D modeling and animation tool built by Nintendo for creating polygon geometry and animation keyframes on X11 workstations. - * **NCA** - Nintendo CAD Animation binary format. Compiled output from the CAD tool, optimized for SNES hardware execution. Contains both geometry and animation keyframes in a compact binary layout. - * **ANM** - Animation timeline source format. Text-readable keyframe data defining how 3D geometry transforms over time (skeletal animation, vertex morphing). - * **CAD Source** - `.cad` and `.txt` files containing 3D model definitions. The `.txt` format is ASCII vertex lists; `.cad` is the compiled binary model. - * **Transfer Protocol** - Mechanism for sending compiled models and animations from the Unix workstation to SNES development hardware via serial link or Ethernet. - * **Fundoshi** - Likely a Nintendo-internal CPU optimization variant. Represents SNES-specific compiled binaries and math libraries optimized for the 65C816 processor. - * **IBM Variant** - PC-compatible version of Kimura's utilities, allowing asset preview and testing on standard DOS/Windows workstations before final SNES compilation. - * **VRAM** - Video RAM used on SNES for tile data, background maps, and sprite attributes. Extremely limited (64 KB total), requiring careful asset management. - * **WRAM** - Work RAM (128 KB on SNES). Used for game state, sprite data, and runtime animation state. - * **EPROM** - Erasable Programmable Read-Only Memory. SNES development boards used 1MB EPROM chips; large games like SF2 required multiple chips. `partition.c` managed splitting ROM images across these boundaries. - * **Z-Buffer** - Depth buffer for 3D rendering. SNES has no hardware Z-buffer, so `depth.c` implements painter's algorithm (sorting polygons by depth). - * **X11** - Network-capable graphical display system used on Unix workstations. The CAD tool uses X11 for its GUI. - * **Skeletal Animation** - Animation system where a 3D model is defined by bones/joints in a hierarchy. Transformations (translation, rotation, scale) are applied to bones, and geometry deforms based on bone positions. - * **Keyframe Interpolation** - Smooth transitions between animation poses. Animators define key poses at certain frames; the system automatically tweens intermediate frames. - * **Painter's Algorithm** - Rendering technique that sorts polygons by depth and draws them back-to-front. Used on SNES because hardware Z-buffering is unavailable. - * **Mode 7** - SNES background rotation/scaling capability. Used in F-Zero for the track perspective effect. `cnvmode7.c` converts graphics to Mode 7 format. --- @@ -1021,11 +1006,9 @@ The **24 BGM modules** (`xlbgm01.bin` through `xlbgm24.bin`) suggest this was a * Sound effect playback * BGM sequencing * Real-time mixing/volume control - * **Sound Effects Library** (`xlsound.bin`, `xlsnd01` through `xlsnd04`) * Compiled SFX banks (weapon fire, explosions, footsteps) * Indexed by game state (which SFX to play for which action) - * **BGM Database** (24 × musical pieces) * Titles, composers, loop points * Orchestration (which instruments active in each section) @@ -1568,19 +1551,16 @@ Take fundoshi/depth.c (optimized for 65C816) * Modify transfer.c to output SF2-compatible `.nca` format * Create new stages or modify existing stages * Build custom ROM with replacement assets - * **Character Model Swaps** * Extract `.cad` files from stages * Modify geometry (smooth, sharpen, enlarge) * Recompile and test in emulator * Example: Create "Giant Andross" mod - * **Animation Editing** * Parse `.anm` keyframe format * Create custom animation editor * Blend animations (walk + run hybrid) * Slow-motion or speed-up effects - * **Palette Hacking** * Extract `.col` color palettes * Create new color schemes diff --git a/pages/tools/GameMaker.md b/pages/tools/GameMaker.md index 69c82d76..0163b5e4 100644 --- a/pages/tools/GameMaker.md +++ b/pages/tools/GameMaker.md @@ -474,11 +474,8 @@ In summary, **Game Maker 2.0** modernized the tool's interface and expanded its On the 23rd November 2001, Overmars released **Game Maker 3.0**, which was a milestone for the software's graphics and performance. The hallmark of version 3.0 was the introduction of **DirectX rendering support** for the first time [^5]. This had several important effects: * **Hardware-Accelerated Graphics:** By leveraging Microsoft DirectX (likely DirectDraw at this stage), Game Maker could now render graphics more efficiently. Games ran faster and could use full-screen modes and graphical effects that were not feasible under the old software-based renderer. This was a significant step up in capability, as it unlocked the potential for smoother animations and richer visuals. - * **Same Feature Set, But Faster:** Other than the new DirectX-powered renderer, version 3.0 did not radically change the game creation features introduced in 2.0. The user interface and workflow remained similar, but everything was generally more **polished and performant**. For instance, operations that previously might have lagged (like drawing many sprites) could now benefit from DirectX's blitting capabilities. In essence, 3.0 "implemented DirectX for the first time" to boost graphics handling [^5], while maintaining the drag-and-drop and GML systems as they were. - * **No Stand-alone Executable Yet:** It's worth noting that even with DirectX, Game Maker 3.0 still lacked an independent runtime or compilation to EXE. Games were executed via the Game Maker environment (or a packaged interpreter). The ability to create a true stand-alone game file was still not present at this stage, coming a bit later. - * **Minor 3.x Updates:** Following 3.0, a few minor revisions (3.1, 3.2, and 3.3) were released in 2001 to fix bugs and add minor improvements. These updates improved stability and further increased DirectX support, such as verison 3.1 which removed Exclusive mode in favour of DirectX in windowed mode (3.0 was only DirectX in fullscreen mode). Version 3.2 added new room options: more background options, multiple views, and transitions between rooms Overall, **Game Maker 3.x** dramatically improved the engine's under-the-hood performance. The use of DirectX was a turning point that allowed users to create more complex and graphically intense games than before [^5]. @@ -492,15 +489,10 @@ This helped Game Maker's community grow even more, as the quality and smoothness **Game Maker 4.0**, released on the 16th July 2001, was a complete overhaul of the software. Mark Overmars rewrote large portions of Game Maker from scratch for this version [^5], making sweeping changes to the interface, architecture, and capabilities. Important highlights of version 4.0 include: * **Entirely New Interface:** The IDE in Game Maker 4 was significantly redesigned. The layout and organization of resources were improved, giving the tool a more professional and user-friendly feel. In fact, the Game Maker 4.3 interface (the final revision of this line) looks very *familiar* even to users of much later versions – it established the general design paradigm that persisted in subsequent releases [^2]. This means that by 4.x, Game Maker had a resource tree, event selectors, and editors that resemble those used for years to come. - * **Introduction of Multiplayer Functions:** Version 4.0 was the first to include built-in support for basic multiplayer/networking features. A set of **MPlay networking functions** was added, allowing simple multi-computer play over a network or the internet. This was a notable expansion of Game Maker's capabilities beyond single-player games. Although the networking system was rudimentary (suitable for simple games or turn-based exchanges), it demonstrated Overmars's intent to broaden the engine's scope. - * **Standalone Executables (EXE) Export:** For the **first time**, Game Maker could compile games into independent executable files. With version 4, developers were no longer confined to sharing editable project files; they could **create a stand-alone Windows EXE** for their game and distribute it to others who didn't have Game Maker. Under the hood, this worked by bundling the game's resources with a runner program. The new feature was transformative - games made in GM4 could be run like any other Windows program [^7]. (This capability coincided with the introduction of a separate "game runner" module in the architecture). The addition of EXE output in 4.0 greatly increased Game Maker's appeal, as creators could publish their games more easily. - * **Continued DirectX Support:** Building on version 3, Game Maker 4 fully embraced DirectX for rendering. The rewrite likely optimized the use of DirectDraw and related technologies even further, making 2D drawing faster and enabling things like smooth sprite rotations and better transparency handling by default. The combination of DirectX acceleration *and* stand-alone export made GM4-generated games much closer to "real" indie games of the time. - * **New Icon/Branding:** Game Maker 4 introduced a new program icon (a **red gear/hammer icon**), replacing the icon used in versions 1–3 [^6]. This visually signaled a new era for the software. The red icon design continued to be used through versions 5, 6, and 7 [^6], indicating that GM4 set a branding precedent as well. - * **Game Maker 4.x Updates:** After 4.0's release, Overmars issued a few updates (4.1, 4.2 and 4.3) in 2001–2002 to refine the new system. By **Game Maker 4.3b** (released in 2002), the software was very stable and feature-rich for its generation [^2]. This period saw frequent updates, a growing library of user-made examples, and even the launch of the first community-made Game Maker magazine [^2]. The 4.x series firmly established Game Maker's core design; many long-time users started with version 4.2 or 4.3 and found the experience recognizable even in later versions. In summary, **Game Maker 4.0 was a landmark release**. It delivered a modernized, rewritten IDE, support for networking play, and the much-demanded ability to compile games into executables [^5] [^7]. The engine had matured considerably, and by the end of the 4.x cycle Game Maker was a robust tool for 2D game development. These changes propelled Game Maker into the "prominence" phase – the user community greatly expanded around this time, thanks in part to the newfound ease of sharing completed games. @@ -511,13 +503,9 @@ In summary, **Game Maker 4.0 was a landmark release**. It delivered a modernized Released in **April 2003**, **Game Maker 5.0** built upon the solid foundation of the 4.x series and introduced a couple of notable new features. It also marked a shift in Game Maker's distribution model from freeware to a shareware/registration model. Key points for version 5.0 include: * **External Files and Custom Data:** Game Maker 5 added support for using external files in games [^5]. This meant games could read and write files (such as saving custom data, configurations, or high scores to an external text file) more easily, and could include external resources. This opened the door for more complex game behavior (for example, loading level data from files, or modifiable content). Essentially, GM5 introduced new functions to handle files and perhaps binary data, giving developers more flexibility beyond the fixed resources in the editor. - * **Timelines:** Another major feature in 5.0 was the introduction of **Timelines** as a resource type [^5]. A timeline in Game Maker allows the creator to schedule actions to occur at specific steps (moments) during game execution. This is useful for coordinating sequences of events (for instance, scripting a cutscene or orchestrating waves of enemies in a shooter). The timeline editor let users create a list of actions indexed by time without writing code, which was a powerful addition to the drag-and-drop toolkit. - * **General Improvements:** Version 5 continued to improve overall stability and added smaller features. For example, there were likely new actions and functions (taking advantage of the external file capability), and quality-of-life improvements in the IDE. It also kept all the important features from 4.x: DirectX graphics, EXE output, etc., refining them further. By this time, Game Maker was quite feature-rich in 2D game mechanics, so 5.0's main innovations were about data and structure (files and timelines). - * **Registration System Introduced:** **Game Maker 5.0 was the first version that was not completely free**. Mark Overmars introduced a registration fee of $15 USD for the software [^2]. The initial approach was that Game Maker 5 could be downloaded for free, but it would run in a limited mode (with certain advanced features disabled and a **nag screen** at startup reminding users to register). Users could pay $15 to unlock the full "registered" version. This change was made to support ongoing development, as Overmars had previously only asked for voluntary donations [^2]. The **nag screen** (displayed when running the GM5 IDE or when launching games made with the unregistered version) became famous – it showed the Game Maker logo and a request to register [^2]. Once registered, Game Maker 5 allowed access to all features, which included things like using DLLs and other advanced functions (some of these pro-only features were added in minor updates or were present but locked for unregistered users). - * **Community Growth:** Alongside GM5's release, 2003 also saw the launch of the official Game Maker Community forums in their modern form [^2]. This greatly helped users share knowledge, and a surge of new users joined around this time, drawn by Game Maker's expanding capabilities. Many high-quality example games and tutorials from the community began appearing on the official site during the GM5 era [^2]. In essence, **Game Maker 5.0** was an evolutionary update that extended the engine's functionality into new areas like file I/O and event scheduling (timelines) [^5]. It also marked Game Maker's transition to a partly commercial product with the introduction of a registration fee [^2]. Despite some initial community resistance to paying for previously free software, the modest price and the promise of continued improvements kept Game Maker's user base growing. GM5's enhancements were particularly welcomed by more advanced users, as they allowed for games with persistent data and more complex scripted sequences. @@ -528,13 +516,9 @@ In essence, **Game Maker 5.0** was an evolutionary update that extended the engi **Game Maker 6.0** was released in October 2004 and represented another major technological upgrade for the engine. The most significant change was a **completely rewritten graphics engine using Direct3D** (part of DirectX) as the new backend [^5]. This brought substantial new graphical capabilities to Game Maker: * **3D Graphics Functions:** For the first time, Game Maker had built-in support for **3D graphics**. Using Direct3D allowed Overmars to expose functions for drawing 3D primitives, textured shapes, and basic 3D models. Version 6 introduced a set of GML functions (and possibly drag-and-drop actions) that let users create simple 3D scenes – for example, drawing 3D boxes, floors, walls, and even applying textures to them [^2]. This was a *big* change; while GM6 was still primarily a 2D game engine, adventurous users could now experiment with 3D (for instance, making simple first-person or 3D racing games). Many users remember seeing demo projects of 3D spinning cubes and primitive 3D engines soon after GM6's release. - * **Enhanced 2D Drawing:** Even for 2D games, the switch to Direct3D brought benefits. It made advanced effects easier – **alpha transparency** (translucency) was supported more smoothly, and **sprite rotation** and scaling became hardware-accelerated operations [^5]. Under the previous DirectDraw system, rotations and alpha blending were either not possible or had to be done via slow software routines. In GM6, one could rotate sprites or set their transparency and have Direct3D handle it efficiently, which opened the door to better visual effects in 2D games (like smooth object rotations, fading objects, particle effects, etc.). - * **Performance Improvements:** The use of Direct3D generally improved rendering performance across the board. Games that might have struggled with many objects on screen in GM5 could run faster in GM6 if they took advantage of the new graphics pipeline. Full-screen mode and resolution handling were also improved through Direct3D. - * **Minor Changes and Fixes:** Aside from graphics, GM6 continued to refine other aspects. It likely fixed bugs from GM5 and could have introduced minor features or adjustments in response to the community (for example, improvements to the sound engine or timeline system). The overall workflow of Game Maker remained consistent; the big differences were under the hood. - * **File Format and Compatibility:** Game Maker 6 used a new file format (.gm6) for saved projects, reflecting the engine changes. Notably, games made in GM6 were not backward-compatible with GM5 due to the new features. Overmars included a converter for GM5 -> GM6 projects, but once a project was in GM6 format, it couldn't be opened in older versions. This was a common pattern with each major release. Game Maker 6.0's introduction of Direct3D and 3D capabilities was a headline change widely discussed in the community [^2][^5]. Although the typical user base continued to make 2D games, they benefited from the enhanced visuals and effects made possible in this version. The inclusion of 3D functions was somewhat experimental but showcased Game Maker's flexibility. As a contemporary note, 2006 (during the GM6 era) also saw the publication of *"The Game Maker's Apprentice"* (a book by Mark Overmars and Jacob Habgood) which used Game Maker 6 to teach game development [^2]. This further boosted GM6's profile as an educational and hobbyist tool. @@ -545,15 +529,10 @@ Game Maker 6.0's introduction of Direct3D and 3D capabilities was a headline cha **Game Maker 7.0** was released on February 28, 2007, and it marked the beginning of the YoYo Games era [^5]. This version was the first published under a partnership with **YoYo Games Ltd.**, a UK-based startup co-founded by Sandy Duncan, which Overmars joined to help expand Game Maker's development and global presence [^2]. Version 7.0 introduced new features and changes both in functionality and in how the product was managed: * **Extension Packages:** The most touted new feature of GM7 was the ability to **extend Game Maker's functionality through extensions** [^5]. Overmars added a system where users could create and use *Extension Packages* (.gex files), which bundled custom GML scripts, actions, and resources into a reusable form. This meant that advanced users or third parties could add new libraries of functions to Game Maker without needing built-in support from Overmars. For example, one could create an extension to provide physics engine functions, new particle effects, or integration with external APIs, and then import that into Game Maker. This greatly increased the flexibility of the tool. Essentially, Game Maker became somewhat modular – features could be added via extensions, and Mark didn't have to hard-code every new idea into the main program. (In practice, many popular community-made extensions emerged after GM7's release.) - * **Resource Library Changes:** In prior versions, users could create their own drag-and-drop action libraries using a separate program (Library Maker). With GM7 and the extension mechanism, the way custom actions were handled changed. It integrated more smoothly to allow extended D&D actions via packages [^5]. - * **Changes in Asset Storage:** Game Maker 7 introduced a new format for saving projects (.gmk). One notable change was that sprites, sounds, and other resources could optionally be stored *externally* (to avoid bloating the main file). Also, GM7 used an encrypted format for its resource packages to deter easy decompilation of game files (starting with version 7.0's release candidates, game data was encrypted due to concerns over people creating other tools to import .gm6 files (**G-Java**, **LateralGM**)) [^5]. - * **YoYo Games Integration:** With YoYo Games involved, GM7 began tying into online features. YoYo Games launched a website for sharing Game Maker games (the "Sandbox"), and Game Maker 7 had menu links and features that integrated with this service. For instance, it offered easy uploading of games to the YoYo Games website. Additionally, the registration system changed: YoYo Games handled selling license keys, and the software required an internet connection to activate a license (a shift from the old offline registration of GM6). This was a significant change in how Game Maker was delivered – it reflected a more commercial, multi-platform ambition under YoYo Games. - * **Minor Feature Additions:** Besides extensions, GM7 added some other smaller improvements. For example, there were improvements to the sprite and image editors, new actions for particle systems, and better sound format support (GM7 introduced support for .ogg audio files for background music). It also improved the reliability of the new graphics engine introduced in GM6. However, *no major changes to the core engine (rendering or physics)* were made – GM7's games ran similarly to GM6's, with 2D and basic 3D via Direct3D. The emphasis was on extensibility and preparing for future platform support. - * **Platform and Community Notes:** Game Maker 7 was the last version that ran on Windows only (a separate port of GM7 for Mac was eventually created by YoYo Games in 2008, but that was a parallel product). The release of GM7 via the YoYo Games website also coincided with an expanding international user base, since YoYo's involvement brought marketing and more visibility. Mark Overmars was still the lead developer of Game Maker 7, but now backed by a team. In summary, **Game Maker 7.0** didn't radically change what you could make with Game Maker in terms of game genre or engine power, but it **expanded the software's openness and infrastructure**. With extension support, advanced users could push Game Maker further than before by adding new capabilities on their own [^5]. And with YoYo Games taking over distribution, Game Maker began evolving from a one-man project into a more professional product. This version set the stage for multi-platform targets and a larger community engagement that would fully manifest with subsequent versions. (Notably, there was a longer gap after 7.0 – it would be about two and a half years before the next version, as YoYo Games focused on community features and planning Game Maker's future[^2].) @@ -562,17 +541,11 @@ In summary, **Game Maker 7.0** didn't radically change what you could make with **Game Maker 8.0** (often just called *Game Maker 8*) was released on December 22, 2009 [^5]. It was the last major version of the "classic" Game Maker line developed with Mark Overmars's direct involvement. GM8 came after a lengthy gap and delivered numerous improvements to the user experience, though it didn't drastically change the engine's underpinnings. Notable features and changes in Game Maker 8.0 include: * **Revamped Script Editor:** One of the headline enhancements was a completely **revamped code editor window** for GML scripting [^5]. The new script editor had better syntax highlighting, auto-indentation, and a more user-friendly interface for writing code. This was a welcome improvement for users who wrote a lot of GML, making the coding experience smoother and more akin to standard programming IDEs. It included line numbers, find/replace functionality, and other conveniences that were lacking or rudimentary in previous versions. - * **Improved Image/Sprite Editor:** Game Maker 8 introduced a significantly improved built-in image editor for creating and editing sprites. The sprite editor got new tools and a better UI – for example, support for alpha transparency editing (RGBA), more drawing tools, and perhaps onion-skinning for subimages/animation previews. This meant users could do more pixel art and image touch-ups directly in Game Maker without needing an external graphics program. The overhaul made it easier to create higher-quality sprites and tiles within the IDE [^5]. - * **Import/Export of Resources:** GM8 added the ability to **import and export resources** (sprites, objects, scripts, etc.) between project files [^5]. This was implemented through a mechanism to save individual resources or groups of resources to an external file and then load them into another project. It greatly facilitated sharing and reusing code or assets. For instance, a user could export a monster object or a script from one game and import it into another without recreating it from scratch. This feature made Game Maker more modular and collaborative. - * **New Default Font and Minor UI Tweaks:** The appearance of the IDE was refreshed slightly – for example, GM8 used a different default font (Calibri) in the interface, which gave it a more modern look compared to the older versions that used MS Sans Serif. There were also new icons for some actions and minor layout adjustments. Overall, the IDE looked cleaner and more up-to-date in GM8. (This version also infamously introduced a new logo for Game Maker – a green circular "G" icon – chosen via a community contest, replacing the long-standing red ball icon [^6]. The logo change stirred some controversy in the community, but it was purely cosmetic and did not affect functionality.) - * **Removed Legacy Features:** In moving to GM8, some very old/obsolete features were pruned. For example, support for really outdated Windows versions was dropped and certain deprecated functions were removed or changed. This was part of cleaning up the codebase for the future. - * **Bug Fixes and Stability:** After the significant architectural changes in GM7 (with extensions and new file I/O) and the long development cycle, GM8 focused on stability. Many bugs from GM7 were fixed. The extension mechanism was still present, but more integrated. The game runner and executables produced were more stable on modern Windows OSes. Additionally, game performance saw minor improvements in some areas (though the engine was largely the same as GM7's, aside from the editor upgrades). - * **Monetization and Editions:** Game Maker 8.0 continued the paid registration model. In fact, YoYo Games adjusted the pricing around this time (GM8 Standard was priced around $25). There was still a Lite version available for free with certain features (like 3D and extensions) disabled, and a Pro/registered version that unlocked full capabilities [^5]. Activation was handled online via YoYo Games accounts. As the final version developed under Mark Overmars, **Game Maker 8.0** was a polished and user-friendly culmination of a decade of development. It **did not radically change the types of games one could make** (the engine was still 2D-focused with optional simple 3D, and used Direct3D8 for rendering just like GM7). However, it significantly refined the development experience - coding, painting sprites, and managing game assets became easier and more efficient in GM8 [^5]. The community received GM8 very positively; it became a stable workhorse for many hobbyist and educational projects in the early 2010s. (An update *Game Maker 8.1* would later be released in 2011 by YoYo Games, primarily to improve Windows Vista/7 compatibility and add minor features, but 8.0 was the last version where Overmars was deeply involved in the design.) diff --git a/scripts/format-docs.js b/scripts/format-docs.js index a7bb440e..55c1bf56 100755 --- a/scripts/format-docs.js +++ b/scripts/format-docs.js @@ -15,6 +15,7 @@ * table-pipes | col | → col (no leading/trailing pipe on rows) * table-blank text\ntbl → text\n\ntbl (blank line before table) * blank-before-heading text\n## → text\n\n## (blank line before headings) + * tight-lists * a\n\n* b → * a\n* b (no blank lines between list items) * hr-heading ---\n\n## → ---\n## (no blank between HR and heading) * heading-content ##\n\n txt → ##\n txt (no blank after heading before prose) * @@ -85,6 +86,11 @@ function makeFenceTracker() { }; } +/** True when a line is a Markdown list item marker (unordered or ordered). */ +function isListItemLine(ln) { + return /^\s*(?:[*+-]|\d+\.)\s+/.test(ln); +} + // --------------------------------------------------------------------------- // Per-line rules (applied while tracking fenced code block state) // --------------------------------------------------------------------------- @@ -324,7 +330,48 @@ function applyMultiLineRules(text, fixes) { return out.join('\n'); })(); - return after4; + // Rule: no blank line(s) between adjacent list items. + // e.g. * item a\n\n* item b → * item a\n* item b + // Uses protected-block tracking so fenced code, frontmatter, and capture + // blocks are never modified by this rule. + const after5 = (() => { + const lines = after4.split('\n'); + const out = []; + const isProtected = makeFenceTracker(); + let modified = false; + + for (let i = 0; i < lines.length; i++) { + const ln = lines[i]; + + if (isProtected(ln)) { + out.push(ln); + continue; + } + + if (ln.trim() === '') { + let prevIndex = out.length - 1; + while (prevIndex >= 0 && out[prevIndex].trim() === '') prevIndex--; + + let nextIndex = i + 1; + while (nextIndex < lines.length && lines[nextIndex].trim() === '') nextIndex++; + + const prev = prevIndex >= 0 ? out[prevIndex] : ''; + const next = nextIndex < lines.length ? lines[nextIndex] : ''; + + if (isListItemLine(prev) && isListItemLine(next)) { + modified = true; + continue; + } + } + + out.push(ln); + } + + if (modified) fixes.push('multiline: blank between list items'); + return out.join('\n'); + })(); + + return after5; } // --------------------------------------------------------------------------- From 75146f33ea0d50bf2226ebdd243c88c875585927 Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 19:28:05 +0100 Subject: [PATCH 03/13] Removed retro city rampage post and moved content into DOS page --- categories/consoles/DOS.md | 30 +++++++++++++++++++++ pages/consoles/pc/RetroCityRampage.md | 39 --------------------------- 2 files changed, 30 insertions(+), 39 deletions(-) delete mode 100644 pages/consoles/pc/RetroCityRampage.md diff --git a/categories/consoles/DOS.md b/categories/consoles/DOS.md index 1a2d37c8..56cdcf57 100644 --- a/categories/consoles/DOS.md +++ b/categories/consoles/DOS.md @@ -9,6 +9,7 @@ consoleimage: /public/consoles/Computer Old Design.png excerpt: Awesome list of DOS Game Development and Reverse Engineering information redirect_from: - /msdos + - /RetroCityRampage breadcrumbs: - name: Home url: / @@ -42,6 +43,13 @@ Note that if you are interested in reversing Windows bases PC games we have a se Note that if you are interested in the MSX PC we have a separate post on that topic: {% include_cached link-to-other-post.html post="/msx" description="For more information on the MSX check out this post." %} +## Glossary of Key Terms +If you are unfamiliar with the technical specifications of late 80s and early 90s PC hardware, this glossary provides context for the techniques mentioned: +* **Mode 13h** - A standard VGA graphics mode providing 320x200 resolution with 256 colors from a palette of 262,144. +* **PIT** - The Programmable Interval Timer (Intel 8253/8254), used for system timing and generating precise hardware interrupts. +* **IRQ0** - The highest priority hardware interrupt on the PC, typically mapped to the system timer. +* **Open Watcom** - A C/C++ compiler suite famous for its high-performance code generation for DOS extenders. + --- # DOS-era PC Hardware @@ -102,6 +110,28 @@ Thanks to debug symbols being found in the **Carmageddon Splat Pack** expansion {% include link-to-other-site.html url="https://pizzalegacy.nl/blog/traffic-system.html" description="The Pizza Legacy blog explores the reverse engineering of Pizza Tycoon's 1994 traffic engine, detailing how developers managed city-wide vehicle simulation with minimal CPU overhead." image="" title="How Pizza Tycoon simulated traffic on a 25 MHz CPU" %} +--- +# DOS Game Development + +## Porting Retro City Rampage to MS-DOS + + +[GDC](https://www.youtube.com/watch?v=kSKeWH4TY9Y) hosted this technical presentation by Brian Provinciano, the creator of *Retro City Rampage*. The talk details the process of back-porting a modern game to the constraints of a 1990s MS-DOS environment, specifically targeting 486-class hardware with strict memory and storage limitations. + +### Technical Constraints and Goals +The porting process was defined by the need to shrink a modern codebase into a footprint compatible with legacy hardware: +* **Target Hardware** - Minimum requirement of a 486 DX IBM PC compatible with 4MB of RAM. +* **Operating System** - Designed for MS-DOS 3.3 or higher. +* **Storage Limit** - The entire game, including assets, was required to fit on a single 1.44MB 3.5" high-density floppy disk. +* **Graphics Architecture** - Utilized a simple 1-byte-per-pixel buffer to map directly to VGA memory for performance. + +### Optimization Strategies +Provinciano discusses several low-level techniques used to achieve real-time performance on the 486: +* **Reprogramming PIT** - The system timer was reprogrammed to increase precision beyond the default 55ms tick, allowing for synchronized audio and video. +* **Inline Assembly** - Used for performance-critical sections such as hiding the mouse cursor via `int 33h` and custom tile-drawing routines. +* **Asset Compression** - Implemented a two-stage compression pipeline: RLE (Run-Length Encoding) for fast runtime rendering and zlib for minimizing executable size on disk. +* **Data Generation** - To save disk space, pathfinding navigation data and car collision objects were generated procedurally from world collision data rather than being stored as distinct files. +* **Memory Management** - Aggressive use of `#ifdef` blocks to strip out modern engine features while maintaining a shared codebase between PS4 and DOS versions. --- ## DOS Gaming Aspect Ratio - 320x200 diff --git a/pages/consoles/pc/RetroCityRampage.md b/pages/consoles/pc/RetroCityRampage.md deleted file mode 100644 index 9172d7ea..00000000 --- a/pages/consoles/pc/RetroCityRampage.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: post -tags: - - pc - - dos -title: Porting Retro City Rampage to MS-DOS From PS4 to 1.44MB Floppy -image: https://img.youtube.com/vi/kSKeWH4TY9Y/0.jpg -videocarousel: - - title: Porting Retro City Rampage to MS-DOS From PS4 to 1.44MB Floppy - image: https://img.youtube.com/vi/kSKeWH4TY9Y/0.jpg - youtube: 'kSKeWH4TY9Y' -category: pc -permalink: /RetroCityRampage -breadcrumbs: - - name: Home - url: / - - name: PC - url: /pc - - name: Porting Retro City Rampage to MS-DOS From PS4 to 1.44MB Floppy - url: # -recommend: -- pc -- dos -editlink: /consoles/pc/RetroCityRampage.md -updatedAt: '2020-06-27' ---- - -From the GDC Youtube Channel: - -> Not many people are designing video games for MS-DOS these days, but that didn't stop Vblank Entertainment's Brian Provinciano from taking on the task. -> -> In this 2016 talk, hear Provinciano explain how he reduced memory usage down to 4MB, increased performance to run on a 486 PC, reduced disk space to fit on a single 1.44MB floppy, and finally ported the game to MS-DOS itself. -> -> GDC talks cover a range of developmental topics including game design, programming, audio, visual arts, business management, production, online games, and much more. -> -> We post a fresh GDC video every weekday. Subscribe to the channel to stay on top of regular updates, and check out GDC Vault for thousands of more in-depth talks from our archives [^1]. - -# References -[^1]: https://www.youtube.com/watch?v=kSKeWH4TY9Y From 16b61522cce2b94a91c45e99516b1e0692321929 Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 19:32:34 +0100 Subject: [PATCH 04/13] Updated N64Mips assembly post to have more information --- pages/consoles/n64/N64MipsAssembly.md | 97 +++++++++++++++------------ 1 file changed, 53 insertions(+), 44 deletions(-) diff --git a/pages/consoles/n64/N64MipsAssembly.md b/pages/consoles/n64/N64MipsAssembly.md index ba4e362d..1888f000 100644 --- a/pages/consoles/n64/N64MipsAssembly.md +++ b/pages/consoles/n64/N64MipsAssembly.md @@ -4,8 +4,8 @@ tags: - n64 - assembly - tutorial +- incomplete title: N64 MIPS Assembly Video Tutorials -youtube: "m_eKDuWhBo8?list=PLjwOF_LvxhqTXVUdWZJEVZxEUG5qt8fsA" image: /public/N64/N64LearnMIPSAssemblyLanguage.jpg category: n64 permalink: /N64MipsAssembly @@ -16,15 +16,11 @@ breadcrumbs: url: /n64 - name: N64 MIPS Assembly Video Tutorials url: # -recommend: -- n64 -- assembly -- tutorial editlink: /consoles/n64/N64MipsAssembly.md --- # Introduction -[Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) has created a series of YouTube videos where he teaches N64 MIPS programming from the ground up. This page is designed to act as "notes" as you follow along with the tutorials. +[Fraser N64](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) has created a series of YouTube videos where he teaches N64 [MIPS](#glossary-mips) programming from the ground up. This page is designed to act as notes as you follow along with the tutorials. First of all in order to help support the creation of more excellent N64 MIPS tutorials, consider subscribing to Fraser here: [Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) @@ -32,34 +28,34 @@ First of all in order to help support the creation of more excellent N64 MIPS tu Also if you are lucky you can catch the stream live here: [fraserN64 - Twitch](https://www.twitch.tv/frasern64/) ## Source Code and Resources -You can access all the source code and resources referenced in the videos here: [fraser125/N64_ASM_Videos: The files complementing my video series N64 MIPS Assembly](https://github.com/fraser125/N64_ASM_Videos) +You can access all the source code and resources referenced in the videos here: +[fraser125/N64_ASM_Videos: The files complementing my video series N64 MIPS Assembly](https://github.com/fraser125/N64_ASM_Videos) ## Glossary of Key Terms If you are new to MIPS or N64 development, these terms are fundamental to the workflow: - -* **MIPS** - Microprocessor without Interlocked Pipelined Stages; the RISC architecture used by the N64. -* **bass** - A versatile, multi-architecture assembler created by near, used extensively for N64 projects. -* **n64chain** - A pre-built GCC toolchain specifically configured for creating Nintendo 64 programs. -* **MAME** - Multiple Arcade Machine Emulator; used here for its built-in debugger which is superior for inspecting N64 CPU state. +* **MIPS** - Microprocessor without Interlocked Pipelined Stages; the RISC architecture used by the N64. +* **bass** - A versatile, multi-architecture assembler created by near, used extensively for N64 projects. +* **n64chain** - A pre-built GCC toolchain specifically configured for creating Nintendo 64 programs. +* **MAME** - Multiple Arcade Machine Emulator; used here for its built-in debugger which is superior for inspecting N64 CPU state. --- # Lesson 001 - Dev Environment Setup -This section is based on the technical walkthrough by [Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) and covers the initial setup of a Windows-based development environment. +This section is based on the technical walkthrough by Fraser N64[^1] and covers the initial setup of a Windows-based development environment for N64 [MIPS](#glossary-mips) development. ## Essential Development Tooling Here is the essential software stack: -* **bass Assembler** - The primary tool for converting assembly source into N64 ROM data. The ARM9 github fork is the standard version used for these tutorials. +* **[bass](#glossary-bass) Assembler** - The primary tool for converting assembly source into N64 ROM data. The ARM9 github fork is the standard version used for these tutorials. * **GCC for Windows** - Used for creating Windows-side tools or if integrating C code into the pipeline. -* **n64chain** - Essential for projects requiring the standard C library or more complex compilation. +* **[n64chain](#glossary-n64chain)** - Essential for projects requiring the standard C library or more complex compilation. * **Notepad++** - A recommended text editor for its speed, simplicity, and customization options. * **Legacy Windows Calculator** - The Windows 7 version is preferred over the Windows 10 app for its much more intuitive binary bit-view, which is crucial for manually verifying register values and bitwise operations. * **GitHub Desktop** - Recommended for users who prefer a GUI for version control and cloning test repositories, such as Peter Lemon's N64 tests. ## Emulator and Debugger Configuration -To run N64 software in MAME, you must have the N64 BIOS files. The file `n64.zip` must be placed inside the `roms/` directory of your MAME installation. It is recommended to leave this file zipped to ensure MAME recognizes it correctly. +To run N64 software in [MAME](#glossary-mame), you must have the N64 BIOS files. The file `n64.zip` must be placed inside the `roms/` directory of your MAME installation. It is recommended to leave this file zipped to ensure MAME recognizes it correctly. ### Launching the Debugger This view provides direct access to the MIPS architecture internals: @@ -70,6 +66,7 @@ This view provides direct access to the MIPS architecture internals: --- ## Workflow Automation +This section covers small Windows-side workflow tweaks that keep your build loop fast and your logs visible. ### Persistent Command Prompts Standard batch files close their terminal window immediately upon completion, which wipes out your compilation errors and build history. @@ -108,7 +105,7 @@ cd /d "%OLD_DIR%" --- # Lesson 002 - bass Assembler Keywords -This section covers the fundamental keywords and directives used by the `bass` assembler to structure a Nintendo 64 ROM. +This section covers the fundamental keywords and directives used by the [bass](#glossary-bass) assembler to structure a Nintendo 64 ROM. @@ -121,7 +118,7 @@ The main directives required for an N64 project include: * **fill** - Used to write zero-padding into the ROM. Here is an example of what the top of your main assembly file will look like: -``` +```nasm arch n64.cpu endian msb output "lesson2.n64", create @@ -140,13 +137,14 @@ It is crucial to understand the difference between these two keywords: * **insert** - Treats the target file as raw binary data. It grabs the file byte-by-byte and writes it directly to the output ROM at the exact physical location of the `insert` command. Example usage: -``` +```nasm include "lib/n64.inc" // Loads constants and macros, writes nothing yet. insert "n64_bootcode.bin" // Physically dumps 4KB of raw binary boot code here. ``` --- ## The N64 Header +This section covers the small metadata block at the start of an N64 ROM, and the handful of fields you typically touch first when building a ROM from scratch. ### Data Width Keywords When manually constructing the header or laying out data, you use specific keywords to tell `bass` how many bytes to allocate for the literal value: @@ -156,7 +154,7 @@ When manually constructing the header or laying out data, you use specific keywo * **dd** - Data Double (8 bytes / 64-bit) Strings can be placed easily using `db`. The N64 header allows for a 27-character string name: -``` +```nasm db "MY FIRST N64 GAME " // Pads the remaining space with spaces ``` @@ -167,7 +165,7 @@ Because the CRC requires the final compiled ROM, the assembler leaves placeholde --- ## Debugging in MAME -In the MAME debugger command line, use the `bp` (breakpoint) command: +In the [MAME](#glossary-mame) debugger command line, use the `bp` (breakpoint) command: ``` bp 80000400 ``` @@ -176,9 +174,10 @@ Address `0x80000400` is conventionally where control is handed over to the user' --- # Lesson 003 - Registers and First 6 Instructions -This section covers the MIPS architecture fundamentals, register layout, and foundational instructions. +This section covers the [MIPS](#glossary-mips) architecture fundamentals, register layout, and foundational instructions. +--- ## Memory Hierarchy The MIPS architecture is referred to as a register architecture because all data must be loaded into a register, operated upon, and then written back out to memory. @@ -190,7 +189,6 @@ The typical flow follows this speed hierarchy (fastest to slowest): ## MIPS Register Architecture While you can technically use any register for anything (except register `0`), developers adhere to strict conventions to ensure code compatibility: - * **zero (r0)** - Hardwired to the value `0`. Any attempt to write to it fails silently. * **at (r1)** - Assembler Temporary. Reserved for assembler pseudo-instructions. * **v0-v1 (r2-r3)** - Used exclusively for function return values. @@ -203,6 +201,7 @@ While you can technically use any register for anything (except register `0`), d --- ## Assembly Syntax and Formatting +These formatting rules are conventions that make low-level code easier to scan, especially when you are comparing register state in a debugger to what you wrote in source: * **Whitespace is ignored** - Tabs or spaces are purely for human readability. * **Instruction format** - The line begins with the instruction mnemonic, followed by 1 to 4 parameters separated by commas. * **Right-to-Left evaluation** - For most instructions, the destination register is listed first on the left, but conceptually the operation evaluates the right-hand elements and places the result into the left. @@ -210,24 +209,27 @@ While you can technically use any register for anything (except register `0`), d --- ## Foundational MIPS Instructions +These are the baseline building blocks used throughout the early lessons before you start leaning on heavier macro abstractions. ### Loading Immediate Data An immediate instruction incorporates literal data directly inside the instruction's opcode itself, rather than reading it from RAM. - * **lui (Load Upper Immediate)** - Takes a 16-bit constant and loads it into the upper 16 bits of the 32-bit space of a register, padding the lower 16 bits with zeros. * **addi (Add Immediate)** - Adds a literal constant to the value of a source register and stores the result. --- ### Memory Storage +These instructions move data between registers and memory. * **sw (Store Word)** - Grabs a 32-bit word from a register and writes it into memory. It takes a destination address and an offset value. MIPS also has variants like `sb` (Store Byte), `sh` (Store Halfword), and `sd` (Store Double/64-bit). ### Control Flow +These instructions change what executes next. * **j (Jump)** - Unconditionally shifts execution to a specific label/address. An infinite loop can simply be `j loop_label`. * **nop (No Operation)** - Instructs the CPU to do absolutely nothing for one cycle. ### Delay Slots MIPS architecture relies heavily on Delay Slots-a quirk where the instruction placed immediately after a branch or jump is executed before the jump actually takes effect. This happens because the CPU pipeline has already fetched the next instruction while calculating the jump destination. During early development, it is common practice to simply place a `nop` in the delay slot to prevent execution errors. +--- ## Sign Extension When loading 32-bit values into the N64's 64-bit registers, the CPU performs Sign Extension. @@ -236,21 +238,21 @@ If the highest bit (the sign bit) of the 32-bit value is `1` (indicating a negat --- # Lesson 004 - Memory Mapped Hardware and Video Init This section details the Nintendo 64 memory mapping, hardware interfaces, and the assembly required to initialize the video subsystem. - + ## The Flat Memory Map -When the console boots, the BIOS places the MIPS processor into a 32-bit kernel mode. This provides a 4 Gigabyte (`0x00000000` to `0xFFFFFFFF`) address space. Even though 64-bit mathematics are available, memory addressing remains firmly in 32-bit. +When the console boots, the BIOS places the [MIPS](#glossary-mips) processor into a 32-bit kernel mode. This provides a 4 Gigabyte (`0x00000000` to `0xFFFFFFFF`) address space. Even though 64-bit mathematics are available, memory addressing remains firmly in 32-bit. This flat structure makes assembly programming relatively straightforward because all internal systems-such as the Video Interface (VI), Audio Interface (AI), Peripheral Interface (PI), and Serial Interface (SI)-are mapped directly to specific addresses. You do not need complex port configurations; you interact with the console's hardware simply by reading and writing to standard memory addresses. ### Cached vs. Uncached Memory These address ranges actually point to the exact same physical memory on the motherboard: - * **0x80000000 (Cached)** - Operations hit the CPU caches first. While reads from the cache take just 1 CPU cycle, writes stay in the cache until manually flushed to physical RAM. * **0xA0000000 (Uncached)** - Bypasses the internal CPU cache entirely and interacts directly with physical RAM. For example, `0x80000400` and `0xA0000400` access the identical location in memory. When updating hardware subsystems like the Video Interface, you must either write to the `0xA` uncached range or write to the `0x8` cached range and remember to trigger a cache flush command so the hardware actually receives the data. +--- ## Initializing the Video Interface (VI) When writing values to configure the Video Interface, two technical boundaries exist: @@ -268,8 +270,8 @@ Here are techniques commonly used in MIPS projects: --- # Lesson 005 - Draw Line & Branching Delay Slot -This section covers the fifth technical walkthrough by Fraser MIPS, focusing on drawing basic lines to the screen and understanding the nuances of the MIPS pipeline and delay slots. - +This section covers the fifth technical walkthrough by Fraser MIPS, focusing on drawing basic lines to the screen and understanding the nuances of the [MIPS](#glossary-mips) pipeline and delay slots. + ## Frame Buffer Memory Positioning A standard practice is to place the frame buffer exactly at the 1 Megabyte mark (`0x00100000`). @@ -282,8 +284,8 @@ To set this up cleanly using the assembler: --- ## Pixel Coordinate Math The formula for finding the offset of a single pixel is: +`((Y_Position * Screen_Width) + X_Position) * Bytes_Per_Pixel` -((Y_Position * Screen_Width) + X_Position) * Bytes_Per_Pixel For example, to start a line 15 rows down and 110 columns in on a 16-bit (2 bytes per pixel) display: `((15 * 320) + 110) * 2` @@ -292,7 +294,6 @@ This yields the literal memory offset that should be added to your frame buffer' --- ## Writing 32-bit Colors You achieve this by loading the same 16-bit color constant into both the upper and lower halves of a temporary register: - * **lui** - Loads the 16-bit color into the upper half of the register. * **ori** - Loads the identical 16-bit color into the lower half of the register. @@ -310,6 +311,7 @@ MIPS favors a do-while loop structure. The typical flow is: The **Branch Delay Slot** is the single instruction located *immediately after* a branch or jump command. Because of how the pipeline fetches instructions, this slot is executed *before* the jump actually takes effect. ### Pipeline Rules and Performance +Here are a few practical rules of thumb that help avoid accidental slowdowns and hard-to-debug control flow issues. * **Register-to-Register (e.g., `addi`)**: These take 5 pipeline cycles. Placing one in a branch delay slot is the most efficient use of CPU time, essentially granting you a "free" instruction calculation while the branch evaluates. * **Load and Store (e.g., `sw`)**: These are blocking operations. If placed in a delay slot, they halt the pipeline, taking 11 pipeline cycles (wasting roughly 3 clock cycles). Do not place them in delay slots. * **Branch inside a Branch**: Placing a jump or branch inside the delay slot of another jump causes completely unpredictable execution behavior and should be strictly avoided. @@ -320,7 +322,7 @@ The **Branch Delay Slot** is the single instruction located *immediately after* --- # Lesson 006 - Draw Vertical Line & Delay Slot Optimization -This section covers the sixth technical walkthrough by Fraser MIPS, detailing the structural changes needed to draw vertically and how to implement a practical delay slot optimization. +This section covers the sixth technical walkthrough by Fraser MIPS, detailing the structural changes needed to draw vertically and how to implement a practical [MIPS](#glossary-mips) delay slot optimization. ## Vertical Line Logic and Coordinate Math @@ -336,9 +338,9 @@ For a 16-bit display (2 bytes per pixel), the mathematical stride (or "pitch") i If you incorrectly add just `320`, the N64 will write halfway across the screen horizontally rather than directly below, resulting in strange graphical glitches like drawing multiple half-height lines diagonally. +--- ## Practical Delay Slot Optimization A typical vertical line loop might evaluate like this: - * `addi t2, t2, -1` (Subtract 1 from the counter) * `addi t1, t1, 640` (Move memory pointer down one screen row) * `bne t2, zero, loop_label` (Branch back if counter is not zero) @@ -351,22 +353,22 @@ To optimize this and save execution time, you can pull the counter subtraction o Because the CPU always evaluates the delay slot before taking the jump, the counter is safely decremented on every pass, speeding up the geometry rendering loop. +--- # Lesson 007 - bass Macros and Debugger Scripts -This section covers the seventh technical walkthrough by Fraser MIPS, focusing on code restructuring using `bass` assembler macros and automating the MAME debugger. +This section covers the seventh technical walkthrough by Fraser MIPS, focusing on code restructuring using [bass](#glossary-bass) assembler macros and automating the [MAME](#glossary-mame) debugger. ## Restructuring with Compile-Time Macros -It is crucial to understand that `bass` macros evaluate strictly at **compile-time**. When the assembler encounters a macro call, it literally copies and pastes the underlying instruction block into the compiled ROM at that exact location. It does not perform a function jump (`jal`). If you invoke a large macro 20 times, the code is duplicated 20 times, heavily inflating the ROM size. +It is crucial to understand that [bass](#glossary-bass) macros evaluate strictly at **compile-time**. When the assembler encounters a macro call, it literally copies and pastes the underlying instruction block into the compiled ROM at that exact location. It does not perform a function jump (`jal`). If you invoke a large macro 20 times, the code is duplicated 20 times, heavily inflating the ROM size. ### Macro Syntax Rules When declaring a macro in `bass`, you must follow strict syntax constraints: - * The macro must be declared *above* where it is used in the source file. * The opening curly brace `{` **must** reside on the exact same line as the macro declaration. * The closing curly brace `}` can be on its own line. Example of wrapping the Video Interface setup: -```c +```nasm macro init_video() { lui t0, 0xA440 sw zero, 0x0010(t0) @@ -376,7 +378,7 @@ sw zero, 0x0010(t0) ### Handling Macro Parameters Because macros are compile-time text replacements, the passed arguments do not automatically land in CPU registers. You must explicitly load the parameter placeholder into a register inside the macro using pseudo-instructions like `la` (Load Address) or `li` (Load Immediate). -```c +```nasm macro screen_setup(width, height, origin) { la t0, {origin} li t1, {width} @@ -386,7 +388,7 @@ li t1, {width} ## Automating the MAME Debugger To automate breakpoints, create a simple text file (e.g., `n64_debug.txt`) in your working directory and populate it with standard MAME debugger commands: -```c +```text bp 80000400 wp 80000400, 4, rw ``` @@ -407,7 +409,7 @@ When MAME launches, it will execute the commands in the text file and halt at th --- # Lesson 008 - Fonts Part 1: Macros and 1-Bit Expansion -This section covers the eighth technical walkthrough by Fraser MIPS, introducing custom fonts and how to manipulate 1-bit per pixel assets for the N64's 16-bit display. +This section covers the eighth technical walkthrough by Fraser MIPS, introducing custom fonts and how to manipulate 1-bit per pixel assets for the N64's 16-bit display in [MIPS](#glossary-mips)-based projects. ## 1-Bit Fonts on the N64 @@ -419,8 +421,8 @@ Because of the 1bpp density, an entire 8x8 ASCII font set requires extremely lit Always `insert` external binary assets at the very end of your source file, far away from your program loops. ### Byte Alignment -When inserting binary files, it is highly recommended to enforce byte alignment. You can use the `align` macro in `bass` to force the assembler to pad the file with zeros until the data sits on a clean boundary. -```c +When inserting binary files, it is highly recommended to enforce byte alignment. You can use the `align` macro in [bass](#glossary-bass) to force the assembler to pad the file with zeros until the data sits on a clean boundary. +```nasm align 8 insert "font.bin" ``` @@ -428,12 +430,13 @@ Aligning data to an 8-byte boundary is a defensive programming habit that preven --- ## File Structure Conventions +These conventions help keep large projects modular without accidentally emitting bytes into the ROM. * **.inc files**: Used exclusively for macros and constants. Including these at the top of your main file will not write any arbitrary bytes to the ROM. * **.s files**: Used exclusively for pure assembly routines. These should be included carefully, typically at the bottom of your main file, so the routines do not execute accidentally during standard program flow. ## Jump and Link (JAL) Instead, the macro should only prepare the arguments and immediately call a single, shared assembly routine using **Jump and Link (`jal`)**: -```c +```nasm macro init_font(dest, fg_color, bg_color) { li a0, {dest} li a1, {fg_color} @@ -455,4 +458,10 @@ Once the `expand_font_routine` finishes its work, it terminates with a **Jump Re `li` is a pseudo-instruction. The assembler automatically breaks it down into *two* separate hardware instructions (`lui` and `ori`). The branch delay slot is strictly hardware-enforced to hold only *one* single instruction. If you place an `li` there, only the `lui` half will execute before the jump takes effect, resulting in a corrupted parameter and a broken font initialization. -If you must optimize a parameter load into a delay slot, explicitly write the exact single hardware instruction (like `ori` or `addi`) yourself. \ No newline at end of file +If you must optimize a parameter load into a delay slot, explicitly write the exact single hardware instruction (like `ori` or `addi`) yourself. + +--- +# References +[^1]: [Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) +[^2]: [fraserN64 - Twitch](https://www.twitch.tv/frasern64/) +[^3]: [fraser125/N64_ASM_Videos: The files complementing my video series N64 MIPS Assembly](https://github.com/fraser125/N64_ASM_Videos) From 930692e16a499ad8101000c12835f83405cbc16d Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 19:37:52 +0100 Subject: [PATCH 05/13] Removed Indie page and moved content to Industry until there is enough content to justify a new page --- categories/misc/Industry.md | 19 ++++++++++++++++- pages/Industry/IndieDevelopment.md | 34 ------------------------------ 2 files changed, 18 insertions(+), 35 deletions(-) delete mode 100644 pages/Industry/IndieDevelopment.md diff --git a/categories/misc/Industry.md b/categories/misc/Industry.md index 78e7edd4..6612b996 100644 --- a/categories/misc/Industry.md +++ b/categories/misc/Industry.md @@ -10,6 +10,7 @@ redirect_from: - /documentaries - /sega - /companies + - /indie breadcrumbs: - name: Home url: / @@ -42,7 +43,6 @@ If you know of any other footage or information that should be added to this pag --- # Documentaries showing life in the industry - ## 1984 - Life in Imagine & Ocean Software (The Battle for Santa's Software) **Commercial Breaks** was a 30 minute documentary series in the UK about businesses and one episode in particular from 1984 is of interest to this site, it was called "The Battle for Santa's Software". It followed two British software companies, Imagine software and Ocean, only one remained at the end of the show! @@ -233,6 +233,23 @@ He heard about the job through his agent which was a common way for game program +--- +# Indie Game Development + +## Why Nintendo doesn't like 3rd party developers? +In 1986 the year in which many believed the video games industry was finished due to the Atari collapse (google for the ET situation..). Nintendo were doing well in Japan but they were worried about the collapsed video game market in the USA. They wanted to release their Famicom system in the US but due to what had just happened to Atari they were of course cautious. + +**Hiroshi Yamauchi** president of Nintendo at the time believed the failure was due to too many 3rd party rubbish games: +![image alt text]({{ site.url }}/public/kCxNlbEqQBTmGsgDrzeh4w_img_0.png) + +Ever since Nintendo has been very wary of allowing 3rd party developers to release software for their consoles. + +They have even put in place a number of security measures to stop unlicensed developers including both hardware and software methods. + +This along with the threat of piracy has kept nintendo away from allowing 'homebrew development' on any of their consoles. + +### A Change In Direction? +It wasn't until they saw the success of many indie games such as minecraft and the success of 'app stores for games' that they have started opening up their hardware to indie developers. --- diff --git a/pages/Industry/IndieDevelopment.md b/pages/Industry/IndieDevelopment.md deleted file mode 100644 index 4b3336fa..00000000 --- a/pages/Industry/IndieDevelopment.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -layout: post -tags: -- industry -title: Indie Game Development -category: industry -image: /public/kCxNlbEqQBTmGsgDrzeh4w_img_0.png -permalink: /indie -breadcrumbs: - - name: Home - url: / - - name: Industry - url: /industry - - name: Console Indie Game Development - url: # -recommend: industry -editlink: ./industry/IndieDevelopment.md ---- - -# Why Nintendo doesn't like 3rd party developers? -In 1986 the year in which many believed the video games industry was finished due to the Atari collapse (google for the ET situation..). Nintendo were doing well in Japan but they were worried about the collapsed video game market in the USA. They wanted to release their Famicom system in the US but due to what had just happened to Atari they were of course cautious. - -Hiroshi Yamauchi president of Nintendo at the time believed the failure was due to too many 3rd party rubbish games: - -![image alt text]({{ site.url }}/public/kCxNlbEqQBTmGsgDrzeh4w_img_0.png) - -Ever since Nintendo has been very wary of allowing 3rd party developers to release software for their consoles. - -They have even put in place a number of security measures to stop unlicensed developers including both hardware and software methods. - -This along with the threat of piracy has kept nintendo away from allowing 'homebrew development' on any of their consoles. - -It wasn't until they saw the success of many indie games such as minecraft and the success of 'app stores for games' that they have started opening up their hardware to indie developers. - From d00770e0c85ea523144a2e594d1d5e15649073fb Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 20:28:36 +0100 Subject: [PATCH 06/13] Moved the content from NES programming intro into the main NES page as it was too short --- CONTRIBUTING.md | 22 +- categories/consoles/Nes.md | 13 + pages/consoles/n64/N64MipsAssembly.md | 284 +++++++++++++++++++++- pages/consoles/nes/NesProgrammingIntro.md | 38 --- 4 files changed, 312 insertions(+), 45 deletions(-) delete mode 100644 pages/consoles/nes/NesProgrammingIntro.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ae64e693..12be217f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -119,7 +119,7 @@ Here are some of the markdown rules: Rules for lists: * Lists can improve readability when used appropriately but should only be used when the context makes sense, don't overuse lists. * **Never use numbered lists** - Just use `*` for all unordered lists. -* **Always have a sentence before the list** explaining the list, never just have a list after a heading. +* **Always have a sentence before the list** explaining the list, never just have a list after a heading. The sentence should normally end with a colon `:` and there should not be a blank line between the colon and the first list element If using a list, we have a preferred format for lists where each list item has a short bold part followed by a dash (-) and more information: ```markdown @@ -194,7 +194,7 @@ Field | Purpose `title` | Full page title shown in the page header and metadata (do not use colons! as it messes with the yaml frontmatter) `category` | Main site grouping such as the games console name or others such as `leak`, `introduction`, `gameengines`, `maths`, or another section-specific category. This can be a single value (`category: leak`) or a list (`category: [leak, snes]`) when a page belongs to multiple categories. `image` | Optional main preview image used by the page and site cards, if there is not a unique one leave it blank and it will be generated based on the category and title, for new pages leave blank (don't include) -`twitterimage` | Absolute URL version of the preview image for social sharing, leave blank and it will be generated, if in doubt leave blank +`twitterimage` | Absolute URL version of the preview image for social sharing, leave blank and it will be generated, if in doubt leave blank (avoid using but don't remove) `permalink` | Final public path for the page (do not end with a trailing `/`; that is legacy format we are moving away from) `breadcrumbs` | Breadcrumb trail shown at the top of the page `recommend` | Related-topic tags used to build the recommended sidebar and card labels; these should usually be chosen from tags already used elsewhere on the site, only use valid tags from `valid-tags.json` @@ -202,7 +202,7 @@ Field | Purpose `updatedAt` | Last meaningful content update date for the page `excerpt` | Optional short summary for pages that need it `hidden` | Optional flag for pages that should not appear in normal discovery -`videocarousel` | Optional list used only on pages that embed the video header carousel +`videocarousel` | Optional list used only on pages that embed the video header carousel (avoid using) Some frontmatter keys are now legacy or optional: * **Only add optional keys when they are actually needed** - Avoid copying large frontmatter blocks from unrelated pages @@ -228,6 +228,22 @@ If it's a link, ensure it's a valid Markdown link so it's clickable: [^2]: Page X of Book Y ``` +### External links vs citations +Footnotes are for sources backing up claims (dates, attribution, technical assertions, quotes, etc). Not every link on a page needs to be a footnote, especially when the link is there as "further reading" that you want the reader to click. + +If you include an external link inline as part of a sentence, keep it as a normal Markdown link and only add a footnote if the link is acting as evidence for a specific claim. + +If an external link is presented on its own line / paragraph or end of a sentence (not inline in a table, list, or middle of a sentence), ALWAYS use the `link-to-other-site.html` include so it renders consistently and includes a short description: + +```ruby +{% raw %} +{% include link-to-other-site.html + title="Example external article title" + url="https://example.com/article" + description="1-2 sentences describing why this link is relevant." %} +{% endraw %} +``` + --- ### Linking to other RetroReversing pages

diff --git a/categories/consoles/Nes.md b/categories/consoles/Nes.md index 3eb76cea..14fc3c5f 100644 --- a/categories/consoles/Nes.md +++ b/categories/consoles/Nes.md @@ -16,6 +16,7 @@ breadcrumbs: url: # redirect_from: - /writing-nes-games/ +- /nes-programming/ recommend: - nes - snes @@ -247,6 +248,16 @@ Mesen even comes with a HD Pack Builder Tool to create your own texture packs, f ## NES Assembly Programming +### Programming the Nintendo Entertainment System +[Levi D. Smith](https://www.youtube.com/watch?v=XT95C4fT6zA) provides a deep dive into the NES architecture, specifically detailing the 6502 CPU registers, PPU and APU memory mapping, and cartridge components like PRG and CHR ROM. + + + +The presentation extensively covers writing 6502 assembly, translating high-level programming constructs like loops and subroutines into opcodes, handling hardware interrupts (NMI), reading controller I/O ports, and utilizing the five audio channels. + +Finally, it demonstrates the practical application of these concepts by assembling a custom homebrew title, "Space Dude," using the NESASM3 assembler and YCHR sprite editor. + + ### Nerdy Nights NES Programming Tutorials The best 6502 Assembly tutorial for the NES has to be **Brian Parker's** Nerdy Nights tutorial series which goes from the basics all the way up to writing a version of pong! @@ -261,6 +272,8 @@ The original posts have been taken down but you can find a mirror here: + + ## How are NES games so small (40KB)? The game developer **Morphcat Games** has released a video on how they created an impressive game called **Micro Mages** in just 40KB without using a mapper (NROM board): diff --git a/pages/consoles/n64/N64MipsAssembly.md b/pages/consoles/n64/N64MipsAssembly.md index 1888f000..3cee724e 100644 --- a/pages/consoles/n64/N64MipsAssembly.md +++ b/pages/consoles/n64/N64MipsAssembly.md @@ -25,7 +25,8 @@ editlink: /consoles/n64/N64MipsAssembly.md First of all in order to help support the creation of more excellent N64 MIPS tutorials, consider subscribing to Fraser here: [Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) -Also if you are lucky you can catch the stream live here: [fraserN64 - Twitch](https://www.twitch.tv/frasern64/) +Also if you are lucky you can catch the stream live here: +[fraserN64 - Twitch](https://www.twitch.tv/frasern64/) ## Source Code and Resources You can access all the source code and resources referenced in the videos here: @@ -46,7 +47,6 @@ This section is based on the technical walkthrough by Fraser N64[^1] and covers ## Essential Development Tooling Here is the essential software stack: - * **[bass](#glossary-bass) Assembler** - The primary tool for converting assembly source into N64 ROM data. The ARM9 github fork is the standard version used for these tutorials. * **GCC for Windows** - Used for creating Windows-side tools or if integrating C code into the pipeline. * **[n64chain](#glossary-n64chain)** - Essential for projects requiring the standard C library or more complex compilation. @@ -64,6 +64,58 @@ This view provides direct access to the MIPS architecture internals: * **HI / LO Registers** - Special-purpose registers used specifically to hold the 64-bit results of integer multiplication and division. * **Floating Point Registers** - The Coprocessor 1 (CP1/FPU) register set natively used for floating-point mathematical operations on the N64. +--- +## Repo Layout and Template Baseline +The `N64_ASM_Videos` repo is structured as a set of self-contained projects per lesson plus a shared `LIB/` folder. Knowing where things live makes the later lessons much easier to follow. + +Here is the high-level layout used by the repo: +* **Template** - A minimal bootable ROM skeleton (`Template/Template.asm`, `Template/N64_Header.asm`, `Template/make.cmd`). +* **LIB** - Shared includes, macros, and binary assets such as `LIB/N64.INC`, `LIB/N64_GFX.INC`, and `LIB/N64_BOOTCODE.BIN`. +* **Video002 ... Video009** - Per-video projects that repeat the same pattern: `Video00X.asm`, `N64_Header.asm`, `make.cmd`, and the built `Video00X.N64`. + +## Build Loop (bass + chksum64) +The repo uses the same 2-step build loop in every `make.cmd`: assemble, then patch header checksums. + +For example, `Template/make.cmd` looks like this: +```bat +@echo off +bass Template.asm -strict -benchmark +chksum64 Template.N64 +``` + +This matters because `chksum64` is not optional: without it, CRC placeholders in the header remain unpatched and the ROM often will not boot reliably in stricter emulators or on hardware. + +## One-Click MAME Run and Debug Scripts +The repo includes wrapper scripts that take a ROM path and launch MAME from a fixed install directory. This avoids retyping long `mame64.exe ...` commands every iteration. + +The basic pattern used in `bass/run.cmd` is: +```bat +@echo off +set ROM=%~dpnx1 +set OLDDIR=%CD% +cd \mame +mame64.exe n64 -window -cart %ROM% -switchres -nofilter +chdir /d %OLDDIR% +``` + +`bass/debug.cmd` is the same idea but launches with `-debug -log -verbose` enabled so you drop straight into the debugger and get a log file. + +## Toolchain Shells (n64chain + gcc) +If you also use the repo's `n64chain/` and `gcc/` tooling, it provides small helper scripts that just set `PATH` and keep a dedicated prompt open. + +For example, `n64chain/WinN64.cmd` is: +```bat +@ECHO OFF +SET PATH=C:\n64chain\bin;%PATH% +ECHO N64 GCC Command Prompt +``` + +## Repo Naming Conventions +The repo uses simple file naming conventions to separate macros/constants from executable code: +* **`.asm`** - Main program file (entry point + top-level flow). +* **`.INC`** - Variables, constants, and macros (included as source). +* **`.S`** - Function bodies, often called via macros or `jal`. + --- ## Workflow Automation This section covers small Windows-side workflow tweaks that keep your build loop fast and your logs visible. @@ -109,6 +161,38 @@ This section covers the fundamental keywords and directives used by the [bass](# +## Walkthrough: Video002.asm Minimal Bootable ROM +The `N64_ASM_Videos` repo includes a minimal, bootable skeleton in `Video002/Video002.asm` that is a good reference for what a known-good `bass` project looks like. + +This is the directive block used by the repo: +```nasm +arch n64.cpu +endian msb +output "Video002.N64", create + +fill $0010'1000 +origin $00000000 +base $80000000 + +include "../LIB/N64.INC" +include "../LIB/N64_GFX.INC" +include "N64_Header.asm" +insert "../LIB/N64_BOOTCODE.BIN" +``` + +Two directives that are easy to confuse early on are `origin` and `base`: +* `origin` is the current write cursor inside the output ROM file (a file offset). +* `base` is the runtime address space that labels resolve to (the address you will see in the debugger). + +In the repo's layout, the first `0x1000` bytes are deliberately reserved for the header + bootcode. With `base $80000000`, that means the label `Start:` ends up at runtime address `0x80001000`. + +The repo also makes the CRC patching step explicit. `Video002/make.cmd` is: +```bat +@echo off +bass Video002.asm -strict -benchmark +chksum64 Video002.N64 +``` + ## Core bass Directives The main directives required for an N64 project include: * **arch** - Defines the target architecture. For the primary N64 CPU, use `arch n64.cpu`. The assembler also supports `n64.rsp` for the Reality Signal Processor and `n64.rdp` for the Reality Display Processor. @@ -146,6 +230,8 @@ insert "n64_bootcode.bin" // Physically dumps 4KB of raw binary boot code here. ## The N64 Header This section covers the small metadata block at the start of an N64 ROM, and the handful of fields you typically touch first when building a ROM from scratch. +In the `N64_ASM_Videos` repo, the header file `N64_Header.asm` is structured to occupy exactly `0x40` (64) bytes, and it is immediately followed by a `0xFC0` (4032) byte bootcode blob. Together, these add up to `0x1000` (4096) bytes, which is why the repo's entrypoint code label typically starts at `0x80001000` when `base $80000000` is used. + ### Data Width Keywords When manually constructing the header or laying out data, you use specific keywords to tell `bass` how many bytes to allocate for the literal value: @@ -177,6 +263,32 @@ Address `0x80000400` is conventionally where control is handed over to the user' This section covers the [MIPS](#glossary-mips) architecture fundamentals, register layout, and foundational instructions. +## Walkthrough: Video003 First Instructions +The `N64_ASM_Videos` repo includes a minimal entrypoint in `Video003/Video003.asm` that is useful for understanding what these first instructions do in practice. + +This is the first block of real code the repo runs after `Start:`: +```nasm +Start: + lui t0, PIF_BASE + addi t1, zero, 8 + sw t1, PIF_CTRL(t0) + +Loop: + j Loop + nop +``` + +This short sequence is doing three important things: +* It uses `lui` to build a memory-mapped IO base address in a register (`t0`). +* It uses `addi` with `zero` to create a small immediate (`t1 = 8`) without needing a pseudo-instruction. +* It uses `sw base+offset` addressing to write to a specific hardware register. + +If you expand the address math, this write becomes very concrete: +* `PIF_BASE` is defined in `LIB/N64.INC` as `0xBFC0`, so `lui t0, PIF_BASE` yields `t0 = 0xBFC00000`. +* `PIF_CTRL` is defined in `LIB/N64.INC` as `0x07FC`, so `sw t1, PIF_CTRL(t0)` writes to `0xBFC00000 + 0x07FC = 0xBFC007FC`. + +In debuggers, you will often see these addresses sign-extended into 64-bit registers as `FFFFFFFFBFC00000` and similar values. That is normal on the VR4300 and is the same sign-extension behaviour described later in this lesson. + --- ## Memory Hierarchy The MIPS architecture is referred to as a register architecture because all data must be loaded into a register, operated upon, and then written back out to memory. @@ -240,6 +352,40 @@ If the highest bit (the sign bit) of the 32-bit value is `1` (indicating a negat This section details the Nintendo 64 memory mapping, hardware interfaces, and the assembly required to initialize the video subsystem. +## Walkthrough: Video004 VI Register Init +The `N64_ASM_Videos` repo includes a complete, explicit VI init sequence in `Video004/Video004.asm`. It is a useful reference because it shows the exact register writes the later `ScreenNTSC(...)` macro wraps. + +The lesson uses a classic pattern: load the VI base, then `sw` to a series of fixed offsets: +```nasm +lui t0, VI_BASE + +li t1, BPP16 +sw t1, VI_STATUS(t0) + +li t1, $A000'0000 +sw t1, VI_ORIGIN(t0) + +li t1, 320 +sw t1, VI_WIDTH(t0) +``` + +If you are new to memory-mapped IO, it helps to see the address math that `bass` is doing for you. This table shows a few of the key VI registers and how their offsets relate to the VI base address: + +Register | Offset | Absolute address (KSEG1) +---|---|--- +VI_STATUS | `0x00` | `0xA4400000` +VI_ORIGIN | `0x04` | `0xA4400004` +VI_WIDTH | `0x08` | `0xA4400008` +VI_X_SCALE | `0x30` | `0xA4400030` +VI_Y_SCALE | `0x34` | `0xA4400034` + +Once you understand the explicit sequence, you can switch to the repo's macro in `LIB/N64_GFX.INC`: +```nasm +ScreenNTSC(320, 240, BPP16, $A010'0000) +``` + +That macro writes the same VI registers, but it also documents what the “magic” constants mean (for example, the `VI_TIMING` and `VI_H_VIDEO` fields), which makes it a good long-term reference when you start changing resolution, origin, or scaling. + ## The Flat Memory Map When the console boots, the BIOS places the [MIPS](#glossary-mips) processor into a 32-bit kernel mode. This provides a 4 Gigabyte (`0x00000000` to `0xFFFFFFFF`) address space. Even though 64-bit mathematics are available, memory addressing remains firmly in 32-bit. @@ -299,6 +445,30 @@ You achieve this by loading the same 16-bit color constant into both the upper a Now, a single `sw` (Store Word) command writes two adjacent pixels to the frame buffer simultaneously. +--- +## Walkthrough: Video005 Horizontal Line (Two Pixels Per Store) +The repo's `Video005/Video005.asm` is a concrete implementation of the pixel math described above. It draws a horizontal line by writing 32-bit words into a 16bpp framebuffer. + +The key trick is that the repo packs a single 16-bit color constant into *both* halfwords of a 32-bit register, so each `sw` produces two adjacent pixels of the same color: +```nasm +lui t0, LAWN_GREEN16 +ori t0, t0, LAWN_GREEN16 +``` + +Then it computes the starting pixel pointer using the same formula, and loops in 4-byte steps: +```nasm +la t1, $A010'0000 +addi t1, t1, ((320 * 15) + 110) * 2 +addi t2, t1, 200 + +do_Store2Pixels: + sw t0, 0(t1) + bne t1, t2, do_Store2Pixels + addi t1, t1, 4 +``` + +This loop is also a good demonstration of why delay slots matter: the `addi t1, t1, 4` runs in the branch delay slot, so it executes even on the final iteration when the branch falls through. When you start writing your own loops, be explicit about whether your end pointer is inclusive or end-exclusive so you do not accidentally do one extra store. + ## Loop Construction MIPS favors a do-while loop structure. The typical flow is: * Calculate the starting pixel address (`t1`). @@ -353,6 +523,28 @@ To optimize this and save execution time, you can pull the counter subtraction o Because the CPU always evaluates the delay slot before taking the jump, the counter is safely decremented on every pass, speeding up the geometry rendering loop. +## Walkthrough: Video006 Vertical Line (Pitch in the Delay Slot) +The repo's `Video006/Video006.asm` shows a practical version of this optimisation pattern. It decrements the counter in the loop body, then advances the framebuffer pointer by one full row in the branch delay slot: +```nasm +addi t2, r0, 200 +do_Store2Pixels: + sw t0, 0(t1) + addi t2, t2, -1 + bne t2, r0, do_Store2Pixels + addi t1, t1, 320 * 2 +``` + +This is a good template for learning because the delay-slot instruction is a single real instruction (`addi`), not a pseudo-instruction like `li` or `la`, so it cannot expand into multiple instructions and accidentally break control flow. + +## Pitfall: `sw` Writes Two Pixels in 16bpp Mode +In `Video006/Video006.asm`, the color is loaded as `lui t0, LIGHT_BLUE16` but the matching `ori` is commented out. That means the lower 16 bits of the store are `0x0000`, so each `sw` writes one LIGHT_BLUE pixel and one black pixel. + +If you want each `sw` to write two identical 16bpp pixels, pack the color into both halfwords: +```nasm +lui t0, LIGHT_BLUE16 +ori t0, t0, LIGHT_BLUE16 +``` + --- # Lesson 007 - bass Macros and Debugger Scripts This section covers the seventh technical walkthrough by Fraser MIPS, focusing on code restructuring using [bass](#glossary-bass) assembler macros and automating the [MAME](#glossary-mame) debugger. @@ -361,6 +553,21 @@ This section covers the seventh technical walkthrough by Fraser MIPS, focusing o ## Restructuring with Compile-Time Macros It is crucial to understand that [bass](#glossary-bass) macros evaluate strictly at **compile-time**. When the assembler encounters a macro call, it literally copies and pastes the underlying instruction block into the compiled ROM at that exact location. It does not perform a function jump (`jal`). If you invoke a large macro 20 times, the code is duplicated 20 times, heavily inflating the ROM size. +## Repo Macro Examples (LIB/*.INC) +The `N64_ASM_Videos` repo leans heavily on macros in `LIB/*.INC` to keep the main `.asm` files readable while still being explicit about what gets written to hardware. + +Two macros you will see in almost every lesson project are: +* `init()` from `LIB/N64.INC`, which performs early boot stabilisation and sets up a usable stack pointer. +* `ScreenNTSC(width, height, status, origin)` from `LIB/N64_GFX.INC`, which writes the full set of VI registers using the same constants as the explicit code in `Video004/Video004.asm`. + +For example, later lesson files call: +```nasm +init() +ScreenNTSC(320, 240, BPP16, $A010'0000) +``` + +When you are learning, it is worth reading the macro bodies in `LIB/N64.INC` and `LIB/N64_GFX.INC` because they also serve as documentation: the repo includes comments that describe what each VI timing constant represents. + ### Macro Syntax Rules When declaring a macro in `bass`, you must follow strict syntax constraints: * The macro must be declared *above* where it is used in the source file. @@ -393,6 +600,16 @@ bp 80000400 wp 80000400, 4, rw ``` +The repo also provides a practical starting point for launching into MAME's debugger without rewriting command lines each time. `bass/debug.cmd` launches MAME with `-debug -log -verbose` enabled: +```bat +@echo off +set ROM=%~dpnx1 +set OLDDIR=%CD% +cd \mame +mame64.exe n64 -debug -log -verbose -window -cart %ROM% -switchres -nofilter +chdir /d %OLDDIR% +``` + ### Advanced Watchpoints The `wp` command in the script above sets a **Watchpoint**. Unlike a standard breakpoint that halts execution when the Program Counter reaches a line of code, a watchpoint halts execution whenever a specific memory address is accessed. @@ -417,17 +634,60 @@ The standard ASCII table contains 32 non-printable control characters at the beg Because of the 1bpp density, an entire 8x8 ASCII font set requires extremely little memory-roughly 760 bytes. However, the N64 hardware only draws in 16-bit or 32-bit color depths. Therefore, before the font can be drawn to the screen, a routine must parse the 1bpp data and expand it into full 16-bit colors in RAM. +--- +## Repo Walkthrough: PIXEL8 Font Pipeline (Video008/Video009) +The `N64_ASM_Videos` repo implements an end-to-end font pipeline using a 1bpp 8x8 font file and a pair of routines in `LIB/PIXEL8_UTIL.S`. + +At a high level, the pipeline is: +* Insert the 1bpp font data into the ROM (the repo uses `LIB/PIXEL8.FNT`). +* Call `pixel8_init16(...)` once to expand the 1bpp font into a 16bpp font atlas in RAM. +* Call `pixel8_static16(...)` to blit characters from the expanded atlas into the framebuffer. + +The repo wraps these routines with small calling macros in `LIB/PIXEL8_UTIL.INC` so the call sites stay readable. For example, `pixel8_init16(destination, forecolor, backcolor)` is implemented as a macro that sets `a0/a1/a2` and then calls the real routine: +```nasm +macro pixel8_init16(destination, forecolor, backcolor) { + li a0, {destination} + ori a1, r0, {forecolor} + jal pixel8_init16 + ori a2, r0, {backcolor} +} +``` + +There are two details worth noticing in that macro: +* It uses the `jal` delay slot intentionally to load `a2` with a single real instruction (`ori`), avoiding the pseudo-instruction hazard described later in this lesson. +* It uses registers `a0/a1/a2` because the real implementation in `LIB/PIXEL8_UTIL.S` treats those as fixed parameters (`a0 = font destination`, `a1 = forecolor`, `a2 = backcolor`). + +`Video008/Video008.asm` demonstrates the "expand font into RAM" step by calling `pixel8_init16(...)` twice with different color pairs. `Video009/Video009.asm` demonstrates rendering text by calling `pixel8_static16(...)` and defining a ROM string with `db "Hello World!"`. + +--- ## Data Inclusion and Alignment Always `insert` external binary assets at the very end of your source file, far away from your program loops. ### Byte Alignment When inserting binary files, it is highly recommended to enforce byte alignment. You can use the `align` macro in [bass](#glossary-bass) to force the assembler to pad the file with zeros until the data sits on a clean boundary. ```nasm -align 8 -insert "font.bin" +ALIGN(8) +include "../LIB/PIXEL8_UTIL.S" ``` Aligning data to an 8-byte boundary is a defensive programming habit that prevents critical crashes when reading blocks of memory into hardware systems like the DMA (Direct Memory Access) controller later on. +### Repo Detail: How pixel8_static16 Passes Position and Length +In the repo, the `pixel8_static16(...)` macro packs the on-screen position into a single register (`a2`) to keep the call ABI simple. The upper 16 bits are `top` and the lower 16 bits are `left`. + +The macro builds that packed value using two real instructions, avoiding `li` in a delay slot: +```nasm +lui a2, {top} +ori a2, {left} +``` + +Inside the implementation in `LIB/PIXEL8_UTIL.S`, the routine unpacks those halves with: +```nasm +srl top, position, 16 +andi left, position, 0xFFFF +``` + +The macro also passes the string length in `v1` as a simple safety bound. In the repo this is set with `ori v1, zero, {length}`, which again stays as a single instruction. + --- ## File Structure Conventions These conventions help keep large projects modular without accidentally emitting bytes into the ROM. @@ -452,6 +712,22 @@ The `jal` instruction serves two purposes: Once the `expand_font_routine` finishes its work, it terminates with a **Jump Register (`jr ra`)** instruction, sending the CPU straight back to where the macro was initially called. +## Repo Implementation Notes: pixel8_init16 Expansion Loop +The repo's `LIB/PIXEL8_UTIL.S` shows what a 1bpp-to-16bpp expansion loop looks like in real VR4300 code. Conceptually, it streams bits out of the 1bpp font and writes either the foreground or background 16-bit color into a destination buffer in RAM. + +One interesting instruction choice in the repo is the use of a branch-likely to place the foreground store in the delay slot: +```nasm +bltzl t1, _continue +sh forecolor, 0(font_addr) +sh backcolor, 0(font_addr) +``` + +Because `bltzl` only executes its delay-slot instruction when the branch is taken, this pattern becomes a compact per-bit decision: +* If the current bit is set, store `forecolor` (delay slot runs) and skip the `backcolor` store. +* If the bit is not set, the delay slot is nullified and the following `sh backcolor, ...` runs instead. + +The routine returns the expanded font memory size (in the repo this is `0x2F80`) so higher-level code can allocate multiple font atlases in RAM without guessing sizes. + --- ## The Delay Slot Pseudo-Instruction Trap **Never place an `li` (Load Immediate) into a branch delay slot.** diff --git a/pages/consoles/nes/NesProgrammingIntro.md b/pages/consoles/nes/NesProgrammingIntro.md deleted file mode 100644 index c55389ae..00000000 --- a/pages/consoles/nes/NesProgrammingIntro.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Programming the Nintendo Entertainment System -permalink: /nes-programming -redirect_from: - - /nes-programming/ -tags: -- nes -- introduction -layout: post -image: https://img.youtube.com/vi/XT95C4fT6zA/maxresdefault.jpg -category: nes -breadcrumbs: - - name: Home - url: / - - name: NES - url: /nes - - name: Programming the Nintendo Entertainment System - url: # -recommend: nes -videocarousel: - - image: https://img.youtube.com/vi/XT95C4fT6zA/maxresdefault.jpg - youtube: 'XT95C4fT6zA' - - image: https://img.youtube.com/vi/IbS7uEsHV_A/maxresdefault.jpg - youtube: IbS7uEsHV_A -references: - - youtube -editlink: /consoles/nes/NesProgrammingIntro.md ---- - -## Programming the NES -Dry run of the Programming the Nintendo Entertainment System talk that Levi D Smith gave at Codestock 2014 in Knoxville, Tennessee. - -## !!Con 2017: Writing NES Games! with Assembly!! by Christian Joudrey -Writing NES Games! with Assembly!! by Christian Joudrey - -I'd like to take you on a stroll down memory lane and dig into the internals of the Nintendo Entertainment System (NES) to figure out how it works. While we're there, we'll see how to build a game for the NES using 6502 assembly with the help of a few modern tools. We'll gain a new respect for '80s developers and an appreciation for the high-level languages we have today! - -Christian is a self-taught developer based in Montreal. At a young age he discovered Visual Basic 6 on his home computer and instantly fell in love with programming. When he is not reading about technology and programming, you may find him rock climbing, cooking or drinking a stout. From 7c75fefc31a6d7ac899db673a2bff744fe66b875 Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 20:45:44 +0100 Subject: [PATCH 07/13] Updated WiiU category page to have links to the wiiU posts --- categories/Introduction.md | 2 +- categories/consoles/WiiU.md | 60 +++++++++++++++---- pages/consoles/n64/N64MipsAssembly.md | 60 +++---------------- pages/consoles/wiiU/WiiUFileFormats.md | 6 +- pages/consoles/wiiU/WiiUGameEngines.md | 6 +- pages/consoles/wiiU/WiiUNAND.md | 6 +- pages/consoles/wiiU/WiiUNWF.md | 6 +- pages/consoles/wiiU/WiiUUnStrippedBinaries.md | 6 +- pages/consoles/wiiU/WiiUUnity.md | 6 +- pages/consoles/wiiU/WiiUVirtualConsole.md | 6 +- 10 files changed, 77 insertions(+), 87 deletions(-) diff --git a/categories/Introduction.md b/categories/Introduction.md index 0978d946..85180d4c 100644 --- a/categories/Introduction.md +++ b/categories/Introduction.md @@ -702,7 +702,7 @@ We have pages on each of the following **Nintendo** consoles: * [Nintendo GameCube (Dolphin)](https://www.retroreversing.com/gamecube/) * [Nintendo Wii](https://www.retroreversing.com/wii/) * [Nintendo 3DS](https://www.retroreversing.com/3ds/) -* [Nintendo Wii U](https://www.retroreversing.com/wiiU/) +* [Nintendo Wii U](https://www.retroreversing.com/wiiu) ## SEGA Consoles We have pages on each of the following **SEGA** consoles: diff --git a/categories/consoles/WiiU.md b/categories/consoles/WiiU.md index 0fd755f1..b2a0c417 100644 --- a/categories/consoles/WiiU.md +++ b/categories/consoles/WiiU.md @@ -1,6 +1,10 @@ --- permalink: /wiiu -title: Nintendo WiiU Reverse Engineering +redirect_from: + - /wiiu/ + - /wiiU + - /wiiU/ +title: Nintendo Wii U Reverse Engineering layout: post recommendTitle: All WiiU Posts editlink: ../categories/consoles/WiiU.md @@ -11,7 +15,7 @@ breadcrumbs: url: / - name: Consoles url: /consoles - - name: Nintendo WiiU Reverse Engineering + - name: Nintendo Wii U Reverse Engineering url: # tags: - wiiu @@ -22,25 +26,57 @@ recommend: --- # Introduction -Welcome to our page dedicated to Wii U reverse engineering! The Wii U was a gaming console released by Nintendo in 2012, and it introduced several innovative features to the gaming world, such as a touch screen on the controller and the ability to play games on both the TV and the controller. If you're interested in learning more about the technical aspects of this console and how it works, you've come to the right place. +Welcome to our page dedicated to Wii U reverse engineering! The Wii U was a gaming console released by Nintendo in 2012. Its mix of disc titles, eShop downloads, and Virtual Console releases makes it an interesting target for digital archaeology. -On this page, we've compiled a list of links to other pages that cover various topics related to Wii U reverse engineering. Whether you're interested in understanding the hardware architecture of the console, analyzing game code, or exploring the many mods and hacks that have been created by enthusiasts over the years, you'll find a wealth of resources and information on the pages we've linked to. +On this page, we've compiled links to the Wii U posts on RetroReversing. The sections are organised so you can jump in at whatever stage you're at, whether that's unpacking a title, identifying an engine, or picking a good first game to reverse. -So grab your Wii U gamepad, and get ready to dive into the exciting world of Wii U reverse engineering! +--- +# Hardware +Before you start digging into binaries, it helps to understand the storage and OS-level environment the software runs under. The following page is the most directly useful hardware-adjacent starting point we currently have: -{% comment %} +## NAND and Storage +The NAND layout is one of the first Wii U-specific topics worth understanding, as it impacts both data extraction and the safety of modifications: +{% include_cached link-to-other-post.html post="/WiiUNAND" description="Background on the Wii U NAND layout (SLC/MLC), common pitfalls, and why storage knowledge matters when extracting, modding, or recovering data." %} --- -# Hardware -If you're interested in reverse engineering software for the Wii U gaming console, it's crucial to have a thorough understanding of the hardware that powers it. By comprehending the inner workings of the Wii U hardware, you can better understand how the software interacts with the hardware and how you can potentially modify or enhance it. +# Reverse Engineering +If you are actively reversing Wii U titles, these pages cover the recurring platform-level topics you will keep meeting across games: -In this section of our guide, we will provide you with comprehensive information and resources on the hardware of the Wii U, including retail, prototype, and development hardware. +## File Formats and Title Layout +Start here if you want to understand how Wii U titles are packaged on disc and in eShop/NUS formats: +{% include_cached link-to-other-post.html post="/WiiUFileFormats" description="Practical notes on common Wii U container formats, and the title layout you will repeatedly run into when dumping discs or eShop titles." %} + +## Virtual Console Internals +If you are interested in reverse engineering Nintendo's emulation-based releases, this page covers the shared structure and where to begin looking: +{% include_cached link-to-other-post.html post="/WiiUVirtualConsole" description="A breakdown of the common Virtual Console title structure, and what to look at when reversing Nintendo's bundled emulators." %} + +--- +# Middleware +Some Wii U titles use platform-specific middleware that changes what "reverse engineering" looks like compared to a normal native title. -## Retail Hardware +## Nintendo Web Framework +Some Wii U applications are effectively WebKit-based apps rather than traditional native titles, which changes what artifacts you should prioritise: +{% include_cached link-to-other-post.html post="/WiiUNWF" description="Notes on Nintendo's WebKit-based application framework and why it matters for reverse engineering HTML5-based Wii U titles." %} -## Development Hardware +--- +# Game Engines +For many Wii U eShop titles, identifying the engine early can save time. It gives you strong hints about file formats, scripting/runtime components, and what tooling approaches tend to work. + +## eShop Game Engines +If you can identify the engine up front, you can usually predict what file formats and runtime components you will run into: +{% include_cached link-to-other-post.html post="/WiiUeShopEngines" description="A survey of third-party engines seen on the Wii U eShop and hints for identifying them inside binaries." %} + +## Unity Titles on the eShop +Unity was common on the Wii U eShop, and treating it as an engine-first reverse engineering problem can be a big time saver: +{% include_cached link-to-other-post.html post="/WiiUUnity" description="A reference list of Unity-powered Wii U eShop titles, useful for engine-specific reversing workflows." %} + +--- +# Games +If you want a higher-leverage target to start with, look for titles with debug symbols or otherwise unstripped binaries. -{% endcomment %} +## Games with Debug Symbols +If you want a friendlier first target, games with symbols or unstripped binaries can dramatically reduce the amount of guesswork: +{% include_cached link-to-other-post.html post="/wii-u-unstripped" description="A large reference table of Wii U titles known to ship with debug symbols or otherwise unstripped binaries." %} --- diff --git a/pages/consoles/n64/N64MipsAssembly.md b/pages/consoles/n64/N64MipsAssembly.md index 3cee724e..6aea0e0c 100644 --- a/pages/consoles/n64/N64MipsAssembly.md +++ b/pages/consoles/n64/N64MipsAssembly.md @@ -41,7 +41,7 @@ If you are new to MIPS or N64 development, these terms are fundamental to the wo --- # Lesson 001 - Dev Environment Setup -This section is based on the technical walkthrough by Fraser N64[^1] and covers the initial setup of a Windows-based development environment for N64 [MIPS](#glossary-mips) development. +This section is based on the technical walkthrough by [Fraser N64](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) and covers the initial setup of a Windows-based development environment for N64 [MIPS](#glossary-mips) development. @@ -131,29 +131,9 @@ By creating a Windows shortcut to your batch file and modifying the target, you The `/k` parameter tells the command processor to carry out the command specified by the string but remain open, leaving you at a command prompt precisely where you need to be to run repeated `bass` assembly commands. You can pin these shortcuts directly to your taskbar for quick access. ### MAME Launch Scripts -Because developers do not use a frontend, typing the full MAME executable path and N64 launch parameters repeatedly becomes tedious. A common pattern is to create batch files that capture your ROM file and route it into MAME automatically. +Because developers do not use a frontend, typing the full MAME executable path and N64 launch parameters repeatedly becomes tedious. A common pattern is to create a `run.cmd` and `debug.cmd` wrapper that takes a ROM path, changes into the MAME install directory, then launches MAME. -Here is the standard logic for a `run.bat` script that manages directory switching and parameter passing: -```bat -@echo off -set ROM_PATH=%~f1 -set OLD_DIR=%CD% -cd /d "C:\mame" -mame64 n64 -window -cart "%ROM_PATH%" -cd /d "%OLD_DIR%" -``` - -The `%~f1` syntax is a critical Windows batch trick; it takes the first parameter passed to the script (the ROM filename) and expands it into a fully qualified absolute path name. Since MAME requires absolute paths when invoked from outside its root directory, this automatically handles the path translation. - -You can also duplicate this script into a `debug.bat` file to automatically attach the debugger and verbose logging flags: -```bat -@echo off -set ROM_PATH=%~f1 -set OLD_DIR=%CD% -cd /d "C:\mame" -mame64 -debug -log -verbose n64 -window -cart "%ROM_PATH%" -cd /d "%OLD_DIR%" -``` +If you are following along with the `N64_ASM_Videos` repo, prefer its existing wrappers (`bass/run.cmd` and `bass/debug.cmd`) rather than inventing your own. The key detail is that the wrapper should pass an absolute ROM path (the repo uses `%~dpnx1`) so it still works after switching directories. --- # Lesson 002 - bass Assembler Keywords @@ -184,14 +164,9 @@ Two directives that are easy to confuse early on are `origin` and `base`: * `origin` is the current write cursor inside the output ROM file (a file offset). * `base` is the runtime address space that labels resolve to (the address you will see in the debugger). -In the repo's layout, the first `0x1000` bytes are deliberately reserved for the header + bootcode. With `base $80000000`, that means the label `Start:` ends up at runtime address `0x80001000`. +In the repo's layout, the first `0x1000` bytes are deliberately reserved for the header + bootcode, which is why the label `Start:` typically ends up at `0x80001000` with `base $80000000` (this is explained in more detail in the header section below). -The repo also makes the CRC patching step explicit. `Video002/make.cmd` is: -```bat -@echo off -bass Video002.asm -strict -benchmark -chksum64 Video002.N64 -``` +Build uses the same `make.cmd` pattern described in Lesson 001: assemble with `bass -strict -benchmark`, then run `chksum64` on the resulting ROM to patch header CRCs. ## Core bass Directives The main directives required for an N64 project include: @@ -558,13 +533,7 @@ The `N64_ASM_Videos` repo leans heavily on macros in `LIB/*.INC` to keep the mai Two macros you will see in almost every lesson project are: * `init()` from `LIB/N64.INC`, which performs early boot stabilisation and sets up a usable stack pointer. -* `ScreenNTSC(width, height, status, origin)` from `LIB/N64_GFX.INC`, which writes the full set of VI registers using the same constants as the explicit code in `Video004/Video004.asm`. - -For example, later lesson files call: -```nasm -init() -ScreenNTSC(320, 240, BPP16, $A010'0000) -``` +* `ScreenNTSC(width, height, status, origin)` from `LIB/N64_GFX.INC`, which is covered in more detail in Lesson 004 (it wraps the same VI register writes shown in `Video004/Video004.asm`). When you are learning, it is worth reading the macro bodies in `LIB/N64.INC` and `LIB/N64_GFX.INC` because they also serve as documentation: the repo includes comments that describe what each VI timing constant represents. @@ -599,16 +568,7 @@ To automate breakpoints, create a simple text file (e.g., `n64_debug.txt`) in yo bp 80000400 wp 80000400, 4, rw ``` - -The repo also provides a practical starting point for launching into MAME's debugger without rewriting command lines each time. `bass/debug.cmd` launches MAME with `-debug -log -verbose` enabled: -```bat -@echo off -set ROM=%~dpnx1 -set OLDDIR=%CD% -cd \mame -mame64.exe n64 -debug -log -verbose -window -cart %ROM% -switchres -nofilter -chdir /d %OLDDIR% -``` +If you want to launch into MAME's debugger without rewriting command lines, use the repo's `bass/debug.cmd` wrapper described earlier in Lesson 001. ### Advanced Watchpoints The `wp` command in the script above sets a **Watchpoint**. Unlike a standard breakpoint that halts execution when the Program Counter reaches a line of code, a watchpoint halts execution whenever a specific memory address is accessed. @@ -735,9 +695,3 @@ The routine returns the expanded font memory size (in the repo this is `0x2F80`) `li` is a pseudo-instruction. The assembler automatically breaks it down into *two* separate hardware instructions (`lui` and `ori`). The branch delay slot is strictly hardware-enforced to hold only *one* single instruction. If you place an `li` there, only the `lui` half will execute before the jump takes effect, resulting in a corrupted parameter and a broken font initialization. If you must optimize a parameter load into a delay slot, explicitly write the exact single hardware instruction (like `ori` or `addi`) yourself. - ---- -# References -[^1]: [Fraser N64 - YouTube](https://www.youtube.com/channel/UC3tcfSES8CB45DmTbHhUP1w) -[^2]: [fraserN64 - Twitch](https://www.twitch.tv/frasern64/) -[^3]: [fraser125/N64_ASM_Videos: The files complementing my video series N64 MIPS Assembly](https://github.com/fraser125/N64_ASM_Videos) diff --git a/pages/consoles/wiiU/WiiUFileFormats.md b/pages/consoles/wiiU/WiiUFileFormats.md index 279d3ee3..27cc10b5 100644 --- a/pages/consoles/wiiU/WiiUFileFormats.md +++ b/pages/consoles/wiiU/WiiUFileFormats.md @@ -1,7 +1,7 @@ --- layout: post tags: -- wiiU +- wiiu - fileformats title: Wii U File Formats image: /public/wiiU/WiiUFileFormats.jpg @@ -11,10 +11,10 @@ breadcrumbs: - name: Home url: / - name: WiiU - url: /wiiU + url: /wiiu - name: Wii U File Formats url: # -recommend: wiiU +recommend: wiiu editlink: /consoles/wiiU/WiiUFileFormats.md --- diff --git a/pages/consoles/wiiU/WiiUGameEngines.md b/pages/consoles/wiiU/WiiUGameEngines.md index e86b9f90..7ed76428 100644 --- a/pages/consoles/wiiU/WiiUGameEngines.md +++ b/pages/consoles/wiiU/WiiUGameEngines.md @@ -1,7 +1,7 @@ --- layout: post tags: -- wiiU +- wiiu - gameengines title: WiiU eShop Game Engines image: /public/wiiU/WiiUeShopGameEngines.jpg @@ -11,10 +11,10 @@ breadcrumbs: - name: Home url: / - name: WiiU - url: /wiiU + url: /wiiu - name: WiiU eShop Game Engines url: # -recommend: wiiU +recommend: wiiu editlink: /consoles/wiiU/WiiUGameEngines.md --- diff --git a/pages/consoles/wiiU/WiiUNAND.md b/pages/consoles/wiiU/WiiUNAND.md index 760bc2e8..6b22ef3a 100644 --- a/pages/consoles/wiiU/WiiUNAND.md +++ b/pages/consoles/wiiU/WiiUNAND.md @@ -1,7 +1,7 @@ --- layout: post tags: -- wiiU +- wiiu title: WiiU NAND Flash image: /public/wiiU/WiiUnandFlash.jpg twitterimage: https://www.retroreversing.com/public/wiiU/WiiUnandFlash.jpg @@ -11,10 +11,10 @@ breadcrumbs: - name: Home url: / - name: WiiU - url: /wiiU + url: /wiiu - name: WiiU NAND Flash url: # -recommend: wiiU +recommend: wiiu editlink: /consoles/wiiU/WiiUNAND.md updatedAt: '2019-03-02' --- diff --git a/pages/consoles/wiiU/WiiUNWF.md b/pages/consoles/wiiU/WiiUNWF.md index 17b42b84..58a0e409 100644 --- a/pages/consoles/wiiU/WiiUNWF.md +++ b/pages/consoles/wiiU/WiiUNWF.md @@ -1,7 +1,7 @@ --- layout: post tags: -- wiiU +- wiiu - middleware - gameengines title: Wii U Nintendo Web Framework @@ -12,11 +12,11 @@ breadcrumbs: - name: Home url: / - name: WiiU - url: /wiiU + url: /wiiu - name: Wii U Nintendo Web Framework (NWF) url: # recommend: - - wiiU + - wiiu - middleware editlink: /consoles/wiiU/WiiUNWF.md --- diff --git a/pages/consoles/wiiU/WiiUUnStrippedBinaries.md b/pages/consoles/wiiU/WiiUUnStrippedBinaries.md index fdc4557a..5592d519 100644 --- a/pages/consoles/wiiU/WiiUUnStrippedBinaries.md +++ b/pages/consoles/wiiU/WiiUUnStrippedBinaries.md @@ -1,7 +1,7 @@ --- layout: post tags: -- wiiU +- wiiu - symbols - games title: Wii U Games with Debug symbols (UnStripped Binaries) @@ -15,10 +15,10 @@ breadcrumbs: - name: Home url: / - name: WiiU - url: /wiiU + url: /wiiu - name: Wii U Games with Debug symbols (UnStripped Binaries) url: # -recommend: wiiU +recommend: wiiu editlink: /consoles/wiiU/WiiUUnStrippedBinaries.md references: - youtube diff --git a/pages/consoles/wiiU/WiiUUnity.md b/pages/consoles/wiiU/WiiUUnity.md index 1865005d..0f73c91f 100644 --- a/pages/consoles/wiiU/WiiUUnity.md +++ b/pages/consoles/wiiU/WiiUUnity.md @@ -1,7 +1,7 @@ --- layout: post tags: -- wiiU +- wiiu - gameengines - unity3d title: Unity Game Engine Games on wiiU eShop @@ -12,11 +12,11 @@ breadcrumbs: - name: Home url: / - name: WiiU - url: /wiiU + url: /wiiu - name: WiiU Unity Game Engine url: # recommend: - - wiiU + - wiiu - gameengines - unity3d editlink: /consoles/wiiU/WiiUUnity.md diff --git a/pages/consoles/wiiU/WiiUVirtualConsole.md b/pages/consoles/wiiU/WiiUVirtualConsole.md index cc7e032b..5f7b4f3e 100644 --- a/pages/consoles/wiiU/WiiUVirtualConsole.md +++ b/pages/consoles/wiiU/WiiUVirtualConsole.md @@ -1,7 +1,7 @@ --- layout: post tags: -- wiiU +- wiiu title: Wii U Virtual Console Reversing image: /public/wiiU/WiiU Virtual Console Reversing.jpg twitterimage: https://www.retroreversing.com/public/wiiU/WiiU Virtual Console Reversing.jpg @@ -11,10 +11,10 @@ breadcrumbs: - name: Home url: / - name: WiiU - url: /wiiU + url: /wiiu - name: Wii U Virtual Console Reversing url: # -recommend: wiiU +recommend: wiiu editlink: /consoles/wiiU/WiiUVirtualConsole.md updatedAt: '2019-03-04' --- From 776979f5a2b576106996aff6ce6f14f5ca7ea59c Mon Sep 17 00:00:00 2001 From: A Date: Sat, 11 Apr 2026 23:33:08 +0100 Subject: [PATCH 08/13] Added more content to the WiiUNAND page --- categories/consoles/WiiU.md | 7 +- categories/misc/Hacking.md | 2 - pages/consoles/gameboy/Mrdo.md | 129 ++++++++++++++++- pages/consoles/wiiU/WiiUNAND.md | 237 ++++++++++++++++++++++++++++++-- 4 files changed, 358 insertions(+), 17 deletions(-) diff --git a/categories/consoles/WiiU.md b/categories/consoles/WiiU.md index b2a0c417..eb98ff2e 100644 --- a/categories/consoles/WiiU.md +++ b/categories/consoles/WiiU.md @@ -32,7 +32,12 @@ On this page, we've compiled links to the Wii U posts on RetroReversing. The sec --- # Hardware -Before you start digging into binaries, it helps to understand the storage and OS-level environment the software runs under. The following page is the most directly useful hardware-adjacent starting point we currently have: +Before you start digging into binaries, it helps to understand the storage and OS-level environment the software runs under. + +## Nintendo Wii U Architecture +[Copetti.org](https://www.copetti.org/writings/consoles/wiiu/) hosts a comprehensive technical write-up detailing the internal architecture of the Nintendo Wii U. The article explores the "Espresso" CPU and "Latte" GPU, providing insights into the console's memory hierarchy and the "Starbuck" security ARM processor. It further analyzes the hardware-level backward compatibility with the Wii and the low-latency wireless protocol used for GamePad communication. + +{% include_cached link-to-other-site.html url="https://www.copetti.org/writings/consoles/wiiu/" description="Rodrigo Copetti provides a comprehensive architectural deep dive into the Wii U, covering its multi-core Espresso CPU, Latte GPU, and security subsystems." title="Wii U Architecture: A Practical Analysis" %} ## NAND and Storage The NAND layout is one of the first Wii U-specific topics worth understanding, as it impacts both data extraction and the safety of modifications: diff --git a/categories/misc/Hacking.md b/categories/misc/Hacking.md index 024503e1..e6aa7e50 100644 --- a/categories/misc/Hacking.md +++ b/categories/misc/Hacking.md @@ -11,8 +11,6 @@ recommend: - industry - introduction - pc -image_: /public/images/categories/Hacking.jpg -twitterimage_: https://www.retroreversing.com/public/images/categories/Hacking.jpg tags: - industry - hacking diff --git a/pages/consoles/gameboy/Mrdo.md b/pages/consoles/gameboy/Mrdo.md index d984c253..be5ec243 100644 --- a/pages/consoles/gameboy/Mrdo.md +++ b/pages/consoles/gameboy/Mrdo.md @@ -18,10 +18,13 @@ breadcrumbs: url: # recommend: gameboy editlink: /consoles/gameboy/Mrdo.md +updatedAt: '2026-04-11' --- The source code for Ocean Software's Mr Do! port to the Game Boy has been officially released by two of the original developers. -Description from Paul Hughes [^1] +The original release is a single monolithic assembly file (`mrdo.asm`) containing code, data tables, and large blocks of embedded graphics data [^2]. + +Description from Paul Hughes [^1]: ``` Many moons ago I debugged and finished off Ocean's Mr Do! for the original Game Boy. @@ -30,7 +33,7 @@ As **Joffa**, the late, great original author, decided to release the source cod I thought I'd also put it up. ``` -The header for the source file also mentions **Wesley Knackets&& developed it between the 28th of June and the 5th of September 1990, which is just a little over 2 months! +The header for the source file also mentions Wesley Knackers and gives a start date of June 28, 1990 and a last date of September 5, 1990: ```cpp **************************************************************************** @@ -45,15 +48,133 @@ The header for the source file also mentions **Wesley Knackets&& developed it be **************************************************************************** ``` -Known developers: +Known developers mentioned across the release and related posts: * **Paul Hughes** * **Joffa** * **Wesley Knackers** +--- +## Glossary of Key Terms +If you are new to Game Boy reverse engineering terminology, this quick glossary should help: +* **DMA** - The Game Boy OAM DMA mechanism used to copy 160 bytes of sprite attribute data into OAM via the `DMA` register (`$FF46`) [^3]. +* **OAM** - Object Attribute Memory (`$FE00`) containing the hardware sprite list (position, tile, attributes) [^3]. +* **VRAM** - Video RAM (`$8000-$9FFF`) containing tile graphics and background/window tilemaps [^3]. +* **WRAM** - Work RAM (`$C000-$DFFF`) used for variables, buffers, and scratch space [^3]. +* **HRAM** - High RAM (`$FF80-$FFFE`) used here to run short routines (including the DMA trigger) without being blocked during OAM DMA [^3]. + +--- +# Code overview +The source is useful because it is not a "disassembly" or a ROM dump. +It is proper annotated game code with labels and routines that map closely onto the retail behaviour. + +Some highlights worth skimming first: +* **Main loop** - `START` runs `SYSETUP`, `MENU`, and then enters a per-level loop that calls the gameplay subsystems in a predictable order. +* **State-machine style** - Multiple behaviours are selected via jump tables (`BADTAB`, `APPLETAB`, `LOGOTAB`, etc.) rather than long chains of branches. +* **2x2 meta-tiles** - The map is built from 4-tile blocks (top-left/top-right/bottom-left/bottom-right) with additional tables for "eaten" wall variants. +* **Split-screen rendering** - `SPLITSCREEN` does a status-window pass, then triggers OAM DMA for gameplay sprites after a timing delay. + +--- +# Memory map and data structures +The file defines a set of fixed addresses that make its rendering and buffering model easier to follow. +This is also a good example of how much you can get done on a ROM-only cartridge by leaning on careful RAM layout. + +Key addresses used throughout the code are: +Name | Address | Notes +---|---|--- +`STACK` | `$CFFF` | Stack top (end of WRAM) +`OBJSET` | `$8000` | Sprite tile data base in VRAM +`BGSET` | `$9000` | Background tile data base in VRAM +`DISPSCREEN` | `$9800` | Background tilemap for gameplay +`STATSCREEN` | `$9C00` | Background tilemap for the status window +`BACKSCREEN` | `$C800` | RAM buffer used for background work +`BYTESCREEN` | `$CC00` | Small RAM buffer used as scratch / temp +`OAMRAM` | `$FE00` | OAM +`INTRAM` | `$FF80` | HRAM + +## Sprite records +The game uses fixed-size records in WRAM to represent sprites and "actors". +The comments in the `SPRITES` block give the layout, and you can see the same pattern repeated in multiple systems (Mr Do, dinos/ghosts, apples). + +The sprite record fields are: +Field | Offset | Purpose +---|---|--- +`TYP` | 0 | Actor type (used as an index into jump tables) +`YNO` | 1 | Y position (pixel units) +`XNO` | 2 | X position (pixel units) +`GNO` | 3 | Base tile index / graphics selector +`FLG` | 4 | Flags (palette, flip, priority, etc.) +`ADL` | 5 | Pointer / address low byte (varies by actor) +`YSD` | 6 | Y speed / delta +`XSD` | 7 | X speed / delta + +--- +# Main loop and jump-table pattern +At the top level the program flow is very direct: +* **Boot** - `START` sets up the stack, calls `SYSETUP`, runs the menu, and resets the game state. +* **Per level** - `LEVELSETUP` prepares graphics and variables and then drops into `MAINLOOP`. +* **Per frame** - `MAINLOOP` calls the major gameplay subsystems (input, Mr Do movement/eating, baddies, collisions, apples, sprite dumping, timers, RNG, and flag updates). + +One of the most reusable techniques in the file is the jump-table driven state machine. +For example, `BADTAB` maps each actor type to its update routine, and `APPLETAB` does the same for apple states. +This is a good pattern to steal when writing your own LR35902 assembly because it keeps the hot-path branch structure compact. + +--- +# Rendering, split-screen, and DMA +The code uses two different "sprite worlds" and then does a timed swap: +* **Status sprites** - A separate OAM-shaped buffer (`STATUSOBJ`) is DMA'd first, with the LCDC configured so the status window is enabled. +* **Gameplay sprites** - After updating the status line graphics, the code waits a fixed amount of time and then DMA's the gameplay sprite list (`GAMEOBJ`) and disables the status window again. + +This is orchestrated by `SPLITSCREEN`, and it relies on a tiny DMA-trigger routine being copied into HRAM during `SYSETUP`. +The routine is then called via the `BLITS` label, passing the source high-byte in `A` before writing to `DMA` (`$FF46`) [^3]. + +If you are reverse engineering the ROM in an emulator, the easy breakpoint targets are: +* **OAM DMA** - writes to `$FF46` (DMA). +* **Mode changes** - writes to `LCDC` (`$FF40`) to enable/disable the window. + +--- +# Map format and 2x2 meta-tiles +The background is assembled from 2x2 blocks of tile IDs. +The `BLOCKS`, `CORNERS`, `CHERRY`, `FOOD`, and `APPLE` tables each store 4 bytes in the order "top-left, top-right, bottom-left, bottom-right". + +There are also multiple "eat tables" (for example `UTL`, `UTR`, `UBL`, `UBR`) that appear to define the replacement tiles to use when Mr Do chews through walls in a particular direction. +If you are trying to re-implement or rewrite the map system, these tables are a good anchor for reconstructing the exact tile semantics. + +--- +# RNG and text routines +The RNG is a compact 3-byte state (`RND1`, `RND2`, `RND3`) stirred each frame and mixed with the `DIV` hardware register. +It is small enough that you can single-step it and see how entropy flows into map generation (for example the gravel fill in `DRAWMAP`). + +The text routines are also worth a quick look because they show a very practical "engine" approach: +strings are stored in a compact custom format, and `PRINTEXT` renders them directly into the background tilemap. + +--- +# Assembling it today +The source uses an older assembler dialect with directives like `DEFB`, `DEFW`, `DEFS`, `HEX`, `ORG`, and `ENT`. +That means you should not expect it to assemble cleanly with modern `rgbds` without some conversion work [^4]. + +If you want to get it building as an exercise, a reasonable approach is: +* **Start with `rgbds` scaffolding** - Create a ROM0 header section and make sure the reset entry and cartridge header bytes land at the expected addresses [^3][^4]. +* **Convert directives mechanically** - Map `DEFB`/`DEFW`/`DEFS` to `db`/`dw`/`ds`, and replace `HEX` blocks with `db $..` sequences. +* **Replace `ORG` with sections** - Translate fixed `ORG` placements into `SECTION` blocks pinned to ROM0/ROMX addresses. +* **Validate in an emulator** - Use breakpoints on `$FF46` and `LCDC` to confirm you are hitting the same high-level flow as the original. + +Also note that the in-file cartridge header comments claim a 256K ROM, but the ROM size byte in the header is written as `0`. +If you do attempt a rebuild, you will need to reconcile those fields with the actual output ROM size. + +--- +# Fun breadcrumbs in the comments +The release is full of tiny details that give it some personality and make it easier to follow. +Some examples you will see while browsing: +* **"STOPS STUPID BUG!"** - A defensive load before a compare in the status-sprite dump routine. +* **`HIGHBUFF`** - A hardcoded string containing `FROBUSH HERE` in the high-score data block. + --- # Development kit --- # References -[^1]: http://www.pauliehughes.com/downloads/index.html +[^1]: https://www.pauliehughes.com/downloads.htm +[^2]: https://www.pauliehughes.com/index_htm_files/mrdo.asm +[^3]: https://gbdev.io/pandocs/ +[^4]: https://rgbds.gbdev.io/ diff --git a/pages/consoles/wiiU/WiiUNAND.md b/pages/consoles/wiiU/WiiUNAND.md index 6b22ef3a..59559e35 100644 --- a/pages/consoles/wiiU/WiiUNAND.md +++ b/pages/consoles/wiiU/WiiUNAND.md @@ -19,24 +19,241 @@ editlink: /consoles/wiiU/WiiUNAND.md updatedAt: '2019-03-02' --- -# What is NAND? -NAND Flash Memory is the built in memory of the Wii console. It houses save data, downloaded channels, and the Wii U Menu [^3]. +The Wii U uses NAND flash memory as its **primary non-volatile storage**, meaning it retains data even when powered off. This is fundamental to how the system boots, operates, and stores user data. It houses save data, downloaded channels, and the Wii U Menu [^3]. -# Physical NAND chips -The Wii U has 2 NAND chips. The MLC, which stores Wii U data, and the SLC, which has 2 separate sections ("banks" if you will), one that stores vWii data only and one that stores the rest of the Wii U data. +## What is NAND? +NAND stands for **"NOT AND"**. It originates from Boolean algebra, where NAND is a type of **logic gate**. + +NAND flash memory (like in the Wii U) is built using arrays of NAND logic gates: +* These gates store bits by trapping electrical charge +* Their structure allows **high-density storage** +* Cheaper and more compact than alternatives like NOR flash + +So when you hear "NAND memory", it literally refers to memory built using **NAND (NOT AND) logic gate architecture**. + +## Why does the Wii U use NAND? +Thw Wii U uses NAND because it: +* Retains data without power +* Is compact and soldered directly to the motherboard +* Has faster access than traditional HDDs for system-level operations + +### Why NAND specifically (vs other storage)? +NAND flash is chosen because: +* No moving parts -> durability +* Lower power consumption +* High density for small form factor +* Sufficient speed for firmware execution + +This makes it ideal for embedded systems like consoles. + +--- +## What is stored on the Wii U NAND? +NAND is used on the the Wii U to store: +* User profiles +* Save data +* System settings +* Installed titles (on Basic models especially) + +### System firmware and boot process +The NAND contains the **entire operating system stack**, including: +* Bootloaders (early-stage code executed at power-on) +* System firmware (menu, system services) +* Security components (encryption keys, signature checks) + +Without NAND, the console has **no instructions to execute**, so it cannot boot at all. Unlike systems that rely on removable storage, the Wii U’s internal NAND is mandatory for initialization. + +### System updates and installed content +System updates are written directly to NAND: +* Firmware updates modify system titles in NAND +* Downloaded games (especially on 8GB models) are stored there +* Virtual Console and system apps reside in NAND + +--- +## How much NAND is available to the Wii U? +The Wii U shipped in two variants: +* Basic model - 8GB MLC NAND (~3GB free after system files) +* Deluxe model - 32GB MLC NAND (~25GB free after system files) + +In both cases the SLC is the same size at roughly 512MB. + +--- +# Wii U's NAND Hardware +Internally, the Wii U actually uses two types of NAND-based storage: +* **SLC** NAND - Stores critical system data (bootloaders, OS, security) (~512MB, fast, high durability) +* **MLC** NAND - Stores user data (games, saves, downloads) (8GB or 32GB, slower, cheaper) + +The system **boots entirely from SLC first**, then mounts and uses MLC for user data. All of these are accessed as separate partitions by the Wii U [^2]. -## Caution changing NAND! -Be very careful with NAND changes as the wiiU has no way of fixing the NAND if it breaks, so basically it bricks your console. +## SLC (Single-Level Cell) NAND +The **SLC (Single-Level Cell) NAND** is the **critical system storage**. It is small (~512MB) but extremely important because it contains everything required to **boot, verify, and control the system**. + +The SLC contains both Wii U and vWii system data, these are separated logically via filesystem structure and title IDs. So vWii operates in a sandboxed environment, but not on a physically separate NAND bank. + +### Boot chain (lowest-level startup code) +The SLC contains the early boot stages: +* **boot0** - Hardcoded entry point (partially in ROM, partially tied to NAND), Initializes hardware and loads next stage +* **boot1** - Verified by boot0 (cryptographic check) then Loads further system components +* **boot2 / IOSU kernel loading** - Brings up the main system OS layer + +If anything here is corrupted, the console **cannot boot at all** (hard brick). + +### IOSU (system operating environment) +The Wii U runs a subsystem similar to the Wii’s IOS, called **IOSU** which handles: +* File system +* Permissions +* Hardware access +* Security enforcement + +This lives primarily on SLC because: +* It must be **trusted** +* It must be **available immediately at boot** + +### System titles and core modules +SLC stores essential system titles: +* System menu components +* Core libraries +* Background services (account handling, update services) + +These are distinct from user-installed titles (which go on MLC). + +--- +### Security data and keys +This is one of the most important parts: +* **Console-unique encryption keys** +* Certificates +* Signing data used to verify software + +These enforce Nintendo’s trust chain: +* Every executable must be signed +* Boot stages verify each other +* Prevents unauthorized code execution + +--- +### Configuration and critical system data +Includes: +* System configuration (region, settings) +* Internal databases for system operation +* Low-level logs and flags + +### Why SLC is used for this +SLC NAND is chosen specifically because: +* **Higher reliability** (fewer bit errors) +* **Much higher write endurance** +* **Faster read/write latency** -## NAND Backup +This is essential for: +* Boot integrity +* System stability +* Preventing corruption in critical areas + +### Failure implications +If SLC is damaged: +* No recovery through normal means +* System cannot initialize hardware or OS +* Requires NAND backup restoration, or Hardware-level repair + +This is why in modding: +* **SLC dumps are the most critical backup** +* Corrupting SLC is far more dangerous than MLC + +--- +## MLC (Multi-Level Cell) NAND +The **MLC (Multi-Level Cell) NAND** is the **main bulk storage** of the system. This is the part that differs between the 8GB and 32GB models and is where almost all **user-facing data** lives. + +### Installed games and applications +The MLC stores: +* eShop downloads +* Game updates and patches +* DLC content +* Virtual Console titles + +These are stored as **titles** in a structured directory layout (similar concept to SLC, but much larger scale). + +--- +### User data +The MLC also stores: +* Save files +* User profiles +* Account-linked data (e.g. NNID) +* Game-specific settings + +This is the data that changes frequently during gameplay. + +--- +### System data (non-critical) +MLC also holds less critical system components: +* Some system applications +* Update data before installation +* Cache data + +Important distinction: +* If MLC data is corrupted → system may still boot +* If SLC is corrupted → system will not boot + +--- +## Filesystem and layout +The MLC uses a filesystem often referred to as the **WFS (Wii U File System)** which is encrypted per-console and structured into: +* `/usr/` - user data, saves, installs +* `/sys/` - system-related data (non-boot-critical) + +Each installed title has: +* A title ID +* Its own directory structure +* Metadata and content files + +### Performance and behavior +MLC is: +* Slower than SLC +* More prone to wear over time +* Managed by wear-leveling algorithms + +This is why: +* Game installs can be relatively slow +* Heavy write usage (e.g. frequent saves) is managed carefully + +### Failure characteristics +MLC issues are more common than SLC: +* Bad blocks can develop over time +* Filesystem corruption can occur + +This Leads to missing games, save data loss and installation failures but typically the system still boots and data can sometimes be rebuilt or reinstalled + +--- +# Security and anti-piracy +The NAND plays a critical role in enforcing Nintendo’s security model: +* Stores **console-unique encryption keys** +* Holds signed system titles verified during boot +* Prevents unauthorized code execution + +If NAND contents are corrupted or mismatched, the system can fail to boot (brick), because security checks fail. + +So be very careful with NAND changes as the wiiU has no way of fixing the NAND if it breaks, so basically it bricks your console. + +## Backing Up WiiU NAND +If the SLC NAND is: +* **Corrupted** -> system may brick +* **Removed** -> system cannot boot +* **Modified incorrectly** -> fails security checks + +This is why SLC NAND backups are critical in modding communities. + +MLC dumps on the other hand are large but **less critical than SLC**, in fact rebuilding MLC is sometimes possible if SLC is intact. + +Many hacks interact with MLC: + * Title installation + * Save injection + +### NAND Backup Every NAND backup is unique and only belongs to the system it came from. Every console has it's own unique soul you can say [^1]. -So you can't use someone else's NAND backup for your own wiiU! +So you can't use someone else's NAND backup for your own wii U! -## redNAND (Redirected NAND) +### redNAND (Redirected NAND) Imagine you could use your SD card instead of the internal system NAND, that means you could modify it as much as you want and when it bricks you just fix the files on SD card. Well that is exactly what redNAND does! +[StroopwafelCFW/minute_minute: Wii U boot1 replacement](https://github.com/StroopwafelCFW/minute_minute) +--- # References [^1]: https://www.reddit.com/r/WiiUHacks/comments/7ihoql/is_there_any_type_of_recovery_boot_mode/ [^2]: https://gbatemp.net/threads/nand-wiiu-which-is-what.465750/ -[^3]: https://dolphin-emu.org/docs/guides/nand-usage-guide/ +[^3]: https://dolphin-emu.org/docs/guides/nand-usage-guide/ \ No newline at end of file From 9335b41a26aecb32a6518221e0c63a3b80dbb71f Mon Sep 17 00:00:00 2001 From: A Date: Sun, 12 Apr 2026 14:34:43 +0100 Subject: [PATCH 09/13] Added more content to the Mr Do page --- _includes/header.html | 26 +- categories/misc/Hacking.md | 5 + pages/consoles/gameboy/Mrdo.md | 825 +++++++++++++++++++++++- pages/consoles/nes/NESDevkitHardware.md | 8 +- 4 files changed, 827 insertions(+), 37 deletions(-) diff --git a/_includes/header.html b/_includes/header.html index cac15443..e3067344 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -218,20 +218,20 @@

Super Mario World

@@ -241,15 +241,15 @@

Super Mario World

PS2 PS3 PSP - Xbox - Xbox 360 + Xbox + Xbox 360
diff --git a/categories/misc/Hacking.md b/categories/misc/Hacking.md index e6aa7e50..c947b151 100644 --- a/categories/misc/Hacking.md +++ b/categories/misc/Hacking.md @@ -18,6 +18,11 @@ tags: # Hacking History +### 2000 - ILOVEYOU Virus: Technical Breakdown and Demonstration +[NationSquid](https://www.youtube.com/watch?v=NZDiQczOsdc) features a technical overview and demonstration of the ILOVEYOU worm, focusing on its VBScript architecture and rapid propagation through the MAPI interface. The video details how the malware manipulated files and utilized social engineering to achieve widespread system infections and data loss. + + + ## 2005 - Samy Worm: The Myspace XSS Exploit [Motherboard](https://www.youtube.com/watch?v=DtnuaHl378M) features an interview with **Samy Kamkar** detailing the infamous 2005 "Samy Worm" that took down Myspace. Kamkar explains the technical mechanics of the Cross-Site Scripting (XSS) vulnerability that allowed the worm to exponentially propagate by automatically adding him as a friend and infecting visiting profiles. The video also covers the aftermath, including the site-wide outage and the legal repercussions that led to a three-year ban from computer use. diff --git a/pages/consoles/gameboy/Mrdo.md b/pages/consoles/gameboy/Mrdo.md index be5ec243..1a6662c9 100644 --- a/pages/consoles/gameboy/Mrdo.md +++ b/pages/consoles/gameboy/Mrdo.md @@ -16,22 +16,36 @@ breadcrumbs: url: /gameboy - name: Mr Do! Source Code (Game Boy) url: # -recommend: gameboy +recommend: +- gameboy editlink: /consoles/gameboy/Mrdo.md -updatedAt: '2026-04-11' +updatedAt: '2026-04-12' --- +# Introduction +This page documents the official release of the assembly source for Ocean Software's Mr Do! port to the Game Boy. +It focuses on what the code is doing (maps, chewing, actors, rendering timing, and data formats), plus how to verify it in SameBoy. -The source code for Ocean Software's Mr Do! port to the Game Boy has been officially released by two of the original developers. -The original release is a single monolithic assembly file (`mrdo.asm`) containing code, data tables, and large blocks of embedded graphics data [^2]. +## Start here +If you only read a few sections, these are the best "entry points" for understanding how the engine works: +* **Data formats** - Jump to [Scene format (maps, cherries, apples, food)](#scene-format-maps-cherries-apples-food) for the `SCENE` stream and the `BYTESCREEN` control map. +* **Core trick** - Jump to [Dirty-tile updates and why BACKSCREEN exists](#dirty-tile-updates-and-why-backscreen-exists) for the `BACKSCREEN` + `CHRDUMP` design. +* **Timing** - Jump to [Timing, VBlank, and the window split](#timing-vblank-and-the-window-split) for the mid-frame `LCDC` swap and OAM DMA strategy. +* **Hands-on** - Jump to [SameBoy debugger walkthrough](#sameboy-debugger-walkthrough) for watchpoints you can run immediately. -Description from Paul Hughes [^1]: -``` -Many moons ago I debugged and finished off Ocean's Mr Do! for the original Game Boy. +## Mr Do! - Game Boy Review +This video provides a brief look at the Game Boy port and is useful context before diving into the source [^6]: + -As **Joffa**, the late, great original author, decided to release the source code, +--- +# Source code release +The original release is a single monolithic assembly file (`mrdo.asm`) containing code, data tables, and large blocks of embedded graphics data [^2]. -I thought I'd also put it up. -``` +Description from Paul Hughes [^1]: +> Many moons ago I debugged and finished off Ocean's Mr Do! for the original Game Boy. +> +> As **Joffa**, the late, great original author, decided to release the source code, +> +> I thought I'd also put it up. The header for the source file also mentions Wesley Knackers and gives a start date of June 28, 1990 and a last date of September 5, 1990: @@ -49,9 +63,9 @@ The header for the source file also mentions Wesley Knackers and gives a start d ``` Known developers mentioned across the release and related posts: -* **Paul Hughes** -* **Joffa** -* **Wesley Knackers** +* **Paul Hughes** - Debugged and finished off Ocean's Mr Do! for the original Game Boy (per his note) [^1]. +* **Joffa** - The original author who released the source code (per Hughes) [^1]. +* **Wesley Knackers** - Credited as the author in the `mrdo.asm` header [^2]. --- ## Glossary of Key Terms @@ -73,6 +87,718 @@ Some highlights worth skimming first: * **2x2 meta-tiles** - The map is built from 4-tile blocks (top-left/top-right/bottom-left/bottom-right) with additional tables for "eaten" wall variants. * **Split-screen rendering** - `SPLITSCREEN` does a status-window pass, then triggers OAM DMA for gameplay sprites after a timing delay. +--- +# Deeper file tour +If you want to understand the game quickly, it helps to treat `mrdo.asm` as a handful of tightly-coupled subsystems that run in a strict per-frame pipeline. + +## Frame pipeline +The `MAINLOOP` order is deliberate. +The parts that must run during VBlank (tilemap updates, OAM DMA) are clustered in `SPLITSCREEN`, and the rest of gameplay runs with predictable data flow: +Routine | What it does | Why it matters +---|---|--- +`SPLITSCREEN` | Waits for VBlank, updates status, dumps dirty tiles, prints apples, then does OAM DMA swaps | Coordinates tilemap writes and sprite DMA so VRAM/OAM access stays safe +`KEYS` | Polls the joypad and writes `KEYPRESS` | Centralizes input sampling for the frame +`DECODE` | Updates Mr Do movement/animation and handles ball throwing | Implements turn validity checks and scroll updates +`MRDOCHEW` | Updates the "chewed" tunnel tiles around Mr Do | Writes tunnel state into the map mirror and queues tilemap updates +`BADDIES` | Updates all active enemies and special actors via `BADTAB` | Shared AI + per-type state machine updates +`COLLISIONS` | Checks the thrown ball against all 16x16 actors via `HITBALLTAB` | Handles catches, kills, freeze/unfreeze logic, and score popups +`APPLEPIE` | Updates apples via `APPLETAB` | Apple state machine (waiting, jiggle, falling, splitting) +`DUMPOBJ` | Builds the gameplay OAM list (`GAMEOBJ`) from sprite records | Includes a simple OAM-order mixing trick to reduce persistent flicker patterns +`STATSP` | Builds the status-window OAM list (`STATUSOBJ`) | Renders lives/extra letters + bonus monster status sprites +`CLOCK` / `RAND` / `FLAGS` | Timekeeping, RNG stirring, animation helpers | Keeps animation offsets and randomness consistent frame-to-frame + +This diagram shows the per-frame call order as a pipeline: +```mermaid +flowchart LR + SPLIT["SPLITSCREEN (VBlank work + OAM DMA)"] --> KEYS["KEYS (poll joypad)"] + KEYS --> DECODE["DECODE (Mr Do movement + ball throw)"] + DECODE --> CHEW["MRDOCHEW (tunnel updates + CHRDUMP)"] + CHEW --> BADDIES["BADDIES (actor update via BADTAB)"] + BADDIES --> COLL["COLLISIONS (ball vs actors via HITBALLTAB)"] + COLL --> APPLE["APPLEPIE (apple states via APPLETAB)"] + APPLE --> DUMP["DUMPOBJ (build GAMEOBJ OAM list)"] + DUMP --> STATSP["STATSP (build STATUSOBJ OAM list)"] + STATSP --> CLOCK["CLOCK"] + CLOCK --> RAND["RAND"] + RAND --> FLAGS["FLAGS"] +``` + +--- +## Joypad polling and turn validation +Input is polled by `KEYS` using the standard `$FF00` joypad register scan, with repeated reads and bit-masking before the final nibble merge into `KEYPRESS`. +Mr Do turning is restricted to tile boundaries: +* **Tile boundary gating** - `DECODE` only considers direction changes when both `(X+8)&15 == 0` and `(Y+8)&15 == 0`, which effectively makes turns occur on a 16x16 grid even though positions are stored in pixels. +* **Directional validity tables** - The `VALIDLR` and `VALIDUD` tables translate the pressed direction bits into a "direction+1" value, letting the code reject invalid transitions cheaply. + +--- +## Coordinate transforms you will see everywhere +Multiple helper routines convert between pixel positions and addresses in different memory-backed maps: +* **`LOWAD` / `PIXAD`** - Convert pixel XY into a `DISPSCREEN` tilemap address. +* **`GETMAPHI` / `GETMAPLO`** - Convert pixel XY into a `BACKSCREEN` tilemap address. +* **`GETBYTEHI` / `GETBYTELO`** - Convert pixel XY into a `BYTESCREEN` byte-map address (used as a compact "control map" for tunnels/items). + +If you are tracing code in an emulator, these routines are great stepping stones for understanding whether a subsystem is reading the "visual map" (`DISPSCREEN` / `BACKSCREEN`) or the compact control map (`BYTESCREEN`). + +--- +## Dirty-tile updates and why BACKSCREEN exists +The tunnel chewing system is optimized around a RAM mirror of the background tilemap: +* **Canonical map mirror** - `COPYMAP` copies `DISPSCREEN` into `BACKSCREEN` so gameplay logic can read/modify a RAM copy without touching VRAM constantly. +* **Chew writes go to `BACKSCREEN`** - `MRDOCHEW` edits `BACKSCREEN` tiles using direction-specific lookup tables (`UTL`, `UTR`, `UBL`, `UBR`, and friends). +* **Changes are queued** - The chewing code writes address+tile triples into `CHRDUMP` and increments `DUMPTOT`. +* **VBlank flush** - `CHRDUMPER` runs inside `SPLITSCREEN` and copies only the queued tile changes back into `DISPSCREEN`. + +`CHRDUMPER` contains a particularly neat trick. +It stores queued addresses in the `BACKSCREEN` address space and then XORs the high byte so they point at the equivalent `DISPSCREEN` tilemap location. +That avoids storing two pointers per tile update and keeps the dirty list compact. + +This is the `CHRDUMPER` hot loop, showing the XOR high-byte mapping: +```nasm +CHRDUMPER LD A,(DUMPTOT) ;ANY CHRS TO DUMP? + OR A + RET Z + LD B,A + XOR A + LD (DUMPTOT),A + LD HL,CHRDUMP + LD C,>DISPSCREEN^>BACKSCREEN +CDUMP LD E,(HL) + INC L + LD A,(HLI) + XOR C + LD D,A + LD A,(HLI) + LD (DE),A + DEC B + JR NZ,CDUMP + RET +``` + +--- +## Scene format (maps, cherries, apples, food) +The map/scene data (`SCENE1`..`SCENE10`) is a compact stream consumed by `DRAWMAP`. +At a high level, each scene contains: +Part | Encoding | Consumed by +---|---|--- +Mr Do start + initial tunnel | 4 bytes: `MRDO_Y, MRDO_X, TUNNEL_Y, TUNNEL_X` | `DRAWMAP` then `DOTUNNEL` +Tunnel strokes | Repeating triples: `START_BLOCK, DIRECTION, LENGTH` terminated by `0xFF` | `DOTUNNEL` (draws a series of 2x2 blocks using `VECTAB2`) +End cap block | 1 byte: `END_BLOCK` | `ENDTUNNEL` (draws one final 2x2 block) +Cherry placements | Repeating pairs: `Y, X` terminated by `0xFF` | `PUTCHERRY` (draws a 2x2 cherry block at 4 offsets and increments `CHERRYTOT`) +Apple placements | Repeating pairs: `Y, X` terminated by `0xFF` | `PUTAPPLES` (initializes apple records and draws apple blocks) +Food placement | 3 bytes: `Y, X, UNDERLAY_BLOCK_INDEX` | `PUTFOOD` (draws the food block, then patches the underlay in `BACKSCREEN`) + +This diagram shows the scene stream at a glance: +```mermaid +flowchart TB + H["Header: MRDO_Y, MRDO_X, TUNNEL_Y, TUNNEL_X (4 bytes)"] --> T["Tunnel strokes: (START_BLOCK, DIR, LEN) repeated"] + T --> TEND["0xFF terminator"] + TEND --> E["End cap: END_BLOCK (1 byte)"] + E --> C["Cherry placements: (Y, X) repeated"] + C --> CEND["0xFF terminator"] + CEND --> A["Apple placements: (Y, X) repeated"] + A --> AEND["0xFF terminator"] + AEND --> F["Food placement: (Y, X, UNDERLAY_BLOCK_INDEX) (3 bytes)"] +``` + +At the assembly level, the tunnel-stroke part of the stream is parsed by `DOTUNNEL` as a small self-recursing loop: +```nasm +DOTUNNEL LD A,(HLI) ;START BLOCK NUMBER + CP -1 + RET Z + ADD A,A + ADD A,A + LD C,A + LD A,1 + CALL DRAWBLOCK ;DRAW START BLOCK + + LD A,(HLI) ;DIRECTION 0TO4 + ADD A,A + LD B,A + ADD A,A + LD C,A ;C=BLOCK ADDR LOW + LD A,VECTAB2 +DRAWREP PUSH AF + LD L,B + LD A,(HLI) ;MOVE TO NEXT POS + ADD A,E + LD E,A + LD A,(HL) + ADD A,D + LD D,A + LD A,1 + CALL DRAWBLOCK ;DRAW REPEAT BLOCK + POP AF + DEC A + JR NZ,DRAWREP + POP HL + JR DOTUNNEL +``` + +The control-layer that makes this practical is `BYTESCREEN` (`$CC00`), which is defined as `$100` bytes. +That size is a strong hint that the gameplay logic is operating on a 16x16 grid of "macro cells" (each macro cell is a 2x2 set of 8x8 tiles, i.e. 16x16 pixels). + +`DRAWBLOCK` writes a macro-cell value into `BYTESCREEN`, and `DECODE` reads it (via `GETBYTEHI`) to choose what happens when Mr Do enters a cell. +The values map directly onto the `EATJP` jump table: + +Value | Meaning | `EATJP` target +---|---|--- +0 | Solid wall / gravel (not yet tunneled) | `EATWALL` (slows Mr Do down while chewing) +1 | Tunnel / already-open cell | `EATUNNEL` (no-op) +2 | Cherry | `EATCHERRY` (score + sequence bonus + decrements `CHERRYTOT`) +3 | Apple | `EATAPPLE` (no-op here, apples are handled via the apple state machine) +4 | Food | `EATFOOD` (score + palette/freeze + spawns ghosts/bonus monster behaviour) + +This is the core `BYTESCREEN` dispatch from `DECODE`, including the `EATJP` jump table: +```nasm +EATJP DEFW EATWALL ;00 + DEFW EATUNNEL ;01 + DEFW EATCHERRY ;02 + DEFW EATAPPLE ;03 + DEFW EATFOOD ;04 + + CALL GETBYTEHI + LD A,(HL) ;GET CONTROL BYTE + LD (HL),1 ;SET TUNNEL BYTE + ADD A,A + ADD A,EATJP + LD A,(HLI) + LD H,(HL) + LD L,A + CALL JPHL ;WORK EAT ROUTINE +``` + +The 2x2 meta-tile blocks themselves come from the `BLOCKS` table. +These are not "gameplay types", they are tilemap stamps (four bytes each) built from tile-id groups like `ED`, `CN`, `DT`, `CH`, `FD`, and `AP0`: + +Block index | Purpose (from comments) | Typical use +---|---|--- +`$00-$03` | Tunnel segments (U/R/D/L variants) | Repeated stamps for a tunnel stroke (`DOTUNNEL`) +`$04-$07` | Tunnel ends (U/R/D/L) | Start/end caps for strokes and final end cap (`DOTUNNEL` / `ENDTUNNEL`) +`$08-$0B` | Corners (TL/TR/BR/BL) | Corner shaping when building complex tunnels +`$0C-$0F` | Walls (top/right/bottom/left) | Wall shaping and underlays +`$10` | Cherry block | `PUTCHERRY` (placed as a 2x2 cluster of macro cells) +`$11` | Food block | `PUTFOOD` (drawn in VRAM) +`$12` | Apple block | `PUTAPPLES` +`$13` | Middle / filler | Used as a special-case stamp + +The tunnel stroke direction encoding is consistent across the code: +the direction byte is used to index `VECTAB2` (macro-cell steps of 2 tiles) and to select which tunnel segment block (`$00-$03`) to stamp repeatedly. +In practice this behaves like a 4-way direction enum (up/right/down/left). + +The food placement code is worth reading closely because it shows the kind of "tight" control-flow you get in commercial LR35902 assembly. +After drawing the food into VRAM using `DRAWBLOCK`, `PUTFOOD` computes the `BACKSCREEN` address for the same position and then jumps into the middle of `DRAWBLOCK` (`DRWBLOCK`) to stamp a 2x2 underlay block into the RAM mirror. +To make the stack clean up properly, it pushes `AF` three times so the `POP DE`, `POP BC`, and `POP HL` epilogue inside `DRAWBLOCK` has something to consume. +It is a tiny micro-optimization, but it is also a very "real world" example of trading readability for speed and code size. + +--- +## Tile ID taxonomy +This codebase relies heavily on treating a tile ID as a semantic category, not just a graphic. +Most comparisons are against the base constants that define the background tile groups: +Constant | Value | Used as +---|---|--- +`WL` | `$00` | "Wall/gravel" tile group used for initial fill and tunnel shaping +`CH` | `$10` | Cherry tile group +`ED` | `$14` | Tunnel edge tile group (used by chewing, apple deformation, and ball bounce tables) +`CN` | `$1C` | Corner tile group +`DT` | `$20` | Dots/walkable tile group (also used by passability tests) +`WT` | `$24` | A single special tile labelled "WHITE CHR!" +`FD` | `$25` | Food tile group (background) +`AP0` | `$5C` | Apple tile group (background) + +When you see code doing things like `CP DT+3` or `CP ED+7`, it is not doing collision against an object. +It is testing whether the background tile under an actor belongs to one of these groups. +You will also see a common trick in passability checks: it ORs the tile with `1` (`tile|1`) before comparing, which makes even/odd variants of an edge tile compare the same without a second branch. + +There are similar "semantic tile ID" patterns on the sprite side. +For example, the 2x2 sprite expansion uses `CHRTABLE` to translate an animation frame index into four tile IDs plus per-quadrant flags (flip, palette, etc.). + +--- +## Chew algorithm deep dive +The chewing system is split between "gameplay semantics" (what happens when you enter a macro cell) and "visual updates" (how tiles are rewritten). + +This diagram shows those two layers side-by-side: +```mermaid +flowchart LR + subgraph "Gameplay semantics" + DECODE["DECODE"] --> BYTES["Read BYTESCREEN macro-cell value"] + BYTES --> EATJP["EATJP jump table"] + EATJP --> EFFECTS["Score/timers/palette/freeze side effects"] + end + + subgraph "Visual updates" + CHEW["MRDOCHEW"] --> BACK["Rewrite BACKSCREEN (RAM mirror)"] + CHEW --> DUMPQ["Append dirty tiles to CHRDUMP (via DUMPTOT)"] + SPLIT["SPLITSCREEN (VBlank)"] --> FLUSH["CHRDUMPER flushes to DISPSCREEN (VRAM tilemap)"] + end + + BACK --> FLUSH + DUMPQ --> FLUSH +``` + +At the semantic level, `DECODE` reads a macro-cell value from `BYTESCREEN` and dispatches via `EATJP`: +* **0** - `EATWALL` slows movement (sets `SPEED` and `SPDCOW`) while you are chewing. +* **1** - `EATUNNEL` does nothing (already-open cell). +* **2** - `EATCHERRY` decrements `CHERRYTOT` and adds score, including a small sequence bonus controlled by `CHERRYBON`/`CHERRYDEL`. +* **3** - `EATAPPLE` is a no-op here (apples are driven by the apple state machine). +* **4** - `EATFOOD` adds score and triggers the "food mode" effects (palette change + `FREEZE` + extra/ghost behaviour). + +At the visual level, `MRDOCHEW` performs a 2x2 macro-cell rewrite into `BACKSCREEN`, and queues the corresponding `DISPSCREEN` updates for VBlank: +* **Grid gating** - It only chews when the mouth position is aligned to an 8-pixel boundary (`(x|y)&7 == 0` after a small offset). +* **Allocate dirty slots** - It uses `DUMPTOT` as an index into `CHRDUMP`, increments it by 4, and computes `HL` so there is room for four tile updates. +* **Resolve direction** - It dispatches through `CHEWJP` based on Mr Do's facing direction (`MRDOSP+FLG`). +* **Rewrite a 2x2** - Each `CHEW*` routine computes four replacement tiles using direction-specific tables (`UTL/UTR/UBL/UBR`, `LTL/LTR/LBL/LBR`, `DTL/DTR/DBL/DBR`, etc.), writes the new tiles into `BACKSCREEN`, and writes four `(addrLo, addrHi, tile)` triples into `CHRDUMP`. +* **VBlank flush** - `CHRDUMPER` runs during the next `SPLITSCREEN` and applies each queued tile to `DISPSCREEN`. + +The core reason this is robust is that `BACKSCREEN` is treated as the canonical map state. +VRAM only gets updated in bursts via `CHRDUMPER`, which keeps the chew logic simple and makes it easy to reproduce in a reimplementation. + +--- +## Apple state machine +Apples are driven by a compact state machine very similar to the enemy and ball systems. +Each apple is a fixed-size record in `APPLESP`, and `APPLEPIE` iterates `APNUM` entries and dispatches via `APPLETAB` based on `TYP`. + +The apple states are: +Value | Meaning | Update routine +---|---|--- +0 | Inactive slot | `NOAPPLE` +1 | Waiting / on the map | `APPLEWAIT` +2 | Wobble ("jig") before falling | `APPLEJIG` +3 | Falling | `APPLEFALL` +4 | Splitting / impact animation | `APPLESPLIT` + +`APPLEWAIT` does a very cheap support test by reading the two tiles under the apple (left and right) from the background mirror. +If either tile is less than `CH+4`, it treats that as "solid" and the apple does not fall. +If both tiles look passable, it increments `TYP` and starts a 60-frame wobble. + +`APPLEJIG` uses `SPEEDFLAG` bit 2 (`%100`) to toggle the tile index (`AP0` vs `AP0+4`), which gives you a free shake animation without moving the apple. + +`APPLEFALL` is the most interesting part because it is integrated with the dirty-tile system: +* **Rate control** - It uses `APPLEAND` masked with `SPEEDFLAG` to slow the fall rate (difficulty scaling). +* **Background restore** - It queues tile restores into `CHRDUMP` so the old apple stamp is erased in the next VBlank. +* **Wall deformation** - After a "critical point" (when the falling counter reaches 3), it starts modifying the edge tiles it passes through using `LAFALL` and `RAFALL`. + +`APPLESPLIT` enforces that only one apple can do the expensive 4-tile split write per frame using the `SPLAT` flag ("done once"). +That is a very pragmatic performance guard: without it, multiple apples impacting in the same frame would explode the dirty-tile list and VRAM work. + +--- +## Ball states and bounce tables +The ball is implemented as another actor type dispatched via `BADTAB`, with multiple states: +carried (`CARRYBALL`), thrown (`THROWBALL`), spinning out (`OUTBALL`), and returning (`INBALL`). + +When carried, the ball is positioned relative to Mr Do using the facing direction and a small offset table. +The key tables are: +Table | Role | Notes +---|---|--- +`BALLOFF` | Base XY offset from Mr Do | Indexed by direction +`BALLXY` | Extra 1-pixel offsets | Gives a 4-frame wobble animation +`BALLVEC` | Movement deltas | Maps direction to `(dx, dy)` at `BALLSPEED` + +When thrown, `THROWBALL` is deliberately grid-gated: +it only does a bounce decision when `(x+4)&7 == 0` or `(y+4)&7 == 0`. +On those alignments it reads the contacted tile ID from the background mirror: +* **Wall/cherry class** - If the tile is less than `CH+4`, it always flips direction (`dir ^= 2`). +* **Bounce lookup** - Otherwise it scans a per-direction list of bounce-trigger tiles (`BALLCPS`) and uses a parallel bounce table (`BALLBOU`) to pick the new direction. + One of the bounce entries has bit 7 set, enabling a small `RND3` perturbation that is explicitly commented as preventing the ball from getting trapped in repeatable ricochet loops. + +This is the bounce decision core inside `THROWBALL`: +```nasm + LD L,E + LD H,D + CALL GETMAPHI ;HL=SCRN3 ADDR + + LD A,(HL) ;GET CHR + CP CH+4 ;WALL OR CHERRY? + JR NC,NOCHWL + LD A,B ;THEN ALWAYS FLIP DIRECTION + XOR 2 + LD B,A + JR NOCHN + +NOCHWL PUSH DE + LD E,A + + LD A,B ;GET LAST DIRECTION + ADD A,A + LD L,A + ADD A,A + ADD A,L + ADD A,BALLCPS + + LD D,6 ;TOTAL NUMBER OF CHRS TO CHECK +BCHECK LD A,(HLI) ;HAVE WE HIT A VALID CHR? + CP E + JR NZ,NOBHIT + + LD A,BALLBOU-BALLCPS-1 + ADD A,L + LD L,A ;INDEX BOUNCE VECTORS + LD A,(HL) ;GET NEW BOUNCE DIRECTION + BIT 7,A ;BIT OF RND? + JR Z,NRNDB + + LD B,A + LD A,(RND3) ;STOPS BEING TRAPPED! + AND 2 + ADD A,128 + XOR B + +NRNDB LD B,A + POP DE +``` + +After a kill, the ball enters a circular spin-out phase (`OUTBALL`). +This uses the `CIRCLE` routine (lookup table + quadrant xor) and a small multiply trick (`MULTIE` / `MULTID`) to scale the circle output, then adds that to a stored centre position. +When the counter reaches a threshold it transitions into `INBALL` and eventually reattaches to Mr Do. + +--- +## Timing, VBlank, and the window split +Most of the rendering safety in this codebase comes from two tiny wait primitives: +Routine | Mechanism | Used for +---|---|--- +`WAITBLANK` | Sets `LYC=144` and busy-waits for `STAT` bit 2 (LYC=LY) | Entering VBlank before touching VRAM/tilemaps +`WAITSYNC` | Sets `LYC=A` and busy-waits for `STAT` bit 2 | Scheduling mid-frame changes (like the status/gameplay split) + +This is the full implementation of both waits in `mrdo.asm`: +```nasm +WAITBLANK LD A,144 +WAITSYNC LD (LYC),A +WAITSC LD A,(STAT) + BIT 2,A + JR Z,WAITSC + RET +``` + +This diagram shows the split-screen timing model across a frame: +```mermaid +flowchart TB + VBL["LY=144: WAITBLANK enters VBlank"] --> DMA0["DMA STATUSOBJ (write $FF46)"] + DMA0 --> WINON["LCDC=0xE3 (window on for status strip)"] + WINON --> VBWORK["VBlank work: PRSCORE + CHRDUMPER + PRAPPLES"] + VBWORK --> SYNC16["WAITSYNC to LY=16 (write $FF45=16)"] + SYNC16 --> DMA1["DMA GAMEOBJ (write $FF46)"] + DMA1 --> WINOFF["LCDC=0xC3 (window off for gameplay)"] + WINOFF --> RUN["Gameplay scanlines: LY 16..143"] + RUN --> NEXT["Next frame"] +``` + +`SPLITSCREEN` combines these waits with `LCDC` writes to effectively toggle the status window on and off within a single frame. +This is also where OAM DMA happens, so if you are debugging timing issues in an emulator, `WAITBLANK`, `WAITSYNC`, and writes to `LCDC`/`DMA` are the most information-dense breakpoints you can set. + +The split itself is implemented as a two-phase OAM DMA swap: +* **VBlank entry** - `WAITBLANK`, then OAM DMA `STATUSOBJ` so scanlines 0..15 use the status OAM list. +* **Status mode** - Enable the window with `LCDC=0xE3` and do VBlank work (`PRSCORE`, `CHRDUMPER`, `PRAPPLES`). +* **Boundary sync** - `WAITSYNC` to `LY==16` (a 16-pixel strip). +* **Gameplay swap** - OAM DMA `GAMEOBJ`, then disable the window with `LCDC=0xC3` for the rest of the frame. + +The DMA trigger itself is a tiny stub (`DMATRANS`) that `SYSETUP` copies into HRAM (`$FF80`) and calls via the `BLITS` label. +This is the classic safe-DMA pattern: during OAM DMA the CPU can still execute from HRAM even though most other memory access is blocked. + +This is the stub and the `SYSETUP` copy loop that installs it into `INTRAM` (`$FF80`): +```nasm +DMATRANS DI + LD (DMA),A + LD A,40 +DMAL DEC A + JR NZ,DMAL + EI + RET + + LD HL,DMATRANS ;SETUP DMA TRANS ROUTINE + LD DE,INTRAM + LD B,SYSETUP-DMATRANS +TOINTRAM LD A,(HLI) + LD (DE),A + INC E + DEC B + JR NZ,TOINTRAM +``` + +One caveat when rebuilding this release is that `SYSETUP` enables interrupts (`IE=1` then `EI`) but the file does not obviously define an interrupt handler ending in `RETI`. +If you try to assemble/port this code, verify what ends up at the interrupt vectors (especially `$0040`) before leaving IME enabled. + +--- +## SameBoy debugger walkthrough +If you want to verify the claims above, SameBoy's textual debugger is a good fit because it supports write watchpoints and conditional expressions [^5]. + +To use the textual debugger you generally: +* **Pause** - Press Control+C (or use the `interrupt` command). +* **Instrument** - Set breakpoints and watchpoints. +* **Run** - Use `continue` and let the emulator stop at interesting writes. + +### Suggested watchpoints +These watchpoints catch the most important hardware edges and RAM mirrors: +Target | Why it matters | SameBoy command +---|---|--- +`$FF46` | OAM DMA trigger (writes happen in `SPLITSCREEN`) | `watch/w $ff46` +`$FF40` | `LCDC` mode changes (window on/off and LCD state) | `watch/w $ff40` +`$FF45` | `LYC` scheduling for mid-frame timing (`WAITSYNC`) | `watch/w $ff45` +`$C800-$CBFF` | `BACKSCREEN` RAM mirror (canonical background state) | `watch/w $c800 to $cbff` +`$CC00-$CCFF` | `BYTESCREEN` macro-cell control map (0..4 for `EATJP`) | `watch/w $cc00 to $ccff` + +If the `BACKSCREEN` and `BYTESCREEN` ranges are too noisy, narrow them temporarily to what you are currently testing (or delete/re-add watchpoints as needed). + +### Lab 1 - Prove the window split +This lab is just enough to prove `SPLITSCREEN` is doing a mid-frame OAM DMA swap and toggling the window: +* **Instrument** - `watch/w $ff46` and `watch/w $ff40`. +* **Run** - `continue` and let SameBoy stop on `$ff46`. +* **Confirm the double-hit** - Continue a few times and you should see `$ff46` hit twice per frame (status OAM, then gameplay OAM). +* **Confirm the mode change** - When `$ff40` hits, check if the value matches the two modes described above (`0xE3` vs `0xC3`). + +### Lab 2 - Prove chewing is BYTESCREEN + BACKSCREEN + CHRDUMP +This lab connects "macro-cell semantics" to "tilemap updates": +* **Instrument** - `watch/w $cc00 to $ccff` and `watch/w $c800 to $cbff`. +* **Chew a wall** - Walk into an unchewed area and wait for a `$cc00-$ccff` write (macro-cell type changes). +* **Watch the mirror update** - Continue and you should see `$c800-$cbff` writes as edge tiles are rewritten in `BACKSCREEN`. +* **Watch the flush (optional)** - Temporarily add `watch/w $9800 to $9bff` and you should see the queued updates land in VRAM during the next `SPLITSCREEN`. + +### Debugging the window split and OAM DMA +To see the split-screen renderer in action, do this: +* **Start running** - Use `continue`. +* **Stop on OAM DMA** - The `$ff46` watchpoint should hit twice per frame (status DMA, then gameplay DMA). +* **Inspect state** - Use `lcd`, `dma`, and `registers`, then `disassemble/32 pc` to see the immediate code path. + +Useful debugger commands at those stops are: +```text +lcd +dma +registers +disassemble/32 pc +``` + +If you want to focus on the moment the window toggles, use a conditional watchpoint on `LCDC`: +```text +watch/w $ff40 if new != old +``` + +### Debugging tunnel chewing and dirty-tile flushes +To connect Mr Do chewing with background writes: +* **Stop on `BYTESCREEN` writes** - Move into a wall and watch for writes into `$cc00-$ccff` (macro-cell type changes). +* **Stop on `BACKSCREEN` writes** - Watch for tunnel edge tiles being rewritten in `$c800-$cbff`. +* **Observe the VBlank flush** - If you temporarily watch `DISPSCREEN` (`$9800-$9BFF`), you should see the queued updates being applied during the next `SPLITSCREEN` when `CHRDUMPER` runs. + +If you do want to watch the VRAM tilemap itself, limit it to short bursts because it is very high traffic: +```text +watch/w $9800 to $9bff # DISPSCREEN (VRAM tilemap) - expect lots of hits +``` + +### Debugging apples +Apple falling is a good demonstration of this engine's "update RAM mirror, flush in VBlank" strategy. +When an apple transitions from `APPLEWAIT` to `APPLEFALL` you should see: +* **`BACKSCREEN` writes** - The apple punches through tunnel edge tiles (via `LAFALL`/`RAFALL` after the critical point). +* **Dirty-tile flush** - The queued updates are applied in the next VBlank when `CHRDUMPER` runs. + +### Debugging ball bounces +Ball bounces are easiest to catch by letting the `$c800-$cbff` watchpoint stop you while the ball is in flight, then stepping until you hit a bounce decision and noting the current tile ID being compared against `BALLCPS`. + +In practice the bounce decision points are rare because `THROWBALL` only checks collisions on an 8-pixel grid alignment. +If you are not seeing interesting stops, throw the ball into a dense area of tunnel corners/walls and let it ricochet. + +--- +## Enemy AI is shared and table-driven +The baddie update loop (`BADDIES`) is structurally very similar to the apple loop: +* **Update dispatch** - `BADTAB` maps `TYP` to the update routine for dinos, ghosts, the bonus monster states, ball states, and score popups. +* **Junction decisions** - `FINDEXITS` scans the 2x2 neighbourhood around an actor on 8-pixel boundaries and returns an exit bitmask. +* **Direction selection** - `WORKEXITS` validates the current direction (via `VECTOBIT`) and then chooses a new one using a bounded retry loop against `BITAB`/`BITTOVEC`, stirred by `RND1`/`RND2`. + +This is a nice example of how multiple enemies can share navigation logic while still having distinct "animation and special case" behaviour per type. + +One detail that helps when tracing enemy movement is the exit bit layout. +`FINDEXITS` sets bits in the returned mask in a slightly non-obvious order: +bit 3 is up, bit 0 is right, bit 2 is down, and bit 1 is left. +That ordering matches the `VECTOBIT` and `BITTOVEC` tables used by `WORKEXITS`. + +The other critical detail is that passability is decided purely by tile IDs in `BACKSCREEN`. +`FINDEXITS` effectively whitelists a handful of `DT+*` and `ED+*` variants: +* **Up** - tile is `DT+1` or `DT+3` or `(tile|1) == ED+3` +* **Right** - `(tile|1) == DT+3` or `(tile|1) == ED+5` +* **Down** - tile is `DT+0` or `DT+2` or `(tile|1) == ED+7` +* **Left** - tile is `DT+1` or `(tile|1) == ED+1` + +This is the full `FINDEXITS` tile-whitelist routine, including the `%UDLR` bit layout: +```nasm +;DE=XY RETS A=%UDLR BITS +FINDEXITS PUSH DE + LD L,E + DEC L + LD H,D + DEC H + CALL GETMAPHI + LD DE,$0100 + + LD A,(HLI) ;TOP CHR... + CP DT+1 + JR Z,ISUP + CP DT+3 + JR Z,ISUP + OR D + CP ED+3 + JR NZ,NOUP +ISUP SET 3,E +NOUP LD A,(HL) ;R CHR... + OR D + CP DT+3 + JR Z,ISRT + CP ED+5 + JR NZ,NORT +ISRT SET 0,E +NORT LD A,L + ADD A,32 + LD L,A + ADC A,H + SUB L + LD H,A + LD A,(HLD) ;BOT CHR... + CP DT+0 + JR Z,ISDW + CP DT+2 + JR Z,ISDW + OR D + CP ED+7 + JR NZ,NODW +ISDW SET 2,E +NODW LD A,(HL) ;L CHR... + OR D + CP DT+1 + JR Z,ISLF + CP ED+1 + JR NZ,NOLF +ISLF SET 1,E +NOLF LD A,E + POP DE + RET +``` + +`WORKEXITS` then adds a few pragmatic behaviours: +* **Keep direction if possible** - If the current direction remains valid, it usually keeps going. +* **Forced randomness** - Even when a direction is valid, it forces a re-pick roughly 1/8 of the time (`RND2 & 7 == 0`). +* **Bounded search** - When it must pick a new direction, it tries up to 4 candidates. + +This is the core of `WORKEXITS`, showing how it keeps direction when possible and otherwise picks a new one using `BITAB` and `BITTOVEC`: +```nasm +WORKEXITS PUSH DE + LD D,L + LD E,A ;TEMP EXITS + + LD A,B ;GET OLD DIR + ADD A,VECTOBIT + LD A,(HL) + AND E ;IS DIR AN OPTION + JR Z,CHANGEDIR + + LD A,(RND2) ;RND MOVE + AND 7 + JR NZ,DINODE + +CHANGEDIR LD A,(RND1) + ADD A,D + SRL A + SRL A + SRL A +FINDEX LD D,A + AND 3 + ADD A,