mirror of https://github.com/stella-emu/stella.git
More fixes for DPC+ jitter issues, thanks to Spiceware.
This commit is contained in:
parent
bfb08cf203
commit
9ff00c3631
|
@ -181,6 +181,10 @@
|
||||||
* Fixed bug in DPC+ scheme; 'fast fetch mode' was enabled at startup,
|
* Fixed bug in DPC+ scheme; 'fast fetch mode' was enabled at startup,
|
||||||
when it should be disabled by default.
|
when it should be disabled by default.
|
||||||
|
|
||||||
|
* Some more work on DPC+ playfield 'jitter' effect for certain older DPC+
|
||||||
|
driver versions; more ROMs are now detected properly. Special thanks
|
||||||
|
to SpiceWare for his research in this area.
|
||||||
|
|
||||||
* Added proper Retron77 port.
|
* Added proper Retron77 port.
|
||||||
|
|
||||||
* Added proper libretro port, and fixed display for OpenGLES renderers.
|
* Added proper libretro port, and fixed display for OpenGLES renderers.
|
||||||
|
|
|
@ -35,7 +35,8 @@ CartridgeDPCPlusWidget::CartridgeDPCPlusWidget(
|
||||||
<< "DPC registers accessible @ $F000 - $F07F\n"
|
<< "DPC registers accessible @ $F000 - $F07F\n"
|
||||||
<< " $F000 - $F03F (R), $F040 - $F07F (W)\n"
|
<< " $F000 - $F03F (R), $F040 - $F07F (W)\n"
|
||||||
<< "Banks accessible at hotspots $FFF6 to $FFFB\n"
|
<< "Banks accessible at hotspots $FFF6 to $FFFB\n"
|
||||||
<< "Startup bank = " << cart.startBank() << "\n";
|
<< "Startup bank = " << cart.startBank() << "\n"
|
||||||
|
<< "Ver = " << cart.myDriverMD5;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
// Eventually, we should query this from the debugger/disassembler
|
// Eventually, we should query this from the debugger/disassembler
|
||||||
|
|
|
@ -57,9 +57,20 @@ CartridgeDPCPlus::CartridgeDPCPlus(const ByteBuffer& image, size_t size,
|
||||||
Thumbulator::ConfigureFor::DPCplus,
|
Thumbulator::ConfigureFor::DPCplus,
|
||||||
this);
|
this);
|
||||||
|
|
||||||
// Currently only one known DPC+ ARM driver exhibits a problem
|
// Currently 4 DPC+ driver versions have been identified:
|
||||||
// with the default mask to use for DFxFRACLOW
|
// 17884ec14f9b1d06fe8d617a1fbdcf47 Jitter Encore Compatible
|
||||||
if(MD5::hash(image, 3_KB) == "8dd73b44fd11c488326ce507cbeb19d1")
|
// 5f80b5a5adbe483addc3f6e6f1b472f8 Stable Encore Compatible
|
||||||
|
// 8dd73b44fd11c488326ce507cbeb19d1 Stable NOT Encore Compatible
|
||||||
|
// b328dbdf787400c0f0e2b88b425872a5 Jitter Encore Compatible
|
||||||
|
//
|
||||||
|
// Jitter/Stable refers to the appearance of the playfield in bB games if
|
||||||
|
// the DFxFRACINC registers are not updated before every drawscreen.
|
||||||
|
//
|
||||||
|
// The default mask for DFxFRACLOW implements the Jitter behavior. This
|
||||||
|
// changes the mask to implement the Stable behavior.
|
||||||
|
myDriverMD5 = MD5::hash(image, 3_KB);
|
||||||
|
if(myDriverMD5 == "5f80b5a5adbe483addc3f6e6f1b472f8" ||
|
||||||
|
myDriverMD5 == "8dd73b44fd11c488326ce507cbeb19d1" )
|
||||||
myFractionalLowMask = 0x0F0000;
|
myFractionalLowMask = 0x0F0000;
|
||||||
|
|
||||||
setInitialState();
|
setInitialState();
|
||||||
|
|
|
@ -272,6 +272,10 @@ class CartridgeDPCPlus : public Cartridge
|
||||||
// Indicates the offset into the ROM image (aligns to current bank)
|
// Indicates the offset into the ROM image (aligns to current bank)
|
||||||
uInt16 myBankOffset{0};
|
uInt16 myBankOffset{0};
|
||||||
|
|
||||||
|
// MD5 value of the 3K DPC+ driver. Used to determine which mask to use,
|
||||||
|
// and shown in the Cartridge tab of the debugger
|
||||||
|
string myDriverMD5;
|
||||||
|
|
||||||
// Older DPC+ driver code had different behaviour wrt the mask used
|
// Older DPC+ driver code had different behaviour wrt the mask used
|
||||||
// to retrieve 'DFxFRACLOW' (fractional data pointer low byte)
|
// to retrieve 'DFxFRACLOW' (fractional data pointer low byte)
|
||||||
// ROMs built with an old DPC+ driver and using the newer mask can
|
// ROMs built with an old DPC+ driver and using the newer mask can
|
||||||
|
|
Loading…
Reference in New Issue