diff options
Diffstat (limited to 'emulator.c')
-rw-r--r-- | emulator.c | 70 |
1 files changed, 61 insertions, 9 deletions
diff --git a/emulator.c b/emulator.c index fe7693f..6bfdaa0 100644 --- a/emulator.c +++ b/emulator.c @@ -73,27 +73,79 @@ int emulator_tick(Emulator* emulator) uint16_t NNN = (instr & 0x0FFF); //last three nibbles printf("instr: 0x%x\n", instr); - printf("A: 0x%x\nX: 0x%x\nY: 0x%x\nN: 0x%x\nNN: 0x%x\nNNN: 0x%x\n\n", first_nibble, X, Y, N, NN, NNN); + printf("A: 0x%x\nX: 0x%x\nY: 0x%x\nN: 0x%x\nNN: 0x%x\nNNN: 0x%x\n", first_nibble, X, Y, N, NN, NNN); switch(first_nibble) { - case 1: + case 0x0: + switch(NNN) + { + case 0x000: + exit(1); + case 0x0E0: //00E0: Clear screen + printf("CLEAR SCREEN!\n"); + break; + } + + break; + case 0x1: + printf("JUMP! (0x%x)\n", NNN); + break; + case 0x2: + break; + case 0x3: + break; + case 0x4: + break; + case 0x5: break; - case 2: + case 0x6: + printf("SET REGISTER VX! (0x%x)\n", NN); break; - case 3: + case 0x7: + printf("ADD VALUE TO REGISTER VX! (0x%x)\n", NN); break; - case 4: + case 0x8: break; - case 5: + case 0xA: + printf("SET INDEX REGISTER I! (0x%x)\n", NNN); break; - case 6: + case 0xB: break; - case 7: + case 0xC: break; - case 8: + case 0xD: + printf("DRAW!\n"); + break; + case 0xE: + break; + case 0xF: break; } + putchar('\n'); + return 0; } + +void emulator_dump_registers(Emulator* emulator) +{ + printf("REGISTERS: \n"); + printf("\tV0: 0x%x", emulator->regs.V0); + printf("\tV1: 0x%x", emulator->regs.V1); + printf("\tV2: 0x%x", emulator->regs.V2); + printf("\tV3: 0x%x", emulator->regs.V3); + printf("\tV4: 0x%x", emulator->regs.V4); + printf("\tV5: 0x%x", emulator->regs.V5); + printf("\tV6: 0x%x", emulator->regs.V6); + printf("\tV7: 0x%x", emulator->regs.V7); + printf("\tV8: 0x%x", emulator->regs.V8); + printf("\tV9: 0x%x", emulator->regs.V9); + printf("\tVA: 0x%x", emulator->regs.VA); + printf("\tVB: 0x%x", emulator->regs.VB); + printf("\tVC: 0x%x", emulator->regs.VC); + printf("\tVD: 0x%x", emulator->regs.VD); + printf("\tVE: 0x%x", emulator->regs.VE); + printf("\tVF: 0x%x", emulator->regs.VF); + printf("\tI: 0x%x", emulator->regs.I); +} |