comparison system.h @ 2116:cd057d6fe030

Initial stab at subcode emulation
author Michael Pavone <pavone@retrodev.com>
date Sun, 06 Mar 2022 22:03:52 -0800
parents 2449c88cea36
children 9a8dd4ba2753
comparison
equal deleted inserted replaced
2115:e93ced356a21 2116:cd057d6fe030
88 typedef enum { 88 typedef enum {
89 TRACK_AUDIO, 89 TRACK_AUDIO,
90 TRACK_DATA 90 TRACK_DATA
91 } track_type; 91 } track_type;
92 92
93 enum {
94 SUBCODES_NONE,
95 SUBCODES_RAW,
96 SUBCODES_COOKED
97 };
98
93 typedef struct { 99 typedef struct {
94 FILE *f; 100 FILE *f;
95 uint32_t file_offset; 101 uint32_t file_offset;
96 uint32_t fake_pregap; 102 uint32_t fake_pregap;
97 uint32_t pregap_lba; 103 uint32_t pregap_lba;
98 uint32_t start_lba; 104 uint32_t start_lba;
99 uint32_t end_lba; 105 uint32_t end_lba;
100 uint16_t sector_bytes; 106 uint16_t sector_bytes;
101 uint8_t need_swap; 107 uint8_t need_swap;
108 uint8_t has_subcodes;
102 track_type type; 109 track_type type;
103 } track_info; 110 } track_info;
104 111
105 typedef uint8_t (*seek_fun)(system_media *media, uint32_t sector); 112 typedef uint8_t (*seek_fun)(system_media *media, uint32_t sector);
106 typedef uint8_t (*read_fun)(system_media *media, uint32_t offset); 113 typedef uint8_t (*read_fun)(system_media *media, uint32_t offset);
110 char *dir; 117 char *dir;
111 char *name; 118 char *name;
112 char *extension; 119 char *extension;
113 system_media *chain; 120 system_media *chain;
114 track_info *tracks; 121 track_info *tracks;
122 uint8_t *tmp_buffer;
115 seek_fun seek; 123 seek_fun seek;
116 read_fun read; 124 read_fun read;
125 read_fun read_subcodes;
117 uint32_t num_tracks; 126 uint32_t num_tracks;
118 uint32_t cur_track; 127 uint32_t cur_track;
119 uint32_t size; 128 uint32_t size;
120 uint32_t cur_sector; 129 uint32_t cur_sector;
121 media_type type; 130 media_type type;