emu_nes

An NES emulator for learning how the 6502 and similar computers of the era worked
Log | Files | Refs | README | LICENSE

commit 5535e5de70684dd8406e53d6ce928faf9011336c
parent 4b7fae00103c9fbaeeba45a78a7d0c910d243dc0
Author: vin <git@vineetk.net>
Date:   Sun, 30 Jun 2024 06:28:41 -0400

change SBC to be ADC with one's complement instead of two's

It seems that is what was expected when run with nestest.

Diffstat:
Mcpu.c | 8+++++---
1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/cpu.c b/cpu.c @@ -664,7 +664,7 @@ static void sbc(uint8_t arg) { /* SBC is described online as ADC with argument as two's complement */ - adc(~arg + 1); + adc(~arg); } static void @@ -733,7 +733,8 @@ tay(void) static void tsx(void) { - regs.x = PULL(); +// regs.x = PULL(); + regs.x = regs.sp; STATUS_UPDATE_ZERO(regs.x); STATUS_UPDATE_NEGATIVE(regs.x); @@ -751,7 +752,8 @@ txa(void) static void txs(void) { - PUSH(regs.x); +// PUSH(regs.x); + regs.sp = regs.x; } static void