44 Intermission & Finale Screens
This tour explores how the Doom engine handles intermission and finale screens through three modules: f_finale (end-of-game sequence), wi_stuff (intermission stats), and f_wipe (screen transitions).
44.1 f_finale.h – Finale Interface
File: linuxdoom-1.10/f_finale.h
These function prototypes allow the main loop to manage the finale state:
F_Responder
– Handles input events during the finaleF_Ticker
– Advances the finale state each tickF_Drawer
– Renders the finale screenF_StartFinale
– Triggers the finale sequence
44.2 f_finale.c – Finale Implementation
File: linuxdoom-1.10/f_finale.c
- Lines 1–10: Standard includes for video, sound, and WAD handling
- Lines 118–121:
F_StartFinale
chooses the background flat and text (e.g.,finaleflat = "FLOOR4_8"
andfinaletext = E1TEXT
for episode 1) - Lines 241–245:
F_Ticker
updates the finale logic. Whenfinalecount
surpasses a threshold, the text phase transitions to the art screen with a screen wipe (finalestage = 1
)
44.3 wi_stuff.h – Intermission Stats Interface
File: linuxdoom-1.10/wi_stuff.h
Declared functions:
WI_Start
– Sets up intermission usingwbstartstruct_t
WI_Ticker
– Updates the intermission screen each tickWI_Drawer
– Renders intermission content
44.4 wi_stuff.c – Intermission Stats Rendering
File: linuxdoom-1.10/wi_stuff.c
- Lines 1450–1454:
WI_drawStats
draws the scoreboard for single-player intermission, showing kills and items usingV_DrawPatch
andWI_drawPercent
.
44.5 f_wipe.h – Screen Wipe Interface
File: linuxdoom-1.10/f_wipe.h
Declared types and functions:
wipe_ColorXForm
,wipe_Melt
– Transition styleswipe_StartScreen
,wipe_EndScreen
,wipe_ScreenWipe
– Frame capturing and wipe rendering
44.6 f_wipe.c – Screen Wipe Animation
File: linuxdoom-1.10/f_wipe.c
- Lines 237–256:
wipe_StartScreen
captures the current frame inscreens[2]
wipe_EndScreen
stores the next frame inscreens[3]
and restores the initial bufferwipe_ScreenWipe
performs the interpolation between frames for transition effects
That completes the tour of intermission and finale screen handling.