Skip to content
PascalPixelPublic

About

🌋 Alchemy is a reconstruction of the source for both ☀️ Golden Sun games for Game Boy Advance: a matching decompilation that builds the same ROMs, byte for byte

Topics

Resources

Stars

150 stars

Watchers

6 watching

Forks

Repository files navigation

🌋 Alchemy

Alchemy is a reconstruction of the source for the Game Boy Advance games ☀️ Golden Sun: The Broken Seal and ⚓️ Golden Sun: The Lost Age. It is a matching decompilation: readable code, images, music and text that build the same ROMs as the originals, byte for byte.

Docs

Alchemy's documentation on the interface: Isaac talks to Garet's sister in Vale above a diagram of what each button opens, beside the guide's sidebar

alchemy.pascalpixel.com explains how The Broken Seal works, written from its rebuilt source, with recordings from the game itself. To find the code behind something you saw in the game, start at the source's own page.

Build

Install the dependencies.

macOS, with Homebrew:

xcode-select --install
brew install arm-none-eabi-binutils libpng

Linux (Debian or Ubuntu; the same packages under their local names elsewhere):

sudo apt install build-essential binutils-arm-none-eabi git libpng-dev

Windows: run wsl --install in PowerShell, restart, open Ubuntu from the Start menu and follow the Linux steps inside it.

Then clone and build.

git clone --recurse-submodules https://github.com/PascalPixel/alchemy
cd alchemy
make

The first make builds the old compilers from the alchemy-gcc submodule, once, then the English Broken Seal as out/tbs-en/tbs-en.gba.

Command Builds
make tbs-en one edition: tbs or tla, then ja, en, de, es, fr or it
make compare-tbs-en that edition, checked against the original's hash in rom.sha1
make -j8 compare-tbs all six editions of The Broken Seal (compare-tla for The Lost Age)
make -j8 compare-editions all twelve

make help lists the rest.

It builds the following ROMs:

Language The Broken Seal The Lost Age
Japanese 35ef9e4c9f38183ebd6a3e3923a11ce9a4333718 4c79e60962299654981628ccd99b122ef27043f7
English 5c4695205413df7db52b9a184815a07783999971 b500663220cb9bf56b9f8e8c0c544f1d6fa3a824
German c23ab91a39434623cf1a999f387d743ade1a22a6 7820b4c7ba9002b0e9be23a6f45a9ab204986438
Spanish de0bdc889594b012cad213ca83707feb81ada28b a2e3e80036195343c2713410ac14f4e329e3f40d
French 42f3b262c16cfc5bde1fa2b25016fb74046de1b3 f14855c0f8c87a95cc52189e8e3b2bd9df186322
Italian ca45e04b26b2f040ac63e679a459d21869f5f28d 57f1d005666b81645e55412658427e27099c5907

Acknowledgements

Golden Sun, its characters, music, art and original code were made by Camelot Software Planning and published by Nintendo. Alchemy is an unofficial fan project, and neither company is involved with it or endorses it.

Thank you to:

  • pret, whose decompilations set the standard Alchemy measures itself against, and whose agbcc builds the games’ sound and save code.
  • GBATEK, nocash’s hardware reference, from which The Lost Age’s -mtune=gba tune and Alchemy’s hardware names come.
  • Coaltergeist, Karathan and Tarpman, whose earlier public work identified the compiler and flags behind The Broken Seal.
  • Telago, whose GameFAQs walkthroughs of The Broken Seal and The Lost Age say what the player sees in every place, which is where many of Alchemy’s names come from.
  • simonlindholm, for decomp-permuter, which Alchemy Devtools reimplements in Rust.
  • Everyone at r/GoldenSun who cheered Alchemy on and builds with it.

About

🌋 Alchemy is a reconstruction of the source for both ☀️ Golden Sun games for Game Boy Advance: a matching decompilation that builds the same ROMs, byte for byte

Topics

Resources

Stars

150 stars

Watchers

6 watching

Forks

Contributors

Languages