stella-emu / stella

A multi-platform Atari 2600 Emulator
https://stella-emu.github.io
GNU General Public License v2.0
624 stars 111 forks source link

Screen bouncing on DPC+ ROM #429

Closed sa666666 closed 5 years ago

sa666666 commented 5 years ago

First reported in http://atariage.com/forums/topic/290442-weird-stella-issue-with-only-one-rom, using the attached ROM: epicadv28.zip

Confirmed that this ROM is working on a real system (Harmony), so there must be something up with Stella

sa666666 commented 5 years ago

This seems to be related to https://github.com/stella-emu/stella/issues/139. We will need to revisit this at some point. Does anyone know the last time this ROM worked in Stella??

sa666666 commented 5 years ago

In version 4 at least, this was still broken. So we'd have to look at Stella 3. However, I can no longer compile or run that version on my system. Will have to test it in Windows.

sa666666 commented 5 years ago

The following code in CartDPCPlus is related to the issue.

Current:

//DFxFRACLOW - fractional data pointer low byte
case 0x00:
  myFractionalCounters[index] = (myFractionalCounters[index] & 0x0F00FF) | (uInt16(value) << 8);

Fix for this ROM:

//DFxFRACLOW - fractional data pointer low byte
case 0x00:
  myFractionalCounters[index] = (myFractionalCounters[index] & 0x0F0000) | (uInt16(value) << 8);

We'd need to figure out how to enable it only for older ROMs.

thrust26 commented 5 years ago

Probably we need a property. Or are you looking for some kind of auto detection?

sa666666 commented 5 years ago

I'd rather autodetect of some kind. Don't want to add more properties, and don't want to have to maintain them. Maybe we need to look at the ARM code or something, and determine where an older vs. newer of the driver is being used.

thrust26 commented 5 years ago

The signature is the same, I suppose?

sa666666 commented 5 years ago

And as mentioned in https://github.com/stella-emu/stella/issues/139, I'd rather wrap this up together with all the changes from the old version of the driver, so we can get all older ROMs working again. To be clear, I think the fix I mentioned above only fixes this ROM, not the others from the older issue.

thrust26 commented 5 years ago

Do we have a list of ROMs using the old and the new version?

sa666666 commented 5 years ago

There are some in https://github.com/stella-emu/stella/issues/139. I would be happy if we could get ROMs released on AtariAge working. It's not necessary to get every old demo working, since so much in Stella would need to change. But if we can get a list of all released ROMs, we can just hardcode the md5sum into CartDPCPlus and be done with it. No need to go further, I think.

thrust26 commented 5 years ago

If they use the same driver, there must be unique pattern to identify them.

sa666666 commented 5 years ago

@SpiceWare suggested that we do an md5sum on the DPC+ driver, since that seems to be the only game that needs this disabled. About to commit that IAM.