Bug reports?

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

Post by Nemesis » Wed May 01, 2013 11:35 pm

I'll investigate all the reports you guys have made. I'll respond to each of you once I've had a chance to do some testing.
mickagame wrote:
GManiac wrote:Input Settings are not saved when emualtor is closed. When I try to set input with "Start Auto Mapping", press all buttons and then close window, the only button which is set is "Up". After second try all buttons are set.
I have the same thing for the input mapping.
This one is a little obscure and I need to write some documentation describing it. Settings like input mappings aren't "global", they're settings which are associated with the currently loaded set of modules. When you unload those modules, the current state of those settings are lost. The only way to retain these settings is to save a "system", which is the current set of loaded modules and their associated settings. There is a system provided already in the form of the "Sega Mega Drive.xml" file under the Modules directory. If you want to save your custom system config, including things like input mappings, just go to File->Save System, and overwrite this file. That system is set to be loaded by default when Exodus starts, so it will load your new config when you start up again. You could also save your custom system config to a separate file, and change the system which is being loaded on startup under "Settings->Platform Settings".

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

Post by Nemesis » Thu May 02, 2013 1:51 am

thedoug wrote:I found a bug. In the Cram Memory Editor window, if I right click the window and select "Save to File", the emulator shows a Open window, not a Save window.
Darn, I changed the way the open/save dialogs are managed just a couple of weeks before the release. Must have linked that one to the wrong dialog. I'll fix that in the next release.
MetalliC wrote:"Mr. Nutz - Hoppin' Mad (Proto)" aka "Mr.Nutz 2" hangs after Sega logo, both original version and patched for Everdrive.
GManiac wrote:Mega lo Mania (Tyrants) -> freezes at the very beginning.
Thanks, this looks like a VDP issue. There's a busy wait on the F flag in the VDP status register, waiting for it to read as asserted outside the VInt handler. Ultimately, this is failing because I don't have microcode-level emulation of the M68000 yet. This busy wait needs the M68000 to have a few cycles executed within the opcode execution before it reads from the VDP control port, so that a pending interrupt can be seen before it is handled. I'll have to do some timing measurements on the hardware and simulate the timing latency as best as I can.
GManiac wrote:After Burner II -> has constant hiss (PSG?), and PSG doesn't sound in the game.
Actually, based on my hardware tests, every other emulator that exists gets the PSG sound wrong in this game. After Burner II uses a tone register setting of 0, which contrary to what is written in some published documentation, does NOT hold the output at a constant +1, at least not on the Mega Drive. You actually get a square wave which alternates at a very high frequency. I'll do hardware tests again to compare the sound output, but if you have the ability to do so yourself, you might want to load this game onto a flashcart and see how it sounds on the real hardware.
thedoug wrote:Phantasy Star 4 also doesn't load.

Seems that the problem is the Save Ram Mapping. If a game has Rom data in the region used by the Save Ram, the game doesn't load.

This is the case of PS4, Beyond Oasis, etc.

I just did the test. The Shining Force maps the Save Ram at 0x200000, and if I expand the game to, say, 3M, the game doesn't load anymore, even if I adjust the size and checksum in the header.

In the real console the shining force pcb reads the Save Ram if the the pin A20 is set, because the original Rom has only 1,5M, so the cartridge uses the pin A20 in the multiplexer to know that you are acessing the Save Ram.
But Phantasy Star 4 use other pins (some unusual pins, I don't know), to know that the game is acessing the Save Ram, so the game can have data in the Save Ram region.
Yes, unfortunately, nothing with bankswitching hardware is currently supported. It was on my to-do list, but I decided to go ahead with the initial release without it completed yet. I forgot to detect SRAM overlap and disable SRAM in the ROM loader though when trying to load a game with bankswitching for SRAM access. I'll add this protection in the next release, so you can at least load these games in.

panzeroceania
Interested
Posts: 27
Joined: Sat Sep 12, 2009 4:02 am
Location: Salem, OR

Post by panzeroceania » Thu May 02, 2013 2:29 am

Nemesis,

you've got a great approach to emulating chips inside of a system and the way in which they interact with an XML file. I'm curious how you handle game cartridge layouts then.

Of course you want to use standard rom formats but how do you interpret what kind of pin layout a game had, or how would you handle a system that has games with coprocessor chips in them. Are you interested in emulating game cartridge layouts in the same way you do the console?

If this is something that is already evident in debugger features, please forgive my ignorance.

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

Post by Shadow » Thu May 02, 2013 2:35 am

I found similar bug with color dots (as in Retrocopy 0.666B), they in water, but must be on left side of vertical color border.

Image

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

Post by King Of Chaos » Thu May 02, 2013 3:36 am

The only thing I've noticed thus far is the random SEGA logo for Eternal Champions on soft reset it's always the same character when it *should* be random.

Same with X-Men 2 (using soft reset as the example here too) on soft reset, it's always the same character (Gambit for North America, Psylocke for Europe) when, as you know, it *should* be random.

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

Post by Nemesis » Thu May 02, 2013 3:36 am

panzeroceania wrote:Nemesis,

you've got a great approach to emulating chips inside of a system and the way in which they interact with an XML file. I'm curious how you handle game cartridge layouts then.

Of course you want to use standard rom formats but how do you interpret what kind of pin layout a game had, or how would you handle a system that has games with coprocessor chips in them. Are you interested in emulating game cartridge layouts in the same way you do the console?

If this is something that is already evident in debugger features, please forgive my ignorance.
I'm using a bit of slight of hand here :). Game cartridges must be modules. You need a module to define what hardware is present inside a game cartridge, and how it interfaces with the rest of the system. Of course, this sucks for end users who are used to just working directly with ROM files, and don't have xml files to define each cartridge, what additional hardware is present, and how the ROM file is used. That's where system extensions come in.

In Exodus, you currently see an "Open Mega Drive ROM" option. This is defined by a system extension. What this extension does is open the ROM file you specify, and inspect the ROM header to determine how this ROM should be loaded. This is where all the game-specific workarounds live, such as mapping in extra hardware that specific games are known to have, detecting the compatible system region, etc. Using the information gathered about the target ROM, the extension then generates a module definition for that ROM on the fly, which is automatically spat out under an "AutoGenerated" folder in the modules directory. This module is then loaded for you, and as far as the user is concerned, they just directly loaded the ROM into the emulator, but in reality, it was the auto-generated module file that was loaded.

You could build an xml definition for a game manually, or use a previously autogenerated module definition, and load that using the "Load System/Module" option. If you were trying to emulate or develop a new or previously unknown game that had additional hardware on the cartridge for example, you would have to work with a module definition for that cartridge. The ROM loader extension is just a convenience for the 99% of the time a user will just want to directly load a game from a ROM file.

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

Post by Nemesis » Thu May 02, 2013 4:26 am

King Of Chaos wrote:The only thing I've noticed thus far is the random SEGA logo for Eternal Champions on soft reset it's always the same character when it *should* be random.

Same with X-Men 2 (using soft reset as the example here too) on soft reset, it's always the same character (Gambit for North America, Psylocke for Europe) when, as you know, it *should* be random.
Ahh, I know why that's happening. The soft reset only triggers when the emulation reaches the end of the current "timeslice", which is usually in sync with the vertical interrupt timing. Shortly before release the soft reset was actually something you had to turn on, then turn off. I made a change so that it now gets held for a fixed period of time then turns itself off. Unfortunately, combined with the fixed position at which it usually triggers, this means you now end up with consistent reset timing.

I'll add a new feature that'll allow the hold time for the soft reset option to be randomized. That'll give you the behaviour you want.

HardWareMan
Very interested
Posts: 745
Joined: Sat Dec 15, 2007 7:49 am
Location: Kazakhstan, Pavlodar

Post by HardWareMan » Thu May 02, 2013 6:29 am

Nemesis wrote:
GManiac wrote:After Burner II -> has constant hiss (PSG?), and PSG doesn't sound in the game.
Actually, based on my hardware tests, every other emulator that exists gets the PSG sound wrong in this game. After Burner II uses a tone register setting of 0, which contrary to what is written in some published documentation, does NOT hold the output at a constant +1, at least not on the Mega Drive. You actually get a square wave which alternates at a very high frequency. I'll do hardware tests again to compare the sound output, but if you have the ability to do so yourself, you might want to load this game onto a flashcart and see how it sounds on the real hardware.
Correct. But then the game use volume settings of this very high frequency as 4bit DAC. So, in real hardware we have very high frequency that modulated by amplitude. Next, in filter high freq are cut off and stay only modulating low freq. In your emulator I see that amplitude register are changed, but no sound at all from PSG.

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

Post by Eke » Thu May 02, 2013 6:55 am

yes, holding the output when frequency register is set to zero (or below a fixed value) is just a cheap way to emulate high pass filtering when amplitude is adjusted.

there are actually many MS games that use that "feature" to simulate DAC for voice effects and sound wrong or does not sound at all if you just toggle the output at highest frequency.

filtering is very likely different on both systems but i verified that those voices still worked on MD in MS compatibilty mode

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

Post by Shadow » Thu May 02, 2013 11:17 am

Marvel Land - freezes on pause.
Shadow of the Beast - Player immortal. (Collision bug)

GManiac
Very interested
Posts: 92
Joined: Thu Jan 29, 2009 2:05 am
Location: Russia

Post by GManiac » Thu May 02, 2013 11:51 am

About After Burner II. Yes, I know that PSG set to 0 is equal to PSG set to 1, so we have squarewave on very high frequency (nearly 112 kHz). We can prove it using Tone 4 linked to Tone 3 frequency set to 0 with "periodical noise" on Tone 4 - we will hear sound of needed frequency.
I think explanation of After Burner issue is next: sound is emulated correctly, but your interpolation spoils it. That's why we hear constant hiss when the game is loaded (it's PSG = 0 which gives us 112 kHz) but we almost don't hear PSG drums.

Anyhow, tunes in After Burner won't sound correctly until you add "ladder effect" to YM2612 analogue output in your emulator.
http://speedyshare.com/Nt74r/Super-Stripe-equalized.ogg

Long time ago I added ladder to my unfinished YM2612 emulator and got something close to real sound, especially for this tune.

It also adds volumeness to all tunes in other games, for example, listen to Golden Axe III
http://www.speedyshare.com/nkfwB/gaxe-3 ... -44100.ogg
Heh, I cannot listen to tunes in Golden Axe III in Exodus because of incorrect gamepad emulation.

PiCiJi
Newbie
Posts: 6
Joined: Thu May 02, 2013 5:17 pm

Post by PiCiJi » Thu May 02, 2013 5:43 pm

Nemesis wrote: Ultimately, this is failing because I don't have microcode-level emulation of the M68000 yet.
maybe that could interest you

https://sourceforge.net/projects/portable68000/

I'am interested in each timing related information about the 68000, especially in correct ipl latch timing

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

Post by Shadow » Thu May 02, 2013 9:30 pm

Wings of Wor - during earthquake, on left side of screen, i see weird vertical garbage.

Image

Trouble Shooter - D-Pad control doesn't work.

Bugs Bunny in Double Trouble - freezes on title screen.

Hint for testers: if you get black screen on start, make sure your roms has correct size.

256KB = 262 144 bytes
512KB = 524 288 bytes
1024KB = 1 048 576 bytes
2048KB = 2 097 152 bytes
etc.

Firebrandx
Newbie
Posts: 7
Joined: Fri May 03, 2013 7:54 pm

Post by Firebrandx » Fri May 03, 2013 7:58 pm

I can't get anything to show up in the image window:

http://www.firebrandx.com/downloads/exodus.png

I've installed everything required and have updated my graphic drivers. My system:

Q6600 quad CPU
8 GB RAM
ATI Radeon 5770 HD

Vista 64-bit
Last edited by Firebrandx on Sat May 04, 2013 4:15 am, edited 1 time in total.

panzeroceania
Interested
Posts: 27
Joined: Sat Sep 12, 2009 4:02 am
Location: Salem, OR

Post by panzeroceania » Fri May 03, 2013 8:25 pm

Firebrandx, what games have you tried? and where did you get the roms?

do you have checksums?

Post Reply