| 9120e874 Andy McCall |
1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
#pragma once |
| 6 |
|
| 7 |
#include <stddef.h> |
| 8 |
#include <stdbool.h> |
| 9 |
#include <stdint.h> |
| 10 |
|
| 11 |
#define CART_MAX_BANKS 224 |
| 12 |
#define CART_BANK_SIZE 0x4000 |
| 13 |
#define CART_MAX_SIZE (CART_BANK_SIZE * CART_MAX_BANKS) |
| 14 |
|
| 15 |
#define CART_MAGIC_NUMBER_SIZE 16 |
| 16 |
#define CART_VERSION_SIZE 16 |
| 17 |
#define CART_DESCRIPTION_SIZE 32 |
| 18 |
#define CART_AUTHOR_SIZE 32 |
| 19 |
#define CART_COPYRIGHT_SIZE 32 |
| 20 |
#define CART_PROGRAM_VERSION_SIZE 32 |
| 21 |
#define CART_RESERVED_SIZE (64 + 32) |
| 22 |
|
| 23 |
#define CART_BANK_NONE 0 |
| 24 |
#define CART_BANK_ROM 1 |
| 25 |
#define CART_BANK_UNINITIALIZED_RAM 2 |
| 26 |
#define CART_BANK_INITIALIZED_RAM 3 |
| 27 |
#define CART_BANK_UNINITIALIZED_NVRAM 4 |
| 28 |
#define CART_BANK_INITIALIZED_NVRAM 5 |
| 29 |
#define CART_NUM_BANK_TYPES 5 |
| 30 |
|
| 31 |
struct x16cartridge_header |
| 32 |
{ |
| 33 |
char magic_number[CART_MAGIC_NUMBER_SIZE]; |
| 34 |
char cart_version[CART_VERSION_SIZE]; |
| 35 |
char description[CART_DESCRIPTION_SIZE]; |
| 36 |
char author[CART_AUTHOR_SIZE]; |
| 37 |
char copyright[CART_COPYRIGHT_SIZE]; |
| 38 |
char prg_version[CART_PROGRAM_VERSION_SIZE]; |
| 39 |
char reserved[CART_RESERVED_SIZE]; |
| 40 |
uint8_t bank_info[CART_MAX_BANKS]; |
| 41 |
}; |
| 42 |
|
| 43 |
struct cartridge_import; |
| 44 |
|
| 45 |
bool cartridge_load(const char *cartridge_file, bool randomize); |
| 46 |
void cartridge_unload(); |
| 47 |
void cartridge_new(); |
| 48 |
|
| 49 |
void cartridge_set_desc(const char *name); |
| 50 |
void cartridge_set_author(const char *name); |
| 51 |
void cartridge_set_copyright(const char *name); |
| 52 |
void cartridge_set_program_version(const char *name); |
| 53 |
|
| 54 |
void cartridge_get_desc(char *buffer, size_t buffer_size); |
| 55 |
void cartridge_get_author(char *buffer, size_t buffer_size); |
| 56 |
void cartridge_get_copyright(char *buffer, size_t buffer_size); |
| 57 |
void cartridge_get_program_version(char *buffer, size_t buffer_size); |
| 58 |
|
| 59 |
bool cartridge_define_bank_range(uint8_t start_bank, uint8_t end_bank, uint8_t bank_type); |
| 60 |
bool cartridge_import_files(char **bin_files, int num_files, uint8_t start_bank, uint8_t bank_type, uint8_t fill_value); |
| 61 |
bool cartridge_fill(uint8_t start_bank, uint8_t end_bank, uint8_t bank_type, uint8_t fill_value); |
| 62 |
|
| 63 |
bool cartridge_save(const char *cartridge_file); |
| 64 |
bool cartridge_save_nvram(); |
| 65 |
|
| 66 |
uint8_t cartridge_read(uint16_t address, uint8_t bank); |
| 67 |
void cartridge_write(uint16_t address, uint8_t bank, uint8_t value); |
| 68 |
uint8_t cartridge_get_bank_type(uint8_t bank); |