From 5d1f4a2a0e01f14627816eda80eded7914564227 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Tue, 30 Jul 2024 20:52:04 +0200 Subject: [PATCH] Fixed undefined order of startup vector peeks Added ELF test ROMs --- src/emucore/M6502.cxx | 5 ++++- .../ELF/MattressMonkeys20240530rc4.bin | Bin 0 -> 85348 bytes test/roms/bankswitching/ELF/raycaster.bin | Bin 0 -> 8392 bytes 3 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 test/roms/bankswitching/ELF/MattressMonkeys20240530rc4.bin create mode 100644 test/roms/bankswitching/ELF/raycaster.bin diff --git a/src/emucore/M6502.cxx b/src/emucore/M6502.cxx index b7bc92533..dd01f9d18 100644 --- a/src/emucore/M6502.cxx +++ b/src/emucore/M6502.cxx @@ -81,7 +81,9 @@ void M6502::reset() icycles = 0; // Load PC from the reset vector - PC = static_cast(mySystem->peek(0xfffc)) | (static_cast(mySystem->peek(0xfffd)) << 8); + // Note: ELF needs the correct order here! + PC = static_cast(mySystem->peek(0xfffc)); + PC |= (static_cast(mySystem->peek(0xfffd)) << 8); myLastAddress = myLastPeekAddress = myLastPokeAddress = myLastPeekBaseAddress = myLastPokeBaseAddress = 0; @@ -415,6 +417,7 @@ inline void M6502::_execute(uInt64 cycles, DispatchResult& result) #endif } + // JTZ, TODO: This code seems to be superfluous for a 6507: // See if we need to handle an interrupt if((myExecutionStatus & MaskableInterruptBit) || (myExecutionStatus & NonmaskableInterruptBit)) diff --git a/test/roms/bankswitching/ELF/MattressMonkeys20240530rc4.bin b/test/roms/bankswitching/ELF/MattressMonkeys20240530rc4.bin new file mode 100644 index 0000000000000000000000000000000000000000..2cdc154014d703c1f57ce15f58091f85b50cef3f GIT binary patch literal 85348 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
Zs5ndt>CDF)nHHuV4O3iSJ&KyC$w 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 Yv--n0KI|JO%XP6Izbn_&e>BSd2O_P;w*UYD literal 0 HcmV?d00001 diff --git a/test/roms/bankswitching/ELF/raycaster.bin b/test/roms/bankswitching/ELF/raycaster.bin new file mode 100644 index 0000000000000000000000000000000000000000..bfe285258ac1eb41d5d655e96923a8f9fd3a539e GIT binary patch literal 8392 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 MXcT?^sYA8<8>{%pO#lD@ literal 0 HcmV?d00001