comparison system.h @ 2053:3414a4423de1 segacd

Merge from default
author Michael Pavone <pavone@retrodev.com>
date Sat, 15 Jan 2022 13:15:21 -0800
parents 5dacaef602a7 81df9aa2de9b
children 6399a776e981
comparison
equal deleted inserted replaced
1692:5dacaef602a7 2053:3414a4423de1
1 #ifndef SYSTEM_H_ 1 #ifndef SYSTEM_H_
2 #define SYSTEM_H_ 2 #define SYSTEM_H_
3 #include <stddef.h>
3 #include <stdint.h> 4 #include <stdint.h>
4 5
5 typedef struct system_header system_header; 6 typedef struct system_header system_header;
6 typedef struct system_media system_media; 7 typedef struct system_media system_media;
7 8
8 typedef enum { 9 typedef enum {
9 SYSTEM_UNKNOWN, 10 SYSTEM_UNKNOWN,
10 SYSTEM_GENESIS, 11 SYSTEM_GENESIS,
12 SYSTEM_GENESIS_PLAYER,
11 SYSTEM_SEGACD, 13 SYSTEM_SEGACD,
12 SYSTEM_SMS, 14 SYSTEM_SMS,
13 SYSTEM_JAGUAR 15 SYSTEM_SMS_PLAYER,
16 SYSTEM_JAGUAR,
14 } system_type; 17 } system_type;
15 18
16 typedef enum { 19 typedef enum {
17 DEBUGGER_NATIVE, 20 DEBUGGER_NATIVE,
18 DEBUGGER_GDB 21 DEBUGGER_GDB
26 typedef void (*system_u8_fun)(system_header *, uint8_t); 29 typedef void (*system_u8_fun)(system_header *, uint8_t);
27 typedef uint8_t (*system_u8_fun_r8)(system_header *, uint8_t); 30 typedef uint8_t (*system_u8_fun_r8)(system_header *, uint8_t);
28 typedef void (*system_u8_u8_fun)(system_header *, uint8_t, uint8_t); 31 typedef void (*system_u8_u8_fun)(system_header *, uint8_t, uint8_t);
29 typedef void (*system_mabs_fun)(system_header *, uint8_t, uint16_t, uint16_t); 32 typedef void (*system_mabs_fun)(system_header *, uint8_t, uint16_t, uint16_t);
30 typedef void (*system_mrel_fun)(system_header *, uint8_t, int32_t, int32_t); 33 typedef void (*system_mrel_fun)(system_header *, uint8_t, int32_t, int32_t);
34 typedef uint8_t *(*system_ptrszt_fun_rptr8)(system_header *, size_t *);
35 typedef void (*system_ptr8_sizet_fun)(system_header *, uint8_t *, size_t);
31 36
32 #include "arena.h" 37 #include "arena.h"
33 #include "romdb.h" 38 #include "romdb.h"
39 #include "event_log.h"
34 40
35 struct system_header { 41 struct system_header {
36 system_header *next_context; 42 system_header *next_context;
37 system_str_fun start_context; 43 system_str_fun start_context;
38 system_fun resume_context; 44 system_fun resume_context;
52 system_mabs_fun mouse_motion_absolute; 58 system_mabs_fun mouse_motion_absolute;
53 system_mrel_fun mouse_motion_relative; 59 system_mrel_fun mouse_motion_relative;
54 system_u8_fun keyboard_down; 60 system_u8_fun keyboard_down;
55 system_u8_fun keyboard_up; 61 system_u8_fun keyboard_up;
56 system_fun config_updated; 62 system_fun config_updated;
63 system_ptrszt_fun_rptr8 serialize;
64 system_ptr8_sizet_fun deserialize;
65 system_str_fun start_vgm_log;
66 system_fun stop_vgm_log;
57 rom_info info; 67 rom_info info;
58 arena *arena; 68 arena *arena;
59 char *next_rom; 69 char *next_rom;
60 char *save_dir; 70 char *save_dir;
61 uint8_t enter_debugger; 71 uint8_t enter_debugger;
62 uint8_t should_exit; 72 uint8_t should_exit;
63 uint8_t save_state; 73 uint8_t save_state;
64 uint8_t delayed_load_slot; 74 uint8_t delayed_load_slot;
65 uint8_t has_keyboard; 75 uint8_t has_keyboard;
76 uint8_t vgm_logging;
77 uint8_t force_release;
66 debugger_type debugger_type; 78 debugger_type debugger_type;
67 system_type type; 79 system_type type;
68 }; 80 };
69 81
70 typedef enum { 82 typedef enum {
84 96
85 #define OPT_ADDRESS_LOG (1U << 31U) 97 #define OPT_ADDRESS_LOG (1U << 31U)
86 98
87 system_type detect_system_type(system_media *media); 99 system_type detect_system_type(system_media *media);
88 system_header *alloc_config_system(system_type stype, system_media *media, uint32_t opts, uint8_t force_region); 100 system_header *alloc_config_system(system_type stype, system_media *media, uint32_t opts, uint8_t force_region);
101 system_header *alloc_config_player(system_type stype, event_reader *reader);
102 void system_request_exit(system_header *system, uint8_t force_release);
89 103
90 #endif //SYSTEM_H_ 104 #endif //SYSTEM_H_