Translation List of English fantranslations and translation ports

  • Thread starter Thread starter masagrator
  • Start date Start date
  • Views Views 98,336
  • Replies Replies 203
  • Likes Likes 35
@joex11 So I have looked at Tomu, Yomoru for a brief moment. I was hoping they are using CMojiFont library like in some of other games published by NIS (it has a flag that allows setting variable width glyphs), but not this time.

Function responsible for rendering text in executable is at 0x25400. At X0 it provides pointer to struct that stores info about how text should be rendered, at X1 text to render in UTF-32.
X0+1428 stores float for how big space should be between lines. By default it's 20.
X0+1424 stores float about additional space between characters. By default it's set to -4 (so actually it makes them closer than they would be by default).

They are updated each frame by values stored at MAIN+0xA5A0 and 0xA5A4

Code:
.text:000000710000A5A0                 MOV             X8, #0xC0800000
.text:000000710000A5A4                 MOVK            X8, #0x41A0,LSL#48

0x41A00000 = 20
0xC0800000 = -4

So for example this is how it looks by default
2024060812063400.jpg
And this is how it looks with 10 and -8
2024060812161300.jpg

So I'm giving you here IPS patches.

YoruTomoruTextPatch.zip - already set it to 10 and -8,
YoruTomoruTextPatch2.zip - only space between lines is changed to 10

But you can adjust it to your needs with hex editor.
In IPS file stored in YoruTomoruTextPatch.zip at offset 0xA you have 8 bytes of instructions. You can use sites like https://armconverter.com/ to decode/encode instructions and https://gregstoll.com/~gregstoll/floattohex/ to convert floats to hex so you know what you should put instead of original number.

I guess -8 won't help because of how latin glyphs are not monospace, so some characters are using whole available space while other don't, which will result in overlap. So if I would be you I would either:
- try to replace glyphs rendered with some monospace font and make them slightly smaller than in original font, this way you could fit more characters in one line.
- In executable hook 0x25400 function and implement custom table for how wide is each ASCII character. But I guess this would be too much for you.
 

Attachments

Last edited by masagrator,
  • Like
Reactions: PrincessLisette
@joex11 So I have looked at Tomu, Yomoru for a brief moment. I was hoping they are using CMojiFont library like in some of other games published by NIS (it has a flag that allows setting variable width glyphs), but not this time.

Function responsible for rendering text in executable is at 0x25400. At X0 it provides pointer to struct that stores info about how text should be rendered, at X1 text to render in UTF-32.
X0+1428 stores float for how big space should be between lines. By default it's 20.
X0+1424 stores float about additional space between characters. By default it's set to -4 (so actually it makes them closer than they would be by default).

They are updated each frame by values stored at MAIN+0xA5A0 and 0xA5A4

Code:
.text:000000710000A5A0                 MOV             X8, #0xC0800000
.text:000000710000A5A4                 MOVK            X8, #0x41A0,LSL#48

0x41A00000 = 20
0xC0800000 = -4

So for example this is how it looks by default
View attachment 441109
And this is how it looks with 10 and -8
View attachment 441110

So I'm giving you here IPS patches.

YoruTomoruTextPatch.zip - already set it to 10 and -8,
YoruTomoruTextPatch2.zip - only space between lines is changed to 10

But you can adjust it to your needs with hex editor.
In IPS file stored in YoruTomoruTextPatch.zip at offset 0xA you have 8 bytes of instructions. You can use sites like https://armconverter.com/ to decode/encode instructions and https://gregstoll.com/~gregstoll/floattohex/ to convert floats to hex so you know what you should put instead of original number.

I guess -8 won't help because of how latin glyphs are not monospace, so some characters are using whole available space while other don't, which will result in overlap. So if I would be you I would either:
- try to replace glyphs rendered with some monospace font and make them slightly smaller than in original font, this way you could fit more characters in one line.
- In executable hook 0x25400 function and implement custom table for how wide is each ASCII character. But I guess this would be too much for you.
Thanks a lot for these patches.
It looks a lot better with them too.
And yeah it didn't change the amount of characters rendered per line. That remains as the only issue to fix.
I did check the font file (font.bntx) but afaik it's image rendered (dds?) and even if I manage to replace it with a smaller font it won't be read correctly by the game...
Post automatically merged:

English text with the patch masagrator made:
Captura de tela 2024-06-07 134346.png


Without patch:

Captura de tela 2024-06-04 124415.png
 
  • Like
Reactions: testing123
I'm only asking, are the lov to ask for request of VN we want to get translated?
Typo. I don't understand the question fully.

People are allowed to ask for translating game as long as they will be actively participating in development, so stuff like testing doesn't count.
 
best of luck with the Yoru, Tomosu patch @joex11! Seeing as NISA likely wont localise it officially at this point, its a perfect chance for fans to step in.
Thank you!
Yeah, I doubt they will bring this one to the west.
Unfortunately I had no luck in getting more characters to show than 113.
And if I move text to another scene it breaks BGs and voices, so...
Even with proper translation I doubt we would manage to make do with 113 characters.
Until I or someone else figures out a way, it's simply not doable.
 
Until I or someone else figures out a way, it's simply not doable.
I have a question for you: do you plan to MTL whole game or will you actually translate it yourself?

Because this really makes a difference for me, when I will finish other stuff I can look at fixing those issues - but only if you won't use MTL. I am pretty sensitive to MTL, so I will ditch it as soon as I will feel it's not translated by humans.
 
I have a question for you: do you plan to MTL whole game or will you actually translate it yourself?

Because this really makes a difference for me, when I will finish other stuff I can look at fixing those issues - but only if you won't use MTL. I am pretty sensitive to MTL, so I will ditch it as soon as I will feel it's not translated by humans.
I intend to MTL the whole game. I can't translate JP at all...
But if someone else in interested in translating, I'd be super happy to help.
 
Anyone know tools to translation konosuba kibou no meikyuu game?
Post automatically merged:

Anyone know tools to help translation for konosuba kibou no meikyuu game?

I tried shindatautil but it seems doesnt work
 
Anyone know tools to translation konosuba kibou no meikyuu game?
Post automatically merged:

Anyone know tools to help translation for konosuba kibou no meikyuu game?

I tried shindatautil but it seems doesnt work
This is an RPG, so tools for VNs won't work.
 
@masagrator I'd like to make a translation of Secret Game Killer Queen. I've already machine translated it and was able to insert the text back in, will be going through by hand to edit it though. Your tools are a huge help but I wanted to ask two things (1) do you have any idea to switch to half width fonts instead of full width? The english text when I use your scripts seems to use the font48.xtx font. and (2) this is more for trying to extend your code to other games with same engine but how did you figure out the command codes? I'd like to use the knowledge to translate other games on the same engine but there seem to be at least some command differences.
 
Sorry, but since I'm part of translation group that wants to make real translation for Secret Game Killer Queen, I won't be helping in your venture. I can only say that 1/4 of game is fully translated. I have used my knowledge from this game to port translations for Dei Gratia no Rashinban, Saikoro Psycho and Menherafflesia, so you should know from those mods what to expect.

1722751739123.png

And made rule for myself years ago that I'm not helping with introducing new machine translations. Because since I will be investing in this project I will feel responsible for all wrongly translated sentences. Yes, I know Japanese good enough to catch mistakes in simple sentences, which is how I have figured out that translation mods for remake of Menherafflesia and Saikoro Psycho from the same author are machine translations (it was not written anywhere they are, so I have reported them and flagged on vndb, later author admitted that they were in fact MTL).

I can only say that it's impossible to figure out sizes of opcodes in Regista engine without disassembling executable. That's how I have figured out opcodes in all those games.
 
Last edited by masagrator,
Sorry, but since I'm part of translation group that wants to make real translation for Secret Game Killer Queen, I won't be helping in your venture. I can only say that 1/4 of game is fully translated. I have used my knowledge from this game to port translations for Dei Gratia no Rashinban, Saikoro Psycho and Menherafflesia, so you should know from those mods what to expect.


And made rule for myself years ago that I'm not helping with introducing new machine translations. Because since I will be investing in this project I will feel responsible for all wrongly translated sentences. Yes, I know Japanese good enough to catch mistakes in simple sentences, which is how I have figured out that translation mods for remake of Menherafflesia and Saikoro Psycho from the same author are machine translations (it was not written anywhere they are, so I have reported them and flagged on vndb, later author admitted that they were in fact MTL).

I can only say that it's impossible to figure out sizes of opcodes in Regista engine without disassembling executable. That's how I have figured out opcodes in all those games.

Thanks for the answer! I did not realize there was a translation project in the works, that's awesome, let me know if I can do anything to help! In case a script to go from JSON to CSV and reinserting translations from CSV back to the JSON is helpful, I'd be happy to share that script. Machine translation in my case was due to being new to rom hacking (so wouldn't want to ask someone to commit not knowing whether I could handle the technical side) and not knowing Japanese myself. I will probably keep the machine translation to myself then to hold myself over while anticipating the hand translated release.

With regards to other games, I've switched this past week primarily to trying to figure out Myself; Yourself on PS2 which is using the same engine and seems to be fully forgotten. I've noticed for example that it calls 55 (or 45, one of the calls which your code assumes the next call is 01, don't have my computer in front of me to check) but with pretty much any call afterwards. It also calls some cases which SGKQ doesn't. If you could just try to walk me through one of the examples, I can probably pick things up from there. I'll focus on writing tools for other games in the same engine and making it available so they can be properly translated.
 
In case a script to go from JSON to CSV and reinserting translations from CSV back to the JSON is helpful, I'd be happy to share that script.
We have already tools that automatically synchronize with texts stored in Google Sheets and parse them to scripts and compile in one go ;)

I won't help with assumptions since I know that even commands from the very beginning of array can have different structures between games (like opcode 4 in Saikoro Psycho vs Dei Gratia), so it's not worth explaining anything.

https://github.com/masagrator/Saiko...7b76186c121fd30822/sn/sn_assembler_re.py#L122
https://github.com/masagrator/DeiGr...d8e8d568f85c273be5/sn/sn_assembler_re.py#L149
 
We have already tools that automatically synchronize with texts stored in Google Sheets and parse them to scripts and compile in one go ;)

I won't help with assumptions since I know that even commands from the very beginning of array can have different structures between games (like opcode 4 in Saikoro Psycho vs Dei Gratia), so it's not worth explaining anything.
Makes sense you'd already have something like that, just was throwing it out there just in case it was helpful.

I'm aware there are differences between the games. I'm asking for more details on the process you went through to figuring it out for any one example to aid my learning of the general steps to take, even though I know there will be of course be some differences everytime.

What I'm doing currently is going to PCSX2, finding the address that corresponds to the start of a line in sn.bin, setting a breakpoint for when it reads from that to identify the function. But, going from there, I'm somewhat lost. My idea was if I found the function then I should be able to find something mimicing different cases and function calls for each one, although it's not at all obvious I found anything like that.
 
I have dropped porting translation of A Clockwork Leyline trilogy after finishing first game (Ushio route was not tested) because it was so boring I couldn't muster energy to continue.

I have uploaded files here in case if I will ever need to work with other VN using HuneX engine since I spend many hours on how to load script and textures without repacking archives. You can find also in Releases files I have managed to play game with. Read Installation point in readme. I am not planning to continue this project or do any fixes.

https://github.com/masagrator/ClockworkLeyline1/
 
  • Like
Reactions: mathew77
Sorry for the question but what is your method of locating Opcodes on LucaSystem? On PC you can just look through the executable in hex but how do you personally go about it on Switch?
 

Site & Scene News

Popular threads in this forum