- [FIX] la cpu ja actualitza el registre R com toca
- [FIX] EI no activa les interrupcions fins a després de la següent instrucció, like in real life - [FIX] actualitzar el offset de la UI després de usar el debugger - [ONGOING] Depurant el jittering del só. Ara executa 10 instruccions de CPu per cada bucle, per a que vaja mes apresa i no es retrase el cheneraor de só - Afegit el TAP de Las Tres Luces de Glaurung pa provar
This commit is contained in:
12
z80.cpp
12
z80.cpp
@@ -88,7 +88,8 @@ namespace z80
|
||||
|
||||
//uint8_t iff1, iff2, im;
|
||||
bool exit_from_halt = false;
|
||||
|
||||
int pending_ei = 0;
|
||||
|
||||
#define rA (*_rA)
|
||||
#define rF (*_rF)
|
||||
#define rB (*_rB)
|
||||
@@ -683,6 +684,11 @@ namespace z80
|
||||
}
|
||||
|
||||
void EI()
|
||||
{
|
||||
pending_ei=1;
|
||||
}
|
||||
|
||||
void actualEI()
|
||||
{
|
||||
iff1 = iff2 = 1;
|
||||
}
|
||||
@@ -1328,6 +1334,9 @@ namespace z80
|
||||
case 0xFE: CP(READ_MEM_8()); break;
|
||||
case 0xFF: RST(0x38); break;
|
||||
}
|
||||
|
||||
if (pending_ei==2) { pending_ei=0; actualEI(); }
|
||||
if (pending_ei==1) pending_ei=2;
|
||||
return t;
|
||||
}
|
||||
|
||||
@@ -2115,6 +2124,7 @@ namespace z80
|
||||
void MISC_INSTRUCTIONS()
|
||||
{
|
||||
const uint8_t opcode = READ_M1();
|
||||
rR = (rR&0x80) + ((rR+1) & 0x7f);
|
||||
uint16_t tmp;
|
||||
|
||||
switch (opcode)
|
||||
|
||||
Reference in New Issue
Block a user