ROM Hack Question How to translate Super Mario Odyssey

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
I'm newbie on this, I've been searching all day, and I've only been able to extract the xci file.
I tryed:
"NCA-NSP-XCI_TO_LayeredFS.bat";
Errors:
Failed to convert E:\Translate\NCA-NSP-XCI-to-LayeredFS\Decrypted_NCA\Decrypted.nca to UTF-16!
Failed to convert E:\Translate\NCA-NSP-XCI-to-LayeredFS\Extracted_NCA\romfs to UTF-16!
I tried Extract Decrypted NCA, Extract Ecrypted NCA, Info Decrypted NCA, Info Ecrypted NCA, Extract DLC NCA, Decrypt NCA (Plaintext), but none work​
"nstool.exe";
I tried --listfs, --titlekey and it also did not work
And other, but only those I assumed they would be the correct one.

My folder with extracted files:
1792-------01000000000108000000000000000003.cert
704--------01000000000108000000000000000003.tik
5539168256-2f0a2dbaa9bb3f9b6812cac649e899be.nca
1120768----41a1b3d10de2145e9c5a8b88c826ffc2.nca
1120768----52e0c0ab74b00ee5a9db3955d62edb49.nca
3584-------5cd45d37db132f12bcb8f4519f4f8165.cnmt.nca
211968-----8a249b9ce39cc17a47ebc187066c3075.nca
5120-------a6a4a038d573eb9dc15b703ed8931eb7.cnmt.nca
107272192--e2da8ec4b358da9663999851cdc366a4.nca
204800-----eeb2308f2b80d57618b3342d5541a75e.nca
4163584----fbfb96c303bc691b9a76c33b51c58bf0.nca
70500352---ff2c421da0d97497d55433e9a230f066.nca

I don't know what's next step. Help me!

I want translate to pt_br (Brazilian Portuguese)

Original file "0277 - Super Mario Odyssey (World) (En,Ja,Fr,De,Es,It,Nl,Zh,Ru) (Rev 1) [Trimmed].xci"

Thanks
 

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
How did you get tik file in XCI? :ninja:
Take biggest NCA and use Extract Decrypted NCA

The .tik file was generated automatically by "Decrypt-XCI-v2.1.bat" and "hactool.exe" on mode extract and not convert to romfs.bin. But I do not know if it's the correct one. I'm a very NEWBIEEEEE on this. Forgive me for simple questions.

I tried it by two methods, the first one by the romfs.bin file and the second by the biggest .nca file. The two always make errors. Look at the attached files.
 

Attachments

  • romfs.bin.png
    romfs.bin.png
    29.5 KB · Views: 361
  • romfs folder.png
    romfs folder.png
    32 KB · Views: 403

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
You don't have Switch keys.

Thanks so very much masagrator. For others I used these apps:
Drag an drop XCI (use hactool) -> to generate .nca
XCI_NCA_NSP_v2 -> to extract files of .nca (masagrator help) generated files .msbt
SARCExtract -> to uncompress .msbt files to .szs archives
 

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
I came across another problem, accentuation (ç, õ, ã and etc.) displays "?" instead of the character itself. There is some standard mapping of these characters, or some support sheet...
 

Attachments

  • 2019032501081300-8AEDFF741E2D23FBED39474178692DAF.jpg
    2019032501081300-8AEDFF741E2D23FBED39474178692DAF.jpg
    86.1 KB · Views: 484

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,034
Country
Poland
You need to find by yourself font and tool to open it.
For example Zelda BotW uses *.bffnt format and it can be unpacked with 3dskit.

And one protip: better to work on updated game. You are probably working on first version of game without update.
 
Last edited by masagrator,
  • Like
Reactions: ApoloPE

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
You need to find by yourself font and tool to open it.
For example Zelda BotW uses *.bffnt format and it can be unpacked with 3dskit.

And one protip: better to work on updated game. You are probably working on first version of game without update.

I updated the game on start play. Thanks for this help.

I finded .bffnt files and extracted maps of characters, after changing and mapped all, I not repack files on new .bffnt. The 3DSkit not support this function by for now. The app return message "UnsupportedFormatError: 3DSkit is currently unable to pack this format (101)" Is there anyone app else who can accomplish this task?

After quick search i finded 3dstools but not support this compression or other aspect of .bffnt files of the game. All post where found referrerthese tools.

On extract :
--------E:\Translate\Mario\LayoutData\FontData\MessageFont38.bffnt--------
No compression
BFFNT file found
Extracting...
Extracted
-------------------------------------------------------------------------------------

Generate
MessageFont38_meta.json
MessageFont38_sheet0.png
MessageFont38_sheet1.png

Attached in the post the files I did change. I changed the extension to txt because the site does not allow json files
 

Attachments

  • MessageFont38_sheet0.png
    MessageFont38_sheet0.png
    308.3 KB · Views: 366
  • MessageFont38_sheet1.png
    MessageFont38_sheet1.png
    237.4 KB · Views: 431
  • MessageFont38_meta.json.txt
    102.3 KB · Views: 214

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,034
Country
Poland
github shows that 3dskit doesn't support packing bffnt. My bad. I didn't looked closely.

And you can't use different tool to pack bffnt unpacked by different tool, because this files are generated by app, so they're compatible only with app that you have used to unpack.

And maybe try Kuriimu toolset to check if it's working (Kukkii), but it was not working with Zelda BotW, so I guess will not work with Mario.
 
Last edited by masagrator,

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
github shows that 3dskit doesn't support packing bffnt. My bad. I didn't looked closely.

And you can't use different tool to pack bffnt unpacked by different tool, because this files are generated by app, so they're compatible only with app that you have used to unpack.

And maybe try Kuriimu toolset to check if it's working (Kukkii), but it was not working with Zelda BotW, so I guess will not work with Mario.

No problem, Kukkii really don't work with .bffnt files of Mario, I'll search later with more time. Thanks a lot for your help, it was very important for me to get here.
 

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,034
Country
Poland
Heh, i have tried to figure it out how to do it. BFFNT in switch games is just an archive for charset (CMAP) and *.bntx file which is another archive for *.bftex (BFRES FTEX) files.
Forget with this method about easy editing charset (but it's not impossible with hex editor - search for CMAP in *.bffnt).
From BFFNT you can export BNTX and BFTEXs + import BFTEXs to BNTX with Switch Toolbox.
https://github.com/KillzXGaming/Switch-Toolbox

bftex files are supported by Wexos toolbox which is way more advanced in terms of importing DDS and others, but cannot be opened without opening some archive first.
http://wiki.tockdom.com/wiki/Wexos's_Toolbox

So I was thinking if it's possible to find archive that can be opened by this tool (f.e. szs file),
then import bftex file in place of some texture,
next export imported texture to some more compatible file like DDS or PNG,
edit characters that you want,
import it again to archive with using the same settings as original
and export modified bftex.
Then bftex import to bntx file with Switch-Toolbox
and bntx file swap by hex editor with bffnt.
Size should be exactly the same.

Switch Toolbox doesn't handle correctly importing from other files - arrays are messed up, but I don't know if it's something that game will not handle.

Why everything must be so complicated... If people would not be insisting on cracking in 100% file format, but just allowing for swapping bytes and importing data 1:1 in size, then some bffnt tool could be done a long time ago.

Maybe I will give it a try later... When I finish translation of Octopath or 3dskit will save us all.
 
Last edited by masagrator,

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
Heh, i have tried to figure it out how to do it. BFFNT in switch games is just an archive for charset (CMAP) and *.bntx file which is another archive for *.bftex (BFRES FTEX) files.
Forget with this method about easy editing charset (but it's not impossible with hex editor - search for CMAP in *.bffnt).
From BFFNT you can export BNTX and BFTEXs + import BFTEXs to BNTX with Switch Toolbox.
https://github.com/KillzXGaming/Switch-Toolbox

bftex files are supported by Wexos toolbox which is way more advanced in terms of importing DDS and others, but cannot be opened without opening some archive first.
http://wiki.tockdom.com/wiki/Wexos's_Toolbox

So I was thinking if it's possible to find archive that can be opened by this tool (f.e. szs file),
then import bftex file in place of some texture,
next export imported texture to some more compatible file like DDS or PNG,
edit characters that you want,
import it again to archive with using the same settings as original
and export modified bftex.
Then bftex import to bntx file with Switch-Toolbox
and bntx file swap by hex editor with bffnt.
Size should be exactly the same.

Switch Toolbox doesn't handle correctly importing from other files - arrays are messed up, but I don't know if it's something that game will not handle.

Why everything must be so complicated... If people would not be insisting on cracking in 100% file format, but just allowing for swapping bytes and importing data 1:1 in size, then some bffnt tool could be done a long time ago.

Maybe I will give it a try later... When I finish translation of Octopath or 3dskit will save us all.

I even tried, but it did not work ^^

I'm a veryyyyy newbie :D

However i'm developer and know how hard is it.

Thanks for the help there in github.

I make web apps, and this I have domain off JS/CSS/PHP/HTML5/XML/JSON... but when I think how hard it should be to work with an undocumented file format... Other languages it’s not my cup of tea ^^

What language are you translating this game? Octopath.

If you wish I can make a web page for you project. I made it to Mario Odyssey.
http://www.marioodysseybr.tk/

Where possible for me, I am willing to help you.

I upload szs file if you want to try, and also uploaded the changed png character file.
 

Attachments

  • LayoutData.zip
    1.3 MB · Views: 192

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,034
Country
Poland
Yeah, it looks like is scanning bftex while importing and app crashes because of conflict at 0x0. And even after editing first bytes it shows is invalid. Because this app is intended for WiiU, not Switch... :(
And it didn't need any file. Just New->BFRES, click on Textures with right click -> Import.

I'm trying to check BNTX Editor and BNTX Injector.
Edit: Both can't export if there is more than one array layer.

I've wrote a issue to Switch-Toolbox, because it doesn't support correctly BNTX files with more than one array layer.

Edit2: Okay, maybe I've managed to do it. But i don't have time right now to check it.
I added font probably for cutscenes captions. It's needed to pack it to sbfarc (if it matters, I unpacked it from Eu). Modified L and O on fast (Open your eyes, Link).
upload_2019-4-2_10-12-57.png


Hah, I forgot you are doing Mario, font is from Zelda.
 
Last edited by masagrator,

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,034
Country
Poland
Confirmed - my method is working.
But it was font for Menu, not Captions. :D
2019040216552900-F1C11A22FAEE3B82F21B330E1B786A39.jpg


What i needed:
- Switch-Toolbox
- QuickBMS with Splatoon_SARC.bms script
- BotW Unpacker
- Image Editor (for this case I Used Paint.NET)
- Hex Editor (I've used HxD)

Build SARC in BotW Unpacker makes Zelda crash (even with good paddings). Don't use it.
Karameru messes up sarc file signatures. Don't use it.

Three reminders:
- BRTD string is not the beginning of one layer. It's the beginning for all layers, so it will be only one in whole file. _RLT the same, but for end
- 3dskit can be used to export PNGs, but only if extracted image is not transparent (for this particular font it was, so i couldn't use it - but maybe it's just needed black background? :v)
- This method is for first array layer. But next layers are one after another and are exactly the same size, so they can be easily found in hex editor.

How I did it (it's too disgusting to call it a tutorial):

First decode Font_EU.sbfarc to Font_EU.bfarc with BotW Unpacker using "Yaz0 decode" (it should work with every Switch game using Yaz0 and SARC archive, so Odyssey should work too)
Rename it to Font_EU.sarc for correct file extension.
Then use Unpack SARC, choose Font_EU.sarc and unpack it to separate folder. There should be *.bffnt file(s)

*.bffnt file open with Switch-Toolbox.
Right click on file with this icon
upload_2019-4-2_17-4-48.png


And click Export. Create new BNTX file (for this tutorial it will be NormalS.bntx).

Then right click image from lower level, export to PNG.
Create copy of NormalS.bntx, edit your PNG (i don't know how to know margins, etc.) and Save (not "Save As") with untouched settings (remember to flip and/or rotate to the same position that was at the beginning!).
Now open with Switch-Toolbox your NormalS.bntx, click on the lower level image, click Replace
upload_2019-4-2_17-13-6.png


Choose your edited PNG, change "Image Dimension" to Dim2DArray and "OK".
upload_2019-4-2_17-14-22.png


Right click on higher level image, Export and save new BNTX file.

Now we need to open our new BNTX file and BFFNT file in hex editor.
Copy whole block from 0x1000 to _RLT string (string excluded) in new BNTX file
Do it by finding _RLT string, highlight byte before it, Edit->Select Block, paste to "Start-offset" 1000.
Click OK.
Go back again to Select Block and copy Length value. This is a size of your texture in hex.
Close "Select block" window.

Go to 0x2000 in BFFNT file, highlight it, go to Select Block, paste your copied value to "Length" (first you need to check it) and click OK.
Copy your highlighted data from new BNTX file to BFFNT file. Save it.
If saved file is the same size as your backup (it will be created by HxD as "NormalS.bffnt.bak"), then it should be good.
Now copy your new BFFNT to separate folder, where will be nothing except this file and rename bffnt to original filename if needed.

Go to unpacked QuickBMS archive, open "reimport.bat", choose Splatoon_sarc.bms, next choose NormalS.sarc, next go to folder with your modified BFFNT (don't click on anything except folders) and click save.
Now your Font_EU.sarc is modified.
Go to BotW Unpacker, choose "Switch" next to "Build SARC", click "Yaz0 encode" and choose Font_EU.sarc. It's very slow, so wait. It will create Font_EU.ssarc, that you can rename to Font_EU.sbfarc

Swapping should be easy to done with python script.
BNTX looks that: starting from 0x1000 is one layer of some length. Next layer is just after that layer. So if texture has length 100000, then it starts at 0x1000 and ends at 0x100FFF, next layer start at 0x101000 and ends at 0x200FFF, etc.
You can copy next layers to modified BNTX file, where is only one layer and swap with existing texture in the same positions.
 
Last edited by masagrator,

ApoloPE

Member
OP
Newcomer
Joined
Mar 24, 2019
Messages
8
Trophies
0
Age
35
XP
104
Country
Brazil
Confirmed - my method is working.
But it was font for Menu, not Captions. :D
View attachment 162658


What i needed:
- Switch-Toolbox
- QuickBMS with Splatoon_SARC.bms script
- BotW Unpacker
- Image Editor (for this case I Used Paint.NET)
- Hex Editor (I've used HxD)

Build SARC in BotW Unpacker makes Zelda crash (even with good paddings). Don't use it.
Karameru messes up sarc file signatures. Don't use it.

Three reminders:
- BRTD string is not the beginning of one layer. It's the beginning for all layers, so it will be only one in whole file. _RLT the same, but for end
- 3dskit can be used to export PNGs, but only if extracted image is not transparent (for this particular font it was, so i couldn't use it - but maybe it's just needed black background? :v)
- This method is for first array layer. But next layers are one after another and are exactly the same size, so they can be easily found in hex editor.

How I did it (it's too disgusting to call it a tutorial):

First decode Font_EU.sbfarc to Font_EU.bfarc with BotW Unpacker using "Yaz0 decode" (it should work with every Switch game using Yaz0 and SARC archive, so Odyssey should work too)
Rename it to Font_EU.sarc for correct file extension.
Then use Unpack SARC, choose Font_EU.sarc and unpack it to separate folder. There should be *.bffnt file(s)

*.bffnt file open with Switch-Toolbox.
Right click on file with this icon
View attachment 162659

And click Export. Create new BNTX file (for this tutorial it will be NormalS.bntx).

Then right click image from lower level, export to PNG.
Create copy of NormalS.bntx, edit your PNG (i don't know how to know margins, etc.) and Save (not "Save As") with untouched settings (remember to flip and/or rotate to the same position that was at the beginning!).
Now open with Switch-Toolbox your NormalS.bntx, click on the lower level image, click Replace
View attachment 162661

Choose your edited PNG, change "Image Dimension" to Dim2DArray and "OK".
View attachment 162662

Right click on higher level image, Export and save new BNTX file.

Now we need to open our new BNTX file and BFFNT file in hex editor.
Copy whole block from 0x1000 to _RLT string (string excluded) in new BNTX file
Do it by finding _RLT string, highlight byte before it, Edit->Select Block, paste to "Start-offset" 1000.
Click OK.
Go back again to Select Block and copy Length value. This is a size of your texture in hex.
Close "Select block" window.

Go to 0x2000 in BFFNT file, highlight it, go to Select Block, paste your copied value to "Length" (first you need to check it) and click OK.
Copy your highlighted data from new BNTX file to BFFNT file. Save it.
If saved file is the same size as your backup (it will be created by HxD as "NormalS.bffnt.bak"), then it should be good.
Now copy your new BFFNT to separate folder, where will be nothing except this file and rename bffnt to original filename if needed.

Go to unpacked QuickBMS archive, open "reimport.bat", choose Splatoon_sarc.bms, next choose NormalS.sarc, next go to folder with your modified BFFNT (don't click on anything except folders) and click save.
Now your Font_EU.sarc is modified.
Go to BotW Unpacker, choose "Switch" next to "Build SARC", click "Yaz0 encode" and choose Font_EU.sarc. It's very slow, so wait. It will create Font_EU.ssarc, that you can rename to Font_EU.sbfarc

Swapping should be easy to done with python script.

Okayyyy I will try on next moment, I'm on work trip... I can't thank you enough! Thank so very much.

When complete the translate, I will put thanks to you on text, you always save me!

As soon as I can test this method, I'll let you know.

Bye for now.
 

nanodrummer

New Member
Newbie
Joined
Oct 3, 2019
Messages
3
Trophies
0
Age
37
XP
48
Country
Brazil
Okayyyy I will try on next moment, I'm on work trip... I can't thank you enough! Thank so very much.

When complete the translate, I will put thanks to you on text, you always save me!

As soon as I can test this method, I'll let you know.

Bye for now.

Hey, man! Did you manage to make the SMO translation? To what language?
Been thinking about making a brazilian one.
 

gvsouza

New Member
Newbie
Joined
Apr 13, 2019
Messages
1
Trophies
0
Age
40
XP
53
Country
Brazil
I have a question like from ApoloPE, hope Masagrator could help me too...

Its very dificult to find tutorials or someone explaining how to translate games, dont get it why there are people dont talk about.

In my case im tryng to translate pokemon sword, thanks Masagrator i was able to exctrat the nca files, but the files are diferent, cant find msbt files, only some .dat files, it looks like is encrypted, dont know what to do now?

Sorry for reactive this post, think its better since its the same theme.
 

masagrator

The patches guy
Developer
Joined
Oct 14, 2018
Messages
6,268
Trophies
3
XP
12,034
Country
Poland
I have a question like from ApoloPE, hope Masagrator could help me too...

Its very dificult to find tutorials or someone explaining how to translate games, dont get it why there are people dont talk about.

In my case im tryng to translate pokemon sword, thanks Masagrator i was able to exctrat the nca files, but the files are diferent, cant find msbt files, only some .dat files, it looks like is encrypted, dont know what to do now?

Sorry for reactive this post, think its better since its the same theme.

Because files are not standarized. Each engine means new ways of storing text. Super Mario Odyssey is on different engine than Pokemons. Try to check if someone has made tools for LGPE, maybe they are compatible with SS.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • Bunjolio @ Bunjolio:
    our school network and chrome policies block stuff too
  • Bunjolio @ Bunjolio:
    alot of yt to mp3 sites are blocked by light speed for "Security"
  • SylverReZ @ SylverReZ:
    It was easy to bypass some of the restrictions, as one of the admins left a registry key in the administrative shares drive, which allowed me to get around the blocking of some sites.
  • Bunjolio @ Bunjolio:
    tf does tta mean
  • Bunjolio @ Bunjolio:
    yeah this is chrome os
  • Bunjolio @ Bunjolio:
    cant do shit
  • SylverReZ @ SylverReZ:
    @Bunjolio, Wdym 'TTA'?
  • Bunjolio @ Bunjolio:
    that* as in why yt to mp3 sites are blocked for security
  • SylverReZ @ SylverReZ:
    @Bunjolio, Remember when YouTubetoMP3 was a thing back in the 2010s?
  • SylverReZ @ SylverReZ:
    Until YT updated some stuffs and broke the website.
  • Bunjolio @ Bunjolio:
    I was 2 in 2010
  • SylverReZ @ SylverReZ:
    Oh lol
  • Bunjolio @ Bunjolio:
    lol
  • SylverReZ @ SylverReZ:
    This was in the Minecraft-era.
  • AncientBoi @ AncientBoi:
    lol Bun rockin out at 2 :rofl2:
  • BakerMan @ BakerMan:
    same tbh
  • AncientBoi @ AncientBoi:
    ♫ Mama hully gully, Papa hully gully, Baby hully gully too:rofl2:
  • AncientBoi @ AncientBoi:
    Oh god, I really am old. lol
  • Sicklyboy @ Sicklyboy:
    @SylverReZ, sup Sylv!
    +1
  • AncientBoi @ AncientBoi:
    Anyway, I gotta go to the store. L8er guys. Oops, I better put some clothes on :shy::tpi::rofl2:
  • SylverReZ @ SylverReZ:
    @Sicklyboy, Hey there Sickly.
  • SylverReZ @ SylverReZ:
    @AncientBoi, Make sure the cops don't see that.
    hazbeans @ hazbeans: hi