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.