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