mirror of
https://github.com/MoleskiCoder/EightBit.git
synced 2025-03-10 17:37:57 +00:00
Simplifications of json usage. No slow down.
Signed-off-by: Adrian Conlon <adrian.conlon@gmail.com>
This commit is contained in:
parent
393fab2bbc
commit
e63ace34e9
@ -4,7 +4,7 @@
|
||||
std::set<uint8_t> TestRunner::m_undocumented_opcodes;
|
||||
bool TestRunner::m_undocumented_opcodes_initialised = false;
|
||||
|
||||
TestRunner::TestRunner(const test_t& test)
|
||||
TestRunner::TestRunner(const test_t test)
|
||||
: m_test(test) {}
|
||||
|
||||
EightBit::MemoryMapping TestRunner::mapping(uint16_t address) noexcept {
|
||||
@ -122,7 +122,7 @@ bool TestRunner::check(std::string what, uint16_t address, uint8_t expected, uin
|
||||
|
||||
void TestRunner::initialiseState() {
|
||||
|
||||
const auto& starting = test().initial_state();
|
||||
const auto starting = test().initial_state();
|
||||
|
||||
CPU().PC().word = starting.pc();
|
||||
CPU().S() = starting.s();
|
||||
@ -130,8 +130,7 @@ void TestRunner::initialiseState() {
|
||||
CPU().X() = starting.x();
|
||||
CPU().Y() = starting.y();
|
||||
CPU().P() = starting.p();
|
||||
const auto& ram = starting.ram();
|
||||
for (auto entry : ram) {
|
||||
for (auto entry : starting.ram()) {
|
||||
const byte_t byte(entry);
|
||||
RAM().poke(byte.address(), byte.value());
|
||||
}
|
||||
@ -139,7 +138,7 @@ void TestRunner::initialiseState() {
|
||||
|
||||
bool TestRunner::checkState() {
|
||||
|
||||
const auto& finished = test().final_state();
|
||||
const auto finished = test().final_state();
|
||||
|
||||
const auto& expected_cycles = test().cycles();
|
||||
const auto& actual_cycles = m_actualCycles;
|
||||
@ -162,9 +161,8 @@ bool TestRunner::checkState() {
|
||||
const auto y_good = check("Y", finished.y(), CPU().Y());
|
||||
const auto p_good = check("P", finished.p(), CPU().P());
|
||||
|
||||
const auto& ram = finished.ram();
|
||||
bool ram_problem = false;
|
||||
for (auto entry : ram) {
|
||||
for (const auto entry : finished.ram()) {
|
||||
const byte_t byte(entry);
|
||||
const auto ram_good = check("RAM", byte.address(), byte.value(), RAM().peek(byte.address()));
|
||||
if (!ram_good && !ram_problem)
|
||||
@ -193,7 +191,7 @@ void TestRunner::check() {
|
||||
initialise();
|
||||
raisePOWER();
|
||||
initialiseState();
|
||||
const auto pc = CPU().PC();
|
||||
const auto pc = CPU().PC().word;
|
||||
const auto start_opcode = peek(pc);
|
||||
m_cycles = CPU().step();
|
||||
lowerPOWER();
|
||||
@ -213,7 +211,7 @@ void TestRunner::check() {
|
||||
|
||||
if (invalid() && implemented()) {
|
||||
|
||||
disassemble(pc.word);
|
||||
disassemble(pc);
|
||||
|
||||
raise("PC", test().final_state().pc(), CPU().PC().word);
|
||||
raise("S", test().final_state().s(), CPU().S());
|
||||
|
@ -24,7 +24,7 @@ private:
|
||||
EightBit::Symbols m_symbols;
|
||||
EightBit::Disassembly m_disassembler = { *this, m_cpu, m_symbols };
|
||||
|
||||
const test_t& m_test;
|
||||
const test_t m_test;
|
||||
|
||||
std::ostringstream m_os;
|
||||
std::vector<std::string> m_messages;
|
||||
@ -75,7 +75,7 @@ protected:
|
||||
virtual EightBit::MemoryMapping mapping(uint16_t address) noexcept final;
|
||||
|
||||
public:
|
||||
TestRunner(const test_t& test);
|
||||
TestRunner(test_t test);
|
||||
|
||||
virtual void raisePOWER() final;
|
||||
virtual void lowerPOWER() final;
|
||||
@ -84,7 +84,7 @@ public:
|
||||
|
||||
[[nodiscard]] constexpr auto& RAM() noexcept { return m_ram; }
|
||||
[[nodiscard]] constexpr auto& CPU() noexcept { return m_cpu; }
|
||||
[[nodiscard]] constexpr const auto& test() const noexcept { return m_test; }
|
||||
[[nodiscard]] auto test() const noexcept { return m_test; }
|
||||
[[nodiscard]] constexpr const auto& messages() const noexcept { return m_messages; }
|
||||
|
||||
[[nodiscard]] constexpr auto cycles() const noexcept { return m_cycles; }
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "stdafx.h"
|
||||
#include "ram_t.h"
|
||||
|
||||
ram_t::ram_t(simdjson::dom::array input)
|
||||
ram_t::ram_t(simdjson::dom::array input) noexcept
|
||||
: m_raw(input) {}
|
||||
|
@ -9,7 +9,7 @@ private:
|
||||
simdjson::dom::array m_raw;;
|
||||
|
||||
public:
|
||||
ram_t(simdjson::dom::array input);
|
||||
ram_t(simdjson::dom::array input) noexcept;
|
||||
|
||||
[[nodiscard]] auto begin() const noexcept { return m_raw.begin(); }
|
||||
[[nodiscard]] auto end() const noexcept { return m_raw.end(); }
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "stdafx.h"
|
||||
#include "state_t.h"
|
||||
|
||||
state_t::state_t(const simdjson::dom::element input)
|
||||
state_t::state_t(const simdjson::dom::element input) noexcept
|
||||
: m_raw(input) {}
|
||||
|
@ -17,7 +17,7 @@ private:
|
||||
[[nodiscard]] auto array_at(std::string key) const noexcept { return at(key).get_array(); }
|
||||
|
||||
public:
|
||||
state_t(simdjson::dom::element input);
|
||||
state_t(simdjson::dom::element input) noexcept;
|
||||
|
||||
[[nodiscard]] auto pc() const noexcept { return address_at("pc"); }
|
||||
[[nodiscard]] auto s() const noexcept { return byte_at("s"); }
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "stdafx.h"
|
||||
#include "test_t.h"
|
||||
|
||||
test_t::test_t(const simdjson::dom::element input)
|
||||
test_t::test_t(const simdjson::dom::element input) noexcept
|
||||
: m_raw(input) {}
|
||||
|
@ -15,7 +15,7 @@ private:
|
||||
[[nodiscard]] auto array_at(std::string key) const noexcept { return at(key).get_array(); }
|
||||
|
||||
public:
|
||||
test_t(simdjson::dom::element input);
|
||||
test_t(simdjson::dom::element input) noexcept;
|
||||
|
||||
[[nodiscard]] auto name() const noexcept { return at("name"); }
|
||||
[[nodiscard]] auto initial_state() const noexcept { return state_t(at("initial")); }
|
||||
|
Loading…
x
Reference in New Issue
Block a user