diff options
| author | Hannes Schulze <haschu0103@outlook.de> | 2025-01-23 19:37:32 +0100 |
|---|---|---|
| committer | Hannes Schulze <haschu0103@outlook.de> | 2025-01-23 19:37:32 +0100 |
| commit | 6512dd599d13035f6a90b2009344e02c488f5aae (patch) | |
| tree | 5d19f043aac57c5cec6edc8221d5ec9057d49ab3 /src/nes/cpu.cc | |
| parent | baa585fd21f631708de215929241d40f66b58498 (diff) | |
initial working version
Diffstat (limited to 'src/nes/cpu.cc')
| -rw-r--r-- | src/nes/cpu.cc | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/nes/cpu.cc b/src/nes/cpu.cc index b488a08..9060e72 100644 --- a/src/nes/cpu.cc +++ b/src/nes/cpu.cc @@ -45,14 +45,6 @@ namespace nes nmi_pending_ = true; } - auto cpu::step_to(cycle_count const target) -> void - { - while (current_cycles_ < target) - { - step(); - } - } - auto cpu::step() -> void { // See https://www.nesdev.org/wiki/CPU_unofficial_opcodes @@ -400,8 +392,10 @@ namespace nes auto cpu::run_anc() -> void { // ANC: AND #i + copy N to C - // TODO - std::abort(); + auto operand = fetch_operand<Mode>(); + eval_and(operand.read()); + registers_.c = registers_.n; + current_cycles_ += operand.get_cycles(); } template<cpu::addressing_mode Mode> @@ -539,8 +533,10 @@ namespace nes auto cpu::run_alr() -> void { // ALR: AND #i + LSR A - // TODO - std::abort(); + auto operand = fetch_operand<Mode>(); + eval_and(operand.read()); + registers_.a = eval_lsr(registers_.a); + current_cycles_ += operand.get_cycles(); } auto cpu::run_pha() -> void |
