38 lines
759 B
C
38 lines
759 B
C
#pragma once
|
|
|
|
#define REG_FLAG 0xF
|
|
|
|
typedef struct VCPU_State {
|
|
// 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 V[16];
|
|
|
|
// Delay timer (8 bits)
|
|
unsigned char DT;
|
|
|
|
// Sound timer (8 bits)
|
|
unsigned char ST;
|
|
|
|
// Intruction (opcode + decoded fields)
|
|
unsigned short opcode;
|
|
char X;
|
|
char Y;
|
|
char N;
|
|
char NN;
|
|
unsigned short NNN;
|
|
} VCPU_State;
|
|
|
|
void VCPUInit();
|
|
void VCPUFetch();
|
|
void VCPUDecode();
|
|
void VCPUExecute();
|
|
void VCPUDump();
|