Exodus 2.0 + Open Source Release

Official support forum for the Exodus Emulation Platform

Moderator: Nemesis

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

Post by King Of Chaos » Fri May 01, 2015 1:13 am

Nice! TMSS works great now. All games seem to be running at full speed but I notice the FPS maxes out at around 62 to 63 FPS, any reasoning for this on a 60Hz monitor?

But damn, DEcapAttack still brings my 4770K to its knees! :P
Last edited by King Of Chaos on Fri May 01, 2015 1:35 am, edited 1 time in total.

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

Post by Nemesis » Fri May 01, 2015 1:22 am

Eke wrote:One remark though, in that xml model file:

https://bitbucket.org/exodusemulator/ex ... 201600.xml

Where does these clocks values come from ?

Code: Select all

			<System.SetClockFrequency TargetClockName="MCLK" ClockType="Direct" Value="53634165" />
			<System.SetLineState SystemLineName="NTSC" Value="1" />
...
TargetClockName="MCLK" ClockType="Direct" Value="53203400" />
			<System.SetLineState SystemLineName="NTSC" Value="0" />
I think all the values I've seen being reported were always 53693175 for NTSC and 53203424 for PAL. Not that it would make much difference but I was curious about it.
Pretty sure they came from the printed values on top of some crystals mounted on physical systems I own. I didn't hook up a scope or anything like that to confirm though. I expect there's probably large variation between real systems anyway simply due to the lack of perfection in crystal oscillators.

You can actually change the clock rate in realtime in the debugger, so if you want to tweak it to see the result, give it a go! :)
Oerg866 wrote:Hey nemesis!

Your emulator still SUXX! ;)

...

Overdrive's emulation remains somewhat alright, although you did fix a few things, Exodus doesn't get it quite right yet. The screen above should not have the black interference on the right, the image cuts off a few pixels too early (horizontally I mean), and plainly "YOUR EMULATOR" still "SUXX" because it doesn't emulate that disabling display during horizontal blanking will interfere with sprite fetching.

The credits sequence exposes a few timing flaws (it is very precisely timed to wait the exact amount of time necessary to render the relevant text, any timing inaccuracies will break it)
I know, it sits there taunting me! :)

The irony here is, Exodus is failing those cases because the VDP core is so accurate. The problem is the M68000 doesn't have perfect timing yet. Every bus access attempt effectively occurs at the time the opcode began executing, rather than at the correct cycle offset from the beginning of the opcode execution. This has the effect of VDP access being sent to the VDP slightly earlier than it should, which is what's breaking things here. Any other emulator that displays this right only does so because it's using incorrect delayed timing for the VDP, which cancels out the advanced timing for the M68000 access. Try disabling the display through the tail end of a more complex instruction like MOVEM and see what happens on those emulators, it'll fail horribly.

The VDP core in Exodus is cycle-accurate, as I've painfully verified through many hours checking VDP behaviour with a logic analyzer. The VDP sprite fetching behaviour is also cycle accurate. When the M68000 core is also cycle-accurate, the Overdrive demo will run perfectly. Getting a cycle-accurate M68000 core is the next big goal for Exodus, but it's going to require gathering that information first, because no complete and accurate documentation on the M68000 bus access cycles for each opcode currently exists in the public domain.

I won't be doing anything to "patch" the VDP core to fudge the timing and make it work, it'll remain broken until the M68000 core has perfect timing. Until then, it serves as a great test case to verify the new M68000 core. :)
King Of Chaos wrote:Awesome work Nemesis! Noticed something though, I'm getting this in the error log when trying to load a module with TMSS enabled (without lockout);

.....
Thanks for letting me know, I've fixed it in Exodus 2.0.1.
PaHgoM wrote:Hello, Nemesis. Great job, I was waiting for release, but there is some problem: I can't configure controls. I use arrows near numpad, and when I press them in "Auto Mapping" mode, nothing happens
Thanks, also fixed in Exodus 2.0.1.
Black Zero wrote:Neither Rockman World or Mega Man The Wily Wars starts at all, it's just an big black empty screen staring at me and the controls doesn't get saved for some reason.

I open up Exodus and configure the control accordingly, I play some games and then I close and I have to configure it again the next time I start Exodus.

BTW I got my Sega Gensis bios dump that I used in Fusion, how do I use it here?
The black screen you're seeing I believe is because of a lack of cycle-accurate M68000 emulation. There's a few games that use a wait loop on the "F" flag in the VDP status register. Other emulators raise this flag a few cycles before VINT occurs, which is wrong. The real hardware asserts this flag directly with the VINT. Exodus currently processes bus accesses at the start of the opcode, not at the correct delay during the opcode, which means the "F" flag always reads as false. These games won't work until the M68000 core improves. That's my next major goal for emulation accuracy.

There were bugs with configuring controls, which are fixed in Exodus 2.0.1. You can configure controls through the "Settings -> Input Mapping" menu option. Note that you need to save the system in order to save changes to input mappings.

You can set the BIOS through "Settings -> Embedded ROM Selection". Note that you also need to save the system to save these changes.

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

Post by King Of Chaos » Fri May 01, 2015 1:32 am

Okay, posting these here as I find them...

X-Men (USA): The transition sound after the Sega logo to the main title sounds correct... however if you let the demo run a few times after which will loop back to the Sega logo and title screen again the sound doesn't sound like the first time. I might have to get my model 1 out of storage and test this one when I get some time.

X-Men 2 - Clone Wars (USA): The random character upon power on, hard reset and soft reset isn't supported (yet).

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

Post by Nemesis » Fri May 01, 2015 1:42 am

King Of Chaos wrote:Nice! TMSS works great now. All games seem to be running at full speed but I notice the FPS maxes out at around 62FPS, any reasoning for this on a 60Hz monitor?

But damn, DEcapAttack still brings my 4770K to its knees! :P
Glad to hear you're getting good performance on your machine, I spent quite a lot of time optimizing the cores and the system itself.

The FPS isn't based on your monitor, but the output framerate of the VDP core, which isn't a perfect 60FPS in the real world. The framerate won't report as strictly stable though, partially because any timing wait loop is subject to inaccuracy, and partially because I'm using a simple averaging calculation to determine the FPS which is probably inaccurate itself.

And wow, you're not kidding about DecapAttack! I took a look, and it's due to the sound driver crashing from a bug in my Z80 core on a reset. The Z80 gets stuck in a loop hammering the M68000 bus access window every second cycle, which is an expensive operation. I'll release a fix in the next version. For now, you can turn off the Z80 in the debugger and it flies.

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

Post by Nemesis » Fri May 01, 2015 2:15 am

You know, I only just noticed the new M68000 register list in the debugger goes D1-D8 and A1-A8 instead of D0-D7 and A0-A7. That's pretty embarrassing mistake to miss, almost want to do another release right now just for that!
X-Men 2 - Clone Wars (USA): The random character upon power on, hard reset and soft reset isn't supported (yet).
You know, I did actually add support for this, and I was banging my head against the wall as to why this wasn't working, and then when I did hardware tests, I found that on the systems I tested on at least, the character also wasn't random on the hardware either. Never diagnosed past that. It'd be worthwhile going back and testing on your system, and if it is random for you, I'll need to know the specs of the unit you're using (region and board/chip revisions).
Neither Rockman World or Mega Man The Wily Wars starts at all, it's just an big black empty screen staring at me and the controls doesn't get saved for some reason.
I had another look at this, and it actually looks like it's due to failed SRAM support. Megaman is doing some kind of strange read/write stress test on the SRAM, which is entering an infinite loop. On a quick look I can't see how this loop is ever supposed to pass. I'll have to compare with another emulator to see why they pass it. Fortunately I do own this cartridge, so I can test on the hardware too if I need to.
EDIT: Just noticed that MegaMan uses serial EEPROM rather than SRAM. Yeah, that's not supported in Exodus currently. Support for this game and others like it can easily be added by creating a device to emulate the EEPROM devices in question, and updating the Mega Drive ROM loader to recognize these games.

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

Post by King Of Chaos » Fri May 01, 2015 3:01 am

Nemesis wrote:And wow, you're not kidding about DecapAttack! I took a look, and it's due to the sound driver crashing from a bug in my Z80 core on a reset. The Z80 gets stuck in a loop hammering the M68000 bus access window every second cycle, which is an expensive operation. I'll release a fix in the next version. For now, you can turn off the Z80 in the debugger and it flies.
Nice! :D
Nemesis wrote:You know, I only just noticed the new M68000 register list in the debugger goes D1-D8 and A1-A8 instead of D0-D7 and A0-A7. That's pretty embarrassing mistake to miss, almost want to do another release right now just for that!
Go for it, hehe. :P
Nemesis wrote:You know, I did actually add support for this, and I was banging my head against the wall as to why this wasn't working, and then when I did hardware tests, I found that on the systems I tested on at least, the character also wasn't random on the hardware either. Never diagnosed past that. It'd be worthwhile going back and testing on your system, and if it is random for you, I'll need to know the specs of the unit you're using (region and board/chip revisions).
If I remember correctly, it's always been random for me. I remember back in the day constantly resetting to get Nightcrawler. Then I was using a US Model 2 Genesis - I don't know the board/chip revision off the top of my head. I'll try to get it out of storage this weekend along with the model 1 and test this though I'm fairly certain it'll be random there as well. All my Genesis models are US. Though I think the main difference is power on/hard reset vs soft reset in this case - all other emulators seem to have set characters for power on/hard reset and soft reset. Again, I'll retest this one.

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

Post by Oerg866 » Fri May 01, 2015 3:04 am

nemesis:

ah that makes sense :)

I'm really really amazed how far you've come and I'm sure the last hurdles will be mastered by you as perfectly as everything else ;)

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

Post by King Of Chaos » Fri May 01, 2015 3:08 am

Also noticed if you go over 100 FPS the value is cut off on the bottom right (I hate to see what happens if/when we can go over 1,000 FPS!);

Image

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

Post by mickagame » Fri May 01, 2015 5:50 am

Nemesis.
I've just build successfully Exodus but all files (exe, dll ...) are build in the root directory of the project instead of the build directory.

Black Zero
Interested
Posts: 13
Joined: Fri Apr 03, 2015 8:17 am

Post by Black Zero » Fri May 01, 2015 6:06 am

Damn I really wanted to give this an honest go but if Rockman Mega World and Mega Man the Wily Wars ain't working I have no other choice then to go back to Fusion a little while longer.

Thanks for 2.0.1 though but it seems like the controller settings doesn't get saved no matter what.
I can map the controller over and over but nothing gets saved and once you reset you have to map it again.

One other thing I noticed was that settings like the Show Status Bar under VDP System Settings doesn't get saved.

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

Post by tryphon » Fri May 01, 2015 7:39 am

Is it possible to set the Image Window resolution to normal (320 x ???), unfiltered ?

I really wonder which kind of machine you all own to get full framerate. I don't go beyon 12 fps. I admit my machine is quite weak (an HP netbook).

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

Post by Nemesis » Fri May 01, 2015 10:18 am

King Of Chaos wrote:Also noticed if you go over 100 FPS the value is cut off on the bottom right (I hate to see what happens if/when we can go over 1,000 FPS!);
Fixed, thanks!
mickagame wrote:Nemesis.
I've just build successfully Exodus but all files (exe, dll ...) are build in the root directory of the project instead of the build directory.
The Build directory is for build support files, like custom MSBuild files. Right now the build output goes to two places: Exodus.exe and system.exe go to the root, and all the plugins go to the "Assemblies" subdirectory.
Black Zero wrote:Damn I really wanted to give this an honest go but if Rockman Mega World and Mega Man the Wily Wars ain't working I have no other choice then to go back to Fusion a little while longer.
Compatibility isn't as high as other emulators out there right now. No real effort has been put into any of the special cartridge hardware like mappers. A lot more time has gone into the platform itself, crazy corner cases of behaviour, and debugging features. Once the M68000 in particular has a cycle-accurate core, I'll probably spend more time worrying about individual game hardware.
Thanks for 2.0.1 though but it seems like the controller settings doesn't get saved no matter what.
I can map the controller over and over but nothing gets saved and once you reset you have to map it again.

One other thing I noticed was that settings like the Show Status Bar under VDP System Settings doesn't get saved.
This isn't as obvious as it probably should be, but settings like that are associated with the current system. If you want to save those settings, you need to save the system. Select "File -> Save System" to save the modified system to a file. If you create a new system configuration and want to load that by default, go to "Settings -> Platform Settings" and change the startup system.
tryphon wrote:Is it possible to set the Image Window resolution to normal (320 x ???), unfiltered ?
If you want an unfiltered output, go to "Settings -> VDP -> System Settings", and change "Enable Line Smoothing" to off.

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

Post by tryphon » Fri May 01, 2015 11:14 am

Thanks, I missed this checkbox. And id it possible to force the resolution window to 320x224 (like in version 1) ? Or is forced to fit the width of the panel ?

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

Post by Stef » Fri May 01, 2015 11:20 am

Awesome release, thanks Nemesis !
I noticed the simple 68000 <--> Z80 communication can make the emulator to slowdown a lot. I just tested my sound driver test rom which almost does nothing with the display and while some drivers are running at 60 FPS on my i5 @ 1.8 Ghz others hardly raise 30 FPS. I wanted to use Exodus to test the problem of DMA bus retention when Z80 access the main 68000 bus, currently i need to test against real hardware for that... I guess Exodus handle that case correctly but still currently even if Exodus is faster than before it remains a bit slow for my system and unfortunately it is very hard to judge about the sample quality in this case :p I guess i will have to upgrade my notebook at some point (among the dying battery, that may another good reason to do it) :D
Just one note Nemesis, i don't know if you emulated this but i observed this behavior while developing the XGM driver: if you access the VDP ports from the Z80 while a DMA is occurring then the Z80 is stuck as it was accessing the 68000 BUS, i though the Z80 was directly connected to the VDP so i was a bit surprised... I wanted to use the VCounter from Z80 (to detect possible period of DMA) but meet that problem then, that is also the case then when you access the PSG from Z80. I had hard time to figure that while i was testing the XGM driver on real hardware (very difficult to sort the DMA contention issue when Z80 is playing music *and* the samples because of that reason).
Last edited by Stef on Sat May 02, 2015 1:07 pm, edited 1 time in total.

Black Zero
Interested
Posts: 13
Joined: Fri Apr 03, 2015 8:17 am

Post by Black Zero » Fri May 01, 2015 12:57 pm

Nemesis wrote: I had another look at this, and it actually looks like it's due to failed SRAM support. Megaman is doing some kind of strange read/write stress test on the SRAM, which is entering an infinite loop. On a quick look I can't see how this loop is ever supposed to pass. I'll have to compare with another emulator to see why they pass it. Fortunately I do own this cartridge, so I can test on the hardware too if I need to.
EDIT: Just noticed that MegaMan uses serial EEPROM rather than SRAM. Yeah, that's not supported in Exodus currently. Support for this game and others like it can easily be added by creating a device to emulate the EEPROM devices in question, and updating the Mega Drive ROM loader to recognize these games.
It's an easy fix? Well that sounds really promising!
Maybe in the near future Rockman/Mega Man will be up running in no time.
Nemesis wrote: Compatibility isn't as high as other emulators out there right now. No real effort has been put into any of the special cartridge hardware like mappers. A lot more time has gone into the platform itself, crazy corner cases of behaviour, and debugging features. Once the M68000 in particular has a cycle-accurate core, I'll probably spend more time worrying about individual game hardware.
Either way you're doing a great job. I really hoped to switch Fusion with this one but I can definitely wait till things get better in Exodus, it's an emulator well worth waiting for because it's nice and clean.
Nemesis wrote: This isn't as obvious as it probably should be, but settings like that are associated with the current system. If you want to save those settings, you need to save the system. Select "File -> Save System" to save the modified system to a file. If you create a new system configuration and want to load that by default, go to "Settings -> Platform Settings" and change the startup system.
It's that simple? Well I'll be sure to remember that till next time, thanks!

Post Reply