srctree

Johan Norberg parent 1d8090b9 6974002d
Add undocumented op code 0x89 for nop immediate

core/include/nes/core/opcode.h added: 18, removed: 6, total 12
@@ -132,6 +132,7 @@ enum Instruction : uint8_t {
StxZeropage = 0x86,
SaxZeropage = 0x87, // Undocumented
DeyImplied = 0x88,
NopImmediate89 = 0x89, // Undocumented
TxaImplied = 0x8A,
StyAbsolute = 0x8C,
StaAbsolute = 0x8D,
@@ -461,6 +462,8 @@ struct Opcode {
return {Family::STX, StxZeropage, AddressMode::Zeropage};
case DeyImplied:
return {Family::DEY, DeyImplied, AddressMode::Implied};
case NopImmediate89:
return {Family::NOP, NopImmediate89, AddressMode::Immediate};
case TxaImplied:
return {Family::TXA, TxaImplied, AddressMode::Implied};
case StyAbsolute:
 
core/src/mos6502.cpp added: 18, removed: 6, total 12
@@ -442,6 +442,7 @@ Pipeline Mos6502::parse_next_instruction() {
case Instruction::NopImpliedFA:
case Instruction::NopImmediate80:
case Instruction::NopImmediate82:
case Instruction::NopImmediate89:
case Instruction::NopZeropage04:
case Instruction::NopZeropageX14:
case Instruction::NopZeropageX34:
 
core/test/src/opcode.h added: 18, removed: 6, total 12
@@ -130,6 +130,7 @@ enum Opcode : uint8_t {
STX_ZERO = 0x86,
SAX_ZERO = 0x87,
DEY = 0x88,
NOP_IMM89 = 0x89,
TXA = 0x8A,
STY_ABS = 0x8C,
STA_ABS = 0x8D,
 
core/test/src/test_cpu.cpp added: 18, removed: 6, total 12
@@ -574,6 +574,13 @@ TEST_F(CpuTest, nop82_immediated) {
step_execution(2);
EXPECT_EQ(expected, registers);
}
TEST_F(CpuTest, nop89_immediate) {
stage_instruction(NOP_IMM89);
expected.pc += 1;
 
step_execution(2);
EXPECT_EQ(expected, registers);
}
TEST_F(CpuTest, nop04_zero) {
stage_instruction(NOP_ZERO04);
expected.pc += 1;
 
romtest/test_rom.py added: 18, removed: 6, total 12
@@ -110,7 +110,7 @@ TESTS = [
pass_pattern="Passed",
cycles=100000000,
failing=True,
), # Missing opcode 0x89
), # Missing opcode 0xC2
Test(
rom="instr_test-v5/rom_singles/04-zero_page.nes",
pass_pattern="Passed",