Massassi Forums Logo

This is the static archive of the Massassi Forums. The forums are closed indefinitely. Thanks for all the memories!

You can also download Super Old Archived Message Boards from when Massassi first started.

"View" counts are as of the day the forums were archived, and will no longer increase.

ForumsDiscussion Forum → Unlocking ancient game data archive
Unlocking ancient game data archive
2015-07-14, 5:01 PM #1
I have no idea if this is even possible, but maybe one of you guys has an idea.

I have the 1998 game FutureCop LAPD installed, and I'd like to rip models from it (probably impossible). Modern DirectX rippers or w/e don't work because it's too old, as far as I can tell.

The game data is ENTICINGLY suffixed ".bin" which made me think maybe I could open it with Stuffit Expander. No dice, though. Presumably it's not a CD image, and it doesn't come with a .cue file or whatever.

Any ideas? Is it possible I can rip stuff out of this game or will its secrets remain LOCKED AWAY FOREVER
2015-07-14, 5:50 PM #2
I've done work like this before. It might be a compressed filesystem of some sort, or just a blob of assets accessed by index offsets.
It's definitely possible to extract the data, but it will probably take some work.

How big is this bin file? Are there any associated index files? Crack it open in a hex editor and poke around a little.
And when the moment is right, I'm gonna fly a kite.
2015-07-14, 6:30 PM #3
Originally posted by gbk:
I've done work like this before. It might be a compressed filesystem of some sort, or just a blob of assets accessed by index offsets.
It's definitely possible to extract the data, but it will probably take some work.

How big is this bin file? Are there any associated index files? Crack it open in a hex editor and poke around a little.


It's about 9 megs. Here's the file for reference (it's from the free demo version so I don't think there's a copyright issue)

I don't think there's any associated files--the game installation is an EXE, the .bin file, and a folder called "missions" with some files that don't have any filetype suffix at all. I wouldn't mind cracking those open either

I'll definitely see what I can do with a hex editor, thanks!
2015-07-15, 4:10 AM #4
.bin is one of those filetypes that while these days we associate it with CD images, really doesn't have a fixed format. Taking a peek at it, looks like the resources are just thrown into that file one after the other, I didn't see anything that would give a hint as to the contents.
$do || ! $do ; try
try: command not found
Ye Olde Galactic Empire Mission Editor (X-wing, TIE, XvT/BoP, XWA)
2015-07-15, 6:54 AM #5
Originally posted by Darkjedibob:
.bin is one of those filetypes that while these days we associate it with CD images, really doesn't have a fixed format. Taking a peek at it, looks like the resources are just thrown into that file one after the other, I didn't see anything that would give a hint as to the contents.


.bin means binary, aka a file for non-text information
2015-07-15, 1:01 PM #6
Originally posted by Darkjedibob:
.bin is one of those filetypes that while these days we associate it with CD images, really doesn't have a fixed format. Taking a peek at it, looks like the resources are just thrown into that file one after the other, I didn't see anything that would give a hint as to the contents.


Damn, I guess there's nothing for it :((
2015-07-15, 2:18 PM #7
That file jumps into texture data super quick.

Code:
0000000: 9700 0000 424d 6e13 0000 0000 0000 3600  ....BMn.......6.
0000010: 0000 2800 0000 5100 0000 1e00 0000 0100  ..(...Q.........
0000020: 1000 0000 0000 3813 0000 130b 0000 130b  ......8.........
0000030: 0000 0000 0000 0000 0000 4504 2404 2400  ..........E.$.$.
0000040: 2400 2400 2404 2404 2400 2404 2504 2400  $.$.$.$.$.$.%.$.
0000050: 2404 2400 2404 2504 2504 4504 4504 2504  $.$.$.%.%.E.E.%.
0000060: 4504 2400 2400 2400 2504 2400 2400 2400  E.$.$.$.%.$.$.$.
0000070: 2404 2504 2504 2504 2400 2400 2400 2404  $.%.%.%.$.$.$.$.
0000080: 2400 2400 2400 2400 2400 2400 2400 4504  $.$.$.$.$.$.$.E.
0000090: 4504 4504 2400 2400 2400 2400 2400 2404  E.E.$.$.$.$.$.$.
00000a0: 2504 2404 2504 4504 2404 2400 2400 2504  %.$.%.E.$.$.$.%.
00000b0: 4504 2504 2400 2400 2400 2404 2504 2404  E.%.$.$.$.$.%.$.
00000c0: 2404 2400 2400 2400 2400 2504 2404 2400  $.$.$.$.$.%.$.$.
00000d0: 2400 4504 4504 2400 2404 2504 2f6f 2400  $.E.E.$.$.%./o$.
00000e0: 0300 2400 4504 4504 2400 2400 2504 2504  ..$.E.E.$.$.%.%.


This is a 16-bit texture. 0x2400 is about this color (218100) if it looks familiar to you.

Ascii 'BM' shows up a lot so it's probably the start of a texture file. Width and height data will follow between this and the bitmap data. Could be big endian, could be little endian. Just takes experimenting.

Can't see any archive metadata, normally it would be at the start or at the end but it's 16-bit bitmaps all the way through, so it either has an external index or they compiled it down to file offsets or something.
2015-07-15, 3:21 PM #8
These files are standard 16-bit bitmaps.
2015-07-15, 3:40 PM #9
The first 32 bits of the file are a count. Everything else in the file is a standard 16-bit bitmap file.

Can't say I think much of the images in this archive, but this program will extract them for you.

Code:
#include <iostream>
#include <cassert>
#include <cstdint>
#include <vector>
#include <sstream>
#include <fstream>


int main(int argc, char **argv)
{
    assert(argc == 2);


    std::ifstream f(argv[1]);


    // Skip first 32-bit int (count?)
    uint32_t count = 0;
    f.read(reinterpret_cast<char*>(&count), sizeof(count));


    uint32_t curr = 0;
    while(f.good()) {
        std::stringstream fn;
        fn << "image" << curr << ".bmp";


        uint16_t ident;
        f.read(reinterpret_cast<char*>(&ident), sizeof(ident));


        uint32_t size;
        f.read(reinterpret_cast<char*>(&size), sizeof(size));


        std::vector<char> buf;
        uint32_t bufsz = size - sizeof(size) - sizeof(ident);
        buf.resize(bufsz);


        f.read(&buf[0], bufsz);


        if(f.good()) {
            std::ofstream of(fn.str());
            of.write(reinterpret_cast<char const *>(&ident), sizeof(ident));
            of.write(reinterpret_cast<char const *>(&size), sizeof(size));
            of.write(&buf[0], bufsz);
        }


        ++curr;
    }
    return 0;
}


your are welcome
2015-07-15, 3:41 PM #10
They aren't textures, they're gui images.
2015-07-15, 3:44 PM #11
2015-07-15, 3:59 PM #12
Damn, Jon beat me to it. :P

Originally posted by 'Thrawn[numbarz:
;1190522']...and a folder called "missions" with some files that don't have any filetype suffix at all.

Those sound interesting. How big are they?
And when the moment is right, I'm gonna fly a kite.
2015-07-15, 5:23 PM #13
This unauthorized reverse engineering of Electronics Arts intellectual property has been reported to the EA legal department.

Have a nice day.
2015-07-15, 5:31 PM #14
EA Sports

It's in the butt
2015-07-15, 6:25 PM #15
Originally posted by Jon`C:
The first 32 bits of the file are a count. Everything else in the file is a standard 16-bit bitmap file.

Can't say I think much of the images in this archive, but this program will extract them for you.

Code:
#include <iostream>
#include <cassert>
#include <cstdint>
#include <vector>
#include <sstream>
#include <fstream>


int main(int argc, char **argv)
{
    assert(argc == 2);


    std::ifstream f(argv[1]);


    // Skip first 32-bit int (count?)
    uint32_t count = 0;
    f.read(reinterpret_cast<char*>(&count), sizeof(count));


    uint32_t curr = 0;
    while(f.good()) {
        std::stringstream fn;
        fn << "image" << curr << ".bmp";


        uint16_t ident;
        f.read(reinterpret_cast<char*>(&ident), sizeof(ident));


        uint32_t size;
        f.read(reinterpret_cast<char*>(&size), sizeof(size));


        std::vector<char> buf;
        uint32_t bufsz = size - sizeof(size) - sizeof(ident);
        buf.resize(bufsz);


        f.read(&buf[0], bufsz);


        if(f.good()) {
            std::ofstream of(fn.str());
            of.write(reinterpret_cast<char const *>(&ident), sizeof(ident));
            of.write(reinterpret_cast<char const *>(&size), sizeof(size));
            of.write(&buf[0], bufsz);
        }


        ++curr;
    }
    return 0;
}


your are welcome



Thank you for these computer codes, I will research how to deploy them

Originally posted by gbk:
Damn, Jon beat me to it. :P


Those sound interesting. How big are they?

4-10 MB apiece. Here they are: https://dl.dropboxusercontent.com/u/3677532/secrets.zip

Probably more likely to contain actual game assets, I don't know why I didn't expect menu stuff in the first one :v
2015-07-15, 11:03 PM #16
what are you some kind of a .bin laden lol
Star Wars: TODOA | DXN - Deus Ex: Nihilum
2015-07-16, 6:47 AM #17
This thread is so good. The discussion forum is really at a local maximum for quality this week.
2015-07-16, 9:13 AM #18
Originally posted by FastGamerr:
what are you some kind of a .bin laden lol


like
If you think the waiters are rude, you should see the manager.
2015-07-16, 9:22 AM #19
this is a .bin laden w/ 16 bit images alright
2015-07-16, 9:39 AM #20
more like obama .bin lyin' about its contents
If you think the waiters are rude, you should see the manager.
2015-07-16, 9:44 AM #21
Originally posted by saberopus:
This thread is so good. The discussion forum is really at a local maximum for quality this week.

if this thread keeps up in a couple days we're gonna get aggregated by buzzfeed
2015-07-16, 9:54 AM #22
10 ways you've been editing JK incorrectly.
2015-07-16, 10:27 AM #23
14 problems only Dark Jedi with miniature twin brothers will understand
If you think the waiters are rude, you should see the manager.
2015-07-16, 11:12 AM #24
he wanted to open a file from the 90s. what he found inside will blow your mind
2015-07-16, 11:44 AM #25
To be perfectly honest, I would consider clicking on that.
2015-07-16, 11:47 AM #26
wow
2015-07-16, 12:19 PM #27
that's why they call it clickbait, cause you click on it
If you think the waiters are rude, you should see the manager.
2015-07-16, 12:47 PM #28
I should have chosen Force Seeing. .(
2015-07-16, 2:11 PM #29
Originally posted by Reverend Jones:
To be perfectly honest, I would consider clicking on that.


it was 16-bit bmps
2015-07-16, 2:22 PM #30
Originally posted by 'Thrawn[numbarz:
;1190556']it was 16-bit bmps


:eek:

:master:
2015-07-19, 3:11 PM #31
The game industry HATES this guy!
I can't wait for the day schools get the money they need, and the military has to hold bake sales to afford bombs.

↑ Up to the top!