9  OS & Hardware Abstraction: Overview

This tour shows the core system, video, sound, and network abstraction layers and their key function prototypes.


This section examines the system interface layer in DOOM.
The i_system.h header and i_system.c implementation provide platform-agnostic operations for initialization, timing, memory management, and error handling.


9.0.1 πŸ“‚ File: i_system.h

Core system interface layer: platform-agnostic operations like initialization, timing, memory, input, quitting, and error handling.


9.0.2 πŸ“„ File: i_system.h (lines 34–89)

Defines system function prototypes without implementation details.


9.0.3 πŸ“‚ File: i_system.c

Implementation of core system functions for Linux.


The video abstraction layer provides platform-specific graphics operations via i_video.h and i_video.c, managing video initialization, screen updates, and palette handling.


9.0.4 πŸ“‚ File: i_video.h

Graphics layer for: - Video init - Palette management - Frame updates - VBL sync - Screen reads


9.0.5 πŸ“„ File: i_video.h (lines 37–55)

Defines graphics-related function prototypes.


9.0.6 πŸ“‚ File: i_video.c

Video operations implementation for Unix/X11 environments.


Next we’ll look at the sound abstraction layer in i_sound.h and i_sound.c, which provides audio device control, sound effects, and music playback.


9.0.7 πŸ“‚ File: i_sound.h

Sound abstraction layer: - Sound and music system interface - Lifecycle and runtime control


9.0.8 πŸ“„ File: i_sound.h (lines 40–69)

Function prototypes for audio init, updates, SFX, and music playback.


9.0.9 πŸ“‚ File: i_sound.c

Unix/Linux sound implementation using OSS and /dev/dsp.


The network abstraction layer in i_net.h and i_net.c provides multiplayer networking capabilities using I_InitNetwork and I_NetCmd.


9.0.10 πŸ“‚ File: i_net.h

Network abstraction layer: - Initializes networking - Handles network commands


9.0.11 πŸ“„ File: i_net.h (lines 36–38)

Function prototypes for network init and packet handling.


9.0.12 πŸ“‚ File: i_net.c

UDP-based networking implementation for multiplayer gameplay.


You’ve seen the header definitions and corresponding Unix-specific implementations for the system, video, sound, and networking layersβ€”forming DOOM’s OS & hardware abstraction.