Difference between revisions of "Project Gotham Racing 2"

From xboxdevwiki
Jump to: navigation, search
(File format list I still had on my hdd)
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 +
{{Game}}
 +
 
== File formats ==
 
== File formats ==
  
Line 16: Line 18:
 
Shader:
 
Shader:
 
* ?
 
* ?
 +
 +
=== PAK ===
 +
 +
This is an old, untested and incomplete tool to look at the header of a PAK file.
 +
 +
<pre>#include <stdint.h>
 +
#include <stdio.h>
 +
#include <inttypes.h>
 +
 +
static FILE* f = NULL;
 +
 +
void chunk() {
 +
  char magic[4];
 +
  fread(magic, 1, 4, f);
 +
  uint32_t unk1;
 +
  fread(&unk1, 1, 4, f);
 +
  uint32_t unk2;
 +
  fread(&unk2, 1, 4, f);
 +
  uint32_t offset;
 +
  fread(&offset, 1, 4, f);
 +
  char* endMagic = "END\0";
 +
  char* indxMagic = "INDX";
 +
  char* wmshMagic = "WMSH";
 +
  char* textMagic = "TEXT"; // 32 byte payload?
 +
  char* vbMagic = "VB\0\0";
 +
  printf("magic: '%.4s'\n", magic);
 +
  printf("unk1: 0x%08" PRIX32 "\n", unk1);
 +
  printf("unk2: 0x%08" PRIX32 "\n", unk2);
 +
  printf("offset: %" PRIu32 " bytes\n", offset);
 +
  if (!feof(f)) {
 +
    chunk();
 +
  }
 +
}
 +
 +
int main(int argc, char* argv[]) {
 +
  f = fopen(argv[1], "rb");
 +
  if (f == NULL) {
 +
    return 1;
 +
  }
 +
//  fseek(f, 16, SEEK_SET);
 +
  chunk();
 +
  fclose(f);
 +
  return 0;
 +
}</pre>

Latest revision as of 13:26, 6 June 2017


File formats

Audio:

  • wav [ffmpeg]
  • wma [ffmpeg]
  • dat / xwb
  • ini

Video:

  • xmv [ffmpeg]

Textures:

  •  ?

Animation:

  • none?

Bones:

  • none?

Shader:

  •  ?

PAK

This is an old, untested and incomplete tool to look at the header of a PAK file.

#include <stdint.h>
#include <stdio.h>
#include <inttypes.h>

static FILE* f = NULL;

void chunk() {
  char magic[4];
  fread(magic, 1, 4, f);
  uint32_t unk1;
  fread(&unk1, 1, 4, f);
  uint32_t unk2;
  fread(&unk2, 1, 4, f);
  uint32_t offset;
  fread(&offset, 1, 4, f);
  char* endMagic = "END\0";
  char* indxMagic = "INDX";
  char* wmshMagic = "WMSH";
  char* textMagic = "TEXT"; // 32 byte payload?
  char* vbMagic = "VB\0\0";
  printf("magic: '%.4s'\n", magic);
  printf("unk1: 0x%08" PRIX32 "\n", unk1);
  printf("unk2: 0x%08" PRIX32 "\n", unk2);
  printf("offset: %" PRIu32 " bytes\n", offset);
  if (!feof(f)) {
    chunk();
  }
}

int main(int argc, char* argv[]) {
  f = fopen(argv[1], "rb");
  if (f == NULL) {
    return 1;
  }
//  fseek(f, 16, SEEK_SET);
  chunk();
  fclose(f);
  return 0;
}