/
bundle.js
1 lines (1 loc) 路 8.61 KB
/
bundle.js
1
!function(n){function r(e){if(t[e])return t[e].exports;var o=t[e]={exports:{},id:e,loaded:!1};return n[e].call(o.exports,o,o.exports,r),o.loaded=!0,o.exports}var t={};return r.m=n,r.c=t,r.p="",r(0)}([function(n,r,t){"use strict";var e=t(2),o={el:"#app",width:500,speed:1},u=new XMLHttpRequest;u.open("GET","/roms/PONG",!0),u.responseType="arraybuffer",u.onload=function(){var n=new Uint8Array(u.response);e.load(n,o)},u.send()},function(n,r,t){"use strict";var e=function(){function n(n,r){var t=[],e=!0,o=!1,u=void 0;try{for(var i,a=n[Symbol.iterator]();!(e=(i=a.next()).done)&&(t.push(i.value),!r||t.length!==r);e=!0);}catch(n){o=!0,u=n}finally{try{!e&&a.return&&a.return()}finally{if(o)throw u}}return t}return function(r,t){if(Array.isArray(r))return r;if(Symbol.iterator in Object(r))return n(r,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=t(3).getIns,u=t(4),i=function(n){var r=new Uint8Array(4095),t=[240,144,144,144,240,32,96,32,32,112,240,16,240,128,240,240,16,240,16,240,144,144,240,16,16,240,128,240,16,240,240,128,240,144,240,240,16,32,64,64,240,144,240,144,240,240,144,240,16,240,240,144,240,144,144,224,144,224,144,224,240,128,128,128,240,224,144,144,144,224,240,128,240,128,240,240,128,240,128,128];return n.forEach(function(n,t){return r[t+512]=n}),t.forEach(function(n,t){return r[t]=n}),r},a=function(n,r){return n[r]<<8|n[r+1]},c={"0nnn":function(n,r){var t=e(n,3);t[2];throw r.PC+=2,"0nnn"},"00E0":function(n,r){return u.clear(),r.PC+=2,r},"00EE":function(n,r){return r.PC=r.STACK[--r.SP]+2,r},"1nnn":function(n,r){var t=e(n,3),o=t[2];return r.PC=o,r},"2nnn":function(n,r){var t=e(n,3),o=t[2];return r.STACK[r.SP++]=r.PC,r.PC=o,r},"3xkk":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]===u?r.PC+=4:r.PC+=2,r},"4xkk":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]!==u?r.PC+=4:r.PC+=2,r},"5xy0":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]===r.V[u]?r.PC+=4:r.PC+=2,r},"6xkk":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]=u,r.PC+=2,r},"7xkk":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]+=u,r.PC+=2,r},"8xy0":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]=r.V[u],r.PC+=2,r},"8xy1":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]=r.V[o]|r.V[u],r.PC+=2,r},"8xy2":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]=r.V[o]&r.V[u],r.PC+=2,r},"8xy3":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]=r.V[o]^r.V[u],r.PC+=2,r},"8xy4":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[15]=r.V[o]+r.V[u]>255?1:0,r.V[o]=r.V[o]+r.V[u],r.PC+=2,r},"8xy5":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[15]=r.V[o]>r.V[u]?1:0,r.V[o]=r.V[o]-r.V[u],r.PC+=2,r},"8xy6":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[15]=1&r.V[u],r.V[o]=r.V[u]>>1,r.PC+=2,r},"8xy7":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[15]=r.V[u]>r.V[o]?1:0,r.V[o]=r.V[u]-r.V[o],r.PC+=2,r},"8xyE":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[15]=r.V[u]>>7,r.V[o]=r.V[u]<<1,r.PC+=2,r},"9xy0":function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]!==r.V[u]?r.PC+=4:r.PC+=2,r},Annn:function(n,r){var t=e(n,3),o=t[2];return r.I=o,r.PC+=2,r},Bnnn:function(n,r){var t=e(n,3),o=t[2];return r.PC=o+r.V[0],r},Cxkk:function(n,r){var t=e(n,4),o=t[2],u=t[3];return r.V[o]=parseInt(255*Math.random())&u,r.PC+=2,r},Dxyn:function(n,r){var t=e(n,5),o=t[2],i=t[3],a=t[4];return r.V[15]=u.draw(r.V[o],r.V[i],a,r),r.PC+=2,r},Ex9E:function(n,r){var t=e(n,3),o=t[2];return r.KEYS[r.V[o]]?r.PC+=4:r.PC+=2,r},ExA1:function(n,r){var t=e(n,3),o=t[2];return r.KEYS[r.V[o]]?r.PC+=2:r.PC+=4,r},Fx07:function(n,r){var t=e(n,3),o=t[2];return r.V[o]=r.DELAY,r.PC+=2,r},Fx0A:function(n,r){var t=e(n,3),o=t[2],u=parseInt(16*Math.random());return console.log("Mock press",u.toString(16)),r.V[o]=u,r.PC+=2,r},Fx15:function(n,r){var t=e(n,3),o=t[2];return r.DELAY=r.V[o],r.PC+=2,r},Fx18:function(n,r){var t=e(n,3),o=t[2];return r.SOUND=r.V[o],r.PC+=2,r},Fx1E:function(n,r){var t=e(n,3),o=t[2];return r.I=r.I+r.V[o],r.PC+=2,r},Fx29:function(n,r){var t=e(n,3),o=t[2];return r.I=5*r.V[o],r.PC+=2,r},Fx33:function(n,r){var t=e(n,3),o=t[2];return r.MEM[r.I]=Math.floor(r.V[o]/100),r.MEM[r.I+1]=Math.floor(r.V[o]%100/10),r.MEM[r.I+2]=r.V[o]%10,r.PC+=2,r},Fx55:function(n,r){for(var t=e(n,3),o=t[2],u=0;u<=o;u++)r.MEM[r.I++]=r.V[u];return r.PC+=2,r},Fx65:function(n,r){for(var t=e(n,3),o=t[2],u=0;u<=o;u++)r.V[u]=r.MEM[r.I++];return r.PC+=2,r}},f=function(n,r,t){function e(){var n=5;for(r.DELAY=Math.max(0,r.DELAY-1);n>0;){var t=o(a(r.MEM,r.PC));try{c[t[0]](t,r)}catch(n){throw console.log("\nLast state:"),console.log({INS:t,V:Array.from(r.V).map(function(n){return n.toString(16)}).join(" "),I:"0x"+r.I.toString(16),PC:"0x"+r.PC.toString(16),SP:r.SP,STACK:r.STACK}),n}n--}requestAnimationFrame(e)}requestAnimationFrame(e)};n.exports={initMem:i,ops:c,load:function(n,r){var t={MEM:i(n),V:new Uint8Array(16),STACK:new Uint16Array(16),KEYS:Array.from({length:16},function(n){return!1}),I:0,PC:512,SP:0,DELAY:0,SOUND:0};u.init(r),"undefined"!=typeof window&&(window.KEYS=t.KEYS),f(n,t,r)}}},function(n,r,t){"use strict";var e=t(1),o=function(n,r){e.load(n,r)};"undefined"!=typeof window&&(window.chip8={load:o}),n.exports={load:o}},function(n,r){"use strict";var t=function(n){return 224===n?["00E0","CLS"]:238===n?["00EE","RET"]:n>>>12===0?["0nnn","SYS",4095&n]:n>>>12===1?["1nnn","JP",4095&n]:n>>>12===2?["2nnn","CALL",4095&n]:n>>>12===3?["3xkk","SE",(3840&n)>>>8,255&n]:n>>>12===4?["4xkk","SNE",(3840&n)>>>8,255&n]:n>>>12===5&&0===(15&n)?["5xy0","SE",(3840&n)>>>8,(240&n)>>>4]:n>>>12===6?["6xkk","LD",(3840&n)>>>8,255&n]:n>>>12===7?["7xkk","ADD",(3840&n)>>>8,255&n]:n>>>12===8&&0===(15&n)?["8xy0","LD",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&1===(15&n)?["8xy1","OR",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&2===(15&n)?["8xy2","AND",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&3===(15&n)?["8xy3","XOR",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&4===(15&n)?["8xy4","ADD",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&5===(15&n)?["8xy5","SUB",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&6===(15&n)?["8xy6","SHR",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&7===(15&n)?["8xy7","SUBN",(3840&n)>>>8,(240&n)>>>4]:n>>>12===8&&14===(15&n)?["8xyE","SHL",(3840&n)>>>8,(240&n)>>>4]:n>>>12===9&&0===(15&n)?["9xy0","SNE",(3840&n)>>>8,(240&n)>>>4]:n>>>12===10?["Annn","LD",4095&n]:n>>>12===11?["Bnnn","JP",4095&n]:n>>>12===12?["Cxkk","RND",(3840&n)>>>8,255&n]:n>>>12===13?["Dxyn","DRW",(3840&n)>>>8,(240&n)>>>4,15&n]:n>>>12===14&&158===(255&n)?["Ex9E","SKP",(3840&n)>>>8]:n>>>12===14&&161===(255&n)?["ExA1","SKNP",(3840&n)>>>8]:n>>>12===15&&7===(255&n)?["Fx07","LD",(3840&n)>>>8]:n>>>12===15&&10===(255&n)?["Fx0A","LD",(3840&n)>>>8]:n>>>12===15&&21===(255&n)?["Fx15","LD",(3840&n)>>>8]:n>>>12===15&&24===(255&n)?["Fx18","LD",(3840&n)>>>8]:n>>>12===15&&30===(255&n)?["Fx1E","ADD",(3840&n)>>>8]:n>>>12===15&&41===(255&n)?["Fx29","LD",(3840&n)>>>8]:n>>>12===15&&51===(255&n)?["Fx33","LD",(3840&n)>>>8]:n>>>12===15&&85===(255&n)?["Fx35","LD",(3840&n)>>>8]:n>>>12===15&&101===(255&n)?["Fx65","LD",(3840&n)>>>8]:["ERROR",n.toString(16)]};n.exports={getIns:t,loadAs16bits:function(n){return n.reduce(function(n,r,t){var e=Math.floor(t/2);return n[e]||(n[e]=[]),n[e].push(r),n},[]).map(function(n){return n[0]<<8|n[1]})},parse:function(n){n.forEach(function(n){"ERROR"!==t(n)[0]&&console.log(n.toString(16),t(n).map(function(n){return n.toString(16)}))})}}},function(n,r){"use strict";var t={el:"#app",width:500,prefix:"chip8"},e=Array.from({length:64},function(n){return Array.from({length:32},function(n){return 0})}),o=function(n){return n?"white":"black"},u=function(){return e=e.map(function(n){return n.map(function(n){return 0})})},i=function(){for(var n="\n",r=0;r<32;r++){n+='<div class="'+t.prefix+'-row">\n';for(var u=0;u<64;u++)n+=' <div style="background-color: '+o(e[u][r])+'"></div>\n';n+="</div>\n"}return n},a=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("undefined"!=typeof window){t=Object.assign(t,n);var r=document.createElement("style");document.querySelector(n.el),document.head.appendChild(r),r.sheet.insertRule("."+t.prefix+"-row {\n margin: auto;\n display: flex;\n align-items: space-between;\n width: "+t.width+"px;\n height: "+t.width/64+"px;\n }",0),r.sheet.insertRule("."+t.prefix+"-row > div {\n flex-grow: 1;\n height: "+t.width/64+"px;\n }",0),document.querySelector(t.el).innerHTML=i()}else console.log("Node ENV not supported")},c=function(n,r,o,u){for(var a=u.MEM.filter(function(n,r){return r>=u.I&&r<u.I+o}),c=0;c<8;c++)for(var f=0;f<o;f++){var x=c+n>63?127-(c+n):c+n,s=f+r>31?63-(f+r):f+r;e[x-1][s]=e[x-1][s]^a[f]>>7-c&1}return"undefined"!=typeof window?document.querySelector(t.el).innerHTML=i():console.log("Drawing at ("+n+", "+r+") with "+o+" bytes"),!1};n.exports={init:a,clear:u,draw:c}}]);