From e3c38751959faa55c5b8831562ecd0248b951fd8 Mon Sep 17 00:00:00 2001 From: Riyyi Date: Fri, 19 Aug 2022 21:49:23 +0200 Subject: [PATCH] Emulator: Store registers separately --- src/cpu.cpp | 42 ++++++++++++++++++++++++------------------ src/cpu.h | 17 ++++++++++------- src/main.cpp | 2 +- 3 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/cpu.cpp b/src/cpu.cpp index b11dc8b..ae3df73 100644 --- a/src/cpu.cpp +++ b/src/cpu.cpp @@ -17,28 +17,34 @@ CPU::CPU(uint32_t frequency) // CGB registers // https://gbdev.io/pandocs/Power_Up_Sequence.html#cpu-registers m_a = 0x11; - m_bc = 0x0; // B = 0x0, C = 0x0 - m_de = 0xff56; // D = 0xff, E = 0x56 - m_hl = 0x000d; // H = 0x0, L = 0x0d + m_b = 0x0; + m_c = 0x0; + m_d = 0xff; + m_e = 0x56; + m_h = 0x0; + m_l = 0x0d; m_pc = 0x100; m_sp = 0xffe; // Flags - m_z = 0x1; - m_n = 0x0; - m_h = 0x0; - m_c = 0x0; + m_zf = 0x1; + m_nf = 0x0; + m_hf = 0x0; + m_cf = 0x0; m_shared_registers.emplace("a", &m_a); - m_shared_registers.emplace("bc", &m_bc); - m_shared_registers.emplace("de", &m_de); - m_shared_registers.emplace("hl", &m_hl); + m_shared_registers.emplace("b", &m_b); + m_shared_registers.emplace("c", &m_c); + 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("pc", &m_pc); - m_shared_registers.emplace("z", &m_z); - m_shared_registers.emplace("n", &m_n); - m_shared_registers.emplace("h", &m_h); - m_shared_registers.emplace("c", &m_c); + m_shared_registers.emplace("zf", &m_zf); + m_shared_registers.emplace("nf", &m_nf); + m_shared_registers.emplace("hf", &m_hf); + m_shared_registers.emplace("cf", &m_cf); } CPU::~CPU() @@ -66,10 +72,10 @@ void CPU::add(uint8_t opcode, uint8_t immediate) m_wait_cycles += 8; // Flags: Z0HC - m_z = m_a + immediate == 0; - m_n = 0; - m_h = m_a + immediate > 16; - m_c = m_a + immediate > 255; + m_zf = m_a + immediate == 0; + m_nf = 0; + m_hf = m_a + immediate > 16; + m_cf = m_a + immediate > 255; // A = A + r m_a += immediate; diff --git a/src/cpu.h b/src/cpu.h index 990bf4f..9958e7e 100644 --- a/src/cpu.h +++ b/src/cpu.h @@ -39,17 +39,20 @@ public: private: // Registers uint32_t m_a { 0 }; // Accumulator - uint32_t m_bc { 0 }; // BC - uint32_t m_de { 0 }; // DE - uint32_t m_hl { 0 }; // HL + uint32_t m_b { 0 }; // B + uint32_t m_c { 0 }; // C + uint32_t m_d { 0 }; // D + uint32_t m_e { 0 }; // E + uint32_t m_h { 0 }; // H + uint32_t m_l { 0 }; // L uint32_t m_pc { 0 }; // Program Counter uint32_t m_sp { 0 }; // Stack Pointer // Flags - uint32_t m_z { 0 }; // Zero flag - uint32_t m_n { 0 }; // Subtraction flag (BCD) - uint32_t m_h { 0 }; // Half Carry flag (BCD) - uint32_t m_c { 0 }; // Carry flag + uint32_t m_zf { 0 }; // Zero flag + uint32_t m_nf { 0 }; // Subtraction flag (BCD) + uint32_t m_hf { 0 }; // Half Carry flag (BCD) + uint32_t m_cf { 0 }; // Carry flag int8_t m_wait_cycles { 0 }; }; diff --git a/src/main.cpp b/src/main.cpp index 08266dc..b494b76 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -30,7 +30,7 @@ int main(int argc, char* argv[]) // Get shared register print("{}\n", *Emu::the().processingUnit("cpu")->sharedRegister("a")); - print("{}\n", *Emu::the().processingUnit("cpu")->sharedRegister("bc")); + print("{}\n", *Emu::the().processingUnit("cpu")->sharedRegister("b")); while (true) { Emu::the().update();