Merrow
Merrow is an open-source “randomizer”, a tool designed to revitalize an old game by remixing game elements so that each playthrough is unique. I developed it to randomize Quest 64, a 1998 RPG for the Nintendo 64, and it offers many randomization, difficulty modification, and quality-of-life options.
Merrow began as an experiment in exploring retro game data structures. I greatly enjoyed Quest 64 as a kid, despite its many flaws, and was curious about romhacking in general. Quest turned out to be an ideal candidate for this, as the game had undergone a long development and tried to implement many unique design concepts, although the execution of those ideas wasn't always the best.
Through my research into the game's data, I learned a great deal about how older games were architectured, but also discovered exactly how unfinished Quest really was, as it was rushed out to avoid competing with the seminal N64 title Legend of Zelda: Ocarina of Time.
I realized that I could use my existing programming skills to write and export simple game patches using an old open-source patching format called IPS, that was designed to be a one-step process to apply wide-ranging edits to a file's hexadecimal data.
The first few versions of Merrow were developed in Unity C#, but adding more features required more complex UI improvements, so I migrated the tool to Winforms C# to make it more lightweight.
Merrow also ended up containing several other features:
- A Quest 64 game reference, containing extensive data about the game’s spells, enemies, and stats, as well as randomizer-specific information.
- A series of non-game-specific romhacking tools, including a data extraction tool, a generic IPS patch generator, and an N64 file checksum repair tool.
My goals throughout the project were usability and clarity, for both the tool and the patched game, reasoning that a game this obscure (with a reputation this bad) would be a hard sell. So by devising many quality-of-life improvements to go alongside my randomization features, I could hopefully make Merrow a revival project of sorts, to bring new players and old to a game I appreciated.
I formally 'released' Merrow with version 44, creating several media pieces (including a built-in Help function, explanatory detail sheets and a PDF Guide.)
Significant development milestones:
- 21-01-17: v1.0 initial release, randomized spells proof-of-concept.
- 21-01-21: v1.2 contained the first QoL option (passive Invalidity).
- 21-02-02: v1.51 first attempt at anti-crash logic for randomized spells.
- 21-02-13: v17 migrated the tool to Winforms.
- 21-02-26: v20 created Binary File Reader to extract data easily.
- 21-03-16: v23 implemented checksum-repair code as a DLL.
- 21-04-10: v26 implemented the ability to directly patch Z64 files.
- 21-07-17: v35rc added the "LOST KEYS" unified randomizer ruleset.
- 21-10-11: v42 created the "FRENCH VANILLA" QoL ruleset.
- 21-11-20: v44 marked the Major Release, with cleanup and polish.
- 22-04-21: v47 made major changes to the "LOST KEYS" ruleset.
Merrow, available on itch: hangedman.itch.io/merrow
Merrow Github repository: github.com/hangedmandesign/merrow
Release announcement: twitter.com/JonahD/status/1462158123242774539