Inori/FuckGalEngine

minori - reverse engineering

imKota opened this issue · 10 comments

Hello!

Inori commented

I haven't tried that. When I translate it into Chinese, I kept line limitations as it is. It's more beautiful, isn't it?

Inori commented

Even if you can increase the limit, there will always be some words broken off.
In your example, the word positive may be complete after increasing the limit, but the word result will be broken off at the same time. You can not determine which word will be at the end of line.
And the text will not be at the center of the game window, which makes it looking ugly.

My tools includes paz package extractor (fuckpaz) and game exe hooks (MinoriPatch), fuckpaz works no matter what language you are working on, and MinoriPatch support chinese which means it supports engligh theoretically. The only thing is that MinoriPatch has many hard code address which only aims to the newest game of Minori (currently Trinoline). Besides if you want to translate a game completely, you may also have to modify the exe file.

@imKota
or... you can browse through commit and revert the changes by yourself
666323e

Inori commented
  1. You use SetDll.exe to modify the game exe file, then the game can load MinoriPatch.dll.
    Command like: setdll /d:MinoriPatch.exe 12eve.exe

  2. For scripts, unpack scr.paz using fuckpaz.exe, you get a lot of *.sc files, then you use sc_text_out.py to extract the text into txt files.
    After translated, you use sc_text_in.py to import the text back into sc files.
    Finally, you use fuckpaz.exe again to pack the sc file into paz package.

  3. For images, there are two types of images.

  • a. Images in sys.paz is simple, you just unpack the paz, modify images, then repack.

  • b. Images in 'bg.paz' is a little complicated. You have 3 ways to deal with it.

    i. Just give up, since there will be only a few images which have Japanese text, and there will be script which you can translate showing under the image when you play the game. I suggest you this way.
    ii. Just repack using 'fuckpaz.exe', this will make the repacked package very big, but it works.
    iii. Replace the only the image you modified. This will be a hard way. First you use PackCnBg.py to pack the modified images, you must keep the png format, include its' channel count. The packed file will be cnbg.paz but it's not a real paz format file. So the game can not parse it. You have to patch the game to make it works. Code is in MinoriPatch.cpp. You can use hard code address in commit which @0xh3LL0 provides. Just replace the address in the newest code with the ones in that commit should work.

  1. I changed the repacked package name, plus cn prefix just for making the old Japanese game can work at the same time. If you do not care about it, just comment the code about hooking CreateFileA

  2. There are some features in MinoriPatch which you may not want, like showing original Japanese once press Tab. Just comment the code.

Inori commented

Reusing my patch is a clever way, surprisingly you can find it!

You should have found that the file name format is different between yours and mine.
Do not append folder name before filename.
Just place modified bmp file in a folder named cnbg, then run PackCnBg.py outside of the folder.

Inori commented

@Inori Another question, sorry.
In the committee that indicated @0xh3LL0 there are no addresses for the latest version of the patch.

FuckGalEngine/Minori/Minori/MinoriPatch/MinoriPatch.cpp

Line 546 in b76ba86

void pSavePngName = (void)0x0046AC1C;

FuckGalEngine/Minori/Minori/MinoriPatch/MinoriPatch.cpp

Line 668 in b76ba86

void* p_old_png_read_info = (void*)0x004C1650;
How to deal with this?

Well in old version of MinoriPatch, I use bmp format for images in bg.paz.
Recently I changed it to original png format.
If you use the compiled version of my old Chinese Patch, you just use bmp format as I described above.
If you want to compile the dll yourself, maybe you have to find the address yourself, since there's no history commit about this.

Inori commented

Your old compiled patch (which uses bmp) does not load cngb.paz. I downloaded the release, and it all works (translated into Chinese scripts, menus, etc.). But the modified CGs don't work.

Well I don't think so. Do you mean that my original cnbg.paz do not work?

You will not believe it, I do: D

It's the fault of your MSYS environment, use Windows cmdline instead.

Inori commented

@Inori can you write me in telegram or another real time chats?
To not flood here xD

I'm on my holiday of Chinese New Year, and I only have a MBP on my hand, which can not run windows programs.
Maybe I can provide you the address when I return.

Inori commented

I'm on my holiday of Chinese New Yea

Happy New Year !
And sorry to bother you.

Maybe I can provide you the address when I return.
Thanks in advance, I will wait!

Tell me please, do you plan to do what I wrote above? Adapt the latest developments for other novels, and create branches for them.

Thank you very much!
You really helped me out.

If you have worked out all the problems, you don't need the addresses anymore. The file name can be changed by modifying the binary content of MinoriPatch.dll, you can search cnscr.paz and change to ruscr.paz for example.

I do not have a plan to create branches for other games, I will only support the newest game I'm working on :) . Many addresses can be found in history commits, although it's a little complicated. :(

Inori commented

@Inori Well, I got it.
Thanks for the work you've done!

You're welcome.