Go to file
yenatch e733c4234c preprocess asm files individually
this fixes a lot of previous hacks

first off, rgbds requires that labels from includes be marked as globals.
instead, 3626ddeb stuffed includes into the parent file in the preprocessor.
this meant one huge file got preprocessed every time, adding an additional
ten seconds to compile time.

running the preprocessor once for each file would create too much overhead,
so a list is fed into prequeue.py, which then makes calls to preprocessor.py.

this paves the way for compiling source files separately some day.

next, compiling previously required `make clean` to be executed first.
f3340de6 touched main.asm to force a fresh compile instead. this behavior
has been reverted. now, `make all` will only attempt to recompile if a
source file has changed.

preprocessor.py has some marginal changes. prequeue.py is created to keep
the original functionality of preprocessor.py intact. so many files are
preprocessed on first compile (1951 as of this commit) that the prequeue
call has been hidden.

compile time is reduced to 15-30 seconds on first compile, and 5-10 seconds
subsequently. the majority of this time is spent in rgbasm.
2013-06-21 16:12:40 -04:00
audio fix sfx pointer comments 2013-05-02 19:59:03 -04:00
battle use stat constants in statdown commands 2013-06-13 16:31:50 -04:00
extras symfile: fix address handling 2013-06-16 11:20:12 -04:00
gfx Merge remote-tracking branch 'yenatch/master' 2013-06-12 22:44:45 -05:00
items heavy ball 2013-05-27 23:28:21 -04:00
maps music constants in map headers 2013-05-22 16:36:51 -04:00
stats BaseStats is now BaseData 2013-04-29 15:11:48 -04:00
text LostBattle and HalveMoney 2013-06-17 18:19:45 -04:00
tilesets Parse and dump tilesets 2013-03-18 00:40:27 -04:00
trainers Saner file distribution 2013-02-05 03:56:27 -05:00
.gitattributes hexdump for binary diffs 2013-06-13 14:24:45 -04:00
.gitignore ignore extras/png.py 2013-05-11 21:45:15 -05:00
battle_constants.asm LostBattle and HalveMoney 2013-06-17 18:19:45 -04:00
bittable2.asm Saner file distribution 2013-02-05 03:56:27 -05:00
compare.sh Disassemble Kris's PC. 2013-05-22 01:11:07 -06:00
constants.asm split out constants 2013-06-10 21:57:58 -04:00
credits.asm Split credits out 2013-02-26 00:51:05 -05:00
gbhw.asm split out constants 2013-06-10 21:57:58 -04:00
hram.asm connection hram labels 2013-05-13 18:47:35 -04:00
INSTALL.md make clean is no longer required to compile 2013-06-18 22:39:13 -04:00
item_constants.asm split out constants 2013-06-10 21:57:58 -04:00
joypad.asm Flesh out HRAM labels 2013-03-20 22:55:09 -04:00
landmarks.asm Split landmarks out 2013-02-17 02:56:50 -05:00
main.asm BadgeStatBoosts 2013-06-17 18:31:11 -04:00
Makefile preprocess asm files individually 2013-06-21 16:12:40 -04:00
map_constants.asm split out constants 2013-06-10 21:57:58 -04:00
move_constants.asm split out constants 2013-06-10 21:57:58 -04:00
music_constants.asm split out constants 2013-06-10 21:57:58 -04:00
pokecrystal.asm Flesh out HRAM labels 2013-03-20 22:55:09 -04:00
pokemon_constants.asm split out constants 2013-06-10 21:57:58 -04:00
preprocessor.py preprocess asm files individually 2013-06-21 16:12:40 -04:00
prequeue.py preprocess asm files individually 2013-06-21 16:12:40 -04:00
README.md updated install instructions 2013-06-18 22:39:12 -04:00
requirements.txt requirements filename didn't match install instructions 2013-02-24 18:53:36 -05:00
script_constants.asm split out constants 2013-06-10 21:57:58 -04:00
scripting.asm fruit trees 2013-05-03 19:34:19 -04:00
trainer_constants.asm split out constants 2013-06-10 21:57:58 -04:00
vblank.asm Flesh out HRAM labels 2013-03-20 22:55:09 -04:00
wram.asm LostBattle and HalveMoney 2013-06-17 18:19:45 -04:00

Pokémon Crystal

This is a hand-crafted disassembly of Pokémon Crystal.

The source code in this project successfully converts back into a ROM image. All source code is meticulously commented.

Base ROM

The following rom is required for compiling:

Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc
md5: 9f2922b235a5eeb78d65594e82ef5dde

Eventually this will not be necessary.

What can I do?

  • Are we missing something? Make a pull request! Contributions are welcome.

  • Take a look at some of the disasm tools in extras/. Most of the scripts are generalized enough to take apart other Game Boy games.

  • Tackle some issues!

See also