Skip to content

Instantly share code, notes, and snippets.

@AcuteSyntax
Last active February 13, 2024 15:18
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save AcuteSyntax/536a2d62ab1b3fde5c14f70d268b14c0 to your computer and use it in GitHub Desktop.
Save AcuteSyntax/536a2d62ab1b3fde5c14f70d268b14c0 to your computer and use it in GitHub Desktop.
Burnout Modding Information and Format Documentation

The wiki is finally live!

The Burnout Modding wiki has just launched - admittedly, it's just as barebones as this Gist at the moment, but proper sites are far more capable so you can expect WAY more stuff to be done there than what would've been possible to do here.

Enter the Wiki

Table of Contents

File Formats

Burnout 1 and Burnout 2

RCF/RCX

Burnout 2's vehicle format. This file contains the car's model, LODs, textures and potentially(?) physics info and other metadata. This format can be considered a precursor to the BGV format used from Burnout 3 to Dominator. RCF files are the models used for the main menu and are higher quality than the RCX models, which are the ones used ingame.

PSS

Contains track textures.

PSW

Contains track mesh data. There is a near-duplicate of this file in each track folder with the extension P2W.

Takedown-Era (Burnout 3, Revenge, Legends and Dominator)

BGV/BTV (Burnout Game Vehicle/Traffic Vehicle)

This file stores all data related to the game's vehicles, including mesh data, LODs, texture data, pointers to external files (e.g. value database, the car's HWD and LWD files), deformation data and physics configuration info. BTV files are identical in every way to BGVs.

Revisions of this format (the first byte of a BGV file is its version number):

  • 0x14 = Burnout 3 Demo
  • 0x17 = Takedown/Legends/Dominator PSP
  • 0x1D = Revenge Demo
  • 0x1F = Revenge/Dominator PS2
  • 0x25 = Revenge Xbox 360 (Something to note about Revenge 360 is that its BGVs are compressed with ZLib, so they'll have to be manually decompressed using Offzip if you wish to analyze/modify them.)

*DISCLAIMER: Most, if not all, of the data below currently only applies to BGV revision 0x17 unless stated otherwise.

Offsets for revision 0x17:

  • 0x00: Version number
  • 0x0C: Num. of BodyParts
  • 0x0D: Num. of wheels
  • 0x0F: Min LOD
  • 0x10: Max LOD
  • 0x18: Global Y Coordinate
  • 0x4C: Pointer to Lowest LOD Offset
  • 0x50: Pointer to Mid LOD Offset
  • 0x54: Pointer to High LOD Offset
  • 0x58: Pointer to Highest LOD Offset
  • 0x5C: Unused LOD Pointer
  • 0x60: Pointer to Texture/Palette Data
  • 0x70: X Scale
  • 0x74: Rotation X Related
  • 0x78: Rotation X Related
  • 0x7C: Rotation X Related
  • 0x80: Rotation X Related
  • 0x84: Y/Z Scale
  • 0x88: Rotation Y/Z Related
  • 0x8C: Rotation Y/Z Related
  • 0x90: Rotation Y/Z Related
  • 0x94: Rotation Y/Z Related
  • 0x98: Z/Y Scale
  • 0x9C: Rotation Z/Y Related
  • 0xA0: X Position
  • 0xA4: Y/Z Position
  • 0xA8: Z/Y Position
  • 0xAC to 0x200: Unknown floats
  • 0x200 to 0x16F0: Deformation parameters/wheel positioning coords/other unknown data

Revision 0x17 has a hardcoded limit of 6 body parts (not counting the car's wheels and chassis); this limit was bumped up to 8 starting with revision 0x1D.

Each LOD in a BGV contains a list of pointers to its submeshes at the very beginning; there are always exactly 12 pointers since it seems the maximum amount of submeshes a BGV can contain is 12, though it's unknown if this rule is enforced by the game or if it can be larger than that.

HWD and LWD

HWD files contain pitch info for the vehicle's engine sounds; the sounds in question are stored in the LWD file.

DAT

Generic container format. These files are present in each track folder and the contents differ depending on which one it is:

  • STATIC.DAT contains the track's textures (as well as the model in the Garage's case)
  • STREAMED.DAT contains the track mesh data, destructible props, and LODs
  • ENVIRO.DAT contains environment lighting, skybox/cloud textures, and coordinate info for the sun/moon

Revenge, Dominator PS2 and Dom PSP's track folders contain an additional .DAT named "PropInst"; it's not yet known what this file contains.

BGD (Burnout Game Data)

Contains configuration data and settings for each track, like the traffic density levels, whether or not the track is forward or reverse, the player's spawn coordinates, the start/end location of a lap, signature takedown data, and much more. Burnout 2 uses BGD to store its track data as well (albeit a much older version of the format). Each track has its own BGD file; it can be found in the track's folder alongside the track's other files.

Starting with Burnout 3's demo, this format started using single numbers at the very start of the file to mark the version (like BGV).

  • Burnout 3 Demo = 0x07
  • Takedown/Legends = 0x09
  • Revenge Demo = 0x10
  • Revenge 0714 alpha/Revenge Final= 0x11
  • Dominator PS2 = 0x13
  • Dominator PSP = 0x0B

Other Files

TLIST.BIN and VLIST.BIN

AKA Track List and Vehicle List. These files are present in the TRACKS and PVEH folders, respectively, and contain custom-encoded strings with the names of tracks and player vehicles.

VDB.XML

Named VDB.BIN starting with the Revenge Demo; this file is a hash map containing configuration data for various aspects of the game, including:

  • Per-car AI/sound/camera settings
  • Per-car boost gain/loss rates
  • Various per-car performance and physics statistics (i.e top speeds, which are stored in the file as floating-point numbers)
  • Miscellaneous camera configuration data
  • Sound configuration

Asset Data (texture and sound formats)

Model Data

Files containing model data on Burnout PS2 and PSP contain both the actual mesh data as well as the GPU commands required to render the models (these commands use arguments related to the specific vertices being drawn, so they have to be included as data). PS2 models from the Takedown-Era store their vertex data as rows of 4-byte floating-point numbers, with 3 floats in each row; it's possible each of the floats represent the X, Y and Z coordinates of the vertex.

Each "block" of mesh data on the PS2 version starts with the hex sequence 00 00 00 05 03 01 00 01 00 80.

Files that contain model data:

  • .BGV and .BTV
  • .DAT (STATIC and STREAMED)

Texture Data

Burnout PS2 and PSP's textures are uncompressed bitmaps, which use CLUT4 (16-color) and CLUT8 (256-color) color palettes, with the palette itself being a little ways underneath the texture data.

Burnout PS2's texture headers are 0x250 bytes in length; PSP texture headers are 0x110. Both games use different texture swizzling methods, and PS2 texture CLUTs seem to use a signed char(?) for the texture's alpha channel as opposed to an unsigned one.

Burnout Xbox textures seem to use some form of compression (likely DXT1).

Files that contain texture data:

  • .BGV and .BTV
  • .TXD (Texture Dictionaries)
  • .DAT (STATIC, STREAMED and ENVIRO)

Sound Data

The PS2 versions of Burnout use Sony's proprietary PS-ADPCM format for its sound data, while the Xbox versions use Microsoft's XWB format. Burnout PSP uses Electronic Arts' SDT/BNKL format.

Links

Per-car statistics and IDs (Burnout 3, Revenge and Paradise): https://drive.google.com/drive/u/0/folders/1mqYJZ5Izm98jTETJm8t7VskyEUgkaY9J

RWS audio container spec by Edness: https://media.discordapp.net/attachments/479352816100573186/698519410926682142/unknown.png

@TemporalDrifter
Copy link

Hi AcuteSyntax.

I'm looking to access model data from both burnout takedown and revenge - specifically I am after track data for Takedown (Lakeside getaway) Revenge ( Motor city - Short) and White Mountain) I'm not technically minded - any chance you could support me for a small fee?

@AcuteSyntax
Copy link
Author

@TemporalDrifter Personally I'm not too experienced in grabbing track data from the games, but if you have Discord, there are a few folks over on the modding server that'd be able to rip them. If you're interested, I'll give you an invite link

@TemporalDrifter
Copy link

@AcuteSyntax Aye, I'm on discord, an invite link would be magic. thanks for the reply man.

@AcuteSyntax
Copy link
Author

@TemporalDrifter Ah cool! Most of the modding community are only around on discord anyway, so it'll make it far more convenient in the future should you have any other requests. Here's the invite: https://discord.gg/2AnCV7u

@JayFoxRox
Copy link

JayFoxRox commented Jun 5, 2021

While this post has some good base information, I strongly recommend everyone to read https://burnout.wiki/wiki/Modding for more technical and in-depth information.

@TheRektafire
Copy link

TheRektafire commented Nov 2, 2022

While this post has some good base information, I strongly recommend everyone to read https://www.burnout.wiki/wiki/Modding_Resources for more technical and in-depth information.

Sadly that link appears to be dead, would you happen to have an updated one? I'm interested in ripping track models from burnout 3/revenge as well and using them to test stuff out in one of my own projects but not sure where to start, especially wondering whether there are any pre made tools for it or am I going to have to make some myself

@burninrubber0
Copy link

burninrubber0 commented Aug 31, 2023

For anyone still checking this page, the wiki is still up at https://burnout.wiki (without the www). I'm working on getting the www subdomain to redirect to the naked domain; if all goes well, it should work within a few days of this being posted.

On a different note, based on what we know of his living situation and the fact he's been inactive since February 2022, @AcuteSyntax is likely deceased and will not be responding to anything here. Please use the wiki or the Burnout Modding Discord for discussion instead.

@RayneDuarte
Copy link

Do you know where is the texture of chars font in the PS2 version of the Burnout 3? I've seen many textures in the Global.txd and in the Frontend.txd packs, but I can't find the chars font.

@burninrubber0
Copy link

burninrubber0 commented Nov 30, 2023

@RayneDuarte Join the Burnout Modding Discord if you want to ask someone who isn't literally dead.

@TemporalDrifter
Copy link

TemporalDrifter commented Nov 30, 2023 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment