The VG Resource
Ripping Monolith, need assistance with conversion - Printable Version

+- The VG Resource (https://www.vg-resource.com)
+-- Forum: The Resources (https://www.vg-resource.com/forum-109.html)
+--- Forum: The Spriters Resource (https://www.vg-resource.com/forum-110.html)
+---- Forum: Ripping Help (https://www.vg-resource.com/forum-114.html)
+---- Thread: Ripping Monolith, need assistance with conversion (/thread-37167.html)



Ripping Monolith, need assistance with conversion - Azathoth Noir - 05-18-2020

Joined here since I have found that an indie game I'd like to have sprites of hasn't already been ripped, and decided to do so myself.

I already have all the files decompiled, I just need to convert them into a readable file format (ideally PNG) that does not require the proprietary software used the create the game (its a GameMaker Studio game).

The game in question, if you're curious: https://store.steampowered.com/app/603960/Monolith/ - it's a retro, top-down, twinstick bullet hell/SHMUP roguelike.

Problem is, I don't have GMS myself (and I'm not going to pirate it, obvs). And since the files appear as having no extension, it won't be opened by any editing software I have. Does anyone have a solution for this? Will post the unconverted rips in a reply if having someone with GMS convert them is needed.

Thanks.

If it would help, here's a pic of some of the sprite files extracted from the data.win for the game.
   


RE: Ripping Monolith, need assistance with conversion - Sei Bellissima - 05-22-2020

Have you tried UndertaleModTool? I've had success ripping both the GameMaker games I have (Hyper Light Drifter and Wandersong) with it. https://github.com/krzys-h/UndertaleModTool/releases

The latest release includes a script to extract all the sprites at once, but I wouldn't recommend using it because it has an issue with extracting the sprites: it'll crop them instead of exporting the sprites in an animation with equal dimensions. The previous release, 0.2.0, does not have this issue though and here's the modified script that will work with it:

Code:
using System.Text;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using UndertaleModLib.Util;

int progress = 0;
string texFolder = GetFolder(FilePath) + "Export_Textures" + Path.DirectorySeparatorChar;
TextureWorker worker = new TextureWorker();

Directory.CreateDirectory(texFolder);

UpdateProgress();
await DumpSprites();
HideProgressBar();
ScriptMessage("Export Complete.\n\nLocation: " + texFolder);

void UpdateProgress() {
    UpdateProgressBar(null, "Sprites", progress++, Data.Sprites.Count);
}

string GetFolder(string path) {
    return Path.GetDirectoryName(path) + Path.DirectorySeparatorChar;
}


async Task DumpSprites() {
    await Task.Run(() => Parallel.ForEach(Data.Sprites, DumpSprite));
}

void DumpSprite(UndertaleSprite sprite) {
    for (int i = 0; i < sprite.Textures.Count; i++)
        if (sprite.Textures[i]?.Texture != null)
            worker.ExportAsPNG(sprite.Textures[i].Texture, texFolder + sprite.Name.Content + "_" + i + ".png");

    UpdateProgress();
}

Paste this code into notepad and make sure you save it as a csx file; otherwise it won't work. Open your data.win in UndertaleModTool; then click "Scripts", "Run other script", and select the csx file you just made. The tool will make a new folder and dump all the sprites in it (This might take a while depending on how many sprites the game has)


RE: Ripping Monolith, need assistance with conversion - Azathoth Noir - 05-22-2020

(05-22-2020, 11:49 AM)Sei Bellissima Wrote: Have you tried UndertaleModTool? I've had success ripping both the GameMaker games I have (Hyper Light Drifter and Wandersong) with it. https://github.com/krzys-h/UndertaleModTool/releases

The latest release includes a script to extract all the sprites at once, but I wouldn't recommend using it because it has an issue with extracting the sprites: it'll crop them instead of exporting the sprites in an animation with equal dimensions. The previous release, 0.2.0, does not have this issue though and here's the modified script that will work with it:

Code:
using System.Text;
using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using UndertaleModLib.Util;

int progress = 0;
string texFolder = GetFolder(FilePath) + "Export_Textures" + Path.DirectorySeparatorChar;
TextureWorker worker = new TextureWorker();

Directory.CreateDirectory(texFolder);

UpdateProgress();
await DumpSprites();
HideProgressBar();
ScriptMessage("Export Complete.\n\nLocation: " + texFolder);

void UpdateProgress() {
    UpdateProgressBar(null, "Sprites", progress++, Data.Sprites.Count);
}

string GetFolder(string path) {
    return Path.GetDirectoryName(path) + Path.DirectorySeparatorChar;
}


async Task DumpSprites() {
    await Task.Run(() => Parallel.ForEach(Data.Sprites, DumpSprite));
}

void DumpSprite(UndertaleSprite sprite) {
    for (int i = 0; i < sprite.Textures.Count; i++)
        if (sprite.Textures[i]?.Texture != null)
            worker.ExportAsPNG(sprite.Textures[i].Texture, texFolder + sprite.Name.Content + "_" + i + ".png");

    UpdateProgress();
}

Paste this code into notepad and make sure you save it as a csx file; otherwise it won't work. Open your data.win in UndertaleModTool; then click "Scripts", "Run other script", and select the csx file you just made. The tool will make a new folder and dump all the sprites in it (This might take a while depending on how many sprites the game has)
Thanks a lot! Since I have notepad++ that should be as easy as pie.