summaryrefslogtreecommitdiff
path: root/src/nes/cpu.cc
diff options
context:
space:
mode:
authorHannes Schulze <haschu0103@outlook.de>2025-01-23 19:37:32 +0100
committerHannes Schulze <haschu0103@outlook.de>2025-01-23 19:37:32 +0100
commit6512dd599d13035f6a90b2009344e02c488f5aae (patch)
tree5d19f043aac57c5cec6edc8221d5ec9057d49ab3 /src/nes/cpu.cc
parentbaa585fd21f631708de215929241d40f66b58498 (diff)
initial working version
Diffstat (limited to 'src/nes/cpu.cc')
-rw-r--r--src/nes/cpu.cc20
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