#include "vcpu.h" #include "mem.h" #include "screen.h" // Current VCPU state VCPU_State State; void VCPUInit(){ State.PC=ADDR_ROM; } void VCPUFetch(){ MemRead((char *)&(State.opcode),2,State.PC); State.PC+=2; } void VCPUDecode(){ State.X=(State.opcode<<4) & 0xF0; State.Y=(State.opcode<<8) & 0xF0; State.N=(State.opcode<<12) & 0xF0; State.NN=(State.opcode<<8) & 0xFF; State.NNN=(State.opcode<<4) & 0xFFF0; } void VCPUExecute(){ switch(State.opcode & 0xF){ case 0x0: ScreenClear(); break ;; case 0x1: State.PC=State.NNN; break ;; case 0x6: State.V[State.X]=State.NN; break ;; case 0x7: State.V[State.X]+=State.NN; break ;; case 0xA: State.I=State.NNN; break ;; } }