DREWLAND Geometry in the Buriki One 'vt' ROMs Hey! This page is going to be short and sweet, 'cuz really the 3d data in Buriki One is pretty straightforward. But first, here are a couple of images of what i've been able to retrieve from the ROMs (notice my textures are a very tiny bit off - I think I've got an off-by-1 error that I've been too lazy to fix thus far. Also please ignore the colors - they're just mapped 0-255 greyscale with a linear gamma curve right now - they'll look better when the software is displaying them with the proper palette) : Some Scenery A character I understand ~98% of the data in the VT roms. There is a 54-byte header for each of the player's geometry which I don't understand, and there is a small chunk of data at the beginning of the files that I didn't bother to figure out, but the rest of the data is consistent. If I were to take an educated guess as to how the HNG64 3d hardware behaves, I'd bank on it being a 'full' 'modern' graphics implementation. Probably pretty similar to your favorite 3d graphics API. As David guessed in his placeholder driver, each VT rom contains data for one dimension of 3-space. One is the X ROM, one is the Y ROM, and one is the Z ROM. There are 2 different styles of polygons in the VT ROMs - 1 is always used for the characters and the other is always used for the scenery. Each polygon is always a triangle, and actually sometimes there's a lone triangle in the file which forms a triangle fan (so watch out for those if attempting to implement the 3d rasterization!). The data is stored as 16-bit floating point numbers, and some code to decode these numbers is shown at the bottom of this page. The players have the following floating-point data per triangle : 3 vertices 3 per-vertex normals 1 texture index (0x00-0x0c) 3 texture coordinates 1 per-triangle normal The scenery has the following floating-point data per triangle : 3 vertices 1 texture index (0x0d-0x0f) 3 texture coordinates 1 per-triangle normal Each of those texture indexes points to one of the 16 1024x1024 textures Haze has already decoded. The fact that the characters have per-vertex normals as well as per-triangle normals seems to make sense, as watching videos of the game seems to show some sort of phong-esque shading on the player polygons (and the scenery is never lit in a detailed-enough manner to notice fancy lighting that per-vertex normals would yield)... To be perfectly honest, I never verified that the player polygon data has per-vertex normals, but I'm about 90% sure that's what it is... Luckily, it won't affect the initial emulation of the rasterization at all... So, well, that's all the VT ROMs contain! I won't go into details about how the ROMs themselves are laid out, as the software probably loads them and stores them in a different way. But if the exact format of the files are of interest, please feel free to mail me at : And i'll explain things in more detail... Oh, the one file thing that may be of interest is the manner by which the 16-bit floating point numbers are stored... This is the code for converting the 2-byte data into a floating-point number : float CombinePiecesF(unsigned char num, unsigned char mantissa) { float retVal ; retVal = (float)((char)num) ; retVal += (float)((float)((unsigned char)mantissa) / 255.0f) ; return retVal ; } and it's called like this : CombinePiecesF(array[1], array[0]) ; (in other words, it's sorta' little-endian) That should be it... Thanks for reading :)!