POD in a window
2026-10-23, ninth session.

The attract-mode race, two players split screen, drawn by WINPOD.EXE under Wine 11.
Until now everything we knew came from reading the code and the files. To test a modded file we need the game itself running. There is no Windows 95 machine here, so the choice was Wine (Gcenx's macOS build, Wine 11) with the disc's folder as drive D:, labelled POD2_0.
Six walls
Each stop came with its own message, and each was traced back to one place in WINPOD.EXE. The full table is in Running the original.
"A privileged instruction was executed at 004a88cd." The CPU check (
FUN_004a4284) asks a Cyrix chip for its identity through I/O ports0x22and0x23. Windows 95 let a program do that; Wine does not. The patched copy says "not a Cyrix"."SetDisplayMode → DDERR_UNSUPPORTED". The game asked for 640 × 480 at 1,640 bits per pixel. A breakpoint in winedbg showed the depth was right (16) when the setup began. The culprit is the mode-list callback (
0x4a4740): it appends every display mode to a table with no limit. A 1997 card listed a dozen modes. A Mac lists well over sixty, and the table runs into the colour-depth variable next to it. A small replacement callback keeps the first 56 modes up to 1024 wide.It kept going fullscreen. The game plays in a window only on a 16-bit desktop. On any other desktop it switches itself to fullscreen when activated. It now starts windowed (
DAT_004f7260= 0) and reads the desktop as 16-bit."Please insert POD CD-ROM." This disc has its text in French, German, Italian and Spanish, but no English folder. With
Language=Englishthe game fails to openDIC_ERR.BMDand blames the CD. It now runs in French.A loading screen, twice. The game drew 16-bit pixels into a 32-bit surface, so every row showed up as two squashed copies:

The back surface now asks for a 16-bit pixel format, and Wine converts it on each copy to the screen.
Colours a little off. The menu came up, but greener and bluer than our decoder shows it. The game draws in RGB555 unless the screen says RGB565 (
DAT_0060b314), and Wine's software blitter converts only 565:
The game now reads the layout from its own back surface, sees RGB565, and draws in it. POD had a 565 path all along, for the cards of the day that used it.

NOINDEO.BBM from DATA/BINARY/VIDEO, one of the stills we decoded earlier, shown by the game itself: the intro videos need the Indeo codec.
How it is known
Every patch checks the original bytes before it writes, in run/wine/patch_winpod.py. The copy goes into the Wine prefix under derived/, and the player's file is never touched. run/wine/run.sh builds the drive, the Ubi.ini the installer would have written, and the patched copy, then starts the game. The overflow was measured: winedbg showed the depth as 16 on entry and 0x668 at the failing call. The rest was observed in the code and then confirmed by the next run.
Next
Drive a race from the keyboard, and get sound, CD audio and the Indeo videos working. Then record the game's file reads, so each format document can name what the game opens and when. After that, load a modded texture and watch it appear on screen.