Final Fantasy X Europe Demo (PS2) - sample thread

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
AnonBaiter
Posts: 1125
Joined: Tue Feb 02, 2016 2:35 am

Final Fantasy X Europe Demo (PS2) - sample thread

Post by AnonBaiter »

So, I decided to give it a try at extracting these archives from said demo through way of writing a .bms script, but I wasn't quite sure about what to even do with these .FID/.MGD files in the the first place...

In any case, here are the samples related to the demo.
AnonBaiter
Posts: 1125
Joined: Tue Feb 02, 2016 2:35 am

Re: Final Fantasy X Europe Demo (PS2) - sample thread

Post by AnonBaiter »

okay, so i simply decided to figure out these files already.

from what i know, the cdrom.mdg file goes like this:

Code: Select all

getbits AAA1 20 # file offset divided by 0x800
getbits AAA2 4 # file flag
getbits AAA3 8 # remaining "zero" bytes of a file
with that in mind, i decided to write a script that could "extract" these files from the cdrom.mdg file so long as ffxdemo.bin is present.
one thing to note though is that this ".mdg" file can involve the entire contents of the disc if necessary, in fact this has been the case for Chrono Cross(some two-disc game) and Dewprism/Threads of Fate(some one-disc game) whose contents were stored with a similar structure.

for now, this script can only load both ffxdemo.bin and cdrom.mdg and it's not suited for reimporting by this point so take this with a grain of salt

EDIT1:
so, i decided to update this script just to make a few small changes in it. not that it would make any difference on the extraction process anyway, but if you're curious i removed the "next offset" xmath calculation since it made the previous xmath calculation(the "offset" one) look completely redundant in the grand scheme of things.

that leaves the "offset", "size" and "remaining bytes" xmath calculations, not to mention the "size" xmath calculation itself has been redone so it can now subtract only these two untouched variables from each other and then multiply "that" up by 2048. the script is also looking slightly-better as a result of all these changes.