mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-28 08:50:22 +00:00
reload debug break state before resuming, fixes frame de-sync problem
This commit is contained in:
parent
58e3f3f9fb
commit
162113b915
@ -270,6 +270,9 @@ export abstract class BaseDebugPlatform extends BasePlatform {
|
|||||||
this.onBreakpointHit = callback;
|
this.onBreakpointHit = callback;
|
||||||
}
|
}
|
||||||
clearDebug() {
|
clearDebug() {
|
||||||
|
if (this.debugBreakState != null) {
|
||||||
|
this.loadState(this.debugSavedState);
|
||||||
|
}
|
||||||
this.debugSavedState = null;
|
this.debugSavedState = null;
|
||||||
this.debugBreakState = null;
|
this.debugBreakState = null;
|
||||||
this.debugTargetClock = -1;
|
this.debugTargetClock = -1;
|
||||||
|
@ -849,12 +849,12 @@ class VectrexPlatform extends Base6809Platform {
|
|||||||
var frameCycles = 1500000 / 60;
|
var frameCycles = 1500000 / 60;
|
||||||
var cycles = 0;
|
var cycles = 0;
|
||||||
while (cycles < frameCycles) {
|
while (cycles < frameCycles) {
|
||||||
cycles += this.step();
|
cycles += this.nextCycle();
|
||||||
}
|
}
|
||||||
return cycles;
|
return cycles;
|
||||||
}
|
}
|
||||||
|
|
||||||
step() {
|
nextCycle() {
|
||||||
this.probe.logExecute(this.getPC(), this.getSP());
|
this.probe.logExecute(this.getPC(), this.getSP());
|
||||||
if (this.via.ifr & 0x80) {
|
if (this.via.ifr & 0x80) {
|
||||||
this._cpu.interrupt();
|
this._cpu.interrupt();
|
||||||
|
@ -194,6 +194,21 @@ async function testPlatform(platid, romname, maxframes, callback) {
|
|||||||
}
|
}
|
||||||
assert.equal(clks, proberec.countClocks());
|
assert.equal(clks, proberec.countClocks());
|
||||||
}
|
}
|
||||||
|
// debugging
|
||||||
|
let bpState = null;
|
||||||
|
if (platform.setupDebug) {
|
||||||
|
let stated1 = platform.saveState();
|
||||||
|
platform.setupDebug((state,msg) => {
|
||||||
|
bpState = state;
|
||||||
|
});
|
||||||
|
if (platform.step) platform.step();
|
||||||
|
platform.nextFrame();
|
||||||
|
platform.clearDebug();
|
||||||
|
let stated3 = platform.saveState();
|
||||||
|
assert.ok(bpState);
|
||||||
|
console.log(stated1.c.PC, bpState.c.PC, stated3.c.PC);
|
||||||
|
assert.equal(stated1.c.PC, stated3.c.PC);
|
||||||
|
}
|
||||||
// debug tree
|
// debug tree
|
||||||
if (platform.getDebugTree != null) {
|
if (platform.getDebugTree != null) {
|
||||||
var dbgtree = platform.getDebugTree();
|
var dbgtree = platform.getDebugTree();
|
||||||
|
Loading…
Reference in New Issue
Block a user