Created
October 15, 2022 17:27
-
-
Save cm-360/696d84f674149a6caacb0cf78c894635 to your computer and use it in GitHub Desktop.
Python script to verify .tga meta files for Wii U apps
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!//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