Mercurial > repos > blastem
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_ |