Jump to content

Mindlock The Apartment (Visionaire Studio 5) - unpack/repack help


Pikor
Go to solution Solved by Ghylard,

Recommended Posts

I've had a look at it.  There is a hash table (unknown algorithm) and a file table, both are encrypted, although it is reasonably straightforward xor.  The file table seems to be in ascending order of hash value, but not sure if your file list is in the same order.  It should be possible to extract, but not sure about reimport.  Also, the .ogg files in the archive seem to be correct, but the .png files seem corrupted or encrypted somehow.

 

Link to comment
Share on other sites

Posted (edited)

I realize most of the things you wrote. I came to this while looking for tools. Something that rubs against the new version of the engine I found here: https://oezmen.eu/gameresources/ (included source code), but the tool has support only up to version 5.1.6. Engine version March 2021.

And something for version 3: http://www.nullsecurity.org/article/predicting_numbers_vis3_xor_encryption; http://www.nullsecurity.org/article/a_new_beginning-png_fixing

Edited by Pikor
  • Like 1
Link to comment
Share on other sites

  • Solution
Posted (edited)

So far, I haven't figured out how to translate a game made with Visionaire Studio 5, but here's what I've discovered.

1 ) Data extraction from the vis file with Ravioli - Scanner (https://www.scampers.org/steve/sms/other.htm)

2) Image decryption:
This little Python program decrypts images one by one: png_vis.py (https://github.com/AngelDevIndie/Visionaire_translation/blob/main/png_vis.py)

3) Image encryption:
This little program can be used to encrypt images.

RECOVER widths and heights .PNG textures.7z

Put original pngs in unpakke_old_png
Put modified pngs in new_png
Click on RECOVER WH PNG

4) Creating a veb file (compressed vbin):
Find the dat file containing the word vbin.
Using a hexadecimal editor, copy the part from vbin (included) to the end of the file, then use the hexadecimal editor to create a xxxx.veb file.

5) Subtitle extraction (Visionaire Studio software required):
Open the xxxx.veb file with Visionaire Studio 5.
You'll see a message saying that some plugins are missing.
Go to the top menu and click on the icon with 3 horizontal stripes
Go to Extras - Export texts...
Choose extraction file type (po or csv), extraction directory and other options

6) Subtitle translation

7) Reinserting subtitles with Visionaire Studio:
Open the xxxx.veb file in Visionaire Studio 5.
Go to the top menu and click on the icon with 3 horizontal stripes
Go to Extras - import texts...

The file can be saved as a ved file (uncompressed xml) if the translation is not finished.
The file can also be saved as a veb file (compressed).

😎 What next?
a) If you try to recompile with Ravioli -Scanner, your veb file will have to be reinserted into the original dat file with a hex editor, but if its size is greater than the original version, recompilation will be impossible with Ravioli Scanner.

The resulting new vis file won't work in the game anyway.

b) Someone has translated 3 games similar to Mindlock - The Apartment.
The 3 translated games are Nelson and the Magic Cauldron, Nelson and the Magic Cauldron: The Journey and Lucy Dreaming.
These 3 translation patches can be found at https://scummbr.org/forum/index.php?board=2.20.

c) Having examined and compared these 3 translated games with the original versions, I realized that the translator had recompiled the game with Visionaire Studio, adding modified files (veb and/or png) to the original vis file.


For the moment, I haven't investigated this further, so I don't know if it works.🙂

png_vis.py Mindlock_Subtitles.zip

Edited by Ghylard
  • Like 2
Link to comment
Share on other sites

  • ikskoks changed the title to Mindlock The Apartment (Visionaire Studio 5) - unpack/repack help
On 1/8/2025 at 2:54 PM, Ghylard said:

a) If you try to recompile with Ravioli -Scanner, your veb file will have to be reinserted into the original dat file with a hex editor, but if its size is greater than the original version, recompilation will be impossible with Ravioli Scanner.

When I prepared veb file, and load in VS5 I see two language (English and German). So, what if I wipe DE texts and translate EN? It should be enough bits for longer language. This should (in theory) work. EDIT: Yep, that's work. The game displays the new texts. I don't check images. But if something doesn't work, I'll let you know.

On 1/10/2025 at 5:41 PM, samfisher said:

Now that I've edited the subtitle file you provided, how can I insert it back into the original file?

Where can I find the font?

Prepare project veb file just cutting from vis file. Open in Visionaire Studio 5. Export text file via CSV. Translate. Import to the Visionaire Studio 5. Save project as. Inject HEX from new veb file to the vis file (remove old HEX part VBIN > end file, and paste new one).

I saw some fonts in VS5 after checking what is in the project. I don't know (for now) if I change the font it will work. (EDIT: with my luck, fonts already contains my language chars, and engine using UTF8 encoding ☺️)

obraz.png.c2557a7ca493003cb6299b56e7e4f67c.png

On 1/8/2025 at 8:25 PM, ikskoks said:
On 1/8/2025 at 8:25 PM, ikskoks said:

I can't download your file for some reason. Can you reupload to google drive or mega.nz?


Weird, you are from Poland then you should be able to download from my NAS. But I see already someone helped with the file. 😉

Edited by Pikor
  • Like 1
Link to comment
Share on other sites

On 1/8/2025 at 2:54 PM, Ghylard said:

c) Having examined and compared these 3 translated games with the original versions, I realized that the translator had recompiled the game with Visionaire Studio, adding modified files (veb and/or png) to the original vis file.

Out of curiosity, I checked if this way also works with an older game (BornPunk). While cutting out the VBIN gives you the ability to open it in VS5, saving in the latest version of the program (not changing anything) and injecting it into the vis file crashes the game. Most likely you need the same or similar version of VS5 on which the game was made. Unfortunately they don't keep version archives like Unity for example ;(

Link to comment
Share on other sites

2 hours ago, Pikor said:

Unfortunately they don't keep version archives like Unity for example ;(

You can download some older versions of Visionaire Studio from https://www.visionaire-studio.net/shop/ if you have a licence.

 

NXmL4ocsAn.png.7b499cc10b5d30d7f83bf1dcd65be689.png

 

23 hours ago, Pikor said:

I make some changes in pyton png script. Now no need open file one by one. You can select a few files and wait until script finish the loop.

Thanks, that saves time!

Link to comment
Share on other sites

6 hours ago, samfisher said:

I found 5 files with the dat format, and one of them contained a vbin file. I copied it from the specified location and then placed it in a text file, changing its format to veb. However, when I import it into the software, it gives an error.

You didn't do the right thing!

You shouldn't have pasted it into a text file, you're working on a binary file.

When you're in your hex editor, you need to create a new file into which you'll paste the part you copied from the dat file.

You then save this new file as *.veb.

If you've done everything correctly, the file should be able to be opened in Visionaire Studio 5.

Link to comment
Share on other sites

On 1/13/2025 at 4:52 PM, Ghylard said:

You can download some older versions of Visionaire Studio from https://www.visionaire-studio.net/shop/ if you have a licence.


All iterations of the engine are not there. Doesn't work ;F

 

11 hours ago, samfisher said:

I found 5 files with the dat format, and one of them contained a vbin file. I copied it from the specified location and then placed it in a text file, changing its format to veb. However, when I import it into the software, it gives an error.


Do as Ghylard said. Use a HEX editor, not a text editor.


Everything what I wrote below you do after translate and save new VEB and PNG files.

obraz.thumb.png.da49ddd61f102642ffcf2584a9dbaf15.png

To be 100% sure that everything would work I added empty bits in the translated VIB file from the end of the file to the offset that was in the original. I copy all that bits. Later, placing the cursor in front of V (the beginning of the copy section from the original VIS file), I pasted the NEW bits by overwriting the OLD ones.

Remember: new VIB file must have the same (before inject to VIS file) or less bits (before add empty bits and inject to VIS file).

With PNGs I do the same and add empty bits, to keep the data the same size). Without that, when I replace images using Ravioli game crash.

obraz.thumb.png.53bb8124ee7eabd0de17a763a6c7f8b0.png

 

You see? New text and flag image. Everything work 😉 

Edited by Pikor
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...