#pragma once #include typedef struct multiboot_info { uint32_t flags; // required // Available if flags[0] is set uint32_t mem_lower; uint32_t mem_upper; // Available if flags[1] is set uint32_t boot_device; // Available if flags[2] is set uint32_t cmdline; // Available if flags[3] is set uint32_t mods_count; uint32_t mods_addr; // Available if flags[4] or flags[5] is set uint8_t syms[16]; // 28 - 40 bytes, exact layout may differ depending on a.out or ELF // Available if flags[6] is set uint32_t mmap_length; uint32_t mmap_addr; // Available if flags[7] is set uint32_t drives_length; uint32_t drives_addr; // Available if flags[8] is set uint32_t config_table; // Available if flags[9] is set uint32_t boot_loader_name; // Available if flags[10] is set uint32_t apm_table; // Available if flags[11] is set uint32_t vbe_control_info; uint32_t vbe_mode_info; uint16_t vbe_mode; uint16_t vbe_interface_seg; uint16_t vbe_interface_off; uint16_t vbe_interface_len; // Available if flags[12] is set uint64_t framebuffer_addr; // 64-bit for large memory addresses uint32_t framebuffer_pitch; uint32_t framebuffer_width; uint32_t framebuffer_height; uint8_t framebuffer_bpp; uint8_t framebuffer_type; uint8_t color_info[6]; // 110-115 bytes } __attribute__((packed)) multiboot_info_t;