ROM Hack TRANSLATE POKEMON FONT PROBLEM

  • Thread starter Thread starter antrix
  • Start date Start date
  • Views Views 4,795
  • Replies Replies 17

antrix

Member
Newcomer
Joined
Jul 9, 2020
Messages
13
Reaction score
2
Trophies
0
XP
109
Country
Poland
Hello trying to translate pokemon black into Polish, how to make fonts with new characters Ą ą Ć ć Ę ę Ł ł Ń ń Ó ó Ś ś Ź ź Ż ż , with Latin characters .
Does anyone know how to do this? Please help
 
Hi! Pokemon gen 5 games use the NFTR/RTFN (Nitro FonT Resource? I guess) format for storing the font, and the texts use UTF-16LE encoding, meaning that with proper tools you can just add the characters you need. NFTR is a format provided by the DS/Nitro SDK, so it's pretty common. Gen 5 games use an early version of the format (which doesn't include some of the features added in later versions of the SDK), so if you can find an old version on the SDK with fontcvtr, you can use it to convert the font to an image file, edit it, and then put it back together. I have some experience working with this (and I've been long in the works of making a tool for editing NintendoWare formats (such as BRFNT, BCFNT, BFFNT) which are all based on NFTR), so feel free to ask more.
 
  • Like
Reactions: cearp
What tools can I add new characters with? I can ask for a clearer answer best how to do it step by step best
 
If it is NFTR then I do have a worked example in
https://gbatemp.net/threads/gbatemp-rom-hacking-documentation-project-new-2016-edition-out.73394/
If it is going to be fun with versions then CHEMI6DER's mentioned stuff should allow you to use tools that want/expect different versions.

NFTR can reasonably easily be added to but in most cases you tend to find people will overwrite existing characters (you probably don't need trademark symbols, various greek symbols, some types of punctuation and so on.
 
  • Like
Reactions: cearp
IIRC NFTREdit only works with the most recent version of NFTR, just crashes if you attempt to load in a font binary of an older format.
As for the all-in-one tools that can do it all, you can use PokeFontDS, but it only allows you to replace existing characters (but allows to edit the Unicode codepoint though, so you should be able to cleanly edit the font)
 
Welcome back

I know that a given character can be replaced with a letter. Is there any way to add a new letter without replacing the current one?

for example, ą was ą and not ą was à or á
 
Please



IIRC NFTREdit only works with the most recent version of NFTR, just crashes if you attempt to load in a font binary of an older format.
As for the all-in-one tools that can do it all, you can use PokeFontDS, but it only allows you to replace existing characters (but allows to edit the Unicode codepoint though, so you should be able to cleanly edit the font)
IIRC NFTREdit only works with the most recent version of NFTR, just crashes if you attempt to load in a font binary of an older format.
As for the all-in-one tools that can do it all, you can use PokeFontDS, but it only allows you to replace existing characters (but allows to edit the Unicode codepoint though, so you should be able to cleanly edit the font)

Please

for help I know that you can use to overwrite unused own letter.

I would like not to overwrite or otherwise add a character, but to add my own production program for the normally needed new character. Np Ć Ę ę Ł Ń ń Ó ó Ś ś ż ż, Latin.

the font is in RTFN.

Please provide a detailed description or preferably photos of how to make a step by step or a video.
 
Last edited by antrix,
IIRC NFTREdit only works with the most recent version of NFTR, just crashes if you attempt to load in a font binary of an older format.
As for the all-in-one tools that can do it all, you can use PokeFontDS, but it only allows you to replace existing characters (but allows to edit the Unicode codepoint though, so you should be able to cleanly edit the font)
What about gen 4, please? Which kind of font did it use?
 
What about gen 4, please? Which kind of font did it use?
Gen 4 uses it's own custom-made font format. And gen 4 games also use a custom text encoding, so while you technically can add characters to that font, it's unlikely to play nicely with other versions of the game (afaik, the Korean versions of gen 4 games were made after the initial localization, so Korean is included only in that specific version as the extension to the charset...though, then again I don't know if you can even trade mons between international and Korean versions anyways). There's also the UTF16.dat file in the filesystem, which seems like it would provide UTF-16 mapping to characters, but it's incomplete (iirc, the fonts have more characters than there are in UTF16.dat) and I don't even know if it's used by the code (pokediamond may help with that?).
So yeah TL;DR it's a custom format, things may break and there are many unknowns. I hate to plug my stuff, but I made a tool that can edit gen 4 fonts, as well as gen 5 variation of NFTR fonts - NintyFont.

A little footnote: apparently while making NintyFont I found out that gen 5 actually uses a modified version of NFTR, not an early one (unlike what I said in earlier posts here, sorry for misleading early conclusions). (IIRC) For some reason the width data is interleaved with the bitmap data in CGLP, and CWDH is filled with seemingly garbage data (tho I think I couldn't figure out what it really was, neither was it important as the game accepted the font without it anyways).
 
  • Like
Reactions: bachnewacc
Sorry, I don't know how to use that tool or the way to open it, are there any video or guide how to use it? By the way, you have a cute avatar, I love it ^^

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

[/QUOTE]
Sorry, I don't know how to use that tool or the way to open it, are there any video or guide how to use it? By the way, you have a cute avatar, I love it ^^

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

Sorry, I don't know how to use that tool or the way to open it, are there any video or guide how to use it? By the way, you have a cute avatar, I love it ^^
 
Sorry, I don't know how to use that tool or the way to open it, are there any video or guide how to use it? By the way, you have a cute avatar, I love it ^^
Thanks XD
I'm sorry, I don't have a guide of my own on how to use this thing. Although with gen 4 games this program would just allow you to edit the font at most, but you'd have to match the text encoding to it too, since again gen 4 has it's own custom charmap, unlike gen 5 when it's all UTF-16 and it just works. You could DM me about what you wanna add and I'll try to help you with it, cause it might be easier that way.
 
Thanks XD
I'm sorry, I don't have a guide of my own on how to use this thing. Although with gen 4 games this program would just allow you to edit the font at most, but you'd have to match the text encoding to it too, since again gen 4 has it's own custom charmap, unlike gen 5 when it's all UTF-16 and it just works. You could DM me about what you wanna add and I'll try to help you with it, cause it might be easier that way.

how can i message you? I just joined this forum and I don't know how to use it yet
 
You click on the username to see their profile page, then click "Send PM" there.
I haven't post anything so I can't pm you, are there any ways I can contact to you like facebook or telegram or anything?
upload_2021-9-5_17-21-29.png
 
Thanks XD
I'm sorry, I don't have a guide of my own on how to use this thing. Although with gen 4 games this program would just allow you to edit the font at most, but you'd have to match the text encoding to it too, since again gen 4 has it's own custom charmap, unlike gen 5 when it's all UTF-16 and it just works. You could DM me about what you wanna add and I'll try to help you with it, cause it might be easier that way.
Hi, could you elaborate on what would have to be done in gen 4 to get a font file edited with Nintyfont into the game? So far, the changes I made are not showing up.
 
Last edited by PeterPat,
Here's how to use Nintyfont (thanks CHEMI6DER), NFTREdit and Tinke.
You can go to my post to see an image or follow the steps below.
https://gbatemp.net/threads/request...ersion-of-diabolical-box.621814/post-10001438
https://gbatemp.net/threads/request...ersion-of-diabolical-box.621814/post-10001640

First, you need to use Nintyfont to add the ASCII or Latin chart (if needed).​
Starting from any chart is fine, but must continue until the end of the chart block​
(your block is h0100-h017F d256-d383 Latin Extended-A or any block you want).​
In the glyph properties box, press ADD. Click the last box on chart screen to change the code point value.​
Caution: don't import BITMAP value or font will broken.
Next, we check the font with Tinke to confirm the char map has loaded (type 0 for proportional, any character​
in type 2 will skip the offset value and become full-width characters; I not test type1).​
More information in: problemkaputt.de/gbatek-ds-cartridge-nitro-font-resource-format.htm​
(Check Char Map in Tinke. First char = decimal value in Unicode chart)
Now, you can draw tile with NFTREdit and settings width value.​
Warning: please always backup your font when you adding more code point in Nintyfont.
Anytime NFTREdit can't open your modified font, it means your font is broken.

In case you can't handle it, I can send pre-edited fonts (Basic Latin, Latin-1 Supplement, Latin Extended-A, Latin Extended-B, Latin Extended Additional).
You just need to draw the character and change width, offset and next offset.

1685391809558.png


P/s: Because my native language is Vietnamese.
So we use scattered characters in all five blocks above. Pretty complicated, right?
 

Attachments

  • 1685391798188.png
    1685391798188.png
    22.1 KB · Views: 61
Last edited by mn1712trungson,
Thank you. The problem is that the game I want to hack (pokemon soulsilver) doesn't use NFTR, but .bin files. I don't want to add new characters, but only change the existing ones aestetically.
The binary bitmap font in every game is different. But the basic structure is:

1. Bitmap font file (normal is 1 bpp; some odd games use 2 bpp and 3 bpp).
This can be easily edited with Crystal Tile 2 or any software with a tile editor.
1685442476401.png


2. A width char table hardcoded in the main() program

3. A function for calculating the character offset on a bitmap font

4. A function wielding or enclosing tiles together

You have several ways to trace that function back: VRAM address, OAM address, DMA address, tile buffer, etc.
 
Last edited by mn1712trungson,

Site & Scene News

Popular threads in this forum