Skip to main content

Nintendo SARC archive reader and writer

Project description

Nintendo SARC archive reader and writer

Setup

Install Python 3.6+ (64 bit version) then run pip install sarc.

List files in an archive

sarc list ARCHIVE

Extract an archive

sarc extract ARCHIVE

Create an archive

sarc create [--be] FILES_TO_ADD  DEST_SARC

You can give it directories too, in which case the entire directory will be added to the archive recursively.

Pass --be (shorthand: -b) if you want sarc to use big endian mode (for the Wii U).

An important option is --base-path. This option lets you remove parts of the path. For example, if you pass a path like Mods/BotW/System/Version.txt, you will likely want to pass --base-path Mods/BotW to get rid of the leading components.

If only a single directory is passed, the base path is set for you automatically.

So typical usage example:

sarc create  ~/botw/Bootup/  ~/botw/ModifiedBootup.pack

Update an archive

sarc update  FILES_TO_ADD  SARC_TO_MODIFY

This is almost identical to create.

By default, sarc will keep the endianness of the original archive. You can override this with --endian {le,be} (le for little and be for big endian).

Delete files from an archive

sarc delete  FILES_TO_DELETE  SARC_TO_MODIFY

Nothing much to say here. Just keep in mind FILES_TO_DELETE takes archive paths (those that are printed by list).

Library usage

import sarc

archive = sarc.read_file_and_make_sarc(file)
# or if you already have a buffer
archive = sarc.SARC(archive_bytes)
if archive:
    for file_name in archive.list_files():
        size = archive.get_file_size(file_name)
        data = archive.get_file_data(file_name)

To modify an archive:

import sarc

writer = sarc.make_writer_from_sarc(archive)
# or if you're reading from a file
writer = sarc.read_sarc_and_make_writer(file)
# or for a blank archive
writer = sarc.SARCWriter(be=big_endian)

writer.add_file('test.bfevfl', b'file contents')
writer.add_file('another_file.txt', b'file contents')
writer.add_file('test.bfevfl', b'replacing a file')

writer.delete_file('another_file.txt')

writer.write(output_stream)

For more information, please look at sarc.py.

License

This software is licensed under the terms of the GNU General Public License, version 2 or later.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

sarc-2.0.5-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file sarc-2.0.5-py3-none-any.whl.

File metadata

  • Download URL: sarc-2.0.5-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for sarc-2.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1d95cbb60aeb1e921eac25671864b507b39289ef795161cbdb331f98b029e555
MD5 9231d4439b19d1b5690b8e4e998a804a
BLAKE2b-256 48e17b2c78dfbe76e7af3c234143d7847f1adde00b0e4f437b85f092e7cea535

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page