
SD card reader (preferred), or a way to use wireless file transfer; Installing Checkpoint. Download Checkpoint from the link above. For cia installation, transfer the cia file to the SD card and install it with a cia installer such as FBI. For Rosalina-based Homebrew Launcher, transfer the 3dsx file to /3ds. Now that CDN download is no more, what would be the most efficient way to convert.3ds games to.cia? Any way that could be scripted (say bash or powershell) would be alright for me at least. The reason I ask is that there are 1TB+ torrents around filled with.3ds games, but I haven't found any with.cia games (only one from 2016). .Note - JKSM has a homebrew app available, but The.cia is recommended because the homebrew app may not work with some games. To install the homebrew app, merge the 3ds/JKSM folder containing the JKSM.3dsx, JKSM.smdh, and JKSM.xml file with the 3ds folder on the SD card and use the homebrew launcher to open it. First release - 3dsx and CIA (01 January 2017) - Happy New Year. Installation In the zip there are the Cia file and a folder with the 3dsx and the smdh files inside, to be used with a homebrew launcher. All the resources are included in the executable using romfs. The game creates a xump subfolder inside the 3ds folder if doesn't exist.

convert .3ds to .cia with just an exheader xorpad (old crappy method)

3ds-to-cia-quick.sh
# 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 |
exh-patch.py
#!/usr/bin/env python2 |
importsys, os.path |
iflen(sys.argv) !=2: |
print('only need one argument for ExHeader') |
sys.exit() |
ifnotos.path.isfile(sys.argv[1]): |
print('file doesn't exist') |
sys.exit() |
ifos.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() |

3ds To Cia Converter File Doesn't Exist Automatically
get-exh-xorpad.py
#!/usr/bin/env python2 |
from __future__ importprint_function |
importbinascii, sys, os.path |
iflen(sys.argv) !=2: |
print('only need one argument for rom') |
sys.exit() |
ifnotos.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() |
get-savesize.py
#!/usr/bin/env python2 |
from __future__ importprint_function |
importbinascii, sys, os.path |
iflen(sys.argv) !=2: |
print('only need one argument for ExHeader') |
sys.exit() |
ifnotos.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() |
3ds To Cia Converter File Doesn T Exist
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment