C64: Actually proper border checking.
This commit is contained in:
parent
e4a3c2f410
commit
fba98fef2c
|
@ -9,8 +9,8 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
private const int BorderLeft40 = 0x018;
|
private const int BorderLeft40 = 0x018;
|
||||||
private const int BorderRight38 = 0x14F;
|
private const int BorderRight38 = 0x14F;
|
||||||
private const int BorderRight40 = 0x158;
|
private const int BorderRight40 = 0x158;
|
||||||
private const int BorderTop25 = 0x033 - 1;
|
private const int BorderTop25 = 0x033;
|
||||||
private const int BorderTop24 = 0x037 - 1;
|
private const int BorderTop24 = 0x037;
|
||||||
private const int BorderBottom25 = 0x0FB;
|
private const int BorderBottom25 = 0x0FB;
|
||||||
private const int BorderBottom24 = 0x0F7;
|
private const int BorderBottom24 = 0x0F7;
|
||||||
private const int BadLineEnableRaster = 0x030;
|
private const int BadLineEnableRaster = 0x030;
|
||||||
|
|
|
@ -19,6 +19,8 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
http://www.classiccmp.org/cini/pdf/Commodore/ds_6567.pdf
|
http://www.classiccmp.org/cini/pdf/Commodore/ds_6567.pdf
|
||||||
- Michael Huth for die shots of the 6569R3 chip (to get ideas how to implement)
|
- Michael Huth for die shots of the 6569R3 chip (to get ideas how to implement)
|
||||||
http://mail.lipsia.de/~enigma/neu/6581.html
|
http://mail.lipsia.de/~enigma/neu/6581.html
|
||||||
|
- US Patent US4561659, inventors: James W. Redfield; Albert J. Charpentier
|
||||||
|
https://patents.google.com/patent/US4561659
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public Func<int, int> ReadColorRam;
|
public Func<int, int> ReadColorRam;
|
||||||
|
@ -194,20 +196,6 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
// advance cycle and optionally raster line
|
// advance cycle and optionally raster line
|
||||||
_cycle++;
|
_cycle++;
|
||||||
|
|
||||||
if (_cycle == _totalCycles)
|
|
||||||
{
|
|
||||||
// border check
|
|
||||||
if (_rasterLine == _borderB)
|
|
||||||
{
|
|
||||||
_borderOnVertical = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_rasterLine == _borderT && _displayEnable)
|
|
||||||
{
|
|
||||||
_borderOnVertical = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_cycle > _totalCycles)
|
if (_cycle > _totalCycles)
|
||||||
{
|
{
|
||||||
// vblank check
|
// vblank check
|
||||||
|
@ -276,6 +264,15 @@ namespace BizHawk.Emulation.Cores.Computers.Commodore64.MOS
|
||||||
// phi2
|
// phi2
|
||||||
_dataCPrev >>= 12;
|
_dataCPrev >>= 12;
|
||||||
|
|
||||||
|
// border check
|
||||||
|
if (_cycle == _totalCycles)
|
||||||
|
{
|
||||||
|
if (_rasterLine == _borderB)
|
||||||
|
_borderOnVertical = true;
|
||||||
|
else if (_rasterLine == _borderT - 1 && _displayEnable)
|
||||||
|
_borderOnVertical = false;
|
||||||
|
}
|
||||||
|
|
||||||
// display enable compare
|
// display enable compare
|
||||||
if (_rasterLine == BadLineEnableRaster)
|
if (_rasterLine == BadLineEnableRaster)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue