Mercurial > repos > blastem
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/system.h Mon Dec 19 13:28:18 2016 -0800 @@ -0,0 +1,49 @@ +#ifndef SYSTEM_H_ +#define SYSTEM_H_ +#include <stdint.h> +#include "arena.h" +#include "romdb.h" + +typedef struct system_header system_header; + +typedef enum { + SYSTEM_UNKNOWN, + SYSTEM_GENESIS, + SYSTEM_SMS, + SYSTEM_JAGUAR +} system_type; + +typedef enum { + DEBUGGER_NATIVE, + DEBUGGER_GDB +} debugger_type; + +typedef void (*system_fun)(system_header *); +typedef void (*start_system_fun)(system_header *, char *); +typedef void (*speed_system_fun)(system_header *, uint32_t); + +struct system_header { + system_header *next_context; + start_system_fun start_context; + system_fun resume_context; + system_fun load_save; + system_fun persist_save; + system_fun request_exit; + system_fun free_context; + speed_system_fun set_speed_percent; + system_fun inc_debug_mode; + system_fun inc_debug_pal; + arena *arena; + char *next_rom; + char *save_dir; + uint8_t enter_debugger; + uint8_t should_exit; + uint8_t save_state; + debugger_type debugger_type; + system_type type; +}; + +system_type detect_system_type(uint8_t *rom, long filesize); +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); + +#endif //SYSTEM_H_