ROM Hack Dragon Quest Builders 2

LayeredFS can't check if file is broken, so if it was, then game would crash or translated lines would be broken.
So you have 3 options:
1. TitleID is wrong (probably not)
2. You have put files in wrong folder
3. Your modified files in real are not responsible for translation (f.e. dummy files)

Ok, that's good to know! Maybe i should try removing some files, and see if i can get the game to crash - this way i can at least confirm that it's working :p I'll try that tonight.
I have checked the title folder with Kip Select, and it does recognise "Dragon quest builder 2" (and it is enabled) so i'm very certain that the title ID is correct.

In regards of 2., i have copied the file structure I see when inspecting the romfs.istorage with XCI explorer, so i assume it's correct. Any idea on another method to check the file structure for the title folder?
Could it perhaps be that i need to add some stuff to exefs?

Thanks for the input!
 
"linkdata.exe inject {path_to_modified_file} {file_index} {path_to_linkdata_idx_or_bin}"

my tool injects the file at the end of LINKDATA.BIN and modifies the offset & size & compression flag in LINKDATA.IDX
only uncompressed files are suported, because compressed files have a custom header in LINKDATA.BIN,
therefore replacing files at the original position is not possible!

IDX Format:
Code:
        public struct IDX_ENTRY
        {
            public Uint64 Offset;
           public Uint64 UncompressedSize;
           public Uint64 CompressedSize;
           public Uint64 IsCompressed;
        }

BIN Format:
if uncompressed: no special extra, just filedata + padding

if compressed:
Code:
ChunkHeader:
{
4 Byte = 0x10000
4 Byte = ChunkCount
4 Byte = UncompressedSize
ChunkCount * 4 Byte = ChunkSize Table
}(Padded with 0x80)

Each chunk has another compression check, if the first 4 byte are "ChunkSize - 4", then it's compressed, otherwise it's uncompressed
or in the case of "ChunkSize - 4 == 0", it not even there and you just write 4 0x00 byte.

I only tested my tool with the demo version, but since the full version is exactly the same (even the files are almost 100% identical) it should also work with the full version.
 
"linkdata.exe inject {path_to_modified_file} {file_index} {path_to_linkdata_idx_or_bin}"

my tool injects the file at the end of LINKDATA.BIN and modifies the offset & size & compression flag in LINKDATA.IDX
only uncompressed files are suported, because compressed files have a custom header in LINKDATA.BIN,
therefore replacing files at the original position is not possible!

IDX Format:
Code:
        public struct IDX_ENTRY
        {
            public Uint64 Offset;
           public Uint64 UncompressedSize;
           public Uint64 CompressedSize;
           public Uint64 IsCompressed;
        }

BIN Format:
if uncompressed: no special extra, just filedata + padding

if compressed:
Code:
ChunkHeader:
{
4 Byte = 0x10000
4 Byte = ChunkCount
4 Byte = UncompressedSize
ChunkCount * 4 Byte = ChunkSize Table
}(Padded with 0x80)

Each chunk has another compression check, if the first 4 byte are "ChunkSize - 4", then it's compressed, otherwise it's uncompressed
or in the case of "ChunkSize - 4 == 0", it not even there and you just write 4 0x00 byte.

I only tested my tool with the demo version, but since the full version is exactly the same (even the files are almost 100% identical) it should also work with the full version.

I used your tools, and it appends the uncompressed files to the BIN and modifies the pointers in the IDX just nicely (i figured out the IDX/BIN format by looking at the files after using your tools - i even made a quickbms script that worked (based of arslan.bms) - just for learning).

I have translated some strings that i know are only there once, and i have injected the edited files them with:
Code:
  linkdata.exe inject {path_to_modified_file} {file_index} {path_to_linkdata_idx_or_bin}
And i can confirm that the contents of the files is at the end of BIN, and that the IDX points to those offsets.

But, the strings are unchanged in game :(

Can you confirm that this is the right folder structure?
Code:
010050000705E000
  └ romfs
      └ LINKDATA.BIN
      └ LINKDATA.IDX
and that i need nothing else for the mod to work?

I have found the NSP for the demo, so i'll give it a go with your tools later tonight.
It might have something to do with my switch...

Oh, and thanks for the info about the ChunkHeader - i was actually trying to figure that one out, but never got it quite working :)
 
Code:
sd:\atmosphere\titles\010050000705e000\romfs\LINKDATA.IDX
sd:\atmosphere\titles\010050000705e000\romfs\LINKDATA.BIN
or repacked:
sd:\atmosphere\titles\010050000705e000\romfs.bin
are correct and should work if layeredfs is enabled.
The demo is "010002700c646000".
 
Code:
sd:\atmosphere\titles\010050000705e000\romfs\LINKDATA.IDX
sd:\atmosphere\titles\010050000705e000\romfs\LINKDATA.BIN
or repacked:
sd:\atmosphere\titles\010050000705e000\romfs.bin
are correct and should work if layeredfs is enabled.
The demo is "010002700c646000".

I could not get it to work with the demo either.
But then i found an old 32 GB micro SD and reformatted it to fat32 and added the mods, and they both work now!

Thank you so much for the help, and sorry for being such a noob! I should have tried another SD card so much earlier :wacko:

If i release a patcher, can i use your excel.exe and/or linkdata.exe if i credit you?
Might write them myself, for practice, but depends on time :P

EDIT: nv, i made my own tools :)
 
Last edited by voltorben,
Using @Falo's tools I went ahead and dumped all the files and wrote a script to remove the junk files and translate the valid ones.
The whole process took about 8 hours but I've gotten mostly everything translated and cut the total file count down to about 3.4k.
I've attached a zip with the original text, the translations, and 2 batch scripts to convert and inject the files.

Additional notes:
  • The tools to convert/inject the files are not included in this zip, you can find those in @Falo's comment on the first page of this thread.
  • There might still be some Japanese characters here and there as my RegEx pattern might of missed a few or the translator might of spit back out a few.
  • The translations are not 100% accurate and some of them contain swears.
  • This is purely to help make the game more playable until an English release, I don't intend to update the translations.
Enjoy. ^_^
 

Attachments

Last edited by HotdogWithMustard,
  • Like
Reactions: hausa51
Using @Falo's tools I went ahead and dumped all the files and wrote a script to remove the junk files and translate the valid ones.
The whole process took about 8 hours but I've gotten mostly everything translated and cut the total file count down to about 3.4k.
I've attached a zip with the original text, the translations, and 2 batch scripts to convert and inject the files.

Additional notes:
  • The tools to convert/inject the files are not included in this zip, you can find those in @Falo's comment on the first page of this thread.
  • There might still be some Japanese characters here and there as my RegEx pattern might of missed a few or the translator might of spit back out a few.
  • The translations are not 100% accurate and some of them contain swears.
  • This is purely to help make the game more playable until an English release, I don't intend to update the translations.
Enjoy. ^_^
so, what are the steps one would go through for it? I'm assuming I need to use falo's tool to dump the files first, but that's all I know What files would I take from the dump, which order to use the bats, where to put files, etc. are a mystery to me.
 
so, what are the steps one would go through for it? I'm assuming I need to use falo's tool to dump the files first, but that's all I know What files would I take from the dump, which order to use the bats, where to put files, etc. are a mystery to me.

My zip contains the dumped files, you just need to convert them back into .bin files and inject them. First you'll need LINKDATA.BIN and LINKDATA.IDX, you can get them by extracting romfs from the base game with hactool, you can find instructions on how to do this on the forum. (Sorry, can't link you, account is still new.)

After that create a new folder and place the two LINKDATA files in that folder.
Download both zips, extract my zip to that folder then extract the following files from the other zip to that folder: excel.exe, LibBuilders.dll, and linkdata.exe.

Your file structure should now look like this:

.
│ Convert.bat
│ excel.exe
│ Inject.bat
│ LibBuilders.dll
│ LINKDATA.BIN
│ linkdata.exe
│ LINKDATA.IDX

├───Data
│ │ FILE_00000.txt
│ │ FILE_00001.txt
│ │ FILE_00002.txt
│ │ ETC, ETC...
│ │
│ └───Translated
│ FILE_00000.txt
│ FILE_00001.txt
│ FILE_00002.txt
│ ETC, ETC...

└───MenuText
FILE_00009.txt
FILE_00011.txt
FILE_00012.txt
ETC, ETC...

Once you've done that, run "Convert.bat" to convert the .txt files back into .bin files then run "Inject.bat" to inject the files back into the LINKDATA files.
Now just place the two LINKDATA files on your SD in: /<YOUR CFW>/titles/010050000705e000/romfs/
 
Last edited by HotdogWithMustard,
  • Like
Reactions: hausa51
My zip contains the dumped files, you just need to convert them back into .bin files and inject them. First you'll need LINKDATA.BIN and LINKDATA.IDX, you can get them by extracting romfs from the base game with hactool, you can find instructions on how to do this on the forum. (Sorry, can't link you, account is still new.)

After that create a new folder and place the two LINKDATA files in that folder.
Download both zips, extract my zip to that folder then extract the following files from the other zip to that folder: excel.exe, LibBuilders.dll, and linkdata.exe.

Your file structure should now look like this:



Once you've done that, run "Convert.bat" to convert the .txt files back into .bin files then run "Inject.bat" to inject the files back into the LINKDATA files.
Now just place the two LINKDATA files on your SD in: /<YOUR CFW>/titles/010050000705e000/romfs/
Awesome, thanks.

--------------------- MERGED ---------------------------

So, I was browsing through the files, and I found one whose text doesn't look like its in game dialogue. I think it may be a developer conversation or perhaps sample dialogue? It talks about looping dialogue until yes is selected and scrolling text. It also says "There is no hen.<br>It's just like an umbilical cord...<key>" which... what the heck even? It's not important, but I found it interesting.
 
Awesome, thanks.

--------------------- MERGED ---------------------------

So, I was browsing through the files, and I found one whose text doesn't look like its in game dialogue. I think it may be a developer conversation or perhaps sample dialogue? It talks about looping dialogue until yes is selected and scrolling text. It also says "There is no hen.<br>It's just like an umbilical cord...<key>" which... what the heck even? It's not important, but I found it interesting.

Not sure on that. A lot of the translations are inaccurate so could just be an extremely bad translation.
I know there are some debug lines in there, if you use a tool to search the files for the word "Debug" you'll find a couple of different interesting lines.
 
Oh goodness. I just cannot get hactool to cooperate. I guess I'll just have to wait for someone here to make the layeredfs folder and post it somewhere T_T
 
Last edited by samcambolt270,
I think I did something wrong. I'v gotten the linkdata files in the folder as directed, but when I run convert.bat, it just repeats "Dragon quest builders toolpack - excel tool v1.0.0.0" repeatedly forever
 
Using @Falo's tools I went ahead and dumped all the files and wrote a script to remove the junk files and translate the valid ones.
The whole process took about 8 hours but I've gotten mostly everything translated and cut the total file count down to about 3.4k.
I've attached a zip with the original text, the translations, and 2 batch scripts to convert and inject the files.

Additional notes:
  • The tools to convert/inject the files are not included in this zip, you can find those in @Falo's comment on the first page of this thread.
  • There might still be some Japanese characters here and there as my RegEx pattern might of missed a few or the translator might of spit back out a few.
  • The translations are not 100% accurate and some of them contain swears.
  • This is purely to help make the game more playable until an English release, I don't intend to update the translations.
Enjoy. ^_^


Hello @HotdogWithMustard and @Falo, do you know which one is the font file? I and my friends are going to translate the game into Chinese, but I cannot find the font file. Chinese language has much more characters than Japanese language, the font file has to be modified to display necessary characters. Thank you!
 
Last edited by F1234,
I think I did something wrong. I'v gotten the linkdata files in the folder as directed, but when I run convert.bat, it just repeats "Dragon quest builders toolpack - excel tool v1.0.0.0" repeatedly forever

wait until press any key. it take a few minute :)
 
Hello @HotdogWithMustard and @Falo, do you know which one is the font file? I and my friends are going to translate the game into Chinese, but I cannot find the font file. Chinese language has much more characters than Japanese language, the font file has to be modified to display necessary characters. Thank you!

I do not, sorry. :sad:

I think I did something wrong. I'v gotten the linkdata files in the folder as directed, but when I run convert.bat, it just repeats "Dragon quest builders toolpack - excel tool v1.0.0.0" repeatedly forever

That's normal. Excel tool prints that message when it is run and the batch script runs excel multiple times.
 
It also says "There is no hen.<br>It's just like an umbilical cord...<key>" which... what the heck even?
I found where that text pops up in game. It's for multiple dead characters on a shore...? I have no idea what the heck the original text could possibly have suppose to have been XD
 
The game doesn't seem to have proper word wrap support for english, you need a break every 39 characters <br>. I'd personally use break at the end of the last word that fits. If you want to improve the translation, I could help some... not great at japanese but know enough to help correct a very bad and obvious auto translation.
 

Site & Scene News

Popular threads in this forum