Last active
June 15, 2016 10:45
-
-
Save ihaveamac/263a5909d3674a7aedfd69f8a93ee7fd to your computer and use it in GitHub Desktop.
convert .3ds to .cia with just an exheader xorpad (old crappy method)
This file contains hidden or 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
# Manual and DLPChild for some reason don't work. | |
# it must be a make_cia issue since I tried using makerom and hex editing and it worked fine | |
if [ ! -f "$1" ]; then | |
echo "no" | |
exit 1 | |
fi | |
rm 0.cxi ncch.header exheader.bin exefs.bin romfs.bin logo.bcma.lz plain.bin converted.cia | |
EXHXOR=$(python2 get-exh-xorpad.py "$1") | |
3dstool -xvt012f cci orig.cxi manual.cfa dlpchild.cfa "$1" | |
3dstool -xvtf cxi orig.cxi --header ncch.header --exh exheader.bin --exh-xor $EXHXOR --exefs exefs.bin --romfs romfs.bin --logo logo.bcma.lz --plain plain.bin | |
if [ -s logo.bcma.lz ]; then | |
USELOGO="--logo logo.bcma.lz" | |
fi | |
if [ -s manual.cfa ]; then | |
USEMANUAL="--content1=manual.cfa --id_1=00000001 --index_1=0001" | |
fi | |
if [ -s dlpchild.cfa ]; then | |
USEDLPCHILD="--content2=dlpchild.cfa --id_2=00000002 --index_2=0002" | |
fi | |
#cp exheader.bin exheader-old.bin | |
python2 exh-patch.py exheader.bin | |
3dstool -cvtf cxi conv.cxi --header ncch.header --exh exheader.bin --exh-xor $EXHXOR --exefs exefs.bin --romfs romfs.bin $USELOGO --plain plain.bin --not-update-exefs-hash --not-update-romfs-hash | |
make_cia --content0=conv.cxi --id_0=00000000 --index_0=0000 $USEMANUAL $USEDLPCHILD --savesize=$(python2 get-savesize.py exheader.bin) -o CONVERTED.cia |
This file contains hidden or 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
#!/usr/bin/env python2 | |
import sys, os.path | |
if len(sys.argv) != 2: | |
print("only need one argument for ExHeader") | |
sys.exit() | |
if not os.path.isfile(sys.argv[1]): | |
print("file doesn't exist") | |
sys.exit() | |
if os.path.getsize(sys.argv[1]) != 0x800: | |
print("not 2048 bytes (ExHeader size)") | |
sys.exit() | |
f = open(sys.argv[1], "r+b") | |
f.seek(0xD) | |
x = f.read(1) | |
y = ord(x) | |
print("original: "+hex(y)) | |
y = y | 2 | |
print("shifted: "+hex(y)) | |
f.seek(0xD) | |
f.write(chr(y)) | |
f.close() |
This file contains hidden or 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
#!/usr/bin/env python2 | |
from __future__ import print_function | |
import binascii, sys, os.path | |
if len(sys.argv) != 2: | |
print("only need one argument for rom") | |
sys.exit() | |
if not os.path.isfile(sys.argv[1]): | |
print("file doesn't exist") | |
sys.exit() | |
rom = open(sys.argv[1], "rb") | |
rom.seek(0x190) | |
tid = binascii.hexlify(rom.read(8)[::-1]) | |
print(tid.upper()+".Main.exheader.xorpad", end="") | |
rom.close() |
This file contains hidden or 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
#!/usr/bin/env python2 | |
from __future__ import print_function | |
import binascii, sys, os.path | |
if len(sys.argv) != 2: | |
print("only need one argument for ExHeader") | |
sys.exit() | |
if not os.path.isfile(sys.argv[1]): | |
print("file doesn't exist") | |
sys.exit() | |
exh = open(sys.argv[1], "rb") | |
exh.seek(0x1C0) | |
ss = binascii.hexlify(exh.read(8)[::-1]) | |
print(int(ss, 16)/1024, end="") | |
exh.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment