comparison sms.h @ 2528:90a40be940f7

Implement read-only SC-3000 cassette support
author Michael Pavone <pavone@retrodev.com>
date Mon, 25 Nov 2024 22:26:45 -0800
parents 8cf7cadc17ee
children f4a471730ba4
comparison
equal deleted inserted replaced
2524:25e40370e0e4 2528:90a40be940f7
9 #else 9 #else
10 #include "z80_to_x86.h" 10 #include "z80_to_x86.h"
11 #endif 11 #endif
12 #include "io.h" 12 #include "io.h"
13 #include "i8255.h" 13 #include "i8255.h"
14 #include "wave.h"
14 15
15 #define SMS_RAM_SIZE (8*1024) 16 #define SMS_RAM_SIZE (8*1024)
16 #define SMS_CART_RAM_SIZE (32*1024) 17 #define SMS_CART_RAM_SIZE (32*1024)
17 18
18 typedef struct { 19 typedef struct {
22 psg_context *psg; 23 psg_context *psg;
23 sega_io io; 24 sega_io io;
24 i8255 *i8255; 25 i8255 *i8255;
25 uint16_t *keystate; 26 uint16_t *keystate;
26 uint8_t *rom; 27 uint8_t *rom;
28 system_media *cassette;
27 uint32_t rom_size; 29 uint32_t rom_size;
28 uint32_t master_clock; 30 uint32_t master_clock;
29 uint32_t normal_clock; 31 uint32_t normal_clock;
30 uint32_t last_frame; 32 uint32_t last_frame;
31 uint8_t should_return; 33 uint8_t should_return;
32 uint8_t start_button_region; 34 uint8_t start_button_region;
33 uint8_t ram[SMS_RAM_SIZE]; 35 uint8_t ram[SMS_RAM_SIZE];
34 uint8_t bank_regs[4]; 36 uint8_t bank_regs[4];
35 uint8_t cart_ram[SMS_CART_RAM_SIZE]; 37 uint8_t cart_ram[SMS_CART_RAM_SIZE];
36 uint8_t kb_mux; 38 uint8_t kb_mux;
39 uint8_t cassette_state;
40 uint32_t cassette_offset;
41 uint32_t cassette_cycle;
42 wave_header cassette_wave;
37 } sms_context; 43 } sms_context;
38 44
39 sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t force_region); 45 sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t force_region);
40 46
41 #endif //SMS_H_ 47 #endif //SMS_H_