OoT-Randomizer icon indicating copy to clipboard operation
OoT-Randomizer copied to clipboard

Add dockerfile for toolchain, minor internal changes

Open mracsys opened this issue 1 year ago • 3 comments

A dockerfile and compose script are added to the ASM folder to make setting up the randomizer toolchain easier. Readme files are updated to describe the process from both the command line and from VSCode's Dev Container extension. Both pipelines have been tested on Linux and Windows. It would be helpful to test on a Mac (especially on ARM) if someone has one.

I made some internal changes that should be transparent to users/devs that make it easier to reuse files in the container:

  • ZOOTDEC.z64 is no longer generated in the root of the repository. The randomizer caches the uncompressed ROM in ASM/roms/base.z64, which also conveniently removes the need to copy it there to compile the C/ASM patch. This required changing hardcoded references to ZOOTDEC.z64 in some of the helper scripts and notes.
  • The compressor is run with a working directory of ASM/roms/. dmaTable.dat is moved to this folder to facilitate this. This change creates the ARCHIVE.bin cache in this folder instead of the repository root. See the comment in Main.py#L244 for details why.
  • GUI Browse buttons will attempt to use a relative path for the file/directory inputs, which are then saved as relative paths to settings.sav. This allows running the randomizer from either the host or the container without worrying about where the repository is saved. This is only relevant for the Dev Container extension as the unmodified docker container will only compile the C/ASM and exit. I think this doesn't affect the web version as the functions were marked electron-only, but I don't know how safe that assumption is.

Some of these changes may affect the web branch. ROM patching should be tested there before merging.

mracsys avatar Oct 05 '24 22:10 mracsys

  • ZOOTDEC.z64 is no longer generated in the root of the repository. The randomizer caches the uncompressed ROM in ASM/roms/base.z64, which also conveniently removes the need to copy it there to compile the C/ASM patch. This required changing hardcoded references to ZOOTDEC.z64 in some of the helper scripts and notes.

Is this going to break running the generator without a base ROM selected, or do the other changes mean that is effectively unchanged, the location just happens to be different?

flagrama avatar Oct 06 '24 05:10 flagrama

No, it only changed the location/filename. I just doublechecked and it worked fine without the vanilla compressed ROM once the uncompressed one was generated.

mracsys avatar Oct 07 '24 00:10 mracsys

I got a chance to test this on a mac. Unfortunately there are no pre-built aarch64 debian packages for the n64 toolchain. Building from source works, just very slowly (~30 minutes on an M4). Once the image is built everything is quick.

mracsys avatar Nov 10 '24 20:11 mracsys