#ifndef XBE_CERT_H
#define XBE_CERT_H

#include <stdint.h>

// --- XBE Certificate Bit Flags ---

typedef enum {
    XB_REGION_US_CANADA      = 0x00000001,
    XB_REGION_JAPAN          = 0x00000002,
    XB_REGION_EUROPE_AU_NZ   = 0x00000004,
    XB_REGION_REST_OF_WORLD  = 0x00000008,
    XB_REGION_MANUFACTURING  = 0x80000000U  // 'U' suffix forces Unsigned
} XboxRegion;

typedef enum {
    XB_MEDIA_HARD_DRIVE      = 0x00000001,
    XB_MEDIA_DVD_X2          = 0x00000002,
    XB_MEDIA_DVD_CD          = 0x00000004,
    XB_MEDIA_CD              = 0x00000008,
    XB_MEDIA_DVD_5_RO        = 0x00000010,
    XB_MEDIA_DVD_9_RO        = 0x00000020,
    XB_MEDIA_DVD_5_RW        = 0x00000040,
    XB_MEDIA_DVD_9_RW        = 0x00000080,
    XB_MEDIA_DONGLE          = 0x00000100,
    XB_MEDIA_NON_SECURE_HARD_DRIVE = 0x40000000,
    XB_MEDIA_NON_SECURE_USER_MASK  = 0x80000000U
} XboxMedia;

// --- The Data Struct ---

typedef struct {
    uint32_t TitleId;           // Offset 0x008
    char     TitleName[41];     // Offset 0x00C (Converted to ASCII)
    uint32_t AllowedMedia;      // Offset 0x09C
    uint32_t GameRegion;        // Offset 0x0A0
    uint32_t GameRatings;       // Offset 0x0A4
    uint32_t DiscNumber;        // Offset 0x0A8
    uint32_t Version;           // Offset 0x0AC
    uint64_t TotalSizeBytes;    // Offset 0x01C
    int      Success;           // Helper to check if read worked
} XboxGameInfo;

#endif