comparison segacd.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 8e51c0c3f2e3
children bafb757e1cd2
comparison
equal deleted inserted replaced
2052:3748a2a8a4b7 2072:cc13c100b027
1 #ifndef SEGACD_H_
2 #define SEGACD_H_
3 #include <stdint.h>
4 #include "genesis.h"
5 #include "lc8951.h"
6 #include "cdd_mcu.h"
7
8 typedef struct {
9 m68k_context *m68k;
10 system_media *media;
11 genesis_context *genesis;
12 uint16_t gate_array[0x100];
13 uint16_t *rom; //unaltered ROM, needed for mirrored locations
14 uint16_t *rom_mut; //ROM with low 16-bit of HINT vector modified by register write
15 uint16_t *prog_ram;
16 uint16_t *word_ram;
17 uint8_t *pcm_ram;
18 uint8_t *bram;
19 uint32_t stopwatch_cycle;
20 uint32_t int2_cycle;
21 uint32_t graphics_int_cycle;
22 uint32_t periph_reset_cycle;
23 uint32_t graphics_cycle;
24 uint32_t base;
25 uint32_t graphics_x;
26 uint32_t graphics_y;
27 uint32_t graphics_dx;
28 uint32_t graphics_dy;
29 uint16_t graphics_dst_x;
30 uint8_t graphics_pixels[4];
31 uint8_t timer_pending;
32 uint8_t timer_value;
33 uint8_t busreq;
34 uint8_t busack;
35 uint8_t reset;
36 uint8_t need_reset;
37 uint8_t memptr_start_index;
38 lc8951 cdc;
39 cdd_mcu cdd;
40 uint8_t cdc_dst_low;
41 uint8_t cdc_int_ack;
42 uint8_t graphics_step;
43 uint8_t graphics_dst_y;
44 } segacd_context;
45
46 segacd_context *alloc_configure_segacd(system_media *media, uint32_t opts, uint8_t force_region, rom_info *info);
47 memmap_chunk *segacd_main_cpu_map(segacd_context *cd, uint8_t cart_boot, uint32_t *num_chunks);
48 uint32_t gen_cycle_to_scd(uint32_t cycle, genesis_context *gen);
49 void scd_run(segacd_context *cd, uint32_t cycle);
50 void scd_adjust_cycle(segacd_context *cd, uint32_t deduction);
51
52 #endif //SEGACD_H_