Setting up oracles-disasm

From ZeldaHacking Wiki
Jump to: navigation, search

The disassembly uses WLA-DX as its assembler. Follow this guide to set up oracles-disasm into a compileable state.

Windows

  • Download and install Cygwin on your computer (64-bit version). Cygwin provides a linux-like environment on Windows.
  • Continue with the default settings in the installer until you reach the "Select Packages" window. If you accidentally went past this, you can run the installer again to select the packages.
  • Select the following packages:
    • Interpreters -> python3 (NOT python2, although you can install that too)
      • NOTE: As of 2020-04-27 the disassembly has switched from Python2 to Python3.
    • Devel -> git
    • Devel -> make
  • Download wlalink.exe and wla-gb.exe (last updated May 5, 2020), and place them in C:\cygwin64\usr\local\bin.
    • Alternatively, skip this step and follow the instructions for compiling wla-dx in the Linux section later.
      • You will need to install the cmake and gcc packages if you do this.
    • (These precompiled binaries probably won't work on a 32-bit cygwin installation).
  • Start up a Cygwin terminal and follow the instructions for Linux.

Cygwin alternative: Windows Subsystem for Linux

(This section is WIP, but WSL should probably replace Cygwin as the recommended option since Cygwin feels pretty sluggish)

Install the necessary packages:

sudo apt update
sudo apt install make cmake gcc

(Other important packages include "python3" and "python3-yaml" but these seem to be installed by default)

Linux

Prerequisites

  • Standard building tools (Bash, Make, gcc)
  • CMake
  • Git
  • Python 3

Compiling WLA-DX

(Only do this if you're not using the precompiled binaries from the Windows section, otherwise skip to the next section)

  • Clone wla-dx:
git clone https://github.com/vhelin/wla-dx
cd wla-dx
  • Compile it:
cmake .
make
  • Copy the binaries to somewhere in your PATH:
cp binaries/* /usr/local/bin/

Procedure

  • Clone the disassembly:
cd ~
git clone https://github.com/Drenn1/oracles-disasm
cd oracles-disasm
  • Run make ages. On a successful build, the final line should say ages.gbc: OK, indicating that the ROM produced is an exact copy of the US Oracle of Ages rom.
  • Run make seasons to do the same for seasons. Running make without any arguments builds both gamse.

Configuring

By default, the disassembly is configured to build a clean ROM by using precompressed assets. This isn't useful if you want to edit graphics or text, for example.

To change this, run the "swapbuild.sh" script. The output should look like this:

$ ./swapbuild.sh
Switching to modifiable (non-precompressed) mode

You can now run make ages again to build everything from uncompressed assets. This first build may take several minutes, depending on your computer's speed. To speed it up by using 4 threads, run make -j4 instead.

Potential errors

PARSE_DEFINES_AND_GET_FINAL_NAME: Error in commandline options.

You're using the incorrect version of wla-dx. You should either use the provided binaries, or a recent build from github.

ImportError: No module named site

This seems to be caused by conflicting python installations between Windows and Cygwin.

A temporary fix is to run export PYTHONHOME=/usr/ before running make again. Add this line to your ~/.bashrc file to make the fix permanent.

What next?

Once you have ages-disasm working, see some of its uses.