From 475996af26408156486faa43682f7effdabfa156 Mon Sep 17 00:00:00 2001 From: Loic Guegan Date: Mon, 25 Dec 2023 07:24:17 +0100 Subject: Minor changes --- src/vcpu.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/vcpu.c (limited to 'src/vcpu.c') diff --git a/src/vcpu.c b/src/vcpu.c new file mode 100644 index 0000000..e35d07e --- /dev/null +++ b/src/vcpu.c @@ -0,0 +1,52 @@ +#include "vcpu.h" +#include "mem.h" +#include "screen.h" + +// Program Counter (16 bits but only 12 bits used (4096 memory addresses)) +unsigned short PC; + +// Index register (16 bits but only 12 bits used (4096 memory addresses)) +unsigned short I; + +// Stack register (16 bits) +unsigned short S; + +// General purpose registers (8 bits each) +// Note last one often used as a flag register +unsigned char R[16]; + +// Delay timer (8 bits) +unsigned char DT; + +// Sound timer (8 bits) +unsigned char ST; + +// Current VCPU state +VCPU_State State; + +void VCPUInit(){ + PC=ADDR_ROM; +} + +void VCPUFetch(){ + MemRead((char *)&(State.opcode),2,PC); + PC+=2; +} + +void VCPUDecode(){ + char X=(State.opcode<<4) & 0xF0; + char Y=(State.opcode<<8) & 0xF0; + char N=(State.opcode<<12) & 0xF0; + char NN=(State.opcode<<8) & 0xFF; + short NNN=(State.opcode<<4) & 0xFFF0; +} + +void VCPUExecute(){ + switch(State.opcode){ + case 0x00E0: + ScreenClear(); + break + ;; + + } +} -- cgit v1.2.3