ROM Hack Trying to enable hidden (unavailable) language modes in NDS games

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
So, this is my first thread I post. Well, many of you guys probably know this title:

MONSTER TALE FOR NDS.
Unfortunately this game was released in USA only and since I'm not an English native I couldn't play it at all. Even if I liked it too much.
However I recently found, by opening the ROM with Tinke, that there are actually some files saying "loctext" with language marks added (EN, FR, DE, ES, IT, NL). I could deduce this game was planned to be released in Europe but got cancelled and thus those modes are now blocked in the ROM's code. On ROMHacking.net for example I found an hack of "Go go Cosmo Cops" that enables Japanese language in the game by removing the blocking code that disables it. So I wonder: how can I restore those language modes in the game?

(If you don't believe that there are those files in the ROM, use an unpacking tool to view them)

Ignore that text in red because I have translated this game manually.
 
Last edited by SDA,

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
I checked out in Tinke unfortunally all of them contain pharse "TO DO", so project had abilities to be released in europe, but noone made a translations. In other words, language files are empty... I repleced one and that's all what we can get.
mtaleIt.png
 

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
I checked out in Tinke unfortunally all of them contain pharse "TO DO", so project had abilities to be released in europe, but noone made a translations. In other words, language files are empty... I repleced one and that's all what we can get.
View attachment 197414
The files contained in the "StringTables" folder are empty...? I mean, I have to manually translate them, right?
 
  • Like
Reactions: plasturion

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
They contain some binary instructions, and minimal portion of text ("TO DO") to be valid and usable for project, and all other language files has the same minimal size, so we can say they're all empty. I guess so, but english text in this game isn't that hard, I recommend play it with some dictionary in use then... Look for example this moomin game, it has pretty graphic and music and is written in simple japanese, so you can even understand sidequests. (altought I woudl like to see and play this game in english). Almost finished back in days but I woudl like to try it again.

moomin.png

but wow, we can find Finnish look...

That's nice I'll try to mess with this set of files too...
...and yes, game is simple to edit, I managed to change some text, and it looks great!
m1.png

I have no idea where are the pointers section to update...
but I agree nothing better than look favourite game in own native language
mum1.png
mum2.png
mum3.png

and tools for dump/insert are very handy too...
moomin.jpg
 
Last edited by plasturion,

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
Go Go Cosmo Cops, Mario vs Donkey Kong and technically those Advance Wars patches rely a quirk present in those games.

Rather have the user select the language when booting up the game, starting a game or similar then they read the DS' firmware settings ( http://problemkaputt.de/gbatek.htm#dsfirmwareusersettings ) which are copied into memory.

If you want to test other games you think might have similar patches then there are some cheats around here somewhere that work for just about every game to force the firmware language (mainly for people with bad flash carts, emulators, compatibility layers and all that jazz). That said other than Japanese being blocked by those games (Japan has a real thing about people importing games so it will often throw little frustrations up, and was worse here as those did not come out in Japan in the end) I don't think we have ever discovered a hidden translation option on a DS game this way.

If you open a game and see all little language extensions or bits of file name then it could be that it never made it to those countries and there is a translation there (were have seen many such things over the decades) and it could also be just a placeholder so if and when it did get translated the programmers responsible would have an easier time ( https://www.loekalization.com/ has loads of nice stories on how things can appear if you are interested in that).
If you do discover a translation present and complete enough to use (or fix up) then how you go from here varies probably on a game by game basis.

It might be that you can just force it to read it (much like the firmware stuff above it might just have had the simple check at the start of the game disabled and you force it on).
It might be that you essentially have to translate the whole game again but with the script available to you. This being handling any font issues, any encoding worries, any scripting or text handling and so on.
It might be that you can not just force a read but can more or less copy and paste over the other region's script -- before we discovered the cheat thing to force firmware selections then people wanting translations would often rip apart the game and overwrite things with the script from the other part of the game and carry on from there. You might even be able to do a relinking hack
 

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
Do you mean dots between letters? Right, manual editing might be painful.
File has in order:
- header 8 bytes,
- filesize-(something) 4byte,
- pointers counter, 4byte
- pointers table, 4byte * counter
- strings with 2bytes length for single character instead of 1 (that's why are spaces with every single character)
I made some tools for extracting text and generating binaryfile (stringtable) if you interested.
u2_34_5266.png
 
Last edited by plasturion,

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
I made some tools for extracting text and generating binaryfile (stringtable) if you interested.
Oh, thanks for the tools. But what about the graphics... I found a Russian translation of the game by Chief-Net, do you think it is a good idea to ask them for helping in graphics edit?

I'm not experienced at all in NDS image editing.

EDIT: I tried to translate the credits and in the outorg.txt file there was nothing of text.
 
Last edited by SDA,

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
You're welcome. As for me I use Tinke for export/ import graphics. It's really decent for that. For edit you can use any external graphic program(i use paint shop pro and photoshop), but you can ask them for help as well.

There's no text in files with "lookup" prefix. I suggest leave them unchanged that kind of files has different purpose. My tools works only with the files with "loctext" prefix. I tried on loctext_Credits_ENG_US and it ripped correctly. outOrg.txt created.
 
Last edited by plasturion,

FAST6191

Techromancer
Editorial Team
Joined
Nov 21, 2005
Messages
36,798
Trophies
3
XP
28,321
Country
United Kingdom
Oh, thanks for the tools. But what about the graphics... I found a Russian translation of the game by Chief-Net, do you think it is a good idea to ask them for helping in graphics edit?

I'm not experienced at all in NDS image editing.

EDIT: I tried to translate the credits and in the outorg.txt file there was nothing of text.

You can try. If you have a translation available though then it is practically a Rosetta stone for your would be translation/fiddling though -- whatever is changed in the translation likely is what you want to be looking at for yours. Sometimes they might edit more than is necessary but it will not be less, at least outside of some very odd things or if they did an incomplete translation.
 

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
I managed to translate the credits successfully (except that when I press "à" it comes out in the game as "Ã" used in Portuguese language). When I tried to do the same on the intro cutscene, I screwed the game completely. Well, I can't hack any DS game without any physical help, because I fail at compression and uncompression of graphics and text.

...but it is easier than I thought it to be. I would like to post screenshots but it doesn't work for me.
 
Last edited by SDA,

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
Well it seem that your input text file was encoded in utf-8 wich is not supported. I guess you paste translated text to notepad so that always convert to utf-8. So if you plan to translate to Portuguese language first open new tab in notepad and choose character set-> west-european -> ISO 8859-1, paste text and save it. It should work with this text encoding.

Really it messed up cut-scene? it's getting interesting... I look for it... something wrong with pointers, It seems I have a bug somewhere so I'll try to fix tools now. Anyway thanks for telling me, i didn't test these tools that much. Please wait... (found it) I didn't know there's line separator 0x0A in bin files, so i have to think about a workaround because it colide now with the new line = new pointer idea.(maybe some special code separator, let's use '@')

I updated tools, however now there's limitation. In text actually can't appear this "@" character. :-) I hope there's no appearance. (even if, nothing serious happen, only jump to a new line)
 

Attachments

  • MTools.7z
    10.7 KB · Views: 169
Last edited by plasturion,

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
Well it seem that your input text file was encoded in utf-8 wich is not supported. I guess you paste translated text to notepad so that always convert to utf-8. So if you plan to translate to Portuguese language first open new tab in notepad and choose character set-> west-european -> ISO 8859-1, paste text and save it. It should work with this text encoding.

Really it messed up cut-scene? it's getting interesting... I look for it... something wrong with pointers, It seems I have a bug somewhere so I'll try to fix tools now. Anyway thanks for telling me, i didn't test these tools that much. Please wait... (found it) I didn't know there's line separator 0x0A in bin files, so i have to think about a workaround because it colide now with the new line = new pointer idea.(maybe some special code separator, let's use '@')

I updated tools, however now there's limitation. In text actually can't appear this character. :] I hope there's no appearance.
First, I do not paste translated text to notepad: I type it directly in the file window. Second, I actually did what you said by changing in 8859-1, however I'm not planning to translate the game in Portuguese (there's a PT-BR patch on the net already) but in Italian. Last... yes, the : character actually appears in the game. When Chomp acquires a new ability it says "New Ability Learned:" or something like that. By the way this character appears in-game.
 

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
I see, ISO 8859-1 has coverage for both languages so there's no difference. Here you can check.
Don't get me wrong I tried to guess because I had the same issue (with the same letter) when it was in utf-8 encoded. And when I generated file with correct encoding, everything was ok.
the best way to check your encoding is open inT.txt and also out.bin file in hexeditor and compare hex values if there are the same as the one in ISO table.
Also you can compare coverage in font file using Tinke. They're all should be supported but maybe I'm wrong.
You see, I'm not so good programmer, I believe there are better one here and also i just gave an example of tool how it can be useful, there's a source code so you can modify as you want.
Also about new line separator is "@" not ":". Sorry for misunderstand, but you also can modify it very simple, I guess own tools are best. Even if "@" present in text, result will be fair ok, only jump to a new line.
 
Last edited by plasturion,

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
Until now, I have translated a lot of things in the game: title screen, file selection screen, some dialogs, tutorials, pause menu, subscreens and many more.

But still, how do I get to edit the "Chomp Level-up!" graphic?
 
Last edited by SDA,

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
Graphic files are compressed in RLE algorithm, to decompress you can find tools here
It looks that binary file has to be splited first. I see that magic number (first byte of RLE header '0' starts in position 0x9C), so everything what is before we save as a "header" (we need it later to build this file again), and rest as a RLE file. (i guess a new dedicated tool for this operation can be useful again, so I leave it for you as a homework), then we decompress RLE. and replace in Tinke. First we load palette with the same filename (it has a long header too so we set start byte 12 in tinke) and then we open replaced data image as a tile. Now we can extract graphic, modify, import and reverse all the process.
chomp.png
 

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
Ah, the tools made by CUE. Since 2010 everyone uses his tools to translate NDS games. For example: a group called "Random Stones" made a translation of Lufia: Curse of the Sinistrals in my language, using Tinke and CUE's extractor/inserter.

But wait... is the obj_fe_profile_pet_form_03.bin the file I have to decompress?
 
Last edited by SDA,
  • Like
Reactions: plasturion

plasturion

temporary hermit
Member
Joined
Aug 17, 2012
Messages
1,211
Trophies
2
Location
Tree
XP
3,497
Country
Poland
Well that's only example, I don't know which the file has "level up" graphic. but if you open file and find "RLE" word inside, yes, it's the one that need to be decompressed. Funny thing anyway because how much they saved using so big header knowing RLE is very unefficient, a 1%? It's better keep raw data.
 

SDA

Shame Yourself
OP
Member
Joined
Feb 19, 2020
Messages
639
Trophies
0
Age
19
Location
Parete, Italy
XP
2,170
Country
Italy
Funny thing anyway because how much they saved using so big header knowing RLE is very unefficient, a 1%? It's better keep raw data.
This is why I'm going to ask the Chief-Net group for helping. After all, everyone knows that modern games such as DS, PSP and mid-2000's consoles aren't hackable by one self only. It has to be a group, or nothing will ever come out from working on the ROM files.
 

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,454
Country
Canada
After all, everyone knows that modern games such as DS, PSP and mid-2000's consoles aren't hackable by one self only. It has to be a group, or nothing will ever come out from working on the ROM files.
Is that sarcasm..? You don't *need* a group. Or at the very least, it's much easier to get a group going after you've got a substantial amount of the work done and have specific, solvable problems.

(People show up on occasion saying, "I want to get a group together to translate this game! I have no language skills or technical ability, but I'm good at editing and at coordinating people!" And that never accomplishes anything.)
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: yawn