Skip to content

Commit

Permalink
65C816: fix behavior of mvn and mvp when C=$FFFF (#314)
Browse files Browse the repository at this point in the history
  • Loading branch information
cnelson20 authored Dec 24, 2024
1 parent cf50c59 commit 4b6dd10
Showing 1 changed file with 12 additions and 16 deletions.
28 changes: 12 additions & 16 deletions src/cpu/instructions.h
Original file line number Diff line number Diff line change
Expand Up @@ -829,27 +829,23 @@ static void tsc() {
}

static void mvn() {
if (regs.c != 0xFFFF) {
if (index_16bit()) {
write6502(regs.y++, read6502(regs.x++));
} else {
write6502(regs.yl++, read6502(regs.xl++));
}

regs.c--;
if (index_16bit()) {
write6502(regs.y++, read6502(regs.x++));
} else {
write6502(regs.yl++, read6502(regs.xl++));
}
if (--regs.c != 0xFFFF) {
regs.pc -= 3;
}
}

static void mvp() {
if (regs.c != 0xFFFF) {
if (index_16bit()) {
write6502(regs.y--, read6502(regs.x--));
} else {
write6502(regs.yl--, read6502(regs.xl--));
}

regs.c--;
if (index_16bit()) {
write6502(regs.y--, read6502(regs.x--));
} else {
write6502(regs.yl--, read6502(regs.xl--));
}
if (--regs.c != 0xFFFF) {
regs.pc -= 3;
}
}
Expand Down

0 comments on commit 4b6dd10

Please sign in to comment.