The extra cars and tracks
The download "POD (1997) (CD ROM) + Extras" has POD - Extra Cars (51 zips) and POD - Extra Tracks (50 zips) beside the POD disc. This page lists every one: what it is, whether our readers and the game load it, and whether the installer puts it in the original and in Un-POD. The files stay in derived/extras/ (unpacked: data files only) and never enter git. How the game finds its files is in modding.md. The formats are in formats/.
What is in the download
- POD's own content in 3dfx zips (
*_3dfx.zipthat name a POD car or track: Azthec, Lake, Shane, Truck and others). POD already has these. Some zips hold the same files as POD (measured, MD5). Others hold different.BL3/.BL4files, probably older (inferred). The installer leaves them out, because POD, the reference, already lists them. - OEM forms of POD's tracks: AlderOEM, CanyOEM, CityOEM, GalOEM, PlantOEM, PompOEM and SewerOEM. Each has a
.BL4only. Six are in group 2 with numbers 110 to 115 (Circuits.bin); AlderOEM is in group 1 with number 212. - Fan and web content. The rest. Readmes name QBall (Banana, the Stinger beta, Night), Leadbest (Newsance, November 2003) and the Witnessteam (the Down reskin of Slimepit). Some zips name a
_3dfxversion but hold a car or track that POD does not have (Adeo, Akura, Iceberg and others). POD'sVOITURE2.BINalready names fifteen web cars past its count (formats/cars.md): Breton, IRX, Akir7, Nocte, Kaizer, Pirate, Razor, Xira, DarkSmil, Bat and Witch are here. Eagle is not in the download. lagoon_stockholds three zips. Two are Lagoon and Stock "converted by Nico". The third is a copy of an installed game from May 1997. That copy is in an older car layout, with parameters 4 bytes longer and older picture headers, and its lists replace two of the race cars. The installer takes only the converted cars.
Each package is a folder with its list file and data files: Circuits.bin with one row (formats/lists.md) and <name>.bl3, .bl4, .img, .meg for a track; voitures.bin with one record (formats/cars.md) and .bv3, .bv4, .img, .meg for a car. Everest and Natura also carry a .ght file, and Enneade a chrome.ch4. The installer does not copy them: CD Patcher copies only the extensions above (below).
How Ubi Soft's CD Patcher installed them
Observed in CDPatcher.exe 2.0 (POD - Patch/cdpatcher2.zip, 1997), decompiled with Ghidra; the program was never run.
- It reads
DirectoryfromUbiSoft\Ubi.iniand builds the game's folders from a table of six names:Data\Binary\Circuits\,Voitures\,Scripts\,Mimg\,Resson\andData\Records\(FUN_00405040, the table at0x42b258, 0x18 bytes per name). Source folders are\circuits\<name>\and\voitures\<name>\under its own folder. - A track: the
.bl3or the.bl4toCircuits(the choice is below), the.imgtoMimg, the.megtoResson, and<name>.brtand-<name>.brt(the reverse best times) toRecordswhen the package has them (CopyFileAin the install loop; none of the download's zips has them). A car is handled the same way: the.bv3or.bv4toVoitures. - BL3 or BL4. At start-up it looks for five programs in the install folder (
FindFirstFileA). If one exists,DAT_0043569cis 1 and it copies the.bl4/.bv4; otherwise it copies the.bl3/.bv3. Inferred: the five are the 3D-card builds, whose names are in its strings. Only the 3dfx builds read.BL4(FINDINGS.md). - The lists: it copies
circuits.binandvoiture2.binbefore changing them, then adds the new row or record. Rows after the sixteenth count as added ones.
The installer: pod-extras
crates/pod-extras does the same job (crates/pod-extras/README.md):
build/release/pod-extras install derived/extras GAME_DIR --build software--build software installs for WINPOD.EXE, --build 3dfx for WPOD3DFX.EXE, and --build all both model files for Un-POD. It appends the rows to the install folder's CIRCUITS.BIN and the records to its VOITURE2.BIN, starting from the disc's lists. The rows POD's lists keep past their count stay after the new ones, where the game never reads them. Two limits come from the original's buffers:
| List | Limit | Evidence |
|---|---|---|
CIRCUITS.BIN | 96 rows | POD's load_circuit_list (0x471f24) keeps at most 0x60 rows (observed) |
VOITURE2.BIN | 32 records, so 24 cars after POD's 8 | POD reads the list into 0x1000 bytes at 0x4fc8a4 and copies 0x1000 bytes of it at 0x430f5a (observed); more would overrun the buffer |
With every zip: the software build gets 5 tracks and 24 cars. Every other new track has no .BL3, and the car list is full. The 3dfx build gets 34 tracks and 24 cars. Un-POD gets 34 tracks and 41 cars; its content folder has no limits (Deviation: in install.rs). --only ZIP,ZIP picks which ones go in. Where two zips hold the same car (Lagoon, Stock, Stinger), the one with both model files is installed, and the first one in name order when both have them.
In the original (measured)
Run in the emulated PC by the race-loop session (2026-10-24), with derived/extras-install/software copied into C:\POD\ and POD's WINPOD.EXE:
- The track screen pages past POD's 32 circuits to a third page with Beach, Fallen, Hellway, Iceberg and Night, each with its picture, length and laps.
- "Load new car" pages through the
VOITURE2.BINcars. LORIS, the last counted car, was swapped into slot 1, and the car screen showed its picture and its figures (86, 37, 61, 55, 61). - A race on Beach with LORIS started and ran with the opponents, lap 1 of 6, with no crash, to a race clock of 29 s.
The 3dfx build (Tron, CanyOEM) is still to be run, with the wrapper's POD 3dfx run. The installed VOITURE2.BIN names Breton twice: once counted (installed) and once among POD's own records past the count, which the game never reads.
In Un-POD
unpod --content GAME_DIR/Data reads the installed folder over the disc (game_source::Layered, case-blind), as the game reads its install folder first. A track with no .BL3 is read from its .BL4, and a car whose .BV3 does not load (ED, Homard) from its .BV4. Both are marked deviations in apps/unpod/src/load.rs. The track screen pages through the longer CIRCUITS.BIN: with every extra installed, 66 circuits on 5 pages of 16 (measured: pod-ui's track_pages_extras; the car swap offers all 49 VOITURE2.BIN cars, car_swap_extras, both run with POD_EXTRAS set to the content folder). POD's car screen pages only VOITURES.BIN's eight cars. Its "Load new car" item opens the car swap (menu 25, handler 0x4308ac), which trades a race slot for a VOITURE2.BIN car and writes both lists, so an installed car is raced by swapping it in (traced by the front-end session, docs/systems/front-end.md; pod-ui's car_swap.rs). Un-POD writes the two lists into the content folder, where the original writes them into its install folder, and the next race reads them from there. Live races on Hellway, Arcade and Tron, and with the car ED, were driven headless on 2026-10-24. What looked wrong on three of them came from one port bug and two things in the files (the app session's dive, 2026-10-24):
- The port. pod-world read the wrong word of the
.BL4sector faces, so every.BL4-only track lost its ground and wall bits. Tron's cars fell through the floor, and Arcade's ran into a zero vector in the physics, where the original stops with a fatal error. Both come right with the fix: on Tron the cars settle 0.7 below their start records, on the ground (measured, headless). - Arcade's grid lies flat over a sloped road. Start records 5 and 6 are 3.5 and 1.4 units below the ground (measured: the faces under each record). The settling pushes those cars up onto the road, as the original's would, since the grid code (
FUN_004236f0) places a car at its record raised by 1 and does not look for the ground. - Beach's grid is on the lower floor (sector 17, z −9.58), where the race paths run. The out-of-play sector above it (63, z 30.4) is scenery. The player's car stands at the back of the grid, near the sector's back edge, and Un-POD's chase camera (a stand-in: the game's
FUN_0042b6c0is not traced) sits inside the wall behind it until the car moves off. The cars are where the file puts them. - No opponents on EASY or MEDIUM. Ecocoon, Forest and Tron name "NEANT" for those two lists. POD's reader (
FUN_0046774c) then leaves the computer count at 0, so the player races alone, as Un-POD shows (observed). Tron's HARD list is Forest's (forest_H.lev); its computer cars still find their lanes and race (measured, headless, 52 s).
Files the game cannot load
Our readers now read every file the game reads, and write each back byte for byte (crates/pod-formats/tests/extras.rs, 482 files). The test lists these eight as broken:
| File | Why | How it is known |
|---|---|---|
aztec/.../AZTEC.BL3, hive/.../Hive.bl3 | Empty (0 bytes) in the zip: the software build cannot load the track | measured (zip listing) |
ed/.../ED.BV3, homard/.../homard.bv3 | Byte copies of the .BV4: 16-bit 128 × 128 pages that the 8-bit build reads as 256 × 256 8-bit pages, past the end of the file | measured (MD5 equal; the block passes the end) |
lagoon_stock/.../lagoon.bv3, stock.bv3 | The 1997 snapshot's older car layout: the torque curve count sits 4 bytes later than in POD's 0x558-byte parameter block | measured |
lagoon_stock/.../lagoon.img, stock.img | An older picture header: 16 bytes shorter than the converted copies | measured |
These load, with a caveat (formats/tracks.md, "What the game tolerates"):
- CanyOEM and PompOEM declare fewer animated faces than they hold (15 against 77, 17 against 27). POD's
0x463c8cwrites one 0x18-byte record per face into an allocation sized by the declared count, so the original writes past its buffer (inferred: heap corruption; not yet run). CityOEM declares more than it holds, which is harmless. - Forest's reverse track does not read, because entry 3 lacks its 0x38-byte head. Race it forward.
Readers changed for these files, each following the game (observed in POD's code): texture blocks are read where the file puts them, without checking the names; "NEANT" is compared case-blind in load_track_file; zero bytes between entries are allowed; and bytes after a picture's pixels are kept (formats/textures.md, formats/images.md).
Every extra
"Kind": POD's own (with the same or other files than POD's), an OEM form, or fan or web content. ".BL3"/".BL4": reads (our readers, as the game reads it), none (not in the zip), broken (above). "Installed": by pod-extras for each build. In POD means POD already lists it, list full means the original's car list has no room, and duplicate means another zip holds the same car.
Tracks
| Zip | File | Kind | Author | .BL3 | .BL4 | Installed: software, 3dfx, Un-POD |
|---|---|---|---|---|---|---|
| AlderOEM | Alderoem | OEM form | none | reads | no, yes, yes | |
| Antipod | Antipod | fan or web | none | reads | no, yes, yes | |
| arcade | Arcade | fan or web | none | reads | no, yes, yes | |
| arcane | Arcane | fan or web | none | reads | no, yes, yes | |
| aztec | Aztec | fan or web | broken | reads | no, yes, yes | |
| azthec_3dfx | Azthec | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| babelweb_3dfx | Babelweb | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| bank_discover | Discover | fan or web | none | reads | no, yes, yes | |
| BEACH | Beach | fan or web | reads | reads | yes, yes, yes | |
| Bender | Bender | fan or web | none | reads | no, yes, yes | |
| canyoem | Canyoem | OEM form | none | reads | no, yes, yes | |
| cityoem | Cityoem | OEM form | none | reads | no, yes, yes | |
| ecocoon | ECocoon | fan or web | none | reads | no, yes, yes | |
| Enneade | Enneade | fan or web | none | reads | no, yes, yes | |
| escape | Escape | fan or web | none | reads | no, yes, yes | |
| everest | Everest | fan or web | none | reads | no, yes, yes | |
| factory_3dfx | Factory | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| fallen | Fallen | fan or web | reads | reads | yes, yes, yes | |
| forest | Forest | fan or web | none | reads | no, yes, yes | |
| Forgetit | Forgetit | fan or web | none | reads | no, yes, yes | |
| galoem | Galoem | OEM form | none | reads | no, yes, yes | |
| Hellway | Hellway | fan or web | reads | reads | yes, yes, yes | |
| hive | Hive | fan or web | broken | reads | no, yes, yes | |
| iceberg_3dfx | Iceberg | fan or web | reads | reads | yes, yes, yes | |
| lake_3dfx | Lake | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| loon_3dfx | Loon | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| magnetic_3DFX | Magnetic | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| megapol_3dfx | megapol | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| mine_3dfx | Mine | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| nadir | Nadir | fan or web | none | reads | no, yes, yes | |
| natura | Natura | fan or web | none | reads | no, yes, yes | |
| Newsance | Newsance | fan or web | Leadbest (2003) | none | reads | no, yes, yes |
| NIGHT | Night | fan or web | QBall | reads | reads | yes, yes, yes |
| parking_3dfx | Parking | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| pipeline_3DFX | Pipeline | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| pipeline_heaven | Heaven | fan or web | none | reads | no, yes, yes | |
| plantoem | Plantoem | OEM form | none | reads | no, yes, yes | |
| pompeii_rayway | Rayway | fan or web | none | reads | no, yes, yes | |
| pompoem | Pompoem | OEM form | none | reads | no, yes, yes | |
| road70_3dfx | Road70 | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| seweroem | Seweroem | OEM form | none | reads | no, yes, yes | |
| skyrace_3dfx | Skyrace | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| slimepit_down | Down | fan or web | Witnessteam (reskin) | none | reads | no, yes, yes |
| slimepit_parc | Parc | fan or web | none | reads | no, yes, yes | |
| special_3dfx | Special | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| spin_3dfx | Spin | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| tron | Tron | fan or web | none | reads | no, yes, yes | |
| veitland_colony | Colony | fan or web | none | reads | no, yes, yes | |
| west_3DFX | West | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| Zed_3DFX | Zed | POD's own, other files | reads | reads | in POD, in POD, in POD |
Cars
| Zip | File | Kind | Author | .BV3 | .BV4 | Installed: software, 3dfx, Un-POD |
|---|---|---|---|---|---|---|
| adeo_3dfx | Adeo | fan or web | reads | reads | yes, yes, yes | |
| akir6 | Akir6 | fan or web | reads | reads | yes, yes, yes | |
| Akir7 | Akir7 | fan or web | reads | reads | yes, yes, yes | |
| akura_3dfx | Akura | fan or web | reads | reads | yes, yes, yes | |
| alien_3dfx | ALIEN | POD's own, other files | reads | reads | in POD, in POD, in POD | |
| arakn_3dfx | Arakn | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| atlas_3dfx | Atlas | fan or web | reads | reads | yes, yes, yes | |
| Baboss | Baboss | fan or web | reads | reads | yes, yes, yes | |
| banana | Banana | fan or web | QBall | reads | reads | yes, yes, yes |
| bat | Bat | fan or web | reads | reads | yes, yes, yes | |
| Breton | Breton | fan or web | reads | reads | yes, yes, yes | |
| buffo_3dfx | Buffo | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| catamax_3dfx | Catamax | fan or web | reads | reads | yes, yes, yes | |
| crow_3dfx | Crow | fan or web | reads | reads | yes, yes, yes | |
| dalton_3dfx | Dalton | fan or web | reads | reads | yes, yes, yes | |
| Darksmil | DarkSmil | fan or web | reads | reads | yes, yes, yes | |
| deuch_3dfx | Deuch | fan or web | reads | reads | yes, yes, yes | |
| eclypse | Eclypse | fan or web | reads | reads | yes, yes, yes | |
| ed | ED | fan or web | broken | reads | no, yes, yes | |
| f1 | F1 | fan or web | reads | reads | yes, yes, yes | |
| f2 | F2 | fan or web | reads | reads | yes, yes, yes | |
| f3 | F3 | fan or web | reads | reads | yes, yes, yes | |
| frazer_3dfx | Frazer | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| fuego_3dfx | Fuego | fan or web | reads | reads | yes, yes, yes | |
| HLRazor_3dfx | HLRazor | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| homard | Homard | fan or web | broken | reads | no, yes, yes | |
| IRX | IRX | fan or web | reads | reads | yes, yes, yes | |
| jaero_3dfx | Jaero | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| Kaizer | Kaizer | fan or web | reads | reads | yes, yes, yes | |
| lagoon_3dfx | Lagoon | fan or web | reads | reads | yes, yes, yes | |
| lagoon_stock | Lagoon | fan or web | reads | none | duplicate, duplicate, duplicate | |
| lagoon_stock | Stock | fan or web | reads | none | duplicate, duplicate, duplicate | |
| locust_3dfx | Locust | fan or web | reads | reads | yes, list full, yes | |
| loris_3dfx | LORIS | fan or web | reads | reads | yes, list full, yes | |
| mirage_3dfx | Mirage | fan or web | reads | reads | list full, list full, yes | |
| Nocte | Nocte | fan or web | reads | reads | list full, list full, yes | |
| Onyx | Onyx | fan or web | reads | reads | list full, list full, yes | |
| panther | Panther | fan or web | reads | reads | list full, list full, yes | |
| Pirate | Pirate | fan or web | reads | reads | list full, list full, yes | |
| razor | Razor | fan or web | reads | reads | list full, list full, yes | |
| RM667 | RM667 | fan or web | reads | reads | list full, list full, yes | |
| shane_3dfx | Shane | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| shark_3dfx | Shark | fan or web | reads | reads | list full, list full, yes | |
| stealth_3dfx | Stealth | fan or web | reads | reads | list full, list full, yes | |
| stinger-beta | Stinger | fan or web | QBall | reads | reads | list full, list full, yes |
| stinger_3dfx | Stinger | fan or web | reads | reads | duplicate, duplicate, duplicate | |
| stock_3dfx | Stock | fan or web | reads | reads | list full, list full, yes | |
| truck_3dfx | Truck | POD's own, the same files | reads | reads | in POD, in POD, in POD | |
| turd | Turd | fan or web | reads | reads | list full, list full, yes | |
| twin_3dfx | Twin | fan or web | reads | reads | list full, list full, yes | |
| Witch | Witch | fan or web | reads | reads | list full, list full, yes | |
| Xira | Xira | fan or web | reads | reads | list full, list full, yes |