Mercurial > repos > blastem
comparison system.h @ 2072:cc13c100b027
Merge Sega CD branch now that it sort of works
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 30 Jan 2022 22:29:29 -0800 |
parents | 6399a776e981 |
children | 3f29e2726522 |
comparison
equal
deleted
inserted
replaced
2052:3748a2a8a4b7 | 2072:cc13c100b027 |
---|---|
1 #ifndef SYSTEM_H_ | 1 #ifndef SYSTEM_H_ |
2 #define SYSTEM_H_ | 2 #define SYSTEM_H_ |
3 #include <stddef.h> | 3 #include <stddef.h> |
4 #include <stdint.h> | 4 #include <stdint.h> |
5 #include <stdio.h> | |
5 | 6 |
6 typedef struct system_header system_header; | 7 typedef struct system_header system_header; |
7 typedef struct system_media system_media; | 8 typedef struct system_media system_media; |
8 | 9 |
9 typedef enum { | 10 typedef enum { |
10 SYSTEM_UNKNOWN, | 11 SYSTEM_UNKNOWN, |
11 SYSTEM_GENESIS, | 12 SYSTEM_GENESIS, |
12 SYSTEM_GENESIS_PLAYER, | 13 SYSTEM_GENESIS_PLAYER, |
14 SYSTEM_SEGACD, | |
13 SYSTEM_SMS, | 15 SYSTEM_SMS, |
14 SYSTEM_SMS_PLAYER, | 16 SYSTEM_SMS_PLAYER, |
15 SYSTEM_JAGUAR, | 17 SYSTEM_JAGUAR, |
16 } system_type; | 18 } system_type; |
17 | 19 |
36 #include "arena.h" | 38 #include "arena.h" |
37 #include "romdb.h" | 39 #include "romdb.h" |
38 #include "event_log.h" | 40 #include "event_log.h" |
39 | 41 |
40 struct system_header { | 42 struct system_header { |
41 system_header *next_context; | 43 system_header *next_context; |
42 system_str_fun start_context; | 44 system_str_fun start_context; |
43 system_fun resume_context; | 45 system_fun resume_context; |
44 system_fun load_save; | 46 system_fun load_save; |
45 system_fun persist_save; | 47 system_fun persist_save; |
46 system_u8_fun_r8 load_state; | 48 system_u8_fun_r8 load_state; |
47 system_fun request_exit; | 49 system_fun request_exit; |
48 system_fun soft_reset; | 50 system_fun soft_reset; |
49 system_fun free_context; | 51 system_fun free_context; |
50 system_fun_r16 get_open_bus_value; | 52 system_fun_r16 get_open_bus_value; |
51 system_u32_fun set_speed_percent; | 53 system_u32_fun set_speed_percent; |
52 system_fun inc_debug_mode; | 54 system_fun inc_debug_mode; |
53 system_u8_u8_fun gamepad_down; | 55 system_u8_u8_fun gamepad_down; |
54 system_u8_u8_fun gamepad_up; | 56 system_u8_u8_fun gamepad_up; |
55 system_u8_u8_fun mouse_down; | 57 system_u8_u8_fun mouse_down; |
56 system_u8_u8_fun mouse_up; | 58 system_u8_u8_fun mouse_up; |
57 system_mabs_fun mouse_motion_absolute; | 59 system_mabs_fun mouse_motion_absolute; |
58 system_mrel_fun mouse_motion_relative; | 60 system_mrel_fun mouse_motion_relative; |
59 system_u8_fun keyboard_down; | 61 system_u8_fun keyboard_down; |
60 system_u8_fun keyboard_up; | 62 system_u8_fun keyboard_up; |
61 system_fun config_updated; | 63 system_fun config_updated; |
62 system_ptrszt_fun_rptr8 serialize; | 64 system_ptrszt_fun_rptr8 serialize; |
63 system_ptr8_sizet_fun deserialize; | 65 system_ptr8_sizet_fun deserialize; |
64 system_str_fun start_vgm_log; | 66 system_str_fun start_vgm_log; |
65 system_fun stop_vgm_log; | 67 system_fun stop_vgm_log; |
66 rom_info info; | 68 rom_info info; |
67 arena *arena; | 69 arena *arena; |
68 char *next_rom; | 70 char *next_rom; |
69 char *save_dir; | 71 char *save_dir; |
70 uint8_t enter_debugger; | 72 uint8_t enter_debugger; |
71 uint8_t should_exit; | 73 uint8_t should_exit; |
72 uint8_t save_state; | 74 uint8_t save_state; |
73 uint8_t delayed_load_slot; | 75 uint8_t delayed_load_slot; |
74 uint8_t has_keyboard; | 76 uint8_t has_keyboard; |
75 uint8_t vgm_logging; | 77 uint8_t vgm_logging; |
76 uint8_t force_release; | 78 uint8_t force_release; |
77 debugger_type debugger_type; | 79 debugger_type debugger_type; |
78 system_type type; | 80 system_type type; |
79 }; | 81 }; |
82 | |
83 typedef enum { | |
84 MEDIA_CART, | |
85 MEDIA_CDROM | |
86 } media_type; | |
87 | |
88 typedef enum { | |
89 TRACK_AUDIO, | |
90 TRACK_DATA | |
91 } track_type; | |
92 | |
93 typedef struct { | |
94 uint32_t fake_pregap; | |
95 uint32_t pregap_lba; | |
96 uint32_t start_lba; | |
97 uint32_t end_lba; | |
98 track_type type; | |
99 } track_info; | |
80 | 100 |
81 struct system_media { | 101 struct system_media { |
82 void *buffer; | 102 void *buffer; |
83 char *dir; | 103 char *dir; |
84 char *name; | 104 char *name; |
85 char *extension; | 105 char *extension; |
86 system_media *chain; | 106 system_media *chain; |
107 track_info *tracks; | |
108 FILE *f; | |
109 uint32_t num_tracks; | |
87 uint32_t size; | 110 uint32_t size; |
111 media_type type; | |
88 }; | 112 }; |
89 | 113 |
90 #define OPT_ADDRESS_LOG (1U << 31U) | 114 #define OPT_ADDRESS_LOG (1U << 31U) |
91 | 115 |
92 system_type detect_system_type(system_media *media); | 116 system_type detect_system_type(system_media *media); |