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

148 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.

It builds the following ROMs:

  • tbs-ja.gba sha1: 35ef9e4c9f38183ebd6a3e3923a11ce9a4333718
  • tbs-en.gba sha1: 5c4695205413df7db52b9a184815a07783999971
  • tbs-de.gba sha1: c23ab91a39434623cf1a999f387d743ade1a22a6
  • tbs-es.gba sha1: de0bdc889594b012cad213ca83707feb81ada28b
  • tbs-fr.gba sha1: 42f3b262c16cfc5bde1fa2b25016fb74046de1b3
  • tbs-it.gba sha1: ca45e04b26b2f040ac63e679a459d21869f5f28d
  • tla-ja.gba sha1: 4c79e60962299654981628ccd99b122ef27043f7
  • tla-en.gba sha1: b500663220cb9bf56b9f8e8c0c544f1d6fa3a824
  • tla-de.gba sha1: 7820b4c7ba9002b0e9be23a6f45a9ab204986438
  • tla-es.gba sha1: a2e3e80036195343c2713410ac14f4e329e3f40d
  • tla-fr.gba sha1: f14855c0f8c87a95cc52189e8e3b2bd9df186322
  • tla-it.gba sha1: 57f1d005666b81645e55412658427e27099c5907

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.

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.

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, Martin Korth’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.
  • Simon Lindholm, 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

148 stars

Watchers

6 watching

Forks

Contributors

Languages