Tools‎ > ‎

zzrtl


zzrtl is a lightweight alternative to zzromtool. It relies on external scripts that are highly customizable, giving the user full control over everything. Many people wanted to love zzromtool, but found it too rigid. This program is for all of you.

Scripts for dumping and rebuilding OoT and MM's filesystems are available on the GitHub repo. Should you wish to tailor them to your project's specific needs, read the manual. Use Notepad++ with C syntax highlighting for the optimal editing experience.

* Unlike zzromtool, zzrtl does not have built-in table expansion. If you want to add new object folders, for example, you are going to need to free up ram and move the object table yourself, updating the build script to reflect its new location. If any such patches are made, links will be added to this page.

Here are some one-liners you can use to compress common decompressed roms without needing an RTL script (as of revision 1):

OoT Debug
zzrtl --nocache --compress "if='path/to/ootdebug.z64' of='compress.z64' mb='32' codec='yaz' dma='0x12F70,0x60C' compress='9-14,28-END'"


OoT NTSC 1.0
zzrtl --nocache --compress "if='path/to/oot10udec.z64' of='compress.z64' mb='32' codec='yaz' dma='0x7430,0x5F6' compress='10-14,27-END'"


MM U
zzrtl --nocache --compress "if='path/to/mmudec.z64' of='compress.z64' mb='32' codec='yaz' dma='0x1A500,0x620' compress='10-14,23,24,31-END' NOcompress='1127' rearchive='15-20,22'"


r4 credits
    - Aroenai - MM yaz archive bug report and testing

r4 changes
    - relocating yaz files within archives was not
      working properly due to alignment, but now it
      is; thanks for the bug report, Aroenai!

r3 credits
    - /Zel/ - MM script collaboration

r3 changes
    - final changes to make MM scripts possible
    - MM scripts are now available
    - updated OoT scripts
    - dump scripts now work on compressed roms
    - extension assertion: zzrtl now complains if
      provided with a file not of the extension .rtl
    - raw data assertion: zzrtl now complains if
      provided with a file that doesn't contain some
      form of "int main" (e.g. an html file saved
      with the .rtl extension)
    - added a function file_exists(fn) to check if a
      file exists (returns 1 if it does, 0 otherwise)
    - rom.inject_dma() function added for injecting
      a file over a known existing DMA entry
      (file-size must match file being overwritten)
      (rom.inject_raw_dma() also available)
    - rom.extract_dma() function added for extracting
      a file of a known DMA index
    - .next() and .remaining() are now able to be
      used with conf files of type list, for the
      purpose of stepping through list items
    - .name() and .value() functions for retrieving
      the name and value (as strings) of the
      selected conf list item have been added
    - an int_array() function to make up for zzrtl
      not supporting int array[32]; type declarations
    - a new_string() function for easy string building
    - rom version checking to reduce weird errors
      encountered from using a dump/build script with
      a rom not supported by it
    - loadfile() function added
    - tsv_col_row() function added

r2 changes
    - faster compression
    - compression ratio is now printed afterwards
    - removed zx7 codec (was slower than ucl and
      had a worse compression ratio than ucl)
    - added aplib codec (better ratio than ucl, and
      faster load times than ucl on Wii VC; the only
      downside is roms take a few minutes to compress)
    - lzo and aplib patches are now available

r2 credits
    - Mikau6 - hardware testing

r1 changes
    - added compression codecs ucl, xz7, slowyaz
    - added support for deleted files in MM dmadata
      specification (aka pstart == pend == -1)
    - added rearchive(), file_dma(), and cloudpatch()
    - added --compress command line argument so zzrtl
      can be used as a standalone rom compressor
    - added --nocache command line argument for doing
      compression without generating a cache folder
    - added --cloudpatch command line argument for
      easy command line cloudpatching
    - added --help command line argument so a massive
      wall of documentation doesn't pop up and scare
      double-clickers away
    - stability improvements
    - when compressing a file makes it larger, its
      uncompressed counterpart is used instead
    - better compressed file packing

r1 notes
    - individual files compressed with slowyaz are
      byte-identical to those in retail roms; aside
      from weird corner cases, there is no reason
      you should use slowyaz; it is slower than yaz
      and produces files slightly larger than yaz...
    - it should now contain everything necessary
      to support Majora's Mask

r1 credits
    - Mikau6, CrookedPoe - hardware testing

r0 changes
    - fixed compression bug

r0 credits
    - AriaHiro: bug reports, testing
Downloads

Version 0.01 r4 (Windows/Linux)

Guides

Manual

Related

compression codecs