Page 1 of 8

Exodus 2.0 + Open Source Release

Posted: Mon Apr 27, 2015 2:43 pm
by Nemesis
Hi all, as you're probably aware by now, Exodus 2.0 will be released on the 30th of April 2015, and the project will be going open source at that time. I've just spread the word around to a few other forums. Feel free to do the same, or point me towards any other communities you think would be interested in hearing about this. Here's what I've posted on the other forums:


You may or may not have heard about Exodus. Exodus is a generic and extensible emulation platform I have been developing for almost 9 years now, which aims to support cycle-level accuracy in emulation, combined with powerful debugging and development tools. Unlike other emulators which are statically compiled to support a particular set of systems, Exodus is open an extensible, with every emulation core supplied through plugins. The platform itself constructs systems from an XML definition of the connections between individual components in the system. This design allows the emulator itself to focus on managing the timing and interaction between the components, and allows the emulation cores to be totally modular and reusable in other systems that share the same components. A lot more information about this is available on the website.

On the 30th of April 2013 I released Exodus 1.0, with support for the Sega Mega Drive. The plugin SDK wasn't ready for use at that stage though, so I held off on the open source release until I could get it up to scratch. Since then I've had delays and setbacks in getting the next release out the door, but the long process is now complete. I'm pleased to announce that Exodus 2.0 will be released both as binaries, and an open source repository, on the 30th of April 2015. Developer documentation will also be published detailing the API. The code will be licensed under MS-RL, and the repository will be hosted on Bitbucket. Refer to the website for more information on how to build Exodus from the source, and how to contribute ideas or code changes to the project.

In terms of Mega Drive emulation, the main differences in Exodus 2.0 are as follows:
-Major speed improvements (average 90% on dual-core systems, 30%-40% on quad-core systems)
-Around 40% reduction in memory usage
-Completely redesigned user interface, with a very powerful docking system for window management.
-Gamepad/joystick support
-Lots of bugs fixed and new debugging features

Image
The release will be made available on the official website at http://www.exodusemulator.com, so head over there for download links and more information about this project. I hope this emulator of use to some people out there, and I hope other people will be interested in contributing to this project, and helping me to expand it into other platforms.

Edit:
Exodus 2.0.0 has now been released! You can download the new version on the release page at http://www.exodusemulator.com/index.php ... nt-release

Posted: Mon Apr 27, 2015 4:11 pm
by Black Zero
A very very big thank you in advance!

When I look at the countdown the countdown have begun to the day I finally can retire Fusion and make room for an cycle accurate Sega Mega Drive/Genesis emulator.

EDIT: I've spread the news to NGEmu.com

Posted: Mon Apr 27, 2015 6:54 pm
by nolddor
Good news, thanks a lot!!!

Does this new version, mega mouse or justifier support?

Posted: Tue Apr 28, 2015 10:20 am
by Nemesis
nolddor wrote:Good news, thanks a lot!!!

Does this new version, mega mouse or justifier support?
Unfortunately not yet, but it would be really easy to add. The VDP core already supports HV counter latching at a target frame location, and the external interrupt trigger to the M68000. All that needs to be done is add a back-door way for an input device to effectively raise the HL line, but at a specified frame location, and you'll have everything you need for lightgun support. I hadn't decided what the best way to do that yet was, which is why it isn't in there yet. In the real hardware of course, the raster beam position from the VDP is a strobe to the lightgun, so you'll need a way to expose that kind of information in order to produce the same effect in a proper way (IE, without hardcoding the VDP core to work that way). As for the mouse, in theory, someone could build a device to emulate that now, it's simply something I haven't attempted yet.

Posted: Tue Apr 28, 2015 5:33 pm
by notaz
I've noticed a donate button - be aware that PayPal doesn't like emulators and has frozen accounts of several emulator authors recently.

Posted: Wed Apr 29, 2015 4:20 am
by Black Zero
Tomorrow's Christmas day in the emu scene! :D

Posted: Wed Apr 29, 2015 10:41 am
by Shadow
I see, performance has increased much more than 30-40%, goes up to ~170% (a little secret, where), in difference between the old and the new version of Exodus. Can't wait. :)

Posted: Wed Apr 29, 2015 10:34 pm
by syboxez
Is there going to be Linux support on this release?

If not, any chance at it in the future?

Posted: Wed Apr 29, 2015 10:58 pm
by King Of Chaos
It'll be open source, so anyone can port it to Linux (or Mac).

Posted: Thu Apr 30, 2015 1:53 am
by Nemesis
notaz wrote:I've noticed a donate button - be aware that PayPal doesn't like emulators and has frozen accounts of several emulator authors recently.
Thanks for the tip, I wasn't aware of that. I'll probably keep the paypal donate button alive anyway, and just make sure if any donations come in, I drain them back into a real bank account.

Posted: Thu Apr 30, 2015 5:06 am
by syboxez
King Of Chaos wrote:It'll be open source, so anyone can port it to Linux (or Mac).
Not really. Many programs (ex. Project64) have a lot of Windows-only code in it, making it very difficult to port.

Posted: Thu Apr 30, 2015 8:00 am
by Nemesis
Exodus 2.0.0 has now been released! You can download the new version on the release page at http://www.exodusemulator.com/index.php ... nt-release
I'm dedicating this release to my beautiful wife Judi, and my two boisterous little boys Justin and Aiden.

As promised, Exodus is now also open source. Check out the website at http://www.exodusemulator.com for instructions on how to obtain and compile the source, and information on how you can contribute code changes to the project.

Note that you won't see a massive improvement in Mega Drive game compatibility with this version, as the focus has been on other areas, like performance, user interface, and the plugin API. There are still a number of games I know of that will greet you with a black screen for example when you try and load. This is due to the fact that although Exodus aims for cycle-level accuracy, it's not actually there yet, and there's a number of games that use a kind of wait loop against flags on the VDP that technically requires at the very least sub-opcode level timing emulation to pass. No other emulators have sub-opcode level timing emulation for their CPU cores, but they use incorrect timing on the VDP as well in order to make the tests pass.

The biggest thing that needs to be done for Exodus at this stage in order to improve Mega Drive compatibility is write Z80 and M68000 cores that emulate individual bus cycles, rather than emulating at an "opcode" level. For the M68000 at least, nobody seems to have ever done this, and a lot of information needs to be gathered on the hardware in order to determine the correct timing and order for each bus access within instructions. Emulating it properly will also require a major change to the bus system, which I currently have in the works. I was originally planning to have this bus change in Exodus 2.0, but I didn't want to delay the release any further. The bus system redesign, along with cycle-exact M68000 and Z80 cores, will now be my primary focus of development for the next major release. After this is complete, Exodus will have CPU emulation which is truly cycle-exact.

Despite the lack of perfection with the CPU cores at this stage though, Exodus is already much more accurate than other emulators at Mega Drive support for graphics and sound. Exodus has the most advanced YM2612 core ever written, as it was written entirely from scratch during my detailed reverse engineering of the YM2612 back in 2008.

In terms of the VDP, Exodus is the only Mega Drive emulator that has a cycle-exact VDP core, which allows it to emulate many quirks and tricks of the real hardware that other emulators can't, like Direct Color DMA. Aside from rendering accuracy, the VDP core is also fundamentally more accurate in handling basic communication from the CPU. Try this test ROM for example, which tests VDP port access:
Image
http://nemesis.exodusemulator.com/MegaD ... esting.zip
(Detailed discussion: viewtopic.php?p=20975#20975)

This test ROM isn't perfect, a couple of the tests fail intermittently on the real hardware, but it's pretty stable, and it's very thorough and brutal. Even Exodus doesn't get a perfect score here yet, it gets 121 out of 122. Most other Mega Drive emulators will only score around 20 or so. I'm hoping with Exodus now open source, other Mega Drive emulators which are still being maintained can use Exodus as a reference, and improve their accuracy on these kind of tests too.


Anyway, I hope some other people can make use of this. It's been a very long road to get to this point. Exodus was around 200,000 lines of code at the last count, and most areas of the code have gone through numerous revisions to get to where they are now. I daren't even estimate the number of hours that have gone into this project. I hope you find it interesting and useful.

EDIT: I forgot to say, if you want to check out the debugging features, you'll be best off using one of the pre-made workspaces. Select "File -> Load Workspace" from the main menu and select "Mega Drive Debugger.xml". That'll give you a pretty good debug environment ready to go.

Posted: Thu Apr 30, 2015 8:02 am
by Shadow
Thank You Nemesis :)

I'm first!!

Image

Quick Test: Warsong 1 now doesn't work.

Error System Failed to load module from file C:\Programs\Exodus 2.0\Modules\AutoGenerated\MegaDriveROMLoader\Warsong (U) [!].bin.xml!
Error System Errors occurred while loading module from file C:\Programs\Exodus 2.0\Modules\AutoGenerated\MegaDriveROMLoader\Warsong (U) [!].bin.xml.
Error System Could not locate device with name SRAM for BusInterface.MapDevice!
Error System Could not locate device with name SRAM for BusInterface.MapDevice!
Error System CreateDevice failed for SRAM!

And same bug with Sonic 3, looks like, all games that has SRAM support, will crash, because SRAM not implemented yet, but tries to initialize at startup

Posted: Thu Apr 30, 2015 9:41 am
by mickagame
I m exploring the doc and the code and i m really impressed by your work.
My project would be to compil exodus as a dll core for retroarch.
Even if system is based on dll plugin u think nemesis would be possible to compil Exodus genesis émulation like a whole dll easily?

Posted: Thu Apr 30, 2015 9:44 am
by Black Zero
I too can confirm that games with save function doesn't work.
I think I've tried everything but neither Crusader of Centy (Soleil) or Sonic 3 works despite what settings I try.

2.0 seems to be huge step forward though and my Play Sega controller works great and so does the games without save function.

I really hope this is an easy fix because I've waited so long for this now.