Cycle accurate Mega Drive emulation: Exodus coming in April!
Moderator: BigEvilCorporation
Cycle accurate Mega Drive emulation: Exodus coming in April!
For those of you who don't know, I've been working on an emulator called Exodus for the last few years. In fact, I've been working on this emulator since November 2006 if you can believe it. After years of work, I'm pleased to announce I'll be officially making a public release of this emulator before the end of April.
I've been doing extensive hardware testing since I began this project to gather the necessary information to make the most technically accurate Mega Drive emulator ever written. I performed and published results of my testing on the YM2612 back in 2008, and a lot of Mega Drive emulators now have more accurate sound emulation as a result. This testing was initiated to assist the development of my own YM2612 emulation core for Exodus. I've also done a lot of testing on the VDP over the last couple of years to build a cycle accurate VDP core, which is fundamentally more accurate than any other VDP core in existence, and can correctly respond to mid-line state changes. In fact, all of the emulation cores used by Exodus are written entirely by me, from scratch, relying primarily on direct hardware testing to confirm many aspects of their implementation. Accuracy has been paramount in the design and development of this emulator, and I hope it will become a new standard for emulation accuracy.
My efforts aren't just focused on the Mega Drive however. I've spent a lot of time working on the overall design and architecture of Exodus to make probably the most generic, flexible, and scalable emulation platform ever written. This emulator is fundamentally different to every other emulator I know of, in several critical ways. I'll publish more about that towards the time of release, but most importantly, Exodus is not a Mega Drive emulator. Exodus is a generic emulation platform, which allows systems to be assembled from individual components at runtime. Nothing related to a particular system is hardcoded. Exodus constructs a system from a set of discrete components, manages the communication between those components, and keeps perfect timing accuracy between each component. Other systems can easily be modelled without modifying or rebuilding Exodus, it simply requires emulation cores for each device in that system to be available. As more cores are available for Exodus to use, more and more systems can be modelled easily, as a lot of systems share common components.
With Exodus, I'm starting my emulation efforts with the Mega Drive, but I have my sights set on plenty of other systems, like the Sega Saturn, Sega Dreamcast, and various Sega arcade systems. I've spent the last few years collecting a wide variety of hardware for testing and analysis, and I'm going to continue this project and expand it into many other platforms. I'm planning to continue advancing and leading this project, and I hope one day it will be able to rival even the biggest emulation projects such as MESS and MAME for system support, while providing a number of key advantages over other projects.
Exodus is also an extremely powerful debugging, development, and analysis environment, which I'm hoping will be able to serve as a very useful tool for communities involved in development, hacking, and reverse engineering, to be able to do more complex and thorough debugging and testing in software, where you can trust that if it runs properly in Exodus, it will run the same way on the real hardware, and vice versa.
Exodus will also be fully open source. This will happen shortly after the first release, after some further thought and discussion about licensing. An SDK will be provided which will allow any other interested developers to write and adapt cores for use in Exodus. Cores exist as separate DLL files, and can be compiled and released separately from the emulation platform itself, so individual cores can be developed and released on their own schedule, and don't need to be locked into the release schedule of the platform itself.
Exodus will finally see its first official, non-beta/preview release this month! On or before the end of April, no matter what, I'll be making the first release. Stay tuned for more information as the date draws nearer.
I've been doing extensive hardware testing since I began this project to gather the necessary information to make the most technically accurate Mega Drive emulator ever written. I performed and published results of my testing on the YM2612 back in 2008, and a lot of Mega Drive emulators now have more accurate sound emulation as a result. This testing was initiated to assist the development of my own YM2612 emulation core for Exodus. I've also done a lot of testing on the VDP over the last couple of years to build a cycle accurate VDP core, which is fundamentally more accurate than any other VDP core in existence, and can correctly respond to mid-line state changes. In fact, all of the emulation cores used by Exodus are written entirely by me, from scratch, relying primarily on direct hardware testing to confirm many aspects of their implementation. Accuracy has been paramount in the design and development of this emulator, and I hope it will become a new standard for emulation accuracy.
My efforts aren't just focused on the Mega Drive however. I've spent a lot of time working on the overall design and architecture of Exodus to make probably the most generic, flexible, and scalable emulation platform ever written. This emulator is fundamentally different to every other emulator I know of, in several critical ways. I'll publish more about that towards the time of release, but most importantly, Exodus is not a Mega Drive emulator. Exodus is a generic emulation platform, which allows systems to be assembled from individual components at runtime. Nothing related to a particular system is hardcoded. Exodus constructs a system from a set of discrete components, manages the communication between those components, and keeps perfect timing accuracy between each component. Other systems can easily be modelled without modifying or rebuilding Exodus, it simply requires emulation cores for each device in that system to be available. As more cores are available for Exodus to use, more and more systems can be modelled easily, as a lot of systems share common components.
With Exodus, I'm starting my emulation efforts with the Mega Drive, but I have my sights set on plenty of other systems, like the Sega Saturn, Sega Dreamcast, and various Sega arcade systems. I've spent the last few years collecting a wide variety of hardware for testing and analysis, and I'm going to continue this project and expand it into many other platforms. I'm planning to continue advancing and leading this project, and I hope one day it will be able to rival even the biggest emulation projects such as MESS and MAME for system support, while providing a number of key advantages over other projects.
Exodus is also an extremely powerful debugging, development, and analysis environment, which I'm hoping will be able to serve as a very useful tool for communities involved in development, hacking, and reverse engineering, to be able to do more complex and thorough debugging and testing in software, where you can trust that if it runs properly in Exodus, it will run the same way on the real hardware, and vice versa.
Exodus will also be fully open source. This will happen shortly after the first release, after some further thought and discussion about licensing. An SDK will be provided which will allow any other interested developers to write and adapt cores for use in Exodus. Cores exist as separate DLL files, and can be compiled and released separately from the emulation platform itself, so individual cores can be developed and released on their own schedule, and don't need to be locked into the release schedule of the platform itself.
Exodus will finally see its first official, non-beta/preview release this month! On or before the end of April, no matter what, I'll be making the first release. Stay tuned for more information as the date draws nearer.
-
- Very interested
- Posts: 3131
- Joined: Thu Nov 30, 2006 9:46 pm
- Location: France - Sevres
- Contact:
Oh, i didn't expected that ! I had a very outdated version of exodus sitting somewhere but it was still a very preliminary beta version.
As Oerg666 i am very excited about that new accurate emulator, Fusion which is rewarded for his accuracy has still many falls when you compare to the real hardware. That will really help for homebrew development
Also thanks for making it open source, it will become, for sure, the strongest reference about MD technical and hardware =)
As Oerg666 i am very excited about that new accurate emulator, Fusion which is rewarded for his accuracy has still many falls when you compare to the real hardware. That will really help for homebrew development
Also thanks for making it open source, it will become, for sure, the strongest reference about MD technical and hardware =)
Last edited by Stef on Wed Apr 10, 2013 8:07 pm, edited 1 time in total.
This is a great achievement, you can be very proud of it !
I cannot wait to try the debug features and get lost in your sourcecode for your notes and also to see how you dealed with this very interesting and original emulator design
What about CPU requirements and game compatibility ? Have you been able to test all sensitive games to see if they worked fine with your implementation ?
I cannot wait to try the debug features and get lost in your sourcecode for your notes and also to see how you dealed with this very interesting and original emulator design
What about CPU requirements and game compatibility ? Have you been able to test all sensitive games to see if they worked fine with your implementation ?
The CPU requirements, right now, are very high. There is room for some aggressive optimization in several key areas though, and I'm hoping to do a bit of it before release. I don't want to publish figures right now, because it'll be a bit of a moving target until release.What about CPU requirements and game compatibility ? Have you been able to test all sensitive games to see if they worked fine with your implementation?
As for timing sensitive games, I've tested with all the ones I know about. Everything works right now, with two exceptions:
-I'm getting intermittent corruption in Sonic 3D special stages. It appears to be related to the timing I use to latch vscroll settings, which is something I still need to do more hardware tests on. The current timing is an educated guess based on the testing I've been able to complete.
-The Moose Chase level in Mickey Mania. Although the sprites appear correctly, there's some artifacts on the right side of the screen. This occurs because my M68000 core isn't doing microcode level timing emulation, and the VDP display is being disabled too soon as a result. The register write to disable the display shouldn't be performed for a few more cycles. I'm going to do some hardware tests and "patch" this problem by adding some better timing for bus operations within the move opcode.
There are of course games that won't run right now, namely, anything that uses some kind of custom protection device. I also only currently support SRAM saving (no EEPROM saves), and I haven't supported any bankswitching hardware yet. I'm hoping to make improvements in those areas before release.
-
- Very interested
- Posts: 211
- Joined: Sat Apr 19, 2008 10:58 am
- Location: Frankfurt, Germany
- Contact:
Actually, you might have the right timing already. I faced a problem on all other emulators where on the real machine it seemed to respond to the disable display flag every 16 pixels. Can you verify this?The register write to disable the display shouldn't be performed for a few more cycles. I'm going to do some hardware tests and "patch" this problem by adding some better timing for bus operations within the move opcode.
-
- Very interested
- Posts: 2440
- Joined: Tue Dec 05, 2006 1:37 pm
- Location: Estonia, Rapla City
- Contact:
16 pixels would correspond to the access slots of active display. Registers don't go to VRAM so the refresh cycle should not eat up the slot.
Mida sa loed ? Nagunii aru ei saa
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
-
- Interested
- Posts: 14
- Joined: Thu Mar 21, 2013 8:33 pm
- Location: Hungary
-
- Very interested
- Posts: 2440
- Joined: Tue Dec 05, 2006 1:37 pm
- Location: Estonia, Rapla City
- Contact:
I have a feeling this would not hit full speed on any of my computers. Still, looking forward to the release ^^
Mida sa loed ? Nagunii aru ei saa
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
few important features for next releases
I think it will run very fast on my 3770K at 4300mhz, i respect very hungry emulators like a Higan. Accuracy very important and no matter how much it eat CPU.
It will be awesome if in next releases Exodus, we will have ability to change some parts. (not harmful features at all) I use it in most accurate emulator GenPlus GX 1.7.3 (for Wii) on Dolphin emulator.
1) VDP modes: NTSC, PAL, AUTO
2) PSG volume adjust: 0.00 / 5.00
3) PSG Noise Boost
4) Lowpass Filter
5) Aspect SCALE and screen positions X: Y:
6) Simple Stereo monomix output
Here video record as proof http://www.youtube.com/watch?v=wCvKY0Ea ... Yg&index=1
Thanks in advance, can't wait a new cycle accurate Exodus. ^^
It will be awesome if in next releases Exodus, we will have ability to change some parts. (not harmful features at all) I use it in most accurate emulator GenPlus GX 1.7.3 (for Wii) on Dolphin emulator.
1) VDP modes: NTSC, PAL, AUTO
2) PSG volume adjust: 0.00 / 5.00
3) PSG Noise Boost
4) Lowpass Filter
5) Aspect SCALE and screen positions X: Y:
6) Simple Stereo monomix output
Here video record as proof http://www.youtube.com/watch?v=wCvKY0Ea ... Yg&index=1
Thanks in advance, can't wait a new cycle accurate Exodus. ^^