8bitworkshop/gen/chunk-ZE6LZV4I.js.map

8 lines
16 KiB
Plaintext

{
"version": 3,
"sources": ["../src/common/mameplatform.ts"],
"sourcesContent": ["\n/// MAME SUPPORT\n\nimport { EmuState, DisasmLine, cpuStateToLongString_6502, cpuStateToLongString_Z80 } from \"./baseplatform\";\nimport { disassemble6502 } from \"./cpu/disasm6502\";\nimport { disassembleZ80 } from \"./cpu/disasmz80\";\nimport { AnimationTimer, RAM, RasterVideo } from \"./emu\";\n\ndeclare var FS, ENV, Module; // mame emscripten\n\nexport abstract class BaseMAMEPlatform {\n\n loaded : boolean = false;\n preinitted : boolean = false;\n started : boolean = false;\n romfn : string;\n romdata : Uint8Array;\n romtype : string = 'cart';\n video;\n running = false;\n initluavars : boolean = false;\n luadebugscript : string;\n js_lua_string;\n onBreakpointHit;\n mainElement : HTMLElement;\n timer : AnimationTimer;\n\n constructor(mainElement) {\n this.mainElement = mainElement;\n this.timer = new AnimationTimer(20, this.poll.bind(this));\n }\n\n // http://docs.mamedev.org/techspecs/luaengine.html\n luacall(s:string) : string {\n if (!this.js_lua_string) this.js_lua_string = Module.cwrap('_Z13js_lua_stringPKc', 'string', ['string']);\n return this.js_lua_string(s || \"\");\n }\n\n _pause() {\n this.running = false;\n this.timer.stop();\n }\n pause() {\n if (this.loaded && this.running) {\n this.luacall('emu.pause()');\n this._pause();\n }\n }\n\n _resume() {\n this.luacall('emu.unpause()');\n this.running = true;\n this.timer.start();\n }\n resume() {\n if (this.loaded && !this.running) { // TODO\n this._resume();\n }\n }\n\n reset() {\n if (this.loaded) {\n this.luacall('manager:machine():soft_reset()');\n this.running = true;\n this.initluavars = false;\n }\n }\n\n isRunning() {\n return this.running;\n }\n\n bufferConsoleOutput(s) {\n if (typeof s !== 'string') return;\n console.log(s);\n }\n\n startModule(mainElement, opts) {\n this.started = true;\n var romfn = this.romfn = this.romfn || opts.romfn;\n var romdata = this.romdata = this.romdata || opts.romdata || new RAM(opts.romsize).mem;\n var romtype = this.romtype = this.romtype || opts.romtype;\n // create canvas\n var video = this.video = new RasterVideo(this.mainElement, opts.width, opts.height);\n video.create();\n $(video.canvas).attr('id','canvas');\n // load asm.js module\n console.log(\"loading\", opts.jsfile);\n var modargs = [opts.driver,\n '-debug',\n '-debugger', 'none',\n '-verbose', '-window', '-nokeepaspect',\n '-resolution', video.canvas.width+'x'+video.canvas.height\n ];\n if (romfn) {\n modargs.push('-'+romtype, romfn);\n }\n if (opts.extraargs) {\n modargs = modargs.concat(opts.extraargs);\n }\n console.log(modargs);\n window['JSMESS'] = {};\n window['Module'] = {\n arguments: modargs,\n screenIsReadOnly: true,\n print: this.bufferConsoleOutput,\n canvas:video.canvas,\n doNotCaptureKeyboard:true,\n keyboardListeningElement:video.canvas,\n preInit: () => {\n console.log(\"loading FS\");\n ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT = 'canvas';\n if (opts.cfgfile) {\n FS.mkdir('/cfg');\n FS.writeFile('/cfg/' + opts.cfgfile, opts.cfgdata, {encoding:'utf8'});\n }\n if (opts.biosfile) {\n FS.mkdir('/roms');\n FS.mkdir('/roms/' + opts.driver);\n FS.writeFile('/roms/' + opts.biosfile, opts.biosdata, {encoding:'binary'});\n }\n FS.mkdir('/emulator');\n if (romfn) {\n FS.writeFile(romfn, romdata, {encoding:'binary'});\n }\n //FS.writeFile('/debug.ini', 'debugger none\\n', {encoding:'utf8'});\n if (opts.preInit) {\n opts.preInit(self);\n }\n this.preinitted = true;\n },\n preRun: [\n () => {\n $(video.canvas).click((e) =>{\n video.canvas.focus();\n });\n this.loaded = true;\n console.log(\"about to run...\");\n }\n ]\n };\n // preload files\n // TODO: ensure loaded\n var fetch_cfg, fetch_lua;\n var fetch_bios = $.Deferred();\n var fetch_wasm = $.Deferred();\n // fetch config file\n if (opts.cfgfile) {\n fetch_cfg = $.get('mame/cfg/' + opts.cfgfile, (data) => {\n opts.cfgdata = data;\n console.log(\"loaded \" + opts.cfgfile);\n }, 'text');\n }\n // fetch BIOS file\n if (opts.biosfile) {\n var oReq1 = new XMLHttpRequest();\n oReq1.open(\"GET\", 'mame/roms/' + opts.biosfile, true);\n oReq1.responseType = \"arraybuffer\";\n oReq1.onload = (oEvent) => {\n opts.biosdata = new Uint8Array(oReq1.response);\n console.log(\"loaded \" + opts.biosfile); // + \" (\" + oEvent.total + \" bytes)\");\n fetch_bios.resolve();\n };\n oReq1.ontimeout = function (oEvent) {\n throw Error(\"Timeout loading \" + opts.biosfile);\n }\n oReq1.send();\n } else {\n fetch_bios.resolve();\n }\n // load debugger Lua script\n fetch_lua = $.get('mame/debugger.lua', (data) => {\n this.luadebugscript = data;\n console.log(\"loaded debugger.lua\");\n }, 'text');\n // load WASM\n {\n var oReq2 = new XMLHttpRequest();\n oReq2.open(\"GET\", 'mame/' + opts.jsfile.replace('.js','.wasm'), true);\n oReq2.responseType = \"arraybuffer\";\n oReq2.onload = (oEvent) => {\n console.log(\"loaded WASM file\");\n window['Module'].wasmBinary = new Uint8Array(oReq2.response);\n fetch_wasm.resolve();\n };\n oReq2.ontimeout = function (oEvent) {\n throw Error(\"Timeout loading \" + opts.jsfile);\n }\n oReq2.send();\n }\n // start loading script\n $.when(fetch_lua, fetch_cfg, fetch_bios, fetch_wasm).done( () => {\n var script = document.createElement('script');\n script.src = 'mame/' + opts.jsfile;\n document.getElementsByTagName('head')[0].appendChild(script);\n console.log(\"created script element\");\n });\n // for debugging via browser console\n window['mamelua'] = (s:string) => {\n this.initlua();\n return [s, this.luacall(s)];\n };\n }\n\n loadROMFile(data) {\n this.romdata = data;\n if (this.preinitted && this.romfn) {\n FS.writeFile(this.romfn, data, {encoding:'binary'});\n }\n }\n\n loadRegion(region, data) {\n if (this.loaded && data.length > 0) {\n //this.luacall('cart=manager:machine().images[\"cart\"]\\nprint(cart:filename())\\ncart:load(\"' + region + '\")\\n');\n var s = 'rgn = manager:machine():memory().regions[\"' + region + '\"]\\n';\n //s += 'print(rgn.size)\\n';\n for (var i=0; i<data.length; i+=4) {\n var v = data[i] + (data[i+1]<<8) + (data[i+2]<<16) + (data[i+3]<<24);\n s += 'rgn:write_u32(' + i + ',' + v + ')\\n'; // TODO: endian?\n }\n this.luacall(s);\n this.reset();\n }\n }\n\n // DEBUGGING SUPPORT\n \n initlua() {\n if (!this.initluavars) {\n this.luacall(this.luadebugscript);\n this.luacall('mamedbg.init()')\n this.initluavars = true;\n }\n }\n \n readAddress(a:number) : number {\n this.initlua();\n return parseInt(this.luacall('return mem:read_u8(' + a + ')'));\n }\n \n getCPUReg(reg:string) {\n if (!this.loaded) return 0; // TODO\n this.initlua();\n return parseInt(this.luacall('return cpu.state.'+reg+'.value'));\n }\n \n grabState(expr:string) {\n this.initlua();\n return {\n c:this.getCPUState(),\n buf:this.luacall(\"return string.tohex(\" + expr + \")\")\n }\n }\n \n saveState() {\n return this.grabState(\"manager:machine():buffer_save()\");\n }\n\n loadState(state) {\n this.initlua();\n return this.luacall(\"manager:machine():buffer_load(string.fromhex('\" + state.buf + \"'))\");\n }\n\n poll() {\n if (this.onBreakpointHit && this.luacall(\"return tostring(mamedbg.is_stopped())\") == 'true') {\n this._pause();\n //this.luacall(\"manager:machine():buffer_load(lastBreakState)\");\n var state = this.grabState(\"lastBreakState\");\n this.onBreakpointHit(state);\n }\n }\n clearDebug() {\n this.onBreakpointHit = null;\n if (this.loaded) {\n this.initlua();\n this.luacall('mamedbg.reset()');\n }\n }\n getDebugCallback() {\n return this.onBreakpointHit;// TODO?\n }\n setupDebug(callback) {\n this.onBreakpointHit = callback;\n }\n debugcmd(s) {\n this.initlua()\n this.luacall(s);\n this._resume();\n }\n runToPC(pc) {\n this.debugcmd('mamedbg.runTo(' + pc + ')');\n }\n runToVsync() {\n this.debugcmd('mamedbg.runToVsync()');\n }\n runUntilReturn() {\n this.debugcmd('mamedbg.runUntilReturn()');\n }\n // TODO\n runEval() {\n this.reset();\n this.step();\n }\n step() {\n this.debugcmd('mamedbg.step()');\n }\n getDebugCategories() {\n return ['CPU'];\n }\n getDebugInfo(category:string, state:EmuState) : string {\n switch (category) {\n case 'CPU': return this.cpuStateToLongString(state.c);\n }\n }\n getDebugTree() {\n this.initlua();\n var devices = JSON.parse(this.luacall(`return table.tojson(manager:machine().devices)`));\n var images = JSON.parse(this.luacall(`return table.tojson(manager:machine().images)`));\n var regions = JSON.parse(this.luacall(`return table.tojson(manager:machine():memory().regions)`));\n return {\n devices: devices,\n images: images,\n regions: regions,\n }\n }\n\n abstract cpuStateToLongString(c) : string;\n abstract getCPUState() : any;\n}\n\nexport abstract class BaseMAME6502Platform extends BaseMAMEPlatform {\n getPC() : number {\n return this.getCPUReg('PC');\n }\n getSP() : number {\n return this.getCPUReg('SP');\n }\n isStable() \t { return true; }\n getCPUState() {\n return {\n PC:this.getPC(),\n SP:this.getSP(),\n A:this.getCPUReg('A'),\n X:this.getCPUReg('X'),\n Y:this.getCPUReg('Y'),\n flags:this.getCPUReg('P'),\n };\n }\n disassemble(pc:number, read:(addr:number)=>number) : DisasmLine {\n return disassemble6502(pc, read(pc), read(pc+1), read(pc+2));\n }\n cpuStateToLongString(c) {\n return cpuStateToLongString_6502(c);\n }\n}\n\nexport abstract class BaseMAMEZ80Platform extends BaseMAMEPlatform {\n getPC() : number {\n return this.getCPUReg('PC');\n }\n getSP() : number {\n return this.getCPUReg('SP');\n }\n isStable() \t { return true; }\n getCPUState() {\n return {\n PC:this.getPC(),\n SP:this.getSP(),\n AF:this.getCPUReg('AF'),\n BC:this.getCPUReg('BC'),\n DE:this.getCPUReg('DE'),\n HL:this.getCPUReg('HL'),\n IX:this.getCPUReg('IX'),\n IY:this.getCPUReg('IY'),\n IR:this.getCPUReg('R') + (this.getCPUReg('I') << 8),\n };\n }\n disassemble(pc:number, read:(addr:number)=>number) : DisasmLine {\n return disassembleZ80(pc, read(pc), read(pc+1), read(pc+2), read(pc+3));\n }\n cpuStateToLongString(c) {\n return cpuStateToLongString_Z80(c);\n }\n}\n"],
"mappings": "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",
"names": []
}