Skip to content

Ferrum development journal · Part 4 of 19

Following a Game Through Its Opening Video

A game's opening sequence connected video formats, input timing, and its own state machine. Fixing the picture was only part of getting past it.

A game's opening video seems like it should be a simple milestone: play the video, let it finish, and get to the next screen. The actual work turned out to involve the media samples, the game's own logic, and the timing of the input used to move through its setup.

During this phase, the Hollow Knight investigation followed the opening sequence into the game's code rather than assuming that every stall was a rendering problem. The video work included details such as the advertised image format, the stride of a frame, and the size of the sample being handed to the next component. If those disagree, the application can have data without getting the picture it expects.

Input had a similar requirement. Sending a key isn't the same as proving that the game received the right press and release at the right point in its frame loop. A setup prompt can depend on state that isn't obvious from a screenshot. The tests needed to distinguish a key that was delivered, a prompt that accepted it, and the game actually advancing.

That changed how I wanted to approach these problems. Rather than repeatedly send input and hope the next screen appeared, the work followed the condition the game was waiting for. When the media path and the state transition were both understood, there was a much more useful explanation for what still blocked progress.

The August 19–20 work should be read as that investigation and repair period. Later entries record the opening sequence advancing; I wouldn't pull that later result backward and describe every earlier run as successful. Some observations and initial explanations had to be corrected along the way.

For the eventual user, the desired result is ordinary: the opening finishes and the game responds. For the port, this was a good reminder that a visible image, a running process, and a completed application transition are three different things to verify.

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.