4.2 Data Structures

/* VMU address (port/slot) */
typedef struct {
    uint8_t port;    /* 0=A, 1=B, 2=C, 3=D */
    uint8_t slot;    /* 0=primary, 1=secondary */
} d3tui_vmu_addr_t;

/* VMU device information */
typedef struct {
    d3tui_vmu_addr_t addr;          /* Port and slot */
    maple_device_t *dev;           /* KOS device handle */
    char            product[17];   /* Product name */
    char            region[9];     /* Region code */
    uint32_t        version;       /* Version info */
} d3tui_vmu_info_t;

/* VMU display state */
typedef struct {
    d3tui_vmu_addr_t addr;          /* Which VMU */
    vmufb_t         fb;             /* KOS framebuffer */
    bool            enabled;        /* Display enabled */
    bool            dirty;          /* Needs update */
    uint8_t         scroll_y;       /* Scroll offset */
    uint8_t         contrast;       /* Display contrast (0-15) */
} d3tui_vmu_display_t;

/* VMU terminal state */
typedef struct {
    d3tui_vmu_display_t display;    /* Display state */
    d3tui_terminal_t  *terminal;    /* Terminal instance (optional) */
    bool               has_terminal; /* Has dedicated terminal */
} d3tui_vmu_t;

/* VMU manager */
typedef struct {
    d3tui_vmu_t     *vmus;         /* Array of VMUs */
    size_t          count;         /* Number of VMUs */
    size_t          capacity;      /* Maximum capacity */
    bool            auto_update;   /* Auto-update displays */
} d3tui_vmu_manager_t;