Implemented SNA files. More OpCodes. Chuckie Egg Title SCreen!

This commit is contained in:
2026-04-19 00:26:00 +01:00
parent 717c431b9c
commit ed64eb2ebe
4 changed files with 204 additions and 23 deletions

View File

@@ -323,6 +323,7 @@ namespace Desktop
case 0x08:
mnemonic = "EX AF, AF'";
break;
case 0x0A: mnemonic = "LD A, (BC)"; break;
case 0x12: mnemonic = "LD (DE), A"; break;
case 0x13: mnemonic = "INC DE"; break;
case 0x33: mnemonic = "INC SP"; break;
@@ -391,9 +392,7 @@ namespace Desktop
break;
case 0x18:
sbyte dUnconditional = (sbyte)_memoryBus.Read((ushort)(currentPc + 1));
// Calculate the target address based on the PC *after* this 2-byte instruction
ushort targetAddressUnconditional = (ushort)(currentPc + 2 + dUnconditional);
mnemonic = $"JR 0x{targetAddressUnconditional:X4}";
instructionLength = 2;
break;
@@ -981,6 +980,7 @@ namespace Desktop
switch (extendedOp)
{
case 0x42: mnemonic = "SBC HL, BC"; instructionLength = 2; break;
case 0x43:
ushort bcAddr = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
mnemonic = $"LD (0x{bcAddr:X4}), BC";
@@ -994,11 +994,17 @@ namespace Desktop
mnemonic = "LD I, A";
instructionLength = 2; // 0xED + 0x47
break;
// Inside your ED prefix switch statement in the debugger:
case 0x4A: mnemonic = "ADC HL, BC"; instructionLength = 2; break;
case 0x4B:
ushort addr4B = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
mnemonic = $"LD BC, (0x{addr4B:X4})";
instructionLength = 4;
break;
case 0x4D:
mnemonic = "RETI";
instructionLength = 2;
break;
case 0x52:
mnemonic = "SBC HL, DE";
instructionLength = 2; // ED 52
@@ -1012,11 +1018,14 @@ namespace Desktop
mnemonic = "IM 1";
instructionLength = 2;
break;
case 0x5A: mnemonic = "ADC HL, DE"; instructionLength = 2; break;
case 0x5B:
ushort addr5B = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
mnemonic = $"LD DE, (0x{addr5B:X4})";
instructionLength = 4;
break;
case 0x6A: mnemonic = "ADC HL, HL"; instructionLength = 2; break;
case 0x62: mnemonic = "SBC HL, HL"; instructionLength = 2; break;
case 0x73:
ushort addr73 = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
mnemonic = $"LD (0x{addr73:X4}), SP";
@@ -1030,6 +1039,7 @@ namespace Desktop
mnemonic = "IN A, (C)";
instructionLength = 2;
break;
case 0x7A: mnemonic = "ADC HL, SP"; instructionLength = 2; break;
case 0x7B: // LD SP, (nn)
ushort nn = (ushort)(_memoryBus.Read((ushort)(currentPc + 2)) | (_memoryBus.Read((ushort)(currentPc + 3)) << 8));
mnemonic = $"LD SP, (0x{nn:X4})";