04-05-2024, 12:22 AM
For the most part, I rip using tools other people have made. For Flash games, I'll use JPEXS Free Flash Decompiler, for Unity, AssetRipper, that being said, sometimes I run into problematic game files.
I recently tried to rip the mobile Unity game Ultimate Briefcase and I didn't have much luck with my usual tools. I decided to unpacked the APK, browsed around its files and found game.droid — it was the largest file I found, so I figured this was probably where the a lot of the sprites were stored. I searched up the file name (since it's generic enough, it seemed reasonable enough to see if someone else had ripped a similar game). I found this thread and the user Raccoon Sam provided a pretty detailed answer, explaining that there are multiple PNG files stored inside the DROID file.
I went to an online hex editor and began searching for PNG headers/terminators, deleting everything outside of them, and exporting them as PNG files. I know have twenty-four sprite atlases ripped and ready to be made into proper sprite sheets... if I had any idea on the order of the sprites or where to crop them to remove the 'pixel bleed'.
In the thread mentioned, Raccoon Sam talks about "a lookup table with XYWHs" (which I presume the mean a table for each of the sprites with four fields: x-position, y-position, width, height), and was able to find an array that contains this data (even though it's all hex data and I have no idea how someone would find it at all). I don't know much about file implementation to be honest: it's one thing to understand that a plaintext portion of a file is a sequence of ASCII values — it's another to get into file 'sections' like headers, terminators, metadata, all that stuff.
Changing the subject slightly, lately I've been trying to watch some of the YouTube Channel Retro Game Mechanics Explained and its admittedly a bit advanced for me. It's generally pretty low-level stuff: heaps, stacks, data blocks, registers, instruction sets, etc. I would say my understanding of this stuff is tenuous at best: As far as I understand, you have registers as a sort of 'working memory' units for the CPU to interpret simple instructions from the memory, and for the ALU to manipulate (and you have flags that act as a basis of conditionals, and by extension, loops), but beyond that sort of 'loose, conceptual framework' I can't say I know much more about this sort of thing. I tried to teach myself assembly (NASM specifically) and I got pretty lost when it came to the different segments (e.g. .bss, .data) and syscalls and suchlike.
I'd like to do a bit more studying into this sort of "close-to-the-machine" computer science, but I've run into a bit of a problem: I've no clue where to even begin. It seems like 99% of learning resources (most of which I use are ebook PDFs) for CS and IT are only concerned with 'high-level' stuff. I feel like this is sort of the opposite direction I'm trying to go: I'm not trying to learn how to use some super opaque proprietary API, I'd like to get a better understanding of what's going on under the hood.
I recently tried to rip the mobile Unity game Ultimate Briefcase and I didn't have much luck with my usual tools. I decided to unpacked the APK, browsed around its files and found game.droid — it was the largest file I found, so I figured this was probably where the a lot of the sprites were stored. I searched up the file name (since it's generic enough, it seemed reasonable enough to see if someone else had ripped a similar game). I found this thread and the user Raccoon Sam provided a pretty detailed answer, explaining that there are multiple PNG files stored inside the DROID file.
I went to an online hex editor and began searching for PNG headers/terminators, deleting everything outside of them, and exporting them as PNG files. I know have twenty-four sprite atlases ripped and ready to be made into proper sprite sheets... if I had any idea on the order of the sprites or where to crop them to remove the 'pixel bleed'.
In the thread mentioned, Raccoon Sam talks about "a lookup table with XYWHs" (which I presume the mean a table for each of the sprites with four fields: x-position, y-position, width, height), and was able to find an array that contains this data (even though it's all hex data and I have no idea how someone would find it at all). I don't know much about file implementation to be honest: it's one thing to understand that a plaintext portion of a file is a sequence of ASCII values — it's another to get into file 'sections' like headers, terminators, metadata, all that stuff.
Changing the subject slightly, lately I've been trying to watch some of the YouTube Channel Retro Game Mechanics Explained and its admittedly a bit advanced for me. It's generally pretty low-level stuff: heaps, stacks, data blocks, registers, instruction sets, etc. I would say my understanding of this stuff is tenuous at best: As far as I understand, you have registers as a sort of 'working memory' units for the CPU to interpret simple instructions from the memory, and for the ALU to manipulate (and you have flags that act as a basis of conditionals, and by extension, loops), but beyond that sort of 'loose, conceptual framework' I can't say I know much more about this sort of thing. I tried to teach myself assembly (NASM specifically) and I got pretty lost when it came to the different segments (e.g. .bss, .data) and syscalls and suchlike.
I'd like to do a bit more studying into this sort of "close-to-the-machine" computer science, but I've run into a bit of a problem: I've no clue where to even begin. It seems like 99% of learning resources (most of which I use are ebook PDFs) for CS and IT are only concerned with 'high-level' stuff. I feel like this is sort of the opposite direction I'm trying to go: I'm not trying to learn how to use some super opaque proprietary API, I'd like to get a better understanding of what's going on under the hood.