improved irq handling Cz80_Exec() calls with lots of cycles

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@458 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2008-05-25 21:01:55 +00:00
parent 4609d0cdb8
commit 170435846c
4 changed files with 23 additions and 25 deletions

View file

@ -270,6 +270,8 @@ Cz80_Check_Interrupt:
if (CPU->IRQState != CLEAR_LINE)
{
CHECK_INT
CPU->ICount -= CPU->ExtraCycles;
CPU->ExtraCycles = 0;
}
goto Cz80_Exec;
}

View file

@ -61,7 +61,7 @@ extern "C" {
//#else
#define CZ80_ENCRYPTED_ROM 0
//#endif
#define CZ80_EMULATE_R_EXACTLY 0
#define CZ80_EMULATE_R_EXACTLY 1
#define zR8(A) (*CPU->pzR8[A])
#define zR16(A) (CPU->pzR16[A]->W)

View file

@ -712,8 +712,10 @@ OP_EI:
if (CPU->IRQState)
{
afterEI = 1;
CPU->ExtraCycles += 1 - CPU->ICount;
CPU->ICount = 1;
}
if (CPU->ICount <= 0)
else if (CPU->ICount <= 0)
{
CPU->ICount = 1;
}