Jump to content

Home

MonkeyPack v0.3 - ReMI unpacker & repacker


Didero

Recommended Posts

Hi!

 

After finishing Return To Monkey Island, I wanted a new puzzle, so I tried to unpack the game files. Thanks to far smarter people than me working on expanding BgBennyBoy's Thimbleweed Park Explorer, I managed to unpack and re-pack the game files.

May I present to you:  MonkeyPack.

So far this is a pretty bare-bones commandline application, but it can do the most important parts: Unpacking the existing ReMI ggpack files, and re-packing edited files.

To unpack: select one or more ggpack files, and drag and drop them onto the application; or open a commandline where you extracted the application, and call it with the arguments 'unpack [path to ggpack(s)]', for instance 'MonkeyPack.exe unpack "C:\Program Files\Steam\SteamApps\Return To Monkey Island\Weird.ggpack1a"'. Game files will be extracted to where MonkeyPack resides, in a subfolder named after the ggpack file.

To pack: Select one or more files and/or folders (no ggpack files), and drag and drop them on the application; or open a commandline where you extracted the application, and call it with the arguments 'pack [list of filenames/folders to pack', for instance 'MonkeyPack.exe pack Text_en.tsv Text_de.tsv"'. The new ggpack file will be created where MonkeyPack resides.

The project's readme explains things in a bit more detail.

 

I found that if you pack a file with the same name as one of the packed files, and name it so it gets sorted after the existing files (Like 'Weird.ggpack6'), the data in the repacked file takes precedence over the existing data. This for instance makes it easy to use fan-made translations: Unpack 'Weird.ggpack1a', find the 'Text_en.tsv' file, translate some text, repack it, and place the new ggpack back into the game folder, and the English text should be replaced with the fan-translated one.

 

I hope it's ok for me to post this, and that people find uses for it! If there are any questions or if I didn't word something clearly, please let me know!

 

Versionlog:

MonkeyPack v0.3 - 2022-10-17:

-Fix a bug in the GGDict parser, that could make it miss some strings in the strings list

 

MonkeyPack v0.2 - 2022-10-10:

-Don't keep all the files to pack in memory. This massively reduces memory usage during packing
-'pack' now ignores ggpack files
-Add filename filtering. For example, 'monkeypack.exe unpack path/to/game/Weird.ggpack1a *.tsv' only unpacks the .tsv files from the ggpack file. Works for 'list' and 'pack' too.
-Update help inside program
-Update and expand readme

 

MonkeyPack v0.1 - 2022-10-03:

-Initial release

Edited by Didero
Released version 0.3
  • Like 3
  • Thanks 5
  • Wow 1
Link to comment
Share on other sites

I was under the impression that MacOS came with Python pre-installed. So you should be able to check out the repository (or just download the files directly by clicking on the green 'Code' button and then on 'Download ZIP'; or by clicking here), then you can use MonkeyPack as described in the readme by dragging files on top of main.py or by calling it from a terminal with 'python3 main.py [command]'.

MonkeyPack needs at least Python 3.8 though, which you can check by running 'python3 --version'.

I realise having a single executable app file for MacOS, like I made for Windows users, would be far easier, but those can only be made in MacOS itself, and I have no access to that, sorry :(

  • Thanks 1
Link to comment
Share on other sites

4 hours ago, dan_the_rebirth said:

so did anyobe find sonething of interest in it maybe unused grafics? or just hidden content outside the screen? i own the switch version so i cant unpack ut myself 

All of the images are stored as '.ktxbz', and MonkeyPack can't turn them into something easily viewable like PNG.

They've added support for viewing images to Thimbleweed Park Explorer, but that's only in the development version, they've not made a release of it yet.

I've extracted a files list with MonkeyPack's 'list' subcommand, but since that file resulted in almost 23,000 lines, instead of embedding it here, I've attached it to this message as a textfile. Maybe somebody can find something interesting among the filenames, if they want to.

RtMI_packedFilesList.txt

Link to comment
Share on other sites

  • Didero changed the title to MonkeyPack v0.2 - ReMI unpacker & repacker

I just released an update, version 0.2. Now packing files should use far less memory. And you can add filename filters so you don't have to unpack the entire ggpack, but you can for instance do 'unpack Weird.ggpack1a *.tsv' to just get the translation files. I also rewrote and expanded the included readme, I hope it's more clear now and explains everything, without being too wordy.

  • Like 1
Link to comment
Share on other sites

There's two reasons MonkeyPack doesn't convert those ktxbz files to png's, translates the Yack files, or does other conversions:

1) I very intentionally tried to keep MonkeyPack simple, both code-wise and to use. To convert ktxbz files, I'd have to use a separate library, which means you have to set up a virtual environment to use the Python script, which isn't exactly intuitive.

2) I want extracted files to be re-packable. The Yack files still have some unknown op-codes, and re-packing files with unknown data seems risky. To re-pack a ktxbz converted to a png, I'd have to check if a ktxbz exists with the same name as a converted PNG, but then I'd also need to be sure that they're not just allowed to exist next to each other. Then if both a ktxbz and a png of the same name existed, do I pack just the ktxbz, or both the png and ktxbz, or do I first convert the png back to ktxbz which overwritese the existing ktxbz? Ith makes the code more complex and makes the result less predictable for the end-user.

 

For just extracting data to look at the contents, Thimbleweed Park Explorer (or Dinky Explorer as it's now (going to be) called), ggtool, or gg should work to some extent.

  • Like 1
Link to comment
Share on other sites

  • Didero changed the title to MonkeyPack v0.3 - ReMI unpacker & repacker

I found a bug in my GGDict parser that could have it miss some strings, leading to an error. I didn't run into it while unpacking and repacking the ggpack files, but I released a version 0.3 to fix it anyway, just to be sure.

 

(Also sorry if I'm not supposed to bump my own topic like this)

  • Like 2
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...