Tool documentation

Practical guides for preserved track-making and game-modification tools.

Twisted D.I.R.T. Track-Making Knowledge — Expanded Archive Edition

This expanded guide consolidates track-making information preserved in the Twisted D.I.R.T. SMF forum, former team/development boards, personal messages, and associated wiki tables. It focuses on Motocross Madness (MCM 1), Motocross Madness 2 (MCM 2), MX vs. ATV Unleashed (MVA), MX vs. ATV Reflex, and the smaller amount of MX Simulator material in the archive.

The material is historical. Many download links and Windows installation paths are old, and several tools were written for 32-bit Windows, DirectX 8/9, or obsolete versions of 3ds Max. Treat numeric values identified as experimental as starting points, not definitive specifications. Keep an untouched copy of every project before converting, packing, or importing it.

Material from the former private areas is included only when it adds technical value. Internal experiments are marked as confirmed, version-specific, inferred, or unsuccessful where the surrounding discussion makes that distinction possible. Personal-message citations use an archive message number rather than names or recipient information.

Quick comparison

Game Terrain approach Main editor/compiler Finished or test package
MCM 1 Grayscale displacement map plus separately compiled terrain and spline Built-in SX block editor; Rainbow command-line tools and community utilities for nationals Several loose files, including .ter, .dat, .scn, textures, and a sky cube
MCM 2 Usually a 257×257 grayscale displacement map; larger/Hi-Def techniques appeared later Armadillo, APM, Dillo Too, paint and rendering tools One .env
MVA Tiled terrain, normally 257×257 per tile; 513×513 and higher-precision workflows are possible Rainbow Unleashed Editor, Unleashed Too/UE2, POV Injector .pak user track
Reflex 1024×1024 SX or 2048×2048 National terrain plus several masks and surface maps Reflex Track Compiler, then Digital Earthworks (DE) Four beta-slot files: .level, .scene, .database, and .package
MX Simulator 1025×1025 or 2049×2049 blank-track terrain in the archived starter pack In-game editor enabled with --editor; text editor for track files A track folder in the MX Simulator personal folder

General workflow that applies across the games

  1. Establish the intended physical scale before drawing jumps. Changing grid or elevation scale late can invalidate splines, object heights, shadows, and AI.
  2. Build and test a simple terrain first. Do not add hundreds of objects before confirming that a minimally packaged track loads.
  3. Keep terrain, texture, shadow, spline, and object work in separate source layers or files.
  4. Make a copy before every destructive conversion. Several utilities overwrite their output or modify a package in place.
  5. Test after each subsystem is added: terrain, surface textures, spline/activity, start gate, objects, vegetation, zones, and final packaging.
  6. Use conservative filenames. Avoid spaces and punctuation when an old tool or game rejects a file without a useful error.
  7. Preserve the editable project as well as the distributed package. Extracting a useful displacement map from a released package may be difficult or impossible with public tools.

Height-map precision

An 8-bit grayscale height map has only 256 possible elevations. That is usually adequate for MCM 1/MCM 2 terrain at their original resolution, but enlarging such a map for Reflex produces visible elevation steps. Blurring can hide the steps but also rounds jump faces, lips, and berms.

For a conversion:

  • Enlarge the source map without repeatedly resampling it.
  • Convert or reconstruct it in a terrain tool that preserves more than 8-bit height precision.
  • Smooth broad elevation separately from the jump layer.
  • Inspect the result in 3D before compiling.
  • Keep a different, softly blurred copy for rendering shadows; do not blur the actual terrain merely to improve a rendered texture.

The archived View Disp Map utility was made specifically to preview, smooth, and save an enlarged MCM 2 map in the higher-precision RGB representation expected by Reflex. Leveller was another recommended option. See View Disp Map Utility.

Motocross Madness (MCM 1)

Track structure

MCM 1 national tracks were not bundled into the single .env used by MCM 2. The forum’s historical description identifies this working set:

  • A displacement-map .tga.
  • A compiled .ter terrain.
  • A .dat spline.
  • A .scn scene/configuration file.
  • A .cub sky cube.
  • A .tga track-selection image.

The remembered national workflow used tga2asc.exe and maketerr.exe to turn the displacement map into terrain, plus an MCM spline editor for the .dat. An existing .scn could be copied and edited to change the track name, sky cube, and grid area. This account was written from memory, so verify exact command syntax against the archived Rainbow instructions. See messages 1794 and 1929 in Questions for the T.D. crew.

Supercross versus nationals

  • Supercross creation began with the game’s block-based track editor. Community plug-ins added new track pieces.
  • Nationals required the external terrain/spline pipeline and more manual file management.
  • ASCEdit could derive a displacement map from a completed MCM 1 SX layout. This was used to turn block-editor concepts into natural terrain.
  • A 3ds Max plug-in was also used in an early workflow to export a spline.

This makes the SX editor useful as a layout sketcher even when the eventual goal is a terrain-based national.

Terrain and textures

  • The displacement map is grayscale: dark is low and light is high.
  • Work from large, clean source layers even when the final game map is small.
  • Separate broad elevation, jumps, berms, and surface noise so they can be adjusted independently.
  • Paint or render a texture that visually explains the terrain. Shadows and changes in dirt tone are important because the low-resolution terrain can otherwise be hard to read at speed.

Models and skins

The forum recalls MCM 1 bike models as editable .slt text. Changing a model meant modifying numeric data and repeatedly testing it. Bike and rider skins used TGA images. This was workable but error-prone; keep a known-good model and change one section at a time.

MCM 1 tips

  • Start with the official sample files and alter only names and paths necessary for the first test.
  • Confirm that .ter, .dat, .scn, .cub, and the preview image all use mutually consistent names.
  • If a track made for MCM 1 is being converted, do not expect an .env; that is the MCM 2 container.
  • makecub was the referenced sky-cube utility. The forum pointed users toward the archived Rainbow MCM 1 tool set in Anyone have makecub?.

Motocross Madness 2 (MCM 2)

Core files and tools

  • .prj: editable Armadillo/Dillo project.
  • .env: packed, playable track.
  • .scn: scene data, including object references and placement-related information.
  • .slt: custom model.
  • .tga: terrain, texture, object skin, or other raster asset, depending on context.
  • .cub: sky cube.
  • Armadillo: the standard track editor.
  • Armadillo Project Manager (APM): prepares projects and scene references for custom objects and other additions.
  • Dillo Too: the community editor used for improved object placement, splines, shadows, animations, MX Unleashed resources, and other advanced work.
  1. Install the track editor in a short path such as C:\MCM2\TrackEditor. Forum users reported that installing there was important for custom-object support; moving an existing installation was not equivalent to installing it there.
  2. Create the project and set grid/elevation strength before detailed work.
  3. Import the displacement map.
  4. Establish the spline and verify the course direction.
  5. Add base textures and test the track.
  6. Put custom .slt models and their textures in the appropriate UserModels location.
  7. Run the project through APM before packing a custom-object track.
  8. Use Dillo Too for advanced placement, alignment, scene work, and shadow generation.
  9. Pack to .env, test, and keep the .prj and source images.

The path and APM advice appears in Using Custom Objects and Custom objects question.

Displacement-map construction

The common MCM 2 map is 257×257. A practical layered setup is:

  • Base gray or broad terrain.
  • Elevation layer.
  • Jumps and berms.
  • Ruts/braking bumps.
  • Perimeter transition.

When placing jumps on an existing hill, the forum repeatedly recommends a lightening blend such as Photoshop’s Screen mode. This adds the jump’s height to the hill instead of replacing the hill with the jump layer’s absolute gray values.

Avoid excessive Gaussian blur on the final map. It can remove stair-stepping, but it also destroys deliberate lips. If you need smoother natural terrain, build the large-scale elevation in Leveller or another 3D terrain tool and composite the jump layer afterward.

Texture and shadow workflow

MCM 2 generally uses a rendered top-down texture rather than Reflex’s close-range layered surface system.

A strong workflow from the forum is:

  1. Paint a clean, shadow-free base texture with on-track dirt, off-track terrain, grass, and visual edges.
  2. Render terrain shadows with POV-Ray, Terragen, Bryce, or 3ds Max.
  3. If the 257×257 terrain makes the rendered shadow blocky, enlarge and slightly blur a copy of the displacement map for the render only.
  4. Render a grayscale shadow pass, blur it carefully if required, then apply it to the base texture with a darkening blend such as Multiply.
  5. Hand-accent tiny braking bumps or ruts that the renderer cannot resolve.
  6. Match the sky cube’s sun direction and elevation to the rendered shadows.

One post suggests that a 257-pixel displacement map enlarged directly to a 1600-pixel texture makes each source pixel roughly 6×6 pixels, producing poor shadows unless a separate smoother render map is used. See Pov-Ray and PovRay Help.

Custom objects

  • Export a model to .slt with the period-correct 3ds Max exporter commonly called Unibastard. MilkShape was another route, although imported models could crash during export.
  • Use APM so Armadillo’s project and scene contain the required custom-object references.
  • A model’s axis matters. Dillo Too can place bales along a spline, but an incorrectly oriented model may appear rotated 90 degrees.
  • One-sided polygons disappear when viewed from the back. Reverse the face winding or add the needed back face.
  • Keep model and texture names simple. Punctuation and inconsistent internal names caused packing errors.
  • For keyed transparency, the archive refers to pure magenta/purple in a 24-bit TGA.
  • For partial transparency, one documented MCM 2 method uses a 32-bit TGA with an alpha channel and TextureFormat=4444 in the .slt.

See Transparent objects, Object placement 90 degrees off, and Trouble with custom objects.

Dillo Too details and pitfalls

  • Dillo Too added whole-spline movement and rotation, finer object movement, automatic terrain alignment, and improved vehicle-path tools.
  • The scene can be exported before revising a displacement map so object positions are not lost.
  • Dillo Too’s perimeter shadow rendering is limited because one repeated perimeter texture is used on many tiles. Only objects in the chosen source perimeter tile should contribute; otherwise the same shadow would appear on every repeated tile.
  • If an apparently valid pack suddenly becomes truncated or crashes, confirm that there is enough free disk space.
  • When changing grid size, save, exit, reopen, and only then continue spline work. Several users associated changing scale mid-session with corrupt or unusable projects.

See New Dillo Too release, Dillo Too 0.97, and Dillo Too shadow.

MX vs. ATV Unleashed (MVA)

Toolchain

  • Rainbow’s Unleashed Editor: the official starting point for a project, terrain, activities, spline, and packaging.
  • Unleashed Too/UE2: advanced editing of terrain tiles, splines, objects, scene files, and packaged assets.
  • POV Injector: inserts higher-precision, POV-style displacement maps directly into an MVA project.
  • SLTtoDXG: converts MCM 2 custom objects for MVA.
  • MultiEx: used by advanced authors to inspect or alter package contents not exposed by the editor.
  • MVA Track Map Bug Fixer: repairs a naming collision that causes multiple user tracks to share the wrong minimap.

Important MVA formats

  • .pak: distributed user-track or asset package.
  • .trn: terrain.
  • .tdf: spline-related data encountered by UE2.
  • .scn: scene.
  • .toy: object/placement-related data editable in UE2.
  • .dxg: model geometry.
  • .dxt: texture.
  • .dxm: material/model-support data.
  • .col: collision.
  • .pco: physical/collision properties used by converted models.
  • models.lib: model-library entries used by editors.
  • .tile: UE2 terrain-tile interchange file.
  • .mot: spline/path motion data, including vehicle paths.

Tiled terrain

MVA terrain is assembled from tiles. A normal tile displacement map is 257×257. UE2 eventually supported 2×2 through 7×7 terrains, cut-and-paste between tile positions, and importing a displacement map into an individual tile.

For a multi-tile source:

  • Divide the master map with a one-pixel overlap so adjacent 257×257 tiles share the same border samples.
  • Do not independently blur or rescale the tiles after cutting them.
  • Check seams in game, not only in a preview.
  • Repeated perimeter tiles must be designed so their outer borders join plausibly.
  • Use UE2’s tile export/import to duplicate a prepared tile, but keep the master terrain as the authoritative source.

Visible cracks are usually a border mismatch. A weld function can hide the visible seam, but fixing the source samples is safer. See Disp Map Gaps.

Hi-Def and higher-precision terrain

Two archived approaches extend the stock workflow:

  • Build a 513×513 Hi-Def .trn through the MCM 2 editor and import it with UE2.
  • Use POV Injector to place a red/blue higher-precision displacement TGA directly into an MVA project.

The second route allows terrain from Leveller, World Machine, Terragen, or a similar tool without reducing it to a conventional 8-bit grayscale map first. The colors are an encoding of height, not a texture to be viewed as conventional grayscale. See Something for track makers / POV Injector.

Splines, activities, and minimaps

  • A spline is required before generating a useful minimap.
  • If a spline is built over a composite representation of several tiles, import it into UE2 and move/scale it into the actual tile coordinates.
  • UE2 maintains both an overall spline offset and point data; a wrong offset can place a valid spline far from the track.
  • AI node speed and preload/braking settings require extensive in-game testing. Stock-like AI behavior was difficult to reproduce.
  • The editor could reset grid scale after visiting the activity/spline interface. Objects then appeared to float because the project was being interpreted at the default scale. Reapply the correct scale before saving or placing more objects.

The Track Map Bug Fixer appends .bak to the original package before changing it. It fixes the case where the second and later uncorrected tracks display another track’s minimap; it does not create a missing map for a track with no valid spline. See MVA Track Map Bug Fixer.

Friction maps

UE2’s documented import expects a 257×257, 4-bit indexed BMP with a 16-color palette. Select the terrain tile, switch to the zone/friction-map view, then import. If the selected tile is reused, its friction map is reused as well. Test every tile because authors reported inverted or unexpected behavior in some older tool versions. See Friction map.

Custom objects

For UE2, place either a prepared .pak or the individual .dxg, .dxt, .dxm, and .col files in:

%MVA%\Media\CustomModels

Converted MCM 2 objects follow this broad sequence:

  1. Convert .slt geometry and texture references with SLTtoDXG.
  2. Generate collision or supply a separate collision model.
  3. Generate .pco data when needed.
  4. Pack the output and place it in Media\CustomModels.
  5. Add the generated library extract to models.lib.
  6. Put generated .pco files in Media\pco.
  7. Verify both visibility and collision before duplicating the object.

The converter’s automatic collision may not fit every model; a reduced collision mesh was used for bales. Incorrect collision or a missing generated collision can create ride-through objects. See SLTtoDXG converter and UE2 release.

MVA troubleshooting

  • Save .pak files without spaces when diagnosing unexplained crashes.
  • If a track works in the editor’s test mode but not in a race, it may be missing files required by that activity. Test Free Ride first.
  • If modifying common.pak, restore it before applying an official patch.
  • A sky cube, custom object, or bad tile can crash the whole package. Remove the newest asset and add it back last.
  • Create a fresh UE2 session when repeated tile imports produce a package that crashes.
  • Keep the editor’s grid scale written down and recheck it after spline/activity work.

MX vs. ATV Reflex

Compiler versus editor

The original Reflex Track Compiler is a compiler, not a visual terrain editor. It reads a text track-definition file with a .track extension and compiles the referenced images and settings. Digital Earthworks later supplied visual editing, object placement, activities, water, ecosystems, stock texture selection, and splines.

Always save the .track definition before compiling: the compiler reads the saved file, not unsaved text displayed in its project pane. A useful first test is to compile the default definition to a beta slot and confirm that the flat track loads. See Reflex compiler v1.

Terrain resolution and scale

  • Supercross: 1024×1024.
  • National: 2048×2048.
  • The displacement input is an RGB bitmap containing higher-precision height values, not merely an enlarged 8-bit grayscale MCM map.
  • For real-world layout work, forum authors commonly treated one pixel as approximately one foot, but the actual DE/compiler scale must be tested with the bike and known objects.

When importing Leveller terrain into DE, model it at the desired final height and use a scale of 1 where possible. Large compensating scale values magnify noise and make smoothing harder. DE itself does not smooth a displacement map.

Required surface and control maps

Top-down texture

The top-down image is the distant rendered appearance of the terrain. It also contributes to some closer views, but Reflex’s nearby surface is primarily the layered dirt textures selected by the mask map.

  • 1024×1024 for SX.
  • 2048×2048 for National.
  • Use subtler, more consistent lighting than on an MCM 2 rendered texture. Strong baked shadows can fight Reflex’s dynamic and layered surface shading.

Create Topdown reads the .track definition, its base/R/G/B overlay textures, and the mask map, then builds a blended top-down BMP. It overwrites an output named from the mask map with _Topdown appended. Keep a backup. The utility reads BMPs and ignores an alpha channel on its output input; the compiler and other maps may still require extended BMP alpha data. See Create Topdown.

Mask map / detail mask

The mask map chooses the close-range surface:

  • Black/no RGB channel: base overlay.
  • Red: R overlay.
  • Green: G overlay.
  • Blue: B overlay.
  • Intermediate channel values blend surfaces.

A common setup is base dirt, alternate dirt on red, grass on blue, and rock or alternate off-track terrain on green. Blue and green can be mixed, for example, to blend grass and leaves.

The alpha channel was found to control a wet or reflective appearance: black is matte/dry and lighter values increase shine. This was still being investigated in the archive, and behavior differed between compiler/editor versions.

Dirt and bump textures

There are four overlay textures—base, R, G, and B—and a corresponding bump texture for each. Typical source sizes are 512×512 or 1024×1024. The overlay’s alpha affects blending.

Do not bake all close-up ruts and shadows into the top-down map. Reflex layers tiling surface and bump textures around the rider; the top-down image becomes dominant in the distance. A beautiful MCM-style render can therefore look inconsistent when used unchanged in Reflex.

ChromLum map

  • 1024×1024 for SX.
  • 2048×2048 for National.
  • Main RGB image: broad tint or illumination color.
  • Alpha: lighting/luminance influence.

The archive recommends beginning the alpha as 50% gray, then adding controlled terrain highlights, darker track/tire paths, and environmental variation. Build it as layers, save the layered source, flatten a copy, and paste that into the BMP alpha channel. Use restrained colors in the RGB image; saturated colors tint the whole scene unnaturally.

The documentation describes this behavior as partly inferred. Test changes in game rather than treating the map name as a complete specification.

Softness/definition map

  • 1024×1024 for SX.
  • 2048×2048 for National.

Archived testing assigns:

  • Red: deformation speed; 0 disables/slows and 255 deforms quickly.
  • Green: deformation depth; 0 is none and 255 is deepest.
  • Blue: buildup around the tire path; 0 is none and 255 is strongest.
  • Alpha: later notes say 0 turns deformation off; no alpha may default to white.

For useful corner ruts, the suggested experiment is high green and blue in the turn but a mid-gray red value around 129. A very high red value can make the corner behave like rapidly destroyed sand.

Shadow mask

  • 1024×1024 for SX.
  • 2048×2048 for National.

The wiki explicitly says the exact behavior was unconfirmed. Its temporary recommendation was a copy or simple render of the displacement map. Treat this as experimental.

Four zone maps

  • 512×512 for SX.
  • 1024×1024 for National.
  • Indexed BMPs using a 16-color palette; the maps use four or eight palette entries depending on the zone.

The archive’s working interpretation is:

Zone Approximate role
1 Slip/reset
2 Drag or power loss
3 Particles
4 Surface sounds

The precise palette-to-effect mapping changed or depended on the chosen stock track set in later compiler versions. Forum posts warn that Zone 1 and 2 appeared more game-global while Zone 3 and 4 varied with DLC/track data. Use known sample maps from the same compiler/tool version and alter one palette value at a time.

Extended BMP alpha

Several Reflex maps require BMP files with alpha channels. Photoshop and GIMP were reported to support the needed extended format; Paint Shop Pro did not reliably do so by itself. DXTBmp was recommended as a bridge:

  1. Open or drag the BMP into DXTBmp.
  2. Export the main image or alpha to the chosen paint program.
  3. Edit it.
  4. Reimport it through DXTBmp and save the extended BMP.

Saving an ordinary BMP from a paint program can silently discard alpha. Verify the alpha after every conversion.

Digital Earthworks workflow

  1. Install the required DirectX 9 runtime and legacy Nvidia PhysX runtime.
  2. Confirm DE finds the Reflex installation and can list stock models.
  3. Import the displacement and required maps.
  4. Save a compiler .track file.
  5. Export a simple Free Ride beta and test it.
  6. Add a grouped start/drop-gate assembly.
  7. Build and validate the activity spline.
  8. Export to the chosen SX or National beta slot and test.
  9. Add objects and ecosystems in small batches.
  10. Package the four beta files for distribution.

If DE cannot find the game, stock objects may be missing and beta export may go to the wrong place. Historical versions saved a ReflexRootPath under:

HKEY_CURRENT_USER\Software\Strawberry\DigitalEarthworks\options

Registry editing is risky and should be a last resort. Prefer the latest archived DE build and normal application settings. See Digital Earthworks with splines.

Reflex splines

Digital Earthworks’ later spline support made custom tracks raceable online. Key rules preserved in the support thread are:

  • The outside pair of lines defines the reset boundary.
  • The next pair inward constrains the AI and carries the finish-line width.
  • The center line is the rider respawn path.
  • Surround the complete start gate, including space behind it.
  • Put the start line one node into the spline, not on its extreme edge.
  • A funnel needs at least two nodes before joining the main loop.
  • Disconnected sections or accidental single nodes appear as squares; merge the sections around the selected node.
  • Use right-drag to move a node without accidentally creating another.
  • Add enough nodes that a crash cannot respawn the rider far ahead.
  • The finish line must span the appropriate inner boundary lines.
  • Use a grouped start gate because the functional gate has a structure and a separate drop-gate object.

A track that compiles but crashes near the end of loading can still have an invalid or temperamental spline. Rebuild the smallest suspect section and test before changing textures or objects.

Beta slots and sharing

The original system provided eight Free Ride beta slots; later support added eight SX and eight National slots plus an updated leaderboard file. A track compiled into an uninstalled slot can crash Reflex.

To share a Free Ride beta, distribute:

  • Beta_Track_Slot_X.dx9.level
  • Beta_Track_Slot_X.dx9.scene
  • Beta_Track_Slot_X.dx9.database
  • Beta_Track_Slot_X.dx9.package

The receiving user copies them into the Reflex Database folder and needs the matching beta-slot DLC definitions. DE’s release track function was never completed; the forum’s practical release workflow remained “export as beta, zip the four files.” See Compiler sharing and Digital Earthworks with splines.

Reflex custom objects

The archived community pipeline is:

  1. Model in Blender, 3ds Max, or another package.
  2. Export Collada .dae.
  3. Convert the mesh with Reflex Surface Creator.
  4. Define and compile the library with Reflex Custom Model Library Maker.
  5. Use a .liblist text file to preserve library inputs.
  6. Load/place the library’s objects in Digital Earthworks.

Collada was preferred over OBJ because it can preserve more scene information, including vertex-related data needed by the conversion process. Collision can use the visual mesh or a separate simpler mesh. A bad or missing collision build produces an object that can be ridden through. See Reflex Surface Creator and Custom Model Library Maker.

Reflex troubleshooting

  • Green/incorrect terrain: confirm that the displacement is in the displacement slot, the top-down is in its own slot, and every map has the expected 24/32-bit format.
  • No objects in DE: verify the Reflex installation path, model-library database, PhysX, and DE plug-ins.
  • Saving track fileset hangs/fails: save the compiler .track first, ensure the destination is writable, try running the period tool as administrator, and verify the game path.
  • Large object count fails randomly: disable DE’s experimental multithreading and test again.
  • Track appears unchanged: confirm the selected beta slot and that the new four files replaced the files for that slot.
  • Empty beta slot crashes: this is expected in the archived beta-slot implementation.
  • Very reflective terrain: inspect the mask-map alpha; use black for a dry/matte starting point.
  • Tree/object crashes: remove normal tree objects and try a proper ecosystem; add environmental systems after the spline and base track work.

MX Simulator

The MX Simulator wiki is much smaller than the other sources, but it preserves a basic starting workflow.

Enable the editor

  1. Find mx.exe or a snapshot executable in the MX Simulator installation.
  2. Create a shortcut.
  3. Add a space followed by --editor after the quoted executable path in the shortcut target.
  4. Start the game through that shortcut.
  5. Load a track and press Tab to enter the editor. Tab also cycles views.

Leaving this switch enabled was reported not to interfere with ordinary or online racing.

Start a blank track

The archived Twisted D.I.R.T. blank pack contained:

  • A 1025×1025 track for smaller layouts such as supercross.
  • A 2049×2049 track for larger national layouts; it uses roughly four times the terrain memory of the smaller version.

Copy the blank track before editing it. Put the copy in the MX Simulator personal folder, historically:

C:\Users\<you>\AppData\Local\MX Simulator

Use a name without spaces or special punctuation such as @ or $; periods and underscores were suggested. Load the copied track in a new race and press Tab to edit. Notepad++ was recommended for its text files.

Sources: mxswikka_pages.enableingtheMXSeditor, mxswikka_pages.STARTINGANEWBLANKTRACK, and mxswikka_pages.personalfolder in the SQL dump.

Expanded findings from former internal material

This section records knowledge found only—or stated much more precisely—in the former team, collaborator, utility-development, beta-testing, and personal-message areas. It supplements the game sections above.

MCM 1 and MCM 2 internals

The TRN/ENV relationship

Internal correspondence gives a more precise description of the older terrain containers:

  • MCM 1’s .trn contains terrain data, its texture, and precomputed terrain levels of detail.
  • MCM 2 uses a related but different .trn structure.
  • In a released MCM 2 track, that .trn is stored inside the .env.
  • The private extraction tools could read enough of both formats to recover terrain and textures, but the authors did not claim to understand enough to create every form of .trn from scratch.

This explains why an .env extractor can recover a displacement map even though the released track does not visibly contain a separate height-map image. It also explains why copying a raw MCM 1 reader into an MCM 2 workflow does not work: the formats are related, not identical. Sources: personal messages 414, 814, 816, 826, and 877.

MCM 1 wireframe/debug mode

One archived debugging method says MCM 1 can expose a wireframe view after enabling a registry flag:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Games\Motocross Madness\1.0]
"Programmer"=dword:00000001

The reported in-game toggle is Shift+F7. This is useful for seeing how the game changes terrain detail and smooths angled jumps at lower quality settings. It is an archival Windows registry technique: back up the key, use it only with the original game, and do not assume the same path exists on 64-bit Windows without registry redirection. Source: personal message 228.

APM’s later role

Early MCM 2 custom-object instructions made APM essential because it repaired or extended Armadillo’s configuration and scene references. Later internal correspondence describes APM as largely obsolete once Dillo Too handled the same advanced project work. A practical interpretation is:

  • Use APM when following an older Armadillo/custom-object workflow that explicitly requires it.
  • Do not add APM as an automatic extra stage when Dillo Too already loads, edits, and packs the project successfully.
  • Never run an additional packer merely because an old tutorial names it; duplicate transformations can introduce a new failure.

Source: personal-message thread 1705.

Black shadow-render workaround

A repeated Dillo Too/UE2 failure rendered the entire terrain black when generating object shadows on some newer graphics hardware. An internal tester reported that temporarily switching the Windows display color depth to 16-bit before opening the tool allowed both Dillo Too and UE2 to render shadows correctly. This is a period workaround, not a modern graphics recommendation. Use it only on a disposable copy of the project and restore the display mode afterward. Source: personal message 1109.

MVA: precise editor and format findings

MVA terrain-scale conversion table

The internal Max Calculator testing recovered the mapping between the Unleashed Editor’s integer Terrain Scale slider and the grid resolution stored in the scene:

MVA slider Grid resolution Available actual-strength range
1 1.0 1.0–100.0
2 1.5 1.5–150.0
3 2.0 2.0–200.0
4 2.5 2.5–250.0
5 3.0 3.0–300.0
6 3.5 3.5–350.0
7 4.0 4.0–400.0
8 4.5 4.5–450.0
9 5.0 5.0–500.0
10 6.0 6.0–600.0

The relation is:

actual terrain strength = Terrain Height slider × grid resolution

The scale becomes non-linear at slider value 10. The Terrain Height slider advances in whole numbers, so coarse grid resolutions also make the smallest height adjustment coarse.

The same testing found a serious editor bug: editing the spline or reopening some projects could reset Terrain Scale to 6, which means grid resolution 3.5. The recommended safe sequence was to record the intended scale, finish spline work, set the scale again immediately before the final save/export, and verify it after reopening. This bug explains conversions that unexpectedly changed size or left objects floating. See MVA Terrain Scale to MCM2 Grid Res conversion numbers.

MVA activity and AI controls

The Unleashed Editor exposes separate course and AI spline concepts. Internal notes list these per-node AI properties:

  • Speed: target speed in miles per hour; -1 means unrestricted/full speed.
  • No Reset Zone: advances a crashed rider or AI to the next valid node. It is useful around bridges where a normal reset might place the rider underneath the course.
  • Pullback: tells the AI to shift/pull back.
  • Elevated: marks an elevated node.
  • Disable ALOD: disables automatic level-of-difficulty behavior for that segment.
  • No Track Offset: forces the AI onto the spline center line.
  • Clutch: instructs the AI to use the clutch.
  • Preload: instructs the AI to preload; the archived help text says the amount changes by 10% for every mph below target speed.

The AI path can branch, allowing different racing lines. Those controls are powerful but do not guarantee stock-quality AI; every branch and jump still requires in-game testing.

An MVA package can contain activity files such as National.aty, FreeRide.aty, and other mode-specific .aty files. The .atyList appears to be the central list that exposes activities. An internal experiment made High Score Challenge appear by adding its .aty, but the game crashed because the supporting activity/spline data was incomplete. Adding an activity name is therefore only the first step.

See MVA Track Editor — Information and MVA Track Files — Information.

Direct-to-track testing shortcut

MVA accepts a track name as a command-line parameter. The internal example:

G:\mva\MXvsATV.exe HangOn

launches HangOn.pak without including .pak in the argument. This can shorten the edit/export/test cycle. It is tied to the original PC build and should be tested with a copied shortcut.

Repeatable MCM 2 to MVA conversion

The former Utility Development board documents two paths.

Rainbow editor plus POV Injector

  1. Use Dillo Too to extract the MCM 2 POV-style displacement map and rendered texture.
  2. Create an MVA National .PROJECT.
  3. Use POV Injector to insert the displacement map into the project.
  4. Reopen the project in the Rainbow editor.
  5. Import textures and rebuild or convert objects.

UE2 direct conversion

  1. Create a new National in UE2.
  2. Import the MCM 2 .trn; UE2 copies its displacement maps, textures, grid settings, and related terrain data.
  3. Convert MCM 2 objects to MVA format.
  4. Import or paste the MCM 2 scene’s model section into the MVA .scn.
  5. Place converted user models in the location expected by that UE2 version.
  6. Import the MCM 2 ecosystem/ESB when available, then map it to converted MCM 2 vegetation or replace it with an MVA ecosystem.
  7. Add a valid MVA activity and spline; without an activity, a UE2-created terrain may not appear in the game.

The internal test also confirms that a geometrically exact conversion can ride poorly because MVA loses more speed in corners and uses different jump physics. Decide explicitly whether the goal is archival fidelity or equivalent gameplay. See Steps required to convert an MCM2 track to MVA.

MVA package and terrain variants

Internal inspection found that stock MVA tracks use a terrain format related to the console MXU/MVA data, while user tracks use a different-looking .trn representation. The developers suspected either a custom user-track loader or an export format used by the third-party PC editor. This is why some tools can import a stock .trn but fail on a user-track .trn, or vice versa.

The early forum diagnostic of marking an output .pak read-only and forcing the editor to overwrite it caused the editor to crash after leaving unpacked working files behind. That exposed file relationships for research, but it is not a production workflow. If reproducing it for preservation research, use a throwaway project and a copied package only. See topics 1486 and 1619.

MVA models and collision

Additional internal conversion notes clarify:

  • A .col variant or entry identified as f was used for static collision, while m was associated with moving collision.
  • A .pco can make an otherwise valid geometry/collision pair behave incorrectly.
  • Before blaming the converter, test static collision, confirm the selected COL type, and try the same object in a package built by another known-good packer.
  • Some scene files refer to an object as an SLT even though the actual MVA geometry is DXG.
  • Physics blocks found beside an object—weight, spring stiffness, damping, restitution, reset time, and friction terms—describe that object’s rigid-body behavior, not bike physics.

Sources: personal message 1158 and MVA Track Files — Information.

Vegetation conversion

MVA billboard atlases can be 128×1024, while MCM 2 expects square vegetation textures. The MXU conversion could often cut an atlas into neat 256×256 blocks; MVA billboards crossed those block boundaries. A conversion back to MCM 2 therefore required:

  1. Manually cutting each billboard into a new square atlas.
  2. Updating its UV rectangle in the EST.
  3. Converting the finished texture to the MCM 2/Rainbow format.
  4. Rebuilding the appropriate ecosystem resource.

This is why a model-and-texture extractor alone does not produce usable converted trees. Source: personal message 1032.

Reflex: internal format and compiler findings

Reflex file layers

The internal work distinguishes three important layers:

  1. Loose configuration: BXML files such as registries, key bindings, leaderboards, playlists, and controller presets.
  2. Database/package pairs: XML-like asset tables in .database files with binary assets in matching .package files.
  3. Track files: .level, .scene, .database, and .package, whose cross-references must agree.

Monitoring startup showed that Reflex opens specific named resources rather than indiscriminately loading every package by alphabetical order. A replacement therefore usually needs the exact expected filename or an explicit DLC/database reference; the MVA trick of relying on package sort order is not a general Reflex solution. See Reflex file load order.

Rainbow BXML structure

The archived team established that Reflex does not use an off-the-shelf BXML standard. The discovered structure is:

Header:
  "BXML" signature
  version
  string count
  pool pointer and size
  attribute count
  node count
  unknown/zero field
  compressed size

zlib-compressed payload:
  null-terminated string table
  typed value pool
  12-byte attribute records
  32-byte node records

Node records hold name and inner-text indices, a flag indicating whether the typed pool is used, a value type, level information, child count, and attribute range. Known value types in the archived research include string, integer, float, and Boolean; a Vector3 form was also observed. Nodes from the same XML level are stored together.

Reflex would not fall back to a plain XML file merely renamed .bxml. Successful editing required decompression, rebuilding the tables, zlib recompression, and correct repacking. The .database files were also treated as BXML-like asset tables. See Reflex BXML files and personal message 1419.

Displacement encoding and conversion math

The compiler’s terrain input can encode much more precision than 8-bit grayscale:

  • 8-bit grayscale: 256 height levels.
  • Leveller 16-bit PNG: 65,535 grayscale levels.
  • Leveller 16-bit BMP/TGA: 15 meaningful bits in 5-5-5 RGB; one bit unused.
  • Leveller 24-bit BMP/TGA: red is the high byte, green the middle byte, and blue the low byte of a 24-bit height value.

The forum found 8-bit and 24-bit files reliable in the early compiler while one 16-bit BMP interpretation was inconsistent. Preserve the exact export format known to work with the compiler version rather than assuming “16-bit” means the same channel layout in PNG, BMP, and TGA.

For an MCM 2 conversion:

starting Reflex horizontal size ≈ 256 × MCM2 grid resolution

Examples from the internal testing:

  • MCM 2 grid 3.0 → roughly 756–768 pixels.
  • Grid 5.0 → 1280 pixels.

Place that resized track inside the 2048×2048 National canvas. Physics may favor a smaller value than the geometric conversion; Valley Ride at grid 5.0 rode better near 1024–1152 than at the exact 1280.

The Reflex .track Scale value controls vertical height inversely: a larger Scale makes the terrain shorter. A proposed starting calculation is:

Scale ≈ Reflex vertical range ÷ converted MCM2 height strength

The internal Valley Ride example converts MCM 2 strength 250 at grid 5 to the grid-3 equivalent:

(250 ÷ 5) × 3 = 150
2048 ÷ 150 ≈ 13.65

That agreed with the empirically useful Scale range of roughly 14–16. These are conversion starting points, not universal constants. See Reflex Compiler 1.09 and Our own disp maps in Reflex.

A practical early texture-debug setup

Before a track has finished art, internal testing used deliberately distinct maps:

  1. Make the base dirt and blue-channel grass visibly different.
  2. Paint the Mask Map blue everywhere off track and black on the racing surface.
  3. In the ChromLum RGB image, start black and draw white course-edge lines.
  4. In the ChromLum alpha, begin with a brightened grayscale copy of the terrain and draw dark tire-path lines.

The bright and dark guide lines make orientation and channel mistakes obvious in game. Remove or soften them for release.

One test also found green deformation ruts when grass was assigned to the black/base overlay. The working hypothesis was that the base surface contributes the visible rut fill. For conservative results, keep the base channel as the primary racing dirt and assign grass to another mask channel.

Reflex 1.09 zone map results

The former compiler board contains a more complete test matrix than the earlier wiki. It applies specifically to compiler 1.09 and its DaltonB-derived file set.

All four zone images had to be supplied for the compiler to build the combined Rainbow zone resource correctly. Indexed colors start at 0. File labels may appear as Zone 0–3 in code and Zone 1–4 in documentation; they refer to the same four inputs with an offset of one in human-facing numbering.

Zone 1 — slip and reset, eight indices

Index Approximate effect
0 Extremely grippy
1 Very grippy
2 Normal dirt
3 Slightly more slip / sand
4 More slippery / water-like
5 Very slippery / ice or snow
6 No confirmed effect
7 Rider reset

Zone 2 — drag, four indices

Index Approximate effect
0 No drag
1 Normal drag
2 Sand/mud drag
3 Extreme mud/snow drag; strong power-loss sensation

Zone 3 — particles, eight indices

Index Observed result
0 Small brown dirt/grass mix
1 Grass and dark dry dirt
2 Large gray rocks and brown mud clumps
3 Dark, dusty dry roost
4 Fine water spray
5 No particles
6 Gray rocks and grass clippings
7 Large spray of loamy brown dirt

Zone 4 — sounds, eight indices

Index Observed result
0 Sticks/coarse gravel/dirt
1 Muffled carpet-like surface with debris
2 Water without splash emphasis
3 Water with splashes
4–6 No sound observed in this file set
7 Knobbies on plywood/metal; useful for freestyle ramps

The palette used half-intensity RGB combinations such as black (0,0,0), red (128,0,0), green (0,128,0), yellow (128,128,0), blue (0,0,128), magenta (128,0,128), cyan (0,128,128), and gray (128,128,128). The original post contains a couple of obvious copied RGB typos for magenta; use the index and conventional palette position rather than the typo.

The compiler initially retained 512-pixel offsets for larger zone maps, causing a National to read the wrong portion of the combined data. Until using a build with that bug fixed, 512×512 appeared to work where 1024×1024 did not. See Zone indexed color numbers.

Visual ruts, tire tracks, and bump decals

The “rutting” seen at the start of a Reflex race is separate from dynamic terrain deformation:

  • The static dozer/tire pattern is a loft-like 3D model or decal mesh following the track spline.
  • It has its own texture/bump treatment.
  • Recreating it requires both spline/path understanding and compatible surface-model output.

Later custom bump models were described as decal meshes. The conversion depended on vertex color alpha, not just a transparent image. Archived advice says 3ds Max was used because the workflow needed direct editing of vertex alpha; the then-current Blender workflow was believed to expose RGB vertex color but not the required alpha without a plug-in or custom exporter.

Sources: personal messages 1519, 1997, and 2182.

Reflex model placement and collision

Internal Digital Earthworks testing adds these details:

  • Stock models can use different shaders and texture slots. A model that looks monochrome in DE may still be correct in game because DE’s simplified preview selected a bump or mask texture instead of the diffuse texture.
  • Some stock objects intentionally lack collision because the player is kept away by reset boundaries.
  • One-sided geometry can disappear from an angle even when the asset is valid.
  • Object origin/pivot matters as much as dimensions. When recreating a stock object as a proxy in 3ds Max, match DE’s origin before converting position and Euler angles to Reflex position/look/up vectors.
  • Track-unique object IDs, names, and library identifiers must be preserved in generated .track entries.
  • For bale lines, DE’s ground alignment, previous-object alignment, and quarter-turn alignment controls can greatly reduce manual placement.

Large DE projects exposed address-space and memory-management limits even when the computer had free RAM. Closing other programs helped some 1,900-object projects export. Experimental multithreading also caused instability. A later DE build was marked to use up to 4 GB on 64-bit Windows, but the editor remained a legacy process with practical limits.

Ecosystems showed the opposite-looking failure: very small tree counts could be less stable than larger counts. Repositioning trees, using a different ecosystem, or raising the count sometimes made an otherwise valid ecosystem load. Treat that as a tool bug, not an artistic requirement.

See Alpha testing Digital Earthworks with objects and personal messages 2114, 2116, 2118, and 2210.

Confidence and safety notes for internal findings

  • Confirmed: directly repeated by tool authors or accompanied by a successful test.
  • Version-specific: Reflex zone indices, compiler Scale behavior, and DE bugs may differ across builds.
  • Inferred: some model, shader, and surface-map meanings were determined by substitution experiments rather than official documentation.
  • Unsuccessful experiments retained for warning: merely adding an MVA .aty, renaming XML to BXML, or copying a stock Reflex terrain while retaining its old spline does not produce a complete new race track.
  • Developer diagnostics: read-only package crashes, registry edits, and manual repacking should only be attempted on copies.

Tool reference

Tool Primary use Important caveat
ASCEdit MCM 1 utilities; derive a displacement map from an SX layout Historical tool with limited current documentation
tga2asc / maketerr MCM 1 national terrain compilation Use the archived Rainbow instructions for exact syntax
MCM Spline Editor Builds the MCM 1 .dat course spline Keep spline and scene names consistent
MCM Reader/internal extractors Recover terrain or textures from older Rainbow containers MCM 1 and MCM 2 TRN structures differ; public versions may support only one
makecub MCM 1 sky-cube creation Period image formats and face orientation matter
Armadillo Main MCM 2 editor Set scale early; old path assumptions affect custom models
APM Prepares MCM 2 projects for custom assets Run before final packing and use conservative names
Dillo Too Advanced MCM 2 editing, splines, objects, shadows, animation Repeated perimeter tiles limit correct object shadows
Leveller Higher-precision 3D terrain authoring Preserve high precision through export; do not reduce to 8-bit prematurely
POV-Ray Render MCM textures/shadows; source of higher-precision terrain encoding Modern versions removed/changed an old smooth directive
Terragen/Bryce/3ds Max Terrain visualization and rendered textures/skies Match rendered sun to the game sky; keep a separate render map
Unleashed Editor Official MVA project/activity editor Scale can reset during activity work
UE2 / Unleashed Too Advanced MVA tiles, spline, objects, and package editing Treat it as an expert tool and keep backups
POV Injector Higher-precision terrain into an MVA project Uses encoded red/blue-style TGA height data
SLTtoDXG Converts MCM 2 models to MVA Review collision and generated library entries
MVA Track Map Bug Fixer Repairs duplicate/wrong minimaps Requires an existing valid spline/minimap and creates .bak
Reflex Track Compiler Compiles .track definitions It is not a visual editor and reads the saved definition
Digital Earthworks Reflex visual terrain, object, ecosystem, water, and spline editing Requires legacy DirectX/PhysX components
View Disp Map Preview/smooth converted terrain for Reflex Preserve the unsmoothed source
Create Topdown Builds Reflex top-down texture from mask and overlays Overwrites its named output and only reads the expected bitmap workflow
DXTBmp Maintains an alpha channel in extended BMP files Verify alpha after round-tripping through another editor
Reflex Surface Creator Converts Collada geometry to a Reflex-compatible surface Clean transforms, axes, and mesh topology before conversion
Reflex Lib Maker Builds a custom Reflex object library from .liblist data Test a separate collision mesh when visual-mesh collision is unsuitable

File-format reference

Extension/file Game Purpose
.tga MCM 1, MCM 2, MVA tools Displacement, texture, skin, preview, or encoded height input depending on workflow
.ter MCM 1 Compiled terrain
.dat MCM 1 Track spline
.scn MCM 1, MCM 2, MVA Scene/configuration data; details differ by game
.cub MCM 1, MCM 2, MVA Sky cube
.prj MCM 2 Editable project
.env MCM 2 Packed playable track
.slt MCM 1, MCM 2 Model geometry/material data
.pak MVA Packed user track or custom asset package
.trn MCM 1, MCM 2, MVA Game-specific terrain container; MCM 2 stores it inside .env, and the structures are related but not interchangeable
.tdf MVA tools Spline/track-definition data used by UE2 workflows
.aty, .atyList MVA Activity definition and activity-list data
.dxg MVA Model geometry
.dxt MVA Model/surface texture
.dxm MVA Model/material support data
.col MVA Collision model
.pco MVA Physical/collision properties
.toy MVA Object/scene-related definition editable in UE2
.mot MVA Motion/path data
.tile MVA/UE2 Interchange file for a terrain tile
.track Reflex Text project/compile definition
.bxml Reflex Rainbow binary XML-like configuration with zlib-compressed tables
.bmp MVA, Reflex Terrain and control maps; exact bit depth, alpha, and palette matter
.psd Source work Layered paint source; do not assume every compiler/helper reads it
.dae Reflex object pipeline Collada model interchange
.liblist Reflex object pipeline Text definition for compiling a model library
.level, .scene, .database, .package Reflex The four files distributed for a beta-slot track

Selected source index

Broad history and game differences

MCM 2

MVA

Reflex

Wiki records used

The Reflex section also consolidates the current wikka_pages records named GettingStarted, DisplacementMaps, ReflexTrackCompilerOverview, ReflexTrackCompilerInstallation, ReflexTrackCompilerSharing, ReflexTrackCompilerTipTricks, TopdownTexture, MaskMapTexture, ChromLumTexture, JvdlChromLum, SoftnessMapTexture, ShadowMask, DirtTextures, ZoneFiles, and CreateTopdown.

The MX Simulator section uses the current mxswikka_pages records named enableingtheMXSeditor, STARTINGANEWBLANKTRACK, and personalfolder.

Former internal-board sources

Personal-message sources

Personal messages were used for technical corroboration or details not preserved in a board thread:

Message/thread Technical contribution
228 MCM 1 programmer registry flag and wireframe key
414, 814, 816, 826, 877 MCM 1/MCM 2 TRN extraction and the TRN-within-ENV relationship
1032 MVA-to-MCM 2 vegetation billboard conversion
1109 Vertically inverted UE2 texture import and 16-bit-display shadow workaround
1135 UE2 terrain needs an activity to appear in MVA
1158 Static/moving COL checks and PCO troubleshooting
1419 Reflex BXML/database extraction and compiler-development context
1519 Reflex static rutting as a spline-following loft/model
1705 APM versus later Dillo Too workflows
1997, 2182 Reflex bump/decal meshes and vertex-alpha requirements
2114, 2116, 2118, 2210 Digital Earthworks memory, export, and ecosystem instability

Editorial notes

  • Forum advice that was contradicted by later testing is described as experimental or version-dependent.
  • Former private/team posts and personal messages were included when they contributed track-making, format, tool, or troubleshooting knowledge.
  • Email addresses, IP addresses, account details, unrelated personal conversation, and material with no technical value were excluded.
  • Source links use the requested archive prefix: https://bruceatkinson.com/dirttwister/smf.
  • The SQL dump itself was not modified.