1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-06-26 06:29:29 +00:00
8bitworkshop/gen/williams-7INQNAHV.js

4 lines
13 KiB
JavaScript
Raw Normal View History

import{D as _0,F as P0,K as y0,d as N,i as V,q as b0,s as w0}from"./chunk-Z5TYMA6U.js";import{H as D,N as l0,Q as k,S as d0,U as f,V as p0,W as v0,X as A,Z as g,_ as l,g as b}from"./chunk-6HNEHZRR.js";import"./chunk-RQFURXHW.js";var j=8,W0=304,Z=class extends b0{constructor(t){super();this.isDefender=t;this.xtal=12e6;this.cpuFrequency=this.xtal/3/4;this.cpuCyclesPerLine=54;this.canvasWidth=256;this.numTotalScanlines=304;this.numVisibleScanlines=304;this.defaultROMSize=49152;this.rotate=-90;this.sampleRate=1;this.ram=new Uint8Array(49152);this.nvram=new Uint8Array(1024);this.rom=new Uint8Array(49152);this.portsel=0;this.banksel=0;this.watchdog_counter=0;this.watchdog_enabled=!1;this.pia6821=new Uint8Array(8);this.blitregs=new Uint8Array(8);this.palette=new Uint32Array(16);this.screenNeedsRefresh=!1;this.cpuScale=1;this.waitCycles=0;this.palette.fill(4278190080),this.initBus(t),this.initInputs(t),this.initAudio(),this.initCPU()}initInputs(t){var n=A([[f.A,4,1],[f.RIGHT,4,2],[f.B,4,4],[f.VK_X,4,8],[f.P2_START,4,16],[f.START,4,32],[f.LEFT,4,64],[f.DOWN,4,128],[f.UP,6,1],[f.SELECT,0,4],[f.VK_7,0,1],[f.VK_8,0,2],[f.VK_9,0,8]]),s=A([[f.P2_UP,0,1],[f.P2_DOWN,0,2],[f.P2_LEFT,0,4],[f.P2_RIGHT,0,8],[f.START,0,16],[f.P2_START,0,32],[f.UP,0,64],[f.DOWN,0,128],[f.LEFT,2,1],[f.RIGHT,2,2],[f.VK_7,4,1],[f.VK_8,4,2],[f.VK_6,4,4],[f.VK_9,4,8],[f.SELECT,4,16]]),o=t?n:s;this.handler=p0(this.pia6821,o)}initBus(t){var n=l([[1024,1535,511,r=>this.nvram[r]],[2048,2048,0,r=>this.scanline],[3072,3079,7,r=>this.pia6821[r]],[0,4095,0,r=>{}]]),s=l([[0,15,15,this.setPalette.bind(this)],[1020,1023,0,(r,a)=>{a==56&&(this.watchdog_counter=j),this.watchdog_enabled=!0}],[1024,1535,511,(r,a)=>{this.nvram[r]=a}],[3074,3074,1,(r,a)=>{this.worker&&this.worker.postMessage({command:a&63})}],[3072,3079,7,(r,a)=>{this.pia6821[r]=a}],[0,4095,0,(r,a)=>{}]]),o=l([[0,49151,65535,r=>this.ram[r]],[49152,53247,4095,r=>{switch(this.banksel){case 0:return n(r);case 1:return this.rom[r+12288];case 2:return this.rom[r+16384];case 3:return this.rom[r+20480];case 7:return this.rom[r+24576];default:return 0}}],[53248,65535,65535,r=>this.rom?this.rom[r-53248]:0]]),v=l([[0,38911,0,this.write_display_byte.bind(this)],[38912,49151,0,(r,a)=>{this.ram[r]=a}],[49152,53247,4095,s.bind(this)],[53248,57343,0,(r,a)=>{this.banksel=a&7}],[0,65535,0,(r,a)=>{}]]),m=l([[2052,2055,3,r=>this.pia6821[r]],[2060,2063,3,r=>this.pia6821[r+4]],[2816,3071,0,r=>this.scanline],[3072,4095,1023,r=>this.nvram[r]],[0,4095,0,r=>{}]]),h=l([[0,15,15,this.setPalette.bind(this)],[2060,2060,15,(r,a)=>{this.worker&&this.worker.postMessage({command:a})}],[2304,2559,0,(r,a)=>{this.banksel=a&1}],[2560,2567,7,this.setBlitter.bind(this)],[3071,3071,0,(r,a)=>{a==57&&(this.watchdog_counter=j,this.watchdog_enabled=!0)}],[3072,4095,1023,(r,a)=>{this.nvram[r]=a}]]),p=l([[0,36863,65535,r=>this.banksel?this.rom[r]:this.ram[r]],[36864,49151,65535,r=>this.ram[r]],[49152,53247,4095,m],[53248,65535,65535,r=>this.rom?this.rom[r-16384]:0]]),u=l([[0,38911,0,this.write_display_byte.bind(this)],[38912,49151,0,(r,a)=>{this.ram[r]=a}],[49152,53247,4095,h.bind(this)]]),y=t?o:p,C=t?v:u;this.membus={read:y,write:C},this.membus=this.probeMemoryBus(this.membus),this.readAddress=this.membus.read}initAudio(){this.master=new N,this.worker=new Worker("./src/common/audio/z80worker.js");let t=new V(this.worker);this.master.master.addChannel(t)}initCPU(){this.rom=new Uint8Array(this.defaultROMSize),this.cpu=this.newCPU(this.membus)}newCPU(t){var n=Object.create(w0());return n.init(t.write,t.read,0),n}setPalette(t,n){var s=4278190080|(n&7)<<5|(n>>3&7)<<13|n>>6<<22;s!=this.palette[t]&&(this.palette[t]=s,this.screenNeedsRefresh=!0)}write_display_byte(t,n){this.ram[t]=n,this.drawDisplayByte(t,n),this.displayPCs&&(this.displayPCs[t]=this.cpu.getPC())}drawDisplayByte(t,n){var s=(t&65280)<<1|t&255^255;this.pixels[s]=this.palette[n>>4],this.pixels[s+256]=this.palette[n&15]}setBlitter(t,n){if(t)this.blitregs[t]=n;else{var s=this.doBlit(n);this.waitCycles-=s*this.cpuScale}}doBlit(t){t&=255;var n=W0-this.blitregs[7],s=(this.blitregs[2]<<8)+this.blitregs[3],o=
BLIT `+b(o,4)+" "+b(v,4)+" w:"+b(m)+" h:"+b(h)+" f:"+b(s[0])+" s:"+b(s[1])}},L0=function(M,t){this.__proto__=new J(M,null,{isDefender:!0}),this.getMemoryMap=function(){return{main:[{name:"NVRAM",start:1024,size:512,type:"ram"},{name:"Video RAM",start:0,size:49152,type:"ram"},{name:"I/O Registers",start:49152,size:4096,type:"io"},{name:"ROM",start:53248,size:12288,type:"rom"}]}}},M0=class extends y0{newMachine(){return new Z(!1)}getPresets(){return R0}getDefaultExtension(){return".c"}readAddress(t){return this.machine.readConst(t)}getMemoryMap(){return{main:[{name:"Video RAM",start:0,size:49152,type:"ram"},{name:"I/O Registers",start:49152,size:3072,type:"io"},{name:"NVRAM",start:52224,size:1024,type:"ram"},{name:"ROM",start:53248,size:12288,type:"rom"}]}}};D.williams=M0;D["williams.old"]=N0;D["williams-defender"]=L0;D["williams-z80"]=V0;
//# sourceMappingURL=williams-7INQNAHV.js.map