comparison system.h @ 2544:99e59fdddbc3

Better cassette tape UX
author Michael Pavone <pavone@retrodev.com>
date Mon, 09 Dec 2024 13:45:35 -0800
parents f4a471730ba4
children 6aa3025bbf5f
comparison
equal deleted inserted replaced
2543:9a07d299604b 2544:99e59fdddbc3
41 enum { 41 enum {
42 CASSETTE_PLAY, 42 CASSETTE_PLAY,
43 CASSETTE_RECORD, 43 CASSETTE_RECORD,
44 CASSETTE_STOP, 44 CASSETTE_STOP,
45 CASSETTE_REWIND 45 CASSETTE_REWIND
46 };
47
48 typedef void (*system_fun)(system_header *);
49 typedef uint16_t (*system_fun_r16)(system_header *);
50 typedef void (*system_str_fun)(system_header *, char *);
51 typedef uint8_t (*system_str_fun_r8)(system_header *, char *);
52 typedef void (*system_u32_fun)(system_header *, uint32_t);
53 typedef void (*system_u8_fun)(system_header *, uint8_t);
54 typedef uint8_t (*system_u8_fun_r8)(system_header *, uint8_t);
55 typedef void (*system_u8_u8_fun)(system_header *, uint8_t, uint8_t);
56 typedef void (*system_mabs_fun)(system_header *, uint8_t, uint16_t, uint16_t);
57 typedef void (*system_mrel_fun)(system_header *, uint8_t, int32_t, int32_t);
58 typedef uint8_t *(*system_ptrszt_fun_rptr8)(system_header *, size_t *);
59 typedef void (*system_ptr8_sizet_fun)(system_header *, uint8_t *, size_t);
60
61 #include "arena.h"
62 #include "romdb.h"
63 typedef struct event_reader event_reader;
64
65 struct system_header {
66 system_header *next_context;
67 system_str_fun start_context;
68 system_fun resume_context;
69 system_fun load_save;
70 system_fun persist_save;
71 system_u8_fun_r8 load_state;
72 system_fun request_exit;
73 system_fun soft_reset;
74 system_fun free_context;
75 system_fun_r16 get_open_bus_value;
76 system_u32_fun set_speed_percent;
77 system_fun inc_debug_mode;
78 system_u8_u8_fun gamepad_down;
79 system_u8_u8_fun gamepad_up;
80 system_u8_u8_fun mouse_down;
81 system_u8_u8_fun mouse_up;
82 system_mabs_fun mouse_motion_absolute;
83 system_mrel_fun mouse_motion_relative;
84 system_u8_fun keyboard_down;
85 system_u8_fun keyboard_up;
86 system_fun config_updated;
87 system_ptrszt_fun_rptr8 serialize;
88 system_ptr8_sizet_fun deserialize;
89 system_str_fun start_vgm_log;
90 system_fun stop_vgm_log;
91 system_u8_fun toggle_debug_view;
92 system_u8_fun cassette_action;
93 rom_info info;
94 arena *arena;
95 char *next_rom;
96 char *save_dir;
97 char *paste_buffer;
98 uint32_t paste_cur_char;
99 int enter_debugger_frames;
100 uint8_t enter_debugger;
101 uint8_t should_exit;
102 uint8_t save_state;
103 uint8_t delayed_load_slot;
104 uint8_t has_keyboard;
105 uint8_t vgm_logging;
106 uint8_t force_release;
107 debugger_type debugger_type;
108 system_type type;
109 }; 46 };
110 47
111 typedef enum { 48 typedef enum {
112 MEDIA_CART, 49 MEDIA_CART,
113 MEDIA_CDROM 50 MEDIA_CDROM
162 media_type type; 99 media_type type;
163 uint8_t in_fake_pregap; 100 uint8_t in_fake_pregap;
164 uint8_t byte_storage[3]; 101 uint8_t byte_storage[3];
165 }; 102 };
166 103
104 typedef void (*system_fun)(system_header *);
105 typedef uint16_t (*system_fun_r16)(system_header *);
106 typedef void (*system_str_fun)(system_header *, char *);
107 typedef uint8_t (*system_str_fun_r8)(system_header *, char *);
108 typedef void (*system_u32_fun)(system_header *, uint32_t);
109 typedef void (*system_u8_fun)(system_header *, uint8_t);
110 typedef uint8_t (*system_u8_fun_r8)(system_header *, uint8_t);
111 typedef void (*system_u8_u8_fun)(system_header *, uint8_t, uint8_t);
112 typedef void (*system_mabs_fun)(system_header *, uint8_t, uint16_t, uint16_t);
113 typedef void (*system_mrel_fun)(system_header *, uint8_t, int32_t, int32_t);
114 typedef uint8_t *(*system_ptrszt_fun_rptr8)(system_header *, size_t *);
115 typedef void (*system_ptr8_sizet_fun)(system_header *, uint8_t *, size_t);
116 typedef void (*system_media_fun)(system_header *, system_media *);
117
118 #include "arena.h"
119 #include "romdb.h"
120 typedef struct event_reader event_reader;
121
122 struct system_header {
123 system_header *next_context;
124 system_str_fun start_context;
125 system_fun resume_context;
126 system_fun load_save;
127 system_fun persist_save;
128 system_u8_fun_r8 load_state;
129 system_fun request_exit;
130 system_fun soft_reset;
131 system_fun free_context;
132 system_fun_r16 get_open_bus_value;
133 system_u32_fun set_speed_percent;
134 system_fun inc_debug_mode;
135 system_u8_u8_fun gamepad_down;
136 system_u8_u8_fun gamepad_up;
137 system_u8_u8_fun mouse_down;
138 system_u8_u8_fun mouse_up;
139 system_mabs_fun mouse_motion_absolute;
140 system_mrel_fun mouse_motion_relative;
141 system_u8_fun keyboard_down;
142 system_u8_fun keyboard_up;
143 system_fun config_updated;
144 system_ptrszt_fun_rptr8 serialize;
145 system_ptr8_sizet_fun deserialize;
146 system_str_fun start_vgm_log;
147 system_fun stop_vgm_log;
148 system_u8_fun toggle_debug_view;
149 system_u8_fun cassette_action;
150 system_media_fun lockon_change;
151 rom_info info;
152 arena *arena;
153 char *next_rom;
154 char *save_dir;
155 char *paste_buffer;
156 uint32_t paste_cur_char;
157 int enter_debugger_frames;
158 uint8_t enter_debugger;
159 uint8_t should_exit;
160 uint8_t save_state;
161 uint8_t delayed_load_slot;
162 uint8_t has_keyboard;
163 uint8_t vgm_logging;
164 uint8_t force_release;
165 debugger_type debugger_type;
166 system_type type;
167 };
168
167 #define OPT_ADDRESS_LOG (1U << 31U) 169 #define OPT_ADDRESS_LOG (1U << 31U)
168 170
169 system_type detect_system_type(system_media *media); 171 system_type detect_system_type(system_media *media);
170 system_header *alloc_config_system(system_type stype, system_media *media, uint32_t opts, uint8_t force_region); 172 system_header *alloc_config_system(system_type stype, system_media *media, uint32_t opts, uint8_t force_region);
171 system_header *alloc_config_player(system_type stype, event_reader *reader); 173 system_header *alloc_config_player(system_type stype, event_reader *reader);