comparison genesis.h @ 1111:2eb54e24914e

Mostly working changes to allow support for multiple emulated system types in main blastem program
author Michael Pavone <pavone@retrodev.com>
date Mon, 19 Dec 2016 13:28:18 -0800
parents 22e87b739ad6
children 45db303fc705
comparison
equal deleted inserted replaced
1110:d1eed3b1121c 1111:2eb54e24914e
5 */ 5 */
6 #ifndef GENESIS_H_ 6 #ifndef GENESIS_H_
7 #define GENESIS_H_ 7 #define GENESIS_H_
8 8
9 #include <stdint.h> 9 #include <stdint.h>
10 #include "system.h"
10 #include "m68k_core.h" 11 #include "m68k_core.h"
11 #include "z80_to_x86.h" 12 #include "z80_to_x86.h"
12 #include "ym2612.h" 13 #include "ym2612.h"
13 #include "vdp.h" 14 #include "vdp.h"
14 #include "psg.h" 15 #include "psg.h"
17 #include "arena.h" 18 #include "arena.h"
18 19
19 typedef struct genesis_context genesis_context; 20 typedef struct genesis_context genesis_context;
20 21
21 struct genesis_context { 22 struct genesis_context {
23 system_header header;
22 m68k_context *m68k; 24 m68k_context *m68k;
23 z80_context *z80; 25 z80_context *z80;
24 vdp_context *vdp; 26 vdp_context *vdp;
25 ym2612_context *ym; 27 ym2612_context *ym;
26 psg_context *psg; 28 psg_context *psg;
27 genesis_context *next_context;
28 uint16_t *cart; 29 uint16_t *cart;
29 uint16_t *lock_on; 30 uint16_t *lock_on;
30 uint16_t *work_ram; 31 uint16_t *work_ram;
31 uint8_t *zram; 32 uint8_t *zram;
32 void *extra; 33 void *extra;
33 arena *arena;
34 char *next_rom;
35 char *save_dir;
36 uint8_t *save_storage; 34 uint8_t *save_storage;
37 eeprom_map *eeprom_map; 35 eeprom_map *eeprom_map;
38 uint32_t num_eeprom; 36 uint32_t num_eeprom;
39 uint32_t save_size; 37 uint32_t save_size;
40 uint32_t save_ram_mask; 38 uint32_t save_ram_mask;
43 uint32_t frame_end; 41 uint32_t frame_end;
44 uint32_t max_cycles; 42 uint32_t max_cycles;
45 uint8_t bank_regs[8]; 43 uint8_t bank_regs[8];
46 uint16_t mapper_start_index; 44 uint16_t mapper_start_index;
47 uint8_t save_type; 45 uint8_t save_type;
48 io_port ports[3]; 46 sega_io io;
49 uint8_t version_reg; 47 uint8_t version_reg;
50 uint8_t bus_busy; 48 uint8_t bus_busy;
51 uint8_t should_exit;
52 uint8_t save_state;
53 uint8_t mouse_mode;
54 uint8_t mouse_captured;
55 eeprom_state eeprom; 49 eeprom_state eeprom;
56 }; 50 };
57
58 extern genesis_context * genesis;
59 extern int break_on_sync;
60 51
61 #define RAM_WORDS 32 * 1024 52 #define RAM_WORDS 32 * 1024
62 #define Z80_RAM_BYTES 8 * 1024 53 #define Z80_RAM_BYTES 8 * 1024
63 54
64 uint16_t read_dma_value(uint32_t address); 55 uint16_t read_dma_value(uint32_t address);
65 uint16_t get_open_bus_value(); 56 uint16_t get_open_bus_value();
66 m68k_context * sync_components(m68k_context *context, uint32_t address); 57 m68k_context * sync_components(m68k_context *context, uint32_t address);
67 m68k_context * debugger(m68k_context * context, uint32_t address);
68 void set_speed_percent(genesis_context * context, uint32_t percent);
69 genesis_context *alloc_config_genesis(void *rom, uint32_t rom_size, void *lock_on, uint32_t lock_on_size, uint32_t ym_opts, uint8_t force_region, rom_info *info_out); 58 genesis_context *alloc_config_genesis(void *rom, uint32_t rom_size, void *lock_on, uint32_t lock_on_size, uint32_t ym_opts, uint8_t force_region, rom_info *info_out);
70 void start_genesis(genesis_context *gen, char *statefile, uint8_t *debugger);
71 void free_genesis(genesis_context *gen);
72 59
73 #endif //GENESIS_H_ 60 #endif //GENESIS_H_
74 61