diff --git a/src/gbemu/cpu.c b/src/gbemu/cpu.c index 282d3f9..4c92384 100644 --- a/src/gbemu/cpu.c +++ b/src/gbemu/cpu.c @@ -1338,7 +1338,10 @@ void lr35902_cycle(struct lr35902_state *cpu) case 0xdf: /* RST 0x18 */ RST(cpu, 0x18); break; - case 0xe0: + case 0xe0: /* LDH (a8), A / LD ($FF00+a8),A */ + val = cpu->mem_read(cpu, cpu->pc++); + cpu->mem_write(cpu, 0xff00 + val, cpu->a); + break; case 0xe1: /* POP HL */ POP_16(cpu, cpu->hl); break; @@ -1371,7 +1374,10 @@ void lr35902_cycle(struct lr35902_state *cpu) case 0xef: /* RST 0x28 */ RST(cpu, 0x28); break; - case 0xf0: + case 0xf0: /* LDH A,(a8) / LD A,($FF00+a8) */ + val = cpu->mem_read(cpu, cpu->pc++); + cpu->a = cpu->mem_read(cpu, 0xff00 + val); + break; case 0xf1: /* POP AF */ cpu->a = cpu->mem_read(cpu, cpu->sp++); val = cpu->mem_read(cpu, cpu->sp++);