Hi there,
I’m trying to understand the TRS/VEW files format used in original Wipeout/WipeoutXL game.
I was wondering if somebody could give me some help (aybe maybe?).
Most parts of TRS are now well understood. However the occlusion culling part is still a total mystery.
Here is the content of TRS file. Only what is still unknown is the middle part ("unknown" variables).
They are all, i think, related to occlusion culling or additional track information.
Code:
Wipeout.TrackSection = Struct.create(
Struct.int32('nextJunction'),
Struct.int32('previous'),
Struct.int32('next'),
Struct.int32('positionx'),
Struct.int32('positiony'),
Struct.int32('positionz'),
Struct.uint16('unknown1'), //always = 8?
Struct.skip(10), //always = 0 padding ?
Struct.array('unknown2', Struct.uint32(), 15), //PSX RAM addresses to VEW file loaded in memory?
Struct.array('unknown3', Struct.uint16(), 15), //always values like 2, 4, 6, 8. VEW file data offset/length ?
Struct.array('unknown4', Struct.uint16(), 2), //section indexes or scene objects (PRM) indexes, or offsets inside VEW file ? seems to start near zero then keep increasing
Struct.array('unknown5', Struct.uint32(), 1), //always = 0 padding?
Struct.array('unknown6', Struct.uint16(), 2), //very similar to "unknown4"
Struct.int32('unknown7'), //always = 0 padding ?
Struct.uint16('firstFace'),
Struct.uint16('numFaces'),
Struct.int16('unknown8'), //always = -1?
Struct.int16('unknown9'), //always = -1?
Struct.uint16('flags'),
Struct.skip(4) //always = 0 padding?
);
To debug/use it just copy that section into wipeout.js of Phoboslab model viewer.
The VEW file seems to be simpler structure, I think contains only a bunch of indexes, all unsigned 16bit.
Probably indexes to sections or PRM scene objects ? (view lists?)
So it should be something like this :
Code:
Wipeout.TrackView = Struct.create(
Struct.uint16('unknown') //indexes to track section/PRM objects?
);
Also: there seems to have some reference to "track radius" and "east/south/west/north view lists" on game CD.
Here is a short passage from BETA.OUT file (from TRACK02 folder)
Starting track radius pre process
Section 0 :: north 32 south 10 west 32 east 41 all 41
Section 1 :: north 34 south 10 west 32 east 43 all 43
Section 2 :: north 35 south 10 west 32 east 44 all 44
Section 3 :: north 37 south 10 west 32 east 46 all 46
Section 4 :: north 38 south 11 west 33 east 48 all 48
Section 5 :: north 39 south 12 west 34 east 50 all 50
…
Again, some related stuff found in WIPEOUT.EXE file (left by compiler) :
radius.c::TrackRadiusCheckNew: Global View List Full ( North )
radius.c::TrackRadiusCheckNew: Global View List Full ( South )
radius.c::TrackRadiusCheckNew: Global View List Full ( West )
radius.c::TrackRadiusCheckNew: Global View List Full ( East )
Track radius is, I think some information related to how large a given track section is (how far the track extends sideways).
Any help will be appreciated.