diff 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
line wrap: on
line diff
--- a/system.h	Thu Nov 28 23:44:36 2024 -0800
+++ b/system.h	Mon Dec 09 13:45:35 2024 -0800
@@ -45,69 +45,6 @@
 	CASSETTE_REWIND
 };
 
-typedef void (*system_fun)(system_header *);
-typedef uint16_t (*system_fun_r16)(system_header *);
-typedef void (*system_str_fun)(system_header *, char *);
-typedef uint8_t (*system_str_fun_r8)(system_header *, char *);
-typedef void (*system_u32_fun)(system_header *, uint32_t);
-typedef void (*system_u8_fun)(system_header *, uint8_t);
-typedef uint8_t (*system_u8_fun_r8)(system_header *, uint8_t);
-typedef void (*system_u8_u8_fun)(system_header *, uint8_t, uint8_t);
-typedef void (*system_mabs_fun)(system_header *, uint8_t, uint16_t, uint16_t);
-typedef void (*system_mrel_fun)(system_header *, uint8_t, int32_t, int32_t);
-typedef uint8_t *(*system_ptrszt_fun_rptr8)(system_header *, size_t *);
-typedef void (*system_ptr8_sizet_fun)(system_header *, uint8_t *, size_t);
-
-#include "arena.h"
-#include "romdb.h"
-typedef struct event_reader event_reader;
-
-struct system_header {
-	system_header     *next_context;
-	system_str_fun    start_context;
-	system_fun        resume_context;
-	system_fun        load_save;
-	system_fun        persist_save;
-	system_u8_fun_r8  load_state;
-	system_fun        request_exit;
-	system_fun        soft_reset;
-	system_fun        free_context;
-	system_fun_r16    get_open_bus_value;
-	system_u32_fun    set_speed_percent;
-	system_fun        inc_debug_mode;
-	system_u8_u8_fun  gamepad_down;
-	system_u8_u8_fun  gamepad_up;
-	system_u8_u8_fun  mouse_down;
-	system_u8_u8_fun  mouse_up;
-	system_mabs_fun   mouse_motion_absolute;
-	system_mrel_fun   mouse_motion_relative;
-	system_u8_fun     keyboard_down;
-	system_u8_fun     keyboard_up;
-	system_fun        config_updated;
-	system_ptrszt_fun_rptr8 serialize;
-	system_ptr8_sizet_fun   deserialize;
-	system_str_fun          start_vgm_log;
-	system_fun              stop_vgm_log;
-	system_u8_fun           toggle_debug_view;
-	system_u8_fun           cassette_action;
-	rom_info          info;
-	arena             *arena;
-	char              *next_rom;
-	char              *save_dir;
-	char              *paste_buffer;
-	uint32_t          paste_cur_char;
-	int               enter_debugger_frames;
-	uint8_t           enter_debugger;
-	uint8_t           should_exit;
-	uint8_t           save_state;
-	uint8_t           delayed_load_slot;
-	uint8_t           has_keyboard;
-	uint8_t                 vgm_logging;
-	uint8_t                 force_release;
-	debugger_type     debugger_type;
-	system_type       type;
-};
-
 typedef enum {
 	MEDIA_CART,
 	MEDIA_CDROM
@@ -164,6 +101,71 @@
 	uint8_t      byte_storage[3];
 };
 
+typedef void (*system_fun)(system_header *);
+typedef uint16_t (*system_fun_r16)(system_header *);
+typedef void (*system_str_fun)(system_header *, char *);
+typedef uint8_t (*system_str_fun_r8)(system_header *, char *);
+typedef void (*system_u32_fun)(system_header *, uint32_t);
+typedef void (*system_u8_fun)(system_header *, uint8_t);
+typedef uint8_t (*system_u8_fun_r8)(system_header *, uint8_t);
+typedef void (*system_u8_u8_fun)(system_header *, uint8_t, uint8_t);
+typedef void (*system_mabs_fun)(system_header *, uint8_t, uint16_t, uint16_t);
+typedef void (*system_mrel_fun)(system_header *, uint8_t, int32_t, int32_t);
+typedef uint8_t *(*system_ptrszt_fun_rptr8)(system_header *, size_t *);
+typedef void (*system_ptr8_sizet_fun)(system_header *, uint8_t *, size_t);
+typedef void (*system_media_fun)(system_header *, system_media *);
+
+#include "arena.h"
+#include "romdb.h"
+typedef struct event_reader event_reader;
+
+struct system_header {
+	system_header     *next_context;
+	system_str_fun    start_context;
+	system_fun        resume_context;
+	system_fun        load_save;
+	system_fun        persist_save;
+	system_u8_fun_r8  load_state;
+	system_fun        request_exit;
+	system_fun        soft_reset;
+	system_fun        free_context;
+	system_fun_r16    get_open_bus_value;
+	system_u32_fun    set_speed_percent;
+	system_fun        inc_debug_mode;
+	system_u8_u8_fun  gamepad_down;
+	system_u8_u8_fun  gamepad_up;
+	system_u8_u8_fun  mouse_down;
+	system_u8_u8_fun  mouse_up;
+	system_mabs_fun   mouse_motion_absolute;
+	system_mrel_fun   mouse_motion_relative;
+	system_u8_fun     keyboard_down;
+	system_u8_fun     keyboard_up;
+	system_fun        config_updated;
+	system_ptrszt_fun_rptr8 serialize;
+	system_ptr8_sizet_fun   deserialize;
+	system_str_fun          start_vgm_log;
+	system_fun              stop_vgm_log;
+	system_u8_fun           toggle_debug_view;
+	system_u8_fun           cassette_action;
+	system_media_fun        lockon_change;
+	rom_info          info;
+	arena             *arena;
+	char              *next_rom;
+	char              *save_dir;
+	char              *paste_buffer;
+	uint32_t          paste_cur_char;
+	int               enter_debugger_frames;
+	uint8_t           enter_debugger;
+	uint8_t           should_exit;
+	uint8_t           save_state;
+	uint8_t           delayed_load_slot;
+	uint8_t           has_keyboard;
+	uint8_t                 vgm_logging;
+	uint8_t                 force_release;
+	debugger_type     debugger_type;
+	system_type       type;
+};
+
 #define OPT_ADDRESS_LOG (1U << 31U)
 
 system_type detect_system_type(system_media *media);