|
|
@ -17,28 +17,34 @@ CPU::CPU(uint32_t frequency) |
|
|
|
// CGB registers
|
|
|
|
// CGB registers
|
|
|
|
// https://gbdev.io/pandocs/Power_Up_Sequence.html#cpu-registers
|
|
|
|
// https://gbdev.io/pandocs/Power_Up_Sequence.html#cpu-registers
|
|
|
|
m_a = 0x11; |
|
|
|
m_a = 0x11; |
|
|
|
m_bc = 0x0; // B = 0x0, C = 0x0
|
|
|
|
m_b = 0x0; |
|
|
|
m_de = 0xff56; // D = 0xff, E = 0x56
|
|
|
|
m_c = 0x0; |
|
|
|
m_hl = 0x000d; // H = 0x0, L = 0x0d
|
|
|
|
m_d = 0xff; |
|
|
|
|
|
|
|
m_e = 0x56; |
|
|
|
|
|
|
|
m_h = 0x0; |
|
|
|
|
|
|
|
m_l = 0x0d; |
|
|
|
m_pc = 0x100; |
|
|
|
m_pc = 0x100; |
|
|
|
m_sp = 0xffe; |
|
|
|
m_sp = 0xffe; |
|
|
|
|
|
|
|
|
|
|
|
// Flags
|
|
|
|
// Flags
|
|
|
|
m_z = 0x1; |
|
|
|
m_zf = 0x1; |
|
|
|
m_n = 0x0; |
|
|
|
m_nf = 0x0; |
|
|
|
m_h = 0x0; |
|
|
|
m_hf = 0x0; |
|
|
|
m_c = 0x0; |
|
|
|
m_cf = 0x0; |
|
|
|
|
|
|
|
|
|
|
|
m_shared_registers.emplace("a", &m_a); |
|
|
|
m_shared_registers.emplace("a", &m_a); |
|
|
|
m_shared_registers.emplace("bc", &m_bc); |
|
|
|
m_shared_registers.emplace("b", &m_b); |
|
|
|
m_shared_registers.emplace("de", &m_de); |
|
|
|
m_shared_registers.emplace("c", &m_c); |
|
|
|
m_shared_registers.emplace("hl", &m_hl); |
|
|
|
m_shared_registers.emplace("d", &m_d); |
|
|
|
|
|
|
|
m_shared_registers.emplace("e", &m_e); |
|
|
|
|
|
|
|
m_shared_registers.emplace("h", &m_h); |
|
|
|
|
|
|
|
m_shared_registers.emplace("l", &m_l); |
|
|
|
m_shared_registers.emplace("sp", &m_sp); |
|
|
|
m_shared_registers.emplace("sp", &m_sp); |
|
|
|
m_shared_registers.emplace("pc", &m_pc); |
|
|
|
m_shared_registers.emplace("pc", &m_pc); |
|
|
|
m_shared_registers.emplace("z", &m_z); |
|
|
|
m_shared_registers.emplace("zf", &m_zf); |
|
|
|
m_shared_registers.emplace("n", &m_n); |
|
|
|
m_shared_registers.emplace("nf", &m_nf); |
|
|
|
m_shared_registers.emplace("h", &m_h); |
|
|
|
m_shared_registers.emplace("hf", &m_hf); |
|
|
|
m_shared_registers.emplace("c", &m_c); |
|
|
|
m_shared_registers.emplace("cf", &m_cf); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CPU::~CPU() |
|
|
|
CPU::~CPU() |
|
|
@ -66,10 +72,10 @@ void CPU::add(uint8_t opcode, uint8_t immediate) |
|
|
|
m_wait_cycles += 8; |
|
|
|
m_wait_cycles += 8; |
|
|
|
|
|
|
|
|
|
|
|
// Flags: Z0HC
|
|
|
|
// Flags: Z0HC
|
|
|
|
m_z = m_a + immediate == 0; |
|
|
|
m_zf = m_a + immediate == 0; |
|
|
|
m_n = 0; |
|
|
|
m_nf = 0; |
|
|
|
m_h = m_a + immediate > 16; |
|
|
|
m_hf = m_a + immediate > 16; |
|
|
|
m_c = m_a + immediate > 255; |
|
|
|
m_cf = m_a + immediate > 255; |
|
|
|
|
|
|
|
|
|
|
|
// A = A + r
|
|
|
|
// A = A + r
|
|
|
|
m_a += immediate; |
|
|
|
m_a += immediate; |
|
|
|