Looking for info on AV/SEGA (F-Zero GX) TPL, GMA file format
Posted: Wed Mar 12, 2014 4:38 pm
I was wondering if anyone had more info on TPLs (that's not included in YAGCD.) Specifically, I'm looking for information on the TPL file type Amusement Vision used (SEGA 2nd Party; F-Zero GX/AX, Super Monkey Ball 1&2, Virtua Striker...) I know that GameZelda made GXPAND and GXGMA which handle these files. Unfortunately I'm still in the process of learning Python, so C++ is still a fair bit away from simply reading off the source code. However, using HxD, I've found some things:
The examples I use are taken from bg_big.tpl from F-Zero GX. https://i.cloudup.com/rG8j02TAqH-3000x3000.png
* 0x02 on the first line defines the "header" size. So if the first 8 bytes are 0000 01E8, the header's final texture is on line 0x00001E80.
* The next 2 lines (0x00000010 - 0x00000020) probably hold something like the format (RGBA8, read off the tpl.cpp source code).
* For the length of the header after line 1, 0x02 is always 1234. This is referenced in GXGMA's tpl.cpp, so I assume it looks for those and then pulls out the sizing info.
* For the length of the header after line 3, 0x04 is always 0000, until 0x00001E80, where it is 0001 (terminating the TPL header.)
* For the length of the header after line 3, when 0x06 is 000E, it indicates a texture is held thereafter.
* For the length of the header after line 3, 0x0C and 0x0E hold the width/height values (respectively?) Many slots are nulled out.
For the header, I don't know what 0x00 is as it's seemingly random (to me), but uses mostly 0000, if not 000* (where * is 4-A, even on nulled textures.)
If anyone's got info on it, I'd really appreciate it. I'd like to document the file structure so I can (eventually) make some tools to import media into AV games (F-Zero GX and Super Monkey Ball in particular.) Doesn't hurt to have GC tools as well. Also, while I have yet to even touched it, if anyone has info on GMA files, that's be great as well. Game Zelda made export tools but didn't really document it (in a way that I can understand, at least) in a way that others can make import tools.
The examples I use are taken from bg_big.tpl from F-Zero GX. https://i.cloudup.com/rG8j02TAqH-3000x3000.png
* 0x02 on the first line defines the "header" size. So if the first 8 bytes are 0000 01E8, the header's final texture is on line 0x00001E80.
* The next 2 lines (0x00000010 - 0x00000020) probably hold something like the format (RGBA8, read off the tpl.cpp source code).
* For the length of the header after line 1, 0x02 is always 1234. This is referenced in GXGMA's tpl.cpp, so I assume it looks for those and then pulls out the sizing info.
* For the length of the header after line 3, 0x04 is always 0000, until 0x00001E80, where it is 0001 (terminating the TPL header.)
* For the length of the header after line 3, when 0x06 is 000E, it indicates a texture is held thereafter.
* For the length of the header after line 3, 0x0C and 0x0E hold the width/height values (respectively?) Many slots are nulled out.
For the header, I don't know what 0x00 is as it's seemingly random (to me), but uses mostly 0000, if not 000* (where * is 4-A, even on nulled textures.)
If anyone's got info on it, I'd really appreciate it. I'd like to document the file structure so I can (eventually) make some tools to import media into AV games (F-Zero GX and Super Monkey Ball in particular.) Doesn't hurt to have GC tools as well. Also, while I have yet to even touched it, if anyone has info on GMA files, that's be great as well. Game Zelda made export tools but didn't really document it (in a way that I can understand, at least) in a way that others can make import tools.