Mercurial > repos > blastem
view genesis.h @ 2488:bfd09d3367ba
Fix crash when enabling VGM recording while running Pico or Copera software
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 15 Apr 2024 23:07:18 -0700 |
parents | a4f8fa24764b |
children | d74d3998482c |
line wrap: on
line source
/* 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 "system.h" #include "m68k_core.h" #ifdef NEW_CORE #include "z80.h" #else #include "z80_to_x86.h" #endif #include "ym2612.h" #include "vdp.h" #include "psg.h" #include "pico_pcm.h" #include "ymz263b.h" #include "io.h" #include "romdb.h" #include "arena.h" #include "i2c.h" typedef struct genesis_context genesis_context; struct genesis_context { system_header header; m68k_context *m68k; z80_context *z80; vdp_context *vdp; ym2612_context *ym; psg_context *psg; pico_pcm *adpcm; ymz263b *ymz; uint16_t *cart; uint16_t *lock_on; uint16_t *work_ram; uint8_t *zram; void *expansion; void *extra; uint8_t *save_storage; void *mapper_temp; eeprom_map *eeprom_map; write_16_fun tmss_write_16; write_8_fun tmss_write_8; read_16_fun tmss_read_16; read_8_fun tmss_read_8; uint16_t *tmss_pointers[NUM_MEM_AREAS]; uint8_t *tmss_buffer; uint8_t *serialize_tmp; size_t serialize_size; 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; uint32_t int_latency_prev1; uint32_t int_latency_prev2; uint32_t reset_cycle; uint32_t last_frame; uint32_t last_flush_cycle; uint32_t soft_flush_cycles; uint32_t tmss_write_offset; uint32_t last_sync_cycle; uint32_t refresh_counter; uint16_t z80_bank_reg; uint16_t pico_pen_x; uint16_t pico_pen_y; uint16_t tmss_lock[2]; uint16_t mapper_start_index; uint8_t mapper_type; uint8_t bank_regs[9]; uint8_t save_type; sega_io io; uint8_t version_reg; uint8_t pico_button_state; uint8_t pico_page; uint8_t bus_busy; uint8_t reset_requested; uint8_t tmss; uint8_t vdp_unlocked; uint8_t enter_z80_debugger; uint8_t pico_story_window; uint8_t pico_story_pages[7]; eeprom_state eeprom; nor_state nor; }; #define RAM_WORDS 32 * 1024 #define Z80_RAM_BYTES 8 * 1024 genesis_context *alloc_config_genesis(void *rom, uint32_t rom_size, void *lock_on, uint32_t lock_on_size, uint32_t system_opts, uint8_t force_region); genesis_context *alloc_config_genesis_cdboot(system_media *media, uint32_t system_opts, uint8_t force_region); genesis_context* alloc_config_pico(void *rom, uint32_t rom_size, void *lock_on, uint32_t lock_on_size, uint32_t ym_opts, uint8_t force_region, system_type stype); void genesis_serialize(genesis_context *gen, serialize_buffer *buf, uint32_t m68k_pc, uint8_t all); void genesis_deserialize(deserialize_buffer *buf, genesis_context *gen); void gen_update_refresh_free_access(m68k_context *context); #endif //GENESIS_H_