PDA

View Full Version : Muvluv Translation Tools


Minagi
2009-08-16, 01:52
I'm going to start off by saying that I did NOT hack the engine, but I did work around the problem of not being able to insert a translation by writing a DLL hook which uses an external script file. One downfall is you cannot do anything with the images.

Some technical aspects of this engine:
- All text is parsed at the beginning of a script. I took advantage of that to dump all text in a script.
- The engine does not handle choices the same way it does normal text. Choices aren't loaded in at the start of a script like normal scripts but are loaded when you get to the choice. The game also prepends text to the string which gives the choice number (1、, 2、, 3、, etc).

To my knowledge, all of the text from Muvluv Extra is in the muvluvextrascript.txt file. Due to the method I used to dump the text, there is the possibility that I might've missed something. I ctrl'd through all routes and hit practically every option and ended up scrapping 147 dumped scripts because they were dupes. I've done my best to remove all duplicates that I could find but I know for a fact that there are still some hanging behind (most, if not all, are lines that won't cause any problems such as "...\p...\p...\p").

The tools required to start translating are available on the website.
muvluv-sys-orig.rar contains the dlls required and a compiled version of the script containing the translations you see in the screenshot. These files will only work on rugp version 5.60.10, which is the DVD standard edition. Read the readme in the main directory for instructions on how to use this.
muvluvpack.rar is the tool required to create the script file used by mlhook.dll. It's a simple tool so the readme should cover most problems.

Script format:
Each line in the text file shares the same format.
<string id> Japanese Line|English Line
The pipe is used as a separator and is required, even if you do not have a translation in place.

Control codes:
\c = Choice start
\d = Choice end
\l = End of line
\e = End of page
\f = Forces the engine to take control of dialog and displays it at a set speed, then continues on to the next line
\n = New line
\p = Pause (slight delay)

You must set your in-game font to a monospace font (breaks made based on MS Gothic font) for the text to break properly.

I probably won't bother with dumping the other games unless someone picks this up or someone serious shows interest in translating one of the games. I don't have plans to release my source code so please do not ask. If there is a bug or need some help, there's plenty of ways to contact me (email and IRC info are listed in the readme and you can PM me or leave a message here).

Files: http://amaterasu.is.moelicious.be/muvluv/

Screenshots:
http://amaterasu.is.moelicious.be/muvluv/muvluv-1.png
http://amaterasu.is.moelicious.be/muvluv/muvluv-2.png
http://amaterasu.is.moelicious.be/muvluv/muvluv-3.png

dsp2003
2009-08-16, 02:37
>I don't have plans to release my source code

Big mistake -- all proprietary eventually dies or being reversed. On the other hand, complete game resources decryption (on install runtime) and disabling of the crypt\decrypt routine in the EXE is much more substantiate from the both technical and moral aspects (lesser memory usage, faster code execution, clean field for further translation attempts if the TLing at some point will be dropped).

It surely harder than in-memory hooking, but ya know what? Haeleth's RealLive in-memory "patches" actually suck and inappropriate for any languages other than plain engrish, and C†C's with bunch of exe-fixes isn't perfect either. IMHO.

Minagi
2009-08-16, 02:48
I don't think you understand why I don't want to release my code. I'm not happy enough with the code so I don't want to release it to everyone. If someone wants to reverse it, by all means go ahead. You can figure out the script format by looking at the compiled and the raw script. I'm even willing to provide documentation if someone cares enough to code their own tools to work with this. To be completely honest, I'm not even sure where your post is coming from.

dsp2003
2009-08-16, 02:53
>To be completely honest, I'm not even sure where your post is coming from.
"Don't use hooks. Hooks are bad, Homer's good." If possible of course. Sorry if it sounds like old man's ranting. =_=

Unregistered
2009-08-16, 02:54
Very nice.

So, after writing this tool, how hard exactly would it be for you to dump the scripts of other games? I am also interested in a dumped script of Alternative, though I confess I have no real intention of picking it up.

Minagi
2009-08-16, 03:02
Very nice.

So, after writing this tool, how hard exactly would it be for you to dump the scripts of other games? I am also interested in a dumped script of Alternative, though I confess I have no real intention of picking it up.
I'm not sure when I'll get around to it. I haven't even installed Unlimited yet which takes priority over Alternative in my mind. I think the amount of time required for those would be less/about the same as Extra depending on the length. Those two don't look like they branch as much as Extra did which definitely helps cut down in time.

Unregistered
2009-08-16, 03:07
I'm not sure when I'll get around to it. I haven't even installed Unlimited yet which takes priority over Alternative in my mind. I think the amount of time required for those would be less/about the same as Extra depending on the length. Those two don't look like they branches as much as Extra did which definitely helps cut down in time.
I see. The reason I'm interested is that I feel there really should be more information on the net about eroge text sizes (nota just doesn't list nearly enough games). Though I'm still really not so sure how to count the size from these kind of raw scripts, which apparently(?) contain repetition and shit