Jump to content

Script Extraction Thread


Recommended Posts

On 12/31/2021 at 1:16 AM, Gabriulio said:

So yes, there must be a readable script in there, I simply don't know how to decrypt it. Of course, I can't rule out the possibility of arc_conv messing up the scripts when it extracted them from the sin_text.dat archive.

First, there is a great number of visual novels not on KiriKiri or NScripter engines. Thou cannot hope that every game will be on them. Also, NScripter may be somewhat painy (if you want to translate on original NScripter without making any ports on some ONScripter). Your engine is, actually, DDSystem. Seems to be PIL-used engine.
Second, these scripts are not encrypted. (Well, some strings may be obfusificated, but not message ones). It's just byte-code script file SCN. True name of format is DDW, by the way. Basically, you tried with the wrong encoding. Try using UTF-16LE. Proof is below the points.
Third, thou probably cannot edit them with simple text editor. Why, thou ask? Because they are bytecode scripts. Therefore editing them with simple text editor likely break them (not in 100%, but in many, depending on the script format). Try some HEX editor instead, like MadEdit.
Forth, I do know some tools for DDSystem, like these or that, but none of them can deal with scripts properly, if I am not mistaken. Thou may try to hack them yourself, though.

 

image.png

Edited by Tester
Link to comment
Share on other sites

First of all, thank you very much for your help.

The script might be encoded in UTF-16, but it appears to be a mix of LE and BE. Some parts are readable in one encoding, but not in the other. And some characters aren't readable in either of the two.

For example, the following line:

Rl8w50U.png

This is the very first line of dialogue in the game. Character name "ミニー" and the dialogue is "「きゃはははははは」".

Now this is the line when using UTF-16LE:

aXrVOya.png

Total gibberish. But when we changed it to BE:

6qacGw4.png

It becomes partially readable. For example, "ミニー" becomes "胟ニー". I checked the other lines who only become readable when using BE, and they also have issues where some kanji or kana are displayed wrong.

Link to comment
Share on other sites

6 hours ago, Gabriulio said:

It becomes partially readable. For example, "ミニー" becomes "胟ニー". I checked the other lines who only become readable when using BE, and they also have issues where some kanji or kana are displayed wrong.

Oh, actually, I just remembered an obscure tool for both archives and scripts of DDSystem engine -- DDWSystemTool. Well, it is written that for DDWSystem, but it seems to be pretty close to DDSystem (it can even be another name of DDSystem or such). Also your "scn" scripts are actually "hxb" scripts (see header), so the tool should support them (and at least export/import strings properly). If thou have some problems with it, write in the issues, since it does not seem like an abandonware.

Edited by Tester
Link to comment
Share on other sites

  • 2 months later...
On 11/1/2020 at 12:43 AM, Dim said:

Please help,anyone know how to read or extract script .rld ? its from Exhibit engine i think, and i dont know how to use RLDManager because when i open it, there is just some empty GUI @marcus-beta

Hi, I'm new too,

It's been a year since your comment, but I wanted to share my 2 cents :)

I've a similar problem with Poison's 姉姉W催眠, apparently it uses ExHibit, .res for the images and .rld for the scripts. The images are actually very simple to extract I used Crass/CrageGUI_Eng. However, the text is much more difficult because it seems to be encrypted.

Anyhow, if you're lucky you can extract it using the empty GUI you commented just:

Right click >> Press Open >> and select the .rld file you want to use.

If you aren't lucky, the file is encrypted, then you would need to get the decryption key first, in a similar way:

Right click >> Find Key >> and select the .rld file you want to use. Once it has finished (it might take a while), it will create a txt file named "RLDKeys" in the same folder, open it and you'll be able to see your new key.

However, this is where things get ugly (complicated), becasue now you need to compile the source code after adding the new decryption key. If you aren't familiar with this process (like me), it may be difficult to do this, becasue you need to install a few programs like "Visual Studio Code" to see/edit the source code, and "MINgw" to compile it. Unfortunately the installation and the usage of these aren't as simple as installing a regular game, as you need to know, at least, some basic CMD commands.

So, you might need to read/watch a few tutorials and keep trying, like I'm currently doing.

Alternatively, if you don't want to use RLD Manager, you can try using "StringsReloads v7.5", I'm about to try to do this as it seems a way simpler solution to translate a game. Nevertheless, you'll still need some assembly knowledge 😢.

StringReloads
 

Regards.
 

Link to comment
Share on other sites

Been trying to port the PC version of KamiYaba over to the Vita. I've been able to unpack all the files for the vita version and change the text for the game but the only problem is that if I try to add or remove any text, the game doesn't work. The script text is encoded in Shift-JIS and doesn't have a file extension and I couldn't find anything when I searched up the header for the file. Would someone mind taking a look at it?

Prologue Script

Thanks

Link to comment
Share on other sites

1 hour ago, kralc said:

Been trying to port the PC version of KamiYaba over to the Vita. I've been able to unpack all the files for the vita version and change the text for the game but the only problem is that if I try to add or remove any text, the game doesn't work. The script text is encoded in Shift-JIS and doesn't have a file extension and I couldn't find anything when I searched up the header for the file. Would someone mind taking a look at it?

Prologue Script

Thanks

First, just to make sure that I correctly understood what you want to do: You want to copy the official translation of the game (English I guess) over to the PSVita version of the game to play it in English on the PSV, right?

So, by just looking at the file you provided: every String in there is prefixed by its length in bytes. If you are lucky, it is enough to adjust this length to the new length after you did your edits. I tried this with the first sentence of the first scene (at least in the PC version) but I do neither own a PSV nor the PSV version of the game. I uploaded the modified file here so you can try it out. If this works, it is probably not that hard to write a simple program that does the length modification automatically.

Edit: I uploaded the wrong version first, so in case you already downloaded it: I replaced it by the correct one now.

Edited by Anonym271
Link to comment
Share on other sites

4 hours ago, Anonym271 said:

First, just to make sure that I correctly understood what you want to do: You want to copy the official translation of the game (English I guess) over to the PSVita version of the game to play it in English on the PSV, right?

So, by just looking at the file you provided: every String in there is prefixed by its length in bytes. If you are lucky, it is enough to adjust this length to the new length after you did your edits. I tried this with the first sentence of the first scene (at least in the PC version) but I do neither own a PSV nor the PSV version of the game. I uploaded the modified file here so you can try it out. If this works, it is probably not that hard to write a simple program that does the length modification automatically.

Edit: I uploaded the wrong version first, so in case you already downloaded it: I replaced it by the correct one now.

Yeah, I'm trying to copy the offical translation of the game over to the PS Vita version.
The issue I'm facing right now is that I can edit the text but only if I keep the amount of total characters in the script the same. If I add or subtract an extra character, the game stops working. I tried your file but it doesn't seem to work either (there is a chance that I didn't test it correctly because the Vita version of the game doesn't support english characters so I just switched out all of the 65 english characters for 65 random jp characters. If I do find a way to be able add more text, I have access to the font so I can just change some of the pngs for some of the jp characters to english characters so that if I type that jp character, it will show up as a english character and just do it that way instead.)

Link to comment
Share on other sites

Hello, does anyone have some experience unpacking and repacking for the advwin32 engine (the VN title is Konata Yori Kanata Made).

This is what the game folder looks like: https://i.imgur.com/7w8NG6X.png

I have had some luck getting the script in readable format extracting with garbro MES.MRG into the different scripts (which are encrypted or something since you can't open them directly with a text editor) and then loading them with the Multiline Editor from the first post. But I don't have any idea how to repack it into MES.MRG to test how it looks ingame, and I can't properly navigate this editor program since it's only in chinese but I doubt it does any repacking since it seems to be just an editor to help translating scripts easier.

I was wondering if there's anything already available to help extracting and inserting back the scripts more easily, and keeping the actual scripting would be nice too in case minor adjustments are needed. Although I imagine the engine prolly doesn't support alphabetical characters so maybe some tweaking would be needed too?

I was pondering the idea of translating this into Spanish since I quite liked it and it's kinda short but I want to get at least some good chunk of the translation done before I drag anyone else into this and lose their time in case I actually give up on the translation that's the most likely thing to happen. So if some sort of working tools exist would be the ideal situation.

Edited by nocturn
Link to comment
Share on other sites

  • 4 weeks later...
  • 3 weeks later...
  • 2 weeks later...

(Complet's C4 MPX)

Found a working python script. Complets_tools_and_asm_patches.7z. Thanks tlwiki.org and web.archive.org.

Altered a bit. Now he automatically picks up the files in the folder and decodes.

And he wrote a script that pulls out the text and creates a database for subsequent translation.

mpxtool_modified.zip

Edited by Maks1m
Link to comment
Share on other sites

  • 2 weeks later...

Hi all, I'm a newbie here so please forgive me. I'm trying to extract resources from Princess Maker 4. I am able to extract the "script" file in the base dir using GARbro. However among the files extracted are prime4.g2, prime4.g2m, and room.g2. These look like they would be encoded via glib2, but when I try to extract those with GARbro, I just get the error that "file could not be opened as resource archive". Any ideas on how else I could try to extract that? All advice appreciated!

Link to comment
Share on other sites

  • 2 months later...
On 5/30/2022 at 7:16 AM, Maks1m said:

(Complet's C4 MPX)

Found a working python script. Complets_tools_and_asm_patches.7z. Thanks tlwiki.org and web.archive.org.

Altered a bit. Now he automatically picks up the files in the folder and decodes.

And he wrote a script that pulls out the text and creates a database for subsequent translation.

mpxtool_modified.zip

Yo, was using the mpxtool_modified and got an error when trying to repack .txt files that were machine translated (I edited only the japanese, kept the formatting the same). 

OneDrive\Documents\MEGAsync Downloads\vn\mpxtool_modified\mpxtool_modified.py", line 255, in pack
    dat2=dat2.encode("shift-jis-2004")
UnicodeEncodeError: 'shift_jis_2004' codec can't encode character u'\u200b' in position 3881: illegal multibyte sequence

lemme know if anyone might happen to know if there is something wrong with the tool (or if u need the text files to check or something).

Link to comment
Share on other sites

  • 1 month later...

I'm rather new at script extracting so I would like some assistance.

I'm trying to extract scripts in the Kirikiri/KAGE X engine.

KrkrExtract didn't work when I tried. As error message came up saying it only supports krkrz engine.

I extracted the data.xp3 using Garbro, but the scenario files were in .ks format. I looked some stuff up and figured I needed to use a hex editor and according to the guide at the start of the topic:

script format: encrypted ks
tools needed: hex editor
status: tested
info: open the *.ks script into hex editor, and insert "FF FE" at the very beginning, usually only applied for akabeisoft and its imprint.

But I'm not familiar with hex files so I don't know what this means. I'm just trying to get the script into a readable format for potential translation. Could someone help a guy out?

 

DEA1XzA.png

Edited by Hiashi
Link to comment
Share on other sites

On 10/3/2022 at 3:04 AM, Hiashi said:

I'm rather new at script extracting so I would like some assistance.

I'm trying to extract scripts in the Kirikiri/KAGE X engine.

KrkrExtract didn't work when I tried. As error message came up saying it only supports krkrz engine.

I extracted the data.xp3 using Garbro, but the scenario files were in .ks format. I looked some stuff up and figured I needed to use a hex editor and according to the guide at the start of the topic:

script format: encrypted ks
tools needed: hex editor
status: tested
info: open the *.ks script into hex editor, and insert "FF FE" at the very beginning, usually only applied for akabeisoft and its imprint.

But I'm not familiar with hex files so I don't know what this means. I'm just trying to get the script into a readable format for potential translation. Could someone help a guy out?

 

DEA1XzA.png

What game is it?

Link to comment
Share on other sites

22 hours ago, Sisulizer said:

I simply used GARbro to extract/creating patch, choose no encryption when it shows the encryption schemeImage

And it works. Silly me for overthinking.

One more question. How should I go about repacking them into a patch?

Edit: I figured it out. Fun stuff

Edited by Hiashi
Link to comment
Share on other sites

  • 3 weeks later...

Can anyone help me extracting scripts from Dogenzaka Lab's otome VN, specifically the Men of Yoshiwara series?

While I can extract the CGs and BGMs from them with GARbro easily, I don't know what to do with the scripts themselves to make them readable.

They're all in .a format, by the way.

Destiny Princess sample

Men of Yoshiwara Kikuya sample

Men of Yoshiwara Ohgiya sample

Link to comment
Share on other sites

  • 4 weeks later...

I am looking for help in extracting the script for two games.

The first is sisters ~Natsu no Saigo no Hi. According to VNDB this is using a game engine called ISM. I used GARbro to look at the .isa data files. Within the data file there are .ism files which I am assuming contain the script. These are binary files from what I can find, but I am not sure how to decrypt/open them to begin translating.

The second game is Kanojo x Kanojo x Kanojo. This game uses the AST engine according to VNDB. The data files for this are named dat01, dat02, etc... with no extension. Viewing dat01 with GARbro shows all of the script files. These are in .adv and when I extract them they are easily edited as straight text files. The problem I am having is being able to repack the dat01 file without an extension.

So I guess what I am looking for is any tools anyone has that can be used to unpack and repack AST and/or ISM game files. Anything helps.

Link to comment
Share on other sites

On 11/23/2022 at 3:50 AM, bigtpsychoboy said:

The first is sisters ~Natsu no Saigo no Hi. According to VNDB this is using a game engine called ISM. I used GARbro to look at the .isa data files. Within the data file there are .ism files which I am assuming contain the script. These are binary files from what I can find, but I am not sure how to decrypt/open them to begin translating.

I did some research about this ISM engine. I found this very interesting GitHub repository about all kinds of VN engines and it contains a link to this download page. There you can download all kinds of stuff needed to create a VN with the ISM engine (the .lzh archives can be opened with 7zip, WinRAR or other archivers). Especially interesting is the ISM development environment. Sadly, as far as I could see, none of the packages contains tools to decompose an existing game. But what I could find out so far is that the scripts are written in an own scripting language (.iss) and then compiled into .ism files. So you would probably need to write some kind of disassembler for these compiled scripts in order to edit them for translation. This seems like a hard but not impossible project, especially because we have access to the script compiler (it is contained in the dev environment).

I already looked into the ISM scripts and found some stuff, in case it helps:

  • Header
    • 12 byte magic number ("ISM SCRIPT")
    • 4 byte file size
    • 4 byte offset, some offset in the file. Probably beginning of the code segment or something
    • 4 byte uint, probably some kind of count (maybe local variables?)
    • 4 byte count1
    • 4 byte count2 --> count1 & count2 seem to be always the same
  • Some list, directly after the header
    • count is header.count1 (or count2)
    • each entry is a struct { uint1, uint2, uint3 }
      • uint1 is increasing with each entry, starting at 0
      • uint2, uint3 are relatively small numbers
  • After that follow some readable strings (usually 2) like CHAP1_A and CountParagraph%0
    • each one prefixed by its length (1 byte) and followed by a 0 terminator
  • Then more readable strings (same format), maybe function definitions or something
  • Then follows the segment that header.offset (the third entry) points to

By compiling one of the ISS examples from the mentioned download page I also found out that strings are stored with a simple XOR encryption. The key seems to change for each string though and I could not yet find where or how it is defined.

Link to comment
Share on other sites

On 11/28/2022 at 6:53 AM, Anonym271 said:

I did some research about this ISM engine. I found this very interesting GitHub repository about all kinds of VN engines and it contains a link to this download page. There you can download all kinds of stuff needed to create a VN with the ISM engine (the .lzh archives can be opened with 7zip, WinRAR or other archivers). Especially interesting is the ISM development environment. Sadly, as far as I could see, none of the packages contains tools to decompose an existing game. But what I could find out so far is that the scripts are written in an own scripting language (.iss) and then compiled into .ism files. So you would probably need to write some kind of disassembler for these compiled scripts in order to edit them for translation. This seems like a hard but not impossible project, especially because we have access to the script compiler (it is contained in the dev environment).

I already looked into the ISM scripts and found some stuff, in case it helps:

  • Header
    • 12 byte magic number ("ISM SCRIPT")
    • 4 byte file size
    • 4 byte offset, some offset in the file. Probably beginning of the code segment or something
    • 4 byte uint, probably some kind of count (maybe local variables?)
    • 4 byte count1
    • 4 byte count2 --> count1 & count2 seem to be always the same
  • Some list, directly after the header
    • count is header.count1 (or count2)
    • each entry is a struct { uint1, uint2, uint3 }
      • uint1 is increasing with each entry, starting at 0
      • uint2, uint3 are relatively small numbers
  • After that follow some readable strings (usually 2) like CHAP1_A and CountParagraph%0
    • each one prefixed by its length (1 byte) and followed by a 0 terminator
  • Then more readable strings (same format), maybe function definitions or something
  • Then follows the segment that header.offset (the third entry) points to

By compiling one of the ISS examples from the mentioned download page I also found out that strings are stored with a simple XOR encryption. The key seems to change for each string though and I could not yet find where or how it is defined.

Wow! Thanks so much for taking the time to respond. I am not much of a coder so a lot of what you said went over my head (sysadmin here lol). Very interesting stuff here though. It doesn't sound easy at all unfortunately. I will look into it more later, but right now I am probably better off shelving this, or commissioning someone to research and create me a disassembler of some kind.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...