Skip to content

Instantly share code, notes, and snippets.

@cm-360
Created October 15, 2022 17:27
Show Gist options
  • Save cm-360/696d84f674149a6caacb0cf78c894635 to your computer and use it in GitHub Desktop.
Save cm-360/696d84f674149a6caacb0cf78c894635 to your computer and use it in GitHub Desktop.
Python script to verify .tga meta files for Wii U apps
#!//bin/env python
# Orginally created by V10lator
# https://gbatemp.net/threads/450997/post-9951820
# Should be compatible with Python 3.7.4+
import struct
import os
try:
import msvcrt as m
except:
import getch as m
def wait():
m.getch()
def readByte(file):
return struct.unpack("B", file.read(1))[0]
def readu16le(file):
return struct.unpack("<H", file.read(2))[0]
def readu32le(file):
return struct.unpack("<I", file.read(4))[0]
tgas = ["iconTex.tga","bootLogoTex.tga","bootDrcTex.tga","bootTvTex.tga"]
dimensions = [[128,128,32],[170,42,32],[854,480,24],[1280,720,24]]
for i in range(len(tgas)):
tga = tgas[i]
dimension = dimensions[i]
if os.path.exists(tga):
with open(tga,"rb+") as f:
header = readu32le(f)
if header != 0x00020000:
print (tga + "is compressed. it cant be compressed!")
break
f.seek(12)
actDimensions = [readu16le(f),readu16le(f),readByte(f)]
hasHadBadDiment = False
for j in range(len(actDimensions)):
if j == 0:
type = "width"
elif j == 1:
type = "height"
else:
type = "depth"
diment = dimension[j]
actDiment = actDimensions[j]
if diment != actDiment:
if not hasHadBadDiment:
hasHadBadDiment = True
print ("dimensions are not valid for: " + tga)
print (type + " is: " + str(actDiment) + " should be: " + str(diment))
if hasHadBadDiment:
break
f.seek(1,1)
f.seek(actDimensions[0]*actDimensions[1]*int(actDimensions[2]/8),1)
f.write(b"\x00\x00\x00\x00\x00\x00\x00\x00TRUEVISION-XFILE\x2E\x00")
else:
print (tga + " could not be found!")
print ("All TGA's verified!")
print ("press any key to exit...")
#todo verifiy bootmovie.h264
wait()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment