Header Image

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 custom track mesh preview

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
  • -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-08-01 23:25

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