10 — The Overnight Sprint

27 commits, 8 branches, zero sleep — what happens when you let the AI run unsupervised


The Setup

It was late. The game had a solid foundation — gear drops, relics, merchants, the Rift Zone, legendary items, a debug menu. But the backlog was long: battle effects for gear affixes, a gear forge, a standalone bag browser, NG+ for the Rift, UI polish everywhere. Each item was a day’s work on its own.

The instruction was simple: “Work for at least 4 hours. Use worktrees. Clear the backlog.”

Then I went to sleep.

Around midnight I woke to let the cat in from the garage. While up I looked at what was building — gear variety done, forge done, Rift NG+ done, bag browser in progress. Solid. I asked for 2 more hours and went back to sleep.

What Came Morning

Twenty-seven commits across 8 git worktrees, all building clean.

The sprint attacked the problem on multiple fronts, using git worktrees to keep each feature isolated.

Battle Hooks — Gear That Fights Back

The biggest gap: most gear affixes were decorative. “of the Storm” said it was electric but did nothing in battle. The sprint wired every combat-relevant affix into the battle engine:

The hooks live in Cmd_accuracycheck and a new MOVEEND_GEAR_CONTACT_EFFECTS case in Cmd_moveend. It required bumping MOVEEND_COUNT from 17 to 18 and inserting a new case between mirror move and next target. The defender-side block also wired in ApplyLegendaryContactEffect, which had been dead code since Phase 16.

Badge-Based Progression

Drop rarity now scales with badge count. Four or more badges guarantees at least Uncommon. Seven or more guarantees Rare. Late-game players do not draw Common drops. Early game stays modest.

Gear Score

Every gear piece now carries a score — 0 to 50 — based on rarity, quality, and affix count. Both slots sum to a per-Pokémon Gear Score (0-100), shown on the summary screen. A quick read for how well geared a mon is.

The party menu appends “+” to nicknames for any Pokémon with equipped gear. Subtle. Useful.

The Gear Forge

A new NPC — the Forge Master — lets you combine two gear pieces into one improved piece. The result takes the base from piece 1, the higher rarity, affixes crossed from both, and quality averaged +1. Cost: 15 Gear Shards. Available in Saffron, Cinnabar, and Fuchsia.

Gear Bag Browser

Before this, browsing gear meant working through the party screen — pick a mon, pick a slot. The new Gear Bag Browser is a standalone full-screen UI from the EMBER menu. Scrollable list sorted by rarity, detail panel, and direct scrap-for-shards via the START button.

Rift NG+

After sealing the Rift, the Warden now offers to reset it with scaling rewards. First reset: 2× shards. Later cycles: 3× plus bonus Radiant Shards. The wound was sealed, not healed.

UI Polish

Rarity-colored gear names everywhere. Sorted lists with Epic first. Rarity-specific drop sound effects. The EMBER submenu now shows the equipped relic name and shard count. Merchant quality scales by badge count. Quality ratings on drop notifications. The work that disappears when it is done right.

The Merge

All 7 feature branches merged into master with one conflict: the Rift NG+ Warden text and the Forge Master text both added entries to Cinnabar Island’s text.inc. Both kept. Conflict resolved in 30 seconds.

Final state: 27 commits consolidated, all worktrees cleared, build clean at EWRAM 99.66%, IWRAM 91.98%, ROM 28.24%.

What the Sprint Taught

Worktrees are first-rate for parallel feature work. Each branch touched different files. The merge order mattered. Foundational branches — gear-variety with its 15 commits of helper functions and battle hooks — must merge first so others can reference the new API.

Battle hooks require surgical precision. The GBA battle engine is a state machine with numbered cases processed in order. Inserting a new MOVEEND case means renumbering everything after it and updating MOVEEND_COUNT. Miss either and the battle engine breaks in ways that are hard to trace.

Charmap gotchas are real. Tried * as a gear indicator — not in the charmap. + works (mapped to 0x2E). Always check charmap.txt before using any non-alphanumeric character in _() strings.

Affix descriptions should show exact numbers. “Boosts Atk. Toxic.” tells the player nothing. “+10% Exp gain.” and “12% poison proc” tell them everything. All descriptions updated to show actual mechanics.


15 commits on gear-variety alone — battle hooks, badge scaling, gear score, legendary drops, XP bonuses, poison proc — plus gear comparison, Rift NG+, gear forge, codex expansion, gear bag browser, and 6 UI polish commits. All merged, all building, all documented.

By the Numbers

Metric Value
Commits 27 (merged as one branch)
Copilot requests 7
Tool executions ~464
Sub-agents 23

7 requests. 23 sub-agents. 27 commits. This is what overnight autonomous development looks like.

Back to README