import{F as Q,d as B,e as w,m as E,n as y}from"./chunk-6UU4KLMR.js";import{H as I,O as n,R as u,T as r,V as b,W as l,Y as a,Z as g,g as o,k as C,l as f,q as c}from"./chunk-7LTJUW24.js";import"./chunk-RQFURXHW.js";var p=[{id:"hello.xasm",name:"Hello World (ASM)"},{id:"hello.c",name:"Hello World (CMOC)"},{id:"joystick.c",name:"Joystick Test (CMOC)"},{id:"threed.c",name:"3D Transformations (CMOC)"}],d=l([[r.LEFT,0,1],[r.RIGHT,0,2],[r.DOWN,0,4],[r.UP,0,8],[r.GP_B,2,1],[r.GP_A,2,2],[r.GP_D,2,4],[r.GP_C,2,8],[r.P2_LEFT,1,1],[r.P2_RIGHT,1,2],[r.P2_DOWN,1,4],[r.P2_UP,1,8],[r.P2_GP_B,2,16],[r.P2_GP_A,2,32],[r.P2_GP_D,2,64],[r.P2_GP_C,2,128]]),D=class{constructor(t){this.ora=0;this.orb=0;this.ddra=0;this.ddrb=0;this.t1on=0;this.t1int=0;this.t1c=0;this.t1ll=0;this.t1lh=0;this.t1pb7=0;this.t2on=0;this.t2int=0;this.t2c=0;this.t2ll=0;this.sr=0;this.srb=0;this.src=0;this.srclk=0;this.acr=0;this.pcr=0;this.ifr=0;this.ier=0;this.ca2=0;this.cb2h=0;this.cb2s=0;this.vectrex=t}reset(){this.ora=0,this.orb=0,this.ddra=0,this.ddrb=0,this.t1on=0,this.t1int=0,this.t1c=0,this.t1ll=0,this.t1lh=0,this.t1pb7=128,this.t2on=0,this.t2int=0,this.t2c=0,this.t2ll=0,this.sr=0,this.srb=8,this.src=0,this.srclk=0,this.acr=0,this.pcr=0,this.ifr=0,this.ier=0,this.ca2=1,this.cb2h=1,this.cb2s=0}int_update(){this.ifr&127&(this.ier&127)?this.ifr|=128:this.ifr&=127}step0(){var t=0;if(this.t1on&&(this.t1c=this.t1c>0?this.t1c-1:65535,(this.t1c&65535)==65535&&(this.acr&64?(this.ifr|=64,this.int_update(),this.t1pb7^=128,this.t1c=this.t1lh<<8|this.t1ll):this.t1int&&(this.ifr|=64,this.int_update(),this.t1pb7=128,this.t1int=0))),this.t2on&&(this.acr&32)==0&&(this.t2c=this.t2c>0?this.t2c-1:65535,(this.t2c&65535)==65535&&this.t2int&&(this.ifr|=32,this.int_update(),this.t2int=0)),this.src=this.src>0?this.src-1:255,(this.src&255)==255?(this.src=this.t2ll,this.srclk?(t=1,this.srclk=0):(t=0,this.srclk=1)):t=0,this.srb<8){switch(this.acr&28){case 0:break;case 4:t&&(this.sr<<=1,this.srb++);break;case 8:this.sr<<=1,this.srb++;break;case 12:break;case 16:t&&(this.cb2s=this.sr>>7&1,this.sr<<=1,this.sr|=this.cb2s);break;case 20:t&&(this.cb2s=this.sr>>7&1,this.sr<<=1,this.sr|=this.cb2s,this.srb++);break;case 24:this.cb2s=this.sr>>7&1,this.sr<<=1,this.sr|=this.cb2s,this.srb++;break;case 28:break}this.srb==8&&(this.ifr|=4,this.int_update())}}step1(){(this.pcr&14)==10&&(this.ca2=1),(this.pcr&224)==160&&(this.cb2h=1)}read(t){var s;switch(t&15){case 0:return this.acr&128?s=this.orb&95|this.t1pb7|this.vectrex.alg.compare:s=this.orb&223|this.vectrex.alg.compare,s&255;case 1:(this.pcr&14)==8&&(this.ca2=0);case 15:return(this.orb&24)==8?s=this.vectrex.psg.readData():s=this.ora,s&255;case 2:return this.ddrb&255;case 3:return this.ddra&255;case 4:return s=this.t1c,this.ifr&=191,this.t1on=0,this.t1int=0,this.t1pb7=128,this.int_update(),s&255;case 5:return this.t1c>>8&255;case 6:return this.t1ll&255;case 7:return this.t1lh&255;case 8:return s=this.t2c,this.ifr&=223,this.t2on=0,this.t2int=0,this.int_update(),s&255;case 9:return this.t2c>>8;case 10:return s=this.sr,this.ifr&=251,this.srb=0,this.srclk=1,this.int_update(),s&255;case 11:return this.acr&255;case 12:return this.pcr&255;case 13:return this.ifr&255;case 14:return(this.ier|128)&255}}write(t,s){switch(t&15){case 0:this.orb=s,this.vectrex.snd_update(),this.vectrex.alg.update(),(this.pcr&224)==128&&(this.cb2h=0);break;case 1:(this.pcr&14)==8&&(this.ca2=0);case 15:this.ora=s,this.vectrex.snd_update(),this.vectrex.alg.xsh=s^128,this.vectrex.alg.update();break;case 2:this.ddrb=s;break;case 3:this.ddra=s;break;case 4:this.t1ll=s;break;case 5:this.t1lh=s,this.t1c=this.t1lh<<8|this.t1ll,this.ifr&=191,this.t1on=1,this.t1int=1,this.t1pb7=0,this.int_update();break;case 6:this.t1ll=s;break;case 7:this.t1lh=s;break;case 8:this.t2ll=s;break;case 9:this.t2c=s<<8|this.t2ll,this.ifr&=223,this.t2on=1,this.t2int=1,this.int_update();break;case 10:this.sr=s,this.ifr&=251,this.srb=0,this.srclk=1,this.int_update();break;case 11:this.acr=s;break;case 12:this.pcr=s,(this.pcr&14)==12?this.ca2=0:this.ca2=1,(this.pcr&224)==192?this.cb2h=0:this.cb2h=1;break;case 13:this.ifr&=~(s&127),this.int_update();break;case 14:s&128?this.ier|=s&127:this.ier&=~(s&127),this.int_update();break}}saveState(){return c(null,{},this)}loadState(t){c(null,this,t)}toLongString(t){var s="";for(var i in t)s+=i+": "+o(t[i])+` `;return s}},A={VECTREX_MHZ:15e5,VECTREX_COLORS:128,ALG_MAX_X:33e3,ALG_MAX_Y:41e3,SCREEN_X_DEFAULT:900,SCREEN_Y_DEFAULT:1100,BOUNDS_MIN_X:0,BOUNDS_MAX_X:3e4,BOUNDS_MIN_Y:41e3,BOUNDS_MAX_Y:0},m=class{constructor(t){this.videoEnabled=!0;this.rsh=0;this.xsh=0;this.ysh=0;this.zsh=0;this.jch0=0;this.jch1=0;this.jch2=0;this.jch3=0;this.jsh=0;this.compare=0;this.dx=0;this.dy=0;this.curr_x=0;this.curr_y=0;this.max_x=A.ALG_MAX_X>>1;this.max_y=A.ALG_MAX_Y>>1;this.vectoring=!1;this.vector_x0=0;this.vector_y0=0;this.vector_x1=0;this.vector_y1=0;this.vector_dx=0;this.vector_dy=0;this.vector_color=0;this.vectrex=t}reset(){this.rsh=128,this.xsh=128,this.ysh=128,this.zsh=0,this.jch0=128,this.jch1=128,this.jch2=128,this.jch3=128,this.jsh=128,this.compare=0,this.dx=0,this.dy=0,this.curr_x=A.ALG_MAX_X>>1,this.curr_y=A.ALG_MAX_Y>>1,this.vectoring=!1}update(){var t=this.vectrex.via;switch(t.orb&6){case 0:this.jsh=this.jch0,(t.orb&1)==0&&(this.ysh=this.xsh);break;case 2:this.jsh=this.jch1,(t.orb&1)==0&&(this.rsh=this.xsh);break;case 4:this.jsh=this.jch2,(t.orb&1)==0&&(this.xsh>128?this.zsh=this.xsh-128:this.zsh=0);break;case 6:this.jsh=this.jch3;break}this.jsh>this.xsh?this.compare=32:this.compare=0,this.dx=this.xsh-this.rsh,this.dy=this.rsh-this.ysh}step(){var t=this.vectrex.via,s=0,i=0,h=0,e=0;t.acr&16?e=t.cb2s:e=t.cb2h,t.ca2==0?(s=this.max_x-this.curr_x,i=this.max_y-this.curr_y):(t.acr&128?h=t.t1pb7:h=t.orb&128,h==0?(s=this.dx,i=this.dy):(s=0,i=0)),this.vectoring?e==0?(this.vectoring=!1,this.addline(this.vector_x0,this.vector_y0,this.vector_x1,this.vector_y1,this.vector_color)):(s!=this.vector_dx||i!=this.vector_dy||(this.zsh&255)!=this.vector_color)&&(this.addline(this.vector_x0,this.vector_y0,this.vector_x1,this.vector_y1,this.vector_color),this.curr_x>=0&&this.curr_x=0&&this.curr_y=0&&this.curr_x=0&&this.curr_y=0&&this.curr_x=0&&this.curr_ythis.rom&&this.rom[s]],[51200,53247,1023,s=>this.ram[s]],[53248,57343,15,s=>this.via.read(s)],[57344,65535,8191,s=>this.bios&&this.bios[s]]]),write:g([[51200,53247,1023,(s,i)=>{this.ram[s]=i}],[53248,55295,1023,(s,i)=>{this.via.write(s&15,i)}],[55296,57343,1023,(s,i)=>{this.ram[s]=i,this.via.write(s&15,i)}]])};this.bus={read:s=>{var i=t.read(s);return this.probe.logRead(s,i),i},write:(s,i)=>{this.probe.logWrite(s,i),t.write(s,i)}},this._cpu=this.newCPU(this.bus),this.video=new n(this.mainElement,A.SCREEN_X_DEFAULT,A.SCREEN_Y_DEFAULT),this.video.persistenceAlpha=.2,this.audio=new B,this.psg=new w(this.audio),this.video.create(),this.timer=new u(60,this.nextFrame.bind(this)),b(this.video,this.inputs,d)}updateControls(){this.alg.jch0=this.inputs[0]&1?0:this.inputs[0]&2?255:128,this.alg.jch1=this.inputs[0]&4?0:this.inputs[0]&8?255:128,this.alg.jch2=this.inputs[1]&1?0:this.inputs[1]&2?255:128,this.alg.jch3=this.inputs[1]&4?0:this.inputs[1]&8?255:128,this.psg.psg.register[14]=~this.inputs[2]}advance(t){t||this.video.clear(),this.alg.videoEnabled=!t,this.updateControls(),this.probe.logNewFrame();for(var s=15e5/60,i=0;i