Got Guitar Hero for the PS2? Even if you don't, help me out!

MooglyGuy

New member
I'm trying my damndest to figure out how Guitar Hero stores its data, and I feel like I'm close, but I just can't quite figure it out. All of the game's data is stored in a file called MAIN_0.ARK alongside a file called MAIN.HDR. MAIN_0.ARK is about 2.11 gigs in size, and MAIN.HDR contains all of the filenames as well as the directory structure for MAIN_0.ARK, but I can't quite figure out the way the directory structure is stored. The filenames are stored as a series of zero-terminated strings starting at offset 0x15 or 0x14 (depends on how you think of it) in the file. The file header itself contains five 32-bit values:

0x00000003 (I don't know what this does)
0x00000001 (I don't know what this does)
0x00000001 (I don't know what this does)
MAIN_0.ARK's file size
The offset of the directory structure itself - I presume, anyway, as the value is 0x0000EA1E, and when you add the size of the header (0x14), it points to the first byte directly after the list of filenames.

Then after that, you have a list of about 6534 or 6535 16-bit values. Rather, they're physically 32 bits, but they never go over 0x0000FFFF. Then at offset 0x15052 in the file, the rest of the file is occupied by 2895 20-byte entries, consisting of the following format (as outputted by the util I've written so far):

Unknown 0: 0x0337c1b9
Unknown 1: 0x00001244
Unknown 2: 0x00000037
Unknown 3: 0x00000018
Unknown 4: 0x00000000

Unknown 0: 0x0da78487
Unknown 1: 0x00000027
Unknown 2: 0x0000008c
Unknown 3: 0x00003020
Unknown 4: 0x00000000

Unknown 0: 0x12bcc887
Unknown 1: 0x0000003d
Unknown 2: 0x0000008c
Unknown 3: 0x00010420
Unknown 4: 0x00000000

Unknown 0: 0x144fa727
Unknown 1: 0x000004b2
Unknown 2: 0x0000008c
Unknown 3: 0x00010420
Unknown 4: 0x00000000

Unknown 0: 0x15847bc7
Unknown 1: 0x00000c49
Unknown 2: 0x0000008c
Unknown 3: 0x00008420
Unknown 4: 0x00000000

Unknown 0: 0x0b238247
Unknown 1: 0x00000f10
Unknown 2: 0x0000008c
Unknown 3: 0x00008420
Unknown 4: 0x00000000

Unknown 0: 0x116958a7
Unknown 1: 0x00000f49
Unknown 2: 0x0000008c
Unknown 3: 0x00010420
Unknown 4: 0x00000000

Unknown 0 is probably a file offset, as at no point is it ever greater than the file size. I'm unsure of Unknown 1-3, and Unknown 4 is always NULL.

If anyone wants to take a look at the header file, let me know, and I'll email it to you - I can't post it as an attachment on here because although it's small and unimportant, it's still off of a PS2 game disc, and so would be the same as posting a ROM. I'd be interested in hearing any further ideas, because I'd like to be able to extract the files from the .ARK file and then figure out how Guitar Hero stores the note data (I already know it stores the music in .VGS files) so that I can come up with my own Christmas mix of it for the Christmas party at work, as PS2 debug units can play burned games without any swapping or modding. <img src=smilies/thumb.gif>
 
Oh man.

If i had the game, I'd totally help you out.

I wonder if it's anything like the Karaoke Revolution games... those are by Harmonix too. The songs are actually in General MIDI format. No idea if Guitar Hero is the same way.

Good luck. Let us know what you figure out. :p
 
> Might be a stupid idea, but could the ark file possibly be a
> huge arc compressed file?
>
> (there's a decompressor linked here )

I'm positive. The ARK file is a just a huge binary Katamari, with no header or footer indicative of file type, with the directory structure of the file (and presumably file offsets, since it obviously contains pointers into the ARK file, as well as the ARK file's size, and filenames) contained in the HDR file. And reading the PKARK documentation provided with that decompressor you linked to, the archiver just operates with .ARC files, so no, it's not the same type.
 
I can extract files now!

I still have to manually copy/paste the file out of the archive with a hex editor, but thanks to hcs, it is now known how the directory entry links up with its filename.

Now the main stumbling block is the VGS audio file format. Is anyone familiar with this? I'm hoping it's not just used exclusively by Harmonix.
 
While everyone's been fucking around with Seiken Densetsu 3...

...I've been finding a way to decode the audio format used by Guitar Hero. And I'll post the utility that I wrote that can do it (as well as rip the music files off of a Guitar Hero disc) once I get home from work.
 
Re: While everyone's been fucking around with Seiken Densetsu 3...

> once I get home from work.

Wait, EA is paying you for this? <img src=smilies/magbiggrin.gif>
 
Re: While everyone's been fucking around with Seiken Densetsu 3...

> > once I get home from work.
>
> Wait, EA is paying you for this?

Of course not. I wrote it last night, tried it this morning, then I went to work, now I'm home from work, then I'll post it when I get a chance. <img src=smilies/thumb.gif>
 
> I worked for that company last summer =) I was a texture
> artist on Anti-Grav

Very cool. Funny story: One of the designers where I work is so enthusiastic about seeing custom music put in Guitar Hero that he was essentially offering to get me a PS2 test kit in my cubicle until I pointed out that I'm working on my project at home so that the company doesn't own it. <img src=smilies/thumb.gif>
 
> Very cool. Funny story: One of the designers where I work
> is so enthusiastic about seeing custom music put in Guitar
> Hero that he was essentially offering to get me a PS2 test
> kit in my cubicle until I pointed out that I'm working on my
> project at home so that the company doesn't own it.

they would do that?
 
> they would do that?

Company owning shit you do while you're on the clock? Abso-fucking-lutely... it's usually in the contract when you get hired.
 
> One of the designers where I work
> is so enthusiastic about seeing custom music put in Guitar
> Hero ...

Oh, so that's what you're doing...
Somehow it never clicked that you were trying to insert music, it seemed more that you were trying to extract it. Which is the first step to inserting, I suppose.

In related news, http://forums.maxconsole.net/printthread.php?t=5732people trying to put custom music in Donkey Konga</a>, who I also helped with some format stuff.
 
Re: EDIT: PM me, since my email isn't public.

> > I'm trying my damndest to figure out how Guitar Hero
> stores
>
PM and a post for good measure.

Any luck on this?
<P ID="signature"></P>
 
Re: EDIT: PM me, since my email isn't public.

> Any luck on this?

He did get it working, but he's not on this forum anymore to talk about it.
<P ID="signature"></P>
 
Re: EDIT: PM me, since my email isn't public.

> He did get it working, but he's not on this forum anymore to
> talk about it.
>

What happened to Moogle anyway? What's the story?
<P ID="signature">I am the law. ~ Warden of Marshwood Hill.
</P>
 
Re: EDIT: PM me, since my email isn't public.

There's not much of a story to it. He had a long history of acting rude and juvennile to just about anyone he got a chance to insult, and eventually his "chances" ran out. :>
<P ID="signature"></P>
 
Re: EDIT: PM me, since my email isn't public.

> > Any luck on this?
>
> He did get it working, but he's not on this forum anymore to
> talk about it.
>

Ain't that the luck. Well, anyone know what he was using to transfer the song itself to a playable format? I can extract the song (I get midi and a proprietary VGS format), but can't find anything to play or convert the VGS format.

<P ID="signature"></P>
 
Re: EDIT: PM me, since my email isn't public.

> Ain't that the luck. Well, anyone know what he was using to
> transfer the song itself to a playable format?

I think he wrote something to reinterleave it, it was some variant on a standard PS ADPCM format, the extension of which I don't recall. Try contacting him on AIM (his sn is still in his profile).
<P ID="signature"></P>
 
Back
Top Bottom