Llevo todo el día buscando y corrigiendo los bugs que hacían fallar los tests del ZEXALL, pero algunos se me siguen resistiendo…

El que me tiene ahora loco es el relativo a las instrucciones DAA, CPL, CCF y SCF, pues por más que miro el código no le veo fallos… He probado incluso a incluir el código de un par de emuladores para estas instrucciones, pero los resultados son los mismos, lo cual me está llevando a pensar que igual el fallo no sea de mi emulador y sí del test en sí o bien que se de por asumido algún error y luego no tenga efectos negativos a la hora de emular los juegos (he probado este mismo test en otro emulador y falla en un test que en el mio sí se verifica correctamente).

Bueno, visto lo visto, mañana creo que empezaré a darle caña al VDP (procesador gráfico), a ver si pongo por escrito la información que he ido leyendo al respecto y así os intento explicar un poco cómo funciona.

Os dejo el listado de pruebas a día de hoy:

SDSC Terminal de depuracion.
----------------------------
Z80 instruction exerciser

ld hl,(nnnn).................OK
ld sp,(nnnn).................OK
ld (nnnn),hl.................OK
ld (nnnn),sp.................OK
ld <bc,de>,(nnnn)............OK
ld <ix,iy>,(nnnn)............OK
ld <ix,iy>,nnnn..............OK
ld (<ix,iy>+1),nn............OK
ld <ixh,ixl,iyh,iyl>,nn......OK
ld a,(nnnn) / ld (nnnn),a....OK
ldd<r> (1)...................OK
ldd<r> (2)...................OK
ldi<r> (1)...................OK
ldi<r> (2)...................OK
ld a,<(bc),(de)>.............OK
ld (nnnn),<ix,iy>............OK
ld <bc,de,hl,sp>,nnnn........OK
ld <b,c,d,e,h,l,(hl),a>,nn...OK
ld (nnnn),<bc,de>............OK
ld (<bc,de>),a...............OK
ld (<ix,iy>+1),a.............OK
ld a,(<ix,iy>+1).............OK
shf/rot (<ix,iy>+1)..........OK
ld <h,l>,(<ix,iy>+1).........OK
ld (<ix,iy>+1),<h,l>.........OK
ld <b,c,d,e>,(<ix,iy>+1).....OK
ld (<ix,iy>+1),<b,c,d,e>.....OK
<inc,dec> c..................OK
<inc,dec> de.................OK
<inc,dec> hl.................OK
<inc,dec> ix.................OK
<inc,dec> iy.................OK
<inc,dec> sp.................OK
<set,res> n,(<ix,iy>+1)......OK
bit n,(<ix,iy>+1)............OK
<inc,dec> a..................OK
<inc,dec> b..................OK
<inc,dec> bc.................OK
<inc,dec> d..................OK
<inc,dec> e..................OK
<inc,dec> h..................OK
<inc,dec> l..................OK
<inc,dec> (hl)...............OK
<inc,dec> ixh................OK
<inc,dec> ixl................OK
<inc,dec> iyh................OK
<inc,dec> iyl................OK
ld <bcdehla>,<bcdehla>.......OK
cpd<r>.......................OK
cpi<r>.......................OK
<inc,dec> (<ix,iy>+1)........OK
<rlca,rrca,rla,rra>..........OK
shf/rot <b,c,d,e,h,l,(hl),a>.OK
ld <bcdexya>,<bcdexya>.......OK
<rrd,rld>....................OK
<set,res> n,<bcdehl(hl)a>....OK
neg..........................OK
add hl,<bc,de,hl,sp>.........OK
add ix,<bc,de,ix,sp>.........OK
add iy,<bc,de,iy,sp>.........OK
aluop a,nn...................OK
<adc,sbc> hl,<bc,de,hl,sp>...OK
bit n,<b,c,d,e,h,l,(hl),a>...OK
<daa,cpl,scf,ccf>............   CRC:681be242 expected:9b4ba675
aluop a,(<ix,iy>+1)..........OK
aluop a,<ixh,ixl,iyh,iyl>....OK
aluop a,<b,c,d,e,h,l,(hl),a>.   CRC:b2fcb670 expected:5ddf949b