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