Mercurial > repos > blastem
annotate genesis.h @ 1904:8312e574100a
Implement selectable YM2612/YM3834 invalid status port behavior
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 26 Feb 2020 22:40:37 -0800 |
parents | bb4d19c7c047 |
children | 8fe162bdb038 b021ca0bc375 |
rev | line source |
---|---|
467
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
1 /* |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
2 Copyright 2013 Michael Pavone |
483
3e1573fa22cf
Implement turbo/slow motion feature that overclocks or underclocks the entire system at the push of a button
Mike Pavone <pavone@retrodev.com>
parents:
467
diff
changeset
|
3 This file is part of BlastEm. |
467
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
4 BlastEm is free software distributed under the terms of the GNU General Public License version 3 or greater. See COPYING for full license text. |
140af5509ce7
Added copyright notice to source files and added GPL license text in COPYING
Mike Pavone <pavone@retrodev.com>
parents:
451
diff
changeset
|
5 */ |
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.
Michael Pavone <pavone@retrodev.com>
parents:
1016
diff
changeset
|
6 #ifndef GENESIS_H_ |
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.
Michael Pavone <pavone@retrodev.com>
parents:
1016
diff
changeset
|
7 #define GENESIS_H_ |
66 | 8 |
75 | 9 #include <stdint.h> |
1111
2eb54e24914e
Mostly working changes to allow support for multiple emulated system types in main blastem program
Michael Pavone <pavone@retrodev.com>
parents:
1103
diff
changeset
|
10 #include "system.h" |
569
9b7fcf748be0
Rename x86_68k_options and m68k_to_x86.h to m68k_options and m68k_core.h respectively
Michael Pavone <pavone@retrodev.com>
parents:
524
diff
changeset
|
11 #include "m68k_core.h" |
1752
d6d4c006a7b3
Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
12 #ifdef NEW_CORE |
d6d4c006a7b3
Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
13 #include "z80.h" |
d6d4c006a7b3
Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
14 #else |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
198
diff
changeset
|
15 #include "z80_to_x86.h" |
1752
d6d4c006a7b3
Initial attempt at interrupts in new Z80 core and integrating it into main executable
Michael Pavone <pavone@retrodev.com>
parents:
1690
diff
changeset
|
16 #endif |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
198
diff
changeset
|
17 #include "ym2612.h" |
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
198
diff
changeset
|
18 #include "vdp.h" |
354
15dd6418fe67
Initial PSG support. Mostly works, noise channel is borked though.
Mike Pavone <pavone@retrodev.com>
parents:
351
diff
changeset
|
19 #include "psg.h" |
421
d0cacb4ade0b
Move IO code to a separate file and do a tiny bit of refactoring
Mike Pavone <pavone@retrodev.com>
parents:
418
diff
changeset
|
20 #include "io.h" |
769
4638b88bc72d
Initial work on I2C EEPROM implementation
Michael Pavone <pavone@retrodev.com>
parents:
767
diff
changeset
|
21 #include "romdb.h" |
883
9f149f0e98b7
It is now possible to switch back and forth between the menu ROM and the game
Michael Pavone <pavone@retrodev.com>
parents:
874
diff
changeset
|
22 #include "arena.h" |
1414
d94855080529
Move I2C EEPROM and NOR Flash functions out of romdb.c into new files
Michael Pavone <pavone@retrodev.com>
parents:
1413
diff
changeset
|
23 #include "i2c.h" |
66 | 24 |
957 | 25 typedef struct genesis_context genesis_context; |
26 | |
27 struct genesis_context { | |
1111
2eb54e24914e
Mostly working changes to allow support for multiple emulated system types in main blastem program
Michael Pavone <pavone@retrodev.com>
parents:
1103
diff
changeset
|
28 system_header header; |
957 | 29 m68k_context *m68k; |
30 z80_context *z80; | |
31 vdp_context *vdp; | |
32 ym2612_context *ym; | |
33 psg_context *psg; | |
34 uint16_t *cart; | |
1016
5fb64487b6e1
Very basic support for S&K lock-on. Needs more work for full functionality.
Michael Pavone <pavone@retrodev.com>
parents:
981
diff
changeset
|
35 uint16_t *lock_on; |
957 | 36 uint16_t *work_ram; |
37 uint8_t *zram; | |
38 void *extra; | |
39 uint8_t *save_storage; | |
1413
3d7f668dce3d
Sonic 3 & Knuckles lock-on is now 100% functional with working saves
Michael Pavone <pavone@retrodev.com>
parents:
1395
diff
changeset
|
40 void *mapper_temp; |
957 | 41 eeprom_map *eeprom_map; |
1690
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1649
diff
changeset
|
42 uint8_t *serialize_tmp; |
319d90025d50
Implement serialization/deserialization in libretro build
Mike Pavone <pavone@retrodev.com>
parents:
1649
diff
changeset
|
43 size_t serialize_size; |
957 | 44 uint32_t num_eeprom; |
45 uint32_t save_size; | |
46 uint32_t save_ram_mask; | |
47 uint32_t master_clock; //Current master clock value | |
48 uint32_t normal_clock; //Normal master clock (used to restore master clock after turbo mode) | |
49 uint32_t frame_end; | |
50 uint32_t max_cycles; | |
1364
30123ca5856c
Added some code to try and prevent Z80 accesses and refresh cycles from screwing up interrupt latency more than on hardware
Michael Pavone <pavone@retrodev.com>
parents:
1208
diff
changeset
|
51 uint32_t int_latency_prev1; |
30123ca5856c
Added some code to try and prevent Z80 accesses and refresh cycles from screwing up interrupt latency more than on hardware
Michael Pavone <pavone@retrodev.com>
parents:
1208
diff
changeset
|
52 uint32_t int_latency_prev2; |
1556
075df0844baa
Randomize soft reset timing and fix silly bug that was accidentally clearing IO state on soft reset
Michael Pavone <pavone@retrodev.com>
parents:
1444
diff
changeset
|
53 uint32_t reset_cycle; |
957 | 54 uint8_t bank_regs[8]; |
1757
bb4d19c7c047
Fix size of relocated Z80 bank register field
Michael Pavone <pavone@retrodev.com>
parents:
1752
diff
changeset
|
55 uint16_t z80_bank_reg; |
957 | 56 uint16_t mapper_start_index; |
1444
14a2834d010c
Save/restore mapper state in native save states
Michael Pavone <pavone@retrodev.com>
parents:
1428
diff
changeset
|
57 uint8_t mapper_type; |
957 | 58 uint8_t save_type; |
1111
2eb54e24914e
Mostly working changes to allow support for multiple emulated system types in main blastem program
Michael Pavone <pavone@retrodev.com>
parents:
1103
diff
changeset
|
59 sega_io io; |
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.
Michael Pavone <pavone@retrodev.com>
parents:
1016
diff
changeset
|
60 uint8_t version_reg; |
957 | 61 uint8_t bus_busy; |
1208
95f5253e75c7
Implement soft reset in Genesis mode
Michael Pavone <pavone@retrodev.com>
parents:
1117
diff
changeset
|
62 uint8_t reset_requested; |
957 | 63 eeprom_state eeprom; |
1395
efa7225e0f07
Initial work to support parallel NOR flash and the Magistr 16
Michael Pavone <pavone@retrodev.com>
parents:
1364
diff
changeset
|
64 nor_state nor; |
957 | 65 }; |
288
a8ee7934a1f8
Add a YM2612 stub implementation with just timers and status registers so that games that depend on it can run.
Mike Pavone <pavone@retrodev.com>
parents:
198
diff
changeset
|
66 |
524
fb39534b6604
Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
508
diff
changeset
|
67 #define RAM_WORDS 32 * 1024 |
fb39534b6604
Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
508
diff
changeset
|
68 #define Z80_RAM_BYTES 8 * 1024 |
fb39534b6604
Move debugging code outside of main source file
Mike Pavone <pavone@retrodev.com>
parents:
508
diff
changeset
|
69 |
707
8aa9aacefe12
Sync machine state before entering debugger
Michael Pavone <pavone@retrodev.com>
parents:
696
diff
changeset
|
70 m68k_context * sync_components(m68k_context *context, uint32_t address); |
1595
360d5bab199f
Update controller config when changed in UI without restart
Michael Pavone <pavone@retrodev.com>
parents:
1556
diff
changeset
|
71 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); |
1428
2540c05520f2
New savestates are working. New config file option for selecting format states will be saved in. Mostly complete, needs a little more work before release
Michael Pavone <pavone@retrodev.com>
parents:
1414
diff
changeset
|
72 void genesis_serialize(genesis_context *gen, serialize_buffer *buf, uint32_t m68k_pc); |
2540c05520f2
New savestates are working. New config file option for selecting format states will be saved in. Mostly complete, needs a little more work before release
Michael Pavone <pavone@retrodev.com>
parents:
1414
diff
changeset
|
73 void genesis_deserialize(deserialize_buffer *buf, genesis_context *gen); |
66 | 74 |
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.
Michael Pavone <pavone@retrodev.com>
parents:
1016
diff
changeset
|
75 #endif //GENESIS_H_ |
66 | 76 |