private int CMOSResolve(ICpu cpu, ref byte[] raw) { int loc = LEHelper.From(raw); byte[] target = new byte[] { cpu.Memory.Get(loc), cpu.Memory.Get(loc + 1) }; return(LEHelper.From(target)); }
public override int Resolve(ICpu cpu, ref byte[] raw) { int memAddr = (raw[0] + cpu.X.Value) % 256; int memAddr2 = (memAddr + 1) % 256; byte[] target = { cpu.Memory.Get(memAddr), cpu.Memory.Get(memAddr2) }; return(LEHelper.From(target)); }
private int NMOSResolve(ICpu cpu, ref byte[] raw) { int firstLoc = LEHelper.From(raw); // 6502 bug (https://everything2.com/node/868510) raw[0] = (byte)((raw[0] + 1) % 256); int secondLoc = LEHelper.From(raw); byte[] target = { cpu.Memory.Get(firstLoc), cpu.Memory.Get(secondLoc) }; return(LEHelper.From(target)); }
public override int Resolve(ICpu cpu, ref byte[] raw) { int memAddr = raw[0]; int memAddr2 = (memAddr + 1) % 256; byte[] target = { cpu.Memory.Get(memAddr), cpu.Memory.Get(memAddr2) }; // carry 1 cycle penalty int lower = target[0] + cpu.Y.Value; if (cpu.Type == CPUType.CMOS || lower > 0xFF) { cpu.SleepCycles++; } int address = LEHelper.From(target); return(address + cpu.Y.Value); }
public void ReturnsCorrectArray(int input, int bytes, byte[] expected) { byte[] res = LEHelper.To(input, bytes); Assert.Equal(expected, res); }
public void ReturnsCorrectNumber(byte[] input, int expected) { int res = LEHelper.From(input); Assert.Equal(expected, res); }
public override int Resolve(ICpu cpu, ref byte[] raw) { return(LEHelper.From(raw)); }