2021-03-08 01:05:41 +02:00
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
|
|
struct Chip8 {
|
|
|
|
|
uint8_t V[16];
|
|
|
|
|
uint16_t I;
|
|
|
|
|
uint16_t PC = 0x200;
|
|
|
|
|
uint16_t SP;
|
|
|
|
|
uint16_t stack[16];
|
|
|
|
|
uint8_t memory[4096];
|
|
|
|
|
|
|
|
|
|
uint32_t pixels[64 * 32];
|
|
|
|
|
bool draw;
|
2021-03-09 14:41:16 +02:00
|
|
|
|
|
|
|
|
bool keys[16];
|
|
|
|
|
|
|
|
|
|
uint8_t delay_timer;
|
|
|
|
|
uint8_t sound_timer;
|
2021-03-08 01:05:41 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const uint8_t font[80] = {
|
|
|
|
|
0xF0, 0x90, 0x90, 0x90, 0xF0, // 0
|
|
|
|
|
0x20, 0x60, 0x20, 0x20, 0x70, // 1
|
|
|
|
|
0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2
|
|
|
|
|
0xF0, 0x10, 0xF0, 0x10, 0xF0, // 3
|
|
|
|
|
0x90, 0x90, 0xF0, 0x10, 0x10, // 4
|
|
|
|
|
0xF0, 0x80, 0xF0, 0x10, 0xF0, // 5
|
|
|
|
|
0xF0, 0x80, 0xF0, 0x90, 0xF0, // 6
|
|
|
|
|
0xF0, 0x10, 0x20, 0x40, 0x40, // 7
|
|
|
|
|
0xF0, 0x90, 0xF0, 0x90, 0xF0, // 8
|
|
|
|
|
0xF0, 0x90, 0xF0, 0x10, 0xF0, // 9
|
|
|
|
|
0xF0, 0x90, 0xF0, 0x90, 0x90, // A
|
|
|
|
|
0xE0, 0x90, 0xE0, 0x90, 0xE0, // B
|
|
|
|
|
0xF0, 0x80, 0x80, 0x80, 0xF0, // C
|
|
|
|
|
0xE0, 0x90, 0x90, 0x90, 0xE0, // D
|
|
|
|
|
0xF0, 0x80, 0xF0, 0x80, 0xF0, // E
|
|
|
|
|
0xF0, 0x80, 0xF0, 0x80, 0x80 // F
|
|
|
|
|
};
|