Skip to main content

Wii library written in and for Python

Project description

Wii.py from #Wii.py on EFNet is a GPL licensed Wii library written in and for Python. It provides editors and classes for many file types and files present on the Wii, especially files in banners. It was created as a replacement for the unreleased and never to be released pywii, written by marcan, but has since expanded in some areas that pywii did not cover and not completed others (such as Wii Optical Disc editing) that pywii has support for.

Derived from: http://wiibrew.org/wiki/Wii.py

Installation

pip install Wii.py

Features

  • Loading and easy editing of U8 archives

  • Simple, easy classes for TMDs and Tickets, with methods to load from and save to files

  • Simple Title object to hold information about a title
    • Can pack into a WAD

    • Can download from NUS

    • Can unpack into a directory structure

  • Convert images to/from PNG and TPL

  • Convert WAV sound the BNS sound (used in banners)

  • Add IMET and IMD5 headers

  • Load and extract files from Wii Optical Discs

  • Create a fake ‘NAND’ that you can modify with a Python version of ES and ISFS from libogc

  • Decompress LZ77 compressed files

  • Work with these file types:
    • loc.dat

    • CCF

    • iplsave.bin

    • uid.sys

    • content.map

    • config.dat (network config)

    • setting.txt

    • Savegames

Dependencies

  • PyCrypto

  • PIL (Python Imaging Library)

  • wxPython (optional) if you want to use the toScreen() method of the TPL object

PyCrypto and PIL (Pillow fork) are part of the PyPI dependencies. wxPython is not required if you’re not doing GUI stuff.

Usage

Unfortunately, there is no real documentation yet. For now, here’s some short examples showing just how short your code can be.

Downloads the latest System Menu from NUS and packs it into a WAD:

import Wii
Wii.NUS.download(0x000000010000002).dumpFile("SystemMenu-latest.wad")

Downloads System Menu version 289, and replaces content index 0 with the file “patch.bin”, changes the title id to 1-3, then saves to the WAD “patched.wad”:

import Wii
sysmenu = Wii.NUS.download(0x000000010000002, 289)
sysmenu[0] = open("patch.bin", "rb").read()
sysmenu.tmd.setTitleID(0x0000000100000003)
sysmenu.tik.setTitleID(0x0000000100000003)
sysmenu.dumpFile("patched.wad")

Unpacks the first command line argument WAD to the folder “inside”:

import Wii, sys
wadf = Wii.WAD.loadFile(sys.argv[1])
wadf.dumpDir("inside")

Unpacks the first command line argument U8 archive to the folder “unpacked”:

import Wii, sys
u8archive = Wii.U8.loadFile(sys.argv[1])
u8archive.dumpDir("unpacked")

Converts the png as the first argument to a TPL saved in “out.tpl”:

import Wii, sys
TPL(sys.argv[1]).toTPL("out.tpl")

Converts the Sound.wav to Sound.bns:

import Wii, wave
wav = wave.open("sound.wav", 'rb')
channelnumber = wav.getnchannels()
buffer = wav.readframes(wav.getnframes())
samplerate = wav.getframerate()
wav.close()
bns = Wii.BNS()
bns.create_bns(buffer, samplerate, channelnumber)
bns.write("sound.bns")

Credits

This library was written by Xuzz, SquidMan, megazig, Matt_P, Omega and The Lemon Man. It contains the LZ77 code written by marcan, with few modifications. Credit goes to Daeken for the Struct.py module.

Project details


Download files

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

Source Distribution

Wii.py-0.1.tar.gz (50.1 kB view details)

Uploaded Source

Built Distribution

Wii.py-0.1-py2.py3-none-any.whl (55.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file Wii.py-0.1.tar.gz.

File metadata

  • Download URL: Wii.py-0.1.tar.gz
  • Upload date:
  • Size: 50.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for Wii.py-0.1.tar.gz
Algorithm Hash digest
SHA256 9e6a2771999829e49c4a55431d99aba992bc5d3d586f8b0d9055c62caee57425
MD5 c4824c49d890125373042d17956f036f
BLAKE2b-256 48538ee989c441ea88e74af256a9fd99718a00356c3ee50e8c694615ae9c907e

See more details on using hashes here.

File details

Details for the file Wii.py-0.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for Wii.py-0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e4f4c45024e1f8c84f051ab7b9d15ce8380646ce9c30e9a9b6ea21032e0284bc
MD5 a05b7c4b1d0f45f62658c119c669e4c3
BLAKE2b-256 be83cd1cef01063d6c8fb803bb4e25118d423aa3af677f91d2402d3051e39150

See more details on using hashes here.

Supported by

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