Work RAM Banking and Procedural Playfield Synthesis
Source video: It Took Every SNES Hardware Trick To Make My Game (Inkbox, 51:14) · at 21:18. The video moves the objects out of bank $7F into the first bank to avoid bank register swaps. Tunnels are thin rooms (25:50), not single tiles.
Parent section: Systematic Decomposition of Core Architectural Concepts
The 65c816 CPU addresses a 24-bit physical memory space organized into 64-kilobyte banks1. The system Work RAM provides 128 kB spanning Banks $7E and $7F1. In developing a sprawling dungeon crawler, allocating level geometry presents a fundamental architecture challenge1. If dynamic room generation is forced to share memory with dynamic arrays, call stacks, and zero-page pointers, large levels risk memory corruption or heap fragmentation1.
Inkbox resolves this problem by isolating memory workloads between the two banks1. Bank $7E handles general engine operations, stack pointers, gamepad input buffers, and active entity descriptors1. Bank $7F is reserved as a dedicated 63 kB tile buffer that represents the active floor across a 192×168 tile grid1. The procedural generation algorithm operates within this clean memory partition, using room stamping combined with single-tile tunnel carving1. Because paths between room origins are generated using deterministic Manhattan vectors, the generator avoids loops and disconnected zones1. This design ensures reliable level generation that can scale up to 9,999 procedurally assembled floors1.
Review findings for this part
Section titled “Review findings for this part”The findings come from ../../findings/ (pass 1). The script matches them to this part by source line.
| ID | Severity | Evidence | Status | Location | Problem |
|---|---|---|---|---|---|
| D14-C6 | critical | DOC VERIFY | verify | L5-203 (all citations) | Claim: Each sentence cites “1”, and the text names the video as the subject. Problem: Source 1 is the techeblog news article, not the video. The video is source 3, and the text cites it only three times together with 1 (L62, L63, L184). The reviewer fetched source 1. It is a short summary that mentions HDMA, mode 1, 128 sprites and five plus three voices. It says nothing about spatial hashing, color math, priority cycling, emulator divergence or compilers. So most citations point to a source that does not hold the claim. A “video breakdown” that cites a news article for the video is not a breakdown of the video. |
| D14-M1 | major | VIDEO VERIFY | verify | L5, L19, L23, L100, L105, L194 | Claim: “Two-year bare-metal development”, “9,999 distinct dungeon levels”, “the 9,999 chicken kill requirement”. Problem: The video never gives a development time. Source 1 (techeblog) gives “two years” without a source. The video gives the goal as level 10,000 or 10,000 slain chickens (03:50). At 32:05 Inkbox says that the 16-bit packed BCD counter “fits exactly the 10,000 I need”. An itch.io comment says 9999 (checked by WebFetch), so the number needs a check against the game. The document must not present it as a fact from the video. |
| D14-M2 | major | VIDEO | open | L19, L56, L99-100, L177 | Claim: Bank $7F holds the world and bank $7E holds the stack and entity arrays, which “prevents stack overflows” and “heap fragmentation”. Tunnels are “single-tile pathways” from “deterministic Manhattan vectors” that “avoid loops”. Problem: The video says that the world fills 63 K of the second RAM bank (06:31 to 06:53). The objects were first planned for $7F0000, but Inkbox moved them to the first bank to avoid data bank register swaps (21:18 to 21:59). There is no heap, so there is no fragmentation. Rooms come from the random number routine with rejection (25:08). Tunnels are rooms “with either a small width or height” (25:50), not single tiles. The first method made islands (26:12). The fix tunnels to the closest connected room. Inkbox calls it “not perfect” and says that it can give very long tunnels (26:32). Nothing is deterministic. |
| D14-m5 | minor | KNOW | open | L99 | Claim: “zero-page pointers”. Problem: The 65c816 has a direct page, not a zero page. The video does not use either term. |
Review worksheet
Section titled “Review worksheet”1. Goal of this part
Section titled “1. Goal of this part”What does this part try to show, or help the reader decide?
2. Key claims to test
Section titled “2. Key claims to test”| # | Claim | Evidence given (citation / data) | Verifiable? |
|---|---|---|---|
| 1 |
3. Adversarial review
Section titled “3. Adversarial review”- Strongest counter-argument:
- Unsupported, overstated, or outdated claims:
- Source quality (primary vs. blog/forum/marketing):
- Omissions / what a skeptic would ask:
- Internal consistency with other segments:
4. Evaluation
Section titled “4. Evaluation”- Does the segment achieve its goal? (Yes / Partly / No)
- Confidence: (High / Medium / Low)
- Required fixes: