cpu: make blarg cpu instr test 7 pass
This commit is contained in:
@@ -615,7 +615,7 @@ int lr35902_cycle(struct lr35902_state *cpu)
|
|||||||
break;
|
break;
|
||||||
case 0x35: /* DEC (HL) */
|
case 0x35: /* DEC (HL) */
|
||||||
val = gb_mem_read(cpu->memory, cpu->hl);
|
val = gb_mem_read(cpu->memory, cpu->hl);
|
||||||
cpu->hf = CALC_H_ADD(val, 1);
|
cpu->hf = CALC_H_SUB(val, 1);
|
||||||
cpu->zf = (val == 0);
|
cpu->zf = (val == 0);
|
||||||
cpu->nf = 1;
|
cpu->nf = 1;
|
||||||
val--;
|
val--;
|
||||||
@@ -1586,7 +1586,7 @@ int lr35902_cycle(struct lr35902_state *cpu)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0xd4: /* CALL NC */
|
case 0xd4: /* CALL NC */
|
||||||
if (!cpu->nf) {
|
if (!cpu->cf) {
|
||||||
CALL(cpu);
|
CALL(cpu);
|
||||||
} else {
|
} else {
|
||||||
cpu->pc += 2;
|
cpu->pc += 2;
|
||||||
@@ -1608,13 +1608,16 @@ int lr35902_cycle(struct lr35902_state *cpu)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0xd9: /* RETI */
|
case 0xd9: /* RETI */
|
||||||
gb_log("Interrupts ON\n");
|
|
||||||
RET(cpu);
|
RET(cpu);
|
||||||
ASSERT(0);
|
|
||||||
cpu->int_state = LR35902_INT_ON;
|
cpu->int_state = LR35902_INT_ON;
|
||||||
break;
|
break;
|
||||||
case 0xda:
|
case 0xda: /* JP C, a16 */
|
||||||
ASSERT(0);
|
val_16 = gb_mem_read(cpu->memory, cpu->pc++);
|
||||||
|
val_16 |= ((uint16_t) gb_mem_read(cpu->memory, cpu->pc++) << 8);
|
||||||
|
if (cpu->cf) {
|
||||||
|
cpu->pc = val_16;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 0xdb: /* UNDEF */
|
case 0xdb: /* UNDEF */
|
||||||
break;
|
break;
|
||||||
case 0xdc: /* CALL C */
|
case 0xdc: /* CALL C */
|
||||||
@@ -1627,7 +1630,7 @@ int lr35902_cycle(struct lr35902_state *cpu)
|
|||||||
case 0xdd: /* UNDEF */
|
case 0xdd: /* UNDEF */
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
break;
|
break;
|
||||||
case 0xde:
|
case 0xde: /* SBC A, d8 */
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
case 0xdf: /* RST 0x18 */
|
case 0xdf: /* RST 0x18 */
|
||||||
RST(cpu, 0x18);
|
RST(cpu, 0x18);
|
||||||
@@ -1704,7 +1707,6 @@ int lr35902_cycle(struct lr35902_state *cpu)
|
|||||||
cpu->a = gb_mem_read(cpu->memory, 0xFF00 + cpu->c);
|
cpu->a = gb_mem_read(cpu->memory, 0xFF00 + cpu->c);
|
||||||
break;
|
break;
|
||||||
case 0xf3: /* DI */
|
case 0xf3: /* DI */
|
||||||
gb_log("Interrupts OFF\n");
|
|
||||||
/*TODO: implement me */
|
/*TODO: implement me */
|
||||||
case 0xf4: /* UNDEF */
|
case 0xf4: /* UNDEF */
|
||||||
break;
|
break;
|
||||||
@@ -1743,7 +1745,7 @@ int lr35902_cycle(struct lr35902_state *cpu)
|
|||||||
cpu->a = gb_mem_read(cpu->memory, val_16);
|
cpu->a = gb_mem_read(cpu->memory, val_16);
|
||||||
break;
|
break;
|
||||||
case 0xfb: /* EI */
|
case 0xfb: /* EI */
|
||||||
gb_log("Interrupts ON\n");
|
/* TODO: implement me */
|
||||||
break;
|
break;
|
||||||
case 0xfc: /* UNDEF */
|
case 0xfc: /* UNDEF */
|
||||||
ASSERT(0);
|
ASSERT(0);
|
||||||
|
|||||||
Reference in New Issue
Block a user