#include "fds.h"
#include "ines.h"
#include "unif.h"
+#include "vsuni.h"
#include "cheat.h"
#include "state.h"
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
{
}
update:
+ if(Exit)
+ {
+ //CloseGame();
+ break;
+ }
+
{
int ssize;
}
}
- if(Exit)
- {
- //CloseGame();
- break;
- }
-
} // for
}
memset(RAM,0x00,0x800);
#endif
ResetMapping();
- GameInterface(GI_POWER, 0);
PowerSound();
PowerPPU();
- timestampbase=0;
+ GameInterface(GI_POWER, 0);
+ if(FCEUGameInfo.type==GIT_VSUNI)
+ FCEU_VSUniPower();
#ifdef ASM_6502
if (geniestage)
GenieSetPages(0);
#endif
+ timestampbase=0;
X6502_Power();
+ FCEU_PowerCheats();
}