diff --git a/INSTALL.md b/INSTALL.md index 6e2ea4bb4..10dce5407 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,184 +1,40 @@ # Getting Started -Assembling **pokecrystal.gbc** requires a certain **Pokemon Crystal** rom: +Assembling **pokecrystal.gbc** requires a certain **Pokémon Crystal** rom: -``` -Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc -md5: 9f2922b235a5eeb78d65594e82ef5dde -``` + Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc + md5: 9f2922b235a5eeb78d65594e82ef5dde -Save it as **baserom.gbc** in the repository. - -Feel free to ask us on -**[nucleus.kafuka.org #skeetendo](https://kiwiirc.com/client/irc.nolimitzone.com/?#skeetendo)** -if something goes wrong. - -# Windows - -If you're on Windows and can't install Linux, **Cygwin** is a great alternative. - - -## Installing Cygwin - -Cygwin provides a virtual Linux environment on Windows systems. Just get **setup.exe**. - -**http://cygwin.com/install.html** - -During the install: - -* Keep the defaults. -* Most mirrors are molasses. Use **http://mirrors.kernel.org**. -* From the package selection, pick: - * **wget** - * **make** - * **git** - * **python** - * **python-setuptools** - * **unzip** - -## Using Cygwin - -Launch the **Cygwin terminal**. -Maybe you know your way around the Linux terminal ( **bash** ). -If not, a crash course: -```bash -# list files in current directory -ls - -# show current directory -pwd - -# change directory -cd /away/we/go -``` - -## Getting up and running - -We need three things to assemble the source into a rom. - -1. **rgbds** -2. a **pokecrystal** repository -3. a **base rom** - -We use **rgbds** to spit out a Game Boy rom from source. -```bash -cd /usr/local/bin -wget http://iimarck.us/etc/rgbds-20130811.zip -unzip -j rgbds-20130811.zip -rm rgbds-20130811.zip -``` - -The **pokecrystal** repository contains the source files used to create the rom. -```bash -cd ~ -git clone https://github.com/kanzure/pokecrystal -cd pokecrystal - -# install python requirements -easy_install pip -pip install -r requirements.txt -``` - -Not everything is included in the source yet. -Missing patches are copied from a **base rom** (not included). - -``` -Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc -md5: 9f2922b235a5eeb78d65594e82ef5dde -``` - -Name it **baserom.gbc**. - -**pokecrystal** only compiles with the use of a git submodule. To activate the submodule type: - -``` -git submodule init -git submodule update -``` - -Now you should be able to build **pokecrystal.gbc** for the first time. - -This compiles a new rom from the source code, with any patches filled in from the base rom. - -```bash -make -``` - -This ought to take **between 3 and 15 seconds**, depending on your computer. - -If the last line is `cmp baserom.gbc pokecrystal.gbc`, the build was successful! - -Your first build processes every source file at once. -After that, **only modified source files have to be processed again**, -so compiling again should be a few seconds faster. # Linux -```bash -sudo apt-get install make gcc bison git python python-setuptools -sudo easy_install pip +Linux dependencies. OSX users already have these after installing Xcode. -# install rgbds -git clone git://github.com/bentley/rgbds.git -cd rgbds -make -sudo make install - -cd .. - -# download pokecrystal -git clone git://github.com/kanzure/pokecrystal.git -cd pokecrystal - -# grab extras/ which is required for compiling -git submodule init -git submodule update - -# install python requirements -pip install -r extras/requirements.txt - -# use hexdump to diff binary files -git config diff.hex.textconv hexdump -``` - -Put your base rom in the pokecrystal repository. Name it **baserom.gbc**. - -To compile the rom from source: -```bash -make -``` - -That will take between 3 and 15 seconds, depending on your computer. -If you see `cmp baserom.gbc pokecrystal.gbc` as the last line, the build was successful! Rejoice! + sudo apt-get install make gcc bison git python python-setuptools -# Now what? +Set up the **pokecrystal** repository: -**[pokecrystal.asm](https://github.com/kanzure/pokecrystal/blob/master/pokecrystal.asm)** is a good starting point. -The structure of the source is laid out here. + git clone git://github.com/kanzure/pokecrystal.git + cd pokecrystal + + ./init.sh + +Copy the Pokémon Crystal rom to this directory. Name it **baserom.gbc**. + +Now you should be able to build **pokecrystal.gbc** for the first time. + + make + +Your first build may take about a minute. Subsequent builds are much faster (5-20 seconds). -* Other **make targets** that may come in handy: +# OSX - * `make clean` deletes any preprocessed source files (.tx), rgbds object files and pokecrystal.gbc. - * `make pngs` decompresses any **lz** files in gfx/ and then exports any graphics files to **png**. - * `make lzs` does the reverse. This is already part of the build process, so **modified pngs will automatically be converted to 2bpp and lz-compressed** without any additional work. +Download and install **Xcode**. Then follow the Linux instructions. -* **Can't find something?** -Anyone can add to the source. There's lots to be uncovered. +# Windows -* **Do your own thing!** -The asm source is hack-friendly, and the supplementary scripts in extras/ can be used for other projects. +Not yet. -We'll be happy to answer any **questions** on -**[nucleus.kafuka.org #skeetendo](https://kiwiirc.com/client/irc.nolimitzone.com/?#skeetendo)**. - - -Other **make targets** that may come in handy: - -`make clean` deletes any preprocessed source files (.tx), rgbds object files and pokecrystal.gbc, in case something goes wrong. - -`make pngs` decompresses any **lz** files in gfx/ and then exports any graphics files to **png**. - -`make lzs` does the reverse. This is already part of the build process, so **modified pngs will automatically be converted to 2bpp and lz-compressed** without any additional work. diff --git a/README.md b/README.md index f191cd917..7cc9c7eee 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,19 @@ # Pokémon Crystal -This is a hand-crafted disassembly of Pokémon Crystal. +This is a disassembly of Pokémon Crystal. -The source code in this project successfully converts back into a ROM image. All source code is meticulously commented. +The source code in this project successfully converts back into a ROM image. +The following rom is used as a base: -## Base ROM + Pokemon - Crystal Version (UE) (V1.0) [C][!].gbc + md5: 9f2922b235a5eeb78d65594e82ef5dde -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](https://github.com/kanzure/pokecrystal/issues)**! +To set up the repository, see [**INSTALL.md**](INSTALL.md). ## See also -* Hang out with us on irc: **[nucleus.kafuka.org #skeetendo](https://kiwiirc.com/client/irc.nolimitzone.com/?#skeetendo)** +* Disassembly of [**Pokémon Red**](https://github.com/iimarckus/pokered) -* Disassembly of **[Pokémon Red](http://bitbucket.org/iimarckus/pokered)**. +* irc: **nucleus.kafuka.org** [**#skeetendo**](https://kiwiirc.com/client/irc.nolimitzone.com/?#skeetendo) diff --git a/init.sh b/init.sh new file mode 100755 index 000000000..43e80c956 --- /dev/null +++ b/init.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +# install rgbds +git clone git://github.com/bentley/rgbds.git && \ +cd rgbds && \ +make && \ +sudo make install && \ +cd .. && \ +rm -rf rgbds + +# set up the submodule (extras/) +git submodule init && \ +git submodule update && \ +sudo easy_install pip && \ +pip install -r extras/requirements.txt + +# diff binary files using hexdump +git config diff.hex.textconv "hexdump -C" +