Minor changes to wad.py that allow for testing

This commit is contained in:
Campbell 2024-02-28 10:14:20 -05:00
parent 9614defc2d
commit 66e83ff3f8
No known key found for this signature in database
GPG Key ID: BDEBC4A7A7205F5B
3 changed files with 21 additions and 16 deletions

3
.gitignore vendored
View File

@ -162,4 +162,5 @@ cython_debug/
.idea/ .idea/
# Allows me to keep TMD files in my repository folder for testing without accidentally publishing them # Allows me to keep TMD files in my repository folder for testing without accidentally publishing them
*.tmd *.tmd
*.wad

View File

@ -1,4 +1,5 @@
# "tmd.py" from libWiiPy by NinjaCheetah # "tmd.py" from libWiiPy by NinjaCheetah
#
# See https://wiibrew.org/wiki/Title_metadata for details about the TMD format # See https://wiibrew.org/wiki/Title_metadata for details about the TMD format
import binascii import binascii

View File

@ -20,10 +20,10 @@ class ContentRecord:
class wadHeader: class wadHeader:
"""Break down 32 byte WAD header.""" """Break down 32 byte WAD header."""
def __init__(self, wadhdr): def __init__(self, wad):
self.wadhdr = wadhdr self.wad = wad
self.wad_hdr_size: int self.wad_hdr_size: int
self.wad_type: int self.wad_type: str
self.wad_version: int self.wad_version: int
# Sizes # Sizes
self.wad_cert_size: int self.wad_cert_size: int
@ -50,7 +50,7 @@ class wadHeader:
self.wad_hdr_size = wadfile.read(4) self.wad_hdr_size = wadfile.read(4)
# WAD type # WAD type
wadfile.seek(0x04) wadfile.seek(0x04)
self.wad_type = wadfile.read(2) self.wad_type = str(wadfile.read(2).decode())
# WAD version # WAD version
wadfile.seek(0x06) wadfile.seek(0x06)
self.wad_version = wadfile.read(2) self.wad_version = wadfile.read(2)
@ -75,28 +75,31 @@ class wadHeader:
#==================================================================================== #====================================================================================
# Calculate file offsets from sizes # Calculate file offsets from sizes
#==================================================================================== #====================================================================================
self.wad_cert_offset + self.wad_hdr_size self.wad_cert_offset = self.wad_hdr_size
# I've never seen crl used (don't even know what it's for) but still calculating in case... # I've never seen crl used (don't even know what it's for) but still calculating in case...
self.wad_crl_offset + self.wad_cert_offset + self.wad_cert_size self.wad_crl_offset = self.wad_cert_offset + self.wad_cert_size
self.wad_tik_offset + self.wad_crl_offset + self.wad_crl_size self.wad_tik_offset = self.wad_crl_offset + self.wad_crl_size
self.wad_tmd_offset + self.wad_tik_offset + self.wad_tik_size self.wad_tmd_offset = self.wad_tik_offset + self.wad_tik_size
self.wad_app_offset + self.wad_tmd_offset + self.wad_tmd_size self.wad_app_offset = self.wad_tmd_offset + self.wad_tmd_size
# Same with meta. If private Nintendo tools calculate these then maaaaaybe we should too. # Same with meta. If private Nintendo tools calculate these then maaaaaybe we should too.
self.wad_meta_offset + self.wad_app_offset + self.wad_app_size self.wad_meta_offset = self.wad_app_offset + self.wad_app_size
def get_cert_region(self): def get_cert_region(self):
"""Returns the offset and size for the cert""" """Returns the offset and size for the cert."""
return self.wad_cert_offset, self.wad_cert_size return self.wad_cert_offset, self.wad_cert_size
def get_ticket_region(self): def get_ticket_region(self):
"""Returns the offset and size for the ticket""" """Returns the offset and size for the ticket."""
return self.wad_tik_offset, self.wad_tik_size return self.wad_tik_offset, self.wad_tik_size
def get_tmd_region(self): def get_tmd_region(self):
"""Returns the offset and size for the TMD""" """Returns the offset and size for the TMD."""
return self.wad_tmd_offset, self.wad_tmd_size return self.wad_tmd_offset, self.wad_tmd_size
def get_app_region(self): def get_app_region(self):
"""Returns the offset and size for the app""" """Returns the offset and size for the app."""
return self.wad_app_offset, self.wad_tmd_size return self.wad_app_offset, self.wad_tmd_size
def get_wad_type(self):
"""Returns the type of the WAD. This is 'Is' unless the WAD contains boot2 where it is 'ib'."""
return self.wad_type