.PIC in IGI 2 -- High-Res UI Bitmaps

1. Architectural Role & Engine Purpose

The PIC (Covert Strike High-Resolution Interface Artwork) format stores high-definition mission briefing graphics, satellite maps, interactive tactical computer terminals, and weapon inventory screens in I.G.I. 2: Covert Strike.

In IGI 2, PIC files evolved to support 32-bit ARGB8888 color and resolutions up to 1024x768. They interface directly with Direct3D 8 render targets, allowing interactive UI elements (zooming satellite map coordinates, moving security camera feeds, and hacking progress bars) to be composited smoothly over background artwork.

2. Binary File Layout & Memory Map Diagram

An IGI 2 PIC file contains an expanded header with bitmask formats and contiguous 32-bit pixel data:

IGI 2 PIC PICTURE — HIGH-RES 32-BIT ARGB ARTWORK LAYOUT 0x00: Header (24 Bytes) 32-BIT ARGB Magic "PIC2" | Width (1024), Height (768) | Pixel Format (0=ARGB8888, 1=RGB888) | Data Size magic[4], version, width, height, format, data_size Color Channel Bitmasks (RGBA Channel Layout) BITMASKS Red Mask (0x00FF0000), Green Mask (0x0000FF00), Blue Mask (0x000000FF), Alpha Mask (0xFF000000) Native 32-bit color fidelity for satellite photographs and computer hacking screens Contiguous 32-Bit Pixel Scanline Buffer 1024x768 BUFFER 1024 * 768 * 4 Bytes (3.14 MB uncompressed): Interactive PDA maps and briefing slides Bound directly to Direct3D 8 render targets for real-time tactical blip compositing

3. Tactical PDA Satellite Map Compositing Pipeline Diagram

During mission execution, the tactical PDA composites live mission targets over satellite PIC graphics:

IGI 2 PIC — TACTICAL PDA COMPOSITING PIPELINE 1. PDA MAP KEY • Player Opens PDA • Load Satellite PIC • 1024x768 32-bit Surface 2. GPS MATRIX • Calculate GPS Matrix • Transform World (X, Z) • Map to Screen UV Coord 3. RADAR BLIPS • Composite Guard Icons • Security Camera Cones • Objective Waypoints 4. PRESENTATION • D3D8 RenderTarget • Interactive Pan/Zoom • Tactical Intelligence

4. C++ Struct Definitions

#pragma pack(push, 1)
struct PicHeaderIgi2 {
    char     magic[4];       // "PIC2"
    uint32_t version;        // 2
    uint32_t width;          // 1024
    uint32_t height;         // 768
    uint32_t format;         // 0=ARGB8888, 1=RGB888
    uint32_t data_size;      // Raw byte length
};
static_assert(sizeof(PicHeaderIgi2) == 24, "PicHeaderIgi2 must be 24 bytes");
#pragma pack(pop)