This commit is contained in:
2018-10-30 19:23:23 -04:00
parent faa0ed13a3
commit 7df88ffdf2

18
main.c
View File

@@ -346,46 +346,46 @@ int main(int argc, char **argv) {
reg = (opcode & 0x0F00) >> 8;
switch ((byte) opcode)
{
case 0x07:
case 0x07: // set reg to delay time
if (DEBUG) printf("Copying delay timer to reg %i (%hx)", reg, state.registers[reg]);
state.registers[reg] = delay;
break;
case 0x0A:
case 0x0A: // wait for input and store it in reg
wait = 1;
store = reg;
break;
case 0x15:
case 0x15: // set delay timer to value in reg
delay = state.registers[reg];
break;
case 0x18:
case 0x18: // set sound timer to value in reg
sound = state.registers[reg];
break;
case 0x1E:
case 0x1E: // Add value stored in VX to I
state.address_I += state.registers[reg];
if (DEBUG) printf("Adding reg %i (%hx) to I (%x)", reg, state.registers[reg], state.address_I);
break;
case 0x29:
case 0x29: // set I to address of font character
state.address_I = state.registers[reg] * 5;
break;
case 0x33:;
case 0x33:; // encode value in reg as a BCD at I, I+1, I+2
int value = state.registers[reg];
state.memory[state.address_I] = value / 100;
state.memory[state.address_I + 1] = (value / 10) % 10;
state.memory[state.address_I + 2] = value % 10;
break;
case 0x55:
case 0x55: // dump registers V0 -> VX at I
for (int i = 0; i <= reg; ++i)
state.memory[state.address_I + i] = state.registers[i];
break;
case 0x65:
case 0x65: // retrieve registers V0 -> VX from I
for (int i = 0; i <= reg; ++i)
state.registers[i] = state.memory[state.address_I + i];
break;