FlatOut W32 & BGM Tool

A tool to handle .w32 and .bgm files in FlatOut games

For a quick guide on how to get started with the tool, check out the examples & tips.

This tool is currently capable of:

  • Parsing and recreating the formats from memory
  • Exporting cars and tracks to .fbx
  • Exporting cars and tracks from Rally Trophy and Tough Trucks to .fbx
  • Converting FlatOut 2 tracks to FlatOut 1
  • Converting FlatOut: Ultimate Carnage cars to FlatOut 1 and 2
  • Editing tracks in FlatOut 1, 2 and Ultimate Carnage
  • Importing new tracks into FlatOut 1, 2 and Ultimate Carnage
  • Importing vehicle models into FlatOut 1, 2 and Ultimate Carnage

Thanks to Gulbroz for their existing work on this format, it was a great jumping-off point.

custom UC car & track preview Rally Trophy track in FOUC FO1 custom track preview

Disclaimer

Due to the current programming landscape, I feel that it's necessary to explicitly state that this project had zero assistance or any other kind of involvement from any sort of "AI agent" and it never will.
This mod was entirely built by hand, by a human being, and I believe that any project that cannot also claim this about itself is not worth people's time. The only acceptable amount of AI use is zero AI use.

Usage

  • Enter a commandline prompt, run FlatOutW32BGMTool_gcp.exe (filename) with the arguments you'd like to use
  • The file will now be analyzed and processed by the tool
  • Enjoy, nya~ :3

W32 Arguments

  • -create_fo1_w32 - Exports an .fbx into a FlatOut 1 track w32
  • -create_fo2_w32 - Exports an .fbx into a FlatOut 2 track w32
  • -create_fouc_w32 - Exports an .fbx into a FlatOut: Ultimate Carnage track w32
  • -create_fo1_cdb - Exports an .fbx into a FlatOut 1 track collision cdb.gen
  • -export_fbx - Exports the map into a viewable .fbx file
  • -export_w32 - Exports the map into a .w32 file (this should yield an identical file if there are no additional arguments, if it doesn't then file a bug report!)
  • -export_text - Exports the map into a human-readable text file
  • -text_streams - Exports all vertex and index buffers into text, huge filesize and time cost!
  • -text_materials - Exports all material data into text, including shaders and some unknown metadata
  • -text_streams_fouc_offseted - Exports vertex buffers into text with their surface offsets already applied
  • -text_streams_fouc_normalized - Exports vertex buffers into text as normalized floating points
  • -text_streams_fouc_int8 - Exports vertex buffers into text as int8 arrays
  • -remove_object_dummies - Creates a new .w32 file of the map with all objects and object dummies removed (e.g. menu cameras in FOUC)
  • -remove_props - Creates a new .w32 file of the map with all props removed
  • -enable_all_props - Creates a new .w32 file of the map with all props visible (BugBear left a lot of props hidden in each track)
  • -disable_car_collisions - Creates a new .w32 file of the map with car-to-car collisions disabled
  • -convert_to_fo1 - Creates a new .w32 file of the map that can be loaded by FlatOut 1
  • -skip_hidden_props_a - Only exports the props from track variant A into the .fbx file
  • -skip_hidden_props_b - Only exports the props from track variant B into the .fbx file
  • -skip_hidden_props_c - Only exports the props from track variant C into the .fbx file
  • -export_bvh_nodes - Exports BVH culling zones into the .fbx file
  • -empty_bvh_gen - Takes a track_bvh.gen file and generates a new one without any culling, do not use unless you get issues with the autogenerated file!
  • -empty_plant_vdb - Generates an empty plant_vdb.gen, removes all grass from the map
  • -import_moved_props - Imports moved prop positions from an .fbx file, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_moved_props
  • -ungroup_moved_props - Ungroups moved props if -import_moved_props is enabled, can prevent unwanted physics behavior
  • -import_cloned_props - Imports new cloned props from an .fbx file, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_cloned_props
  • -import_all_props - Imports all props from an .fbx file and deletes the original w32 ones, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_all_props
  • -import_all_object_dummies - Imports all object dummies from an .fbx file and deletes the original w32 ones, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_all_object_dummies
  • -import_surfaces - Imports surface meshes from an .fbx file if they have the suffix _export in their name, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_surfaces
  • -import_all_surfaces - Imports all surface meshes from an .fbx file, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_all_surfaces
  • -import_and_match_all_surfaces - Imports all surface meshes from an .fbx file and matches them up to any valid w32 surface, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_and_match_all_surfaces
  • -import_and_match_all_meshes - Imports all meshes from an .fbx file and matches them up to any valid w32 surface, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_and_match_all_meshes
  • -clear_old_materials - Removes all original materials from the w32 before importing the ones from the .fbx, has no effect unless -import_and_match_all_surfaces is enabled
  • -no_material_reuse - Makes imported meshes not use any original w32 materials, instead always importing new ones from the .fbx
  • -no_tree_hack - Disables the adjusting of normal vectors for tree shaders in Ultimate Carnage
  • -import_deletions - Deletes surfaces and props that have been deleted from an .fbx file, usage: FlatOutW32BGMTool_gcp.exe (w32 filename) (fbx filename) -import_deletions

BGM Arguments

  • -create_fo1_bgm - Exports an .fbx into a FlatOut 1 car bgm
  • -create_fo2_bgm - Exports an .fbx into a FlatOut 2 car bgm
  • -create_fouc_bgm - Exports an .fbx into a FlatOut: Ultimate Carnage car bgm
  • -export_fbx - Exports the car into a viewable .fbx file
  • -export_bgm - Exports car into a .bgm file (this should yield an identical file if there are no additional arguments, if it doesn't then file a bug report!)
  • -export_text - Exports the car into a human-readable text file
  • -text_streams - Exports all vertex and index buffers into text, huge filesize and time cost!
  • -text_materials - Exports all material data into text, including shaders and some unknown metadata
  • -text_streams_fouc_offseted - Exports vertex buffers into text with their surface offsets already applied
  • -text_streams_fouc_normalized - Exports vertex buffers into text as normalized floating points
  • -text_streams_fouc_int8 - Exports vertex buffers into text as int8 arrays
  • -convert_to_fo1 - Converts the car from the FlatOut 2 or Ultimate Carnage format to the FlatOut 1 format
  • -convert_to_fo2 - Converts the car from the Ultimate Carnage format to the FlatOut 2 format
  • -no_rim_alpha - Disables alpha for the rim texture on cars, useful for UC -> FO2 ports
  • -force_rim_alpha - Forces alpha for the rim texture on cars, useful for FO2 -> UC ports
  • -force_tire_alpha - Forces alpha for the tire texture on cars, useful for FO2 -> UC ports
  • -make_double_sided - Clones and flips every mesh to make the model double-sided

4B Arguments

  • -export_bmp - Exports the .4b file into a BMP image

Other Arguments

  • -log_warnings_only - Only prints errors and warnings into the console
  • -log_errors_only - Only prints errors into the console
  • -use_vanilla_names - Exports the files as their original names, e.g. track_geom.w32, track_bvh.gen

Last updated: 2025-12-25 11:25

v9.20

  • Added support for converting Tough Trucks .cdb files to FlatOut 1 track_cdb.gen, auto-converting material IDs
  • Converting FO2 maps to FO1 using -convert_to_fo1 now converts missing materials to fallback ones
  • Optimized FlatOut 1 cdb export a bit, still nowhere near perfect
  • The program now throws a warning but doesn't terminate if the .toml file is missing

v9.10

  • Added support for Retro Demo collision .cdb files, including support for directly using -convert_to_fo1
  • Fixed collision coordinates being flipped after reimport
  • Reduced RAM usage during collision generation

v9.00

  • Added support for import and export of FlatOut 1 track_cdb.gen collision files, note that it currently has issues with shadows

v8.70

  • Added a hack for the FO2 Downtown maps to have streetlights with correct collisions
  • Added extra config files for auto-replacing textures, applying textures to empty materials and setting prop types
  • Added the -no_vertex_colors parameter to strip out vertex colors from a given .fbx file
  • Added more shader criteria for accurate reimporting of FlatOut 2 tracks
  • Fixed FlatOut 1 cars not importing properly, resulting in corrupt skins and geometry
  • Fixed the -skip_hidden_props_x parameters skipping gates and other special objects

v8.60

  • Added AABB bounds to the text export function to help with body.ini collision bounds for cars
  • Added custom configuration for shaders, allowing you to specify your own keywords for which materials use which shader
  • Added support for lazier splitpoint naming, e.g. Splitpoint1_Left.001 is now recognized as splitpoint number 2
  • Fixed a crash when a mesh in an FBX doesn't have tangents or bitangents
  • Fixed FOUC vertex colors being imported and exported as inverted RGB values
  • Fixed the auto-calculated radius and center of BGM models being offset due to calculations starting from the origin
  • Fixed various shader issues with Rally Trophy models
  • Moved Rally Trophy track models with offsets to a separate StaticMesh dummy

v8.56

  • Fixed crash models not being added when exporting FlatOut models to .fbx

v8.55

  • Fixed Ultimate Carnage models not loading crash.dat when exporting to FBX

v8.50

  • Added an argument to export all LODs (for viewing purposes only, the LODs don't import back properly atm)
  • Added support for Retro Demo cars
  • Added support for Tough Trucks cars
  • Crash models with separate nodes labeled _crash are now also supported
  • Improved support for Rally Trophy cars, dummies are now created automatically

v8.10

  • Added support for Rally Trophy cars

v8.00

  • Added support for Rally Trophy tracks