1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-10-18 00:24:04 +00:00
8bitworkshop/gen/chunk-JM5NHRL4.js.map

8 lines
13 KiB
Plaintext
Raw Normal View History

{
"version": 3,
"sources": ["../src/common/recorder.ts"],
"sourcesContent": ["\nimport { Platform, EmuState, EmuControlsState, EmuRecorder } from \"./baseplatform\";\nimport { getNoiseSeed, setNoiseSeed } from \"./emu\";\n\n// RECORDER\n\ntype FrameRec = {controls:EmuControlsState, seed:number};\n\nexport class StateRecorderImpl implements EmuRecorder {\n \n checkpointInterval : number = 10;\n callbackStateChanged : () => void;\n callbackNewCheckpoint : (state:EmuState) => void;\n maxCheckpoints : number = 300;\n \n platform : Platform;\n checkpoints : EmuState[];\n framerecs : FrameRec[];\n frameCount : number;\n lastSeekFrame : number;\n lastSeekStep : number;\n lastStepCount : number;\n \n constructor(platform : Platform) {\n this.reset();\n this.platform = platform;\n }\n\n reset() {\n this.checkpoints = [];\n this.framerecs = [];\n this.frameCount = 0;\n this.lastSeekFrame = 0;\n this.lastSeekStep = 0;\n this.lastStepCount = 0;\n if (this.callbackStateChanged) this.callbackStateChanged();\n }\n\n frameRequested() : boolean {\n var controls = {\n controls:this.platform.saveControlsState(),\n seed:getNoiseSeed()\n };\n var requested = false;\n // are we replaying? then we don't need to save a frame, just replace controls\n if (this.lastSeekFrame < this.frameCount) {\n this.loadControls(this.lastSeekFrame);\n } else {\n // record the control state, if available\n if (this.platform.saveControlsState) {\n this.framerecs.push(controls);\n }\n // time to save next frame?\n requested = (this.frameCount++ % this.checkpointInterval) == 0;\n }\n this.lastSeekFrame++;\n this.lastSeekStep = 0;\n if (this.callbackStateChanged) this.callbackStateChanged();\n return requested;\n }\n \n numFrames() : number {\n return this.frameCount;\n }\n \n currentFrame() : number {\n return this.lastSeekFrame;\n }\n\n currentStep() : number {\n return this.lastSeekStep;\n }\n\n recordFrame(state : EmuState) {\n this.checkpoints.push(state);\n if (this.callbackNewCheckpoint) this.callbackNewCheckpoint(state);\n // checkpoints full?\n if (this.checkpoints.length > this.maxCheckpoints) {\n this.checkpoints.shift(); // remove 1st checkpoint\n this.framerecs = this.framerecs.slice(this.checkpointInterval);\n this.lastSeekFrame -= this.checkpointInterval;\n this.frameCount -= this.checkpointInterval;\n if (this.callbackStateChanged) this.callbackStateChanged();\n }\n }\n\n getStateAtOrBefore(frame : number) : {frame : number, state : EmuState} {\n // initial frame?\n if (frame <= 0 && this.checkpoints.length > 0)\n return {frame:0, state:this.checkpoints[0]};\n\n var bufidx = Math.floor(frame / this.checkpointInterval);\n var foundidx = bufidx < this.checkpoints.length ? bufidx : this.checkpoints.length-1;\n var foundframe = foundidx * this.checkpointInterval;\n return {frame:foundframe, state:this.checkpoints[foundidx]};\n }\n\n loadFrame(seekframe : number, seekstep? : number) : number {\n seekframe |= 0;\n seekstep |= 0;\n if (seekframe == this.lastSeekFrame && seekstep == this.lastSeekStep) {\n return seekframe; // already set to this frame\n }\n // TODO: what if < 1?\n let {frame,state} = this.getStateAtOrBefore(seekframe-1);\n if (state) {\n var numSteps = 0;\n this.platform.pause();\n this.platform.loadState(state);\n // seek to frame index\n while (frame < seekframe) {\n if (frame < this.framerecs.length) {\n this.loadControls(frame);\n }\n frame++;\n numSteps = this.platform.advance(frame < seekframe); // TODO: infinite l
"mappings": "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",
"names": []
}