11 · Cost

What it cost to build

This page prices the first phase only (2026-08-11 to 09-03, the sprint that reached v0.9.0 on the New 3DS). A second phase ran 2026-09-07 to 10-19 and added Old 3DS support, a native renderer and the Expansion Kit; it is not priced below. See "What the second phase would add" at the end of this page for why, and for the one honest number we do have for it.

Every API call the first phase made is in the session transcripts this page counts. Token counts are exact. Dollar figures apply Anthropic's published API list prices to those counts; cache writes are billed at the 1-hour rate, the cache TTL Claude Code used in these sessions.

3.17 B
tokens processed, all sessions, agents and workflows
13.2 M
output tokens written by the models
22,480
API calls (assistant turns) after de-duplication
$4,974
at published API list prices, 1-hour cache writes (the TTL these sessions used)
147
background subagents launched by the Agent tool
1,103
agents inside 10 deep-research workflow runs
223
human prompts, 19.8 K characters typed in total

Prices used

Published Claude API list prices (platform.claude.com, pricing page, fetched 2026-09-03), in dollars per million tokens. Cache writes are billed at the 1-hour rate (2× input), the cache TTL Claude Code used in these sessions; billed at the 5-minute rate (1.25× input) instead, the total would be $4,280. Cache reads are 0.1× input on every model except Fable 5.1, where they are 0.025×.

ModelInputOutputCache write (1 h)Cache read
Claude Fable 5.1$10$50$20$0.25
Claude Fable 5$10$50$20$1.00
Claude Opus 5 / Opus 4.8$5$25$10$0.50
Claude Haiku 4.5$1$5$2$0.10
The user's Claude subscription is not billed per token; these figures are what the same usage would have cost on the API. Synthetic records (API errors, interrupts) carry zero usage. Web searches ($10 per 1,000 on the API) are not included; there were 900 of them, about $9.

Where the tokens went

cache readcache writeoutputinput, uncached
0.000.611.231.842.46Orchestrator|(main session) · cache read: 0.84Orchestrator|(main session) · cache write: 0.02Orchestrator|(main session) · output: 0.00Orchestrator|(main session) · input (uncached): 0.000.86Orchestrator(main session)Subagents|(Agent tool) · cache read: 2.12Subagents|(Agent tool) · cache write: 0.06Subagents|(Agent tool) · output: 0.01Subagents|(Agent tool) · input (uncached): 0.002.19Subagents(Agent tool)Workflow agents|(deep-research) · cache read: 0.10Workflow agents|(deep-research) · cache write: 0.02Workflow agents|(deep-research) · output: 0.00Workflow agents|(deep-research) · input (uncached): 0.000.12Workflow agents(deep-research)billions of tokens
Cache reads dominate volume, output dominates cost. Of 3.17 billion tokens, 96% were prompt-cache reads, re-read at a tenth (Fable 5.1: a fortieth) of the input price. The 13.2 million output tokens, the text and code actually written, are the largest line on the bill.
ScopeInputOutputCache writeCache readAPI callsCost
Orchestrator session314,3311,723,24317,983,364837,567,8291,870$930
Subagents1,190,7148,342,09564,046,0192,121,074,32113,924$3,489
Workflow agents2,625,3153,172,17817,487,79696,006,8686,686$556
Total4,130,36013,237,51699,517,1793,054,649,01822,480$4,974

By model

Three generations of model did the work. Fable 5 carried the first three weeks; Opus 4.8 carried the week the Fable credits were out (08-15 to 08-20, when the fog fix landed); Fable 5.1 carried the final week and the multi-core push.

ModelAPI callsOutput tokensCache-read tokensCost
claude-fable-515,1909,293,4002,151,927,954$3,647
claude-fable-5-12,9221,855,334498,112,871$936
claude-opus-4-84,1352,041,244398,920,926$385
claude-opus-5303,7821,756,856$5
claude-haiku-4-5-202510019143,7563,930,411$1

Spend by day

$0$314$627$941$1,2552026-08-11: $9408-112026-08-12: $608-122026-08-13: $39008-132026-08-14: $1,09108-14first race2026-08-15: $4108-152026-08-20: $26408-202026-08-21: $98908-21hardware + audio2026-08-22: $9008-222026-08-23: $008-232026-08-27: $76608-27fleet drop2026-08-28: $30008-282026-08-31: $008-312026-09-01: $15909-012026-09-02: $49609-02LOCKED-602026-09-03: $28809-03USD per day
Four days account for most of the spend. 08-14 (the boot-to-race sprint and the first fleet of eight), 08-21 (the loadblock breakthrough, first hardware run, the audio afternoon), 08-27 (the five-agent fleet drop) and 09-02 (the LOCKED-60 campaign). Every gap is a credit pause.
DayAPI callsHuman promptsSubagents startedWorkflow agentsOutput tokensCost
2026-08-1179463103489,513$94
2026-08-1220003,239$6
2026-08-131,471211601,130,543$390
2026-08-145,14438182052,249,336$1,091
2026-08-1560730103211,736$41
2026-08-202,741153301,444,641$264
2026-08-214,72446302983,302,928$989
2026-08-22334420173,665$90
2026-08-2332002,497$0
2026-08-272,83420111951,797,508$766
2026-08-288371150535,073$300
2026-08-312300228$0
2026-09-017966499432,375$159
2026-09-021,4652412100948,007$496
2026-09-0372624130516,227$288

Subagents

147 background agents were launched with the Agent tool (130 by the orchestrator, 17 by other agents), and 10 deep-research workflows spawned 1,103 short-lived search, fetch and verification agents. The table below is the twenty most expensive background agents; between them they are most of the subagent bill.

StartedAgentModelTurnsOutputCost
2026-08-14 05:09G: GPU profiling telemetryfable-5933115,761$210
2026-08-14 05:09S: stereo foundationfable-5928123,186$209
2026-08-28 04:28GPU vertex transform moonshotfable-5450192,565$156
2026-09-01 21:33Bridge translation cache leverfable-5-1149148,482$133
2026-08-27 19:31Time-trial init hangfable-5279153,831$132
2026-09-02 14:51Task A: texrect batching leverfable-5-174133,374$91
2026-08-27 16:02Race-exit transition glitch+slowfable-5253202,286$90
2026-08-27 18:07Bottom-screen touch menu v1fable-5208192,907$80
2026-09-02 22:24Task H: render thread on core 2fable-5-111567,509$79
2026-08-13 04:45M1 core: decomp compile + linkfable-5198157,303$76
2026-08-27 19:22Crowd grind round 2fable-5217120,622$75
2026-08-27 16:01Fix filelog OOM + leak auditfable-5264145,180$74
2026-08-27 06:21Traffic-tail grind: bridge + pipesyncfable-5200154,508$72
2026-08-21 16:56Why audio synthesis outputs zerosfable-5228142,891$68
2026-08-13 12:56M1 present: pixels to screenfable-5212131,839$67
2026-08-14 04:49C2: invisible track cull bugfable-5239122,167$67
2026-08-20 07:06Night emulator verify + sky fixopus-4-8491188,504$62
2026-08-14 12:20C3: salvage + finish track cullfable-5214154,302$60
2026-08-14 01:13V: race visual fixesfable-5139146,195$59
2026-08-14 02:57T: texture upload cachefable-5218113,078$57

The two 900-turn agents of 08-14 (GPU profiling telemetry and the stereo foundation) were left running through the first credit pause and each re-read a very large context hundreds of times. They are the clearest cost lesson of the project: a long-lived agent with a big context is expensive per turn, and an agent that has finished its brief should be stopped.

Tool calls

BashBash: 15,11115,111ReadRead: 2,1922,192WebFetchWebFetch: 1,9091,909EditEdit: 1,2821,282ToolSearchToolSearch: 1,0691,069StructuredOutputStructuredOutput: 1,0391,039WebSearchWebSearch: 900900WriteWrite: 203203AgentAgent: 147147MonitorMonitor: 118118TaskUpdateTaskUpdate: 101101TaskStopTaskStop: 5959
15,111 shell commands. The project was driven through Bash: builds, patches, emulator runs, log analysis, SD-card copies. 1,282 Edits and 203 Writes touched 469 distinct files. 334 shell commands contained git commit. 1,909 web fetches and 900 web searches belong almost entirely to the deep-research workflows.

Reconciling with what /usage and /stats show

The user's impression was that the project cost more than this page says. Three things explain the gap, and one real omission was checked and found small.

CheckFinding
Claude Code's own stats file counts every streamed record.Each assistant message is written to the transcript once per content block (2 to 5 records with the same message id). Claude Code's own local usage-stats cache sums them all: its 08-13 Fable figure, 1,730,401, equals this census's un-deduplicated input+output sum for that day exactly. Priced that way the project reads as 5.94 B tokens and $7,961. The API bills per request, so the deduplicated 3.17 B tokens and $4,974 is the honest figure.
/usage shows plan utilisation, not dollars.The Fable weekly allowance was exhausted three times (08-14, 08-22, 08-28). Reaching a cap says nothing about the dollar value of the tokens under it.
Other projects shared the same allowance.Between 08-15 and 08-28 the same account ran Opus sessions on five other projects (a Unity game, an image folder, three code repos: 447 prompts in the history file). Their usage sits in the same /usage bars and the same stats file, and none of it is in this census.
Missing transcripts.The prompt history lists nine G-Diffuser sessions; four are on disk. The five absent ones are each a single /resume that went nowhere.
Calls the transcript does not log.Four context compactions (contexts of 0.5–1.0 M tokens each, about $4 in total at Fable rates), session-title and tool-summary side calls on Haiku (cents), and 900 web searches, almost all inside the research workflows (about $9 at API rates). Retries after 529 overloads are not billed.

What a human team would have cost

A rough comparison, not a quote. The scope a team would face is the scope this project faced: a new fixed-function GPU backend, a 32-bit sweep across three codebases, a ROM-side audio driver port, an ARM11 performance grind to native 60 on a software display-list interpreter, stereo, a multi-core render pipeline, lifecycle, menus and packaging. About 25,000 lines of low-level code (port plus patches — 25,009 lines exactly, the same figure the “Cost per outcome” table below uses) plus the research and the hardware loop.

Estimate to reach this state

TeamCalendarEffortCost at US rates
Two senior engineers (graphics/runtime, systems/audio/perf) plus part-time QA on hardware5–8 months12–18 person-months$250k–$450k
One very senior generalist, full time9–14 months9–14 person-months$180k–$300k
One skilled hobbyist, evenings and weekends12–24 months1,000–1,500 hours$0 paid, a year of unpaid labour

Basis: $150–200 per hour contractor rates or $20–25k per month loaded per senior engineer; low-level port work lands at 100–200 shipped lines per engineer-day once debugging and hardware loops are counted, which puts 25,009 lines at roughly 125–250 engineer-days, about six to twelve person-months, before the performance grind. A human team would spend its time in the same places the agents did (the 32-bit address-space heuristics, the fog LUT, the HUD backstop, the audio driver, then months of profiler-driven grinding), would very likely have shipped 30 Hz plus interpolation first and deferred stereo, and might never have attempted the core-2 render thread.

For scale, not as a direct comparison: other N64-on-3DS and libultraship ports take hobbyists or small volunteer teams months to years to reach playable, per their own READMEs and press — see Pushing the boundaries for those projects with sources.

Side by side

The "human team" column below is the midpoint of the two-senior-engineers row above ($250k–$450k, 5–8 months): the closest match to this project's scope.

This projectHuman team, mid estimate
Calendar24 days, 15 activeabout 6 months
Cost$4,974 API-equivalentabout $350k
Human timeone person, about 15 days of direction and SD-card loops, no code writtena full-time team
Polish deliveredplayable, 60 fps median, stereo, lifecycle; known backlog (tunnel roof, boot-audio underrun, LOD thresholds)a QA pass and the backlog closed
Ratio: roughly 70× cheaper and 7–8× faster, with the caveats that a professional team ships more polish and that the hobbyist route is free if the year is not counted.

Cost per outcome

Some ways to read the bottom line, at published prices with 1-hour cache writes:

MeasureValue
Per human prompt$22
Per active day (15 days)$332
Per commit touching the 3DS port (250, frozen 2026-10-08, not re-verified against final history)$20
Per line of port code, patches included (25,009 lines)$0.20
Per fps of median gained on hardware (from ~12–20 in the first emulator race to 59.6)$114
For scale: a single experienced console-port engineer at a modest contractor rate would bill more than the whole project in its first week. The point is not that the machine was cheap. It is that the machine was cheap enough to try five ideas and shelve three of them on evidence.

What the second phase would add

The census above comes from the same per-transcript, per-turn method described above in "Reconciling with what /usage and /stats show". That script was not kept in the repository, and re-running it over the second phase's transcripts — 2026-09-07 to 10-19 — was out of scope for this documentation pass: the honest path was to say so clearly rather than approximate it.

What can be said without re-running that method, from the project's own git history: as of commit cd83b92 (2026-10-19 21:07 UTC — the count below was still climbing as release work landed, so treat it as a floor, not a final tally), the second phase had added 798 commits touching port/3ds (1,628 commits in total, not port/3ds-scoped) over 43 calendar days, versus the 250 port/3ds commits this page prices for the 15-active-day first phase — about 3.2× as many, like for like. Commit count is not a cost measure — the two phases' commits are not the same size or shape of change, and a quiet research day can produce zero commits and a large bill, or the reverse — but it is a real, verifiable sense of scale for a phase this page otherwise has nothing priced to say about.

If this page is revisited: the method above, applied to the second phase's transcripts with the same de-duplication and pricing rules, is how to extend it. Until then, every dollar and token figure on this page is first-phase only, and should be read that way.