parent
55feae8bf6
commit
bc17e6519c
|
@ -397,25 +397,34 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
}
|
}
|
||||||
byte read_2004()
|
byte read_2004()
|
||||||
{
|
{
|
||||||
if (ppur.status.sl < 241)
|
// behaviour depends on whether things are being rendered or not
|
||||||
|
if (reg_2001.show_bg || reg_2001.show_obj)
|
||||||
{
|
{
|
||||||
if (ppur.status.cycle < 64)
|
if (ppur.status.sl < 241)
|
||||||
{
|
{
|
||||||
return 0xFF; // during this time all reads return FF
|
if (ppur.status.cycle < 64)
|
||||||
}
|
{
|
||||||
else if (ppur.status.cycle < 256)
|
return 0xFF; // during this time all reads return FF
|
||||||
{
|
}
|
||||||
return read_value;
|
else if (ppur.status.cycle < 256)
|
||||||
}
|
{
|
||||||
else if (ppur.status.cycle < 320)
|
return read_value;
|
||||||
{
|
}
|
||||||
return read_value;
|
else if (ppur.status.cycle < 320)
|
||||||
|
{
|
||||||
|
return read_value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return soam[0];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return soam[0];
|
return OAM[reg_2003];
|
||||||
}
|
}
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
return OAM[reg_2003];
|
return OAM[reg_2003];
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,13 +136,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||||
ppuphase = PPUPHASE.VBL;
|
ppuphase = PPUPHASE.VBL;
|
||||||
ppur.status.sl = 241;
|
ppur.status.sl = 241;
|
||||||
|
|
||||||
//Not sure if this is correct. According to Matt Conte and my own tests, it is. Timing is probably off, though.
|
//Not sure if this is correct. According to Matt Conte and my own tests, it is. Timing is probably off, though.
|
||||||
//NOTE: Not having this here breaks a Super Donkey Kong game.
|
//NOTE: Not having this here breaks a Super Donkey Kong game.
|
||||||
reg_2003 = 0;
|
if (reg_2001.show_obj || reg_2001.show_bg) reg_2003 = 0;
|
||||||
|
|
||||||
//this was repeatedly finetuned from the fceux days thrugh the old cpu core and into the new one to pass 05-nmi_timing.nes
|
//this was repeatedly finetuned from the fceux days thrugh the old cpu core and into the new one to pass 05-nmi_timing.nes
|
||||||
//note that there is still some leniency. for instance, 4,2 will pass in addition to 3,3
|
//note that there is still some leniency. for instance, 4,2 will pass in addition to 3,3
|
||||||
const int delay = 6;
|
const int delay = 6;
|
||||||
runppu(3);
|
runppu(3);
|
||||||
bool nmi_destiny = reg_2000.vblank_nmi_gen && Reg2002_vblank_active;
|
bool nmi_destiny = reg_2000.vblank_nmi_gen && Reg2002_vblank_active;
|
||||||
runppu(3);
|
runppu(3);
|
||||||
|
|
Loading…
Reference in New Issue