Finally!

Official support forum for the Exodus Emulation Platform

Moderator: Nemesis

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

Finally!

Post by Nemesis » Fri Sep 19, 2014 2:37 am

I just checked in a major commit for Exodus that I've been working on for Exodus for 11 months. 11 long, painful months. It was the job from hell, really. You ever have one of those tasks that you think is going to take you a certain amount of time, but it seems to just continually expand out to a bigger and bigger task, and each step of the way, it feels like you're "almost done"? It feels so nice to be able to work on something new now. That job was the biggest blocker to the next release, so with it cleared, the next version of Exodus really is a huge step closer towards being a reality. There's a bit more work to go still, but everything seems easy after that job.

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

Post by mickagame » Fri Sep 19, 2014 4:59 am

Great !!!!!!!!!!!!!!!!!!!

tryphon
Very interested
Posts: 316
Joined: Sat Aug 17, 2013 9:38 pm
Location: France

Post by tryphon » Fri Sep 19, 2014 5:28 am

YAY !!!

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

Post by Stef » Fri Sep 19, 2014 3:55 pm

Well done Nemesis ! I understand what you meant by "long, painful months", when you start those major modifications and realize the more you are doing and the more will to be done X'D
Last edited by Stef on Sat Sep 20, 2014 7:05 am, edited 1 time in total.

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

Post by mickagame » Fri Sep 19, 2014 7:31 pm

What consisted this internal change?
Will the next release be improved in term of speed?

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

Post by Nemesis » Sun Sep 21, 2014 1:25 am

What consisted this internal change?
Complete restructure of how debug windows are implemented and managed, expansion of the abilities of extension plugins, and better separation between the emulation platform itself and the GUI. This model gives better separation between components and make everything more extensible.
Will the next release be improved in term of speed?
Yes, in a major way! I've heavily profiled and aggressively optimized the major bottlenecks in the emulator, as well as restructuring some critical areas of the bus system to reduce overhead. I've also made some critical improvements to the threading model which give a significant performance boost, the effects of which are magnified on dual-core systems. Here are some comparisons I just took between the 1.0 release version of Exodus and the current Exodus 1.1 development build:

Code: Select all

-----------------------------------------------------------------
                     |Exodus 1.0|Exodus 1.0|Exodus 1.1|Exodus 1.1
                     |   FPS    |  Memory  |   FPS    |  Memory  
-----------------------------------------------------------------
Core 2 E7400         |
(2.8GHz dual core)   |   28FPS  |   869MB  |   50FPS  |  510MB
Oct 2008             |
-----------------------------------------------------------------
Core i7 920          |
(2.67 GHz quad core) |   61FPS  |   894MB  |   85FPS  |  538MB
Nov 2008             |
-----------------------------------------------------------------
Core i7 3840QM       |
(2.8 GHz quad core)  |   78FPS  |   906MB  |  100FPS  |  567MB
Sep 2012             |
-----------------------------------------------------------------
That's an average 40% memory usage decrease, with a 90% performance increase for the Core 2 E7400, a 40% performance increase for the i7 920, and a 30% performance increase for the i7 3840QM. These ratings were taken on Sonic 2 using the first level for comparison. Note that this makes what is a 6 year old processor be able to run Sonic 2 (one of the more demanding Mega Drive games) at 85FPS. It might also be possible for a dual-core system to achieve a full framerate too. The E7400 gets 83% of full framerate. The Core 2 Duo E8600 might be up to the task. At the very least, it's now usable on a dual-core system for development and debugging.

These numbers may change before release. I've got another critical change to the bus system that could introduce more overhead, but it's important in order to be able to make it flexible enough to apply to all systems.

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

Post by Stef » Sun Sep 21, 2014 9:33 am

Wow that is greats news ! My laptop will finally be able to make Exodus run at full speed, very important when i was testing about sound output quality ;)
I'm impatient to see the next realease =)

King Of Chaos
Very interested
Posts: 273
Joined: Fri Feb 29, 2008 8:12 pm
Location: United States

Post by King Of Chaos » Tue Sep 23, 2014 6:13 pm

Awesome, thanks for the update Nemesis. I can't wait to benchmark my 4790K with this! :D

flamewing
Very interested
Posts: 56
Joined: Tue Sep 23, 2014 2:39 pm
Location: France

Post by flamewing » Tue Sep 23, 2014 6:31 pm

Out of curiosity, are these numbers for the microcode-accurate 68k core or for the old core?

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

Post by Nemesis » Wed Sep 24, 2014 8:11 pm

With the significant delays I had while working on the 1.1 release, I decided to suspend development of the new M68000 core and focus on getting Exodus open source first. I've got the new M68000 core partially written, but it's in early stages and not functioning yet, so these numbers are with the original M68000 core. It's hard to estimate how the new M68000 core will affect performance at this stage.

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

Post by Nemesis » Fri Sep 26, 2014 12:38 am

I may as well make this a rolling blog of my development work for Exodus 1.1, just so you guys know progress is happening. I've just completed migration of the codebase from Visual Studio 2005 to Visual Studio 2013. This was a critical change in order to get access to newer features, in particular (partial) C++11 support, which I've been wanting to get in there for awhile. Using a newer version of Visual Studio will also be very useful when I make the open-source release, as the Visual Studio 2013 Express version can be used to compile and develop for Exodus for free.

As part of this code migration, apart from the project file changes, I've replaced the Boost.Threads library with the new C++11 STL threading features, which has removed any dependencies on boost, so it's no longer required for compilation. I've switched to using C++11 scoped enumerations throughout the codebase. Other C++11 code changes, such as the use of lambda expressions where appropriate, will be done when I wander into those areas of the code later on.

I'm showing a further 1.5% performance increase since the switch, which is better than when I tested Visual Studio 2010 a few years back, where I got a noticeable performance decrease.

What I'm working on now is a proper build process for my remaining third party library dependencies, so that it's easy to pull and build the entire codebase. Building the third party library components is very manual and difficult right now.

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

Post by Nemesis » Mon Sep 29, 2014 7:16 am

Just finished a proper build system for third party libraries. I'm starting work now on a major revision of the bus system. This is probably the last blocker before release.

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

Post by mickagame » Mon Sep 29, 2014 11:25 am

Great news !!!!!!!!!!!!!

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

Post by Oerg866 » Tue Oct 07, 2014 4:11 pm

Now taking bets on how many FPS this binary gets on an IBM supercomputer:

http://trapalhadas.no.sapo.pt/BITMAP336.BIN

:P

(PS: Exodus 1.0.0 does 11FPS on my i7-3820 with that ROM)

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

Post by mickagame » Tue Oct 07, 2014 6:46 pm

U think it would be possible to have full framerate on an intel nuc like this :

http://www.amazon.com/D34010WYKH2-Micro ... B00HXR3YFQ

I mean i see very good this little box under my tv playing all genesis games ;-)

Post Reply