summaryrefslogtreecommitdiff
path: root/src/nes/cpu.cc
diff options
context:
space:
mode:
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