]> git.sesse.net Git - pistorm/blob - config_file/config_file.h
Merge pull request #4 from beeanyew/rom-mirror-fix
[pistorm] / config_file / config_file.h
1 #include "../m68k.h"
2
3 #define MAX_NUM_MAPPED_ITEMS 8
4 #define SIZE_KILO 1024
5 #define SIZE_MEGA (1024 * 1024)
6 #define SIZE_GIGA (1024 * 1024 * 1024)
7
8 typedef enum {
9   MAPTYPE_NONE,
10   MAPTYPE_ROM,
11   MAPTYPE_RAM,
12   MAPTYPE_REGISTER,
13   MAPTYPE_NUM,
14 } map_types;
15
16 typedef enum {
17   MAPCMD_UNKNOWN,
18   MAPCMD_TYPE,
19   MAPCMD_ADDRESS,
20   MAPCMD_SIZE,
21   MAPCMD_RANGE,
22   MAPCMD_FILENAME,
23   MAPCMD_OVL_REMAP,
24   MAPCMD_MAP_ID,
25   MAPCMD_NUM,
26 } map_cmds;
27
28 typedef enum {
29   CONFITEM_NONE,
30   CONFITEM_CPUTYPE,
31   CONFITEM_MAP,
32   CONFITEM_LOOPCYCLES,
33   CONFITEM_MOUSE,
34   CONFITEM_KEYBOARD,
35   CONFITEM_PLATFORM,
36   CONFITEM_NUM,
37 } config_items;
38
39 typedef enum {
40   OP_TYPE_BYTE,
41   OP_TYPE_WORD,
42   OP_TYPE_LONGWORD,
43   OP_TYPE_MEM,
44   OP_TYPE_NUM,
45 } map_op_types;
46
47 struct emulator_config {
48   unsigned int cpu_type;
49
50   unsigned char map_type[MAX_NUM_MAPPED_ITEMS];
51   long map_offset[MAX_NUM_MAPPED_ITEMS];
52   unsigned int map_size[MAX_NUM_MAPPED_ITEMS];
53   unsigned int rom_size[MAX_NUM_MAPPED_ITEMS];
54   unsigned char *map_data[MAX_NUM_MAPPED_ITEMS];
55   int map_mirror[MAX_NUM_MAPPED_ITEMS];
56   char *map_id[MAX_NUM_MAPPED_ITEMS];
57
58   struct platform_config *platform;
59
60   char *mouse_file;
61
62   char mouse_toggle_key, keyboard_toggle_key;
63   unsigned char mouse_enabled, keyboard_enabled;
64
65   unsigned int loop_cycles;
66 };
67
68 struct platform_config {
69   char *subsys;
70
71   int (*custom_read)(struct emulator_config *cfg, unsigned int addr, unsigned int *val, unsigned char type);
72   int (*custom_write)(struct emulator_config *cfg, unsigned int addr, unsigned int val, unsigned char type);
73
74   int (*register_read)(unsigned int addr, unsigned char type, unsigned int *val);
75   int (*register_write)(unsigned int addr, unsigned int value, unsigned char type);
76
77   int (*platform_initial_setup)(struct emulator_config *cfg);
78   void (*setvar)(char *var, char *val);
79 };
80
81 unsigned int get_m68k_cpu_type(char *name);
82 struct emulator_config *load_config_file(char *filename);
83
84 int handle_mapped_read(struct emulator_config *cfg, unsigned int addr, unsigned int *val, unsigned char type, unsigned char mirror);
85 int handle_mapped_write(struct emulator_config *cfg, unsigned int addr, unsigned int value, unsigned char type, unsigned char mirror);
86 int get_named_mapped_item(struct emulator_config *cfg, char *name);