1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-05-28 08:41:30 +00:00

Deploying to gh-pages from @ sehugg/8bitworkshop@56e8fca270 🚀

This commit is contained in:
sehugg 2022-09-03 18:38:45 +00:00
parent 01fc5ea163
commit f28252af49
42 changed files with 121 additions and 66 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

10
gen/atari8-XRDCAZLI.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/common/toolbar.ts"],"names":[],"mappings":";;;AACA,uCAAwC;AAExC,WAAW;AAEX,MAAa,OAAO;IAMhB,YAAY,SAAqB,EAAE,QAAoB;QAFvD,cAAS,GAAG,EAAE,CAAC;QAGb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IACD,OAAO;QACL,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvG,CAAC;IACD,GAAG,CAAC,GAAU,EAAE,OAAc,EAAE,IAAW,EAAE,EAAoB;QAC/D,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,EAAE;YACR,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;gBAChC,IAAI,GAAG,yBAAyB,GAAG,IAAI,GAAG,8BAA8B,CAAC;aAC1E;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAC,IAAI,GAAC,GAAG,GAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SAC7B;QACD,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1B;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CAEF;AA9CH,0BA8CG"}

View File

@ -1,2 +1,2 @@
import{a as d}from"./chunk-3XE5YOCV.js";import{o as c}from"./chunk-EYNTOVQZ.js";import"./chunk-M72QJ5SI.js";import"./chunk-5SHCNQ2O.js";import"./chunk-4XVUF2S5.js";import{J as m,o as u,u as h}from"./chunk-I4VYBHZZ.js";import{$ as i,B as o,J as l,m as n}from"./chunk-LKR3N7UH.js";import"./chunk-5XVCUSSZ.js";var s=31,a=class extends u{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new h;this.ram=new Uint8Array(16384);this.read=i([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=i([[0,16383,16383,(e,t)=>{this.ram[e]=t}],[16387,16387,65535,(e,t)=>this.serial.sendByte(t)],[16399,16399,65535,(e,t)=>{this.inputs[s]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var t=0;t<this.cpuFrequency/60&&!(e&&e());)t+=this.advanceCPU();return t}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[s]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[s]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],f=class{constructor(e){e.style.overflowY="auto";var t=$('<div id="gameport"/>').appendTo(e);$('<p class="transcript-header">Serial Output</p>').appendTo(t);var y=$('<div id="windowport" class="transcript"/>').appendTo(t);this.div=y[0]}start(){this.tty=new d(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(e){this.tty.loadState(e)}};function p(r){return r==10?"":r<32?String.fromCharCode(r+9216):String.fromCharCode(r)}var v=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(e){this.clearToSend()&&(this.outputBytes.push(e),this.viewer.tty.addtext(p(e),2|32),e==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var e=this.readIndex();this.inputIndex=e;var t=(this.inputBytes&&this.inputBytes[e])|0;return this.viewer.tty.addtext(p(t),2|16),t==10&&this.viewer.tty.newline(),t}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(e){this.clk+=e}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(e){this.clk=e.clk,this.inputIndex=e.idx,this.outputBytes=e.out.slice()}},x=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new f(e)}async start(){super.start(),this.serial=new v,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=o(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=n(this.serial.outputBytes),c(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new a}getPresets(){return S}getDefaultExtension(){return".dasm"}readAddress(e){return this.machine.readConst(e)}};l["devel-6502"]=x;export{v as SerialTestHarness};
//# sourceMappingURL=devel-IGUPQPPG.js.map
import{a as d}from"./chunk-3XE5YOCV.js";import{o as c}from"./chunk-WLDWCC36.js";import"./chunk-YT7MMFDW.js";import"./chunk-5SHCNQ2O.js";import"./chunk-2GUBVKNT.js";import{J as m,o as u,u as h}from"./chunk-I4VYBHZZ.js";import{$ as i,B as o,J as l,m as n}from"./chunk-LKR3N7UH.js";import"./chunk-5XVCUSSZ.js";var s=31,a=class extends u{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new h;this.ram=new Uint8Array(16384);this.read=i([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=i([[0,16383,16383,(e,t)=>{this.ram[e]=t}],[16387,16387,65535,(e,t)=>this.serial.sendByte(t)],[16399,16399,65535,(e,t)=>{this.inputs[s]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var t=0;t<this.cpuFrequency/60&&!(e&&e());)t+=this.advanceCPU();return t}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[s]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[s]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],f=class{constructor(e){e.style.overflowY="auto";var t=$('<div id="gameport"/>').appendTo(e);$('<p class="transcript-header">Serial Output</p>').appendTo(t);var y=$('<div id="windowport" class="transcript"/>').appendTo(t);this.div=y[0]}start(){this.tty=new d(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(e){this.tty.loadState(e)}};function p(r){return r==10?"":r<32?String.fromCharCode(r+9216):String.fromCharCode(r)}var v=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(e){this.clearToSend()&&(this.outputBytes.push(e),this.viewer.tty.addtext(p(e),2|32),e==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var e=this.readIndex();this.inputIndex=e;var t=(this.inputBytes&&this.inputBytes[e])|0;return this.viewer.tty.addtext(p(t),2|16),t==10&&this.viewer.tty.newline(),t}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(e){this.clk+=e}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(e){this.clk=e.clk,this.inputIndex=e.idx,this.outputBytes=e.out.slice()}},x=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new f(e)}async start(){super.start(),this.serial=new v,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=o(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=n(this.serial.outputBytes),c(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new a}getPresets(){return S}getDefaultExtension(){return".dasm"}readAddress(e){return this.machine.readConst(e)}};l["devel-6502"]=x;export{v as SerialTestHarness};
//# sourceMappingURL=devel-J3T6E3LV.js.map

View File

@ -1,2 +1,2 @@
import{b as w,c as x}from"./chunk-4XVUF2S5.js";import{D as v,J as c,k as m,l as u,x as g,z as p}from"./chunk-LKR3N7UH.js";import{e as I}from"./chunk-5XVCUSSZ.js";var h=I(x()),i,a,l,y=function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r}(window.location.search.substr(1).split("&"));function P(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function k(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){v("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{k(r,f)},"arraybuffer"),!0;if(n){var s=u(atob(n));t=new m().decode(s)}return M(),k(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await w(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){P(),y.p&&b(y)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,h.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
import{b as w,c as x}from"./chunk-2GUBVKNT.js";import{D as v,J as c,k as m,l as u,x as g,z as p}from"./chunk-LKR3N7UH.js";import{e as I}from"./chunk-5XVCUSSZ.js";var h=I(x()),i,a,l,y=function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r}(window.location.search.substr(1).split("&"));function P(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function k(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){v("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{k(r,f)},"arraybuffer"),!0;if(n){var s=u(atob(n));t=new m().decode(s)}return M(),k(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await w(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){P(),y.p&&b(y)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,h.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
//# sourceMappingURL=embedui.js.map

View File

@ -2,7 +2,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.TwoWayMapper = exports.Viewer = exports.MapEditor = exports.CharmapEditor = exports.ImageChooser = exports.NESNametableConverter = exports.MetaspriteCompositor = exports.Compositor = exports.PaletteFormatToRGB = exports.Palettizer = exports.Mapper = exports.Compressor = exports.TextDataNode = exports.FileDataNode = exports.PixNode = exports.convertPaletteFormat = exports.getPaletteLength = exports.convertPaletteBytes = exports.convertImagesToWords = exports.convertWordsToImages = exports.replaceHexWords = exports.parseHexWords = void 0;
const util_1 = require("../common/util");
const toolbar_1 = require("../common/toolbar");
const toolbar_1 = require("./toolbar");
/////////////////
// 0xabcd, #$abcd, 5'010101, 0b010101, etc
var pixel_re = /([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;

File diff suppressed because one or more lines are too long

1
gen/ide/toolbar.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/ide/toolbar.ts"],"names":[],"mappings":";;;AACA,uCAAwC;AAExC,WAAW;AAEX,MAAa,OAAO;IAMhB,YAAY,SAAqB,EAAE,QAAoB;QAFvD,cAAS,GAAG,EAAE,CAAC;QAGb,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACtE,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IACD,OAAO;QACL,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;gBAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC5B;YACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;IACH,CAAC;IACD,QAAQ;QACN,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvG,CAAC;IACD,GAAG,CAAC,GAAU,EAAE,OAAc,EAAE,IAAW,EAAE,EAAoB;QAC/D,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,IAAI,EAAE;YACR,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;gBAChC,IAAI,GAAG,yBAAyB,GAAG,IAAI,GAAG,8BAA8B,CAAC;aAC1E;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAC,IAAI,GAAC,GAAG,GAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1D,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SAC7B;QACD,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC1B;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CAEF;AA9CH,0BA8CG"}

View File

@ -26,7 +26,7 @@ const project_1 = require("./project");
const windows_1 = require("./windows");
const baseplatform_1 = require("../common/baseplatform");
const emu_1 = require("../common/emu");
const toolbar_1 = require("../common/toolbar");
const toolbar_1 = require("./toolbar");
const util_1 = require("../common/util");
const recorder_1 = require("../common/recorder");
const services_1 = require("./services");

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TracePlaybackView = void 0;
class TracePlaybackView {
constructor() {
this.recreateOnResize = true;
this.totalRows = 0x1400;
}
createDiv(parent) {
var div = document.createElement('div');
div.setAttribute("class", "memdump");
parent.appendChild(div);
return this.maindiv = div;
}
tick() {
}
refresh() {
}
}
exports.TracePlaybackView = TracePlaybackView;
//# sourceMappingURL=traceviews.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"traceviews.js","sourceRoot":"","sources":["../../../src/ide/views/traceviews.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IAA9B;QAEI,qBAAgB,GAAG,IAAI,CAAC;QACxB,cAAS,GAAG,MAAM,CAAC;IAavB,CAAC;IAVG,SAAS,CAAC,MAAoB;QAC5B,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACxC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACrC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IAC5B,CAAC;IACD,IAAI;IACJ,CAAC;IACD,OAAO;IACP,CAAC;CACJ;AAhBD,8CAgBC"}

View File

@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WaveformView = void 0;
const toolbar_1 = require("../common/toolbar");
const toolbar_1 = require("./toolbar");
const vlist_1 = require("../common/vlist");
const BUILTIN_INPUT_PORTS = [
'clk', 'reset',

File diff suppressed because one or more lines are too long

View File

@ -171,7 +171,8 @@ class Atari800 extends devices_1.BasicScanlineMachine {
// update ANTIC
if (this.antic.clockPulse()) {
// ANTIC DMA cycle, update GTIA
this.gtia.updateGfx(this.antic.h - 1, this.lastdmabyte); // HALT pin
if (this.antic.h < 8)
this.gtia.updateGfx(this.antic.h - 1, this.antic.v, this.lastdmabyte); // HALT pin
this.probe.logClocks(1);
}
else {

File diff suppressed because one or more lines are too long

View File

@ -69,6 +69,7 @@ class GTIA {
this.gtiacol = 0;
this.gtiacol2 = 0;
this.hbias = HOFFSET;
this.pmDebugMask = -1;
}
reset() {
this.regs.fill(0);
@ -114,10 +115,11 @@ class GTIA {
setBias(b) {
this.hbias = HOFFSET + b;
}
updateGfx(h, data) {
updateGfx(h, v, data) {
switch (h) {
case 0:
if (this.regs[GRACTL] & 1) {
// TODO: VDELAY
this.regs[GRAFM] = data;
}
break;
@ -126,7 +128,8 @@ class GTIA {
case 4:
case 5:
if (this.regs[GRACTL] & 2) {
this.regs[GRAFP0 - 2 + h] = data;
if (!(v & 1) || !(this.regs[VDELAY] & (1 << (h + 2))))
this.regs[GRAFP0 - 2 + h] = data;
}
break;
}
@ -183,7 +186,6 @@ class GTIA {
let pfset = this.an - 4; // TODO?
let topobj = -1;
let ppmask = 0;
let ppcount = 0;
// players
for (let i = 0; i < 4; i++) {
let bit = this.shiftObject(i);
@ -192,7 +194,6 @@ class GTIA {
this.readregs[P0PF + i] |= 1 << pfset;
}
ppmask |= 1 << i;
ppcount++;
let prio = PRIOR_TABLE[i + priobias];
if (prio < topprio) {
topobj = i;
@ -216,12 +217,15 @@ class GTIA {
}
}
// set player-player collision flags
if (ppcount > 1) {
// TODO: either as a player or a GTIA mode 2 color
if (ppmask & 1)
this.readregs[P0PL + 0] |= ppmask & ~1;
if (ppmask & 2)
this.readregs[P0PL + 1] |= ppmask & ~2;
if (ppmask & 4)
this.readregs[P0PL + 2] |= ppmask & ~4;
if (ppmask & 8)
this.readregs[P0PL + 3] |= ppmask & ~8;
}
this.pmcol = topobj >= 0 ? this.getObjectColor(topobj) : -1;
}
shiftObject(i) {
@ -242,6 +246,8 @@ class GTIA {
}
triggerObject(i) {
let size, data;
if (!(this.pmDebugMask & (1 << i)))
return;
if (i < 4) {
size = this.regs[SIZEP0 + i] & 3;
data = this.regs[GRAFP0 + i];

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +1,2 @@
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w}from"./chunk-EYNTOVQZ.js";import"./chunk-M72QJ5SI.js";import"./chunk-5SHCNQ2O.js";import"./chunk-4XVUF2S5.js";import"./chunk-I4VYBHZZ.js";import"./chunk-LKR3N7UH.js";import"./chunk-5XVCUSSZ.js";export{l as clearBreakpoint,h as compparams,f as current_project,u as emulationHalted,p as getPlatformAndRepo,t as getSaveState,s as getTestOutput,n as haltEmulation,w as highlightSearch,i as lastDebugState,e as platform,b as platform_id,g as projectWindows,a as qs,v as reloadWorkspaceFile,d as repo_id,k as runToPC,m as setFrameRateUI,r as setTestInput,j as setupBreakpoint,o as setupSplits,q as startUI,c as store_id};
import{b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w}from"./chunk-WLDWCC36.js";import"./chunk-YT7MMFDW.js";import"./chunk-5SHCNQ2O.js";import"./chunk-2GUBVKNT.js";import"./chunk-I4VYBHZZ.js";import"./chunk-LKR3N7UH.js";import"./chunk-5XVCUSSZ.js";export{l as clearBreakpoint,h as compparams,f as current_project,u as emulationHalted,p as getPlatformAndRepo,t as getSaveState,s as getTestOutput,n as haltEmulation,w as highlightSearch,i as lastDebugState,e as platform,b as platform_id,g as projectWindows,a as qs,v as reloadWorkspaceFile,d as repo_id,k as runToPC,m as setFrameRateUI,r as setTestInput,j as setupBreakpoint,o as setupSplits,q as startUI,c as store_id};
//# sourceMappingURL=ui.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
import { hex, rgb2bgr, rle_unpack } from "../common/util";
import { ProjectWindows } from "./windows";
import { Toolbar } from "../common/toolbar";
import { Toolbar } from "./toolbar";
import Mousetrap = require('mousetrap');
export type UintArray = number[] | Uint8Array | Uint16Array | Uint32Array; //{[i:number]:number};

View File

@ -7,7 +7,7 @@ import { WorkerResult, WorkerOutputResult, WorkerError, FileData, WorkerErrorRes
import { ProjectWindows } from "./windows";
import { Platform, Preset, DebugSymbols, DebugEvalCondition, isDebuggable, EmuState } from "../common/baseplatform";
import { PLATFORMS, EmuHalt } from "../common/emu";
import { Toolbar } from "../common/toolbar";
import { Toolbar } from "./toolbar";
import { getFilenameForPath, getFilenamePrefix, highlightDifferences, byteArrayToString, compressLZG, stringToByteArray,
byteArrayToUTF8, isProbablyBinary, getWithBinary, getBasePlatform, getRootBasePlatform, hex, loadScript, decodeQueryString, parseBool } from "../common/util";
import { StateRecorderImpl } from "../common/recorder";

View File

@ -0,0 +1,20 @@
import { StateRecorderImpl } from "../../common/recorder";
import { ProjectView } from "./baseviews";
export class TracePlaybackView implements ProjectView {
maindiv : HTMLElement;
recreateOnResize = true;
totalRows = 0x1400;
stateRecorder : StateRecorderImpl;
createDiv(parent : HTMLElement) {
var div = document.createElement('div');
div.setAttribute("class", "memdump");
parent.appendChild(div);
return this.maindiv = div;
}
tick() {
}
refresh() {
}
}

View File

@ -1,5 +1,5 @@
import { Toolbar } from "../common/toolbar";
import { Toolbar } from "./toolbar";
import { VirtualList } from "../common/vlist";
const BUILTIN_INPUT_PORTS = [

View File

@ -190,7 +190,8 @@ export class Atari800 extends BasicScanlineMachine {
// update ANTIC
if (this.antic.clockPulse()) {
// ANTIC DMA cycle, update GTIA
this.gtia.updateGfx(this.antic.h - 1, this.lastdmabyte); // HALT pin
if (this.antic.h < 8)
this.gtia.updateGfx(this.antic.h - 1, this.antic.v, this.lastdmabyte); // HALT pin
this.probe.logClocks(1);
} else {
super.advanceCPU();

View File

@ -74,6 +74,7 @@ export class GTIA {
gtiacol = 0;
gtiacol2 = 0;
hbias = HOFFSET;
pmDebugMask = -1;
reset() {
this.regs.fill(0);
@ -113,13 +114,19 @@ export class GTIA {
setBias(b: number) {
this.hbias = HOFFSET + b;
}
updateGfx(h: number, data: number) {
updateGfx(h: number, v: number, data: number) {
switch (h) {
case 0:
if (this.regs[GRACTL] & 1) { this.regs[GRAFM] = data; }
if (this.regs[GRACTL] & 1) {
// TODO: VDELAY
this.regs[GRAFM] = data;
}
break;
case 2: case 3: case 4: case 5:
if (this.regs[GRACTL] & 2) { this.regs[GRAFP0 - 2 + h] = data; }
if (this.regs[GRACTL] & 2) {
if (!(v&1) || !(this.regs[VDELAY] & (1<<(h+2))))
this.regs[GRAFP0 - 2 + h] = data;
}
break;
}
}
@ -172,7 +179,6 @@ export class GTIA {
let pfset = this.an - 4; // TODO?
let topobj = -1;
let ppmask = 0;
let ppcount = 0;
// players
for (let i = 0; i < 4; i++) {
let bit = this.shiftObject(i);
@ -181,7 +187,6 @@ export class GTIA {
this.readregs[P0PF + i] |= 1 << pfset;
}
ppmask |= 1 << i;
ppcount++;
let prio = PRIOR_TABLE[i + priobias];
if (prio < topprio) {
topobj = i;
@ -205,12 +210,11 @@ export class GTIA {
}
}
// set player-player collision flags
if (ppcount > 1) {
this.readregs[P0PL + 0] |= ppmask & ~1;
this.readregs[P0PL + 1] |= ppmask & ~2;
this.readregs[P0PL + 2] |= ppmask & ~4;
this.readregs[P0PL + 3] |= ppmask & ~8;
}
// TODO: either as a player or a GTIA mode 2 color
if (ppmask & 1) this.readregs[P0PL + 0] |= ppmask & ~1;
if (ppmask & 2) this.readregs[P0PL + 1] |= ppmask & ~2;
if (ppmask & 4) this.readregs[P0PL + 2] |= ppmask & ~4;
if (ppmask & 8) this.readregs[P0PL + 3] |= ppmask & ~8;
this.pmcol = topobj >= 0 ? this.getObjectColor(topobj) : -1;
}
shiftObject(i: number) {
@ -230,6 +234,7 @@ export class GTIA {
}
triggerObject(i: number) {
let size, data;
if (!(this.pmDebugMask & (1<<i))) return;
if (i < 4) {
size = this.regs[SIZEP0 + i] & 3;
data = this.regs[GRAFP0 + i];