diff genesis.h @ 1103:22e87b739ad6

WIP split of ROM loading/argument parsing from Genesis emulation code. Compiles and doesn't crash, but nothing works. Still a few too many globals as well.
author Michael Pavone <pavone@retrodev.com>
date Fri, 09 Dec 2016 09:48:48 -0800
parents blastem.h@5fb64487b6e1
children 2eb54e24914e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genesis.h	Fri Dec 09 09:48:48 2016 -0800
@@ -0,0 +1,74 @@
+/*
+ Copyright 2013 Michael Pavone
+ This file is part of BlastEm.
+ BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text.
+*/
+#ifndef GENESIS_H_
+#define GENESIS_H_
+
+#include <stdint.h>
+#include "m68k_core.h"
+#include "z80_to_x86.h"
+#include "ym2612.h"
+#include "vdp.h"
+#include "psg.h"
+#include "io.h"
+#include "romdb.h"
+#include "arena.h"
+
+typedef struct genesis_context genesis_context;
+
+struct genesis_context {
+	m68k_context    *m68k;
+	z80_context     *z80;
+	vdp_context     *vdp;
+	ym2612_context  *ym;
+	psg_context     *psg;
+	genesis_context *next_context;
+	uint16_t        *cart;
+	uint16_t        *lock_on;
+	uint16_t        *work_ram;
+	uint8_t         *zram;
+	void            *extra;
+	arena           *arena;
+	char            *next_rom;
+	char            *save_dir;
+	uint8_t         *save_storage;
+	eeprom_map      *eeprom_map;
+	uint32_t        num_eeprom;
+	uint32_t        save_size;
+	uint32_t        save_ram_mask;
+	uint32_t        master_clock; //Current master clock value
+	uint32_t        normal_clock; //Normal master clock (used to restore master clock after turbo mode)
+	uint32_t        frame_end;
+	uint32_t        max_cycles;
+	uint8_t         bank_regs[8];
+	uint16_t        mapper_start_index;
+	uint8_t         save_type;
+	io_port         ports[3];
+	uint8_t         version_reg;
+	uint8_t         bus_busy;
+	uint8_t         should_exit;
+	uint8_t         save_state;
+	uint8_t         mouse_mode;
+	uint8_t         mouse_captured;
+	eeprom_state    eeprom;
+};
+
+extern genesis_context * genesis;
+extern int break_on_sync;
+
+#define RAM_WORDS 32 * 1024
+#define Z80_RAM_BYTES 8 * 1024
+
+uint16_t read_dma_value(uint32_t address);
+uint16_t get_open_bus_value();
+m68k_context * sync_components(m68k_context *context, uint32_t address);
+m68k_context * debugger(m68k_context * context, uint32_t address);
+void set_speed_percent(genesis_context * context, uint32_t percent);
+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);
+void start_genesis(genesis_context *gen, char *statefile, uint8_t *debugger);
+void free_genesis(genesis_context *gen);
+
+#endif //GENESIS_H_
+