Skip to content

Ferrum development journal · Part 5 of 19

Installers, Saves, Fonts, and the Parts Around the Game

A silent 7-Zip installation and progress on saves, fonts, and audio brought more ordinary Windows behavior into the development stack.

I want Ferrum to run useful software through its normal workflow. That includes the installer, the files it creates, and what happens after you close the program. A game rendering a scene is exciting, but it still needs a sensible place to put a save and the Windows state its installer expects to find.

One concrete result in this period was the silent installation of the original 7-Zip 26.02 x64 setup. The recorded test checked the installed files against the archive, along with timestamps, shortcuts, registry changes, and the process exit. The record reports 107 matching installed files. That is a result for that installer and build, rather than evidence that every Windows installer works.

Hollow Knight work also reached a save-file milestone. One synchronization investigation found a mutex held across a wait, blocking the other work needed to make progress. Fixes like that are easy to describe as a speed improvement, but they also affect correctness: whether a program can finish the work it already asked to do.

Fonts and audio were getting more attention too. The GDI font surface gained real font data and glyph work through CoreText. The MIDI path was connected to native Mac facilities. These changes filled in pieces that an application may use before its main content ever appears. They also exposed remaining problems, including audio initialization and lifetime behavior that still needed their own fixes.

The opening-video work continued through this period as well, with later records showing the sequence advancing. Taken together, these were more realistic application behaviors than the first small executables could exercise. They also made it clear how many layers an ordinary launch depends on.

I'm keeping the historical installation result separate from the newer command-line archive tests covered later in this series. They use different 7-Zip versions and different builds. Both are useful, but combining them into a single claim that the entire application is finished would hide the work still needed.

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.