X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=config_file%2Fconfig_file.h;h=cb82603b45b600361d1567f4be78ad2602762f1c;hb=75c73650a69ae3752eb5911188852d3e35d8f2e4;hp=c66fd80efac567e5829e9a45ed42966898ed01f7;hpb=34f7de3b9cda4a764f7f1378f728f60dd81ea276;p=pistorm diff --git a/config_file/config_file.h b/config_file/config_file.h index c66fd80..cb82603 100644 --- a/config_file/config_file.h +++ b/config_file/config_file.h @@ -1,4 +1,11 @@ -#include "../m68k.h" +// SPDX-License-Identifier: MIT + +#ifndef _CONFIG_FILE_H +#define _CONFIG_FILE_H + +#include "m68k.h" + +#include #define MAX_NUM_MAPPED_ITEMS 8 #define SIZE_KILO 1024 @@ -10,6 +17,8 @@ typedef enum { MAPTYPE_ROM, MAPTYPE_RAM, MAPTYPE_REGISTER, + MAPTYPE_RAM_NOALLOC, + MAPTYPE_RAM_WTC, MAPTYPE_NUM, } map_types; @@ -22,6 +31,8 @@ typedef enum { MAPCMD_FILENAME, MAPCMD_OVL_REMAP, MAPCMD_MAP_ID, + MAPCMD_AUTODUMP_FILE, + MAPCMD_AUTODUMP_MEM, MAPCMD_NUM, } map_cmds; @@ -34,6 +45,7 @@ typedef enum { CONFITEM_KEYBOARD, CONFITEM_PLATFORM, CONFITEM_SETVAR, + CONFITEM_KBFILE, CONFITEM_NUM, } config_items; @@ -49,25 +61,29 @@ struct emulator_config { unsigned int cpu_type; unsigned char map_type[MAX_NUM_MAPPED_ITEMS]; - long map_offset[MAX_NUM_MAPPED_ITEMS]; + unsigned long map_offset[MAX_NUM_MAPPED_ITEMS]; + unsigned long map_high[MAX_NUM_MAPPED_ITEMS]; unsigned int map_size[MAX_NUM_MAPPED_ITEMS]; unsigned int rom_size[MAX_NUM_MAPPED_ITEMS]; unsigned char *map_data[MAX_NUM_MAPPED_ITEMS]; - int map_mirror[MAX_NUM_MAPPED_ITEMS]; + unsigned int map_mirror[MAX_NUM_MAPPED_ITEMS]; char *map_id[MAX_NUM_MAPPED_ITEMS]; struct platform_config *platform; - char *mouse_file; + char *mouse_file, *keyboard_file; char mouse_toggle_key, keyboard_toggle_key; - unsigned char mouse_enabled, keyboard_enabled; + unsigned char mouse_enabled, mouse_autoconnect, keyboard_enabled, keyboard_grab, keyboard_autoconnect; unsigned int loop_cycles; + unsigned int mapped_low, mapped_high; + unsigned int custom_low, custom_high; }; struct platform_config { char *subsys; + unsigned char id; int (*custom_read)(struct emulator_config *cfg, unsigned int addr, unsigned int *val, unsigned char type); int (*custom_write)(struct emulator_config *cfg, unsigned int addr, unsigned int val, unsigned char type); @@ -76,13 +92,25 @@ struct platform_config { int (*register_write)(unsigned int addr, unsigned int value, unsigned char type); int (*platform_initial_setup)(struct emulator_config *cfg); - void (*setvar)(char *var, char *val); + void (*handle_reset)(struct emulator_config *cfg); + void (*shutdown)(struct emulator_config *cfg); + void (*setvar)(struct emulator_config *cfg, char *var, char *val); }; +#ifdef __cplusplus +extern "C" int get_mapped_item_by_address(struct emulator_config *cfg, uint32_t address); +#else unsigned int get_m68k_cpu_type(char *name); struct emulator_config *load_config_file(char *filename); +void free_config_file(struct emulator_config *cfg); -int handle_mapped_read(struct emulator_config *cfg, unsigned int addr, unsigned int *val, unsigned char type, unsigned char mirror); -int handle_mapped_write(struct emulator_config *cfg, unsigned int addr, unsigned int value, unsigned char type, unsigned char mirror); +int handle_mapped_read(struct emulator_config *cfg, unsigned int addr, unsigned int *val, unsigned char type); +int handle_mapped_write(struct emulator_config *cfg, unsigned int addr, unsigned int value, unsigned char type); int get_named_mapped_item(struct emulator_config *cfg, char *name); +int get_mapped_item_by_address(struct emulator_config *cfg, uint32_t address); +uint8_t *get_mapped_data_pointer_by_address(struct emulator_config *cfg, uint32_t address); +void add_mapping(struct emulator_config *cfg, unsigned int type, unsigned int addr, unsigned int size, int mirr_addr, char *filename, char *map_id, unsigned int autodump); unsigned int get_int(char *str); +#endif + +#endif /* _CONFIG_FILE_H */