X6502_Rebase_a();
nes_registers[4] = X.S << 24;
nes_registers[4]|= X.IRQlow << 8;
+ if (MapIRQHook)
+ nes_registers[4] |= 1<<16; // MapIRQHook set bit
nes_registers[7] = (uint32)X.count << 16;
// NVUB DIZC
static void LineUpdate(uint8 *target)
{
uint32 tem;
+ int y;
/* PRefreshLine() will not get called on skipped frames. This
* could cause a problem, but the solution would be rather complex,
* due to the current sprite 0 hit code.
*/
- if(FSkip) return;
+ if(FSkip)
+ {
+ y=(int)SPRAM[0] + 1;
+ if(scanline==y && SpriteON) PPU_status|=0x40; // hack
+ return;
+ }
if(scanline < FSettings.FirstSLine || scanline > FSettings.LastSLine)
{
if(PPU_hook)
PRefreshLine();
+ y=(int)SPRAM[0] + 1;
+ if(scanline==y && SpriteON) PPU_status|=0x40;
}
else
{
memset(RAM,0x00,0x800);
#endif
ResetMapping();
- GameInterface(GI_POWER, 0);
PowerSound();
PowerPPU();
+ GameInterface(GI_POWER, 0);
timestampbase=0;
#ifdef ASM_6502
if (geniestage)