Rebuilding the Japanese DLC - SilentHeII/Fire-Emblem-Fates-Festival-of-Bonds-Translation-Project GitHub Wiki

Overview

I'm going to assume you already know how to take the DLC.cia and get the NCCH containers, etc. But for the sake of completeness, I'm going to show you my method.

What you will need:

  1. Get the latest versions of ctrtool and makerom
  2. Fire Emblem Archive Tool Is this 7 year old tool still relevant?
  3. RomFS Builder Again, are there better options now?

Extraction

  1. I extracted the FE_FATES_uncensored_v1.1.cia using the command:
ctrtool -p --contents=DLC FE_FATES_DLC_uncensored_v1.1.cia

This generates a bunch of NCCH archives labeled DLC.00XX.000000YY. There's also a lot of junk DLC archives we unfortunately need or else the DLC does not install correctly on emulators (if you exclude the junk DLC, you can still install it perfectly on real hardware).

  1. I then used the following command to extract the DLC romfs.bin:
ctrtool -p --romfs=romfs.bin DLC.00XX.000000YY

and then this command to extract the contents of the romfs.bin into a folder:

ctrtool --romfsdir=FolderName romfs.bin
  1. Use FEAT to decompress/recompress the text.

Rebuilding NCCH container

  1. Use RomFS Builder to create a new romfs.bin from FolderName.
  2. Copy and paste this into notepad and save it as DLC.rsf:
BasicInfo:
  Title                   : Fire Emblem if
  CompanyCode             : 00
  ProductCode             : CTR-M-BFXJ-00
  ContentType             : Application # Application / SystemUpdate / Manual / Child / Trial

TitleInfo:
  UniqueId                : 0x012dc
  Category                : AddOnContents # Application / SystemApplication / Applet / Firmware / Base / DlpChild / Demo / Contents / SystemContents / SharedContents / AddOnContents / Patch / AutoUpdateContents
  1. Use the following command in cmd to rebuild a new DLC NCCH container:
makerom -f ncch -target t -rsf DLC.rsf -romfs romfs.bin -o DLC.00XX.000000YY

Editing the descriptions in the DLC menu

  1. Extract the ExeFS into ContentInfoExefs.bin using this command:
ctrtool --exefs=ContentInfoExefs.bin DLC.0000.0000006b
  1. Extract the contents of ContentInfoExefs.bin into a folder with:
ctrtool -t exefs --exefsdir=ContentInfoExefs ContentInfoExefs.bin
  1. Drag the icon.bin into the main project directory with the other tools.
  2. Extract the RomFS into ContentInfoRomfs.bin using this command:
ctrtool --romfs=ContentInfoRomfs.bin DLC.0000.0000006b
  1. Extract the contents of ContentInfoRomfs.bin into a folder with:
ctrtool --romfsdir=ContentInfoRomfs ContentInfoRomfs.bin
  1. You can now edit the titles of the DLC via Hex editing in ContentInfoArchive_JPN_ja.bin.
  2. In order to rebuild the NCCH for the DLC menu, use RomFS Builder to make a new ContentInfoRomfs.bin from the ContentInfoFomfs folder.
  3. Use the following command to create the new NCCH container:
makerom -f ncch -target t -rsf DLC.rsf -icon icon.bin -romfs ContentInfoRomfs.bin -o DLC.0000.0000006b

Let's make a DLC.cia

  1. Paste this into a separate notepad file and call it rom.rsf:
Option:
  MediaFootPadding: true
  EnableCrypt: false
SystemControlInfo:
  SaveDataSize: $(SaveSize)K
  1. Paste this command into cmd to make a whole new DLC.cia:
makerom -f cia -rsf rom.rsf -o FE_Fates_Uncensored_NEW.cia -ckeyid 0 -major 0 -minor 17 -micro 0 -DSaveSize=0 -dlc -i DLC.0000.0000006b:0x0000:0x0000006b -i DLC.0001.00000017:0x0001:0x00000017 -i DLC.0002.00000018:0x0002:0x00000018 -i DLC.0003.00000019:0x0003:0x00000019 -i DLC.0004.0000001a:0x0004:0x0000001a -i DLC.0005.00000005:0x0005:0x00000005 -i DLC.0006.00000006:0x0006:0x00000006 -i DLC.0007.00000007:0x0007:0x00000007 -i DLC.0008.00000025:0x0008:0x00000025 -i DLC.0009.0000001c:0x0009:0x0000001c -i DLC.000a.0000001d:0x000a:0x0000001d -i DLC.000b.00000042:0x000b:0x00000042 -i DLC.000c.0000001f:0x000c:0x0000001f -i DLC.000d.00000020:0x000d:0x00000020 -i DLC.000e.00000029:0x000e:0x00000029 -i DLC.000f.0000003f:0x000f:0x0000003f -i DLC.0010.00000040:0x0010:0x00000040 -i DLC.0011.0000002c:0x0011:0x0000002c -i DLC.0012.0000002d:0x0012:0x0000002d -i DLC.0013.0000002e:0x0013:0x0000002e -i DLC.0014.0000002f:0x0014:0x0000002f -i DLC.0015.00000030:0x0015:0x00000030 -i DLC.0016.00000031:0x0016:0x00000031 -i DLC.0017.00000032:0x0017:0x00000032 -i DLC.0018.00000033:0x0018:0x00000033 -i DLC.0019.00000034:0x0019:0x00000034 -i DLC.001a.00000035:0x001a:0x00000035 -i DLC.001b.00000036:0x001b:0x00000036 -i DLC.001c.00000037:0x001c:0x00000037 -i DLC.001d.00000038:0x001d:0x00000038 -i DLC.001e.00000039:0x001e:0x00000039 -i DLC.001f.0000003a:0x001f:0x0000003a -i DLC.0020.00000043:0x0020:0x00000043 -i DLC.0021.00000044:0x0021:0x00000044 -i DLC.0022.00000045:0x0022:0x00000045 -i DLC.0023.00000046:0x0023:0x00000046 -i DLC.0024.00000047:0x0024:0x00000047 -i DLC.0025.00000048:0x0025:0x00000048 -i DLC.0026.00000049:0x0026:0x00000049 -i DLC.0027.0000004a:0x0027:0x0000004a -i DLC.0028.00000057:0x0028:0x00000057 -i DLC.0029.0000004c:0x0029:0x0000004c -i DLC.002a.0000004d:0x002a:0x0000004d -i DLC.002b.0000004e:0x002b:0x0000004e -i DLC.002c.0000004f:0x002c:0x0000004f -i DLC.002d.00000050:0x002d:0x00000050 -i DLC.002e.00000051:0x002e:0x00000051 -i DLC.002f.00000052:0x002f:0x00000052 -i DLC.0030.00000053:0x0030:0x00000053 -i DLC.0031.0000005e:0x0031:0x0000005e -i DLC.0032.0000005f:0x0032:0x0000005f -i DLC.0033.0000005a:0x0033:0x0000005a -i DLC.0034.00000060:0x0034:0x00000060 -i DLC.0035.00000061:0x0035:0x00000061 -i DLC.0036.00000063:0x0036:0x00000063 -i DLC.0037.0000006c:0x0037:0x0000006c -i DLC.0038.00000065:0x0038:0x00000065 -i DLC.0039.00000066:0x0039:0x00000066 -i DLC.003a.00000067:0x003a:0x00000067 -i DLC.003b.0000006d:0x003b:0x0000006d -i DLC.003c.0000006e:0x003c:0x0000006e -i DLC.003d.0000006f:0x003d:0x0000006f

Proof of concept

You've now reminded me how utterly annoying getting DLC working on emulator was. Thank you for that. image