Tool Pixel Game Maker MV extractor

Emerald_Gladiator

Active Member
Jun 9, 2017
982
1,940
So instead I've modified my tool and here's texts.exe, which you copy in the same folder as the game (where player.exe is).

To extract texts, just run it, works with encrypted games too out-of-the-box. This will save "texts.csv", which you can open with Excel, LibreOffice, GoogleSheets, whatever and you can edit it as you please. Adding a new language is simple as adding a new column (you can copy'n'paste an entire column into a translator and then copy'n'paste the result back for example).

To update texts, run "texts.exe texts.csv". This will locate the "textList" array within the json, and it does not even parse what's before or after that (which is 99% of the file), just copies both verbatim, so it is blazing fast (less than a second on an over 50 Mb project.json). Even within the "textList" array, only "text" arrays are replaced, and only if there's a row in the csv with a matching id. Everything else, even the linebreaks are copied verbatim, so it is extremely safe to use, it won't mess up the json for sure (but it's always better to create a backup first).
Hey, thanks for the tool.
Doesn't work for me though. I've followed the instructions to place "test.exe" in the game directory (with the player.exe file). When running the exe file, it immediately opens a command window and crashes without dialogue. No texts.csv file is created either.

Any ideas?
 

justaplayer69

Newbie
Nov 29, 2023
72
107
Hey, thanks for the tool.
Doesn't work for me though. I've followed the instructions to place "test.exe" in the game directory (with the player.exe file). When running the exe file, it immediately opens a command window and crashes without dialogue. No texts.csv file is created either.

Any ideas?
It's "texts.exe". Could you please open a command line window (CMD.EXE), type "cd (your game's path)" press Enter and then type "texts" press Enter? Does it print anything? (This way the window won't disappear immediately so you can take a screenshot and attach it here). Also is the game in question on f95zone? Could you give me a link so that I could reproduce the issue?
(On a side note, my tool only works if keylength is 16 bytes, some more recent PGMMV versions use 32 bytes, I'm working on supporting those too.)

xj47: would it be possible to add saving project.json to your extractor? Injecting DLLs can be troublesome and less elegant, but you're perfectly right that it's an always working solution. If it could save project.json not just images then translators could use it.
 

xj47

Member
Nov 4, 2017
241
403
xj47: would it be possible to add saving project.json to your extractor? Injecting DLLs can be troublesome and less elegant, but you're perfectly right that it's an always working solution. If it could save project.json not just images then translators could use it.
It's been a while but I think the issue with project.json was the file size. Trying to decrypt it all at once caused an error and since the tool doesn't "know" how the decryption works, it can't be broken into smaller pieces.

If the file is small enough it should already be able to save it. The general process is: 1. Generate a list of encrypted files to be decrypted. 2. Have the injected DLL decrypt them.
Starting with version 2.3, you can modify the list of the desired files and specify a file like project.json directly. (It's a bit hidden, but the readme covers this in the troubleshooting section)

Is this really an obstacle for your tool though? It seems like you figured out how the encryption works and I doubt that the 32 byte variant is that different.
 

justaplayer69

Newbie
Nov 29, 2023
72
107
It's been a while but I think the issue with project.json was the file size.
I see.

If the file is small enough
Not a chance, project.json is typically a several tens of megabytes monstrocity with all the game data in one place and lots and lots of spaces and tabs.

Anyway, thank you for your reply! I'll keep on working with the 32 bytes key then. BTW, have you seen that? I'm sure the IV is the same, the encryption is the same (twofish + xor in 16 bytes blocks), but I only know the key bitshuffling algorithm for the 16 bytes key variant and not for the 32 bytes key variant. Any info would help.
 

xj47

Member
Nov 4, 2017
241
403
BTW, have you seen that? I'm sure the IV is the same, the encryption is the same (twofish + xor in 16 bytes blocks), but I only know the key bitshuffling algorithm for the 16 bytes key variant and not for the 32 bytes key variant. Any info would help.
I haven't looked at or really done any cracking work in the past year or so.
At a high level, if you can force the algorithm to be run on an input of your choosing and examine the results, I'd recommend testing inputs with a clear pattern like all 0x00, all 0xFF, or 0x01 to 0x20. Depending on the method there might be a clear pattern in the result.
 

Emerald_Gladiator

Active Member
Jun 9, 2017
982
1,940
It's "texts.exe". Could you please open a command line window (CMD.EXE), type "cd (your game's path)" press Enter and then type "texts" press Enter? Does it print anything? (This way the window won't disappear immediately so you can take a screenshot and attach it here). Also is the game in question on f95zone? Could you give me a link so that I could reproduce the issue?
(On a side note, my tool only works if keylength is 16 bytes, some more recent PGMMV versions use 32 bytes, I'm working on supporting those too.)
Sorry, that was a typo. Yes, it's texts.exe.

The error is "Unable to locate 'textList' in Json". Any idea what that means?

Game is Dark Hunter Kuro: https://f95zone.to/threads/dark-hunter-kuro.144755/
 

justaplayer69

Newbie
Nov 29, 2023
72
107
The error is "Unable to locate 'textList' in Json". Any idea what that means?
Just as it sounds: there's no 'textList' array in the json. So that game's project.json has no textList block which is supposed to hold the translatable texts.
That page has no download links whatsoever, how am I supposed to check this game's files? I need a mega, rapid, etc. link or maybe attach Resources\data\info.json and Resources\data\project.json here. I can't take a look if I can't get the files.
 

Emerald_Gladiator

Active Member
Jun 9, 2017
982
1,940
Just as it sounds: there's no 'textList' array in the json. So that game's project.json has no textList block which is supposed to hold the translatable texts.
That page has no download links whatsoever, how am I supposed to check this game's files? I need a mega, rapid, etc. link or maybe attach Resources\data\info.json and Resources\data\project.json here. I can't take a look if I can't get the files.
The translation request thread's final page has some download links. Nonetheless, here are the info.json and project.json files.

 

justaplayer69

Newbie
Nov 29, 2023
72
107
The translation request thread's final page has some download links. Nonetheless, here are the info.json and project.json files.

I've checked it. This is an decryption issue, the project.json isn't properly unencrypted, that's why it can't find "textLists" in it. I'll try some alternative methods to get a plain text project.json, but I can't make any promises.
 
  • Like
Reactions: Emerald_Gladiator