1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-10-01 04:56:14 +00:00
8bitworkshop/gen/chunk-5B4VPQ4V.js

3 lines
4.3 KiB
JavaScript

import{K as a,L as l}from"./chunk-ZDSSTLWD.js";var u=class{constructor(t){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=t}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var t={controls:this.platform.saveControlsState(),seed:a()},e=!1;return this.lastSeekFrame<this.frameCount?this.loadControls(this.lastSeekFrame):(this.platform.saveControlsState&&this.framerecs.push(t),e=this.frameCount++%this.checkpointInterval==0),this.lastSeekFrame++,this.lastSeekStep=0,this.callbackStateChanged&&this.callbackStateChanged(),e}numFrames(){return this.frameCount}currentFrame(){return this.lastSeekFrame}currentStep(){return this.lastSeekStep}recordFrame(t){this.checkpoints.push(t),this.callbackNewCheckpoint&&this.callbackNewCheckpoint(t),this.checkpoints.length>this.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(t){if(t<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var e=Math.floor(t/this.checkpointInterval),s=e<this.checkpoints.length?e:this.checkpoints.length-1,h=s*this.checkpointInterval;return{frame:h,state:this.checkpoints[s]}}loadFrame(t,e){if(t|=0,e|=0,t==this.lastSeekFrame&&e==this.lastSeekStep)return t;let{frame:s,state:h}=this.getStateAtOrBefore(t-1);if(h){var n=0;for(this.platform.pause(),this.platform.loadState(h);s<t;)s<this.framerecs.length&&this.loadControls(s),s++,n=this.platform.advance(s<t);return s==0&&(n=this.platform.advance(!0),this.platform.loadState(h)),e>0&&this.platform.advanceFrameClock&&(e=this.platform.advanceFrameClock(null,e)),this.lastSeekFrame=t,this.lastSeekStep=e,this.lastStepCount=n,t}else return-1}loadControls(t){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[t].controls),l(this.framerecs[t].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}},r;(function(i){i[i.CLOCKS=0]="CLOCKS",i[i.EXECUTE=16777216]="EXECUTE",i[i.HAS_VALUE=268435456]="HAS_VALUE",i[i.MEM_READ=301989888]="MEM_READ",i[i.MEM_WRITE=318767104]="MEM_WRITE",i[i.IO_READ=335544320]="IO_READ",i[i.IO_WRITE=352321536]="IO_WRITE",i[i.VRAM_READ=369098752]="VRAM_READ",i[i.VRAM_WRITE=385875968]="VRAM_WRITE",i[i.INTERRUPT=134217728]="INTERRUPT",i[i.ILLEGAL=150994944]="ILLEGAL",i[i.SP_PUSH=167772160]="SP_PUSH",i[i.SP_POP=184549376]="SP_POP",i[i.SCANLINE=2113929216]="SCANLINE",i[i.FRAME=2130706432]="FRAME"})(r||(r={}));var m=class{constructor(t,e){this.idx=0;this.sl=0;this.cur_sp=-1;this.singleFrame=!0;this.m=t,this.reset(e||1048576)}start(){this.m.connectProbe(this)}stop(){this.m.connectProbe(null)}reset(t){t&&(this.buf=new Uint32Array(t)),this.sl=0,this.cur_sp=-1,this.clear()}clear(){this.idx=0}logData(t){this.log(t)}log(t){this.idx>=this.buf.length||(this.buf[this.idx++]=t)}relog(t){this.buf[this.idx-1]=t}lastOp(){return this.idx>0?this.buf[this.idx-1]&4278190080:-1}lastAddr(){return this.idx>0?this.buf[this.idx-1]&16777215:-1}addLogBuffer(t){this.idx+t.length>this.buf.length&&(t=t.slice(0,this.buf.length-this.idx)),this.buf.set(t,this.idx),this.idx+=t.length}logClocks(t){t|=0,t>0&&(this.lastOp()==0?this.relog(this.lastAddr()+t|0):this.log(t|0))}logNewScanline(){this.log(2113929216),this.sl++}logNewFrame(){this.log(2130706432),this.sl=0,this.singleFrame&&this.clear()}logExecute(t,e){this.cur_sp!==e&&(e<this.cur_sp&&this.log(167772160|e),e>this.cur_sp&&this.log(184549376|e),this.cur_sp=e),this.log(t|16777216)}logInterrupt(t){this.log(t|134217728)}logValue(t,e,s){this.log(t&65535|(e&255)<<16|s)}logRead(t,e){this.logValue(t,e,301989888)}logWrite(t,e){this.logValue(t,e,318767104)}logIORead(t,e){this.logValue(t,e,335544320)}logIOWrite(t,e){this.logValue(t,e,352321536)}logVRAMRead(t,e){this.logValue(t,e,369098752)}logVRAMWrite(t,e){this.logValue(t,e,385875968)}logIllegal(t){this.log(t|150994944)}countEvents(t){for(var e=0,s=0;s<this.idx;s++)(this.buf[s]&4278190080)==t&&e++;return e}countClocks(){for(var t=0,e=0;e<this.idx;e++)(this.buf[e]&4278190080)==0&&(t+=this.buf[e]&65535);return t}};export{u as a,r as b,m as c};
//# sourceMappingURL=chunk-5B4VPQ4V.js.map