Cycle accurate Mega Drive emulation: Exodus coming in April!

Ask anything your want about Megadrive/Genesis programming.

Moderator: BigEvilCorporation

Post Reply
Nemesis
Very interested
Posts: 773
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Cycle accurate Mega Drive emulation: Exodus coming in April!

Post by Nemesis » Tue Apr 09, 2013 12:23 am

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.

Image

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.

Oerg866
Very interested
Posts: 211
Joined: Sat Apr 19, 2008 10:58 am
Location: Frankfurt, Germany
Contact:

Post by Oerg866 » Tue Apr 09, 2013 6:49 am

You have no idea how fucking excited I am.

Finally an emulator that might run or WIP demo :) (Just in time!! :D)

:D

Best of luck!
Oerg866

Stef
Very interested
Posts: 3058
Joined: Thu Nov 30, 2006 9:46 pm
Location: France - Sevres
Contact:

Post by Stef » Tue Apr 09, 2013 8:18 am

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 =)
Last edited by Stef on Wed Apr 10, 2013 8:07 pm, edited 1 time in total.

Eke
Very interested
Posts: 864
Joined: Wed Feb 28, 2007 2:57 pm
Contact:

Post by Eke » Tue Apr 09, 2013 9:36 am

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 ?

Nemesis
Very interested
Posts: 773
Joined: Wed Nov 07, 2007 1:09 am
Location: Sydney, Australia

Post by Nemesis » Tue Apr 09, 2013 11:00 am

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.

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.

mickagame
Very interested
Posts: 230
Joined: Sat Jun 07, 2008 7:37 am

Post by mickagame » Tue Apr 09, 2013 11:19 am

Congratulation for your work !!
I'm also very excited by this release. I can't wait testing this emulator and study his design.
I'm sure will be very good reference for many emulation project in the way you annouce it!

oofwill
Very interested
Posts: 173
Joined: Mon May 03, 2010 6:12 pm
Location: France - Niort

Post by oofwill » Tue Apr 09, 2013 12:24 pm

Great work!

Can't wait to test it :)

Oerg866
Very interested
Posts: 211
Joined: Sat Apr 19, 2008 10:58 am
Location: Frankfurt, Germany
Contact:

Post by Oerg866 » Tue Apr 09, 2013 1:46 pm

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.
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?

TmEE co.(TM)
Very interested
Posts: 2403
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Tue Apr 09, 2013 3:52 pm

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

mic_
Very interested
Posts: 265
Joined: Tue Aug 12, 2008 12:26 pm
Location: Sweden
Contact:

Post by mic_ » Wed Apr 10, 2013 12:20 pm

Sounds awesome. Looking forward to trying this out once it's released.

Matej
Very interested
Posts: 62
Joined: Tue Feb 19, 2013 12:48 pm

Post by Matej » Wed Apr 10, 2013 2:20 pm

Great work! Cant wait to play with it!

Huge
Very interested
Posts: 197
Joined: Sat Dec 13, 2008 11:50 pm

Post by Huge » Wed Apr 10, 2013 7:09 pm

Haha, I think I still have one of those 2006 builds.

Great to see this project come to fruition!

Karate_Sniper
Interested
Posts: 14
Joined: Thu Mar 21, 2013 8:33 pm
Location: Hungary

Post by Karate_Sniper » Wed Apr 10, 2013 7:28 pm

I'm also waiting patiently for this, the nicest thing is the full debugging environment, which is missing from Fusion, and I needed it several times, and Gens K-mod was failing so many times in compatibility.
You are awesome :)

TmEE co.(TM)
Very interested
Posts: 2403
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Wed Apr 10, 2013 9:21 pm

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

Shadow
Very interested
Posts: 257
Joined: Wed Sep 16, 2009 7:13 am
Location: Russian Federation
Contact:

few important features for next releases

Post by Shadow » Thu Apr 11, 2013 10:08 am

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. :P

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. ^^

Post Reply