π The first release of the emulador interpreter π
What's Changed
Added screen rendering.
Added audio management.
Added command-line arguments.
Added CMake for automatic building.
Added roms for testing.
Added timing management.
Added opcodes:
00E0 - CLS
: Clear the display.00EE - RET
: Return from a subroutine.1NNN - JMP
: Jump to location NNN.2NNN - CALL
: Call subroutine at NNN.3xkk - SE
: Skip next instruction if Vx == kk.4xkk - SNE
: Skip next instruction if Vx != kk.5xy0 - SEREG
: Skip next instruction if Vx == Vy.6xkk - LDIMM
: Set Vx = kk.7xkk - ADDIMM
: Set Vx = Vx + kk.8xy0 - LDV
: Set Vx = Vy.8xy1 - OR
: Set Vx = Vx OR Vy.8xy2 - AND
: Set Vx = Vx AND Vy.8xy3 - XOR
: Set Vx = Vx XOR Vy.8xy4 - ADD
: Set Vx = Vx + Vy, set VF = carry.8xy5 - SUB
: Set Vx = Vx - Vy, set VF = NOT borrow.8xy6 - SHR
: Set Vx = Vx SHR 1.8xy7 - SUBN
: Set Vx = Vy - Vx, set VF = NOT borrow.8xyE - SHL
: Set Vx = Vx SHL 1.9xy0 - SNEREG
: Skip next instruction if Vx != Vy.ANNN - LDI
: Set Index Register to NNN.BNNN - JMPREG
: Jump to location NNN + V0.Cxkk - RND
: Set Vx = random byte AND kk.DxyN - DRAW
: Display N-byte sprite starting at memory location I at (Vx, Vy), set VF = collision.Ex9E - SKEY
: Skip next instruction if key with the value of Vx is pressed.ExA1 - SNKEY
: Skip next instruction if key with the value of Vx is not pressed.Fx07 - RDELAY
: Set Vx = delay timer value.Fx0A - WAITKEY
: Wait for a key press, store the value of the key in Vx.Fx15 - WDELAY
: Set delay timer = Vx.Fx18 - WSOUND
: Set sound timer = Vx.Fx1E - ADDI
: Set I = I + Vx.Fx29 - LDSPRITE
: Set I = location of sprite for digit Vx.Fx33 - STBCD
: Store BCD representation of Vx in memory locations I, I+1, and I+2.Fx55 - STREG
: Store registers V0 through Vx in memory starting at location I.Fx65 - LDREG
: Read registers V0 through Vx from memory starting at location I.