Skip to content

Ferrum development journal · Part 16 of 19

Getting Wine's Real 32-Bit Startup to Run

The ordinary Wine loader path needed real process, thread, locale, and shutdown state. A command prompt that prints and relaunches became a useful application milestone.

The generic 32-bit goal is to run the application's real Windows components, rather than keep adding host-side replacements for whichever import the next title reaches. That meant moving into Wine's actual startup path and supplying the process and thread state it expects to find.

The investigation followed the loader through its initialization, heap and process-parameter work, and kernel32 lookup. As it progressed, missing activation-context state, thread setup, locale data, and other startup details became concrete failures to resolve. These are ordinary runtime requirements, even when the visible application is only a command prompt.

Shutdown needed its own work. A process can print the expected line and still fail to terminate correctly, leave a peer thread running, or break the next launch. The adopted checkpoint included owner-aware process termination and waiting for the relevant cleanup before final exit. That made clean shutdown part of the result rather than an afterthought.

By the October 11 records, Wine's real 32-bit command prompt had produced the expected output, exited cleanly, and launched again. The current adopted checkpoint also had the original regression groups and additional native64 and locale-related groups rechecked. Those are bounded results on a named driver, not a blanket claim about the rest of the Windows catalog.

I like this milestone because it's easy to understand and difficult to replace with a superficial test. An ordinary executable is using real runtime code, doing work, and leaving the system in a state where it can do it again. The remaining failures can then be investigated from a more realistic starting point.

This still left asynchronous I/O, broader application behavior, Steam, graphics journeys, and a complete packaged release open. It was a meaningful step toward the generic path, and it gave us a better baseline for the archive and file tests that followed.

Ferrum development journal

View the journal

Live19 entries so farUpdated New (19 entries updated in the last 14 days)

  1. Part 1Bringing FEX to macOS: The First Windows ProgramDevelopment work: Aug 5 – 7, 2026Updated , new
  2. Part 2From Return Values to Pixels and SoundDevelopment work: Aug 8 – 11, 2026Updated , new
  3. Part 3Building More of the Windows RuntimeDevelopment work: Aug 12 – 18, 2026Updated , new
  4. Part 4Following a Game Through Its Opening VideoDevelopment work: Aug 19 – 20, 2026Updated , new
  5. Part 5Installers, Saves, Fonts, and the Parts Around the GameDevelopment work: Aug 21 – 22, 2026Updated , new
  6. Part 6Game Progress and Measuring the Right ThingDevelopment work: Aug 23 – 27, 2026Updated , new
  7. Part 7Building the 32-Bit Graphics PathDevelopment work: Aug 28 – Sep 1, 2026Updated , new
  8. Part 8Making Memory, Files, and Graphics State AgreeDevelopment work: Sep 2 – 3, 2026Updated , new
  9. Part 9DirectX 12, Shader Caches, and the Steam Startup WorkDevelopment work: Sep 4 – 6, 2026Updated , new
  10. Part 10Working on Presentation and Controller InputDevelopment work: Sep 7 – 12, 2026Updated , new
  11. Part 11A Launcher and a Freeze That Wasn't the PresenterDevelopment work: Sep 15 – 17, 2026Updated , new
  12. Part 12Portal Reaches a Command Stream, With the Frame Still AheadDevelopment work: Sep 23 – 26, 2026Updated , new
  13. Part 13Correcting the Ferrum Progress ReportDevelopment work: Oct 2, 2026Updated , new
  14. Part 14Recovering the Project and Resuming Real TestsDevelopment work: Oct 5, 2026Updated , new
  15. Part 15Making Memory Protection and Lifetime Tests More UsefulDevelopment work: Oct 6 – 9, 2026Updated , new
  16. Part 16Getting Wine's Real 32-Bit Startup to RunDevelopment work: Oct 9 – 11, 2026Updated , new
  17. Part 17Making the Launcher Own Its Storage and ProcessesDevelopment work: Oct 11, 2026Updated , new
  18. Part 18A Real Archive Roundtrip and Better File BehaviorDevelopment work: Oct 11, 2026Updated , new
  19. Part 19Asynchronous I/O and the Bytes a Cancelled Write KeepsDevelopment work: Oct 11, 2026Updated , new

Arrow keys move through the results, Enter opens one, Command or Control with Enter opens it in a new tab. Tab and Shift+Tab change which kind of results are shown.