mirror of
https://github.com/gsret/goldensun.git
synced 2024-11-23 05:09:49 +00:00
Disassembly of Golden Sun
include | ||
lib | ||
overlays | ||
rom_8a000/src | ||
rom_9000/src | ||
rom_15000 | ||
rom_77000/src | ||
rom_185000/src | ||
rom_320000/src | ||
rom_a1000/src | ||
rom_b0000/src | ||
rom_b5000/src | ||
rom_c0/src | ||
rom_c9000/src | ||
rom_f0000/src | ||
rom_f2000/src | ||
rom_f4000/src | ||
rom_f6000/src | ||
rom_f9000/src | ||
tools | ||
.gitignore | ||
goldensun.ld | ||
goldensun.sha1 | ||
Makefile | ||
README.md | ||
rom_header.s | ||
wram.sym |
Golden Sun
This is a disassembly of Golden Sun.
It builds the following ROM:
- goldensun.gba (SHA1:
5c4695205413df7db52b9a184815a07783999971
)
Status
- All known code has been disassembled and symbolized.
- Data has not been disassembled yet.
- Overlays (map code) are not yet built into the output ROM, due to lacking a matching compressor. The build system builds and verifies uncompressed overlays.
- Editing is not meaningfully possible yet. Data included verbatim from the base ROM contains many absolute addresses, so changing the position of any symbol is likely to produce a broken ROM.
Roadmap
More like a list of goals. Not in any particular order.
- Develop a matching compressor and build overlays into the output ROM.
- Declare variables in source files and get rid of wram.sym.
- Isolate modules further. Modules should be partially linked and combined in a final link. Functions and data should not be visible, only exported entry points.
- Document code.
- Disassemble and document data.
- Develop a matching C compiler and decompile C instead of disassembling.
Prerequisites
The original ROM (USA version) is required. It must be named baserom.gba
and placed in the root directory of the repository.
Required software:
- GNU make
- GNU binutils targeting ARM/Thumb (arm-none-eabi)
- C compiler such as GCC or Clang, targeting host architecture (not ARM/Thumb)
To install these dependencies on Debian or Ubuntu:
apt install make gcc binutils-arm-none-eabi
Build
make
The default target builds and verifies the ROM and all overlays.
To build only the ROM:
make goldensun.bin
To verify the ROM:
make compare-goldensun
To build a single overlay, for example overlays/rom_779188/overlay.bin
:
make overlays/rom_779188/overlay.bin
To verify a single overlay, for example overlays/rom_779188/overlay.bin
:
make compare-overlays/rom_779188/overlay
To delete all output files produced by the build:
make clean
Acknowledgements
Golden Sun is copyright 2001 Nintendo / Camelot Software Planning.
This is a fan project, not associated in any way with Nintendo or Camelot.