Adversarial review: "Deep Research Report: It Took Every SNES Hardware Trick To Make My Game — Inkbox"
The source video is “It Took Every SNES Hardware Trick To Make My Game” by Inkbox (51:14 by yt-dlp). The reviewer read the full English caption track of the video. The document says that it could not get the captions. It builds its content from a web article and from hardware references instead. This review checks that reconstruction against the real captions.
The reviewer also fetched eight web pages to check high-stakes facts: the README and the file soundengine-spc700.s of the GitHub repository InkboxSoftware/SimpleSNESSoundEngine, the itch.io page of the game, the Hackaday article of 11 September 2026, the VETAU24H article, the techeblog article with the same title, and the SNESdev wiki pages Memory_map, Backgrounds and Mode_7.
The document holds 107 citeturn markers and 16 fileciteturn markers, with hidden control characters around them. These are artifacts of the tool that wrote the document. They are not citations. This review ignores them, except in finding m1.
Evidence tags
Section titled “Evidence tags”| Tag | Meaning |
|---|---|
| [DOC] | Provable from the document itself (internal contradiction, arithmetic, missing data) |
| [KNOW] | Reviewer knowledge of the field. High confidence, but not yet checked against a primary source |
| [VERIFY] | A plausible problem. Pass 2 must confirm it against the cited or primary source |
| [VIDEO] | Checked against the transcript of the source video, with a timestamp |
1. Goals and objectives
Section titled “1. Goals and objectives”- Identify the video and its metadata (title, channel, date, duration, linked game and code).
- Give a segment map of the video with timestamps and a summary of each segment.
- Explain the main concepts of the video and how they connect.
- Cross-check the hardware claims against references and name the claims that stay unverified.
- Be honest about what the research could not reach.
2. Verdict (pass 1)
Section titled “2. Verdict (pass 1)”| Objective | Met? | Why |
|---|---|---|
| 1. Metadata | Mostly | Title, channel, video ID, game page, ROM size, emulators, price and the sound-engine repository are correct. The duration is 51:14, not 51:15 (m2). The publication date of the game is not confirmed (m3). |
| 2. Segment map | No | Four of the seven segments are at the wrong time. The audio section starts at 08:40, not 36:15. The document also omits the object engine (19:34 to 24:26), which fills almost five minutes (C1, C2). |
| 3. Concepts | Partly | The dependency chain (limits, compact data, hardware transfers, selective work) is a fair reading. But the document puts parallax in the game world, misses the sprite-per-line lesson, and misses the memory-bank lesson (M2, M3, M4). |
| 4. Cross-check | Partly | The hardware rows are correct. But the two “most significant corrections” correct a Hackaday sentence, not the video. The video never says “3.58 MHz 6502” or “4 MB limit” (C3). Three “unverified” items are in the captions (M1). |
| 5. Honesty | Yes | The document says what it could not get. It invents no quotation. It marks every timestamp as an estimate. This is the strongest point of the document. |
Overall confidence in the document: Medium for the hardware facts. Low for the segment map and for the game-specific content. The document is honest, but a reader who trusts its timeline will look for the audio section in the wrong half of the video.
3. Findings
Section titled “3. Findings”Critical
Section titled “Critical”| # | Location | Claim | Problem | Tag |
|---|---|---|---|---|
| C1 | L59-81, L222, L247 | Segment 6, audio, runs from about 36:15 to 45:10. Segment 2, CPU and memory, runs from 04:20 to 10:45. Segment 3, graphics, runs from 10:45 to 19:10 | The captions show a different order. The audio section starts at 08:40 (“time to tackle SNES audio processing”) and ends at 19:30. The tile engine and scrolling start at 04:10. The memory-bank discussion is at 20:35 to 22:00. The HDMA parallax is at 35:11. The color math is at 36:52, where the document puts audio. The mermaid timeline repeats the same wrong order. The document marks the times as estimates, but the estimates miss by up to 28 minutes. | [VIDEO] |
| C2 | L59-67, L83-271 | Seven segments cover the whole video | The map has no segment for the object engine: 32-byte objects, the data bank register, the low-RAM mirror, OAM copying and the ninth X bit (19:34 to 24:26). It has no entry for the HUD counters (31:24), the inventory (33:26), the title screen (34:08), color math (36:52), hit stop (40:37), windows and the stair transition (43:19), or the sponsor segment (07:58 to 08:40). The segment “Runtime optimisation” (L65) is one label for eight different topics. | [VIDEO], [DOC] |
| C3 | L121-125, L300, L302, L317-321 | The “two most significant corrections”: the “3.58 MHz 6502” of the video and “4 MB cartridge limit” need qualification | The video makes neither claim. It never says “3.58 MHz”. It says “6502” only about the SPC700, which was “heavily inspired by the 6502” (11:47). It says “an NES cartridges 4 megabyte ROM chip” (03:08) and “My 4 megabyte cartridge ROM” (20:58). Both describe his own cartridge, not a hardware limit. The Hackaday article says “3.58 MHz Ricoh 6502-based CPU” (fetched). So the document corrects Hackaday and presents the result as a correction of the video. The ExHiROM fact itself is correct (SNESdev Memory_map, fetched). | [VIDEO], [VERIFY] |
| # | Location | Claim | Problem | Tag |
|---|---|---|---|---|
| M1 | L64, L190, L313, L323-325 | “192×168 tiles” and “~63 kB” are “provisionally reported” and “unverified game-specific detail” | The video states these numbers itself: “a 192x 168 tile world”, “a 12x12 grid” of screens, “3072x 2688 pixel image”, and “fills up 63K of RAM” (06:53). The primary source confirms the secondary source. The row at L313 and the list at L325 are now out of date. | [VIDEO] |
| M2 | L131-133, L139, L147-165 | The game world uses HDMA parallax for depth. The diagram puts “Distant mountain background” under the “Walkable tiled world” | In the video, the parallax is on the title screen: mountains on layer 3, clouds on layer 2, with HDMA on the layer 2 horizontal scroll register (34:28 to 36:11). The inventory uses a second HDMA table with two entries (36:31). In the game world, layer 3 is “all black tiles” for the color math darkening (37:13). The diagram describes the title screen, not the game. | [VIDEO] |
| M3 | L195-218, L284 | The lesson of the sprite segment is “culling”: restrict work to on-screen entities | The lesson of the video is different. The PPU counts transparent sprites toward the limit of 32 sprites per line (28:34). The fix moves tile-zero sprites to an off-screen Y (28:55). Then the “34 sliver per line rule” cuts 24 objects to 17 (29:38 to 29:59). He chose not to use the OAM rotation registers (30:21). The document names none of these. Its on-screen check exists in the video (22:19), but as a render step, not as a collision step. | [VIDEO] |
| M4 | L105-126, L280 | Segment 2 teaches “LoROM/HiROM cartridge mapping” and “what address ranges are fast” | The video names neither LoROM nor HiROM, and it does not discuss fast or slow ROM. Its memory lesson is the data bank register: ROM from bank $C0, code in the second half of each bank, so the mirror reaches the hardware registers and “the first 8K of low RAM” (20:35 to 21:59). It moved the objects from bank $7F to the first RAM bank to avoid bank switches. The document misses this lesson, which is the closest SNES parallel to the 8086 segment registers. | [VIDEO] |
| M5 | L221-247 | The audio segment is “one of the strongest parts of the reconstruction” | The hardware facts are correct. But the document had the source file, and it still reports almost none of the engine content of the video. The video names SPCASM (14:29), BRRtools (11:05), the 128 Hz timer (14:29) and the sample directory of four bytes per entry (14:50). It explains the IPL handshake with $AA and $BB on ports 0 and 1 (12:48 to 13:48) and the eight separate port registers (12:28). It gives the SPC700 at 1.024 MHz with 256 valid opcodes (11:47 to 12:07). It shows the resample trick: sample at 16 kHz and set the pitch from $1000 to $0800 (16:35 to 17:15). The fetched source file sets T0DIV to 128 Hz and DIRTABLE at $0900. The document could report these. |
[VIDEO], [VERIFY] |
| M6 | L253-268, L67 | Segment 7 holds “sound-engine publication” and “emulator testing and real-hardware orientation” | The open-source promise is at 19:07, inside the audio section, not at the end. The video does not discuss emulator testing. The end of the video shows the transparent cartridges (45:36), the solder paste (46:18), a members video (46:55), credits with music (47:35 to 50:10), the free release (50:31), a “maybe” physical release with a poll (50:31), and no Mode 7 or extra chips (50:53). | [VIDEO] |
| M7 | L266, L315, L347 | Credits: “Hornests for background graphics” and “Mouse Bite Labs” are “secondary-source attribution only” | Mouse Bite Labs is in the captions: thanks “for making these SNES cartridge designs open source” (45:58). The music is by “my friend Dr. Matt” (19:07, 44:42). The document never names Dr. Matt. Hornests is not in the captions. The credit roll (47:35 to 50:10) has no captions, so Hornests stays open. | [VIDEO], [VERIFY] |
| M8 | L53, L347 | VETAU24H holds “the most detailed text synopsis found” and is a “derivative” source | The VETAU24H page is a copy of the techeblog article “Zero Star Climbs Out of Two Years of Pure SNES Assembly” by Bill Smith, 11 September 2026 (both fetched). The image links of the copy point to images.techeblog.com. The document cites the copy and not the origin. Document 14 cites the techeblog page. The copy shows a date of 5 October 2026, which may be a page-view date. | [VERIFY], [DOC] |
| M9 | L85-102 | Segment 1 shows “the finished dungeon crawler” and 〇 Star “as the culmination” | The video opens with a recap of “Chapter 25” (00:26) and a game-design change: condense punch and kick on A, sword on B, fix the attack blind spot and the animation timing (01:47 to 02:48). Then the “read only” ROM leads to the idea of a world generated in RAM (03:08 to 03:28). The game is not finished in the video. At 46:55 he says that he still has to “finish everything up”. | [VIDEO] |
| M10 | L172-192 | The generator “stamps random chambers and connects them with one-tile corridors” | The video says that tunnels are “the same thing as rooms, just with either a small width or height” (25:50). The document misses the algorithm: reject binary space partitioning (24:47), call the random routine until the room fits the limits (25:08), and the bug where two rooms are each other’s closest neighbor, fixed by a tunnel to the closest connected room (26:12). | [VIDEO] |
| M11 | L167, L141 | Packed BCD counters are a “reported implementation detail rather than independently audited code” | The video gives the detail: the decimal flag does the carry (32:05), a 16-bit packed BCD counter holds “exactly the 10,000 I need”, INC and DEC ignore the flag, so he uses ADC (32:05 to 32:26), and he suppresses leading zeros, except for the chicken counter (32:46 to 33:06). The claim is now checkable and correct. | [VIDEO] |
| # | Location | Claim | Problem | Tag |
|---|---|---|---|---|
| m1 | L5-349 | 107 citeturn and 16 fileciteturn markers |
These are generation artifacts with hidden control characters. 94 lines of the document carry them. They are not citations. A reader cannot follow them. | [DOC] |
| m2 | L23, L29, L57, L270 | Working duration 51:15, with one snapshot at 51:55 | yt-dlp reports 51:14. The last caption block starts at 50:53. The 51:55 value is wrong. The difference of one second has no effect on the review. | [VERIFY] |
| m3 | L22, L331 | The game “was published on 5 September 2026” | The fetched itch.io page shows version 1.01 and “updated 12 days ago”. It does not show the date 5 September. Pass 2 must check the page metadata. | [VERIFY] |
| m4 | L339 | “SNESdev Backgrounds documentation” links to snes.nesdev.org/wiki/Mode_7 |
The link label and the URL do not match. The fetched Mode_7 URL serves the page of all eight modes, so the content is correct. | [DOC], [VERIFY] |
| m5 | L241, L294, L333 | fileciteturn7file0L2-L2 supports the voices 0 to 4 and 5 to 7 split |
The marker points to one line of the source file. One line cannot hold eight voice constants and eight pointers. The claim itself is correct: the fetched file has SONGPOINTER0 to SONGPOINTER4 and EFFECTPOINTER5 to EFFECTPOINTER7. The video says the same at 18:18. |
[DOC], [VIDEO] |
| m6 | L245 | The engine does “music-versus-effects arbitration” | There is no arbitration. Five voices play music and three wait for the CPU to name a voice and an effect (18:18 to 18:38). Object sounds use one dedicated voice, so they do not interrupt the player sounds or the music (39:35). | [VIDEO] |
| m7 | L266 | “translucent shells” come from secondary reporting | The video says it: transparent resin shells from PCBWay, the sponsor of the video (07:58). The document never names the sponsor. | [VIDEO] |
| m8 | L7, L121 | “3.58 MHz is not a constant effective CPU rate” | Correct. The 5A22 bus runs at 3.58 MHz for fast ROM and RAM, 2.68 MHz for slow ROM, and 1.79 MHz for some I/O. The video does not discuss this. | [KNOW] |
| m9 | L112, L301 | 128 KiB of WRAM in banks $7E to $7F | Correct, and the video confirms it: “128K of CPU RAM”, world in “bank 2” (06:31), objects planned for $7F0000 (21:18). | [VIDEO] |
| m10 | L224-226, L306-308 | S-SMP, S-DSP, 64 KiB audio RAM, eight voices, BRR of nine bytes for 16 samples | Correct, and the video confirms it: 64K APU RAM (09:01), eight voices (10:02), “9 byt sample blocks” with a control byte and 16 nibbles (10:45 to 11:05). | [VIDEO] |
| m11 | L208, L214 | Visual feedback uses “hardware effects rather than expensive bespoke animation” | Half true. The hit stop darkens the background with color math (40:37). But the dust cloud is an object with its own animation (40:58), and talisman clouds use four palette colors (42:39). | [VIDEO] |
| m12 | L5, L21, L24 | The game is “〇 Star” | The itch.io page uses the symbol. The captions say “Zero Star” (00:46). Both names are in use. The document could say so once. | [VIDEO] |
4. Source-quality audit
Section titled “4. Source-quality audit”- The document lists 12 web pages. Nine are references for the SNES hardware or the 65C816, and these citations hold up (SNESdev Memory_map and Backgrounds, fetched).
- The GitHub repository exists. The README says that the code is a snapshot of the engine in 〇 Star, and names SPCASM (fetched). The source file confirms the voice split, the 128 Hz timer and the sample directory (fetched).
- The itch.io page confirms the ROM size of 129 kB, version 1.01, “name your own price” and the emulators Mesen and bsnes (fetched).
- All game-specific content comes from one source: the VETAU24H copy of the techeblog article (M8). The document says this. But one secondary source cannot replace a 51-minute video. The video holds about 20 topics. The document finds seven.
- The
citeturnmarkers replace real citations. A reader cannot tell which sentence rests on which page without the list in section 11 of the document (m1).
5. Omissions a skeptic would raise
Section titled “5. Omissions a skeptic would raise”- The object engine. Almost five minutes (19:34 to 24:26) on 32-byte objects, the data bank register, the low-RAM mirror and the ninth X bit of OAM. Not in the document.
- The tile streaming. A 128 by 112 pixel box around the player, one new row or column of tiles into VRAM, and the wrap rule at the edge of the tilemap (04:50 to 05:30). Not in the document.
- The collision lookup. From the X and Y position, with scroll, compute the tile under the player (05:50). The video says that this is faster than a list of walls (06:11). Not in the document.
- The sprite limits. 128 sprites, 32 per line, 34 slivers per line, and transparent sprites that still count (27:54 to 30:21). The document says only “sprite/object limits”.
- Color math, windows and HDMA details. Add, subtract, half-add (37:13), sprites with palettes 0 to 3 stay unaffected (37:34), sprite 0 always wins (38:14), two windows and the stair transition with 14 sections of 16 lines (43:19 to 44:22). Not in the document.
- The audio protocol. The IPL handshake, the port rules and the resample trick (12:28 to 17:15). The document gives only the hardware summary.
- The game-design opening. Fewer, better actions make a game fun (01:06 to 02:48). The document starts its story with “constraint-driven design”, which the video never names.
- The end state. The game is free online, physical release is a “maybe” with a poll, no Mode 7 or extra chips, and PC Engine next (50:10 to 50:53).
6. Use for the learning journey
Section titled “6. Use for the learning journey”This project learns 8086 Assembly on DOS (A side, VGA Mode 13h, a lander game) and modern Fortran (B side, the laboratory). The SNES uses a different processor family. The document is a map of a different country. Use it only for the lessons that cross over.
- A side: memory banks are segment:offset. The SNES data bank register picks a 64 KiB bank, and code lives where the mirror reaches both ROM and low RAM (20:35 to 21:59). The 8086 does the same with
DS,ESandCS. Keep this analogy. The document misses it (M4). - A side: look up, do not search. The SNES game finds the tile under the player by address arithmetic (05:50). The lander does the same with
pixel_atingame/src/common.inc:DI = y * 320 + x. A table lookup is faster than a loop over a list. The document misses this (omission 3). - A side and B side: decimal counters. The 65C816 decimal flag with ADC, where INC ignores the flag (32:05 to 32:26). The 8086 has
DAAandDASafterADDandSUB, andINCdoes not touch the carry flag. The B side can check a BCD counter routine for all 10,000 values, ascheck_y.f90checks 256 of 256 values. The document reports BCD only as hearsay (M11). - B side makes tables, A side plays them. The HDMA table holds pairs of line count and value (35:51). The coin float uses a sine lookup table (27:33). This is decision D19: Fortran makes
sine.bin, Assembly reads it. VGA has no HDMA. The 8086 must wait on port 3DAh (wait_vsync) and change registers itself, or not at all. - B side as a checker for a generator. The maze bug of the video (26:12) is a connectivity bug. A Fortran flood fill can test the maze of an Assembly generator with the same seed. A wrong generator must fail, as test 2b and test 3b fail on purpose.
- Hardware counts work you cannot see. Transparent sprites still count per line (28:34). On VGA, a pixel write to the wrong page or a missed retrace also costs a frame. Keep this as a lesson for the “hardware” segment.
- Ignore the segment map, the “two corrections” and the “culling” lesson of the document. Do not use the document as a timeline of the video (C1, C3, M3).
7. Pass-2 verification list
Section titled “7. Pass-2 verification list”- Watch the credit roll (47:35 to 50:10) for the Hornests credit (M7).
- Check the itch.io page metadata for the publication date of 5 September 2026 (m3).
- Confirm the techeblog origin and date of the VETAU24H copy (M8).
- Confirm the yt-dlp duration 51:14 against the YouTube player (m2).
- Check the SNESdev DMA page for the HDMA table format: the video says three bytes per entry for a two-byte write (35:51).
- Read the full
soundengine-spc700.sfor the CPU port protocol and compare with the video description at 18:38 (M5).