#pragma once #include typedef struct { u8 entry[4]; u8 logo[0x30]; char title[16]; u16 new_lic_code; u8 sgb_flag; u8 type; u8 rom_size; u8 ram_size; u8 dest_code; u8 lic_code; u8 version; u8 checksum; u16 global_checksum; } rom_header; typedef struct { char filename[1024]; u32 rom_size; u8 *rom_data; rom_header *header; //mbc1 data bool ram_enabled; bool ram_banking; u8 *rom_bank_x; u8 *rom_bank_x2; u8 banking_mode; u8 rom_bank_value; u8 rom_bank_value_2; u8 ram_bank_value; u8 *ram_bank; u8 *ram_banks[16]; //battery bool battery; bool need_save; } cart_context; typedef struct { bool ram_enabled; bool ram_banking; u8 banking_mode; u8 rom_bank_value; u8 rom_bank_value_2; u8 ram_bank_value; u8 ram_banks[16][0x2000]; bool need_save; } cart_state; void cart_load_state(const cart_state*); void cart_save_state(cart_state*); bool cart_load(char *cart); rom_header *get_rom_header(); u8 cart_read(u16 address); void cart_write(u16 address, u8 value); bool cart_need_save(); bool cart_battery_load(); bool cart_battery_save(); u8 cart_get_rom_bank();