comparison system.h @ 1111:2eb54e24914e

Mostly working changes to allow support for multiple emulated system types in main blastem program
author Michael Pavone <pavone@retrodev.com>
date Mon, 19 Dec 2016 13:28:18 -0800
parents
children 45db303fc705
comparison
equal deleted inserted replaced
1110:d1eed3b1121c 1111:2eb54e24914e
1 #ifndef SYSTEM_H_
2 #define SYSTEM_H_
3 #include <stdint.h>
4 #include "arena.h"
5 #include "romdb.h"
6
7 typedef struct system_header system_header;
8
9 typedef enum {
10 SYSTEM_UNKNOWN,
11 SYSTEM_GENESIS,
12 SYSTEM_SMS,
13 SYSTEM_JAGUAR
14 } system_type;
15
16 typedef enum {
17 DEBUGGER_NATIVE,
18 DEBUGGER_GDB
19 } debugger_type;
20
21 typedef void (*system_fun)(system_header *);
22 typedef void (*start_system_fun)(system_header *, char *);
23 typedef void (*speed_system_fun)(system_header *, uint32_t);
24
25 struct system_header {
26 system_header *next_context;
27 start_system_fun start_context;
28 system_fun resume_context;
29 system_fun load_save;
30 system_fun persist_save;
31 system_fun request_exit;
32 system_fun free_context;
33 speed_system_fun set_speed_percent;
34 system_fun inc_debug_mode;
35 system_fun inc_debug_pal;
36 arena *arena;
37 char *next_rom;
38 char *save_dir;
39 uint8_t enter_debugger;
40 uint8_t should_exit;
41 uint8_t save_state;
42 debugger_type debugger_type;
43 system_type type;
44 };
45
46 system_type detect_system_type(uint8_t *rom, long filesize);
47 system_header *alloc_config_system(system_type stype, void *rom, uint32_t rom_size, void *lock_on, uint32_t lock_on_size, uint32_t opts, uint8_t force_region, rom_info *info_out);
48
49 #endif //SYSTEM_H_