]> git.sesse.net Git - pistorm/blobdiff - config_file/config_file.h
Merge pull request #4 from beeanyew/rom-mirror-fix
[pistorm] / config_file / config_file.h
index 272e9104f768d0049a9b4385cb2423580e47b0da..e6e766dcad79acd641bc38cb300bdca132ba7ee9 100644 (file)
@@ -32,6 +32,7 @@ typedef enum {
   CONFITEM_LOOPCYCLES,
   CONFITEM_MOUSE,
   CONFITEM_KEYBOARD,
+  CONFITEM_PLATFORM,
   CONFITEM_NUM,
 } config_items;
 
@@ -54,6 +55,8 @@ struct emulator_config {
   int map_mirror[MAX_NUM_MAPPED_ITEMS];
   char *map_id[MAX_NUM_MAPPED_ITEMS];
 
+  struct platform_config *platform;
+
   char *mouse_file;
 
   char mouse_toggle_key, keyboard_toggle_key;
@@ -62,10 +65,22 @@ struct emulator_config {
   unsigned int loop_cycles;
 };
 
+struct platform_config {
+  char *subsys;
+
+  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);
+
+  int (*register_read)(unsigned int addr, unsigned char type, unsigned int *val);
+  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);
+};
+
 unsigned int get_m68k_cpu_type(char *name);
 struct emulator_config *load_config_file(char *filename);
 
 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_register_read(unsigned int addr, unsigned char type, unsigned int *val);
-int handle_register_write(unsigned int addr, unsigned int value, unsigned char type);
+int get_named_mapped_item(struct emulator_config *cfg, char *name);