Mercurial > repos > blastem
diff 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 |
line wrap: on
line diff
--- a/system.h Sat Jan 01 18:54:46 2022 -0800 +++ b/system.h Sun Jan 30 22:29:29 2022 -0800 @@ -2,6 +2,7 @@ #define SYSTEM_H_ #include <stddef.h> #include <stdint.h> +#include <stdio.h> typedef struct system_header system_header; typedef struct system_media system_media; @@ -10,6 +11,7 @@ SYSTEM_UNKNOWN, SYSTEM_GENESIS, SYSTEM_GENESIS_PLAYER, + SYSTEM_SEGACD, SYSTEM_SMS, SYSTEM_SMS_PLAYER, SYSTEM_JAGUAR, @@ -38,53 +40,75 @@ #include "event_log.h" 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_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; - rom_info info; - arena *arena; - char *next_rom; - char *save_dir; - uint8_t enter_debugger; - uint8_t should_exit; - uint8_t save_state; - uint8_t delayed_load_slot; - uint8_t has_keyboard; + rom_info info; + arena *arena; + char *next_rom; + char *save_dir; + 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; + debugger_type debugger_type; + system_type type; }; +typedef enum { + MEDIA_CART, + MEDIA_CDROM +} media_type; + +typedef enum { + TRACK_AUDIO, + TRACK_DATA +} track_type; + +typedef struct { + uint32_t fake_pregap; + uint32_t pregap_lba; + uint32_t start_lba; + uint32_t end_lba; + track_type type; +} track_info; + struct system_media { void *buffer; char *dir; char *name; char *extension; system_media *chain; + track_info *tracks; + FILE *f; + uint32_t num_tracks; uint32_t size; + media_type type; }; #define OPT_ADDRESS_LOG (1U << 31U)