#ifndef NESE_MAPPER_H_ #define NESE_MAPPER_H_ #include #include "ines.h" struct nes_Memory; struct nes_Mapper { int max_chr_banks; int (*init)(struct nes_Mapper*, const ines_Header*, struct nes_Memory*); bool (*write_rom)(struct nes_Mapper*, uint16_t addr, uint8_t val); bool (*write_sram)(struct nes_Mapper*, uint16_t addr, uint8_t val); bool (*write_apu)(struct nes_Mapper*, uint16_t addr, uint8_t val); uint8_t (*read_apu)(struct nes_Mapper*, uint16_t addr); void (*hsync)(struct nes_Mapper*); void (*vsync)(struct nes_Mapper*); void (*ppu_bus)(struct nes_Mapper*, uint16_t addr); void (*ppu_mem_mode)(struct nes_Mapper*, uint8_t mode); void* data; }; typedef struct nes_Mapper nes_Mapper; extern const nes_Mapper* nes_mappers[256]; #endif // NESE_MAPPER_H_